Microsoft.Quantum.Simulation namespace

This namespace contains functions and operations for coherently simulating the dynamics of quantum systems.

Operations

Name Summary
AdiabaticStateEnergyUnitary Performs state preparation by applying a statePrepUnitary on the input state, followed by adiabatic state preparation using a adiabaticUnitary, and finally phase estimation with respect to qpeUnitaryon the resulting state using a phaseEstAlgorithm.
EstimateEnergy 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.
EstimateEnergyWithAdiabaticEvolution Performs state preparation by applying a statePrepUnitary on an automatically allocated input state, followed by adiabatic state preparation using a adiabaticUnitary, and finally phase estimation with respect to qpeUnitaryon the resulting state using a phaseEstAlgorithm.

Functions

Name Summary
AddGeneratorSystems Adds two GeneratorSystems to create a new GeneratorSystem.
BlockEncodingByLCU Encodes an operator of interest into a BlockEncoding.
BlockEncodingReflectionByLCU Encodes an operator of interest into a BlockEncodingReflection.
BlockEncodingToReflection Converts a BlockEncoding into an equivalent BLockEncodingReflection.
GetGeneratorSystemFunction Retrieves the GeneratorIndex function in a GeneratorSystem.
GetGeneratorSystemNTerms Retrieves the number of terms in a GeneratorSystem.
IdentityGeneratorIndex Returns a generator index consistent with the zero Hamiltonian, H = 0, which corresponds to the identity evolution operation.
IdentityGeneratorSystem Returns a generator system consistent with the zero Hamiltonian H = 0, which corresponds to the identity evolution operation.
IdentityTimeDependentGeneratorSystem Returns a time-dependent generator system consistent with the Hamiltonian H(s) = 0.
IntToPauli Converts a integer to a single-qubit Pauli operator.
InterpolateGeneratorSystems Returns a TimeDependentGeneratorSystem representing the linear interpolation between two GeneratorSystems.
InterpolatedEvolution Interpolates between two generators with a uniform schedule, returning an operation that applies simulated evolution under the resulting time-dependent generator to a qubit register.
IntsToPaulis Converts an array of integers to an array of single-qubit Pauli operators.
MultiplyGeneratorIndex Multiplies the coefficient in a GeneratorIndex.
MultiplyGeneratorSystem Multiplies the coefficient of all terms in a GeneratorSystem.
PauliBlockEncoding Creates a block-encoding unitary for a Hamiltonian.
PauliCoefficientFromGenIdx Extracts the coefficient of a Pauli term described by a GeneratorIndex.
PauliEvolutionFunction Represents a dynamical generator as a set of simulatable gates and an expansion in the Pauli basis.
PauliEvolutionSet Represents a dynamical generator as a set of simulatable gates and an expansion in the Pauli basis.
PauliStringFromGenIdx Extracts the Pauli string and its qubit indices of a Pauli term described by a GeneratorIndex.
QuantumWalkByQubitization Converts a block-encoding reflection into a quantum walk.
SumGeneratorSystems Adds multiple GeneratorSystems to create a new GeneratorSystem.
TimeDependentTrotterSimulationAlgorithm TimeDependentSimulationAlgorithm function that uses a Trotter–Suzuki decomposition to approximate a unitary operator that solves the time-dependent Schrodinger equation.
TrotterSimulationAlgorithm SimulationAlgorithm function that uses a Trotter–Suzuki decomposition to approximate the time-evolution operator exp(-iHt).
TrotterStep Implements a single time-step of time-evolution by the system described in an EvolutionGenerator using a Trotter–Suzuki decomposition.

User-defined types

Name Summary
BlockEncoding Represents a unitary where an arbitrary operator of interest is encoded in the top-left block.
BlockEncodingReflection Represents a BlockEncoding that is also a reflection.
EvolutionGenerator Represents a dynamical generator as a set of simulatable gates and an expansion in terms of that basis.
EvolutionSchedule Represents a time-dependent dynamical generator.
EvolutionSet Represents a set of gates that can be readily implemented and used to implement simulation algorithms.
EvolutionUnitary Represents a unitary time-evolution operator.
GeneratorIndex Represents a single primitive term in the set of all dynamical generators, e.g. Hermitian operators, for which there exists a map from that generator to time-evolution by that generator, through EvolutionSet.
GeneratorSystem Represents a collection of GeneratorIndexes.
SimulationAlgorithm Represents a time-independent simulation algorithm.
TimeDependentBlockEncoding Represents a BlockEncoding that is controlled by a clock register.
TimeDependentGeneratorSystem Represents a time-dependent dynamical generator as a function from time to the value of the dynamical generator at that time.
TimeDependentSimulationAlgorithm Represents a time-dependent simulation algorithm.
Unitary Represents evolution under a unitary operator.