U
    9%eVv                     @  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tt|t| ks"tdS )zD
    sT := sreprTest
    from sympy/printing/tests/test_repr.py
    N)r5   AssertionErrorevalr8   )exprstring r=   h/var/www/html/Darija-Ai-API/env/lib/python3.8/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@   rA   rC   r=   r=   r>   uprettyF   s    rD   c                  C  s   t d} t d}t| |}t| d |}t|dks8tt|dksHtt|dksXtt|dkshtt|d t|dkstd}d	}t||kstt||kstt|d
kst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   strr9   r6   rD   r7   r?   )rE   rF   acZac_tall	ascii_str	ucode_strr=   r=   r>   test_anticommutatorK   s$    

rL   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^td}d}t| |ksvtt| |kstt| dkstt| d dkstt	| d t|dkstd}d}t||kstt||kstt|dkstt	|d t|dkstd}d}t||ks2tt||ksDtt|dksVtt	|d t|dksrtd}d}t||kstt||kstt|dkstt	|d d S )N   rG                     	   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   rH   r9   r6   rD   r7   r?   )ZcgZwigner3jZwigner6jZwigner9jrJ   rK   r=   r=   r>   test_cgh   s^    



	
rU   c                  C  s   t d} t d}t| |}t| d |}t|dks8tt|dksHtt|dksXtt|dkshtt|d t|dkstd}d	}t||kstt||kstt|d
kstt|d d S )NrE   rF   rG   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	   rH   r9   r6   rD   r7   r?   )rE   rF   cZc_tallrJ   rK   r=   r=   r>   test_commutator   s$    

rW   c                   C  sN   t tdkstttdks tttdks0tttdks@tttd d S )Nr
   u   ℏz\hbarzHBar())rH   r
   r9   r6   rD   r7   r?   r=   r=   r=   r>   test_constants   s
    rX   c                  C  sf   t d} t| }t|dks td}d}t||ks8tt||ksHtt|dksXtt|d d S )Nxz	Dagger(x)z +
x u    †
x zx^{\dagger}zDagger(Symbol('x')))r0   r   rH   r9   r6   rD   r7   r?   )rY   r;   rJ   rK   r=   r=   r>   test_dagger   s    rZ   c                  C  sB   t d\} }}}t| |g||gg}td|}t|dks>td S )Na,b,c,dr   zU(0))r0   r1   r   rH   r9   )abrV   duMatgr=   r=   r>   test_gate_failing   s    
rb   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snt	t
|dks~t	t|dkst	t|d	kst	t|d
 t|| dkst	d}
d}t
|| |
kst	t|| |kst	t|| dkst	t|| d t|dks"t	d}
d}t
||
ks<t	t||ksNt	t|dks`t	t|d t|dks|t	d}
d}t
||
kst	t||kst	t|dkst	t|d d}
d}t|	dkst	t
|	|
kst	t|	|kst	t|	dkst	t|	d d S )Nr[   rM   r   rG   )rN   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   rH   r9   r6   rD   r7   r?   )r]   r^   rV   r_   r`   qg1g2Zg3Zg4rJ   rK   r=   r=   r>   	test_gate   sd    





rf   c                  C  s  t  } td}t }ttdt}t| dks2tt| dksBtt	| dksRtt
| dksbtt| d t|dks|td}d}t||kstt	||kstt
|dkstt|d	 t|d
kstt|d
kstt	|d
kstt
|dkstt|d t|dkstd}d}t||ks4tt	||ksFtt
|dksXtt|d t| | dksxtd}d}t| | |kstt	| | |kstt
| | stt| | d t| | dkstd}d}t| | |ks tt	| | |kstt
| | s(tt| | d t| d dksLtd}d}t| d |ksjtt	| d |kstt
| d dkstt| d d d S )NrG   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,   rH   r9   r6   rD   r7   r?   )Zh1Zh2Zh3Zh4rJ   rK   r=   r=   r>   test_hilbertJ  sz    



ri   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stt|dkstt|dkstt|dkstt|d t
|d	kstt|d	kstt|d
kstt|dks*tt|d t
|dksFtt|dksXtt|dksjtt|dks|tt|d t
|dkstt|dkstt|dkstt|dkstt|d t
|dkstd}d}	t||kstt||	kstt|dks(tt|d t
|dksDtd}d}	t||ks^tt||	ksptt|dkstt|d t
|dkstd }d!}	t||kstt||	kstt|d"kstt|d# d S )$NrY   rM   rM   rM   rG   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 }zInnerProduct(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!   rH   r9   r6   rD   r7   r?   )
rY   Zip1Zip2Zip3Zip4Zip_tall1Zip_tall2Zip_tall3rJ   rK   r=   r=   r>   test_innerproduct  s    









rk   c            	      C  s  t d} t dtdtj}|  }td}td}tt|||||}t	t
 t }t| dkshtt| dksxtt| dkstt| dkstt| d t|dkstd}d}t||kstt||kstt|d	kstt|d
 t|dkstd}d}t||ks tt||ks2tt|dksDtt|d t|dks`tt|dksrtt|dkstt|dkstt|d t|dkstt|dkstt|dkstt|dkstt|d d S )NrE   rF   tfrY   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$   rH   r9   r6   rD   r7   r?   )	r]   r^   rn   rm   rY   r_   oprJ   rK   r=   r=   r>   test_operator  sT    




rp   c                  C  sV   t d} t| dkstt| dks(tt| dks8tt| dksHtt| d d S )Nrc   zQExpr(Symbol('q')))r   rH   r9   r6   rD   r7   r?   )rc   r=   r=   r>   
test_qexprA  s    rq   c                  C  s   t d} td}t| dks tt| dks0tt| dks@tt| dksPtt| d t|dksjtt|dksztt|dkstt|d	kstt|d
 d S )NZ0101rS   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   rH   r9   r6   rD   r7   r?   )q1q2r=   r=   r>   
test_qubitJ  s    
rt   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std}
d}t	| |
kstt
| |kstt| dkstt| d ttdkstd}
d}t	t|
kstt
t|kstttdkstttd ttdks6td}
d}t	t|
ksPtt
t|ksbtttdksttttd t|dkstt	|dkstt
|dkstt|dkstt|d t|dkstt	|dkstt
|dkstt|dkstt|d t|dks4tt	|dksFtt
|d ksXtt|d!ksjtt|d" t|d#kstt	|d#kstt
|d$kstt|d%kstt|d& t|d'kstt	|d(kstt
|d)kstt|d*kstt|d+ t|d,ks*tt	|d-ks<tt
|d.ksNtt|d/ks`tt|d0 t|d1ks|tt	|d2kstt
|d3kstt|d4kstt|d5 t|d6kstd7}
d7}t	||
kstt
||kstt|d8kstt|d9 t|	d:ks(td;}
d;}t	|	|
ksBtt
|	|ksTtt|	d<ksftt|	d= d S )>NLrM   r   )rM   rG   )rM   rG   rN   rG   rN   rO   rP   rQ   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 }zJzKetCoupled(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|}zJzBraCoupled(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#   rH   r9   r6   rD   r7   r?   r   r   )ZlzketbraZcketZcbraZcket_bigZcbra_bigZrotZbigdZsmalldrJ   rK   r=   r=   r>   	test_spinY  s    














rx   c            	      C  s$  t d} t }t }t| d }t| d }t }t }t|dksHtt|dksXtt|dkshtt	|dksxtt
|d t|dkstt|dkstt|dkstt	|d	kstt
|d
 t|dkstd}d}t||kstt||kstt	|dkstt
|d t|dks4td}d}t||ksNtt||ks`tt	|dksrtt
|d t|dkstt|dkstt|dkstt	|dkstt
|d t|dkstt|dkstt|dkstt	|dkstt
|d d S )NrY   rG   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'   rH   r9   r6   rD   r7   r?   )	rY   rw   rv   Zbra_tallZket_tallZtbraZtketrJ   rK   r=   r=   r>   
test_state  sZ    




ry   c                  C  sd   t tddtdd} t| dks&tt| dks6tt| dksFtt| dksVtt| d d S )NrM   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    rH   r9   r6   rD   r7   r?   )tpr=   r=   r>   test_tensorproduct   s    r{   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std}d}t||kstt||kstt|dkstt|d t|dkstd}d}t||kstt||ks tt|dks2tt|d t|dksNtd}d}t||kshtt||ksztt|dkstt|d t|d kstd!}d"}t||kstt||kstt|d#kstt|d$ d S )%Nrm   rY   rE   rF   rN   rG   rM   r   CDErO   rP   rQ   rj   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	   rn   r   r   r   r!   r   r   r   r2   r,   r   rH   r9   r6   rD   r7   r?   )rm   rY   e1e2Ze3Ze4rJ   rK   r=   r=   r>   test_big_expr*  sr    vN 	







r   c                  C  s,   t d} t| dkstt| dks(td S )Nr]   u    †
a za^{\dagger})r)   r6   r9   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   rB   Zsympy.printing.latexr7   ZMutableDenseMatrixr8   __annotations__execr?   rD   rL   rU   rW   rX   rZ   rb   rf   ri   rk   rp   rq   rt   rx   ry   r{   r   r   r=   r=   r=   r>   <module>   s|   (








	S
P]`:	 D
W