Suzuki Trotter
The suzuki_trotter
function produces the Suzuki-Trotter product for a given order and repetitions. Given a Hamiltonian as a sum of Pauli strings
the Suzuki-Trotter formula of order
-
Each order
is defined recursively:-
The first order is :
-
The second order is :
-
Recursion formula for order
with is given in Eq. (5) of Ref. [2]
-
-
For a given order, repetitions refers to
Function: suzuki_trotter
Arguments:
-
pauli_operator
:CArray[PauliTerm]
-
evolution_coefficient
:CReal
-
order
:CInt
, -
repetitions
:CInt
, -
qbv
:QArray[QBit]
Example
from classiq import *
@qfunc
def main(a: CReal, x: CReal, qba: Output[QArray[QBit]]):
allocate(3, qba)
suzuki_trotter(
[
PauliTerm(pauli=[Pauli.X, Pauli.X, Pauli.Z], coefficient=a),
PauliTerm(pauli=[Pauli.Y, Pauli.X, Pauli.Z], coefficient=0.5),
],
evolution_coefficient=x,
order=1,
repetitions=1,
qbv=qba,
)
qmod = create_model(main, out_file="suzuki_trotter")
qprog = synthesize(qmod)
References
[1] N. Hatano and M. Suzuki, Finding Exponential Product Formulas of Higher Orders, (2005). https://arxiv.org/abs/math-ph/0506007
[2] Childs, et al., Toward the first quantum simulation with quantum speedup, (2018). https://arxiv.org/abs/1711.10980