Ë
    7^(h|v  ã                  ó   — 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     úg/var/www/skyplay_api_hub/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   € ä�4 U°eÔ<Ð<r@   c                ó   — t        | dd¬«      S )zUnicode pretty-printingTFrB   rE   rG   s    r>   ÚuprettyrI   F   s   € ä�4 T°UÔ;Ð;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 ™T 1Ó%€GÜˆr‹7�gÒÐÐÜ�"‹:˜Ò Ð Ð Ü�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  € Ü	ˆAˆq�!�Q˜˜1Ó	€BÜ˜˜1˜a  A qÓ)€HÜ˜˜1˜a  A qÓ)€HÜ˜˜1˜a  A q¨!¨Q°Ó2€HÜˆr‹7Ð,Ò,Ð,Ð,ðð ðð ô �"‹:˜Ò"Ð"Ð"Ü�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Ü�1�aÓ€AÜ˜˜1™˜aÓ €FÜˆq‹6�WÒÐÐÜ�!‹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   € ÜŒt‹9˜ÒÐÐÜ”$‹<˜6Ò!Ð!Ð!Ü”4‹=˜EÒ!Ð!Ð!Ü”‹;˜(Ò"Ð"Ð"Ü„tˆXÕr@   c                 óÔ   — t        d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Ú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Ü�!‹9€DÜˆt‹9˜Ò#Ð#Ð#ðð ðð ô
 �$‹<˜9Ò$Ð$Ð$Ü�4‹=˜IÒ%Ð%Ð%Ü�‹;˜.Ò(Ð(Ð(Ü€tÐ5Õ6r@   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_failingru   ò   sI   € ä˜Ó#�J€A€qˆ!ˆQÜ�A�q�6˜A˜q˜6Ð"Ó#€DÜˆd�DÓ€AÜˆq‹6�VÒÐÑ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 )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|   ú   s†  € Ü˜Ó#�J€A€qˆ!ˆQÜ�A�q�6˜A˜q˜6Ð"Ó#€DÜˆa��A�q˜!Ó€AÜ	�a‹€BÜ	ˆv”u˜Q“xÓ	 €BÜ	�!�Q‹€BÜ	ˆt�TÓ	€BÜˆr‹7�fÒÐÐÜ�"‹:˜Ò!Ð!Ð!Ü�2‹;˜(Ò"Ð"Ð"Ü�‹9˜Ò Ð Ð Ü€rÐ%Ô&Üˆr�!‰t‹9˜Ò&Ð&Ð&ðð ðð ô
 �"�Q‘$‹<˜9Ò$Ð$Ð$Ü�2�a‘4‹=˜IÒ%Ð%Ð%Ü��A‘‹;Ð>Ò>Ð>Ð>Ü€rˆ!�tÐkÔlÜˆr‹7�oÒ%Ð%Ð%ðð ðð ô
 �"‹:˜Ò"Ð"Ð"Ü�2‹;˜)Ò#Ð#Ð#Ü�‹9Ð6Ò6Ð6Ð6Ü€rÐCÔDÜˆr‹7�kÒ!Ð!Ð!ðð ðð ô
 �"‹:˜Ò"Ð"Ð"Ü�2‹;˜)Ò#Ð#Ð#Ü�‹9Ð,Ò,Ð,Ð,Ü€rÐ,Ô-ðð ðð ô
 ˆr‹7ðòð ð ô �"‹:˜Ò"Ð"Ð"Ü�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Ü	ŒH�Qœ‹OÓ	€BÜˆr‹7�cŠ>Ðˆ>Ü�"‹:˜ÒÐÐÜ�2‹;˜#ÒÐÐÜ�‹9˜Ò&Ð&Ð&Ü€rÐÔÜˆr‹7�fÒÐÐðð ðð ô
 �"‹:˜Ò"Ð"Ð"Ü�2‹;˜)Ò#Ð#Ð#Ü�‹9Ð*Ò*Ð*Ð*Ü€rÐ%Ô&Üˆr‹7�cŠ>Ðˆ>Ü�"‹:˜ÒÐÐÜ�2‹;˜#ÒÐÐÜ�‹9˜Ò&Ð&Ð&Ü€rˆ=ÔÜˆr‹7Ð+Ò+Ð+Ð+ðð ðð ô
 �"‹:˜Ò"Ð"Ð"Ü�2‹;˜)Ò#Ð#Ð#Ü�‹9ÐOÒOÐOÐOÜ€rÐ6Ô7Üˆr�B‰w‹<˜8Ò#Ð#Ð#ðð ðð ô
 �"�r‘'‹?˜iÒ'Ð'Ð'Ü�2˜‘7Ó˜yÒ(Ð(Ð(Ü��b‘Œ>Ðˆ>Ü€rˆB�wÐPÔQÜˆr�"‰u‹:˜Ò!Ð!Ð!ðð ðð ô
 �"�R‘%‹=˜IÒ%Ð%Ð%Ü�2�b‘5‹>˜YÒ&Ð&Ð&Ü��B‘Œ<Ðˆ<Ü€rˆ"�uØKôMäˆr�1‰u‹:˜ÒÐÐðð ðð ô
 �"�a‘%‹=˜IÒ%Ð%Ð%Ü�2�q‘5‹>˜YÒ&Ð&Ð&Ü��Q‘‹<Ð7Ò7Ð7Ð7Ü€rˆ1�uÐ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 }zóInnerProduct(JzBraCoupled(Integer(1),Integer(1),Tuple(Integer(1), Integer(1)),Tuple(Tuple(Integer(1), Integer(2), Integer(1)))),JzKetCoupled(Integer(1),Integer(1),Tuple(Integer(1), Integer(1)),Tuple(Tuple(Integer(1), Integer(2), Integer(1)))))z	<x/2|x/2>z / | \ 
/ x|x \
\ -|- /
 \2|2/ u;    â•± â”‚ â•² 
â•± xâ”‚x â•²
â•² â”€â”‚â”€ â•±
 â•²2â”‚2â•± zB\left\langle \frac{x}{2} \right. {\left|\frac{x}{2}\right\rangle }zYInnerProduct(Bra(Mul(Rational(1, 2), Symbol('x'))),Ket(Mul(Rational(1, 2), Symbol('x'))))z<x|x/2>z / | \ 
/  |x \
\ x|- /
 \ |2/ u9    â•± â”‚ â•² 
â•±  â”‚x â•²
â•² xâ”‚â”€ â•±
 â•² â”‚2â•± z8\left\langle x \right. {\left|\frac{x}{2}\right\rangle }zDInnerProduct(Bra(Symbol('x')),Ket(Mul(Rational(1, 2), Symbol('x'))))z<x/2|x>z / | \ 
/ x|  \
\ -|x /
 \2| / u9    â•± â”‚ â•² 
â•± xâ”‚  â•²
â•² â”€â”‚x â•±
 â•²2â”‚ â•± z8\left\langle \frac{x}{2} \right. {\left|x\right\rangle }zDInnerProduct(Bra(Mul(Rational(1, 2), Symbol('x'))),Ket(Symbol('x'))))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Ü
”s“uœc›eÓ
$€CÜ
”z“|¤Z£\Ó
2€CÜ
”u˜Q “{¤E¨!¨Q£KÓ
0€CÜ
”| A q¨&Ó1´<ÀÀ1ÀfÓ3MÓ
N€CÜœC  !¡›H¤c¨!¨A©#£hÓ/€HÜœC ›F¤C¨¨!©£HÓ-€HÜœC  !¡›H¤c¨!£fÓ-€HÜˆs‹8�{Ò"Ð"Ð"Ü�#‹;˜+Ò%Ð%Ð%Ü�3‹<˜?Ò*Ð*Ð*ÜØóØGòHð Hð Hä€sÐAÔBÜˆs‹8�Ò&Ð&Ð&Ü�#‹;˜/Ò)Ð)Ð)Ü�3‹<Ð.Ò.Ð.Ð.Ü�‹:ØCòDð Dð Dä€sÐgÔhÜˆs‹8�{Ò"Ð"Ð"Ü�#‹;˜+Ò%Ð%Ð%Ü�3‹<Ð,Ò,Ð,Ð,Ü�‹:ÐNÒNÐNÐNÜ€sÐUÔVÜˆs‹8Ð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?   )	rp   rq   r“   r‘   rj   rr   ÚoprQ   rR   s	            r>   Útest_operatorr•     sG  € Ü�‹€AÜ�”f˜S“k¤1§6¡6Ó*€AØ
�%‰%‹'€CÜ�‹€AÜ�‹€AÜœZ©¨!«¨aÓ0±!°A³$Ó7€AÜ	”c“eœS›UÓ	#€BÜˆq‹6�SŠ=Ðˆ=Ü�!‹9˜ÒÐÐÜ�1‹:˜ÒÐÐÜ�‹8�sŠ?Ðˆ?Ü€qÐ
!Ô"Üˆs‹8�yÒ Ð Ð ðð ðð ô
 �#‹;˜)Ò#Ð#Ð#Ü�3‹<˜9Ò$Ð$Ð$Ü�‹:˜Ò"Ð"Ð"Ü€sÐ5Ô6Üˆq‹6ÐEÒEÐEÐEðð ðð ô �!‹9˜	Ò!Ð!Ð!Ü�1‹:˜Ò"Ð"Ð"Ü�‹8Ø_ò`ð `ð `ä€qð  Dô  EÜˆq‹6Ð(Ò(Ð(Ð(Ü�!‹9Ð+Ò+Ð+Ð+Ü�1‹:Ð,Ò,Ð,Ð,Ü�‹8Ð>Ò>Ð>Ð>Ü€qÐ
<Ô=Üˆr‹7�lÒ"Ð"Ð"Ü�"‹:˜Ò%Ð%Ð%Ü�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 )Nrw   zQExpr(Symbol('q')))r   rN   r7   rI   r8   r?   )rw   s    r>   Ú
test_qexprr—   A  s\   € Üˆc‹
€AÜˆq‹6�SŠ=Ðˆ=Ü�!‹9˜ÒÐÐÜ�1‹:˜ÒÐÐÜ�‹8�tÒÐÐÜ€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Üˆr‹7�hÒÐÐÜ�"‹:˜Ò!Ð!Ð!Ü�2‹;˜,Ò&Ð&Ð&Ü�‹9Ð5Ò5Ð5Ð5Ü€rÐ?Ô@Üˆr‹7�eÒÐÐÜ�"‹:˜ÒÐÐÜ�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 }z©JzKetCoupled(Integer(1),Integer(0),Tuple(Integer(1), Integer(2), Integer(3)),Tuple(Tuple(Integer(1), Integer(2), Integer(3)), Tuple(Integer(1), Integer(3), Integer(1))))z<1,0,j1=1,j2=2,j3=3,j(1,2)=3|z<1,0,j1=1,j2=2,j3=3,j1,2=3|u)   âŸ¨1,0,jâ‚�=1,jâ‚‚=2,jâ‚ƒ=3,jâ‚�,â‚‚=3â�˜z;{\left\langle 1,0,j_{1}=1,j_{2}=2,j_{3}=3,j_{1,2}=3\right|}z©JzBraCoupled(Integer(1),Integer(0),Tuple(Integer(1), Integer(2), Integer(3)),Tuple(Tuple(Integer(1), Integer(2), Integer(3)), Tuple(Integer(1), Integer(3), Integer(1))))zR(1,2,3)z	R (1,2,3)u   â„› (1,2,3)z\mathcal{R}\left(1,2,3\right)z*Rotation(Integer(1),Integer(2),Integer(3))zWignerD(1, 2, 3, 4, 5, 6)z# 1         
D   (4,5,6)
 2,3       zD^{1}_{2,3}\left(4,5,6\right)zOWignerD(Integer(1), Integer(2), Integer(3), Integer(4), Integer(5), Integer(6))zWignerD(1, 2, 3, 0, 4, 0)z 1     
d   (4)
 2,3   zd^{1}_{2,3}\left(4\right)zOWignerD(Integer(1), Integer(2), Integer(3), Integer(0), Integer(4), Integer(0)))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Ü˜˜1˜fÓ%€DÜ˜˜1˜fÓ%€DÜ˜A˜q )Ó,€HÜ˜A˜q )Ó,€HÜ
�1�a˜Ó
€CÜ�1�a˜˜A˜q !Ó$€DÜ�Q˜˜1˜a  AÓ&€FÜˆr‹7�dŠ?Ðˆ?ðð ðð ô
 �"‹:˜Ò"Ð"Ð"Ü�2‹;˜)Ò#Ð#Ð#Ü�‹9˜ÒÐÐÜ€rÐÔÜŒr‹7�dŠ?Ðˆ?ðð ðð ô
 ”"‹:˜Ò"Ð"Ð"Ü”2‹;˜)Ò#Ð#Ð#Ü”‹9˜ÒÐÐÜ„rÐÔÜŒr‹7�dŠ?Ðˆ?ðð ðð ô
 ”"‹:˜Ò"Ð"Ð"Ü”2‹;˜)Ò#Ð#Ð#Ü”‹9˜ÒÐÐÜ„rÐÔÜˆs‹8�wÒÐÐÜ�#‹;˜'Ò!Ð!Ð!Ü�3‹<˜;Ò&Ð&Ð&Ü�‹:Ð5Ò5Ð5Ð5Ü€sÐ*Ô+Üˆs‹8�wÒÐÐÜ�#‹;˜'Ò!Ð!Ð!Ü�3‹<˜;Ò&Ð&Ð&Ü�‹:Ð5Ò5Ð5Ð5Ü€sÐ*Ô+Üˆt‹9Ð)Ò)Ð)Ð)Ü�$‹<Ð,Ò,Ð,Ð,Ü�4‹=Ð5Ò5Ð5Ð5Ü�‹;ÐFÒFÐFÐFÜ€tð  Bô  CÜˆt‹9Ð)Ò)Ð)Ð)Ü�$‹<Ð,Ò,Ð,Ð,Ü�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ð  }ô  ~Üˆs‹8�zÒ!Ð!Ð!Ü�#‹;˜+Ò%Ð%Ð%Ü�3‹<˜=Ò(Ð(Ð(Ü�‹:Ð9Ò9Ð9Ð9Ü€sÐ8Ô9Üˆt‹9Ð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Ü�1�Q‘3‹x€HÜ�1�Q‘3‹x€HÜ‹<€DÜ‹<€DÜˆs‹8�wÒÐÐÜ�#‹;˜'Ò!Ð!Ð!Ü�3‹<˜:Ò%Ð%Ð%Ü�‹:Ð6Ò6Ð6Ð6Ü€sÐ Ô!Üˆs‹8�wÒÐÐÜ�#‹;˜'Ò!Ð!Ð!Ü�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Üˆt‹9˜	Ò!Ð!Ð!Ü�$‹<˜9Ò$Ð$Ð$Ü�4‹=˜LÒ(Ð(Ð(Ü�‹;Ð9Ò9Ð9Ð9Ü€tÐ4Ô5Üˆt‹9˜	Ò!Ð!Ð!Ü�$‹<˜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   € Ü	”u˜Q “{¤E¨!¨Q£KÓ	0€BÜˆr‹7�mÒ#Ð#Ð#Ü�"‹:˜Ò'Ð'Ð'Ü�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¸«}Ñ<¼cÔBVÔWaÑbcÐdeÓbfÐhiÓWjÑlmÐnoÓlpÓBqÐstÓ>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˜‘Eœ8 C›=¬8°C«=Ñ8Ó	9¼.ÌÔPXÐY\ÓP]Ô^fÐgjÓ^kÑPkÓIlÔnvÐwzÓn{×nÑnó  oBð  DEñ  oEó  ;Fñ  
Fô  GMô  NXô  Y[ô  ]_ó  N`ó  Gañ  
a€BÜ	�!�Q˜˜1˜a Ó	#¤M´*¼XÀc»]ÌVÔT\Ð]`ÓTaÓMbÑ=bÔdlÐmpÓdqÔt|ð  ~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›/Ñ
)¬I«K¸©NÑ
:¼RÄØ	Œ2óAó >Ü“.ñ>!ñ 
"€Bäˆr‹7ð  kò  kð  kð  kðð ðð ô �"‹:˜Ò"Ð"Ð"Ü�2‹;˜)Ò#Ð#Ð#Ü�‹9ð 	eòeð eð eä€rð  nô  oÜˆr‹7ÐKÒKÐKÐKðð ðð ô �"‹:˜Ò"Ð"Ð"Ü�2‹;˜)Ò#Ð#Ð#Ü�‹9Øhòið ið iä€rð  _ô  `Üˆr‹7ð 	FòFð Fð Fðð ðð ô �"‹:˜Ò"Ð"Ð"Ü�2‹;˜)Ò#Ð#Ð#Ü�‹9ð 	aòað að aä€rð  bô  cÜˆr‹7Ð@Ò@Ð@Ð@ðð ðð ô
 �"‹:˜Ò"Ð"Ð"Ü�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 )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Ù Ð2°CÔ 8Ù Ð0°#Ô 6Ù Ð0°#Ô 6Ù Ð/°Ô 5Ù Ð4°cÔ :ò%ò=ò
<ò
`ò:PIòf[ò6ò7ð( ñó ðòMvò`ZDòz]Oò@7Bòt òò@bòFA6òHXòTQón'r@   