
    sh&                         S SK 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  S SKJr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JrJrJrJrJr  S S
KJrJ r   S r!S r"S r#S r$S r%S r&S r'S r(S r)g)    )IpiRational)S)symbols)exp)sqrt)cossin)Ynm)Matrix)
clebsch_gordan	wigner_9j	wigner_6jgaunt
real_gauntracahdot_rot_grad_Ynm	wigner_3jwigner_d_smallwigner_d)raisesskipc            
         [        [        SS5      [        R                  S[        SS5      [        R                  S5      S:X  d   e[        [        SS5      [        R                  S[        SS5      [        SS5      S5      [	        S5      S-  :X  d   e[        [        SS5      [        R                  S[        SS5      [        R                  S5      [	        S5      * S-  :X  d   eg )N         r   )r   r   r   Halfr	        {/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/sympy/physics/tests/test_clebsch_gordan.pytest_clebsch_gordan_docsr#      s    (1a.!&&!Xa^QVVQOSTTTT(1a.!&&!Xa^XbRS_VWX\`ab\cde\eeee(1a.!&&!Xb!_affaPUYZ[U\T\]^T^^^^r!   c            
      \   [         R                  n [         R                  n[        SS5      n[        SS5      n[        SS5      n[        SS5      n[	        XSXS5      S:X  d   e[	        XSXS5      S:X  d   e[	        XSX3S5      S:X  d   e[	        XSXS5      [        S5      S-  :X  d   e[	        XSXS5      [        S5      S-  :X  d   e[	        XSX1S5      [        S5      S-  :X  d   e[	        XSX1S5      [        S5      * S-  :X  d   e[	        XUSX5      S:X  d   e[	        XUSX15      S[        S5      -  :X  d   e[	        XUSX15      [        S5      [        S5      -  :X  d   e[	        XUSX5      S[        S5      -  :X  d   e[	        XUSX5      [        S5      [        S5      -  :X  d   e[	        X [        S5      SS[        S5      5      S:X  d   e[	        X [        S5      SSS5      S[        S5      -  :X  d   e[	        X [        S5      SSS5      S[        S5      -  :X  d   e[	        X SSSS5      S[        S5      -  :X  d   e[	        X SSSS5      S[        S5      -  :X  d   e[	        X"[        S5      X"[        S5      5      S:X  d   e[	        X"[        S5      X![        S5      5      S[        S5      -  :X  d   e[	        X"[        S5      X![        S5      5      S[        S5      -  :X  d   e[	        [        S5      [        S5      [        S5      [        S5      [        S5      [        S5      5      S:X  d   e[	        [        S5      [        S5      [        S5      [        S5      S[        S5      5      S[        S5      -  :X  d   e[	        [        S5      [        S5      [        S5      SS[        S5      5      S:X  d   e[	        XPXESU5      S:X  d   e[	        XPXUSU5      [        S5      [        S5      -  :X  d   e[	        XPX!SU5      S[        S	5      -  :X  d   eg )
Nr   r   r         r   r         )r   Oner   r   r   r	   )hklinps         r"   test_clebsch_gordanr0      s    	
A	AAAQAAAAA!1+q000!1+q000!1,111!1+tAwqy888!1+tAwqy888!1+tAwqy888!1+Qxz999!1a+q000!1a+qay888!1a+tAwtAw>>>!1a+r$q'z999!1a+tAwtAw>>>!!aAaD1Q666!!aA.!DG);;;!!aA.!DG);;;!1a+qay888!1a+r$q'z999!!aAaD1Q666!!aAaD1QtAwY>>>!!aAaD1QtAwY>>>!A$!adAaD!A$!=BBB!A$!adAaD!QqT:aQiGGG!A$!adAq!A$71<<<!a+q000!a+tAwtAw>>>!a+qbz999r!   c                  x    SS K n [        W R	                  S5      R                  U R                  5      6 S:X  d   e[        SU R                  S5      SSSS5      [        S5      S	-  :X  d   e[        SS
S
SS
S5      [        S5      S-  :X  d   e[        [        S 5        g ! [         a    [        S5         Nf = f)Nr   numpy not installed   r   r   g      @g      @i     g      ?g      c                  "    [        SSSSSS5      $ )Ng @r3   r'   r   )r   r    r!   r"   <lambda>+test_clebsch_gordan_numpy.<locals>.<lambda>B   s    yaAq!<r!   )numpyImportErrorr   r   zerosastypeint64r   float64r	   r   
ValueError)nps    r"   test_clebsch_gordan_numpyr@   :   s    $ 288A;--bhh78A===Q

3aA6$s)C-GGGQS!S$/4719<<<
:<=  $"#$s   B! !B98B9c                      SS K n S nU" [        SSSSSSSSSSS9
[	        SS5      5      (       d   e[        SSS	SSS	SSS	5	      S
[        S5      -  S[        S5      -  -  SS[        S5      -  [        S5      -  -  -
  :X  d   e[        SSSSSS5      [	        SS5      :X  d   eU" [        SSSSSSSS9[	        SS5      5      (       d   e[        SSSSW R                  S5      S5      [	        SS5      :X  d   e[        SU R                  S5      SSSS5      [	        SS5      :X  d   e[        R                  n[        SSSSX"SX"5	      U:X  d   e[        SSSSU-  SU-  SSU-  SU-  S5	      [        [	        SS5      5      * :X  d   e[        SSSSU-  SSU-  SU-  S	SU-  5	      [        [	        SS 5      5      * :X  d   e[        SSU-  SU-  S	SSSSU-  SU-  5	      [        [	        S!S"5      5      * :X  d   e[        SSS#U R                  S#5      SSSSS5	      S:X  d   e[        SS$SSS	SS	SS5	      S%[        S5      -  S&-  :X  d   eg ! [         a    [        S5         GN_f = f)'Nr   r2   c                 @    X-
  R                  S5      [        S5      :  $ N@   z1e-64r.   r   abs     r"   tntest_wigner.<locals>.tnJ       yy}qz))r!   r   rD   prec   r   r   i  F   i i   im  i  r&   4      iEi g      ?r3   g      @r      r'   r%   	   ii  iHDi  iAi  l   0 Y g      @g       @i+  )r8   r9   r   r   r   r	   r   r=   float32r   r   )r?   rI   halfs      r"   test_wignerrX   E   s   $*i1aAq!Q;Xa_MMMMQ1aAq!Q/4
9 4DI4!$d48mDI&=!>4? ? ? ?Q1aA&(1b/999i1aAqr2HVV4LMMMMQ1c2::c?A6(1a.HHHS"**Q-aA6(2r:JJJJ66DQ1aQ;tCCCaA$hD!$hD!- Xc9-../ 0 / aA$h1t8$h1t8- XdI.//0 1 0 aT1t8AT1t8- XdJ/001 2 1 aCjjoq!A    c3AA $r({5 ! " !=  $"#$s   I I&%I&c                     S n [        SSSSSS5      SS[        [        5      -  -  :X  d   e[        [        SSSSSS5      R                  S   [
        5      (       d   e[        [        SSSSSS5      R                  S   [
        5      (       d   eU " [        SSSSS	S
SS9[        SS5      [        S5      -  [        [        5      -  5      (       d   eS nSnS	nSn[        US-   5       H  n[        US-   5       H  n[        US-   5       H  n[        U* US-   5       H  n[        U* US-   5       H}  n	[        U* US-   5       Hf  n
XVXxX4n[        U6 nU" U6 n[        X-
  5      U:  d   eX-   U
-   S:w  a  [        U5      U:  d   eXV-   U-   S-  (       d  MU  [        U5      U:  a  Mf   e   M     M     M     M     M     [        SSSSSS5      [        R                  L d   eg )Nc                 @    X-
  R                  S5      [        S5      :  $ rC   rE   rF   s     r"   rI   test_gaunt.<locals>.tnm   rK   r!   r   r   r   r   
      rT   r   irD   rL   iiO  i  c           	          [        SU -  S-   SU-  S-   -  SU-  S-   -  S[        -  -  5      [        XUSSS5      -  [        XX#XE5      -  $ )Nr   r   r'   r   )r	   r   r   )l1l2l3m1m2m3s         r"   	gaunt_reftest_gaunt.<locals>.gaunt_refu   s`    !b&1*R!,B
;q2vFGbb!Q*+bbb-.	
r!   g|=   )
r   r	   r   
isinstanceargsr   rangeabsr   Zero)rI   re   	thresholdl_maxl3_maxr_   r`   ra   rb   rc   rd   rj   gg0s                 r"   
test_gauntrs   l   s   *Aq!Q#r1T"X:666eAq!RA.33A6AAAAeAq!QA.33A6AAAAe
BAq#B(*23*>$t*)LTRTX)UW W W W
 IEFEAI	"BFQJ'R!V,B#RCa0"'R!V"4B#%22#9D!&A!*D!1B#&qv;#::#:!w|q0'*1v	'9 9'9 ""11'*1v	'9 9'9 #5 1 - ( #  Aq!Q#qvv---r!   c            
        ^ [        S5       HA  n [        U * U S-   5       H*  n[        SX SX5      SS[        [        5      -  -  :X  a  M*   e   MC     [        SSSSSS5      [        S5      S[        [        5      -  -  :X  d   e[        SSSSSS5      [        S5      * S[        [        5      -  -  :X  d   e[        SSSSSS5      [        S5      S[        [        5      -  -  :X  d   e[        SSSSSS5      [        S5      * S[        [        5      -  -  :X  d   e[        SSSSSS5      [        S5      * S[        [        5      -  -  :X  d   e[        SSSS	SS	5      [        S
5      S[        [        5      -  -  :X  d   e[        SSSSSS5      [        S
5      S[        [        5      -  -  :X  d   e[        SSSSSS5      [        S
5      S[        [        5      -  -  :X  d   e[        SSSS	SS5      [        S
5      S[        [        5      -  -  :X  d   e[        SSSS	S	S5      [        S
5      * S[        [        5      -  -  :X  d   e[        SSSSSS5      [        S5      S[        [        5      -  -  :X  d   e[        SSSSSS5      [        S
5      S[        [        5      -  -  :X  d   e[        SSSS	S	S5      [        S
5      * S[        [        5      -  -  :X  d   e[        SSSSSS5      [        R
                  L d   e[        SSSSSS5      [        R
                  L d   e[        SS	SS	S	S5      [        R
                  L d   e[        SSSSSS5      [        R
                  L d   e[        SS	SS	S	S	5      [        R
                  L d   e[        SSS9nS/S-  m[        [        T5      5       H!  nUTU'   [        [        U4S j5        STU'   M#     g )Nr   r   r   r   r&   r\   r%   rh   r   r(   rS   xT)integerr3   c                     > [        T 6 $ )N)r   )vs   r"   r6    test_realgaunt.<locals>.<lambda>   s	    :q>r!   )
rk   r   r	   r   r   rm   r   lenr   r>   )r,   mru   r-   rx   s       @r"   test_realgauntr|      s   1Xr1Q3Aaq!/1aRj>AAA    aAq!Q'47Ad2hJ+????aAq!Q'DG8RR[+AAAAaAq!Q'47Ad2hJ+????aAq!Q'DG8QtBxZ+@@@@aAr2q)d1gXqbz-BBBBaAr1b)T"Xr$r({-CCCCaAq!Q'48RR[+AAAAaAq!Q'48RR[+AAAAaAr1b)T"Xr$r({-CCCCaAr2q)d2hY48-DDDDaAq!Q'47BtBxK+@@@@aAq!Q'48RR[+AAAAaAr2q)d2hY48-DDDDb"b"b!,666b!Q1a(AFF222b"b"b!,666b"b"b"-777b"b"b"-777T"A	
AA3q6]!z12! r!   c                  b   [        SSSSSS5      [        SS5      :X  d   e[        SSSSSS5      [        SS5      :X  d   e[        SSSS	SSS
S9R                  (       d   e[        SSSSSS5      S[        S5      -  S-  :X  d   e[	        [        SSSSSSS
S9S-
  5      [        S5      :  d   eg )Nr   r   rS   r   rO   r%   rR   r   r'   rL   g      @g      @g      #@g      @rT   i1iV  i g6
rz1e-4)r   r   is_Floatr	   rl   r   r    r!   r"   
test_racahr      s    1Qq1"R0001Qq1"R0001Qq11%....SS1%d3i)????uSSQqq1X>?!F)KKKr!   c            	         [        S5      u  p[        SSSSSS5      [        S5      [        SSSS5      -  S[        [        5      -  -  :w  d   e[        SSSSSS5      R                  5       [        S5      [        SSSS5      -  S[        [        5      -  -  :X  d   e[        SSSSSS5      S:w  d   e[        SSSSSS5      R                  5       S:X  d   e[        SSSSX5      R                  5       S	[        S
5      -  [        SSX5      -  S[        [        5      -  -  :X  d   e[        SSSSX5      R                  5       [        S5      [        SSX5      -  [        [        5      -  :X  d   e[        SSSSX5      R                  5       S[        S5      -  [        SSX5      -  S[        [        5      -  -  :X  d   e[        SSSSX5      R                  5       R                  5       [        S5      * [        SSX5      -  S[        [        5      -  -  S[        S5      -  [        SSX5      -  S[        [        5      -  -  -   :X  d   eg )N	theta phir   r      r   r\   r&   r   r(   i  r3   r4   r'   7      rO   -      )r   r   r	   r   r   doitexpand)thetaphis     r"   test_dot_rota_grad_SHr      sR   %JEAq!Q1-RQ1a "T"X+./ / /Aq!Q1-224RQ1a "T"X+./ / /Aq!Q1-	
 
 
Aq!Q1-224	
 
 
Aq!Q388:
4:c!Q++Sb\:; ; ;Aq!Q388:QAq%%%d2h./ / /Aq!Q388:	$r(
3q!U(("T"X+67 7 7Aq!Q388:AAC	b	#aE''DH5
49SAu**CRL9	:: : :r!   c                  <   [        S5      S-  n [        U S5      [        SS/SS//5      :X  d   e[        U [        S-  5      [        SS/SS//5      [	        S5      -  :X  d   e[        U [        5      [        SS/SS//5      :X  d   e[        SSS9u  pn[        XX#5      nUS   [        [        U-  S-  5      [        [        U-  S-  5      -  [        US-  5      -  :X  d   eUS	   [        [        U-  S-  5      [        [        * U-  S-  5      -  [        US-  5      -  :X  d   eUS
   [        [        * U-  S-  5      * [        [        U-  S-  5      -  [        US-  5      -  :X  d   eUS   [        [        * U-  S-  5      [        [        * U-  S-  5      -  [        US-  5      -  :X  d   e[        SSS9u  pV[        [        SSS5       Vs/ s H  n[        SXuU5      PM     sn5      n[        S[        * S-  [        S-  [        * S-  5      UR                  U[        S-  U[        05      -  n	UR                  U[        S-  U[        S-  05      n
U	R                  SS9R                  5       U
R                  SS9R                  5       :X  d   eg s  snf )Nr   r   r   r   zalpha, beta, gammaT)real)r   r   )r   r   )r   r   )r   r   r   rh   r'   )func)r   r   r   r   r	   r   r   r   r   r
   r   rk   r   subsr   as_real_imag)rW   alphabetagammaDr   r   mjrx   ww_s              r"   test_wigner_dr      s}   Q46D$"fq!fq!f-=&>>>>$1%!Q"a0A)B47)JJJJ$#v1vAw.?'@@@@ !5DAEd*AT7c!E'!)nS5^3CQK????T7c!E'!)nS!E!_4Sa[@@@@T7sA2e8A:&s1U719~5c$q&kAAAAT7c1"U(1*oc1"U(1*o5c$q&kAAAA 40JEq"b1AB1A2Ar#&1ABCARCE2a4"Q'r!tS"/E(FFA	
1c2a4(	)B888++-1E1R1R1TTTT Cs   JN)*sympy.core.numbersr   r   r   sympy.core.singletonr   sympy.core.symbolr   &sympy.functions.elementary.exponentialr   (sympy.functions.elementary.miscellaneousr	   (sympy.functions.elementary.trigonometricr
   r   +sympy.functions.special.spherical_harmonicsr   sympy.matrices.denser   sympy.physics.wignerr   r   r   r   r   r   r   r   r   r   sympy.testing.pytestr   r   r#   r0   r@   rX   rs   r|   r   r   r   r    r!   r"   <module>r      si    0 0 " % 6 9 ? ; 'R R R -_":J>$"N .FBL:*Ur!   