class_docstr: QFT(wires)
  Apply a quantum Fourier transform (QFT).
  
  For the :math:`N`-qubit computational basis state :math:`|m\rangle`, the QFT performs the
  transformation
  
  .. math::
  
      |m\rangle \rightarrow \frac{1}{\sqrt{2^{N}}}\sum_{n=0}^{2^{N} - 1}\omega_{N}^{mn} |n\rangle,
  
  where :math:`\omega_{N} = e^{\frac{2 \pi i}{2^{N}}}` is the :math:`2^{N}`-th root of unity.
  
  **Details:**
  
  * Number of wires: Any (the operation can act on any number of wires)
  * Number of parameters: 0
  * Gradient recipe: None
  
  Args:
      wires (int or Iterable[Number, str]]): the wire(s) the operation acts on
  
  **Example**
  
  The quantum Fourier transform is applied by specifying the corresponding wires:
  
  .. code-block::
  
      wires = 3
  
      dev = qml.device('default.qubit',wires=wires)
  
      @qml.qnode(dev)
      def circuit_qft(basis_state):
          qml.BasisState(basis_state, wires=range(wires))
          qml.QFT(wires=range(wires))
          return qml.state()
  
      circuit_qft(np.array([1.0, 0.0, 0.0], requires_grad=False))
code: def __init__(self, wires=None, id=None):
      wires = qml.wires.Wires(wires)
      self.hyperparameters["n_wires"] = len(wires)
      super().__init__(wires=wires, id=id)
  
file_path: pennylane/pennylane/templates/subroutines/qft.py
imports: import functools
  import numpy
  import pennylane
  from pennylane.operation import AnyWires, Operation
label_desc: Use image node_id 1 to create a new QFT object from inherited base classes: Operation with example: obj = QFT(wires, id)