# EstimateEnergy operation

Namespace: Microsoft.Quantum.Simulation

Package: Microsoft.Quantum.Standard

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 : Qubit[] => Unit

An oracle representing state preparation for the initial dynamical generator.

### qpeUnitary : Qubit[] => Unit is Adj + Ctl

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$.

### phaseEstAlgorithm : (DiscreteOracle,Qubit[]) => Double

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$.