class_docstr: Symbolic operator denoting an operator raised to a power.
  
  Args:
      base (~.operation.Operator): the operator to be raised to a power
      z=1 (float): the exponent
  
  **Example**
  
  >>> sqrt_x = Pow(qml.PauliX(0), 0.5)
  >>> sqrt_x.decomposition()
  [SX(wires=[0])]
  >>> qml.matrix(sqrt_x)
  array([[0.5+0.5j, 0.5-0.5j],
              [0.5-0.5j, 0.5+0.5j]])
  >>> qml.matrix(qml.SX(0))
  array([[0.5+0.5j, 0.5-0.5j],
     [0.5-0.5j, 0.5+0.5j]])
  >>> qml.matrix(Pow(qml.T(0), 1.234))
  array([[1.        +0.j        , 0.        +0.j        ],
     [0.        +0.j        , 0.56597465+0.82442265j]])
class_docstr_tok: ["Symbolic","operator","denoting","an","operator","raised","to","a","power",".","Args",":","base","(","~.operation.Operator",")",":","the","operator","to","be","raised","to","a","power","z=1","(","float",")",":","the","exponent","*","*","Example","*","*",">",">",">","sqrt_x","=","Pow","(","qml.PauliX","(","0",")",",","0.5",")",">",">",">","sqrt_x.decomposition","(",")","[","SX","(","wires=","[","0","]",")","]",">",">",">","qml.matrix","(","sqrt_x",")","array","(","[","[","0.5+0.5j",",","0.5-0.5j","]",",","[","0.5-0.5j",",","0.5+0.5j","]","]",")",">",">",">","qml.matrix","(","qml.SX","(","0",")",")","array","(","[","[","0.5+0.5j",",","0.5-0.5j","]",",","[","0.5-0.5j",",","0.5+0.5j","]","]",")",">",">",">","qml.matrix","(","Pow","(","qml.T","(","0",")",",","1.234",")",")","array","(","[","[","1",".","+0.j",",","0",".","+0.j","]",",","[","0",".","+0.j",",","0.56597465+0.82442265j","]","]",")"]
docstr: Sequence of gates that diagonalize the operator in the computational basis.
  
  Given the eigendecomposition :math:`O = U \Sigma U^{\dagger}` where
  :math:`\Sigma` is a diagonal matrix containing the eigenvalues,
  the sequence of diagonalizing gates implements the unitary :math:`U^{\dagger}`.
  
  The diagonalizing gates of an operator to a power is the same as the diagonalizing
  gates as the original operator. As we can see,
  
  .. math::
  
      O^2 = U \Sigma U^{\dagger} U \Sigma U^{\dagger} = U \Sigma^2 U^{\dagger}
  
  This formula can be extended to inversion and any rational number.
  
  The diagonalizing gates rotate the state into the eigenbasis
  of the operator.
  
  A ``DiagGatesUndefinedError`` is raised if no representation by decomposition is defined.
  
  .. seealso:: :meth:`~.Operator.compute_diagonalizing_gates`.
  
  Returns:
      list[.Operator] or None: a list of operators
docstr_tok: ["Sequence","of","gates","that","diagonalize","the","operator","in","the","computational","basis",".","Given","the","eigendecomposition",":","math",":","`","O","=","U","\\Sigma","U^","{","\\dagger","}","`","where",":","math",":","`","\\Sigma","`","is","a","diagonal","matrix","containing","the","eigenvalues",",","the","sequence","of","diagonalizing","gates","implements","the","unitary",":","math",":","`","U^","{","\\dagger","}","`",".","The","diagonalizing","gates","of","an","operator","to","a","power","is","the","same","as","the","diagonalizing","gates","as","the","original","operator",".","As","we","can","see",",","..","math",":",":","O^2","=","U","\\Sigma","U^","{","\\dagger","}","U","\\Sigma","U^","{","\\dagger","}","=","U","\\Sigma^2","U^","{","\\dagger","}","This","formula","can","be","extended","to","inversion","and","any","rational","number",".","The","diagonalizing","gates","rotate","the","state","into","the","eigenbasis","of","the","operator",".","A","``","DiagGatesUndefinedError","``","is","raised","if","no","representation","by","decomposition","is","defined",".","..","seealso",":",":",":","meth",":","`","~.Operator.compute_diagonalizing_gates","`",".","Returns",":","list","[",".Operator","]","or","None",":","a","list","of","operators"]
code: def diagonalizing_gates(self):
      r"""Sequence of gates that diagonalize the operator in the computational basis.
  
      Given the eigendecomposition :math:`O = U \Sigma U^{\dagger}` where
      :math:`\Sigma` is a diagonal matrix containing the eigenvalues,
      the sequence of diagonalizing gates implements the unitary :math:`U^{\dagger}`.
  
      The diagonalizing gates of an operator to a power is the same as the diagonalizing
      gates as the original operator. As we can see,
  
      .. math::
  
          O^2 = U \Sigma U^{\dagger} U \Sigma U^{\dagger} = U \Sigma^2 U^{\dagger}
  
      This formula can be extended to inversion and any rational number.
  
      The diagonalizing gates rotate the state into the eigenbasis
      of the operator.
  
      A ``DiagGatesUndefinedError`` is raised if no representation by decomposition is defined.
  
      .. seealso:: :meth:`~.Operator.compute_diagonalizing_gates`.
  
      Returns:
          list[.Operator] or None: a list of operators
      """
      return self.base.diagonalizing_gates()
  
imports: import copy
  from typing import Union
  from scipy.linalg import fractional_matrix_power
  import pennylane
  from pennylane import math
  from pennylane.operation import DecompositionUndefinedError, Observable, Operation, PowUndefinedError, SparseMatrixUndefinedError
  from pennylane.ops.identity import Identity
  from pennylane.queuing import QueuingManager, apply
  from .symbolicop import ScalarSymbolicOp
label_desc: Use image node_id 16 for calling the Pow obj's underlying member method code with example usage: obj.diagonalizing_gates() and returns: self