
    sgVv                        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* ZXd+ ZPd, ZYd- ZZd. Z[d/ Z\d0 Z]d1 Z^eKd2        Z_d3 Z`d4 Zad5 Zbd6 Zcd7 Zdd8 Zed9 Zfd: Zgd; Zhd< Zid= Zjy>)?z5
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                N    t        |       |k(  sJ t        |t              | k(  sJ y)zD
    sT := sreprTest
    from sympy/printing/tests/test_repr.py
    N)r6   evalr9   )exprstrings     \/var/www/html/venv/lib/python3.12/site-packages/sympy/physics/quantum/tests/test_printing.pysTr?   8   s+    
 ;&   $$$    c                    t        | dd      S )zASCII pretty-printingFuse_unicode	wrap_linexprettyr<   s    r>   r7   r7   A   s    4Ue<<r@   c                    t        | dd      S )zUnicode pretty-printingTFrB   rE   rG   s    r>   uprettyrI   F   s    4TU;;r@   c                    t        d      } t        d      }t        | |      }t        | dz  |      }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       y )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   strr7   rI   r8   r?   )rK   rL   acac_tall	ascii_str	ucode_strs         r>   test_anticommutatorrS   K   s    AA	1	BQT1%Gr7g":   2;'!!!9----rHIw<:%%%   '?i'''7y(((>6666w^_r@   c                 0   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(  sJ t        |       |k(  sJ t        |       dk(  sJ t        | dz        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(  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       y )N   rM                     	   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	   rN   r7   rI   r8   r?   )cgwigner3jwigner6jwigner9jrQ   rR   s         r>   test_cgra   h   sB   	Aq!Q1	B1aAq)H1aAq)H1aAq!Q2Hr7,,,,   ":"""2;)###9++++q>BBBBrWXx=8888   (y(((8	)))?MN N Nxcdx=8888   (y(((8	)))?OP P Pxcdx=AAAA   (y(((8	)))?\] ] ]x  H  Ir@   c                    t        d      } t        d      }t        | |      }t        | dz  |      }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       y )NrK   rL   rM   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
   rN   r7   rI   r8   r?   )rK   rL   cc_tallrQ   rR   s         r>   test_commutatorre      s    AA1aA1a Fq6W!91:   8****q
CDv;*$$$  
 &>Y&&&6?i'''=3333vYZr@   c                     t        t              dk(  sJ t        t              dk(  sJ t        t              dk(  sJ t	        t              dk(  sJ t        t        d       y )Nr   u   ℏz\hbarzHBar())rN   r   r7   rI   r8   r?    r@   r>   test_constantsrh      sT    t9$<6!!!4=E!!!;("""tXr@   c                     t        d      } t        |       }t        |      dk(  sJ d}d}t        |      |k(  sJ t	        |      |k(  sJ t        |      dk(  sJ t        |d       y )Nxz	Dagger(x)z +
x u    †
x zx^{\dagger}zDagger(Symbol('x')))r1   r   rN   r7   rI   r8   r?   )rj   r<   rQ   rR   s       r>   test_daggerrk      s}    A!9Dt9###  
 $<9$$$4=I%%%;.(((t"#r@   c                 ~    t        d      \  } }}}t        | |g||gg      }t        d|      }t        |      dk(  sJ y )Na,b,c,dr   zU(0))r1   r2   r   rN   )abrc   duMatgs         r>   test_gate_failingrt      sI    #JAq!QAq6Aq6"#DdDAq6Vr@   c                 
   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(  sJ t        |      dk(  sJ t        |      dk(  sJ t        |      d	k(  sJ t        |d
       t        ||z        dk(  sJ d}
d}t        ||z        |
k(  sJ t        ||z        |k(  sJ t        ||z        dk(  sJ t        ||z  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(  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       y )Nrm   rU   r   rM   )rV   r   rn   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')]])))r1   r2   r   r   r   r   r   r   rN   r7   rI   r8   r?   )ro   rp   rc   rq   rr   qg1g2g3g4rQ   rR   s               r>   	test_gater{      s   #JAq!QAq6Aq6"#DaAq!A	aB	vuQx	 B	!QB	tT	Br7f":!!!2;("""9   r%&r!t9&&&  
 "Q$<9$$$2a4=I%%%A;>>>>r!tklr7o%%%  
 ":"""2;)###96666rCDr7k!!!  
 ":"""2;)###9,,,,r,-  
 r7   ":"""2;)###9   rtur@   c                    t               } t        d      }t               }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 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(  sJ t        |      |k(  sJ t        |      dk(  sJ t        |d       t        | |z         dk(  sJ d}d}t        | |z         |k(  sJ t        | |z         |k(  sJ t        | |z         sJ t        | |z   d       t        | |z        dk(  sJ d}d}t        | |z        |k(  sJ t        | |z        |k(  sJ t        | |z        sJ t        | |z  d       t        | dz        dk(  sJ d}d}t        | dz        |k(  sJ t        | dz        |k(  sJ t        | dz        dk(  sJ t        | dz  d       y )NrM   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   r3   r-   rN   r7   rI   r8   r?   )h1h2h3h4rQ   rR   s         r>   test_hilbertr   J  s   	B	aB	B	HQO	Br7c>>":2;#9&&&rr7f  
 ":"""2;)###9****r%&r7c>>":2;#9&&&r=r7++++  
 ":"""2;)###9OOOOr67rBw<8###  
 "r'?i'''27y(((b>>rBwPQr"u:!!!  
 "R%=I%%%2b5>Y&&&B<<r"uKMr1u:  
 "a%=I%%%2q5>Y&&&Q<7777r1uBCr@   c                    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z        t        | dz              }t        t        |       t        | dz              }t        t        | dz        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(  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 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(  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#       y )$Nrj   rU   rU   rU   rM   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'))))r1   r   r%   r&   r'   r(   r   r!   r    r"   rN   r7   rI   r8   r?   )
rj   ip1ip2ip3ip4ip_tall1ip_tall2ip_tall3rQ   rR   s
             r>   test_innerproductr     s   A
suce
$C
z|Z\
2C
uQ{E!QK
0C
|Aq&1<1f3M
NCC!Hc!A#h/HCFC!H-HC!Hc!f-Hs8{"""#;+%%%3<?***GH H HsABs8&&&#;/)))3<....:CD D Dsghs8{"""#;+%%%3<,,,,:NNNNsUVs86666#;99993<HHHH:]^ ^ ^s  B  Cx=K'''   (y(((8	)))?MN N Nxlmx=I%%%   (y(((8	)))?CD D DxMOx=I%%%   (y(((8	)))?CD D DxMOr@   c                 2   t        d      } t        dt        d      t        j                        }| j	                         }t        d      }t        d      }t        t         ||      |       ||            }t        t               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 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(  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(  sJ t        |      dk(  sJ t!        |d       y )NrK   rL   tfrj   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   r0   r/   Halfinvr,   r1   r   r+   r   r&   r%   rN   r7   rI   r8   r?   )	ro   rp   r   r   rj   rq   oprQ   rR   s	            r>   test_operatorr     sG   AfSk166*A
%%'CAAZ!a0!A$7A	ceSU	#Bq6S==!91:8s??q
!"s8y     
 #;)###3<9$$$:"""s56q6EEEE   !9	!!!1:"""8_` ` `q  D  Eq6((((!9++++1:,,,,8>>>>q
<=r7l"""":%%%2;,,,,9OOOOr@Ar@   c                     t        d      } t        |       dk(  sJ t        |       dk(  sJ t        |       dk(  sJ t	        |       dk(  sJ t        | d       y )Nrv   zQExpr(Symbol('q')))r   rN   r7   rI   r8   r?   )rv   s    r>   
test_qexprr   A  s\    c
Aq6S==!91:8tq
r@   c                 `   t        d      } 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
       y )N0101r[   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   rN   r7   rI   r8   r?   )q1q2s     r>   
test_qubitr   J  s    	vB	!Br7h":!!!2;,&&&95555r?@r7e":2;)###92222r=r@   c                    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(  sJ d}
d}t        t              |
k(  sJ t        t              |k(  sJ t        t              dk(  sJ 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(  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(  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        |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(  sJ t        |	      |k(  sJ t        |	      d<k(  sJ t        |	d=       y )>NLrU   r   )rU   rM   )rU   rM   rV   rM   rV   rW   rX   rY   LzzL 
 zL_zzJzOp(Symbol('L'))r   z 2
J zJ^2zJ2Op(Symbol('J'))r   zJ 
 z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)))r5   r!   r   r"   r    r#   r$   rN   r7   rI   r8   r?   r   r   )lzketbracketcbracket_bigcbra_bigrotbigdsmalldrQ   rR   s               r>   	test_spinr   Y  s"   	cB
1+C
1+C1f%D1f%DAq),HAq),H
1a
C1aAq!$DQ1aA&Fr7d??  
 ":"""2;)###9rr7d??  
 ":"""2;)###9rr7d??  
 ":"""2;)###9rs8w#;'!!!3<;&&&:5555s*+s8w#;'!!!3<;&&&:5555s*+t9))))$<,,,,4=5555;FFFFt  B  Ct9))))$<,,,,4=5555;FFFFt  B  Cx=;;;; (<<<<8 KKKK?FG G Gx  }  ~x=;;;;(<<<<8 KKKK?FG G Gx  }  ~s8z!!!#;+%%%3<=(((:9999s89t93333   $<9$$$4=I%%%;::::t^_v;5555   &>Y&&&6?i'''=8888v`ar@   c                 B   t        d      } t               }t               }t        | dz        }t        | dz        }t               }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(  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(  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(  sJ t        |      dk(  sJ t        |d       y )Nrj   rM   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')))
r1   r%   r&   r'   r(   rN   r7   rI   r8   r?   )	rj   r   r   bra_tallket_talltbratketrQ   rR   s	            r>   
test_stater     si   A
%C
%C1Q3xH1Q3xH<D<Ds8w#;'!!!3<:%%%:6666s !s8w#;'!!!3<:%%%:6666s !x=G###   (y(((8	)))?BBBBx89x=G###   (y(((8	)))?BBBBx89t9	!!!$<9$$$4=L(((;9999t45t9	!!!$<9$$$4=L(((;9999t45r@   c                     t        t        dd      t        dd            } t        |       dk(  sJ t        |       dk(  sJ t	        |       dk(  sJ t        |       dk(  sJ t        | d       y )NrU   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!   rN   r7   rI   r8   r?   )tps    r>   test_tensorproductr      sx    	uQ{E!QK	0Br7m###":'''2;22229IJ J JrVWr@   c                 N   t        d      } t        d      }t        t        t	        d      t	        d      z   t        t        t         | |      |       | |            d            t        t        dz  t	        d      t	        d      z         z        t        dd      t        dd      z   z  t        dd      t        dd	      z   z  }t        t        dz  t	        d      t	        d      z         t        t        t	        d
      t	        d      z        t	        d      j                         dz        z  t        t        t        t                    z  }t        dddddd      t        t        t	        d      t        t	        d            z   t	        d
      t	        d      z         t        t        z
        z  t        t!        t        t        dd            t        dd                  z  t        t#        ddd      t#        ddd      z   t#        dd	d            z  }t%        d      t%        d      z  t'               dz  z   t)        t+        dt,                    t/               z   z  }t1        |      dk(  sJ d}d}t3        |      |k(  sJ t5        |      |k(  sJ t7        |      dk(  sJ t9        |d       t1        |      dk(  sJ d}d}t3        |      |k(  sJ t5        |      |k(  sJ t7        |      dk(  sJ t9        |d       t1        |      dk(  sJ d}d}t3        |      |k(  sJ t5        |      |k(  sJ t7        |      dk(  sJ t9        |d       t1        |      d k(  sJ d!}d"}t3        |      |k(  sJ t5        |      |k(  sJ t7        |      d#k(  sJ t9        |d$       y )%Nr   rj   rK   rL   rV   rM   rU   r   CDErW   rX   rY   r   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,   r1   r   r   r   r.   r   r+   r)   r   r   r!   r
   r   r   r   r   r"   r   r   r   r3   r-   r   rN   r7   rI   r8   r?   )r   rj   e1e2e3e4rQ   rR   s           r>   test_big_exprr   *  s   AA	x}x}<cBVWabcdebfhiWjlmnolpBqst>uv  xE  FH  JK  FK  MU  VY  MZ  ]e  fi  ]j  Mj  xk  k  
l  ns  tu  wx  ny  |A  BC  EF  |G  nG  
H  JO  PQ  ST  JU  X]  ^_  ac  Xd  Jd  
eB	BE8C=8C=8	9.PXY\P]^fgj^kPkIlnvwzn{nn  oB  DE  oE  ;F  
F  GM  NX  Y[  ]_  N`  Ga  
aB	!Q1a	#M*Xc]VT\]`TaMb=bdlmpdqt|  ~A  uB  eB  3C  EG  JL  EL  %M  
M  NT  Ua  bh  in  op  rs  it  bu  w|  }~  @A  wB  UC  ND  
D  ER  S_  `a  cd  fl  Sm  p|  }~  @A  CI  pJ  SJ  LX  YZ  \^  `f  Lg  Eh  
hB
q/,q/
)IKN
:R	2A >.>! 
"Br7  k  k  k  k   ":"""2;)###9 	ee e er  n  or7KKKK   ":"""2;)###9hi i ir  _  `r7 	FF F F   ":"""2;)###9 	aa a ar  b  cr7@@@@  
 ":"""2;)###9 	GG G Gr  P  Qr@   c                 Z    t        d      } t        |       dk(  sJ t        |       dk(  sJ y )Nro   u    †
a za^{\dagger})r*   r7   r8   )ads    r>   _test_sho1dr     s0    	3B":****9&&&r@   N)k__doc__
__future__r   typingr   $sympy.physics.quantum.anticommutatorr   sympy.physics.quantum.cgr   r   r   r	    sympy.physics.quantum.commutatorr
   sympy.physics.quantum.constantsr   sympy.physics.quantum.daggerr   sympy.physics.quantum.gater   r   r   r   r   sympy.physics.quantum.hilbertr   r   r   r   "sympy.physics.quantum.innerproductr   sympy.physics.quantum.operatorr   r   r   sympy.physics.quantum.qexprr   sympy.physics.quantum.qubitr   r   sympy.physics.quantum.spinr   r   r   r    r!   r"   r#   r$   sympy.physics.quantum.stater%   r&   r'   r(   #sympy.physics.quantum.tensorproductr)   sympy.physics.quantum.sho1dr*   sympy.core.functionr+   r,   sympy.core.numbersr-   sympy.core.powerr.   sympy.core.singletonr/   sympy.core.symbolr0   r1   sympy.matrices.denser2   sympy.sets.setsr3   sympy.testing.pytestr4   r5   sympy.printingr6   sympy.printing.prettyr7   rF   sympy.printing.latexr8   MutableDenseMatrixr9   __annotations__execr?   rI   rS   ra   re   rh   rk   rt   r{   r   r   r   r   r   r   r   r   r   r   rg   r@   r>   <module>r      s{   #  ? E E 7 0 / R R S S ; W W - 7 j j j H H = 1 6 !   " / ' $ & ,   3 &  ^  C   *C 0 -s 3 / 5 2C 8 0# 6 0# 6 / 5 4c :%=
<
`:PIf[6$(  Mv`ZDz]O@7Bt @bFA6HXTQn'r@   