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: Mixes in parents based on inheritance structure of base.
  
  Though all the types will be named "Pow", their *identity* and location in memory will be
  different based on ``base``'s inheritance.  We cache the different types in private class
  variables so that:
  
  >>> Pow(op, z).__class__ is Pow(op, z).__class__
  True
  >>> type(Pow(op, z)) == type(Pow(op, z))
  True
  >>> isinstance(Pow(op, z), type(Pow(op, z)))
  True
  >>> Pow(qml.RX(1.2, wires=0), 0.5).__class__ is Pow._operation_type
  True
  >>> Pow(qml.PauliX(0), 1.2).__class__ is Pow._operation_observable_type
  True
docstr_tok: ["Mixes","in","parents","based","on","inheritance","structure","of","base",".","Though","all","the","types","will","be","named","``","Pow","''",",","their","*","identity","*","and","location","in","memory","will","be","different","based","on","``","base","``","'s","inheritance",".","We","cache","the","different","types","in","private","class","variables","so","that",":",">",">",">","Pow","(","op",",","z",")",".__class__","is","Pow","(","op",",","z",")",".__class__","True",">",">",">","type","(","Pow","(","op",",","z",")",")","==","type","(","Pow","(","op",",","z",")",")","True",">",">",">","isinstance","(","Pow","(","op",",","z",")",",","type","(","Pow","(","op",",","z",")",")",")","True",">",">",">","Pow","(","qml.RX","(","1.2",",","wires=0",")",",","0.5",")",".__class__","is","Pow._operation_type","True",">",">",">","Pow","(","qml.PauliX","(","0",")",",","1.2",")",".__class__","is","Pow._operation_observable_type","True"]
code: def __new__(cls, base=None, z=1, id=None):
      """Mixes in parents based on inheritance structure of base.
  
      Though all the types will be named "Pow", their *identity* and location in memory will be
      different based on ``base``'s inheritance.  We cache the different types in private class
      variables so that:
  
      >>> Pow(op, z).__class__ is Pow(op, z).__class__
      True
      >>> type(Pow(op, z)) == type(Pow(op, z))
      True
      >>> isinstance(Pow(op, z), type(Pow(op, z)))
      True
      >>> Pow(qml.RX(1.2, wires=0), 0.5).__class__ is Pow._operation_type
      True
      >>> Pow(qml.PauliX(0), 1.2).__class__ is Pow._operation_observable_type
      True
  
      """
  
      if isinstance(base, Operation):
          if isinstance(base, Observable):
              return object.__new__(PowOpObs)
  
          # not an observable
          return object.__new__(PowOperation)
  
      if isinstance(base, Observable):
          return object.__new__(PowObs)
  
      return object.__new__(Pow)
  
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 3 for calling the Pow obj's underlying member method code with example usage: obj.__new__(cls, base, z, id) and returns: object, object, object, object