
    gVv                    >   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= Zjd>S )?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                f    t          |           |k    sJ t          |t                    | k    sJ dS )zD
    sT := sreprTest
    from sympy/printing/tests/test_repr.py
    N)r6   evalr9   )exprstrings     e/var/www/html/ai-engine/env/lib/python3.11/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           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   strr7   rI   r8   r?   )rK   rL   acac_tall	ascii_str	ucode_strs         r>   test_anticommutatorrS   K   s4   AA	1		BQT1%%Gr77g"::    2;;'!!!!99-----rHIIIw<<:%%%%   '??i''''7y((((>>66666w^_____r@   c                    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           d S )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   s   	Aq!Q1		B1aAq))H1aAq))H1aAq!Q22Hr77,,,,,   "::""""2;;)####99+++++q>>BBBBBrWXXXx==88888   (y((((8	))))??MN N N Nxcdddx==88888   (y((((8	))))??OP P P Pxcdddx==AAAAA   (y((((8	))))??\] ] ] ]x  H  I  I  I  I  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           d S )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      s2   AA1aA1a  Fq66W!991::    88*****q
CDDDv;;*$$$$  
 &>>Y&&&&6??i''''==33333vYZZZZ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           d S )Nr   u   ℏz\hbarzHBar())rN   r   r7   rI   r8   r?    r@   r>   test_constantsrh      st    t99$<<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           d S )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!99Dt99####  
 $<<9$$$$4==I%%%%;;.((((t"#####r@   c                     t          d          \  } }}}t          | |g||gg          }t          d|          }t          |          dk    sJ d S )Na,b,c,dr   zU(0))r1   r2   r   rN   )abrc   duMatgs         r>   test_gate_failingrt      s]    ##JAq!QAq6Aq6"##DdDAq66V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           d S )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	vuQxx	 	 B	!QB	tT		Br77f"::!!!!2;;(""""99    r%&&&r!t99&&&&  
 "Q$<<9$$$$2a4==I%%%%A;;>>>>>r!tklllr77o%%%%  
 "::""""2;;)####9966666rCDDDr77k!!!!  
 "::""""2;;)####99,,,,,r,---  
 r77    "::""""2;;)####99    rtuuuu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           d S )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OO		Br77c>>>>"::2;;#99&&&&rr77f  
 "::""""2;;)####99*****r%&&&r77c>>>>"::2;;#99&&&&r=r77+++++  
 "::""""2;;)####99OOOOOr6777rBw<<8####  
 "r'??i''''27y((((b>>rBwPQQQr"u::!!!!  
 "R%==I%%%%2b5>>Y&&&&B<<r"uKM M Mr1u::  
 "a%==I%%%%2q5>>Y&&&&Q<<77777r1uBCCCC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#           d S )$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
suucee
$
$C
z||Z\\
2
2C
uQ{{E!QKK
0
0C
|Aq&11<1f3M3M
N
NCC!HHc!A#hh//HCFFC!HH--HC!HHc!ff--Hs88{""""#;;+%%%%3<<?**** GH H H HsABBBs88&&&&#;;/))))3<<.....::CD D D Dsghhhs88{""""#;;+%%%%3<<,,,,,::NNNNNsUVVVs8866666#;;999993<<HHHHH::]^ ^ ^ ^s  B  C  C  Cx==K''''   (y((((8	))))??MN N N Nxlmmmx==I%%%%   (y((((8	))))??CD D D DxMO O Ox==I%%%%   (y((((8	))))??CD D D DxMO O O O Or@   c                    t          d          } t          dt          d          t          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           d S )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     s   AfSkk16**A
%%''CAAZ!a00!!A$$77A	ceeSUU	#	#Bq66S====!991::88s????q
!"""s88y      
 #;;)####3<<9$$$$::""""s5666q66EEEEE   !99	!!!!1::""""88_` ` ` `q  D  E  E  Eq66(((((!99+++++1::,,,,,88>>>>>q
<===r77l"""""::%%%%2;;,,,,,99OOOOOr@AAAA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           d S )Nrv   zQExpr(Symbol('q')))r   rN   r7   rI   r8   r?   )rv   s    r>   
test_qexprr   A  s|    c

Aq66S====!991::88t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
           d S )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r77h"::!!!!2;;,&&&&9955555r?@@@r77e"::2;;)####9922222r=r@   c                 J   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=           d S )>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r77d????  
 "::""""2;;)####99rr77d????  
 "::""""2;;)####99rr77d????  
 "::""""2;;)####99rs88w#;;'!!!!3<<;&&&&::55555s*+++s88w#;;'!!!!3<<;&&&&::55555s*+++t99)))))$<<,,,,,4==55555;;FFFFFt  B  C  C  Ct99)))))$<<,,,,,4==55555;;FFFFFt  B  C  C  Cx==;;;;; (<<<<<8 KKKKK??FG G G Gx  }  ~  ~  ~x==;;;;;(<<<<<8 KKKKK??FG G G Gx  }  ~  ~  ~s88z!!!!#;;+%%%%3<<=((((::99999s8999t9933333   $<<9$$$$4==I%%%%;;:::::t^___v;;55555   &>>Y&&&&6??i''''==88888v`aaaaar@   c                    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           d S )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     s   A
%%C
%%C1Q3xxH1Q3xxH<<D<<Ds88w#;;'!!!!3<<:%%%%::66666s !!!s88w#;;'!!!!3<<:%%%%::66666s !!!x==G####   (y((((8	))))??BBBBBx8999x==G####   (y((((8	))))??BBBBBx8999t99	!!!!$<<9$$$$4==L((((;;99999t4555t99	!!!!$<<9$$$$4==L((((;;99999t45555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           d S )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      s    	uQ{{E!QKK	0	0Br77m####"::''''2;;2222299IJ J J JrVWWWWWr@   c                 	   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                                          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$           d S )%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}}<cBVWabcbcdebfbfhiWjWjlmlmnolplpBqBqst>u>uvv  xE  FH  JK  FK  MU  VY  MZ  MZ  ]e  fi  ]j  ]j  Mj  xk  xk  k  
l  
l  ns  tu  wx  ny  ny  |A  BC  EF  |G  |G  nG  
H  JO  PQ  ST  JU  JU  X]  ^_  ac  Xd  Xd  Jd  
eB	BE8C==8C==8	9	9.PXY\P]P]^fgj^k^kPkIlIlnvwzn{n{nn  oB  oB  DE  oE  ;F  ;F  
F  GM  NX  Y[  ]_  N`  N`  Ga  Ga  
aB	!Q1a	#	#M*Xc]]VT\]`TaTaMbMb=bdlmpdqdqt|  ~A  uB  uB  eB  3C  3C  EG  JL  EL  %M  %M  
M  NT  Ua  bh  in  op  rs  it  it  bu  bu  w|  }~  @A  wB  wB  UC  UC  ND  ND  
D  ER  S_  `a  cd  fl  Sm  Sm  p|  }~  @A  CI  pJ  pJ  SJ  LX  YZ  \^  `f  Lg  Lg  Eh  Eh  
hB
q//,q//
)IKKN
:R	2A A > >..>! 
"Br77  k  k  k  k  k   "::""""2;;)####99 	ee e e er  n  o  o  or77KKKKK   "::""""2;;)####99hi i i ir  _  `  `  `r77 	FF F F F   "::""""2;;)####99 	aa a a ar  b  c  c  cr77@@@@@  
 "::""""2;;)####99 	GG G G Gr  P  Q  Q  Q  Q  Qr@   c                 x    t          d          } t          |           dk    sJ t          |           dk    sJ d S )Nro   u    †
a za^{\dagger})r*   r7   r8   )ads    r>   _test_sho1dr     sB    	3B"::*****99&&&&&&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 E E E E E E E E E E 7 7 7 7 7 7 0 0 0 0 0 0 / / / / / / R R R R R R R R R R R R R R S S S S S S S S S S S S ; ; ; ; ; ; W W W W W W W W W W - - - - - - 7 7 7 7 7 7 7 7 j j j j j j j j j j j j j j j j j j j j H H H H H H H H H H H H = = = = = = 1 1 1 1 1 1 6 6 6 6 6 6 6 6 ! ! ! ! ! !             " " " " " " / / / / / / / / ' ' ' ' ' ' $ $ $ $ $ $ & & & & & & , + + + + +             3 3 3 3 3 3 & & & & & &       C       *C 0 0 0 -s 3 3 3 / 5 5 5 2C 8 8 8 0# 6 6 6 0# 6 6 6 / 5 5 5 4c : : :% % %= = =
< < <
` ` `:PI PI PIf[ [ [6  $ $ $(   Mv Mv Mv`ZD ZD ZDz]O ]O ]O@7B 7B 7Bt       @b @b @bFA6 A6 A6HX X XTQ TQ TQn' ' ' ' 'r@   