from qiskit import QuantumCircuit
from qiskit.quantum_info import Statevector
from qiskit.circuit.library import QFTGate
from qiskit.circuit.library import PhaseGate
qc = QuantumCircuit(3)  # counting qubits 0,1; eigenstate qubit 2
qc.x(2)                 # |1> is eigenstate of P(pi/2)
qc.h([0, 1])            # counting register |++>
qc.cp(3.141592653589793 / 2, 0, 2)  # controlled U
qc.cp(3.141592653589793, 1, 2)      # controlled U^2
qc.append(QFTGate(2).inverse(), [0, 1])
print(qc.draw())
print(Statevector.from_instruction(qc).probabilities_dict())
# The counting register encodes phase 1/4; inspect bit ordering.
