QFT
class qiskit.circuit.library.QFT(num_qubits=None, approximation_degree=0, do_swaps=True, inverse=False, insert_barriers=False, name=None)
Bases: BlueprintCircuit
Quantum Fourier Transform Circuit.
The Quantum Fourier Transform (QFT) on qubits is the operation
The circuit that implements this transformation can be implemented using Hadamard gates on each qubit, a series of controlled-U1 (or Z, depending on the phase) gates and a layer of Swap gates. The layer of Swap gates can in principle be dropped if the QFT appears at the end of the circuit, since then the re-ordering can be done classically. They can be turned off using the do_swaps attribute.
For 4 qubits, the circuit that implements this transformation is:

The inverse QFT can be obtained by calling the inverse method on this class. The respective circuit diagram is:

One method to reduce circuit depth is to implement the QFT approximately by ignoring controlled-phase rotations where the angle is beneath a threshold. This is discussed in more detail in https://arxiv.org/abs/quant-ph/9601018 or https://arxiv.org/abs/quant-ph/0403071.
Here, this can be adjusted using the approximation_degree attribute: the smallest approximation_degree rotation angles are dropped from the QFT. For instance, a QFT on 5 qubits with approximation degree 2 yields (the barriers are dropped in this example):

Construct a new QFT circuit.
The class qiskit.circuit.library.basis_change.qft.QFT is deprecated as of Qiskit 2.1. It will be removed in Qiskit 3.0. (‘Use qiskit.circuit.library.QFTGate or qiskit.synthesis.qft.synth_qft_full instead, for access to all previous arguments.’,)
Parameters
- num_qubits (int | None) – The number of qubits on which the QFT acts.
- approximation_degree (int) – The degree of approximation (0 for no approximation).
- do_swaps (bool) – Whether to include the final swaps in the QFT.
- inverse (bool) – If True, the inverse Fourier transform is constructed.
- insert_barriers (bool) – If True, barriers are inserted as visualization improvement.
- name (str | None) – The name of the circuit.
Attributes
approximation_degree
The approximation degree of the QFT.
Returns
The currently set approximation degree.
do_swaps
Whether the final swaps of the QFT are applied or not.
Returns
True, if the final swaps are applied, False if not.
insert_barriers
Whether barriers are inserted for better visualization or not.
Returns
True, if barriers are inserted, False if not.
num_qubits
The number of qubits in the QFT circuit.
Returns
The number of qubits in the circuit.
name
Type: str
A human-readable name for the circuit.
Example
from qiskit import QuantumCircuit
qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)my_circuitMethods
inverse
inverse(annotated=False)
Invert this circuit.
Parameters
annotated (bool) – indicates whether the inverse gate can be implemented as an annotated gate. The value of this argument is ignored as the inverse of a QFT is an IQFT which is just another instance of QFT.
Returns
The inverted circuit.
Return type
is_inverse
is_inverse()
Whether the inverse Fourier transform is implemented.
Returns
True, if the inverse Fourier transform is implemented, False otherwise.
Return type