
    \h|v                        % S r SSKJr  SSKJr  SSKJr  SSKJrJ	r	J
r
Jr  SSKJr  SSKJr  SSKJr  SS	KJrJrJrJrJr  SS
KJrJrJrJr  SSKJr  SSKJ r J!r!J"r"  SSK#J$r$  SSK%J&r&J'r'  SSK(J)r)J*r*J+r+J,r,J-r-J.r.J/r/J0r0  SSK1J2r2J3r3J4r4J5r5  SSK6J7r7  SSK8J9r9  SSK:J;r;J<r<  SSK=J>r>  SSK?J@r@  SSKAJBrB  SSKCJDrDJErE  SSKFJGrG  SSKHJIrI  SSKJJKrK  SSK(JLrL  SSKMJNrN  SSKOJPrQ  SSKRJSrS  \GrT0 rUS\VS '   \W" S!\U5        \W" S"\U5        \W" S#\U5        \W" S$\U5        \W" S%\U5        \W" S&\U5        \W" S'\U5        \W" S(\U5        \W" S)\U5        S* rXS+ rPS, rYS- rZS. r[S/ r\S0 r]S1 r^\KS2 5       r_S3 r`S4 raS5 rbS6 rcS7 rdS8 reS9 rfS: rgS; rhS< riS= rjg>)?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                R    [        U 5      U:X  d   e[        U[        5      U :X  d   eg)z8
sT := sreprTest
from sympy/printing/tests/test_repr.py
N)r6   evalr9   )exprstrings     a/var/www/auris/envauris/lib/python3.13/site-packages/sympy/physics/quantum/tests/test_printing.pysTr?   8   s+    
 ;&   $$$    c                    [        U SSS9$ )zASCII pretty-printingFuse_unicode	wrap_linexprettyr<   s    r>   r7   r7   A   s    4Ue<<r@   c                    [        U SSS9$ )zUnicode pretty-printingTFrB   rE   rG   s    r>   uprettyrI   F   s    4TU;;r@   c                    [        S5      n [        S5      n[        X5      n[        U S-  U5      n[        U5      S:X  d   e[        U5      S:X  d   e[	        U5      S:X  d   e[        U5      S:X  d   e[        US5        [        U5      S:X  d   eSnS	n[        U5      U:X  d   e[	        U5      U:X  d   e[        U5      S
:X  d   e[        US5        g )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		BQT1%Gr7g":   2;'!!!9----rHIw<:%%%   '?i'''7y(((>6666w^_r@   c                 R   [        SSSSSS5      n [        SSSSSS5      n[        SSSSSS5      n[        SSSSSSSSS	5	      n[	        U 5      S
:X  d   eSnSn[        U 5      U:X  d   e[        U 5      U:X  d   e[        U 5      S:X  d   e[        U S-  5      S:X  d   e[        U S5        [	        U5      S:X  d   eSnSn[        U5      U:X  d   e[        U5      U:X  d   e[        U5      S:X  d   e[        US5        [	        U5      S:X  d   eSnSn[        U5      U:X  d   e[        U5      U:X  d   e[        U5      S:X  d   e[        US5        [	        U5      S:X  d   eSnSn[        U5      U:X  d   e[        U5      U:X  d   e[        U5      S:X  d   e[        US5        g )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                    [        S5      n [        S5      n[        X5      n[        U S-  U5      n[        U5      S:X  d   e[        U5      S:X  d   e[	        U5      S:X  d   e[        U5      S:X  d   e[        US5        [        U5      S:X  d   eSnS	n[        U5      U:X  d   e[	        U5      U:X  d   e[        U5      S
:X  d   e[        US5        g )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1A1a Fq6W!91:   8****q
CDv;*$$$  
 &>Y&&&6?i'''=3333vYZr@   c                     [        [        5      S:X  d   e[        [        5      S:X  d   e[        [        5      S:X  d   e[	        [        5      S:X  d   e[        [        S5        g )Nr   u   ℏz\hbarzHBar())rN   r   r7   rI   r8   r?    r@   r>   test_constantsrh      sT    t9$<6!!!4=E!!!;("""tXr@   c                     [        SSS9n [        U 5      n[        U5      S:X  d   eSnSn[        U5      U:X  d   e[	        U5      U:X  d   e[        U5      S:X  d   e[        US5        g )	NxF)commutativez	Dagger(x)z +
x u    †
x zx^{\dagger}z&Dagger(Symbol('x', commutative=False)))r1   r   rN   r7   rI   r8   r?   )rj   r<   rQ   rR   s       r>   test_daggerrl      s    'A!9Dt9###  
 $<9$$$4=I%%%;.(((t56r@   c                 x    [        S5      u  pp#[        X/X#//5      n[        SU5      n[        U5      S:X  d   eg )Na,b,c,dr   zU(0))r1   r2   r   rN   )abrc   duMatgs         r>   test_gate_failingru      sA    #JA!A6A6"#DdDAq6Vr@   c                     [        S5      u  pp#[        X/X#//5      n[        SSSSS5      n[        S5      n[	        S[        S5      5      n[        SS5      n[        SU5      n	[        U5      S:X  d   e[        U5      S:X  d   e[        U5      S:X  d   e[        U5      S	:X  d   e[        US
5        [        Xe-  5      S:X  d   eSn
Sn[        Xe-  5      U
:X  d   e[        Xe-  5      U:X  d   e[        Xe-  5      S:X  d   e[        Xe-  S5        [        U5      S:X  d   eSn
Sn[        U5      U
:X  d   e[        U5      U:X  d   e[        U5      S:X  d   e[        US5        [        U5      S:X  d   eSn
Sn[        U5      U
:X  d   e[        U5      U:X  d   e[        U5      S:X  d   e[        US5        Sn
Sn[        U	5      S:X  d   e[        U	5      U
:X  d   e[        U	5      U:X  d   e[        U	5      S:X  d   e[        U	S5        g )Nrn   rU   r   rM   )rV   r   ro   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?   )rp   rq   rc   rr   rs   qg1g2g3g4rQ   rR   s               r>   	test_gater|      st   #JA!A6A6"#DaAq!A	aB	vuQx	 B	!QB	tT	Br7f":!!!2;("""9   r%&rt9&&&  
 "$<9$$$24=I%%%;>>>>rtklr7o%%%  
 ":"""2;)###96666rCDr7k!!!  
 ":"""2;)###9,,,,r,-  
 r7   ":"""2;)###9   rtur@   c                 F   [        5       n [        S5      n[        5       n[        [	        S[
        5      5      n[        U 5      S:X  d   e[        U 5      S:X  d   e[        U 5      S:X  d   e[        U 5      S:X  d   e[        U S5        [        U5      S:X  d   eSnSn[        U5      U:X  d   e[        U5      U:X  d   e[        U5      S:X  d   e[        US	5        [        U5      S
:X  d   e[        U5      S
:X  d   e[        U5      S
:X  d   e[        U5      S:X  d   e[        US5        [        U5      S:X  d   eSnSn[        U5      U:X  d   e[        U5      U:X  d   e[        U5      S:X  d   e[        US5        [        X-   5      S:X  d   eSnSn[        X-   5      U:X  d   e[        X-   5      U:X  d   e[        X-   5      (       d   e[        X-   S5        [        X-  5      S:X  d   eSnSn[        X-  5      U:X  d   e[        X-  5      U:X  d   e[        X-  5      (       d   e[        X-  S5        [        U S-  5      S:X  d   eSnSn[        U S-  5      U:X  d   e[        U S-  5      U:X  d   e[        U S-  5      S:X  d   e[        U S-  S5        g )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rw<8###  
 "'?i'''27y(((>>>rwPQru:!!!  
 "%=I%%%25>Y&&&<<<ruKMr1u:  
 "a%=I%%%2q5>Y&&&Q<7777r1uBCr@   c                 R   [        S5      n [        [        5       [        5       5      n[        [	        5       [        5       5      n[        [        SS5      [        SS5      5      n[        [        SSS5      [        SSS5      5      n[        [        U S-  5      [        U S-  5      5      n[        [        U 5      [        U S-  5      5      n[        [        U S-  5      [        U 5      5      n[        U5      S:X  d   e[        U5      S:X  d   e[        U5      S:X  d   e[        U5      S:X  d   e[        US5        [        U5      S	:X  d   e[        U5      S	:X  d   e[        U5      S
:X  d   e[        U5      S:X  d   e[        US5        [        U5      S:X  d   e[        U5      S:X  d   e[        U5      S:X  d   e[        U5      S:X  d   e[        US5        [        U5      S:X  d   e[        U5      S:X  d   e[        U5      S:X  d   e[        U5      S:X  d   e[        US5        [        U5      S:X  d   eSnSn	[        U5      U:X  d   e[        U5      U	:X  d   e[        U5      S:X  d   e[        US5        [        U5      S:X  d   eSnSn	[        U5      U:X  d   e[        U5      U	:X  d   e[        U5      S:X  d   e[        US5        [        U5      S:X  d   eS nS!n	[        U5      U:X  d   e[        U5      U	:X  d   e[        U5      S":X  d   e[        US#5        g )$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                 Z   [        S5      n [        S[        S5      [        R                  5      nU R	                  5       n[        S5      n[        S5      n[        [        U" U5      U5      U" U5      5      n[        [        5       [        5       5      n[        U 5      S:X  d   e[        U 5      S:X  d   e[        U 5      S:X  d   e[        U 5      S:X  d   e[!        U S5        [        U5      S:X  d   eSnSn[        U5      U:X  d   e[        U5      U:X  d   e[        U5      S	:X  d   e[!        US
5        [        U5      S:X  d   eSnSn[        U5      U:X  d   e[        U5      U:X  d   e[        U5      S:X  d   e[!        US5        [        U5      S:X  d   e[        U5      S:X  d   e[        U5      S:X  d   e[        U5      S:X  d   e[!        US5        [        U5      S:X  d   e[        U5      S:X  d   e[        U5      S:X  d   e[        U5      S:X  d   e[!        US5        g )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?   )	rp   rq   r   r   rj   rr   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                     [        S5      n [        U 5      S:X  d   e[        U 5      S:X  d   e[        U 5      S:X  d   e[	        U 5      S:X  d   e[        U S5        g )Nrw   zQExpr(Symbol('q')))r   rN   r7   rI   r8   r?   )rw   s    r>   
test_qexprr   A  s\    c
Aq6S==!91:8tq
r@   c                 p   [        S5      n [        S5      n[        U 5      S:X  d   e[        U 5      S:X  d   e[	        U 5      S:X  d   e[        U 5      S:X  d   e[        U S5        [        U5      S:X  d   e[        U5      S:X  d   e[	        U5      S:X  d   e[        U5      S	:X  d   e[        US
5        g )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                 	   [        S5      n [        SS5      n[        SS5      n[        SSS5      n[	        SSS5      n[        SSS5      n[	        SSS5      n[        SSS5      n[        SSSSS	S
5      n[        SSSSSS5      n	[        U 5      S:X  d   eSn
Sn[        U 5      U
:X  d   e[        U 5      U:X  d   e[        U 5      S:X  d   e[        U S5        [        [        5      S:X  d   eSn
Sn[        [        5      U
:X  d   e[        [        5      U:X  d   e[        [        5      S:X  d   e[        [        S5        [        [        5      S:X  d   eSn
Sn[        [        5      U
:X  d   e[        [        5      U:X  d   e[        [        5      S:X  d   e[        [        S5        [        U5      S:X  d   e[        U5      S:X  d   e[        U5      S:X  d   e[        U5      S:X  d   e[        US5        [        U5      S:X  d   e[        U5      S:X  d   e[        U5      S:X  d   e[        U5      S:X  d   e[        US5        [        U5      S:X  d   e[        U5      S:X  d   e[        U5      S :X  d   e[        U5      S!:X  d   e[        US"5        [        U5      S#:X  d   e[        U5      S#:X  d   e[        U5      S$:X  d   e[        U5      S%:X  d   e[        US&5        [        U5      S':X  d   e[        U5      S(:X  d   e[        U5      S):X  d   e[        U5      S*:X  d   e[        US+5        [        U5      S,:X  d   e[        U5      S-:X  d   e[        U5      S.:X  d   e[        U5      S/:X  d   e[        US05        [        U5      S1:X  d   e[        U5      S2:X  d   e[        U5      S3:X  d   e[        U5      S4:X  d   e[        US55        [        U5      S6:X  d   eS7n
S7n[        U5      U
:X  d   e[        U5      U:X  d   e[        U5      S8:X  d   e[        US95        [        U	5      S::X  d   eS;n
S;n[        U	5      U
:X  d   e[        U	5      U:X  d   e[        U	5      S<:X  d   e[        U	S=5        g )>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                 r   [        S5      n [        5       n[        5       n[        U S-  5      n[        U S-  5      n[        5       n[	        5       n[        U5      S:X  d   e[        U5      S:X  d   e[        U5      S:X  d   e[        U5      S:X  d   e[        US5        [        U5      S:X  d   e[        U5      S:X  d   e[        U5      S:X  d   e[        U5      S	:X  d   e[        US
5        [        U5      S:X  d   eSnSn[        U5      U:X  d   e[        U5      U:X  d   e[        U5      S:X  d   e[        US5        [        U5      S:X  d   eSnSn[        U5      U:X  d   e[        U5      U:X  d   e[        U5      S:X  d   e[        US5        [        U5      S:X  d   e[        U5      S:X  d   e[        U5      S:X  d   e[        U5      S:X  d   e[        US5        [        U5      S:X  d   e[        U5      S:X  d   e[        U5      S:X  d   e[        U5      S:X  d   e[        US5        g )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                     [        [        SS5      [        SS5      5      n [        U 5      S:X  d   e[        U 5      S:X  d   e[	        U 5      S:X  d   e[        U 5      S:X  d   e[        U S5        g )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   [        S5      n [        S5      n[        [        [	        S5      [	        S5      -   [        [        [        U " U5      U5      U " U5      5      S5      5      [        [        S-  [	        S5      [	        S5      -   5      -  5      [        SS5      [        SS5      -   -  [        SS5      [        SS	5      -   -  n[        [        S-  [	        S5      [	        S5      -   5      [        [        [	        S
5      [	        S5      -  5      [	        S5      R                  5       S-  5      -  [        [        [        [        5      5      -  n[        SSSSSS5      [        [        [	        S5      [        [	        S5      5      -   [	        S
5      [	        S5      -   5      [        [        -
  5      -  [        [!        [        [        SS5      5      [        SS5      5      5      -  [        [#        SSS5      [#        SSS5      -   [#        SS	S5      5      -  n[%        S5      [%        S5      -  ['        5       S-  -   [)        [+        S[,        5      5      [/        5       -   -  n[1        U5      S:X  d   eSnSn[3        U5      U:X  d   e[5        U5      U:X  d   e[7        U5      S:X  d   e[9        US5        [1        U5      S:X  d   eSnSn[3        U5      U:X  d   e[5        U5      U:X  d   e[7        U5      S:X  d   e[9        US5        [1        U5      S:X  d   eSnSn[3        U5      U:X  d   e[5        U5      U:X  d   e[7        U5      S:X  d   e[9        US5        [1        U5      S :X  d   eS!nS"n[3        U5      U:X  d   e[5        U5      U:X  d   e[7        U5      S#:X  d   e[9        US$5        g )%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                 ^    [        S5      n [        U 5      S:X  d   e[        U 5      S:X  d   eg )Nrp   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   rl   ru   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7(  Mv`ZDz]O@7Bt @bFA6HXTQn'r@   