
    oVh&                         d dl 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 d dlmZ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mZmZmZmZmZ d d
lmZm Z  d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)y)    )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            
         t        t        dd      t        j                  dt        dd      t        j                  d      dk(  sJ t        t        dd      t        j                  dt        dd      t        dd      d      t	        d      dz  k(  sJ t        t        dd      t        j                  dt        dd      t        j                  d      t	        d       dz  k(  sJ y )N         r   )r   r   r   Halfr	        W/home/dcms/DCMS/lib/python3.12/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            
      z   t         j                  } t         j                  }t        dd      }t        dd      }t        dd      }t        dd      }t	        ||d||d      dk(  sJ t	        ||d||d      dk(  sJ t	        ||d||d      dk(  sJ t	        ||d||d      t        d      dz  k(  sJ t	        ||d||d      t        d      dz  k(  sJ t	        ||d||d      t        d      dz  k(  sJ t	        ||d||d      t        d       dz  k(  sJ t	        | ||d||      dk(  sJ t	        | ||d||      dt        d      z  k(  sJ t	        | ||d||      t        d      t        d      z  k(  sJ t	        | ||d||      dt        d      z  k(  sJ t	        | ||d||      t        d      t        d      z  k(  sJ t	        | | t        d      ddt        d            dk(  sJ t	        | | t        d      ddd      dt        d      z  k(  sJ t	        | | t        d      ddd      dt        d      z  k(  sJ t	        | | dddd      dt        d      z  k(  sJ t	        | | dddd      dt        d      z  k(  sJ t	        ||t        d      ||t        d            dk(  sJ t	        ||t        d      ||t        d            dt        d      z  k(  sJ t	        ||t        d      ||t        d            dt        d      z  k(  sJ t	        t        d      t        d      t        d      t        d      t        d      t        d            dk(  sJ t	        t        d      t        d      t        d      t        d      dt        d            dt        d      z  k(  sJ t	        t        d      t        d      t        d      ddt        d            dk(  sJ t	        || ||d|      dk(  sJ t	        || ||d|      t        d      t        d      z  k(  sJ t	        || ||d|      dt        d	      z  k(  sJ y )
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!Q1a+q000!Q1a+q000!Q1a,111!Q1a+tAwqy888!Q1a+tAwqy888!Q1a+tAwqy888!Q1a+Qxz999!Q1a+q000!Q1a+qay888!Q1a+tAwtAw>>>!Q1a+r$q'z999!Q1a+tAwtAw>>>!Q!aAaD1Q666!Q!aA.!DG);;;!Q!aA.!DG);;;!Q1a+qay888!Q1a+r$q'z999!Q!aAaD1Q666!Q!aAaD1QtAwY>>>!Q!aAaD1QtAwY>>>!A$!adAaD!A$!=BBB!A$!adAaD!QqT:aQiGGG!A$!adAq!A$71<<<!Q1a+q000!Q1a+tAwtAw>>>!Q1a+qbz999r!   c                  p   	 dd l } t         j	                  d      j                  | j                         dk(  sJ t        d| j                  d      dddd      t        d      d	z  k(  sJ t        dd
d
dd
d      t        d      dz  k(  sJ t        t        d        y # t        $ r t        d       Y w xY w)Nr   numpy not installed   r   r   g      @g      @i     g      ?g      c                  "    t        dddddd      S )Ng @r3   r'   r   )r   r    r!   r"   <lambda>z+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 B54B5c                     	 dd l } d } |t        dddddddddd
      t	        dd            sJ t        ddd	ddd	ddd		      d
t        d      z  dt        d      z  z  ddt        d      z  t        d      z  z  z
  k(  sJ t        dddddd      t	        dd      k(  sJ  |t        ddddddd      t	        dd            sJ t        dddd j                  d      d      t	        dd      k(  sJ t        d| j                  d      dddd      t	        dd      k(  sJ t        j                  }t        dddd||d||	      |k(  sJ t        dddd|z  d|z  dd|z  d|z  d	      t        t	        dd             k(  sJ t        dddd|z  dd|z  d|z  d	d|z  	      t        t	        dd              k(  sJ t        dd|z  d|z  d	dddd|z  d|z  	      t        t	        d!d"             k(  sJ t        ddd#| j                  d#      ddddd	      dk(  sJ t        dd$ddd	dd	dd	      d%t        d      z  d&z  k(  sJ y # t        $ r t        d       Y Rw xY w)'Nr   r2   c                 B    | |z
  j                  d      t        d      k  S N@   z1e-64r.   r   abs     r"   tnztest_wigner.<locals>.tnJ       Ayy}qz))r!   r   rC   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+  )r7   r8   r   r   r   r	   r   r<   float32r   r   )r>   rH   halfs      r"   test_wignerrV   E   s   $*i1aAq!Q;Xa_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Q1c2::c?A6(1a.HHHS"**Q-aA6(2r:JJJJ66DQ1atQd;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                     d } t        dddddd      ddt        t              z  z  k(  sJ t        t        dddddd      j                  d   t
              sJ t        t        dddddd      j                  d   t
              sJ  | t        ddddd	d
d      t        dd      t        d      z  t        t              z        sJ d }d}d	}d}t        |dz         D ]  }t        |dz         D ]  }t        |dz         D ]  }t        | |dz         D ]  }t        | |dz         D ]v  }	t        | |dz         D ]a  }
|||||	|
f}t        | } || }t        ||z
        |k  sJ ||	z   |
z   dk7  rt        |      |k  sJ ||z   |z   dz  sRt        |      |k  raJ  x     t        dddddd      t        j                  u sJ y )Nc                 B    | |z
  j                  d      t        d      k  S rB   rD   rE   s     r"   rH   ztest_gaunt.<locals>.tnm   rI   r!   r   r   r   r   
      rR   r   irC   rJ   iiO  i  c           	          t        d| z  dz   d|z  dz   z  d|z  dz   z  dt        z  z        t        | ||ddd      z  t        | |||||      z  S )Nr   r   r'   r   )r	   r   r   )l1l2l3m1m2m3s         r"   	gaunt_refztest_gaunt.<locals>.gaunt_refu   sh    !b&1*R!,B
;q2vFGb"b!Q*+b"b"b"-.	
r!   g|=   )
r   r	   r   
isinstanceargsr   rangeabsr   Zero)rH   rb   	thresholdl_maxl3_maxr\   r]   r^   r_   r`   ra   rf   gg0s                 r"   
test_gauntro   l   s    *Aq!Q#r1T"X:666eAq!RA.33A6AAAeAq!QA.33A6AAAe
BAq#B(*23*>$t*)LTRTX)UW W W
 IEFEAI :	" 	:BFQJ' :R!V, 
:B#RCa0 	:"'R!V"4 :B#%r2r2r#9D!&A!*D!1B#&q2v;#::#:!Bw|q0'*1v	'9 9'9 "R"1'*1v	'9 9'9:	:
::	:: Aq!Q#qvv---r!   c            
         t        d      D ]?  } t        |  | dz         D ]*  }t        d| | d||      ddt        t              z  z  k(  r*J  A t        dddddd      t        d      dt        t              z  z  k(  sJ t        dddddd      t        d       dt        t              z  z  k(  sJ t        dddddd      t        d      dt        t              z  z  k(  sJ t        dddddd      t        d       dt        t              z  z  k(  sJ t        dddddd      t        d       dt        t              z  z  k(  sJ t        dddd	dd	      t        d
      dt        t              z  z  k(  sJ t        dddddd      t        d
      dt        t              z  z  k(  sJ t        dddddd      t        d
      dt        t              z  z  k(  sJ t        dddd	dd      t        d
      dt        t              z  z  k(  sJ t        dddd	d	d      t        d
       dt        t              z  z  k(  sJ t        dddddd      t        d      dt        t              z  z  k(  sJ t        dddddd      t        d
      dt        t              z  z  k(  sJ t        dddd	d	d      t        d
       dt        t              z  z  k(  sJ t        dddddd      t        j
                  u sJ t        dddddd      t        j
                  u sJ t        dd	dd	d	d      t        j
                  u sJ t        dddddd      t        j
                  u sJ t        dd	dd	d	d	      t        j
                  u sJ t        dd      }dgdz  t        t                    D ]  }||<   t        t        fd       d|<   ! y )Nr   r   r   r   r&   rY   r%   rd   r   r(   rQ   xT)integerr3   c                      t          S )N)r   )vs   r"   r6   z test_realgaunt.<locals>.<lambda>   s    :q> r!   )
rg   r   r	   r   r   ri   r   lenr   r=   )r,   mrq   r-   rt   s       @r"   test_realgauntrw      s   1X Br1Q3 	BAaAq!Q/1aRj>AAA	BB 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                  \   t        dddddd      t        dd      k(  sJ t        dddddd      t        dd      k(  sJ t        dddd	ddd
      j                  sJ t        dddddd      dt        d      z  dz  k(  sJ t	        t        ddddddd
      dz
        t        d      k  sJ y )Nr   r   rQ   r   rM   r%   rP   r   r'   rJ   g      @g      @g      #@g      @rR   i1iV  i g6
rz1e-4)r   r   is_Floatr	   rh   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            	         t        d      \  } }t        dddddd      t        d      t        dddd      z  dt        t              z  z  k7  sJ t        dddddd      j                         t        d      t        dddd      z  dt        t              z  z  k(  sJ t        dddddd      dk7  sJ t        dddddd      j                         dk(  sJ t        dddd| |      j                         d	t        d
      z  t        dd| |      z  dt        t              z  z  k(  sJ t        dddd| |      j                         t        d      t        dd| |      z  t        t              z  k(  sJ t        dddd| |      j                         dt        d      z  t        dd| |      z  dt        t              z  z  k(  sJ t        dddd| |      j                         j                         t        d       t        dd| |      z  dt        t              z  z  dt        d      z  t        dd| |      z  dt        t              z  z  z   k(  sJ y )N	theta phir   r      r   rY   r&   r   r(   i  r3   r4   r'   7      rM   -      )r   r   r	   r   r   doitexpand)thetaphis     r"   test_dot_rota_grad_SHr      sf   %JE3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s388:
4:c!Qs++Sb\:; ; ;Aq!Qs388:QAq%%%d2h./ / /Aq!Qs388:	$r(
3q!UC(("T"X+67 7 7Aq!Qs388:AAC	b	#aE3''DH5
49SAuc**CRL9	:: : :r!   c                  H   t        d      dz  } t        | d      t        ddgddgg      k(  sJ t        | t        dz        t        ddgddgg      t	        d      z  k(  sJ t        | t              t        ddgddgg      k(  sJ t        dd      \  }}}t        | |||      }|d   t        t        |z  dz        t        t        |z  dz        z  t        |dz        z  k(  sJ |d	   t        t        |z  dz        t        t         |z  dz        z  t        |dz        z  k(  sJ |d
   t        t         |z  dz         t        t        |z  dz        z  t        |dz        z  k(  sJ |d   t        t         |z  dz        t        t         |z  dz        z  t        |dz        z  k(  sJ t        dd      \  }}t        t        ddd      D cg c]  }t        d|||       c}      }t        dt         dz  t        dz  t         dz        |j                  |t        dz  |t        i      z  }	|j                  |t        dz  |t        dz  i      }
|	j                  d      j                         |
j                  d      j                         k(  sJ y c c}w )Nr   r   r   r   zalpha, beta, gammaT)real)r   r   )r   r   )r   r   )r   r   r}   rd   r'   )func)r   r   r   r   r	   r   r   r   r   r
   r   rg   r   subsr   as_real_imag)rU   alphabetagammaDr   r   mjrt   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E4udE*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0JE3q"b1AB2Ar5#&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?   rV   ro   rw   r{   r   r   r    r!   r"   <module>r      si    0 0 " % 6 9 ? ; 'R R R -_":J>$"N .FBL:*Ur!   