U
    L?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*tt tddtjdtddtdddtdd ks`tt tddtjdtddtjdtd d kstd S )Né   é   é   é’’’’r   )r   r   r   ŚHalfŚAssertionErrorr   © r    r    śY/var/www/html/venv/lib/python3.8/site-packages/sympy/physics/tests/test_clebsch_gordan.pyŚtest_clebsch_gordan_docs   s    *6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sNtt||d||ddkshtt||d||ddkstt||d||dtdd ks¤tt||d||dtdd ksĘtt||d||dtdd ksčtt||d||dtd d kstt| ||d||dks*tt| ||d||dtd ksNtt| ||d||tdtd ksvtt| ||d||dtd kstt| ||d||tdtd ksĀtt| | t dddt ddksętt| | t dddddtd kstt| | t dddddtd ks6tt| | dddddtd ksZtt| | dddddtd ks~tt||t d||t ddks¢tt||t d||t ddtd ksĪtt||t d||t ddtd ksśttt dt dt dt dt dt ddks.ttt dt dt dt ddt ddtd ksfttt dt dt dddt ddkstt|| ||d|dks®tt|| ||d|tdtd ksÖtt|| ||d|dtd	 ksśtd S )
Nr   r   r   é   é   r   r   é   é   )r   ZOner   r   r   r   r   )ŚhŚkŚlŚiŚnŚpr    r    r!   Śtest_clebsch_gordan   s@    



"""&$($($(($$$,,48,(r-   c                  C   sL   zdd l } W n tk
r(   td Y nX t|  d” | j” dksHtd S )Nr   znumpy not installedé   r   )ŚnumpyŚImportErrorr   r   ZzerosZastypeZint64r   )Śnpr    r    r!   Śtest_clebsch_gordan_numpy:   s
    r2   c                  C   sŖ  dd } | t ddddddddddd
tdds4tt ddd	ddd	ddd		d
td dtd  ddtd td   ksttddddddtddks t| tddddddddtddsĘttj}t dddd||d||	|ksģtt dddd| d| dd| d| d	ttdd ks*tt dddd| dd| d| d	d| 	ttdd kshtt dd| d| d	dddd| d| 	ttdd ks¦td S )Nc                 S   s   | |   d”tdk S ©Né@   z1e-64©r+   r   ©ŚaŚbr    r    r!   ŚtnC   s    ztest_wigner.<locals>.tnr   r   r4   ©Śprecé   r   r   i  éF   i°Ä éi   im  iČ  r$   é4   é   iEŠ’’i¼ r%   r#   é	   ii  iHDi  iÆAi  l   ä0 Y )r   r   r   r   r   r   r   )r9   Śhalfr    r    r!   Śtest_wignerB   sV    ,’
’’
 &     žż
    žż
    žżrC   c                  C   sŲ  dd } t ddddddddtt  ks.ttt ddddddjd tsPttt ddddddjd tsrt| t dddd	d
dddtddtd tt sØtdd }d}d
}d}t|d D ]ģ}t|d D ]Ś}t|d D ]Č}t| |d D ]²}t| |d D ]}	t| |d D ]}
|||||	|
f}t | }|| }t|| |k s^t||	 |
 dkrt||k st|| | d r$t||k s$tq$qqüqčqŲqČt ddddddt	j
ksŌtd S )Nc                 S   s   | |   d”tdk S r3   r5   r6   r    r    r!   r9   \   s    ztest_gaunt.<locals>.tnr   r   r   r   é
   é   rA   r   iō’’’r4   r:   i’’’iOņ  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   r   Ś
isinstanceŚargsr   ŚrangeŚabsr   ŚZero)r9   rL   Ś	thresholdZl_maxZl3_maxrF   rG   rH   rI   rJ   rK   rP   ŚgZg0r    r    r!   Ś
test_gaunt[   sD    &""      ’’"rV   c               	      sp  t dD ]@} t |  | d D ]*}td| | d||ddtt  kstqqtddddddtddtt  kstttddddddtd dtt  ks ttddddddtddtt  ksŹttddddddtd dtt  ksöttddddddtd dtt  ks$ttdddd	dd	td
dtt  ksPttddddddtd
dtt  ks|ttddddddtd
dtt  ksØttdddd	ddtd
 dtt  ksÖttdddd	d	dtd
 dtt  ksttddddddtddtt  ks0ttddddddtd
dtt  ks\ttdddd	d	dtd
 dtt  ksttddddddtjksØttddddddtjksĘttdd	dd	d	dtjksättddddddtjksttdd	dd	d	d	tjks ttddd}dgd  t t D ](}| |< t	t
 fdd d |< qBd S )Nr   r   r   r   r$   rD   r#   rN   r   r&   é   ŚxT)Śintegerr.   c                      s   t   S )N)r   r    ©Śvr    r!   Ś<lambda>   ó    z test_realgaunt.<locals>.<lambda>)rQ   r   r   r   r   r   rS   r   Ślenr   Ś
ValueError)r)   ŚmrX   r*   r    rZ   r!   Śtest_realgaunt~   s6    **,*,.,,,..,,.
ra   c                
   C   s°   t ddddddtddks tt ddddddtddks@tt dddd	ddd
djs\tt dddddddtd d ksttt ddddddd
dd tdk s¬td S )Nr   r   rW   r   éż’’’r=   r#   r@   r   r%   r:   g      @g      @g      #@g      @rA   i1ż’’iV  iÆ g6å
ļræz1e-4)r   r   r   Zis_Floatr   rR   r   r    r    r    r!   Ś
test_racah   s
      &rc   c                  C   sā  t d\} }tddddddtdtdddd dtt  ksDttdddddd ” tdtdddd dtt  ksttdddddddksttdddddd ” dksøttdddd| | ” d	td
 tdd| | dtt  ksųttdddd| | ” tdtdd| | tt ks2ttdddd| | ” dtd tdd| | dtt  kstttdddd| | ”  ” td tdd| | dtt  dtd tdd| | dtt   ksŽtd S )Nś	theta phir   r   é   r   rD   r$   r   r&   i»  r.   é   r%   é7   é   r=   é-   é¶   )r   r   r   r   r   r   ZdoitŚexpand)ŚthetaŚphir    r    r!   Śtest_dot_rota_grad_SH§   s6     ’ ’’’$’’
$’
"$’’rn   c                     s6  t dd } t| dtddgddggks.tt| td tddgddggtd ks\tt| ttddgddggks~ttddd\}}}t| |||}|d tt	| d tt	| d  t
|d  ksÖt|d	 tt	| d tt	 | d  t|d  kst|d
 tt	 | d  tt	| d  t|d  ksPt|d tt	 | d tt	 | d  t
|d  kst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s2td S )Nr   r   r   r   zalpha, beta, gammaT)Śreal)r   r   )r   r   )r   r   )r   r   rd   c                    s   g | ]}t d | qS )r   r   )Ś.0Zmj©rm   rl   r    r!   Ś
<listcomp>Ė   s     z!test_wigner_d.<locals>.<listcomp>rN   r%   )Śfunc)r   r   r   r   r   r   r   r   r   r   r	   r
   rQ   Śsubsrk   Zas_real_imag)rB   ŚalphaŚbetaŚgammaŚDr[   ŚwZw_r    rq   r!   Śtest_wigner_d¼   s    "."8<>> 4rz   N)*Zsympy.core.numbersr   r   r   Zsympy.core.singletonr   Zsympy.core.symbolr   Z&sympy.functions.elementary.exponentialr   Z(sympy.functions.elementary.miscellaneousr   Z(sympy.functions.elementary.trigonometricr	   r
   Z+sympy.functions.special.spherical_harmonicsr   Zsympy.matrices.denser   Zsympy.physics.wignerr   r   r   r   r   r   r   r   r   r   Zsympy.testing.pytestr   r   r"   r-   r2   rC   rV   ra   rc   rn   rz   r    r    r    r!   Ś<module>   s$   0%#!