uniqc.algorithms.core.circuits.qft module¶
Quantum Fourier Transform (QFT) circuit fragment.
This module follows the circuit fragment design (see the design notes in the project README):
qft_circuit(n_qubits, qubits=None, swaps=True) -> Circuitis the canonical fragment-style API and returns a freshuniqc.circuit_builder.qcircuit.Circuit.
- uniqc.algorithms.core.circuits.qft.qft_circuit(n_qubits=None, qubits=None, swaps=True)[source]¶
Build a Quantum Fourier Transform fragment.
qft = qft_circuit(n_qubits=3) # returns a fresh Circuit qft = qft_circuit(3, qubits=[2, 3, 4]) # explicit qubit layout
The QFT maps \(|j\rangle\) to \(\frac{1}{\sqrt{N}} \sum_{k=0}^{N-1} e^{2\pi i jk / N} |k\rangle\).
- Parameters:
n_qubits – Number of qubits. May be
Noneifqubitsis given, in which case it is inferred asmax(qubits) + 1.qubits – Qubit indices to operate on.
Nonedefaults torange(n_qubits).swaps – Whether to append the SWAP layer that reverses qubit order so the output follows the standard big-endian convention.
- Returns:
A fresh
Circuitcontaining the QFT fragment.- Raises:
ValueError – Fewer than 1 qubit specified.