a
    kŗh|v  ć                   @  sŲ  U d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	m
Z
mZ ddlmZ ddlmZ ddlmZ dd	lmZmZmZmZmZ dd
lmZmZmZmZ ddlmZ ddlm Z m!Z!m"Z" ddl#m$Z$ ddl%m&Z&m'Z' ddl(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0 ddl1m2Z2m3Z3m4Z4m5Z5 ddl6m7Z7 ddl8m9Z9 ddl:m;Z;m<Z< ddl=m>Z> ddl?m@Z@ ddlAmBZB ddlCmDZDmEZE ddlFmGZG ddlHmIZI ddlJmKZK ddl(mLZL ddlMmNZN ddlOmPZQ ddlRmSZS eGZTi ZUdeVd < eWd!eU eWd"eU eWd#eU eWd$eU eWd%eU eWd&eU eWd'eU eWd(eU eWd)eU d*d+ ZXd,d- ZPd.d/ ZYd0d1 ZZd2d3 Z[d4d5 Z\d6d7 Z]d8d9 Z^eKd:d; Z_d<d= Z`d>d? Zad@dA ZbdBdC ZcdDdE ZddFdG ZedHdI ZfdJdK ZgdLdM ZhdNdO ZidPdQ ZjdRS )Sz5
TODO:
* Address Issue 2251, printing of spin states
é    )Śannotations)ŚAny)ŚAntiCommutator)ŚCGŚWigner3jŚWigner6jŚWigner9j)Ś
Commutator)Śhbar)ŚDagger)ŚCGateŚCNotGateŚIdentityGateŚUGateŚXGate)ŚComplexSpaceŚ	FockSpaceŚHilbertSpaceŚL2)ŚInnerProduct)ŚOperatorŚOuterProductŚDifferentialOperator)ŚQExpr)ŚQubitŚIntQubit)ŚJzŚJ2ŚJzBraŚJzBraCoupledŚJzKetŚJzKetCoupledŚRotationŚWignerD)ŚBraŚKetŚ
TimeDepBraŚ
TimeDepKet)ŚTensorProduct)Ś	RaisingOp)Ś
DerivativeŚFunction)Śoo)ŚPow)ŚS)ŚSymbolŚsymbols)ŚMatrix)ŚInterval)ŚXFAIL)ŚJzOp)Śsrepr)Śpretty)Ślatexzdict[str, Any]ŚENVzfrom sympy import *z#from sympy.physics.quantum import *z&from sympy.physics.quantum.cg import *z(from sympy.physics.quantum.spin import *z+from sympy.physics.quantum.hilbert import *z)from sympy.physics.quantum.qubit import *z)from sympy.physics.quantum.qexpr import *z(from sympy.physics.quantum.gate import *z-from sympy.physics.quantum.constants import *c                 C  s&   t | |ksJ t|t| ks"J dS )zD
    sT := sreprTest
    from sympy/printing/tests/test_repr.py
    N)r5   Śevalr8   )ŚexprŚstring© r<   śW/var/www/auris/lib/python3.9/site-packages/sympy/physics/quantum/tests/test_printing.pyŚsT8   s    r>   c                 C  s   t | dddS )zASCII pretty-printingF©Zuse_unicodeZ	wrap_line©Śxpretty©r:   r<   r<   r=   r6   A   s    r6   c                 C  s   t | dddS )zUnicode pretty-printingTFr?   r@   rB   r<   r<   r=   ŚuprettyF   s    rC   c                  C  sČ   t d} t d}t| |}t| d |}t|dks8J t|dksHJ t|dksXJ t|dkshJ t|d t|dksJ d}d	}t||ksJ t||ksŖJ t|d
ksŗJ t|d d S )NŚAŚBé   z{A,B}z\left\{A,B\right\}z;AntiCommutator(Operator(Symbol('A')),Operator(Symbol('B')))z{A**2,B}z/ 2  \
<A ,B>
\    /u    ā§ 2  ā«
āØA ,Bā¬
ā©    ā­z\left\{A^{2},B\right\}zLAntiCommutator(Pow(Operator(Symbol('A')), Integer(2)),Operator(Symbol('B'))))r   r   Śstrr6   rC   r7   r>   )rD   rE   ŚacZac_tallŚ	ascii_strŚ	ucode_strr<   r<   r=   Śtest_anticommutatorK   s$    

’’rK   c               
   C  s¾  t dddddd} tdddddd}tdddddd}tddddddddd		}t| d
ks^J d}d}t| |ksvJ t| |ksJ t| dksJ t| d dksŖJ t| d t|dksÄJ d}d}t||ksÜJ t||ksģJ t|dksüJ t|d t|dksJ d}d}t||ks2J t||ksDJ t|dksVJ t|d t|dksrJ d}d}t||ksJ t||ksJ t|dks°J t|d d S )Né   rF   é   é   é   é   é   é   é	   zCG(1, 2, 3, 4, 5, 6)z 5,6    
C       
 1,2,3,4zC^{5,6}_{1,2,3,4}z"\left(C^{5,6}_{1,2,3,4}\right)^{2}zJCG(Integer(1), Integer(2), Integer(3), Integer(4), Integer(5), Integer(6))zWigner3j(1, 2, 3, 4, 5, 6)z/1  3  5\
|       |
\2  4  6/u)   ā1  3  5ā
ā       ā
ā2  4  6ā zB\left(\begin{array}{ccc} 1 & 3 & 5 \\ 2 & 4 & 6 \end{array}\right)zPWigner3j(Integer(1), Integer(2), Integer(3), Integer(4), Integer(5), Integer(6))zWigner6j(1, 2, 3, 4, 5, 6)z/1  2  3\
<       >
\4  5  6/u)   ā§1  2  3ā«
āØ       ā¬
ā©4  5  6ā­zD\left\{\begin{array}{ccc} 1 & 2 & 3 \\ 4 & 5 & 6 \end{array}\right\}zPWigner6j(Integer(1), Integer(2), Integer(3), Integer(4), Integer(5), Integer(6))z#Wigner9j(1, 2, 3, 4, 5, 6, 7, 8, 9)z1/1  2  3\
|       |
<4  5  6>
|       |
\7  8  9/uE   ā§1  2  3ā«
āŖ       āŖ
āØ4  5  6ā¬
āŖ       āŖ
ā©7  8  9ā­zQ\left\{\begin{array}{ccc} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{array}\right\}ztWigner9j(Integer(1), Integer(2), Integer(3), Integer(4), Integer(5), Integer(6), Integer(7), Integer(8), Integer(9)))	r   r   r   r   rG   r6   rC   r7   r>   )ZcgZwigner3jZwigner6jZwigner9jrI   rJ   r<   r<   r=   Śtest_cgh   s^    ’’
’’’
’’’

’	’’
rT   c                  C  sČ   t d} t d}t| |}t| d |}t|dks8J t|dksHJ t|dksXJ t|dkshJ t|d t|dksJ d}d	}t||ksJ t||ksŖJ t|d
ksŗJ t|d d S )NrD   rE   rF   z[A,B]z\left[A,B\right]z7Commutator(Operator(Symbol('A')),Operator(Symbol('B')))z[A**2,B]z[ 2  ]
[A ,B]u   ā” 2  ā¤
ā£A ,Bā¦z\left[A^{2},B\right]zHCommutator(Pow(Operator(Symbol('A')), Integer(2)),Operator(Symbol('B'))))r   r	   rG   r6   rC   r7   r>   )rD   rE   ŚcZc_tallrI   rJ   r<   r<   r=   Śtest_commutator»   s$    

’’rV   c                   C  sN   t tdksJ ttdks J ttdks0J ttdks@J ttd d S )Nr
   u   āz\hbarzHBar())rG   r
   r6   rC   r7   r>   r<   r<   r<   r=   Śtest_constantsÖ   s
    rW   c                  C  sj   t ddd} t| }t|dks$J d}d}t||ks<J t||ksLJ t|dks\J t|d d S )	NŚxF)Zcommutativez	Dagger(x)z +
x u    ā 
x zx^{\dagger}z&Dagger(Symbol('x', commutative=False)))r0   r   rG   r6   rC   r7   r>   )rX   r:   rI   rJ   r<   r<   r=   Śtest_daggerŽ   s    ’’rY   c                  C  sB   t d\} }}}t| |g||gg}td|}t|dks>J d S )Nśa,b,c,d©r   zU(0))r0   r1   r   rG   )ŚaŚbrU   ŚdŚuMatŚgr<   r<   r=   Śtest_gate_failingņ   s    
ra   c                  C  s"  t d\} }}}t| |g||gg}tddddd}td}tdtd}tdd}td|}	t|dksnJ t	|dks~J t
|dksJ t|d	ksJ t|d
 t|| dks¼J d}
d}t	|| |
ksŲJ t
|| |ksģJ t|| dksJ t|| d t|dks"J d}
d}t	||
ks<J t
||ksNJ t|dks`J t|d t|dks|J d}
d}t	||
ksJ t
||ksØJ t|dksŗJ t|d d}
d}t|	dksŽJ t	|	|
ksšJ t
|	|ksJ t|	dksJ t|	d d S )NrZ   rL   r   rF   )rM   r   r[   z1(2)z1 
 2z1_{2}zIdentityGate(Integer(2))z1(2)*|10101>z1 *|10101>
 2        u   1 āā10101ā©
 2        z!1_{2} {\left|10101\right\rangle }z\Mul(IdentityGate(Integer(2)), Qubit(Integer(1),Integer(0),Integer(1),Integer(0),Integer(1)))zC((3,0),X(1))zC   /X \
 3,0\ 1/u   C   āX ā
 3,0ā 1ā zC_{3,0}{\left(X_{1}\right)}z6CGate(Tuple(Integer(3), Integer(0)),XGate(Integer(1)))z	CNOT(1,0)zCNOT   
    1,0z\text{CNOT}_{1,0}zCNotGate(Integer(1),Integer(0))zU 
 0z!U((0,),Matrix([
[a, b],
[c, d]]))zU_{0}zgUGate(Tuple(Integer(0)),ImmutableDenseMatrix([[Symbol('a'), Symbol('b')], [Symbol('c'), Symbol('d')]])))r0   r1   r   r   r   r   r   r   rG   r6   rC   r7   r>   )r\   r]   rU   r^   r_   ŚqZg1Zg2Zg3Zg4rI   rJ   r<   r<   r=   Ś	test_gateś   sd    


’’’’
’’
’’’
rc   c                  C  sØ  t  } td}t }ttdt}t| dks2J t| dksBJ t| dksRJ t	| dksbJ t
| d t|dks|J d}d}t||ksJ t||ks¤J t	|dks“J t
|d	 t|d
ksĪJ t|d
ksŽJ t|d
ksīJ t	|dksžJ t
|d t|dksJ d}d}t||ks4J t||ksFJ t	|dksXJ t
|d t| | dksxJ d}d}t| | |ksJ t| | |ks¬J t	| | s¾J t
| | d t| | dksāJ d}d}t| | |ks J t| | |ksJ t	| | s(J t
| | d t| d dksLJ d}d}t| d |ksjJ t| d |ksJ t	| d dksJ t
| d d d S )NrF   r   ŚHz\mathcal{H}zHilbertSpace()zC(2)z 2
C z\mathcal{C}^{2}zComplexSpace(Integer(2))ŚFz\mathcal{F}zFockSpace()zL2(Interval(0, oo))z 2
L z4{\mathcal{L}^2}\left( \left[0, \infty\right) \right)z)L2(Interval(Integer(0), oo, false, true))zH+C(2)z     2
H + C u        2
H ā C z>DirectSumHilbertSpace(HilbertSpace(),ComplexSpace(Integer(2)))zH*C(2)z     2
H x C u        2
H āØ C zBTensorProductHilbertSpace(HilbertSpace(),ComplexSpace(Integer(2)))zH**2z x2
H  u	    āØ2
H  z{\mathcal{H}}^{\otimes 2}z2TensorPowerHilbertSpace(HilbertSpace(),Integer(2)))r   r   r   r   r2   r,   rG   r6   rC   r7   r>   )Śh1Śh2Śh3Śh4rI   rJ   r<   r<   r=   Śtest_hilbertJ  sz    
’’

’’
’’’’’’’rj   c            
      C  sź  t d} tt t }tt t }ttddtdd}ttdddt	ddd}tt| d t| d }tt| t| d }tt| d t| }t
|dksŖJ t|dksŗJ t|dksŹJ t|dksŚJ t|d t
|d	ksōJ t|d	ksJ t|d
ksJ t|dks*J t|d t
|dksFJ t|dksXJ t|dksjJ t|dks|J t|d t
|dksJ t|dksŖJ t|dks¼J t|dksĪJ t|d t
|dksźJ d}d}	t||ksJ t||	ksJ t|dks(J t|d t
|dksDJ d}d}	t||ks^J t||	kspJ t|dksJ t|d t
|dksJ d }d!}	t||ksøJ t||	ksŹJ t|d"ksÜJ t|d# d S )$NrX   rL   ©rL   rL   rF   z	<psi|psi>u   āØĻāĻā©z4\left\langle \psi \right. {\left|\psi\right\rangle }z3InnerProduct(Bra(Symbol('psi')),Ket(Symbol('psi')))z<psi;t|psi;t>u   āØĻ;tāĻ;tā©z8\left\langle \psi;t \right. {\left|\psi;t\right\rangle }zYInnerProduct(TimeDepBra(Symbol('psi'),Symbol('t')),TimeDepKet(Symbol('psi'),Symbol('t')))z	<1,1|1,1>u   āØ1,1ā1,1ā©z2\left\langle 1,1 \right. {\left|1,1\right\rangle }zGInnerProduct(JzBra(Integer(1),Integer(1)),JzKet(Integer(1),Integer(1)))z<1,1,j1=1,j2=1|1,1,j1=1,j2=1>u+   āØ1,1,jā=1,jā=1ā1,1,jā=1,jā=1ā©zR\left\langle 1,1,j_{1}=1,j_{2}=1 \right. {\left|1,1,j_{1}=1,j_{2}=1\right\rangle }zóInnerProduct(JzBraCoupled(Integer(1),Integer(1),Tuple(Integer(1), Integer(1)),Tuple(Tuple(Integer(1), Integer(2), Integer(1)))),JzKetCoupled(Integer(1),Integer(1),Tuple(Integer(1), Integer(1)),Tuple(Tuple(Integer(1), Integer(2), Integer(1)))))z	<x/2|x/2>z / | \ 
/ x|x \
\ -|- /
 \2|2/ u;    ā± ā ā² 
ā± xāx ā²
ā² āāā ā±
 ā²2ā2ā± zB\left\langle \frac{x}{2} \right. {\left|\frac{x}{2}\right\rangle }zYInnerProduct(Bra(Mul(Rational(1, 2), Symbol('x'))),Ket(Mul(Rational(1, 2), Symbol('x'))))z<x|x/2>z / | \ 
/  |x \
\ x|- /
 \ |2/ u9    ā± ā ā² 
ā±  āx ā²
ā² xāā ā±
 ā² ā2ā± z8\left\langle x \right. {\left|\frac{x}{2}\right\rangle }zDInnerProduct(Bra(Symbol('x')),Ket(Mul(Rational(1, 2), Symbol('x'))))z<x/2|x>z / | \ 
/ x|  \
\ -|x /
 \2| / u9    ā± ā ā² 
ā± xā  ā²
ā² āāx ā±
 ā²2ā ā± z8\left\langle \frac{x}{2} \right. {\left|x\right\rangle }zDInnerProduct(Bra(Mul(Rational(1, 2), Symbol('x'))),Ket(Symbol('x'))))r0   r   r$   r%   r&   r'   r   r    r   r!   rG   r6   rC   r7   r>   )
rX   Zip1Zip2Zip3Zip4Zip_tall1Zip_tall2Zip_tall3rI   rJ   r<   r<   r=   Śtest_innerproduct§  s    ’’
’


’

’’’

’’’
’’’’
’rl   c            	      C  sö  t d} t dtdtj}|  ” }td}td}tt|||||}t	t
 t }t| dkshJ t| dksxJ t| dksJ t| dksJ t| d t|dks²J d}d}t||ksŹJ t||ksŚJ t|d	ksźJ t|d
 t|dksJ d}d}t||ks J t||ks2J t|dksDJ t|d t|dks`J t|dksrJ t|dksJ t|dksJ t|d t|dks²J t|dksÄJ t|dksÖJ t|dksčJ t|d d S )NrD   rE   ŚtŚfrX   zOperator(Symbol('A'))zA**(-1)z -1
A  zA^{-1}z'Pow(Operator(Symbol('A')), Integer(-1))z.DifferentialOperator(Derivative(f(x), x),f(x))zk                    /d            \
DifferentialOperator|--(f(x)),f(x)|
                    \dx           /u{                       ād            ā
DifferentialOperatorāāā(f(x)),f(x)ā
                    ādx           ā zTDifferentialOperator\left(\frac{d}{d x} f{\left(x \right)},f{\left(x \right)}\right)zwDifferentialOperator(Derivative(Function('f')(Symbol('x')), Tuple(Symbol('x'), Integer(1))),Function('f')(Symbol('x')))zOperator(B,t,1/2)z$Operator\left(B,t,\frac{1}{2}\right)z0Operator(Symbol('B'),Symbol('t'),Rational(1, 2))z
|psi><psi|u   āĻā©āØĻāz4{\left|\psi\right\rangle }{\left\langle \psi\right|}z3OuterProduct(Ket(Symbol('psi')),Bra(Symbol('psi'))))r   r/   r.   ZHalfŚinvr+   r0   r   r*   r   r%   r$   rG   r6   rC   r7   r>   )	r\   r]   ro   rn   rX   r^   ŚoprI   rJ   r<   r<   r=   Śtest_operator  sT    
’’
’’’


rq   c                  C  sV   t d} t| dksJ t| dks(J t| dks8J t| dksHJ t| d d S )Nrb   zQExpr(Symbol('q')))r   rG   r6   rC   r7   r>   )rb   r<   r<   r=   Ś
test_qexprA  s    rr   c                  C  sØ   t d} td}t| dks J t| dks0J t| dks@J t| dksPJ t| d t|dksjJ t|dkszJ t|dksJ t|d	ksJ t|d
 d S )NZ0101rR   z|0101>u
   ā0101ā©z{\left|0101\right\rangle }z2Qubit(Integer(0),Integer(1),Integer(0),Integer(1))z|8>u   ā8ā©z{\left|8\right\rangle }zIntQubit(8))r   r   rG   r6   rC   r7   r>   )Zq1Zq2r<   r<   r=   Ś
test_qubitJ  s    
rs   c                  C  st  t d} tdd}tdd}tddd}tddd}tddd}tddd}tddd}tddddd	d
}tdddddd}	t| dksJ d}
d}t| |
ks¤J t	| |ks“J t
| dksÄJ t| d ttdksŽJ d}
d}tt|
ksöJ t	t|ksJ t
tdksJ ttd ttdks6J d}
d}tt|
ksPJ t	t|ksbJ t
tdkstJ ttd t|dksJ t|dks¢J t	|dks“J t
|dksĘJ t|d t|dksāJ t|dksōJ t	|dksJ t
|dksJ t|d t|dks4J t|dksFJ t	|d ksXJ t
|d!ksjJ t|d" t|d#ksJ t|d#ksJ t	|d$ksŖJ t
|d%ks¼J t|d& t|d'ksŲJ t|d(ksźJ t	|d)ksüJ t
|d*ksJ t|d+ t|d,ks*J t|d-ks<J t	|d.ksNJ t
|d/ks`J t|d0 t|d1ks|J t|d2ksJ t	|d3ks J t
|d4ks²J t|d5 t|d6ksĪJ d7}
d7}t||
ksčJ t	||ksśJ t
|d8ksJ t|d9 t|	d:ks(J d;}
d;}t|	|
ksBJ t	|	|ksTJ t
|	d<ksfJ t|	d= d S )>NŚLrL   r   )rL   rF   )rL   rF   rM   rF   rM   rN   rO   rP   ZLzzL 
 zZL_zzJzOp(Symbol('L'))r   z 2
J zJ^2zJ2Op(Symbol('J'))r   zJ 
 zZJ_zzJzOp(Symbol('J'))z|1,0>u	   ā1,0ā©z{\left|1,0\right\rangle }zJzKet(Integer(1),Integer(0))z<1,0|u	   āØ1,0āz{\left\langle 1,0\right|}zJzBra(Integer(1),Integer(0))z|1,0,j1=1,j2=2>u   ā1,0,jā=1,jā=2ā©z){\left|1,0,j_{1}=1,j_{2}=2\right\rangle }zrJzKetCoupled(Integer(1),Integer(0),Tuple(Integer(1), Integer(2)),Tuple(Tuple(Integer(1), Integer(2), Integer(1))))z<1,0,j1=1,j2=2|u   āØ1,0,jā=1,jā=2āz){\left\langle 1,0,j_{1}=1,j_{2}=2\right|}zrJzBraCoupled(Integer(1),Integer(0),Tuple(Integer(1), Integer(2)),Tuple(Tuple(Integer(1), Integer(2), Integer(1))))z|1,0,j1=1,j2=2,j3=3,j(1,2)=3>z|1,0,j1=1,j2=2,j3=3,j1,2=3>u)   ā1,0,jā=1,jā=2,jā=3,jā,ā=3ā©z;{\left|1,0,j_{1}=1,j_{2}=2,j_{3}=3,j_{1,2}=3\right\rangle }z©JzKetCoupled(Integer(1),Integer(0),Tuple(Integer(1), Integer(2), Integer(3)),Tuple(Tuple(Integer(1), Integer(2), Integer(3)), Tuple(Integer(1), Integer(3), Integer(1))))z<1,0,j1=1,j2=2,j3=3,j(1,2)=3|z<1,0,j1=1,j2=2,j3=3,j1,2=3|u)   āØ1,0,jā=1,jā=2,jā=3,jā,ā=3āz;{\left\langle 1,0,j_{1}=1,j_{2}=2,j_{3}=3,j_{1,2}=3\right|}z©JzBraCoupled(Integer(1),Integer(0),Tuple(Integer(1), Integer(2), Integer(3)),Tuple(Tuple(Integer(1), Integer(2), Integer(3)), Tuple(Integer(1), Integer(3), Integer(1))))zR(1,2,3)z	R (1,2,3)u   ā (1,2,3)z\mathcal{R}\left(1,2,3\right)z*Rotation(Integer(1),Integer(2),Integer(3))zWignerD(1, 2, 3, 4, 5, 6)z# 1         
D   (4,5,6)
 2,3       zD^{1}_{2,3}\left(4,5,6\right)zOWignerD(Integer(1), Integer(2), Integer(3), Integer(4), Integer(5), Integer(6))zWignerD(1, 2, 3, 0, 4, 0)z 1     
d   (4)
 2,3   zd^{1}_{2,3}\left(4\right)zOWignerD(Integer(1), Integer(2), Integer(3), Integer(0), Integer(4), Integer(0)))r4   r    r   r!   r   r"   r#   rG   r6   rC   r7   r>   r   r   )ZlzŚketŚbraZcketZcbraZcket_bigZcbra_bigZrotZbigdZsmalldrI   rJ   r<   r<   r=   Ś	test_spinY  s¼    

’’
’’
’’




’

’


’’
’’rw   c            	      C  s$  t d} t }t }t| d }t| d }t }t }t|dksHJ t|dksXJ t|dkshJ t|dksxJ t	|d t|dksJ t|dks¢J t|dks²J t|d	ksĀJ t	|d
 t|dksÜJ d}d}t||ksōJ t||ksJ t|dksJ t	|d t|dks4J d}d}t||ksNJ t||ks`J t|dksrJ t	|d t|dksJ t|dks J t|dks²J t|dksÄJ t	|d t|dksąJ t|dksņJ t|dksJ t|dksJ t	|d d S )NrX   rF   z<psi|u   āØĻāz{\left\langle \psi\right|}zBra(Symbol('psi'))z|psi>u   āĻā©z{\left|\psi\right\rangle }zKet(Symbol('psi'))z<x/2|z / |
/ x|
\ -|
 \2|u%    ā± ā
ā± xā
ā² āā
 ā²2āz!{\left\langle \frac{x}{2}\right|}z%Bra(Mul(Rational(1, 2), Symbol('x')))z|x/2>z| \ 
|x \
|- /
|2/ u%   ā ā² 
āx ā²
āā ā±
ā2ā± z!{\left|\frac{x}{2}\right\rangle }z%Ket(Mul(Rational(1, 2), Symbol('x')))z<psi;t|u
   āØĻ;tāz{\left\langle \psi;t\right|}z%TimeDepBra(Symbol('psi'),Symbol('t'))z|psi;t>u
   āĻ;tā©z{\left|\psi;t\right\rangle }z%TimeDepKet(Symbol('psi'),Symbol('t')))
r0   r$   r%   r&   r'   rG   r6   rC   r7   r>   )	rX   rv   ru   Zbra_tallZket_tallZtbraZtketrI   rJ   r<   r<   r=   Ś
test_stateÜ  sZ    

’’
’’

rx   c                  C  sd   t tddtdd} t| dks&J t| dks6J t| dksFJ t| dksVJ t| d d S )NrL   r   z|1,1>x|1,0>z|1,1>x |1,0>u   ā1,1ā©āØ ā1,0ā©z>{{\left|1,1\right\rangle }}\otimes {{\left|1,0\right\rangle }}zITensorProduct(JzKet(Integer(1),Integer(1)), JzKet(Integer(1),Integer(0))))r(   r    rG   r6   rC   r7   r>   )Śtpr<   r<   r=   Śtest_tensorproduct   s    ’rz   c                  C  sō  t d} td}tttdtd ttt| ||| |dtt	d tdtd  t
ddt
dd  tddtdd	  }tt	d tdtd tttd
td td ” d  ttt	t }tddddddtttdttd td
td t	t  tttt
ddt
dd ttdddtddd tdd	d }tdtd t d  ttdtt   }t|dksJ d}d}t||ks“J t||ksĘJ t|dksŲJ t|d t|dksōJ d}d}t||ksJ t||ks J t|dks2J t|d t|dksNJ d}d}t||kshJ t||kszJ t|dksJ t|d t|d ksØJ d!}d"}t||ksĀJ t||ksŌJ t|d#ksęJ t|d$ d S )%Nrn   rX   rD   rE   rM   rF   rL   r   é’’’’ŚCŚDŚErN   rO   rP   rk   z(Jz**2)x(Dagger(A) + Dagger(B))*{Dagger(DifferentialOperator(Derivative(f(x), x),f(x)))**3,Dagger(A) + Dagger(B)}*(<1,0| + <1,1|)*(|0,0> + |1,-1>)aó                   /                                      3        \                                 
                 |/                                   +\         |                                 
    2  / +    +\ <|                    /d            \ |   +    +>                                 
/J \ x \A  + B /*||DifferentialOperator|--(f(x)),f(x)| | ,A  + B |*(<1,0| + <1,1|)*(|0,0> + |1,-1>)
\ z/             \\                    \dx           / /         /                                 uY                   ā§                                      3        ā«                                 
                 āŖā                                   ā ā         āŖ                                 
    2  ā ā     ā ā āØā                    ād            ā ā   ā     ā ā¬                                 
āJ ā āØ āA  + B ā āāŖāDifferentialOperatorāāā(f(x)),f(x)ā ā ,A  + B āŖā(āØ1,0ā + āØ1,1ā)ā(ā0,0ā© + ā1,-1ā©)
ā zā              ā©ā                    ādx           ā  ā          ā­                                 aY  {J_z^{2}}\otimes \left({A^{\dagger} + B^{\dagger}}\right) \left\{\left(DifferentialOperator\left(\frac{d}{d x} f{\left(x \right)},f{\left(x \right)}\right)^{\dagger}\right)^{3},A^{\dagger} + B^{\dagger}\right\} \left({\left\langle 1,0\right|} + {\left\langle 1,1\right|}\right) \left({\left|0,0\right\rangle } + {\left|1,-1\right\rangle }\right)aą  Mul(TensorProduct(Pow(JzOp(Symbol('J')), Integer(2)), Add(Dagger(Operator(Symbol('A'))), Dagger(Operator(Symbol('B'))))), AntiCommutator(Pow(Dagger(DifferentialOperator(Derivative(Function('f')(Symbol('x')), Tuple(Symbol('x'), Integer(1))),Function('f')(Symbol('x')))), Integer(3)),Add(Dagger(Operator(Symbol('A'))), Dagger(Operator(Symbol('B'))))), Add(JzBra(Integer(1),Integer(0)), JzBra(Integer(1),Integer(1))), Add(JzKet(Integer(0),Integer(0)), JzKet(Integer(1),Integer(-1))))z3[Jz**2,A + B]*{E**(-2),Dagger(D)*Dagger(C)}*[J2,Jz]ze[    2      ] / -2  +  +\ [ 2   ]
[/J \ ,A + B]*<E  ,D *C >*[J ,J ]
[\ z/       ] \         / [    z]u   ā”    2      ā¤ ā§ -2  ā   ā ā« ā” 2   ā¤
ā¢āJ ā ,A + Bā„āāØE  ,D āC ā¬āā¢J ,J ā„
ā£ā zā        ā¦ ā©         ā­ ā£    zā¦z]\left[J_z^{2},A + B\right] \left\{E^{-2},D^{\dagger} C^{\dagger}\right\} \left[J^2,J_z\right]a  Mul(Commutator(Pow(JzOp(Symbol('J')), Integer(2)),Add(Operator(Symbol('A')), Operator(Symbol('B')))), AntiCommutator(Pow(Operator(Symbol('E')), Integer(-2)),Mul(Dagger(Operator(Symbol('D'))), Dagger(Operator(Symbol('C'))))), Commutator(J2Op(Symbol('J')),JzOp(Symbol('J'))))z{Wigner3j(1, 2, 3, 4, 5, 6)*[Dagger(B) + A,C + D]x(-J2 + Jz)*|1,0><1,1|*(|1,0,j1=1,j2=1> + |1,1,j1=1,j2=1>)x|1,-1,j1=1,j2=1>a            [ +          ]  /   2     \                                                                 
/1  3  5\*[B  + A,C + D]x |- J  + J |*|1,0><1,1|*(|1,0,j1=1,j2=1> + |1,1,j1=1,j2=1>)x |1,-1,j1=1,j2=1>
|       |                 \        z/                                                                 
\2  4  6/                                                                                             uē            ā” ā           ā¤  ā   2     ā                                                                 
ā1  3  5āāā£B  + A,C + Dā¦āØ ā- J  + J āāā1,0ā©āØ1,1āā(ā1,0,jā=1,jā=1ā© + ā1,1,jā=1,jā=1ā©)āØ ā1,-1,jā=1,jā=1ā©
ā       ā                 ā        zā                                                                  
ā2  4  6ā                                                                                              aU  \left(\begin{array}{ccc} 1 & 3 & 5 \\ 2 & 4 & 6 \end{array}\right) {\left[B^{\dagger} + A,C + D\right]}\otimes \left({- J^2 + J_z}\right) {\left|1,0\right\rangle }{\left\langle 1,1\right|} \left({{\left|1,0,j_{1}=1,j_{2}=1\right\rangle } + {\left|1,1,j_{1}=1,j_{2}=1\right\rangle }}\right)\otimes {{\left|1,-1,j_{1}=1,j_{2}=1\right\rangle }}aŌ  Mul(Wigner3j(Integer(1), Integer(2), Integer(3), Integer(4), Integer(5), Integer(6)), TensorProduct(Commutator(Add(Dagger(Operator(Symbol('B'))), Operator(Symbol('A'))),Add(Operator(Symbol('C')), Operator(Symbol('D')))), Add(Mul(Integer(-1), J2Op(Symbol('J'))), JzOp(Symbol('J')))), OuterProduct(JzKet(Integer(1),Integer(0)),JzBra(Integer(1),Integer(1))), TensorProduct(Add(JzKetCoupled(Integer(1),Integer(0),Tuple(Integer(1), Integer(1)),Tuple(Tuple(Integer(1), Integer(2), Integer(1)))), JzKetCoupled(Integer(1),Integer(1),Tuple(Integer(1), Integer(1)),Tuple(Tuple(Integer(1), Integer(2), Integer(1))))), JzKetCoupled(Integer(1),Integer(-1),Tuple(Integer(1), Integer(1)),Tuple(Tuple(Integer(1), Integer(2), Integer(1))))))z((C(1)*C(2)+F**2)*(L2(Interval(0, oo))+H)z9// 1    2\    x2\   / 2    \
\\C  x C / + F  / x \L  + H/u[   āā 1    2ā    āØ2ā   ā 2    ā
āāC  āØ C ā  ā F  ā  āØ āL  ā Hā z»\left(\left(\mathcal{C}^{1}\otimes \mathcal{C}^{2}\right)\oplus {\mathcal{F}}^{\otimes 2}\right)\otimes \left({\mathcal{L}^2}\left( \left[0, \infty\right) \right)\oplus \mathcal{H}\right)a  TensorProductHilbertSpace((DirectSumHilbertSpace(TensorProductHilbertSpace(ComplexSpace(Integer(1)),ComplexSpace(Integer(2))),TensorPowerHilbertSpace(FockSpace(),Integer(2)))),(DirectSumHilbertSpace(L2(Interval(Integer(0), oo, false, true)),HilbertSpace()))))r+   r0   r   r   r   r-   r   r*   r(   r   r   r    r	   ro   r   r   r   r!   r   r   r   r2   r,   r   rG   r6   rC   r7   r>   )rn   rX   Śe1Śe2Ze3Ze4rI   rJ   r<   r<   r=   Śtest_big_expr*  sp    vN’’’	’’

’’’

’
’’’

’’’
r   c                  C  s,   t d} t| dksJ t| dks(J d S )Nr\   u    ā 
a za^{\dagger})r)   r6   r7   )Śadr<   r<   r=   Ś_test_sho1d  s    r   N)kŚ__doc__Ś
__future__r   Śtypingr   Z$sympy.physics.quantum.anticommutatorr   Zsympy.physics.quantum.cgr   r   r   r   Z sympy.physics.quantum.commutatorr	   Zsympy.physics.quantum.constantsr
   Zsympy.physics.quantum.daggerr   Zsympy.physics.quantum.gater   r   r   r   r   Zsympy.physics.quantum.hilbertr   r   r   r   Z"sympy.physics.quantum.innerproductr   Zsympy.physics.quantum.operatorr   r   r   Zsympy.physics.quantum.qexprr   Zsympy.physics.quantum.qubitr   r   Zsympy.physics.quantum.spinr   r   r   r   r    r!   r"   r#   Zsympy.physics.quantum.stater$   r%   r&   r'   Z#sympy.physics.quantum.tensorproductr(   Zsympy.physics.quantum.sho1dr)   Zsympy.core.functionr*   r+   Zsympy.core.numbersr,   Zsympy.core.powerr-   Zsympy.core.singletonr.   Zsympy.core.symbolr/   r0   Zsympy.matrices.denser1   Zsympy.sets.setsr2   Zsympy.testing.pytestr3   r4   Zsympy.printingr5   Zsympy.printing.prettyr6   rA   Zsympy.printing.latexr7   ZMutableDenseMatrixr8   Ś__annotations__Śexecr>   rC   rK   rT   rV   rW   rY   ra   rc   rj   rl   rq   rr   rs   rw   rx   rz   r   r   r<   r<   r<   r=   Ś<module>   s|   (








	S
P]`:	 D
W