# EstimateEnergy operation

Performs state preparation by applying a statePrepUnitary on an automatically allocated input state phase estimation with respect to qpeUnitaryon the resulting state using a phaseEstAlgorithm.

operation EstimateEnergy (nQubits : Int, statePrepUnitary : (Qubit[] => Unit), qpeUnitary : (Qubit[] => Unit is Adj + Ctl), phaseEstAlgorithm : ((Microsoft.Quantum.Oracles.DiscreteOracle, Qubit[]) => Double)) : Double

## Input

nQubits
Int

Number of qubits used to perform simulation.

statePrepUnitary

An oracle representing state preparation for the initial dynamical generator.

#### Output: Unit

qpeUnitary

An oracle representing a unitary operator $U$ representing evolution for time $\delta t$ under a dynamical generator with ground state $\ket{\phi}$ and ground state energy $E = \phi\,\delta t$.

Functors

#### Output: Unit

phaseEstAlgorithm

An operation that performs phase estimation on a given unitary operation. See iterative phase estimation for more details.

## Output

Double

An estimate $\hat{\phi}$ of the ground state energy $\phi$ of the ground state energy of the generator represented by $U$.