
    Qi&                         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)dS )    )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 d S )N         r   )r   r   r   Halfr	        /var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/sympy/physics/tests/test_clebsch_gordan.pytest_clebsch_gordan_docsr$      s    (1a..!&!Xa^^QVQOOSTTTTT(1a..!&!Xa^^XbRS__VWXX\`ab\c\cde\eeeee(1a..!&!Xb!__afaPPUYZ[U\U\T\]^T^^^^^^^r"   c            
      
   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 d S )
Nr   r   r         r   r         )r   Oner    r   r   r	   )hklinps         r#   test_clebsch_gordanr1      s.    	
A	AAAQAAAAA!Q1a++q0000!Q1a++q0000!Q1a,,1111!Q1a++tAwwqy8888!Q1a++tAwwqy8888!Q1a++tAwwqy8888!Q1a++Qxz9999!Q1a++q0000!Q1a++qay8888!Q1a++tAwwtAww>>>>!Q1a++r$q''z9999!Q1a++tAwwtAww>>>>!Q!aAaDD11Q6666!Q!aA..!DGG);;;;!Q!aA..!DGG);;;;!Q1a++qay8888!Q1a++r$q''z9999!Q!aAaDD11Q6666!Q!aAaDD11QtAwwY>>>>!Q!aAaDD11QtAwwY>>>>!A$$!addAaDD!A$$!==BBBB!A$$!addAaDD!QqTT::aQiGGGG!A$$!addAq!A$$771<<<<!Q1a++q0000!Q1a++tAwwtAww>>>>!Q1a++qbz999999r"   c                     	 dd l } n# t          $ r t          d           Y nw xY wt          |                     d                              | j                   dk    sJ t          d|                     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            d S )Nr   numpy not installed   r   r   g      @g      @i     g      ?g      c                  *    t          dddddd          S )Ng @r4   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;;--bh778A====Q

3aA66$s))C-GGGGQS!S$//47719<<<<
:<<=====    ##c                     	 dd l } n# t          $ r t          d           Y nw xY w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|                     d          d          t	          dd          k    sJ t          d|                     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#|                     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 d S )'Nr   r3   c                 T    | |z
                       d          t          d          k     S N@   z1e-64r/   r   abs     r#   tnztest_wigner.<locals>.tnJ   !    Ayy}}qzz))r"   r   rE   prec   r   r   i  F   i i   im  i  r'   4      iEi g      ?r4   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?   rJ   halfs      r#   test_wignerrX   E   s   $ $ $ $"#####$* * *2i1aAq!Q;;;Xa__MMMMMQ1aAq!Q//4
9 9 4DII4!$d488mDII&=!>4? ? ? ? ?Q1aA&&(1b//99992i1aAqr222HVV4L4LMMMMMQ1c2::c??A66(1a..HHHHS"**Q--aA66(2r:J:JJJJJ6DQ1atQd;;tCCCCaA$hD!$hD!- - Xc9--.../ / / / aA$h1t8$h1t8- - XdI..///0 0 0 0 aT1t8AT1t8- - XdJ//0001 1 1 1 aCjjooq!A      c3AA  $r(({5 ! ! ! ! ! !rA   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 ]}	t          | |dz             D ]q}
|||||	|
f}t          | } || }t          ||z
            |k     sJ ||	z   |
z   dk    rt          |          |k     sJ ||z   |z   dz  rt          |          |k     sJ řt          dddddd          t          j	        u sJ d S )Nc                 T    | |z
                       d          t          d          k     S rD   rF   rG   s     r#   rJ   ztest_gaunt.<locals>.tnm   rK   r"   r   r   r   r   
      rT   r   irE   rL   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   sq    !b&1*R!,B
;q2vFGGb"b!Q**+b"b"b"--.	
r"   g|=   )
r   r	   r   
isinstanceargsr   rangeabsr   Zero)rJ   rd   	thresholdl_maxl3_maxr^   r_   r`   ra   rb   rc   rh   gg0s                 r#   
test_gauntrq   l   s   * * *Aq!Q##r1T"XX:6666eAq!RA..3A6AAAAAeAq!QA..3A6AAAAA2e
BAq#B( ( (*23*>*>$t**)LTRTXX)UW W W W W
 
 
 IEFEAI : :	"" 	: 	:BFQJ'' : :R!V,, 
: 
:B#RCa00 	: 	:"'R!V"4"4 : :B#%r2r2r#9D!&A!*D!1B#&q2v;;#:#:#:#:!Bw|q00'*1vv	'9'9'9'9 "R"1 :'*1vv	'9'9'9'9:	:
::	: Aq!Q##qv------r"   c            
      2	   t          d          D ]K} t          |  | dz             D ]4}t          d| | d||          ddt          t                    z  z  k    sJ 5Lt          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|<   %d S )Nr   r   r   r   r'   r[   r&   rf   r   r)   rS   xT)integerr4   c                      t            S )N)r   )vs   r#   r7   z test_realgaunt.<locals>.<lambda>   s    :q> r"   )
ri   r   r	   r   r   rk   r   lenr   r>   )r-   mrs   r.   rv   s       @r#   test_realgauntry      s~   1XX B Br1Q3 	B 	BAaAq!Q//1aRj>AAAAA	BaAq!Q''477Ad2hhJ+?????aAq!Q''DGG8RR[+AAAAAaAq!Q''477Ad2hhJ+?????aAq!Q''DGG8QtBxxZ+@@@@@aAr2q))d1ggXqbz-BBBBBaAr1b))T"XXr$r(({-CCCCCaAq!Q''488RR[+AAAAAaAq!Q''488RR[+AAAAAaAr1b))T"XXr$r(({-CCCCCaAr2q))d2hhY488-DDDDDaAq!Q''477BtBxxK+@@@@@aAq!Q''488RR[+AAAAAaAr2q))d2hhY488-DDDDDb"b"b!,,6666b!Q1a((AF2222b"b"b!,,6666b"b"b"--7777b"b"b"--7777T"""A	
AA3q66]]  !z111122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 d S )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	   rj   r   r!   r"   r#   
test_racahr}      s    1Qq1"R00001Qq1"R00001Qq11%%%....SS1%%d3ii)?????uSSQqq111X>??!F))KKK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  k    sJ t          dddddd                                          t          d          t          dddd          z  dt          t                    z  z  k    sJ t          dddddd          dk    sJ t          dddddd                                          dk    sJ t          dddd| |                                          d	t          d
          z  t          dd| |          z  dt          t                    z  z  k    sJ t          dddd| |                                          t          d          t          dd| |          z  t          t                    z  k    sJ t          dddd| |                                          dt          d          z  t          dd| |          z  dt          t                    z  z  k    sJ t          dddd| |                                                                          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 d S )N	theta phir   r      r   r[   r'   r   r)   i  r4   r5   r(   7      rO   -      )r   r   r	   r   r   doitexpand)thetaphis     r#   test_dot_rota_grad_SHr      s   %%JE3Aq!Q1--RQ1a "T"XX+./ / / /Aq!Q1--2244RQ1a "T"XX+./ / / /Aq!Q1--	
 
 
 
Aq!Q1--2244	
 
 
 
Aq!Qs3388::
4::c!Qs+++Sb\:; ; ; ;Aq!Qs3388::QAq%%%%d2hh./ / / /Aq!Qs3388::	$r((
3q!UC((("T"XX+67 7 7 7Aq!Qs3388::AACC	b	#aE3'''DHH5
499SAuc***CRL9	:: : : : : :r"   c                  t  	 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          	fdt          ddd          D                       }t          dt           dz  t          dz  t           dz            |                    	t          dz  t          i          z  }|                    	t          dz  t          dz  i          }|                    d                                          |                    d                                          k    sJ d S )Nr   r   r   r   zalpha, beta, gammaT)real)r   r   )r   r   )r   r   )r   r   r   c                 4    g | ]}t          d |          S )r   r   ).0mjr   r   s     r#   
<listcomp>z!test_wigner_d.<locals>.<listcomp>   s'    BBB2Ar5#&&BBBr"   rf   r(   )func)r   r   r   r   r	   r   r   r   r   r
   r   ri   subsr   as_real_imag)
rW   alphabetagammaDrv   ww_r   r   s
           @@r#   test_wigner_dr      s   Q446D$""fq!fq!f-=&>&>>>>>$1%%!Q"a0A)B)B477)JJJJJ$##v1vAw.?'@'@@@@@ !5DAAAE4udE**AT7c!E'!)nnS5^^3CQKK?????T7c!E'!)nnS!E!__4Sa[[@@@@@T7sA2e8A:&s1U719~~5c$q&kkAAAAAT7c1"U(1*ooc1"U(1*oo5c$q&kkAAAAA 4000JE3BBBBBq"b1A1ABBBCCARCE2a4"Q''r!tS"/E(F(FFA	
1c2a4(	)	)B888++--1E1E1R1R1T1TTTTTTTr"   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$   r1   r@   rX   rq   ry   r}   r   r   r!   r"   r#   <module>r      s   0 0 0 0 0 0 0 0 0 0 " " " " " " % % % % % % 6 6 6 6 6 6 9 9 9 9 9 9 ? ? ? ? ? ? ? ? ; ; ; ; ; ; ' ' ' ' ' 'R R R R R R R R R R R R R R R R R R R R R R R R - - - - - - - -_ _ _": ": ":J> > >$" $" $"N .  .  .F  BL L L: : :*U U U U Ur"   