In [1]:
from cutiepy import *
import numpy as np
N = 4
cutiepy.operators.SPARSITY_N_CUTOFF = max(cutiepy.operators.SPARSITY_N_CUTOFF, N+1)
op1 = randomH(N)
op2 = randomH(N)
op3 = randomH(N)
op4 = randomH(N)
id = identity(N)
a = destroy(N)
ad = create(N)
y_anon = Ket.anon(N)
def compile_and_test(op):
print('Generating code...', flush=True)
cf = generate_cython(evalf(op*y_anon),
func=NDArrayFunction(),
argument_order = [t,y_anon])
print('Compiling code...', flush=True)
ccf = cf.compiled()
print('Executing...', flush=True)
return ccf.pythoncall(1, 1j*np.random.random([N,1]))
In [2]:
opA = op1+t**2*op2
compile_and_test( opA )
Out[2]:
In [3]:
opB = op3+sin(2*t+1)*op4
compile_and_test( opA*opB )
Out[3]:
In [4]:
opC = opA*opB**3
compile_and_test( opC )
Out[4]:
In [5]:
opD = Commutator(opA, opC)
compile_and_test( opD )
Out[5]:
In [6]:
opE = cutiepy.symbolic._CG_AppliedLindbladSuperoperator(evalf(opD), evalf(opB))
compile_and_test( opE )
Out[6]:
In [7]:
opF = 2*opE
compile_and_test( opF )
Out[7]: