Exponentiation
The exponentiation function produces a quantum gate that approximates the exponentiation,
The Hamiltonian is given as any
where
from classiq import Pauli, PauliTerm
pauli_list = [
PauliTerm(pauli=[Pauli.I, Pauli.Z], coefficient=0.1),
PauliTerm(pauli=[Pauli.X, Pauli.Y], coefficient=0.2),
]
Function: exponentiation_with_depth_constraint
Arguments:
-
pauli_operator
:CArray[PauliTerm]
- the Hamiltonian to exponentiate as described above, -
evolution_coefficient
:CReal
- a global evolution coefficient (the parameter above), -
max_depth
:CInt
- a maximal depth for the implementation, -
qbv
:QArray[QBit]
- the quantum state on which we apply the evolution.
Example
from classiq import *
@qfunc
def main(qba: Output[QArray[QBit]]):
allocate(4, qba)
exponentiation_with_depth_constraint(
[
PauliTerm(pauli=[Pauli.X, Pauli.X, Pauli.I, Pauli.I], coefficient=0.1),
PauliTerm(pauli=[Pauli.Y, Pauli.Y, Pauli.I, Pauli.I], coefficient=0.2),
PauliTerm(pauli=[Pauli.Z, Pauli.Z, Pauli.Y, Pauli.X], coefficient=0.4),
PauliTerm(pauli=[Pauli.I, Pauli.I, Pauli.I, Pauli.X], coefficient=0.4),
],
evolution_coefficient=0.05,
max_depth=50,
qbv=qba,
)
qmod = create_model(main, out_file="hamiltonian_evolution_exponentiation")
qprog = synthesize(qmod)
References
[1] N. Hatano and M. Suzuki, Finding Exponential Product Formulas of Higher Orders, https://arxiv.org/abs/math-ph/0506007 (2005).
[2] https://en.wikipedia.org/wiki/Operator_norm
[3] A. M. Childs et al, Toward the first quantum simulation with quantum speedup, https://arxiv.org/abs/1711.10980 (2017).
[4] https://en.wikipedia.org/wiki/Generalizations_of_Pauli_matrices#Multi-qubit_Pauli_matrices_(Hermitian)