o
    h$                     @   s   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d Z!dd Z"dd Z#dd Z$dd Z%dd Z&dd Z'dd Z(d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                   C   s   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 ks0J t tddtjdtddtjdtd d ksJJ d S )N         r   )r   r   r   Halfr    r   r   [/var/www/vscode/kcb/lib/python3.10/site-packages/sympy/physics/tests/test_clebsch_gordan.pytest_clebsch_gordan_docs   s   *68r!   c                  C   s  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s4J t||d||ddksAJ t||d||dtdd ksRJ t||d||dtdd kscJ t||d||dtdd kstJ t||d||dtd d ksJ t| ||d||dksJ t| ||d||dtd ksJ t| ||d||tdtd ksJ t| ||d||dtd ksJ t| ||d||tdtd ksJ t| | t dddt ddksJ t| | t dddddtd ksJ t| | t dddddtd ksJ t| | dddddtd ks%J t| | dddddtd ks7J t||t d||t ddksIJ t||t d||t ddtd ks_J t||t d||t ddtd ksuJ tt dt dt dt dt dt ddksJ tt dt dt dt ddt ddtd ksJ tt dt dt dddt ddksJ t|| ||d|dksJ t|| ||d|tdtd ksJ t|| ||d|dtd	 ksJ d S )
Nr   r   r         r   r         )r   Oner   r   r   r   )hklinpr   r   r    test_clebsch_gordan   s@   



"""$"&"&"&($$$,,48,((r-   c                  C   sJ   zdd l } W n ty   td Y nw t| d| j dks#J d S )Nr   znumpy not installed   r   )numpyImportErrorr   r   zerosastypeint64)npr   r   r    test_clebsch_gordan_numpy:   s   "r5   c                  C   s  dd } | t d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 dtd  ddtd td   ks@J tddddddtddksPJ | tddddddddtddscJ tj}t dddd||d||	|ksvJ t dddd| d| dd| d| d	ttdd ksJ t dddd| dd| d| d	d| 	ttdd ksJ t dd| d| d	dddd| d| 	ttdd ksJ d S )Nc                 S      | |  dtdk S N@   z1e-64r+   r   abr   r   r    tnC      ztest_wigner.<locals>.tnr   r   r8   prec   r   r   i  F   i i   im  i  r#   4      iEi r$   r"   	   ii  iHDi  iAi  l   0 Y )r   r   r   r   r   r   )r=   halfr   r   r    test_wignerB   s>   ,

 & rH   c                  C   s  dd } t ddddddddtt  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s9J | t dddd	d
dddtddtd tt sTJ dd }d}d
}d}t|d D ]o}t|d D ]f}t|d D ]]}t| |d D ]R}t| |d D ]G}	t| |d D ]<}
|||||	|
f}t | }|| }t|| |k sJ ||	 |
 dkrt||k sJ || | d rt||k sJ qqq~qtqlqdt ddddddtj	u sJ d S )Nc                 S   r6   r7   r9   r:   r   r   r    r=   \   r>   ztest_gaunt.<locals>.tnr   r   r   r   
      rF   r   ir8   r?   iiO  i  c                 S   sT   t d|  d d| d  d| d  dt  t| ||ddd t| ||||| S )Nr   r   r$   r   )r   r   r   )l1l2l3m1m2m3r   r   r    	gaunt_refd   s   .ztest_gaunt.<locals>.gaunt_refg|=   )
r   r   r   
isinstanceargsr   rangeabsr   Zero)r=   rQ   	thresholdl_maxl3_maxrK   rL   rM   rN   rO   rP   rU   gg0r   r   r    
test_gaunt[   sD   &"" r^   c               	      sd  t dD ] } t |  | d D ]}td| | d||ddtt  ks#J qqtddddddtddtt  ks:J tddddddtd dtt  ksPJ tddddddtddtt  kseJ tddddddtd dtt  ks{J tddddddtd dtt  ksJ tdddd	dd	td
dtt  ksJ tddddddtd
dtt  ksJ tddddddtd
dtt  ksJ tdddd	ddtd
 dtt  ksJ tdddd	d	dtd
 dtt  ksJ tddddddtddtt  ksJ tddddddtd
dtt  ks(J tdddd	d	dtd
 dtt  ks?J tddddddtju sNJ tddddddtju s]J tdd	dd	d	dtju slJ tddddddtju s{J tdd	dd	d	d	tju sJ tddd}dgd  t t D ]}| |< tt	 fdd d |< qd S )Nr   r   r   r   r#   rI   r"   rS   r   r%      xT)integerr.   c                      s   t   S )N)r   r   vr   r    <lambda>   s    z test_realgaunt.<locals>.<lambda>)
rV   r   r   r   r   rX   r   lenr   
ValueError)r)   mr`   r*   r   rb   r    test_realgaunt~   s:   (*,*,,***,,,,.
rh   c                
   C   s   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
djs.J t dddddddtd d ksAJ tt ddddddd
dd tdk sVJ d S )Nr   r   r_   r   rB   r"   rE   r   r$   r?   g      @g      @g      #@g      @rF   i1iV  i g6
rz1e-4)r   r   is_Floatr   rW   r   r   r   r   r    
test_racah   s
     &.rk   c                  C   s  t d\} }tddddddtdtdddd dtt  ks"J tdddddd tdtdddd dtt  ks@J tdddddddksMJ tdddddd dks\J tdddd| | d	td
 tdd| | dtt  ks|J tdddd| | tdtdd| | tt ksJ tdddd| | dtd tdd| | dtt  ksJ tdddd| |  td tdd| | dtt  dtd tdd| | dtt   ksJ d S )N	theta phir   r      r   rI   r#   r   r%   i  r.      r$   7      rB   -      )r   r   r   r   r   doitexpand)thetaphir   r   r    test_dot_rota_grad_SH   s6     $$"$rw   c                     s0  t dd } t| dtddgddggksJ t| td tddgddggtd ks.J t| ttddgddggks?J tddd\}}}t| |||}|d tt| d tt| d  t	|d  kskJ |d	 tt| d tt | d  t
|d  ksJ |d
 tt | d  tt| d  t
|d  ksJ |d tt | d tt | d  t	|d  ksJ tddd\ t fddtdddD }tdt d td t d |td  ti }|td  td i}|jdd |jdd ksJ d S )Nr   r   r   r   zalpha, beta, gammaT)real)r   r   )r   r   )r   r   )r   r   rl   c                    s   g | ]	}t d | qS )r   r   ).0mjrv   ru   r   r    
<listcomp>   s    z!test_wigner_d.<locals>.<listcomp>rS   r$   )func)r   r   r   r   r   r   r   r   r   r	   r
   rV   subsrt   as_real_imag)rG   alphabetagammaDrc   ww_r   r{   r    test_wigner_d   s   "."8:<< 4*r   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!   r-   r5   rH   r^   rh   rk   rw   r   r   r   r   r    <module>   s&    0%#!