qqz.qft
1""" 2Uses https://qiskit.org/textbook/ja/ch-algorithms/quantum-counting.html#2.3-%E9%80%86%E9%87%8F%E5%AD%90%E3%83%95%E3%83%BC%E3%83%AA%E3%82%A8%E5%A4%89%E6%8F%9B 3""" 4 5import numpy as np 6from qiskit import QuantumCircuit 7from qiskit.circuit import Gate 8 9def qft(n: int) -> Gate: 10 """Creates an n-qubit QFT circuit""" 11 circuit = QuantumCircuit(n) 12 def swap_registers(circuit, n): 13 for qubit in range(n//2): 14 circuit.swap(qubit, n-qubit-1) 15 return circuit 16 def qft_rotations(circuit, n): 17 """Performs qft on the first n qubits in circuit (without swaps)""" 18 if n == 0: 19 return circuit 20 n -= 1 21 circuit.h(n) 22 for qubit in range(n): 23 circuit.cp(np.pi/2**(n-qubit), qubit, n) 24 qft_rotations(circuit, n) 25 26 qft_rotations(circuit, n) 27 swap_registers(circuit, n) 28 return circuit.to_gate()
def
qft(n: int) -> qiskit.circuit.gate.Gate:
10def qft(n: int) -> Gate: 11 """Creates an n-qubit QFT circuit""" 12 circuit = QuantumCircuit(n) 13 def swap_registers(circuit, n): 14 for qubit in range(n//2): 15 circuit.swap(qubit, n-qubit-1) 16 return circuit 17 def qft_rotations(circuit, n): 18 """Performs qft on the first n qubits in circuit (without swaps)""" 19 if n == 0: 20 return circuit 21 n -= 1 22 circuit.h(n) 23 for qubit in range(n): 24 circuit.cp(np.pi/2**(n-qubit), qubit, n) 25 qft_rotations(circuit, n) 26 27 qft_rotations(circuit, n) 28 swap_registers(circuit, n) 29 return circuit.to_gate()
Creates an n-qubit QFT circuit