# IterativePhaseEstimation

*class *`qiskit.algorithms.IterativePhaseEstimation(num_iterations, quantum_instance=None, sampler=None)`

Bases: `PhaseEstimator`

Run the Iterative quantum phase estimation (QPE) algorithm.

Given a unitary circuit and a circuit preparing an eigenstate, return the phase of the eigenvalue as a number in $[0,1)$ using the iterative phase estimation algorithm.

**[1]: Dobsicek et al. (2006), Arbitrary accuracy iterative phase estimation algorithm as a two**

qubit benchmark, arxiv/quant-ph/0610214(opens in a new tab)

`qiskit.algorithms.phase_estimators.ipe.IterativePhaseEstimation.__init__()`

’s argument `quantum_instance`

is deprecated as of qiskit-terra 0.24.0. It will be removed no earlier than 3 months after the release date. Instead, use the `sampler`

argument. See https://qisk.it/algo_migration(opens in a new tab) for a migration guide.

**Parameters**

**num_iterations**(*int*(opens in a new tab)) – The number of iterations (rounds) of the phase estimation to run.**quantum_instance**(*QuantumInstance**|**Backend**| None*) – Deprecated: The quantum instance on which the circuit will be run.**sampler**(*BaseSampler**| None*) – The sampler primitive on which the circuit will be sampled.

**Raises**

**ValueError**(opens in a new tab) – if num_iterations is not greater than zero.**AlgorithmError**– If neither sampler nor quantum instance is provided.

## Methods

### construct_circuit

`construct_circuit(unitary, state_preparation, k, omega=0.0, measurement=False)`

Construct the kth iteration Quantum Phase Estimation circuit.

For details of parameters, see Fig. 2 in https://arxiv.org/pdf/quant-ph/0610214.pdf(opens in a new tab).

**Parameters**

**unitary**(*QuantumCircuit*) – The circuit representing the unitary operator whose eigenvalue (via phase) will be measured.**state_preparation**(*QuantumCircuit*) – The circuit that prepares the state whose eigenphase will be measured. If this parameter is omitted, no preparation circuit will be run and input state will be the all-zero state in the computational basis.**k**(*int*(opens in a new tab)) – the iteration idx.**omega**(*float*(opens in a new tab)) – the feedback angle.**measurement**(*bool*(opens in a new tab)) – Boolean flag to indicate if measurement should be included in the circuit.

**Returns**

the quantum circuit per iteration

**Return type**

### estimate

`estimate(unitary, state_preparation)`

Estimate the eigenphase of the input unitary and initial-state pair.

**Parameters**

**unitary**(*QuantumCircuit*) – The circuit representing the unitary operator whose eigenvalue (via phase) will be measured.**state_preparation**(*QuantumCircuit*) – The circuit that prepares the state whose eigenphase will be measured. If this parameter is omitted, no preparation circuit will be run and input state will be the all-zero state in the computational basis.

**Returns**

Estimated phase in an IterativePhaseEstimationResult object.

**Raises**

**AlgorithmError** – If neither sampler nor quantum instance is provided.

**Return type**

*IterativePhaseEstimationResult*