class_docstr: Prepares a basis state on the given wires using a sequence of Pauli-X gates.
  
  .. warning::
  
      ``basis_state`` influences the circuit architecture and is therefore incompatible with
      gradient computations.
  
  Args:
      basis_state (array): Input array of shape ``(n,)``, where n is the number of wires
          the state preparation acts on.
      wires (Iterable): wires that the template acts on
  
  **Example**
  
  .. code-block:: python
  
      dev = qml.device("default.qubit", wires=4)
  
      @qml.qnode(dev)
      def circuit(basis_state):
          qml.BasisStatePreparation(basis_state, wires=range(4))
          return [qml.expval(qml.PauliZ(wires=i)) for i in range(4)]
  
      basis_state = [0, 1, 1, 0]
  
  >>> print(circuit(basis_state))
  [ 1. -1. -1.  1.]
docstr: Representation of the operator as a product of other operators.
  
  .. math:: O = O_1 O_2 \dots O_n.
  
  .. seealso:: :meth:`~.BasisStatePreparation.decomposition`.
  
  Args:
      basis_state (array): Input array of shape ``(len(wires),)``
      wires (Any or Iterable[Any]): wires that the operator acts on
  
  Returns:
      list[.Operator]: decomposition of the operator
  
  **Example**
  
  >>> qml.BasisStatePreparation.compute_decomposition(basis_state=[1, 1], wires=["a", "b"])
  [PauliX(wires=['a']),
  PauliX(wires=['b'])]
docstr_tok: ["Representation","of","the","operator","as","a","product","of","other","operators",".","..","math",":",":","O","=","O_1","O_2","\\dots","O_n",".","..","seealso",":",":",":","meth",":","`","~.BasisStatePreparation.decomposition","`",".","Args",":","basis_state","(","array",")",":","Input","array","of","shape","``","(","len","(","wires",")",",",")","``","wires","(","Any","or","Iterable","[","Any","]",")",":","wires","that","the","operator","acts","on","Returns",":","list","[",".Operator","]",":","decomposition","of","the","operator","*","*","Example","*","*",">",">",">","qml.BasisStatePreparation.compute_decomposition","(","basis_state=","[","1",",","1","]",",","wires=","[","``","a","''",",","``","b","''","]",")","[","PauliX","(","wires=","[","'","a","'","]",")",",","PauliX","(","wires=","[","'","b","'","]",")","]"]
code: def compute_decomposition(
      basis_state, wires
  ):  # pylint: disable=arguments-differ
      r"""Representation of the operator as a product of other operators.
  
      .. math:: O = O_1 O_2 \dots O_n.
  
      .. seealso:: :meth:`~.BasisStatePreparation.decomposition`.
  
      Args:
          basis_state (array): Input array of shape ``(len(wires),)``
          wires (Any or Iterable[Any]): wires that the operator acts on
  
      Returns:
          list[.Operator]: decomposition of the operator
  
      **Example**
  
      >>> qml.BasisStatePreparation.compute_decomposition(basis_state=[1, 1], wires=["a", "b"])
      [PauliX(wires=['a']),
      PauliX(wires=['b'])]
      """
      if len(qml.math.shape(basis_state)) > 1:
          raise ValueError(
              "Broadcasting with BasisStatePreparation is not supported. Please use the "
              "qml.transforms.broadcast_expand transform to use broadcasting with "
              "BasisStatePreparation."
          )
  
      if not qml.math.is_abstract(basis_state):
          op_list = []
          for wire, state in zip(wires, basis_state):
              if state == 1:
                  op_list.append(qml.PauliX(wire))
          return op_list
  
      op_list = []
      for wire, state in zip(wires, basis_state):
          op_list.append(qml.PhaseShift(state * np.pi / 2, wire))
          op_list.append(qml.RX(state * np.pi, wire))
          op_list.append(qml.PhaseShift(state * np.pi / 2, wire))
  
      return op_list
  
imports: import numpy
  import pennylane
  from pennylane.operation import Operation, AnyWires
label_desc: Use image node_id 2 for calling the BasisStatePreparation obj's underlying member method code with example usage: obj.compute_decomposition(basis_state, wires) and returns: op_list, op_list