class_docstr: Creates a sequence of controlled gates raised to decreasing powers of 2. Can be used as
  a sub-block in building a `quantum phase estimation <https://en.wikipedia.org/wiki/Quantum_phase_estimation_algorithm>`__
  circuit.
  
  Given an :class:`~.Operator` and a list of control wires, this template creates a sequence of
  controlled gates, one for each control wire, with the base :class:`~.Operator` raised to
  decreasing powers of 2:
  
  .. figure:: ../../_static/templates/subroutines/big_ctrl.png
      :align: center
      :width: 40%
      :target: javascript:void(0);
  
  Args:
      base (Operator): the phase estimation unitary, specified as an :class:`~.Operator`
      control (Union[Wires, Sequence[int], or int]): the wires to be used for control
  
  Raises:
      ValueError: if the wires in ``control`` and wires on the ``base`` operator share a common
          element
  
  .. seealso:: :class:`~.QuantumPhaseEstimation`
  
  **Example**
  
  .. code-block:: python
  
      dev = qml.device("default.qubit", wires = 4)
  
      @qml.qnode(dev)
      def circuit():
  
          for i in range(3):
              qml.Hadamard(wires = i)
  
          qml.ControlledSequence(qml.RX(0.25, wires = 3), control = [0, 1, 2])
  
          qml.adjoint(qml.QFT)(wires = range(3))
  
          return qml.probs(wires = range(3))
  
  >>> print(circuit())
  [0.92059345 0.02637178 0.00729619 0.00423258 0.00360545 0.00423258 0.00729619 0.02637178]
class_docstr_tok: ["Creates","a","sequence","of","controlled","gates","raised","to","decreasing","powers","of","2",".","Can","be","used","as","a","sub-block","in","building","a","`","quantum","phase","estimation","<","https",":","\/\/en.wikipedia.org\/wiki\/Quantum_phase_estimation_algorithm",">","`","__","circuit",".","Given","an",":","class",":","`","~.Operator","`","and","a","list","of","control","wires",",","this","template","creates","a","sequence","of","controlled","gates",",","one","for","each","control","wire",",","with","the","base",":","class",":","`","~.Operator","`","raised","to","decreasing","powers","of","2",":","..","figure",":",":","..","\/","..","\/_static\/templates\/subroutines\/big_ctrl.png",":","align",":","center",":","width",":","40","%",":","target",":","javascript",":","void","(","0",")",";","Args",":","base","(","Operator",")",":","the","phase","estimation","unitary",",","specified","as","an",":","class",":","`","~.Operator","`","control","(","Union","[","Wires",",","Sequence","[","int","]",",","or","int","]",")",":","the","wires","to","be","used","for","control","Raises",":","ValueError",":","if","the","wires","in","``","control","``","and","wires","on","the","``","base","``","operator","share","a","common","element","..","seealso",":",":",":","class",":","`","~.QuantumPhaseEstimation","`","*","*","Example","*","*","..","code-block",":",":","python","dev","=","qml.device","(","``","default.qubit","''",",","wires","=","4",")","@","qml.qnode","(","dev",")","def","circuit","(",")",":","for","i","in","range","(","3",")",":","qml.Hadamard","(","wires","=","i",")","qml.ControlledSequence","(","qml.RX","(","0.25",",","wires","=","3",")",",","control","=","[","0",",","1",",","2","]",")","qml.adjoint","(","qml.QFT",")","(","wires","=","range","(","3",")",")","return","qml.probs","(","wires","=","range","(","3",")",")",">",">",">","print","(","circuit","(",")",")","[","0.92059345","0.02637178","0.00729619","0.00423258","0.00360545","0.00423258","0.00729619","0.02637178","]"]
code: def has_matrix(self):
      return False
  
file_path: pennylane/pennylane/templates/subroutines/controlled_sequence.py
imports: from copy import copy
  import pennylane
  from pennylane.operation import Operation
  from pennylane.wires import Wires
  from pennylane.ops.op_math.symbolicop import SymbolicOp
label_desc: Use image node_id 8 for calling the ControlledSequence obj's underlying member method code with example usage: obj.has_matrix() and returns: False