o
    *ήcC%                     @   s   d dl 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 d d
l 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d Z&dd  Z'd!S )"    )Ipi)S)symbols)exp)sqrt)cossin)Ynm)Matrix)	clebsch_gordan	wigner_9j	wigner_6jgauntracahdot_rot_grad_Ynm	wigner_3jwigner_d_smallwigner_d)Rationalc                   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   N/tmp/pip-target-vg8gfxp4/lib/python/sympy/physics/tests/test_clebsch_gordan.pytest_clebsch_gordan_docs   s   *68r   c                  C   s  t j} t j}d}d}t j}t j}t| |||||dksJ t j} t j}d}d}tdd}tdd}t| |||||dks>J t j} t j}d}d}t j}t j}t| |||||dks[J t j} t j}d}d}t j}tdd}t| |||||tdd ks~J t j} t j}d}d}t j}tdd}t| |||||tdd ksJ t j} t j}d}d}tdd}t j}t| |||||tdd ksJ t j} t j}d}d}tdd}t j}t| |||||td d ksJ d S )Nr   r   r   r   )r   r   r   r   r   j_1j_2mjm_1m_2r   r   r   test_clebsch_gordan1   sb   


"
"
"
(r&   c                  C   s  t j} t j}tdd}tdd}d}t j}t| |||||dks"J t j} t j}t j}tdd}d}tdd}t| |||||dtd ksHJ t j} t j}t j}t j}d}tdd}t| |||||tdtd ksnJ t j} t j}t j}t j}d}t j}t| |||||dtd ksJ t j} t j}t j}tdd}d}t j}t| |||||tdtd ksJ t j} t j}t d}t d}d}d}t| |||||dksJ t j} t j}d}t d}d}d}t| |||||dtd ksJ t j} t j}d}t d}d}d}t| |||||dtd ksJ t j} t j}d}d}d}d}t| |||||dtd ks8J t j} t j}d}d}d}d}t| |||||dtd ksXJ d S r   )r   Oner   r   r   r   r   r   r   r   test_clebsch_gordan2N   s   



"
&"
&"$$(r(   c                  C   s  t dd} t dd}td}td}t dd}t dd}t| |||||dks)J t dd} t dd}td}td}t dd}tj}t| |||||dtd ksTJ t dd} t dd}td}td}t dd}tj}t| |||||dtd ksJ d S )Nr   r   r   )r   r   r   r   r   r   r   r   r   test_clebsch_gordan3   s*   






"


&r)   c                  C   s   t d} t d}t d}t d}t d}t d}t| |||||dks%J t d} t d}t d}t d}t d}d}t| |||||dtd ksLJ t d} t d}t d}t d}d}d}t| |||||dksmJ d S )Nr      r   r   r   )r   r   r   r   r   r   r   test_clebsch_gordan4   s*   "r+   c                  C   s   t dd} tj}t dd}t dd}t dd}d}t| |||||dks&J t dd} tj}t dd}t dd}t dd}d}t| |||||tdtd ksRJ t dd} tj}t dd}t dd}tj}d}t| |||||dtd kszJ d S )N   r      r   r   r      )r   r   r'   r   r   r   r   r   r   r   test_clebsch_gordan5   s*   







&


&r/   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nr   abr   r   r   tn      ztest_wigner.<locals>.tnr   r   r2   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   )r8   halfr   r   r   test_wigner   s>   ,

 & rC   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~qtqlqdd S )Nc                 S   r0   r1   r3   r5   r   r   r   r8   
  r9   ztest_gaunt.<locals>.tnr   r   r   r   
      rA   r   ir2   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_ref  s   .ztest_gaunt.<locals>.gaunt_refg|=   )r   r   r   
isinstanceargsr   rangeabs)r8   rL   	thresholdl_maxl3_maxrF   rG   rH   rI   rJ   rK   rO   gg0r   r   r   
test_gaunt	  sD   &""rW   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=   r-   r@   r   r*   r:   g      @g      @g      #@g      @rA   i1iV  i g6
rz1e-4)r   r   is_Floatr   rQ   r   r   r   r   r   
test_racah+  s
     &.r[   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 )Nz	theta phir   r      r   rD   r,   r   r.   i        r*   7      r=   -      )r   r   r   r
   r   doitexpand)thetaphir   r   r   test_dot_rota_grad_SH3  s6     $$"$rg   c                  C   sZ  t dd } tddd\}}}t| ||td i}tddgddggtd }||ks/J t| |||}|d tt	| d tt	| d  t
|d  ksRJ |d tt	| d tt	 | d  t|d  ksoJ |d	 tt	 | d  tt	| d  t|d  ksJ |d
 tt	 | d tt	 | d  t
|d  ksJ d S )Nr   r   zalpha, beta, gammaT)realr   )r   r   )r   r   )r   r   )r   r   )r   r   r   subsr   r   r   r   r   r   r   r	   )rB   alphabetagammadd_Dr   r   r   test_wigner_dH  s   8:<@rp   N)(sympy.core.numbersr   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   r   r&   r(   r)   r+   r/   rC   rW   r[   rg   rp   r   r   r   r   <module>   s*    ,9S"