Microsoft.Quantum.Simulation namespace

Warning

This documentation refers to the Classic QDK, which has been replaced by the Modern QDK.

Please see https://aka.ms/qdk.api for the API documentation for the Modern QDK.

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.