---
title: QFT (latest version)
description: API reference for qiskit.circuit.library.QFT in the latest version of qiskit
source: https://eu-de.quantum.cloud.ibm.com/docs/en/api/qiskit/qiskit.circuit.library.QFT
---

# QFT

*class* `qiskit.circuit.library.QFT(num_qubits=None, approximation_degree=0, do_swaps=True, inverse=False, insert_barriers=False, name=None)`

[GitHub](https://github.com/Qiskit/qiskit/tree/stable/2.5/qiskit/circuit/library/basis_change/qft.py#L23-L279)

Bases: `BlueprintCircuit`

Quantum Fourier Transform Circuit.

The Quantum Fourier Transform (QFT) on $n$ qubits is the operation

$$
|j\rangle \mapsto \frac{1}{2^{n/2}} \sum_{k=0}^{2^n - 1} e^{2\pi ijk / 2^n} |k\rangle
$$

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:

![Diagram illustrating the previously described circuit.](https://eu-de.quantum.cloud.ibm.com/docs/images/api/qiskit/qiskit-circuit-library-QFT-1.avif)

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

![Diagram illustrating the previously described circuit.](https://eu-de.quantum.cloud.ibm.com/docs/images/api/qiskit/qiskit-circuit-library-QFT-2.avif)

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](https://arxiv.org/abs/quant-ph/9601018) or [https://arxiv.org/abs/quant-ph/0403071](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):

![Diagram illustrating the previously described circuit.](https://eu-de.quantum.cloud.ibm.com/docs/images/api/qiskit/qiskit-circuit-library-QFT-3.avif)

> **Deprecated since version 2.1**
>
> 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*](https://docs.python.org/3/library/functions.html#int) *| None*) – The number of qubits on which the QFT acts.
- **approximation\_degree** ([*int*](https://docs.python.org/3/library/functions.html#int)) – The degree of approximation (0 for no approximation).
- **do\_swaps** ([*bool*](https://docs.python.org/3/library/functions.html#bool)) – Whether to include the final swaps in the QFT.
- **inverse** ([*bool*](https://docs.python.org/3/library/functions.html#bool)) – If True, the inverse Fourier transform is constructed.
- **insert\_barriers** ([*bool*](https://docs.python.org/3/library/functions.html#bool)) – If True, barriers are inserted as visualization improvement.
- **name** ([*str*](https://docs.python.org/3/library/stdtypes.html#str)) – 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**

```python
from qiskit import QuantumCircuit

qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)
```

```text
my_circuit
```

## Methods

### inverse

`inverse(annotated=False)`

[GitHub](https://github.com/Qiskit/qiskit/tree/stable/2.5/qiskit/circuit/library/basis_change/qft.py#L216-L244)

Invert this circuit.

**Parameters**

**annotated** ([*bool*](https://docs.python.org/3/library/functions.html#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`](#qiskit.circuit.library.QFT "qiskit.circuit.library.QFT").

**Returns**

The inverted circuit.

**Return type**

[*QFT*](#qiskit.circuit.library.QFT "qiskit.circuit.library.basis_change.qft.QFT")

### is\_inverse

`is_inverse()`

[GitHub](https://github.com/Qiskit/qiskit/tree/stable/2.5/qiskit/circuit/library/basis_change/qft.py#L208-L214)

Whether the inverse Fourier transform is implemented.

**Returns**

True, if the inverse Fourier transform is implemented, False otherwise.

**Return type**

[bool](https://docs.python.org/3/library/functions.html#bool)
