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):

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 None if qubits is given, in which case it is inferred as max(qubits) + 1.

  • qubits – Qubit indices to operate on. None defaults to range(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 Circuit containing the QFT fragment.

Raises:

ValueError – Fewer than 1 qubit specified.

uniqc.algorithms.core.circuits.qft.qft_example()[source]

Return a 3-qubit QFT circuit, used by docs and tests as a smoke example.