---
title: AmplitudeEstimation (v0.46)
description: API reference for qiskit.algorithms.AmplitudeEstimation in qiskit v0.46
source: https://eu-de.quantum.cloud.ibm.com/docs/en/api/qiskit/0.46/qiskit.algorithms.AmplitudeEstimation
---

# AmplitudeEstimation

*class* `qiskit.algorithms.AmplitudeEstimation(num_eval_qubits, phase_estimation_circuit=None, iqft=None, quantum_instance=None, sampler=None)`

[GitHub](https://github.com/qiskit/qiskit/tree/stable/0.46/qiskit/algorithms/amplitude_estimators/ae.py)

Bases: [`AmplitudeEstimator`](/docs/api/qiskit/0.46/qiskit.algorithms.AmplitudeEstimator "qiskit.algorithms.amplitude_estimators.amplitude_estimator.AmplitudeEstimator")

The Quantum Phase Estimation-based Amplitude Estimation algorithm.

This class implements the original Quantum Amplitude Estimation (QAE) algorithm, introduced by \[1]. This canonical version uses quantum phase estimation along with a set of $m$ additional evaluation qubits to find an estimate $\tilde{a}$, that is restricted to the grid

$$
\tilde{a} \in \{\sin^2(\pi  y / 2^m) : y = 0, ..., 2^{m-1}\}
$$

More evaluation qubits produce a finer sampling grid, therefore the accuracy of the algorithm increases with $m$.

Using a maximum likelihood post processing, this grid constraint can be circumvented. This improved estimator is implemented as well, see \[2] Appendix A for more detail.

> **Note**
>
> This class does not support the [`EstimationProblem.is_good_state`](/docs/api/qiskit/0.46/qiskit.algorithms.EstimationProblem#is_good_state "qiskit.algorithms.EstimationProblem.is_good_state") property, as for phase estimation-based QAE, the oracle that identifes the good states must be encoded in the Grover operator. To set custom oracles, the [`EstimationProblem.grover_operator`](/docs/api/qiskit/0.46/qiskit.algorithms.EstimationProblem#grover_operator "qiskit.algorithms.EstimationProblem.grover_operator") attribute can be set directly.

**References**

**\[1]: Brassard, G., Hoyer, P., Mosca, M., & Tapp, A. (2000).**

Quantum Amplitude Amplification and Estimation. [arXiv:quant-ph/0005055](http://arxiv.org/abs/quant-ph/0005055).

**\[2]: Grinko, D., Gacon, J., Zoufal, C., & Woerner, S. (2019).**

Iterative Quantum Amplitude Estimation. [arXiv:1912.05559](https://arxiv.org/abs/1912.05559).

> **Deprecated since version 0.24.0**
>
> `qiskit.algorithms.amplitude_estimators.ae.AmplitudeEstimation.__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](https://qisk.it/algo_migration) for a migration guide.

**Parameters**

- **num\_eval\_qubits** ([*int*](https://docs.python.org/3/library/functions.html#int)) – The number of evaluation qubits.
- **phase\_estimation\_circuit** ([*QuantumCircuit*](/docs/api/qiskit/0.46/qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit") *| None*) – The phase estimation circuit used to run the algorithm. Defaults to the standard phase estimation circuit from the circuit library, qiskit.circuit.library.PhaseEstimation when None.
- **iqft** ([*QuantumCircuit*](/docs/api/qiskit/0.46/qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit") *| None*) – The inverse quantum Fourier transform component, defaults to using a standard implementation from qiskit.circuit.library.QFT when None.
- **quantum\_instance** ([*QuantumInstance*](/docs/api/qiskit/0.46/qiskit.utils.QuantumInstance "qiskit.utils.QuantumInstance")  *|*[*Backend*](/docs/api/qiskit/0.46/qiskit.providers.Backend "qiskit.providers.Backend") *| None*) – Deprecated: The backend (or QuantumInstance) to execute the circuits on.
- **sampler** ([*BaseSampler*](/docs/api/qiskit/0.46/qiskit.primitives.BaseSampler "qiskit.primitives.BaseSampler") *| None*) – A sampler primitive to evaluate the circuits.

**Raises**

[**ValueError**](https://docs.python.org/3/library/exceptions.html#ValueError) – If the number of evaluation qubits is smaller than 1.

## Attributes

### quantum\_instance

Get the quantum instance.

> **Deprecated since version 0.24.0**
>
> The property `qiskit.algorithms.amplitude_estimators.ae.AmplitudeEstimation.quantum_instance` is deprecated as of qiskit-terra 0.24.0. It will be removed no earlier than 3 months after the release date. See [https://qisk.it/algo\_migration](https://qisk.it/algo_migration) for a migration guide.

**Returns**

The quantum instance used to run this algorithm.

**Type**

Deprecated

### sampler

Get the sampler primitive.

**Returns**

The sampler primitive to evaluate the circuits.

## Methods

### compute\_confidence\_interval

*static* `compute_confidence_interval(result, alpha=0.05, kind='likelihood_ratio')`

Compute the (1 - alpha) confidence interval.

**Parameters**

- **result** ([*AmplitudeEstimationResult*](/docs/api/qiskit/0.46/qiskit.algorithms.AmplitudeEstimationResult "qiskit.algorithms.amplitude_estimators.ae.AmplitudeEstimationResult")) – An amplitude estimation result for which to compute the confidence interval.
- **alpha** ([*float*](https://docs.python.org/3/library/functions.html#float)) – Confidence level: compute the (1 - alpha) confidence interval.
- **kind** ([*str*](https://docs.python.org/3/library/stdtypes.html#str)) – The method to compute the confidence interval, can be ‘fisher’, ‘observed\_fisher’ or ‘likelihood\_ratio’ (default)

**Returns**

The (1 - alpha) confidence interval of the specified kind.

**Raises**

[**NotImplementedError**](https://docs.python.org/3/library/exceptions.html#NotImplementedError) – If the confidence interval method kind is not implemented.

**Return type**

[tuple](https://docs.python.org/3/library/stdtypes.html#tuple)\[[float](https://docs.python.org/3/library/functions.html#float), [float](https://docs.python.org/3/library/functions.html#float)]

### compute\_mle

*static* `compute_mle(result, apply_post_processing=False)`

Compute the Maximum Likelihood Estimator (MLE).

**Parameters**

- **result** ([*AmplitudeEstimationResult*](/docs/api/qiskit/0.46/qiskit.algorithms.AmplitudeEstimationResult "qiskit.algorithms.amplitude_estimators.ae.AmplitudeEstimationResult")) – An amplitude estimation result object.
- **apply\_post\_processing** ([*bool*](https://docs.python.org/3/library/functions.html#bool)) – If True, apply the post processing to the MLE before returning it.

**Returns**

The MLE for the provided result object.

**Return type**

[float](https://docs.python.org/3/library/functions.html#float)

### construct\_circuit

`construct_circuit(estimation_problem, measurement=False)`

Construct the Amplitude Estimation quantum circuit.

**Parameters**

- **estimation\_problem** ([*EstimationProblem*](/docs/api/qiskit/0.46/qiskit.algorithms.EstimationProblem "qiskit.algorithms.amplitude_estimators.estimation_problem.EstimationProblem")) – The estimation problem for which to construct the QAE circuit.
- **measurement** ([*bool*](https://docs.python.org/3/library/functions.html#bool)) – Boolean flag to indicate if measurements should be included in the circuit.

**Returns**

The QuantumCircuit object for the constructed circuit.

**Return type**

[*QuantumCircuit*](/docs/api/qiskit/0.46/qiskit.circuit.QuantumCircuit "qiskit.circuit.quantumcircuit.QuantumCircuit")

### estimate

`estimate(estimation_problem)`

Run the amplitude estimation algorithm on provided estimation problem.

**Parameters**

**estimation\_problem** ([*EstimationProblem*](/docs/api/qiskit/0.46/qiskit.algorithms.EstimationProblem "qiskit.algorithms.amplitude_estimators.estimation_problem.EstimationProblem")) – The estimation problem.

**Returns**

An amplitude estimation results object.

**Raises**

- [**ValueError**](https://docs.python.org/3/library/exceptions.html#ValueError) – If state\_preparation or objective\_qubits are not set in the estimation\_problem.
- [**ValueError**](https://docs.python.org/3/library/exceptions.html#ValueError) – A quantum instance or sampler must be provided.
- [**AlgorithmError**](/docs/api/qiskit/0.46/algorithms#qiskit.algorithms.AlgorithmError "qiskit.algorithms.AlgorithmError") – Sampler job run error.

**Return type**

[*AmplitudeEstimationResult*](/docs/api/qiskit/0.46/qiskit.algorithms.AmplitudeEstimationResult "qiskit.algorithms.amplitude_estimators.ae.AmplitudeEstimationResult")

### evaluate\_measurements

`evaluate_measurements(circuit_results, threshold=1e-06)`

Evaluate the results from the circuit simulation.

Given the probabilities from statevector simulation of the QAE circuit, compute the probabilities that the measurements y/gridpoints a are the best estimate.

**Parameters**

- **circuit\_results** ([*dict*](https://docs.python.org/3/library/stdtypes.html#dict)*\[*[*str*](https://docs.python.org/3/library/stdtypes.html#str)*,* [*int*](https://docs.python.org/3/library/functions.html#int)*] | np.ndarray*) – The circuit result from the QAE circuit. Can be either a counts dict or a statevector or a quasi-probabilities dict.
- **threshold** ([*float*](https://docs.python.org/3/library/functions.html#float)) – Measurements with probabilities below the threshold are discarded.

**Returns**

**Dictionaries containing the a gridpoints with respective probabilities and**

y measurements with respective probabilities, in this order.

**Return type**

[tuple](https://docs.python.org/3/library/stdtypes.html#tuple)\[[dict](https://docs.python.org/3/library/stdtypes.html#dict)\[[float](https://docs.python.org/3/library/functions.html#float), [float](https://docs.python.org/3/library/functions.html#float)], [dict](https://docs.python.org/3/library/stdtypes.html#dict)\[[int](https://docs.python.org/3/library/functions.html#int), [float](https://docs.python.org/3/library/functions.html#float)]]
