U
    »mœd:3 ã                   @   sÞ  d dl Z d dlZd dlZd dlZd dlmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZ d dl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l'm&  m(Z) d dl*m+Z+m,Z,m-Z- d dl*m.Z.m/Z/m0Z0m1Z1m2Z2 d dl*m3Z3m4Z4 d d	l5m6Z6m7Z7m8Z8 d dl9Z9G d
d„ dƒZ:G dd„ dƒZ;G dd„ dƒZ<G dd„ dƒZ=G dd„ dƒZ>G dd„ dƒZ?G dd„ dƒZ@G dd„ dƒZAG dd„ dƒZBG dd„ dƒZCG dd„ dƒZDG d d!„ d!eEƒZFG d"d#„ d#eEƒZGG d$d%„ d%ƒZHG d&d'„ d'ƒZIG d(d)„ d)ƒZJG d*d+„ d+ƒZKG d,d-„ d-ƒZLG d.d/„ d/ƒZMG d0d1„ d1ƒZNG d2d3„ d3ƒZOG d4d5„ d5ƒZPG d6d7„ d7ƒZQG d8d9„ d9ƒZRG d:d;„ d;ƒZSG d<d=„ d=ƒZTG d>d?„ d?ƒZUG d@dA„ dAƒZVG dBdC„ dCƒZWG dDdE„ dEƒZXG dFdG„ dGƒZYG dHdI„ dIƒZZG dJdK„ dKƒZ[G dLdM„ dMƒZ\G dNdO„ dOƒZ]G dPdQ„ dQƒZ^G dRdS„ dSƒZ_dTdU„ Z`dVdW„ ZaG dXdY„ dYƒZbdZd[„ Zcd\d]„ Zdd^d_„ Zed`da„ Zfdbdc„ Zgddde„ Zhe6dfdg„ ƒZidhdi„ Zjdjdk„ Zkdldm„ Zldndo„ Zmdpdq„ Zndrds„ Zodtdu„ Zpdvdw„ Zqdxdy„ ZrdS )zé    N)ÚarrayÚisnanÚr_ÚarangeÚfinfoÚpiÚsinÚcosÚtanÚexpÚlogÚzerosÚsqrtÚasarrayÚinfÚ
nan_to_numÚrealÚarctanÚfloat_)Úraises)	Úassert_equalÚassert_almost_equalÚassert_array_equalÚassert_array_almost_equalÚassert_approx_equalÚassert_Úassert_allcloseÚassert_array_almost_equal_nulpÚsuppress_warnings)Úspecial)ÚellipeÚellipkÚellipkm1)ÚelliprcÚelliprdÚelliprfÚelliprgÚelliprj)Úmathieu_odd_coefÚmathieu_even_coef)Úwith_special_errorsÚassert_func_equalÚFuncDatac                   @   s  e Z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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+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zd;d<„ Z d=d>„ Z!d?d@„ Z"dAdB„ Z#dCdD„ Z$dEdF„ Z%dGdH„ Z&dIdJ„ Z'dKdL„ Z(dMdN„ Z)dOdP„ Z*dQdR„ Z+dSdT„ Z,dUdV„ Z-dWdX„ Z.dYdZ„ Z/d[d\„ Z0d]d^„ Z1d_d`„ Z2dadb„ Z3dcdd„ Z4dedf„ Z5dgdh„ Z6e7j8j9didj�dkdl„ ƒZ:dmdn„ Z;dodp„ Z<dqdr„ Z=e7j8j9dsdj�dtdu„ ƒZ>dvdw„ Z?dxdy„ Z@dzd{„ ZAd|d}„ ZBd~d„ ZCd€d�„ ZDd‚dƒ„ ZEd„d…„ ZFd†d‡„ ZGdˆd‰„ ZHdŠd‹„ ZIdŒd�„ ZJdŽd�„ ZKd�d‘„ ZLd’d“„ ZMd”d•„ ZNd–d—„ ZOd˜d™„ ZPdšd›„ ZQdœd�„ ZRdždŸ„ ZSd d¡„ ZTd¢d£„ ZUd¤d¥„ ZVd¦d§„ ZWd¨d©„ ZXdªd«„ ZYd¬d­„ ZZd®d¯„ Z[d°d±„ Z\d²d³„ Z]d´dµ„ Z^d¶d·„ Z_d¸d¹„ Z`dºd»„ Zad¼d½„ Zbd¾d¿„ ZcdÀdÁ„ ZddÂdÃ„ ZedÄdÅ„ ZfdÆdÇ„ ZgdÈdÉ„ ZhdÊdË„ ZidÌdÍ„ ZjdÎdÏ„ ZkdÐdÑ„ ZldÒdÓ„ ZmdÔdÕ„ ZndÖd×„ ZodØdÙ„ ZpdÚdÛ„ ZqdÜdÝ„ ZrdÞdß„ Zsdàdá„ Ztdâdã„ Zudädå„ Zvdædç„ Zwdèdé„ Zxdêdë„ Zydìdí„ Zzdî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�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�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›�d0�d1„ Zœ�d2�d3„ Z��d4�d5„ Zž�d6�d7„ ZŸ�d8�d9„ Z �d:�d;„ Z¡�d<�d=„ Z¢�d>�d?„ Z£�d@�dA„ Z¤�dB�dC„ Z¥�dD�dE„ Z¦�dF�dG„ Z§�dH�dI„ Z¨�dJ�dK„ Z©�dL�dM„ Zª�dN�dO„ Z«�dP�dQ„ Z¬�dR�dS„ Z­�dT�dU„ Z®�dV�dW„ Z¯�dX�dY„ Z°�dZ�d[„ Z±�d\�d]„ Z²�d^�d_„ Z³�d`�da„ Z´�db�dc„ Zµ�dd�de„ Z¶�df�dg„ Z·�dh�di„ Z¸�dj�dk„ Z¹�dl�dm„ Zº�dn�do„ Z»�dp�dq„ Z¼�dr�ds„ Z½�dt�du„ Z¾�dv�dw„ Z¿�dx�dy„ ZÀ�dz�d{„ ZÁ�d|�d}„ ZÂ�d~S (  Ú
TestCephesc                 C   s   t  d¡ d S ©Nr   )ÚcephesÚairy©Úself© r3   úW/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/scipy/special/tests/test_basic.pyÚ	test_airy0   s    zTestCephes.test_airyc                 C   s   t  d¡ d S r.   )r/   Úairyer1   r3   r3   r4   Ú
test_airye3   s    zTestCephes.test_airyec              	   C   sN  t  ddddg¡}t  ddddg¡}t  t  |d d …d f |d d d …f ¡¡ dd	¡j}t  d
dddgddddgddddgddddgg¡}ttj| ¡ |dd� t j	 
d¡ t jt  dd¡dt j	 d¡ d  f }t  dd!¡}t  t  |d d …d f |d d d …f ¡¡ dd	¡j}ttjt |d d …df |d d …d"f d# ¡|d$d$d%� d S )&NgL7‰A`åÐ?é   gÍÌÌÌÌÌ@é   é   çš™™™™™Ù?é   gffffff
@éÿÿÿÿg§±½ôÞ¸¿g	TÕ·J¤í?g®	7ÿ¾“?geL¼F¿é   g¥*è+ @r   g­M{á£Ü@g×£p=
×%@gÏ”“>èÖ@g©<² Íýw¿gúü†ð$@éˆ   g³,y¥3@iøK  gà–Êô5�@ç‚vIhÂ%<=©ÚrtoléÒ  iùÿÿÿé   éè  éô  éf   é   ç     ð?ç»½×Ùß|Û=©ÚatolrB   )Únpr   Úbroadcast_arraysÚreshapeÚTr+   r/   ÚbinomZravelÚrandomÚseedr   r   Zrand)r2   ÚnÚkÚnkZrknownr3   r3   r4   Ú
test_binom6   s6    * ÿ
ÿ


ý&* ÿ& ýzTestCephes.test_binomc              	   C   sœ   t j d¡ t jt  ddd¡ }t  dd¡}t  t  |d d …d f |d d d …f ¡¡ dd¡j	}t
tjt |d d …df |d d …df d	 ¡|d
d
d� d S )NrC   rH   é,  é   r   rG   r:   r=   rI   rJ   rK   )rM   rR   rS   r   Úlogspacer   r   rN   rO   rP   r+   r/   rQ   )r2   rT   rU   rV   r3   r3   r4   Útest_binom_2M   s    * ÿ& ýzTestCephes.test_binom_2c              	   C   sÀ   t jdd„ ƒ}t j d¡ t  dd¡}t  dd¡}t  t  |d d …d f |d d d …f ¡¡ dd¡j}||d d …df |d d …df k }t	t
j||d d …df |d d …df ƒ|ddd	� d S )
Nc                 S   sX   t | ƒ} t |ƒ}t dƒ}t dƒ}td|d ƒD ]}|||  | 9 }||9 }q.t|| ƒS ©NrH   )ÚintÚrangeÚfloat)rT   rU   ÚnumZdenÚir3   r3   r4   Ú	binom_int[   s    
z.TestCephes.test_binom_exact.<locals>.binom_intrC   rH   é   r   r:   r=   rK   )rM   Ú	vectorizerR   rS   r   r   rN   rO   rP   r+   r/   rQ   )r2   rb   rT   rU   rV   r3   r3   r4   Útest_binom_exactZ   s     

* ÿ$  ýzTestCephes.test_binom_exactc                 C   sH   ddddddddd	d
dddddg}t  |¡}ttj|dddd� ¡  d S )N)rE   rF   gìßwP–Ô~)iê  iõ  giióÞüÍ9~)iì  iö  g´ÁyhÇY~)iî  i÷  gèpvÙÀy~)ið  iø  gz¼°ºNº™~)iò  iù  gGTÉ³¹~)iô  iú  g@íjàH­Ù~)iö  iû  gF:aYÍ¦ù~)iø  iü  gè²É¸V )iú  iý  g
{øä™9)iü  iþ  gyÇVx“Y)iþ  iÿ  gù*I �y)i   i   g¯I¼¬†™)i  i  gõþW@N€¹)i  i  g5¿�†ôyÙ)r   rH   r:   çê-�™—q=rA   )rM   r   r,   r/   rQ   Úcheck)r2   Zdatasetr3   r3   r4   Útest_binom_nooverflow_8346q   s$    ñ
z%TestCephes.test_binom_nooverflow_8346c                 C   s   t t ddd¡dƒ d S )NrH   ç      à?ç      ð?)r   r/   Zbdtrr1   r3   r3   r4   Ú	test_bdtr‡   s    zTestCephes.test_bdtrc                 C   s   t t ddd¡dƒ d S ©NrH   é   ri   )r   r/   Zbdtrir1   r3   r3   r4   Ú
test_bdtriŠ   s    zTestCephes.test_bdtric                 C   s   t t ddd¡dƒ d S rl   )r   r/   Zbdtrcr1   r3   r3   r4   Ú
test_bdtrc�   s    zTestCephes.test_bdtrcc                 C   s   t t ddd¡dƒ d S ©NrH   r   ç      @)r   r/   Zbdtrinr1   r3   r3   r4   Útest_bdtrin�   s    zTestCephes.test_bdtrinc                 C   s   t  ddd¡ d S rl   )r/   Zbdtrikr1   r3   r3   r4   Útest_bdtrik“   s    zTestCephes.test_bdtrikc                 C   s   t t d¡dƒ d S ©Nr   ç        )r   r/   Úbeir1   r3   r3   r4   Útest_bei–   s    zTestCephes.test_beic                 C   s   t t d¡dƒ d S rt   )r   r/   Úbeipr1   r3   r3   r4   Ú	test_beip™   s    zTestCephes.test_beipc                 C   s   t t d¡dƒ d S ©Nr   rj   )r   r/   Úberr1   r3   r3   r4   Útest_berœ   s    zTestCephes.test_berc                 C   s   t t d¡dƒ d S rt   )r   r/   Úberpr1   r3   r3   r4   Ú	test_berpŸ   s    zTestCephes.test_berpc                 C   s   t t ddd¡dƒ d S rz   )r   r/   Z
besselpolyr1   r3   r3   r4   Útest_besselpoly¢   s    zTestCephes.test_besselpolyc                 C   sF   t t dd¡dƒ tt dd¡t d¡ƒ tt dd¡ddd	d
� d S )NrH   rj   ç33333YÀç¬÷N’~hçßà“©‚¡?é«   g6.8@r@   r   ©rB   rL   )r   r/   Úbetar   Úgammar1   r3   r3   r4   Ú	test_beta¥   s     ÿzTestCephes.test_betac                 C   s,   t t ddd¡dƒ tt ddd¡dƒ d S )NrH   rj   r‚   rƒ   rJ   gæ¯î*¶¯á?)r   r/   Úbetaincr   r1   r3   r3   r4   Útest_betainc«   s    zTestCephes.test_betaincc                 C   sF   t t dd¡dƒ tt dd¡t d¡ƒ tt dd¡ddd	d
� d S )NrH   ru   r€   r�   r‚   éª   gðIÊÀs	@ç›+¡†›„=r   r„   )r   r/   Úbetalnr   Úgammalnr1   r3   r3   r4   Útest_betaln¯   s     ÿzTestCephes.test_betalnc                 C   s2   t t ddd¡dƒ tt ddd¡dddd	� d S )
NrH   rj   r‚   rƒ   ç      Ð?g"
YxãÃ;gßÄAfcŠ=r   r„   )r   r/   Ú
betaincinvr   r1   r3   r3   r4   Útest_betaincinvµ   s      ÿzTestCephes.test_betaincinvc                 C   s   t t t dd¡¡ƒ d S )Nr=   r:   )r   rM   Úisinfr   r…   r1   r3   r3   r4   Útest_beta_infº   s    zTestCephes.test_beta_infc                 C   s   t t ddd¡dƒ d S ©NrH   rj   )r   r/   Zbtdtrr1   r3   r3   r4   Ú
test_btdtr½   s    zTestCephes.test_btdtrc                 C   s   t t ddd¡dƒ d S r”   )r   r/   Zbtdtrir1   r3   r3   r4   Útest_btdtriÀ   s    zTestCephes.test_btdtric                 C   s   t t ddd¡dƒ d S ©NrH   rq   )r   r/   Zbtdtriar1   r3   r3   r4   Útest_btdtriaÃ   s    zTestCephes.test_btdtriac                 C   s   t t ddd¡dƒ d S r—   )r   r/   Zbtdtribr1   r3   r3   r4   Útest_btdtribÆ   s    zTestCephes.test_btdtribc                 C   s   t t d¡dƒ d S r”   )r   r/   Úcbrtr1   r3   r3   r4   Ú	test_cbrtÉ   s    zTestCephes.test_cbrtc                 C   s   t t dd¡dƒ d S ©NrH   r   ru   )r   r/   Úchdtrr1   r3   r3   r4   Ú
test_chdtrÌ   s    zTestCephes.test_chdtrc                 C   s   t t dd¡dƒ d S ©NrH   r   rj   )r   r/   Úchdtrcr1   r3   r3   r4   Útest_chdtrcÏ   s    zTestCephes.test_chdtrcc                 C   s   t t dd¡dƒ d S ©NrH   ru   )r   r/   Úchdtrir1   r3   r3   r4   Útest_chdtriÒ   s    zTestCephes.test_chdtric                 C   s   t t dd¡dƒ d S )Nr   rq   )r   r/   Zchdtrivr1   r3   r3   r4   Útest_chdtrivÕ   s    zTestCephes.test_chdtrivc                 C   sl  t t ddd¡dƒ t ddddgddd	d
gddddgddddgddddgddddgddddgddddgddddgddddgd ddd!gd"ddd#gd$dddgg¡}t |d d …df |d d …df |d d …d%f ¡}t||d d …d&f d'd(� tt tjtjd¡dƒ tt d%dtj¡dƒ tt 	t tj
dd%¡¡ƒ tt 	t d)tj
d%¡¡ƒ tt 	t d)dtj
¡¡ƒ d S )*Nr   rH   ru   g      9@ç      4@i�  g¢ÚLÞ94ç       @éú   g7ÅF�hþ9çü©ñÒMbP?g      D@g‰gÃ¥cÿ;ç{®Gáz„?g	®¼åð;ç       @ék   g8»x@xò>g     €6@g—÷g1\’>>g‘ÎÜë²`>ç      @rj   gpˆ!PÜã?g     àu@g     Àr@ç      $@g jû¨
î?ç      Y@g      +@g]þÿÿï?g     à…@g4Û™ÿÿÿï?g     Àb@gþÿÿÿÿÿï?g      d@r:   rm   rf   rA   é   )r   r/   ZchndtrrM   r   r   r   r   r   r   Únan)r2   ÚvaluesZcdfr3   r3   r4   Útest_chndtrØ   s.    












ó2zTestCephes.test_chndtrc                 C   s   t t ddd¡dƒ d S ©Nr   rH   rq   )r   r/   Z	chndtridfr1   r3   r3   r4   Útest_chndtridfö   s    zTestCephes.test_chndtridfc                 C   s   t t ddd¡dƒ d S r´   )r   r/   Z	chndtrincr1   r3   r3   r4   Útest_chndtrincù   s    zTestCephes.test_chndtrincc                 C   s   t t ddd¡dƒ d S ©Nr   rH   ru   )r   r/   Zchndtrixr1   r3   r3   r4   Útest_chndtrixü   s    zTestCephes.test_chndtrixc                 C   s   t t d¡dƒ d S rz   )r   r/   Úcosdgr1   r3   r3   r4   Ú
test_cosdgÿ   s    zTestCephes.test_cosdgc                 C   s   t t d¡dƒ d S rt   )r   r/   Úcosm1r1   r3   r3   r4   Ú
test_cosm1  s    zTestCephes.test_cosm1c                 C   s   t t d¡dƒ d S ©Né-   rj   )r   r/   Úcotdgr1   r3   r3   r4   Ú
test_cotdg  s    zTestCephes.test_cotdgc                 C   s$   t t d¡dƒ tt d¡dƒ d S )Nr   ru   g®Gáz®ó?gâ¨Àfà?)r   r/   Údawsnr   r1   r3   r3   r4   Ú
test_dawsn  s    zTestCephes.test_dawsnc                 C   s^  dddg}t  dt j d ¡ t j¡}tt ||¡ddd� t  dt j d	 ¡ t j¡}tt ||¡dd
d� t  dt j d ¡ t j¡}tt ||¡dd
d� t	t dƒrÜt  dt j d ¡ t j
¡}tt ||¡ddd� dddg}t  dt j d	 ¡ t j¡}tt ||¡dd
d� t  dt j dt j dt j ¡}ddddg}tt |d¡|d
d� d S )NrH   r°   é   r:   g-Cëâ6
?rj   r<   ©Údecimalç•Ö&è.>rc   çVçž¯Ò<Úfloat128rf   é   r8   é   ç      ð¿çš™™™™™É?g£ºgúìë?gsø½OBá?g”saLÀ?g
7•I”^Ê¿rm   )rM   r   r   ÚastypeZfloat32r   r   ÚdiricÚfloat64ÚhasattrrÈ   r   )r2   Zn_oddÚxZn_evenZoctave_resultr3   r3   r4   Ú
test_diric  s&    


  ÿzTestCephes.test_diricc                 C   sJ   t  d¡}t  dddg¡}tt |d d …t jf |¡j|j|jfkƒ d S )Nr°   rH   rm   r<   )	rM   r   r   r   r   rÎ   ZnewaxisÚshapeÚsize)r2   rÑ   rT   r3   r3   r4   Útest_diric_broadcasting%  s    
z"TestCephes.test_diric_broadcastingc                 C   s   t t d¡dƒ d S r”   )r   r/   r    r1   r3   r3   r4   Útest_ellipe*  s    zTestCephes.test_ellipec                 C   s   t t dd¡dƒ d S r·   )r   r/   Ú	ellipeincr1   r3   r3   r4   Útest_ellipeinc-  s    zTestCephes.test_ellipeincc                 C   s   t  dd¡ d S )Nr   rH   )r/   Úellipjr1   r3   r3   r4   Útest_ellipj0  s    zTestCephes.test_ellipjc                 C   s   t tdƒtd ƒ d S )Nr   r:   )r   r!   r   r1   r3   r3   r4   Útest_ellipk3  s    zTestCephes.test_ellipkc                 C   s   t t dd¡dƒ d S rt   )r   r/   Ú	ellipkincr1   r3   r3   r4   Útest_ellipkinc6  s    zTestCephes.test_ellipkincc                 C   s   t t d¡dƒ d S rt   ©r   r/   Úerfr1   r3   r3   r4   Útest_erf9  s    zTestCephes.test_erfc                 C   s$   d}t t |¡t | ¡ dƒ d S )Ng ¡#8xŸ@ru   rÞ   ©r2   rÑ   r3   r3   r4   Útest_erf_symmetry<  s    zTestCephes.test_erf_symmetryc                 C   s   t t d¡dƒ d S rz   )r   r/   Úerfcr1   r3   r3   r4   Ú	test_erfc@  s    zTestCephes.test_erfcc                 C   s   t t d¡dƒ d S )Nr:   r¯   )r   r/   Úexp10r1   r3   r3   r4   Ú
test_exp10C  s    zTestCephes.test_exp10c                 C   s   t t d¡dƒ d S )Nr:   ç      @)r   r/   Úexp2r1   r3   r3   r4   Ú	test_exp2F  s    zTestCephes.test_exp2c                 C   sP   t t d¡dƒ t t tj¡tjƒ t t tj ¡dƒ t t tj¡tjƒ d S )Nr   ru   r=   )r   r/   Úexpm1rM   r   r±   r1   r3   r3   r4   Ú
test_expm1I  s    zTestCephes.test_expm1c                 C   s  t j}t|dƒdƒ t|ttjdƒƒttjdƒƒ t|ttjdƒƒttjtjƒƒ t|ttjdƒƒttj tjƒƒ t|ttjdƒƒttj tj ƒƒ t|ttjdƒƒttjtj ƒƒ t|tdtjƒƒttjtjƒƒ t|tdtjƒƒttjtjƒƒ t|ttjtjƒƒttjtjƒƒ t|ttj tjƒƒtddƒƒ t|ttj tjƒƒtddƒƒ t|ttjtjƒƒttjtjƒƒ t|tdtjƒƒttjtjƒƒ t|tdtjƒƒttjtjƒƒ t|ttjdƒƒttjtjƒƒ t|ttjtjƒƒttjtjƒƒ d S )Nù                r   rH   r:   r8   r°   r=   )r/   rê   r   ÚcomplexrM   r   r±   )r2   rê   r3   r3   r4   Útest_expm1_complexO  s"     "$"  "  "   zTestCephes.test_expm1_complexz-The real part of expm1(z) bad at these points©Úreasonc                 C   sx   t  ddddddg¡}t  t  |¡¡ }|d|  }t  dd	d
dddg¡}t |¡}t|j|jdƒ t|j|jdƒ d S )Nçš™™™™™¹?rÌ   ç333333Ó?r°   é   rY   ù              ð?y”­á=…ÿ�¼Cwˆ¯¹?yC7gg)gF<ëUŠgòÉ?yŠQØá”Š<—™âD*ÌÓ?yg:>¬Œ–<»›sKÀy>ñûÕñ¸£¼$	‹Um>lÀy;VÃél ™<„«£´å@rm   )	rM   r   r   r	   r/   rê   r   Úimagr   )r2   ÚyrÑ   ÚzÚexpectedÚfoundr3   r3   r4   Útest_expm1_complex_hardb  s    û
z"TestCephes.test_expm1_complex_hardc                 C   s0   t t ddd¡dƒ tt ddd¡ddd	� d S )
NrH   r   ru   ç�íµ ÷Æ°>r°   é
   g£�2•óÿï?rf   rA   )r   r/   Zfdtrr   r1   r3   r3   r4   Ú	test_fdtrw  s    ÿzTestCephes.test_fdtrc                 C   s0   t t ddd¡dƒ tt ddd¡ddd	� d S )
NrH   r   rj   r:   rñ   g    _ BgDô�IXlÑ?rf   rA   )r   r/   Zfdtrcr   r1   r3   r3   r4   Ú
test_fdtrc}  s    ÿzTestCephes.test_fdtrcc                 C   sD   t t ddddg¡tddgƒdd� d}t t d	d|¡d
dd� d S )NrH   gV-²�ïß?gÕxé&1à?gší
}°Ìï?g<zO'Ñð?rû   rA   g°×€í‡ì?rñ   rm   rf   )r   r/   Úfdtrir   )r2   Úpr3   r3   r4   Ú
test_fdtri„  s    
 ÿzTestCephes.test_fdtrizReturns nan on i686.c                 C   s   t t ddd¡dƒ d S )NrH   ri   )r   r/   rÿ   r1   r3   r3   r4   Útest_fdtri_mysterious_failureŒ  s    z(TestCephes.test_fdtri_mysterious_failurec                 C   s   t t ddd¡dƒ d S rp   )r   r/   Zfdtridfdr1   r3   r3   r4   Útest_fdtridfd�  s    zTestCephes.test_fdtridfdc                 C   s   t t d¡dƒ d S ©Nr   ©ru   ru   )r   r/   Úfresnelr1   r3   r3   r4   Útest_fresnel“  s    zTestCephes.test_fresnelc                 C   s   t t d¡dƒ d S ©Nr°   ç      8@)r   r/   r†   r1   r3   r3   r4   Ú
test_gamma–  s    zTestCephes.test_gammac                 C   s   t t dd¡dƒ d S )Nr°   rH   ru   )r   r/   Úgammainccinvr1   r3   r3   r4   Útest_gammainccinv™  s    zTestCephes.test_gammainccinvc                 C   s   t  d¡ d S )Nrü   )r/   r�   r1   r3   r3   r4   Útest_gammalnœ  s    zTestCephes.test_gammalnc                 C   s8   t  dddddgt j¡}tt |¡t  t |¡¡ƒ d S )Néüÿÿÿç      ÀgffffffÀrH   gÍÌÌÌÌÌ@)rM   r   rÏ   r   r/   ZgammasgnÚsignÚrgamma)r2   Úvalsr3   r3   r4   Útest_gammasgnŸ  s    zTestCephes.test_gammasgnc                 C   s   t t ddd¡dƒ d S rœ   )r   r/   Úgdtrr1   r3   r3   r4   Ú	test_gdtr£  s    zTestCephes.test_gdtrc                 C   s   t t ddtj¡dƒ d S r”   )r   r/   r  rM   r   r1   r3   r3   r4   Útest_gdtr_inf¦  s    zTestCephes.test_gdtr_infc                 C   s   t t ddd¡dƒ d S rŸ   )r   r/   Zgdtrcr1   r3   r3   r4   Ú
test_gdtrc©  s    zTestCephes.test_gdtrcc                 C   s   t t ddd¡dƒ d S r·   )r   r/   Zgdtriar1   r3   r3   r4   Útest_gdtria¬  s    zTestCephes.test_gdtriac                 C   s   t  ddd¡ d S ©NrH   r   )r/   Zgdtribr1   r3   r3   r4   Útest_gdtrib¯  s    zTestCephes.test_gdtribc                 C   s   t  ddd¡ d S ©NrH   rñ   )r/   Zgdtrixr1   r3   r3   r4   Útest_gdtrix³  s    zTestCephes.test_gdtrixc                 C   s   t  dd¡ d S r\   )r/   Úhankel1r1   r3   r3   r4   Útest_hankel1¶  s    zTestCephes.test_hankel1c                 C   s   t  dd¡ d S r\   )r/   Úhankel1er1   r3   r3   r4   Útest_hankel1e¹  s    zTestCephes.test_hankel1ec                 C   s   t  dd¡ d S r\   )r/   Úhankel2r1   r3   r3   r4   Útest_hankel2¼  s    zTestCephes.test_hankel2c                 C   s   t  dd¡ d S r\   )r/   Úhankel2er1   r3   r3   r4   Útest_hankel2e¿  s    zTestCephes.test_hankel2ec                 C   s>   t t ddd¡tdƒƒ t t ddd¡dƒ t ddd¡ d S )NrH   rj   rm   r8   éúÿÿÿg¹ãˆ®š?)r   r/   Úhyp1f1r   r1   r3   r3   r4   Útest_hyp1f1Â  s    zTestCephes.test_hyp1f1c                 C   s   t t dddd¡dƒ d S rŸ   )r   r/   Úhyp2f1r1   r3   r3   r4   Útest_hyp2f1Ç  s    zTestCephes.test_hyp2f1c                 C   s   t t d¡dƒ d S rz   )r   r/   Úi0r1   r3   r3   r4   Útest_i0Ê  s    zTestCephes.test_i0c                 C   s   t t d¡dƒ d S rz   )r   r/   Úi0er1   r3   r3   r4   Útest_i0eÍ  s    zTestCephes.test_i0ec                 C   s   t t d¡dƒ d S rt   )r   r/   Úi1r1   r3   r3   r4   Útest_i1Ð  s    zTestCephes.test_i1c                 C   s   t t d¡dƒ d S rt   )r   r/   Úi1er1   r3   r3   r4   Útest_i1eÓ  s    zTestCephes.test_i1ec                 C   s   t  d¡ d S r\   )r/   Úit2i0k0r1   r3   r3   r4   Útest_it2i0k0Ö  s    zTestCephes.test_it2i0k0c                 C   s   t  d¡ d S r\   )r/   Úit2j0y0r1   r3   r3   r4   Útest_it2j0y0Ù  s    zTestCephes.test_it2j0y0c                 C   s   t  d¡ d S r\   )r/   Z
it2struve0r1   r3   r3   r4   Útest_it2struve0Ü  s    zTestCephes.test_it2struve0c                 C   s   t  d¡ d S r\   )r/   Zitairyr1   r3   r3   r4   Útest_itairyß  s    zTestCephes.test_itairyc                 C   s   t t d¡dƒ d S r  )r   r/   Úiti0k0r1   r3   r3   r4   Útest_iti0k0â  s    zTestCephes.test_iti0k0c                 C   s   t t d¡dƒ d S r  )r   r/   Úitj0y0r1   r3   r3   r4   Útest_itj0y0å  s    zTestCephes.test_itj0y0c                 C   s   t t d¡dƒ d S rt   )r   r/   Zitmodstruve0r1   r3   r3   r4   Útest_itmodstruve0è  s    zTestCephes.test_itmodstruve0c                 C   s   t t d¡dƒ d S rt   )r   r/   Z	itstruve0r1   r3   r3   r4   Útest_itstruve0ë  s    zTestCephes.test_itstruve0c                 C   s   t t dd¡dƒ d S rœ   )r   r/   Úivr1   r3   r3   r4   Útest_ivî  s    zTestCephes.test_ivc                 C   s   t t dd¡dƒ d S rœ   )r   r/   Úiver1   r3   r3   r4   Ú
_check_iveñ  s    zTestCephes._check_ivec                 C   s   t t d¡dƒ d S rz   )r   r/   Új0r1   r3   r3   r4   Útest_j0ô  s    zTestCephes.test_j0c                 C   s   t t d¡dƒ d S rt   )r   r/   Új1r1   r3   r3   r4   Útest_j1÷  s    zTestCephes.test_j1c                 C   s   t t dd¡dƒ d S rz   )r   r/   Újnr1   r3   r3   r4   Útest_jnú  s    zTestCephes.test_jnc                 C   s   t t dd¡dƒ d S rz   )r   r/   Újvr1   r3   r3   r4   Útest_jvý  s    zTestCephes.test_jvc                 C   s   t t dd¡dƒ d S rz   )r   r/   Újver1   r3   r3   r4   Ú
_check_jve   s    zTestCephes._check_jvec                 C   s   t  d¡ d S ©Nr:   )r/   Úk0r1   r3   r3   r4   Útest_k0  s    zTestCephes.test_k0c                 C   s   t  d¡ d S rL  )r/   Úk0er1   r3   r3   r4   Útest_k0e  s    zTestCephes.test_k0ec                 C   s   t  d¡ d S rL  )r/   Úk1r1   r3   r3   r4   Útest_k1	  s    zTestCephes.test_k1c                 C   s   t  d¡ d S rL  )r/   Úk1er1   r3   r3   r4   Útest_k1e  s    zTestCephes.test_k1ec                 C   s   t  d¡ d S rL  )r/   Úkeir1   r3   r3   r4   Útest_kei  s    zTestCephes.test_keic                 C   s   t t d¡dƒ d S rt   )r   r/   Úkeipr1   r3   r3   r4   Ú	test_keip  s    zTestCephes.test_keipc                 C   s   t  d¡ d S rL  )r/   Úkerr1   r3   r3   r4   Útest_ker  s    zTestCephes.test_kerc                 C   s   t  d¡ d S rL  )r/   Úkerpr1   r3   r3   r4   Ú	test_kerp  s    zTestCephes.test_kerpc                 C   s   t  d¡ d S rL  )r/   Úkelvinr1   r3   r3   r4   Ú_check_kelvin  s    zTestCephes._check_kelvinc                 C   s   t  dd¡ d S r\   )r/   Úknr1   r3   r3   r4   Útest_kn  s    zTestCephes.test_knc                 C   s*   t t d¡dƒ tt t tj¡¡ƒ d S r¢   )r   r/   Zkolmogir   rM   r   r±   r1   r3   r3   r4   Útest_kolmogi!  s    zTestCephes.test_kolmogic                 C   s   t t d¡dƒ d S rz   )r   r/   Z
kolmogorovr1   r3   r3   r4   Útest_kolmogorov%  s    zTestCephes.test_kolmogorovc                 C   s   t t d¡dƒ d S )Nr   ç       €)r   r/   Z_kolmogpr1   r3   r3   r4   Útest_kolmogp(  s    zTestCephes.test_kolmogpc                 C   s   t t d¡dƒ d S rt   )r   r/   Z_kolmogcr1   r3   r3   r4   Útest_kolmogc+  s    zTestCephes.test_kolmogcc                 C   s*   t t d¡dƒ tt t tj¡¡ƒ d S rt   )r   r/   Z	_kolmogcir   rM   r   r±   r1   r3   r3   r4   Útest_kolmogci.  s    zTestCephes.test_kolmogcic                 C   s   t  dd¡ d S r\   )r/   Úkvr1   r3   r3   r4   Ú	_check_kv2  s    zTestCephes._check_kvc                 C   s   t  dd¡ d S r\   )r/   Úkver1   r3   r3   r4   Ú
_check_kve5  s    zTestCephes._check_kvec                 C   sL   t j}t|dƒdƒ t|dƒtj ƒ t|dƒtjƒ t|tjƒtjƒ d S )Nr   ru   r=   éþÿÿÿ)r/   Úlog1pr   rM   r   r±   )r2   rl  r3   r3   r4   Ú
test_log1p8  s
    zTestCephes.test_log1pc              	   C   sÚ  t j}t}t|dƒdƒ t||ddƒƒ|tj dƒƒ tƒ ��’}| td¡ t	||dtjƒƒ|tjtj
d ƒƒ t||dtjƒƒ|tjtjƒƒ t	||tj dƒƒ|tjtj
ƒƒ t||tjdƒƒ|tjdƒƒ t	||tj tjƒƒ|tjdtj
 d ƒƒ t	||tjtjƒƒ|tjtj
d ƒƒ t||tjtjƒƒ|tjtjƒƒ t||tj tjƒƒ|tjtjƒƒ t||tjtjƒƒ|tjtjƒƒ t||tjdƒƒ|tjtjƒƒ t||tjtjƒƒ|tjtjƒƒ W 5 Q R X d S )	Nrì   r=   r   z%invalid value encountered in multiplyrH   r:   rm   r8   )r/   rl  rí   r   rM   r   r   ÚfilterÚRuntimeWarningr   r   r±   )r2   rl  ÚcÚsupr3   r3   r4   Útest_log1p_complex?  s"    
$ ",&"$" zTestCephes.test_log1p_complexc                 C   s   t t ddd¡dƒ d S )Nr   rH   rj   )r   r/   Úlpmvr1   r3   r3   r4   Ú	test_lpmvR  s    zTestCephes.test_lpmvc                 C   s   t t dd¡dƒ d S rŸ   )r   r/   Z	mathieu_ar1   r3   r3   r4   Útest_mathieu_aU  s    zTestCephes.test_mathieu_ac                 C   s   t t dd¡dƒ d S rŸ   )r   r/   Z	mathieu_br1   r3   r3   r4   Útest_mathieu_bX  s    zTestCephes.test_mathieu_bc                 C   s    t t ddd¡dƒ tjdd„ ƒ}t dd¡}tjdt ddd	¡f }tt |d d …d f |d d d …f d
¡d ||d d …d f |d d d …f d
ƒddd� d S )NrH   r   ©rj   ru   c                 S   sÎ   |t jd 9 }| dkr2ddd| td| ƒ   S | dkrVt|ƒ|d td| ƒ  S | dkr‚td| ƒ|td	| ƒd
 d   S t| | ƒ|t| d | ƒd	| d   t| d | ƒd	| d      S d S )Né´   r   gÍ;fž æ?rH   ri   r:   é   rm   r8   é   r�   )rM   r   r	   ©ÚmÚqr÷   r3   r3   r4   Ú	ce_smallq_  s    $z.TestCephes.test_mathieu_cem.<locals>.ce_smallqéd   éâÿÿÿé÷ÿÿÿrü   ç°rh‘í|¿?r‹   r„   )	r   r/   Úmathieu_cemrM   rd   r   r   rZ   r   )r2   r~  r|  r}  r3   r3   r4   Útest_mathieu_cem[  s    

*" þzTestCephes.test_mathieu_cemc                 C   s    t t ddd¡dƒ tjdd„ ƒ}t dd¡}tjdt ddd	¡f }tt |d d …d f |d d d …f d
¡d ||d d …d f |d d d …f d
ƒddd� d S )NrH   r   ©ru   rj   c                 S   s¦   |t jd 9 }| dkr2t|ƒ|d td| ƒ  S | dkrZtd| ƒ|td| ƒ d  S t| | ƒ|t| d | ƒd| d   t| d | ƒd| d      S d S )Nrx  rH   ry  rm   r:   r8   rz  )rM   r   r   r{  r3   r3   r4   Ú	se_smallqt  s     z.TestCephes.test_mathieu_sem.<locals>.se_smallqr  r€  r�  rü   r‚  r‹   r„   )	r   r/   Úmathieu_semrM   rd   r   r   rZ   r   )r2   r†  r|  r}  r3   r3   r4   Útest_mathieu_semp  s    
*" þzTestCephes.test_mathieu_semc                 C   s   t t ddd¡dƒ d S ©NrH   r   r  )r   r/   Úmathieu_modcem1r1   r3   r3   r4   Útest_mathieu_modcem1ƒ  s    zTestCephes.test_mathieu_modcem1c                 C   sà   t  ddd¡ t dd¡d d …d d f }tjt ddd¡ d d d …d f }t ddd¡d d d d …f }t  ||| ¡d }t  ||d¡d  t  ||d¡d  }t  |||¡d  d| t  |||¡d   }t||dd	� d S )
NrH   r   r8   rk  r:   rü   r<   rJ   rA   )	r/   Úmathieu_modcem2rM   r   r   rZ   ÚlinspacerŠ  r   ©r2   r|  r}  r÷   Úy1ÚfrÚy2r3   r3   r4   Útest_mathieu_modcem2†  s    "&.zTestCephes.test_mathieu_modcem2c                 C   s   t t ddd¡dƒ d S r‰  )r   r/   Úmathieu_modsem1r1   r3   r3   r4   Útest_mathieu_modsem1•  s    zTestCephes.test_mathieu_modsem1c                 C   sÜ   t  ddd¡ t dd¡d d …d d f }tjt ddd¡ d d d …d f }t ddd¡d d d d …f }t  ||| ¡d }t  ||d¡d t  ||d¡d  }t  |||¡d d| t  |||¡d   }t||dd	� d S )
NrH   r8   rk  r:   rü   r   r<   rJ   rA   )	r/   Úmathieu_modsem2rM   r   r   rZ   r�  r“  r   rŽ  r3   r3   r4   Útest_mathieu_modsem2˜  s    "$,zTestCephes.test_mathieu_modsem2c                 C   sä   t t ddd¡tjtjfƒ t t ddd¡tjtjfƒ t t ddd¡tjtjfƒ t t ddd¡tjtjfƒ t t ddd¡tjtjfƒ t t ddd¡tjtjfƒ t t ddd¡tjtjfƒ t t 	ddd¡tjtjfƒ d S )Né'  r   gÍÌÌÌÌÌô?ç      ø?)
r   r/   rƒ  rM   r±   r‡  rŠ  r“  rŒ  r•  r1   r3   r3   r4   Útest_mathieu_overflow¥  s    z TestCephes.test_mathieu_overflowc                 C   sD   t dƒD ]6}t ddd¡}t|d ddd� t|d	 d
dd� qd S )Né<   r:   r  r=   r   g.ød‰SÂ?rJ   rA   rH   gà§GcÛì?ç-Cëâ6?)r^   r/   r•  r   )r2   rU   Úvr3   r3   r4   Útest_mathieu_ticket_1847°  s    z#TestCephes.test_mathieu_ticket_1847c                 C   s   t  d¡ d S r.   )r/   Zmodfresnelmr1   r3   r3   r4   Útest_modfresnelm¹  s    zTestCephes.test_modfresnelmc                 C   s   t  d¡ d S r.   )r/   Zmodfresnelpr1   r3   r3   r4   Útest_modfresnelp¼  s    zTestCephes.test_modfresnelpc                 C   s   t t dd¡dƒ d S rœ   )r   r/   Z	modstruver1   r3   r3   r4   Ú_check_modstruve¿  s    zTestCephes._check_modstruvec                 C   s   t t ddd¡dƒ d S r”   )r   r/   Únbdtrr1   r3   r3   r4   Ú
test_nbdtrÂ  s    zTestCephes.test_nbdtrc                 C   s   t t ddd¡dƒ d S r¢   )r   r/   Únbdtrcr1   r3   r3   r4   Útest_nbdtrcÅ  s    zTestCephes.test_nbdtrcc                 C   s   t t ddd¡dƒ d S r”   )r   r/   Únbdtrir1   r3   r3   r4   Útest_nbdtriÈ  s    zTestCephes.test_nbdtric                 C   s   t  ddd¡ d S )NrH   r;   ri   )r/   Znbdtrikr1   r3   r3   r4   Z__check_nbdtrikË  s    zTestCephes.__check_nbdtrikc                 C   s   t t ddd¡dƒ d S rp   )r   r/   Znbdtrinr1   r3   r3   r4   Útest_nbdtrinÎ  s    zTestCephes.test_nbdtrinc                 C   s   t t dddd¡dƒ d S rœ   )r   r/   Úncfdtrr1   r3   r3   r4   Útest_ncfdtrÑ  s    zTestCephes.test_ncfdtrc                 C   sJ   t t dddd¡dƒ dddg}t ddd|¡}tt ddd|¡|ƒ d S )NrH   r   ru   ri   r˜  r:   rm   )r   r/   Zncfdtrir¨  r   )r2   Úfr   r3   r3   r4   Útest_ncfdtriÔ  s    
zTestCephes.test_ncfdtric                 C   s4   dddg}t  d|dd¡}tt  d|dd¡|ƒ d S )NrH   r:   rm   r�   rc   )r/   r¨  r   Z
ncfdtridfd)r2   Zdfdr   r3   r3   r4   Útest_ncfdtridfdÚ  s    
zTestCephes.test_ncfdtridfdc                 C   s<   dddddg}t  |ddd¡}tt  |ddd¡|dd	� d S )
Nrñ   rH   r:   rm   g     ˆÃ@r�   rc   gñhãˆµøä>rA   )r/   r¨  r   Z
ncfdtridfn)r2   Údfnr   r3   r3   r4   Útest_ncfdtridfnß  s    zTestCephes.test_ncfdtridfnc                 C   s4   dddg}t  dd|d¡}tt  dd|d¡|ƒ d S )Nri   r˜  r«   r:   rm   rc   )r/   r¨  r   Z	ncfdtrinc)r2   Úncr   r3   r3   r4   Útest_ncfdtrincä  s    
zTestCephes.test_ncfdtrincc                 C   sÂ   t t ddd¡dƒ t t ddd¡dƒ tt tjdd¡dd	ƒ tt t d
tjd¡¡ƒ tt d
dtj¡dƒ tt t tjdd¡¡ƒ tt t d
tjd¡¡ƒ tt t d
dtj¡¡ƒ d S )NrH   r   ri   é	   i   r¾   ru   rj   r°   r«   r®   )	r   r/   Znctdtrr   rM   r   r   r   r±   r1   r3   r3   r4   Útest_nctdtré  s    zTestCephes.test_nctdtrc                 C   s   t  ddd¡ d S )NrH   ri   r   )r/   Z	nctdtridfr1   r3   r3   r4   Z__check_nctdtridfõ  s    zTestCephes.__check_nctdtridfc                 C   s   t  ddd¡ d S r  )r/   Z	nctdtrincr1   r3   r3   r4   Útest_nctdtrincø  s    zTestCephes.test_nctdtrincc                 C   s   t  ddd¡ d S )Nrñ   rÌ   ri   )r/   Znctdtritr1   r3   r3   r4   Útest_nctdtritû  s    zTestCephes.test_nctdtritc                 C   s   t t ddd¡dƒ d S )Nri   rH   rj   )r   r/   Znrdtrimnr1   r3   r3   r4   Útest_nrdtrimnþ  s    zTestCephes.test_nrdtrimnc                 C   s   t t ddd¡dddd� d S )Nri   ru   r   rK   )r   r/   Znrdtrisdr1   r3   r3   r4   Útest_nrdtrisd  s     ÿzTestCephes.test_nrdtrisdc                 C   s   t  dddd¡ d S r  )r/   Zobl_ang1r1   r3   r3   r4   Útest_obl_ang1  s    zTestCephes.test_obl_ang1c                 C   s2   t  ddddd¡}t|d dƒ t|d dƒ d S )NrH   r   rj   ru   )r/   Zobl_ang1_cvr   )r2   Úresultr3   r3   r4   Útest_obl_ang1_cv  s    zTestCephes.test_obl_ang1_cvc                 C   s   t t ddd¡dƒ d S ©NrH   r   r«   )r   r/   Zobl_cvr1   r3   r3   r4   Ú_check_obl_cv  s    zTestCephes._check_obl_cvc                 C   s   t  dddd¡ d S r  )r/   Zobl_rad1r1   r3   r3   r4   Útest_obl_rad1  s    zTestCephes.test_obl_rad1c                 C   s   t  ddddd¡ d S r  )r/   Zobl_rad1_cvr1   r3   r3   r4   Útest_obl_rad1_cv  s    zTestCephes.test_obl_rad1_cvc                 C   s   t  dddd¡ d S r  )r/   Zobl_rad2r1   r3   r3   r4   Útest_obl_rad2  s    zTestCephes.test_obl_rad2c                 C   s   t  ddddd¡ d S r  )r/   Zobl_rad2_cvr1   r3   r3   r4   Útest_obl_rad2_cv  s    zTestCephes.test_obl_rad2_cvc                 C   s   t t dd¡dƒ d S )NrH   r   r…  )r   r/   Úpbdvr1   r3   r3   r4   Ú	test_pbdv  s    zTestCephes.test_pbdvc                 C   s   t  dd¡ d S r  )r/   Úpbvvr1   r3   r3   r4   Ú	test_pbvv  s    zTestCephes.test_pbvvc                 C   s   t  dd¡ d S r  )r/   Zpbwar1   r3   r3   r4   Ú	test_pbwa"  s    zTestCephes.test_pbwac                 C   sB   t  dd¡}t|t d¡ƒ t  dddgd¡}t|dddgƒ d S )Nr   rH   r=   r:   )r/   Zpdtrr   rM   r   r   ©r2   Úvalr3   r3   r4   Ú	test_pdtr%  s    zTestCephes.test_pdtrc                 C   sF   t  dd¡}t|dt d¡ ƒ t  dddgd¡}t|dddgƒ d S )Nr   rH   r=   r:   ru   )r/   Zpdtrcr   rM   r   r   rÅ  r3   r3   r4   Ú
test_pdtrc,  s    zTestCephes.test_pdtrcc              	   C   s.   t ƒ �}| td¡ t dd¡ W 5 Q R X d S )Nú-floating point number truncated to an integerri   )r   rn  ro  r/   Úpdtri)r2   rq  r3   r3   r4   Ú
test_pdtri3  s    zTestCephes.test_pdtric                 C   sT   t  dd¡}tt  |d d¡dƒ t  dgdgdggdddg¡}t|t d¡ƒ d S )	Nri   rH   r   r�   çffffffî?ç#B’¡œÇ;rû   )rm   rm   )r/   Zpdtrikr   Z	gammainccr   rM   r   )r2   rU   r3   r3   r4   Útest_pdtrik8  s    zTestCephes.test_pdtrikc                 C   s   t  dddd¡ d S r  )r/   Zpro_ang1r1   r3   r3   r4   Útest_pro_ang1?  s    zTestCephes.test_pro_ang1c                 C   s    t t ddddd¡tdƒƒ d S )NrH   r   rw  )r   r/   Zpro_ang1_cvr   r1   r3   r3   r4   Útest_pro_ang1_cvB  s    ÿzTestCephes.test_pro_ang1_cvc                 C   s   t t ddd¡dƒ d S rº  )r   r/   Zpro_cvr1   r3   r3   r4   Ú_check_pro_cvF  s    zTestCephes._check_pro_cvc                 C   s   t  dddd¡ d S r  )r/   Zpro_rad1r1   r3   r3   r4   Útest_pro_rad1I  s    zTestCephes.test_pro_rad1c                 C   s   t  ddddd¡ d S r  )r/   Zpro_rad1_cvr1   r3   r3   r4   Útest_pro_rad1_cvL  s    zTestCephes.test_pro_rad1_cvc                 C   s   t  dddd¡ d S r  )r/   Zpro_rad2r1   r3   r3   r4   Útest_pro_rad2O  s    zTestCephes.test_pro_rad2c                 C   s   t  ddddd¡ d S r  )r/   Zpro_rad2_cvr1   r3   r3   r4   Útest_pro_rad2_cvR  s    zTestCephes.test_pro_rad2_cvc                 C   s   t  d¡ d S r\   )r/   Úpsir1   r3   r3   r4   Útest_psiU  s    zTestCephes.test_psic                 C   s   t t ddd¡dƒ d S r.   )r   r/   Úradianr1   r3   r3   r4   Útest_radianX  s    zTestCephes.test_radianc                 C   s   t t d¡dƒ d S r”   )r   r/   r  r1   r3   r3   r4   Útest_rgamma[  s    zTestCephes.test_rgammac                 C   sd   t t d¡dƒ t t d¡dƒ t t d¡dƒ t t d¡dƒ t t d	¡dƒ t t d
¡dƒ d S )Nç333333@r­   ç333333Àç      ÀgÍÌÌÌÌÌ@rç   gÍÌÌÌÌÌÀg      Àç      @r  )r   r/   Úroundr1   r3   r3   r4   Ú
test_round^  s    zTestCephes.test_roundc                 C   s   t  d¡ d S r\   )r/   Zshichir1   r3   r3   r4   Útest_shichif  s    zTestCephes.test_shichic                 C   sl   t  d¡ t  tj¡\}}t|tjd ƒ t|dƒ t  tj ¡\}}t|tj d ƒ tt |¡dƒ d S )NrH   ri   r   z cosine integral(-inf) is not nan)r/   ZsicirM   r   r   r   r   r   )r2   Úsrp  r3   r3   r4   Ú	test_sicii  s    

zTestCephes.test_sicic                 C   s   t t d¡dƒ d S ©NéZ   rj   )r   r/   Úsindgr1   r3   r3   r4   Ú
test_sindgt  s    zTestCephes.test_sindgc                 C   s.   t t dd¡dƒ tt t dtj¡¡ƒ d S )NrH   rñ   çÍÌÌÌÌÌì?)r   r/   Úsmirnovr   rM   r   r±   r1   r3   r3   r4   Útest_smirnovw  s    zTestCephes.test_smirnovc                 C   sR   t t dd¡dƒ t t dd¡dƒ t t dd¡dƒ tt t dtj¡¡ƒ d S )	NrH   rñ   r=   r:   ç      è?ç      à¿rm   g      È¿)r   r/   Z	_smirnovpr   rM   r   r±   r1   r3   r3   r4   Útest_smirnovp{  s    zTestCephes.test_smirnovpc                 C   sŽ   t t dd¡dƒ tt t dtj¡¡ƒ tjddddd�}tt d|¡dt 	d|¡ ƒ tjddddd�}tt d	|¡dt 	d	|¡ ƒ d S )
NrH   rñ   r   ró   T©Zendpointrm   r°   r8   )
r   r/   Ú	_smirnovcr   rM   r   r±   r�  r   ré  )r2   Úx10Zx4r3   r3   r4   Útest_smirnovc�  s    zTestCephes.test_smirnovcc                 C   sP   t t dt dd¡¡dƒ t t dt dd¡¡dƒ tt t dtj¡¡ƒ d S ©NrH   r;   ç333333ã?)r   r/   ré  Úsmirnovir   rM   r   r±   r1   r3   r3   r4   Útest_smirnovi‰  s    zTestCephes.test_smirnovic                 C   sP   t t dt dd¡¡dƒ t t dt dd¡¡dƒ tt t dtj¡¡ƒ d S rò  )r   r/   rï  Z
_smirnovcir   rM   r   r±   r1   r3   r3   r4   Útest_smirnovciŽ  s    zTestCephes.test_smirnovcic                 C   s   t t d¡dƒ d S r¢   )r   r/   Zspencer1   r3   r3   r4   Útest_spence“  s    zTestCephes.test_spencec                 C   s:   t t dd¡dƒ tt dd¡dƒ tt dd¡dƒ d S )NrH   r   ri   rë  r:   gMo˜¸þFë?)r   r/   Zstdtrr   r1   r3   r3   r4   Ú
test_stdtr–  s    zTestCephes.test_stdtrc                 C   s   t  dd¡ d S )Nçffffffæ?rH   )r/   Zstdtridfr1   r3   r3   r4   Útest_stdtridf›  s    zTestCephes.test_stdtridfc                 C   s   t  dd¡ d S )NrH   rù  )r/   Zstdtritr1   r3   r3   r4   Útest_stdtritž  s    zTestCephes.test_stdtritc                 C   s   t t dd¡dƒ d S rt   )r   r/   Ústruver1   r3   r3   r4   Útest_struve¡  s    zTestCephes.test_struvec                 C   s   t t d¡dƒ d S r½   )r   r/   Útandgr1   r3   r3   r4   Ú
test_tandg¤  s    zTestCephes.test_tandgc                 C   s   t t dd¡dƒ d S r”   )r   r/   Ztklmbdar1   r3   r3   r4   Útest_tklmbda§  s    zTestCephes.test_tklmbdac                 C   s   t  d¡ d S r\   )r/   Úy0r1   r3   r3   r4   Útest_y0ª  s    zTestCephes.test_y0c                 C   s   t  d¡ d S r\   )r/   r�  r1   r3   r3   r4   Útest_y1­  s    zTestCephes.test_y1c                 C   s   t  dd¡ d S r\   )r/   Úynr1   r3   r3   r4   Útest_yn°  s    zTestCephes.test_ync                 C   s   t  dd¡ d S r\   )r/   Úyvr1   r3   r3   r4   Útest_yv³  s    zTestCephes.test_yvc                 C   s   t  dd¡ d S r\   )r/   Úyver1   r3   r3   r4   Ú
_check_yve¶  s    zTestCephes._check_yvec                 C   s  t ddƒt ddƒt ddƒt ddƒt dd	ƒt dd
ƒt ddƒt ddƒt ddƒt ddƒt ddƒt ddƒt ddƒt ddƒt ddƒt ddƒg}t ddƒt dd ƒt d!d"ƒt d#d$ƒt d%d&ƒt d'd(ƒt d)d*ƒt d+d,ƒt d-d.ƒt d/dƒt d0d1ƒt d2d3ƒt d4d5ƒt d6d7ƒt d8d9ƒt d:d:ƒg}ttj||d;d<� d S )=Ngš™™™™�ƒ@g+û®þ·Ð¿çš™™™™™Ù¿r­   ró  r«   rË   rj   g      "Àg      "@g†4×µ/Y¾gï8EGrùñ?rÝ  gffffff@iËÿÿÿgš™™™™>@ru   g|ò°Pkš¿?ró   rH   iêÿÿÿrk  r±  iäÿÿÿé   ißÿÿÿg     jø@ç  �Ä¼ÖBg¥ï0"¢b™¾gpØªO#žM?g¡MF¦>—Æ?g5-¦®û•¿g`ø×èÙÎ?g±	SÇ+¯?g6UÎÖí€Ó?gÇ—þë¦Ê¿gjD{�?/,Gg`Ó 0Ggú!Ž^†¯?g¬nF5o°{¿gIÛþ\YÙ?g7áf¼8¾g…oC9	µ?gÿyh…¨¿gÈEÖb’ºr?g�Žÿ{€¿gÝ.Å
ýë?ga~gT-s?gÉ¤Å,P&ª?g¸|¸öÿb¿gÞ—ØY3š¿gÍ!Ø‘-�@gõi$‚bgáäÛÀhúgy(ÂV@ß^úgÒ»„ð©Ç>g½¶„ð©Ç>gx\±¼©hé<r@   rA   )rí   r+   r/   Úwofz)r2   r÷   Úwr3   r3   r4   Ú	test_wofz¹  s‚            ûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿá"zTestCephes.test_wofzN)ÃÚ__name__Ú
__module__Ú__qualname__r5   r7   rW   r[   re   rh   rk   rn   ro   rr   rs   rw   ry   r|   r~   r   r‡   r‰   rŽ   r‘   r“   r•   r–   r˜   r™   r›   rž   r¡   r¤   r¥   r³   rµ   r¶   r¸   rº   r¼   rÀ   rÂ   rÒ   rÕ   rÖ   rØ   rÚ   rÛ   rÝ   rà   râ   rä   ræ   ré   rë   rî   ÚpytestÚmarkÚxfailrú   rý   rþ   r  r  r  r  r
  r  r  r  r  r  r  r  r  r  r  r   r"  r$  r'  r)  r+  r-  r/  r1  r3  r5  r6  r7  r9  r;  r<  r=  r?  rA  rC  rE  rG  rI  rK  rN  rP  rR  rT  rV  rX  rZ  r\  r^  r`  ra  rb  rd  re  rf  rh  rj  rm  rr  rt  ru  rv  r„  rˆ  r‹  r’  r”  r–  r™  r�  rž  rŸ  r   r¢  r¤  r¦  Z_TestCephes__check_nbdtrikr§  r©  r«  r¬  r®  r°  r²  Z_TestCephes__check_nctdtridfr³  r´  rµ  r¶  r·  r¹  r»  r¼  r½  r¾  r¿  rÁ  rÃ  rÄ  rÇ  rÈ  rË  rÎ  rÏ  rÐ  rÑ  rÒ  rÓ  rÔ  rÕ  r×  rÙ  rÚ  rà  rá  rã  rç  rê  rí  rñ  rõ  rö  r÷  rø  rú  rû  rý  rÿ  r   r  r  r  r  r	  r  r3   r3   r3   r4   r-   /   s~  

	r-   c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚTestAiryc                 C   sj   t  d¡}t|tddddgƒdƒ t  d¡}t|tdd	d
dgƒdƒ t  d¡}t|tddddgƒdƒ d S )Nç®Gáz®ï?g*÷é¢…Á?gTk'kP‹Ä¿gñe¢©+ó?gýyC¯ytí?ry  g=
×£p=Ú?g‚'Ý$'Ð?ge«ªÎ¿g›‰LÐÑé?gæ
ŒHVVà?g
×£p=
×¿gl@ÆÔD|Ü?gVƒ¬~×­Í¿gU–¬äÂÜ?g¨3{É”ÉÞ?)r   r0   r   r   rá   r3   r3   r4   r5   ç  s    


zTestAiry.test_airyc                 C   sŽ   t  d¡}t  d¡}d gd }tdƒD ] }|| tdtdƒ ƒ ||< q&tddƒD ]*}|| tttdtdƒ ƒƒ ƒ ||< qRt||dƒ d S )Nrª   r8   r:   gNè´�N{?r>   )	r   r6   r0   r^   r   r   Úabsr   r   )r2   ÚaÚbÚb1rT   r3   r3   r4   r7   ñ  s    


(zTestAiry.test_airyec                 C   sÈ   t  d¡}tddgƒtddgƒtddgƒtdd	gƒf}t||d
ƒ t  d¡}t|d tdddddgƒdƒ t|d tdddddgƒdƒ t|d tdddddgƒdƒ t|d td d!d"d#d$gƒdƒ d S )%Nr:   g‘†lƒ‡Çò¿goe‰Î2+
Àg(õá0[Àg Xü*éJÀgõUfÏÝ¿gË°zU¡`Ù?g4Ðc1=Cã?gó¿CîuTè¿r8   r°   r   g²&„‡Çò¿g(Æ.÷2+
Àg²óÕð¬RÀg}þ`·í­Àg¯%ëÍ�Àró   rH   g7Ç;1[ÀgÛeì*éJÀg”Vw±Àg˜L¸¦ Àg<€É3¾ÂÀrü   gÌNÏÝ¿g3%IQ¡`Ù?gZy¡†ÎŒ×¿gÊ€1‹1^Ö?gô3þ3t�Õ¿rm   gq«M0=Cã?g7ëïuTè¿g\ÜG`¡Èê?gþpâ�žvì¿g$ß.mÂí?)r   Úbi_zerosr   r   )r2   ÚbiZbiar3   r3   r4   Útest_bi_zerosû  sP    




ý
üüüüüüüüzTestAiry.test_bi_zerosc                 C   s:   t  d¡}t|tdgƒtdgƒtdgƒtdgƒfdƒ d S )NrH   gÒác¨q´Àg!·xÛùLð¿gMóŽSt$á?g ‘~û:pæ?r8   )r   Úai_zerosr   r   )r2   Zair3   r3   r4   Útest_ai_zeros  s    
ýýzTestAiry.test_ai_zerosc                 C   sÞ   t  d¡\}}}}t  |¡\}}}}t  |¡\}}	}}dt|ƒd  }
t|ƒd }t||dd� t||dd� t||
 dddd� t|	| dddd� t|d d… d	d
ddddgdd� t|d d… ddddddgdd� d S )NéPÃ  rH   r�   rJ   rA   r   rK   r>   gÞu¨q´Àg‹qHkZÀg4µ¢Àg™é9Î–%ÀgB™~ôÊÆÀgÌL„ä˜"Àg ªæÛùLð¿gQö“Oü	ÀgMQnÈGÀg3þ:§Àg)Ê}Àg¥æîú À)r   r  r0   r  r   )r2   r÷   ÚzpZai_zpxZaip_zxZai_zZaip_zÚ_Zai_zpZaip_zpZai_envelopeZaip_enveloper3   r3   r4   Útest_ai_zeros_big#  s2      ÿþ  ÿþzTestAiry.test_ai_zeros_bigc                 C   sÞ   t  d¡\}}}}t  |¡\}}}}t  |¡\}}}}	dt|ƒd  }
t|ƒd }t||dd� t||dd� t||
 dddd� t|	| dddd� t|d d… d	d
ddddgdd� t|d d… ddddddgdd� d S )Nr!  rH   r�   rJ   rA   r   rK   r>   gx&„‡Çò¿gg†-÷2+
ÀgÁšÖð¬RÀggÑ`·í­Àgu•%ëÍ�Àg{¸àû Àg K;1[ÀgÂáì*éJÀg¬¯Vw±Àg<w¸¦ Àgd
Ê3¾ÂÀg/{Ô
"À)r   r  r0   r  r   )r2   r÷   r"  Zbi_zpxZbip_zxr#  Zbi_zZbip_zZbi_zpZbip_zpZbi_envelopeZbip_enveloper3   r3   r4   Útest_bi_zeros_big;  s2      ÿþ  ÿþzTestAiry.test_bi_zeros_bigN)	r  r  r  r5   r7   r  r   r$  r%  r3   r3   r3   r4   r  æ  s   

!r  c                   @   s   e Zd Zdd„ ZdS )ÚTestAssocLaguerrec                 C   sL   t  dd¡}t  ddd¡}t||dƒdƒ t  ddd¡}t||dƒdƒ d S )Nró   rH   rÌ   ry  )r   ÚgenlaguerreZassoc_laguerrer   )r2   Za1Za2r3   r3   r4   Útest_assoc_laguerreU  s
    z%TestAssocLaguerre.test_assoc_laguerreN)r  r  r  r(  r3   r3   r3   r4   r&  T  s   r&  c                   @   s   e Zd Zdd„ ZdS )ÚTestBesselpolyc                 C   s   d S ©Nr3   r1   r3   r3   r4   r   ^  s    zTestBesselpoly.test_besselpolyN)r  r  r  r   r3   r3   r3   r4   r)  ]  s   r)  c                   @   sœ   e Z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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 )&Ú
TestKelvinc                 C   s   t  d¡}t|ddƒ d S )Nr:   gŠ�®Tï?r°   )r   rv   r   )r2   Zmbeir3   r3   r4   rw   c  s    
zTestKelvin.test_beic                 C   s   t  d¡}t|ddƒ d S )Nr:   gDïî,Xí?r°   )r   rx   r   )r2   Zmbeipr3   r3   r4   ry   g  s    
zTestKelvin.test_beipc                 C   s   t  d¡}t|ddƒ d S )Nr:   g¦PAØ4è?r°   )r   r{   r   )r2   Zmberr3   r3   r4   r|   k  s    
zTestKelvin.test_berc                 C   s   t  d¡}t|ddƒ d S )Nr:   gß×iiŽß¿r°   )r   r}   r   )r2   Zmberpr3   r3   r4   r~   o  s    
zTestKelvin.test_berpc                 C   s(   t  d¡}t|tdddddgƒdƒ d S )Nr°   ç&jjÙ@çðŠà+é"@ç(›r…wÉ+@ç¡„™¶U2@çŸ`<ƒÆ6@r8   )r   Z	bei_zerosr   r   )r2   r  r3   r3   r4   Útest_bei_zeross  s    
üüzTestKelvin.test_bei_zerosc                 C   s(   t  d¡}t|tdddddgƒdƒ d S )Nr°   g¼€yWo.@gâ•²£Ý� @g× �Âú{)@g¡K¾„11@g›Wc"¤5@ry  )r   Z
beip_zerosr   r   )r2   Zbipr3   r3   r4   Útest_beip_zeros|  s    
üüzTestKelvin.test_beip_zerosc                 C   s(   t  d¡}t|tdddddgƒdƒ d S )Nr°   çÑ\§‘–Ê@çø6ýÙ�ô@çÓŸýHY'@ç>"¦D0@çgaO;ü�4@r8   )r   Z	ber_zerosr   r   )r2   r{   r3   r3   r4   Útest_ber_zeros„  s    
üüzTestKelvin.test_ber_zerosc                 C   s(   t  d¡}t|tdddddgƒdƒ d S )Nr°   çÖ ˜£'@ç»ÕsÒû%@çÇF ^×ï-@ç´vÛ…æj3@çÌîÉÃBÝ7@r8   )r   Z
berp_zerosr   r   )r2   Zbrpr3   r3   r4   Útest_berp_zerosŒ  s    
üüzTestKelvin.test_berp_zerosc              	   C   sr   t  d¡}t|t  d¡t  d¡d  t  d¡t  d¡d  t  d¡t  d¡d  t  	d¡t  
d¡d  fdƒ d S )Nr:   rô   ry  )r   r]  r   r{   rv   rY  rU  r}   rx   r[  rW  )r2   Zmkelvr3   r3   r4   Útest_kelvin”  s    
ýýzTestKelvin.test_kelvinc                 C   s   t  d¡}t|ddƒ d S )Nr:   g¬øàÓ>èÉ¿r°   )r   rU  r   )r2   Zmkeir3   r3   r4   rV  ›  s    
zTestKelvin.test_keic                 C   s   t  d¡}t|ddƒ d S )Nr:   grß@dª"Ì?r°   )r   rW  r   )r2   Zmkeipr3   r3   r4   rX  Ÿ  s    
zTestKelvin.test_keipc                 C   s   t  d¡}t|ddƒ d S )Nr:   gÜ™þU¥¿r°   )r   rY  r   )r2   Zmkerr3   r3   r4   rZ  £  s    
zTestKelvin.test_kerc                 C   s   t  d¡}t|ddƒ d S )Nr:   gº^.n3J»¿r°   )r   r[  r   )r2   Zmkerpr3   r3   r4   r\  §  s    
zTestKelvin.test_kerpc                 C   s(   t  d¡}t|tdddddgƒdƒ d S )Nr°   çþE�>Q@çB•š=° @çÆPN´«�)@çðmú³91@ç
�×Ø%ª5@r8   )r   Z	kei_zerosr   r   )r2   rU  r3   r3   r4   Útest_kei_zeros«  s    
üüzTestKelvin.test_kei_zerosc                 C   s(   t  d¡}t|tdddddgƒdƒ d S )Nr°   çÑW�f,º@çÉå?¤ßÎ"@ç�FZ*o·+@çôOp±¢N2@çE¦aøÀ6@r8   )r   Z
keip_zerosr   r   )r2   rW  r3   r3   r4   Útest_keip_zeros³  s    
üüzTestKelvin.test_keip_zerosc           
      C   sò   t  d¡}|\}}}}}}}}	t|tdddddgƒdƒ t|tdd	d
ddgƒdƒ t|tdddddgƒdƒ t|tdddddgƒdƒ t|tdddddgƒdƒ t|tddddd gƒdƒ t|td!d"d#d$d%gƒdƒ t|	td&d'd(d)d*gƒdƒ d S )+Nr°   r3  r4  r5  r6  r7  r8   r,  r-  r.  r/  r0  ç¬â�Ì#û?çQ½5°U‚@çq8ó«9 %@çol•`.@g‹O0žq3@r@  rA  rB  rC  rD  r9  r:  r;  r<  r=  guÍä›m.@gŽÙëÝ� @gësµû{)@g¶ä „11@gN(DÀ!¤5@çúòì£S@ç8ó«9@°@çÝ^Ò­C'@ç¾¤1ZG0@ç+¤ü¤Ú‡4@rF  rG  rH  rI  rJ  )r   Zkelvin_zerosr   r   )
r2   ÚtmpZberzZbeizZkerzZkeizZberpzZbeipzZkerpzZkeipzr3   r3   r4   Útest_kelvin_zeros¼  s„    
üüüüüüüüüüúúüüüüzTestKelvin.test_kelvin_zerosc                 C   s(   t  d¡}t|tdddddgƒdƒ d S )Nr°   rL  rM  rN  rO  gD£;ˆ�q3@r8   )r   Z	ker_zerosr   r   )r2   rY  r3   r3   r4   Útest_ker_zerosê  s    
üüzTestKelvin.test_ker_zerosc                 C   s(   t  d¡}t|tdddddgƒdƒ d S )Nr°   rP  rQ  rR  rS  rT  r8   )r   Z
kerp_zerosr   r   )r2   r[  r3   r3   r4   Útest_kerp_zerosò  s    
üüzTestKelvin.test_kerp_zerosN)r  r  r  rw   ry   r|   r~   r1  r2  r8  r>  r?  rV  rX  rZ  r\  rE  rK  rV  rW  rX  r3   r3   r3   r4   r+  b  s$   		.r+  c                   @   s   e Zd Zdd„ ZdS )ÚTestBernoullic              	   C   s*   t  d¡}t|tddddddgƒdƒ d S )Nr°   rj   rì  g-!ôlVÅ?ru   g±áé•²¡¿r8   )r   Z	bernoullir   r   )r2   Zbrnr3   r3   r4   Útest_bernoulliü  s    
ûûzTestBernoulli.test_bernoulliN)r  r  r  rZ  r3   r3   r3   r4   rY  û  s   rY  c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestBetac                 C   s:   t  dd¡}t  d¡t  d¡ t  d¡ }t||dƒ d S )Nr:   r8   r>   ry  )r   r…   r†   r   )r2   ÚbetZbetgr3   r3   r4   r‡     s    zTestBeta.test_betac                 C   s0   t  dd¡}ttt  dd¡ƒƒ}t||dƒ d S )Nr:   r8   ry  )r   rŒ   r   r  r…   r   )r2   Zbetlnr\  r3   r3   r4   rŽ     s    zTestBeta.test_betalnc                 C   s   t  ddd¡}t|ddƒ d S )NrH   rÌ   ry  )r   rˆ   r   )r2   Zbtincr3   r3   r4   r‰     s    zTestBeta.test_betaincc                 C   s,   t  ddd¡}t  dd|¡}t|ddƒ d S )Nr:   r8   ri   r°   )r   r�   rˆ   r   )r2   rö   Úcompr3   r3   r4   r‘     s    zTestBeta.test_betaincinvN)r  r  r  r‡   rŽ   r‰   r‘   r3   r3   r3   r4   r[    s   r[  c                   @   s„   e Zd Zdd„ Zej dddg¡ej dddg¡ej ddd	g¡ej d
ddg¡dd„ ƒƒƒƒZdd„ Zdd„ Z	dd„ Z
dd„ ZdS )ÚTestCombinatoricsc                 C   sÔ   t t ddgddg¡ddgƒ tt dd¡dƒ ttjdddd�dƒ ttjddddd	�d
ƒ tdd„ tdƒD ƒt dttdƒƒ¡dd� t 	t
¡jd }ttj||d dd�|ƒ d}tjdddd�|ksÐt‚d S )Nrü   rm   r8   ç      ^@g     @j@T©Úexactéx   )ra  Ú
repetitionéÜ   c                 S   s   g | ]}t jd |dd�‘qS )rY   Tr`  )r   Úcomb)Ú.0rU   r3   r3   r4   Ú
<listcomp>"  s     z/TestCombinatorics.test_comb.<locals>.<listcomp>r  rY   rÇ   ©rL   rH   l   hU7`�±Së?Q r  é2   )r   r   re  r   r   r   r^   ÚlistrM   Ziinfor]   ÚmaxÚAssertionError)r2   Úiirø   r3   r3   r4   Ú	test_comb  s     ÿzTestCombinatorics.test_combrc  TFÚlegacyrU   rÞ  rm   ÚNç      @r8   c              	   C   sº   |rL|t |ƒks|t |ƒkrLtjtdd�� tj||d||d�}W 5 Q R X ntj||d||d�}|rš|rˆt || d ƒt |ƒ }}d}nt |ƒt |ƒ }}tj||||d�}t||ƒ d S )Nz1Non-integer arguments are currently being cast to©ÚmatchT)ra  ro  rc  rH   F)ro  rc  )r]   r  ÚwarnsÚDeprecationWarningr   re  r   )r2   rp  rU   ro  rc  r¸  rø   r3   r3   r4   Útest_comb_legacy+  s$    þÿÿz"TestCombinatorics.test_comb_legacyc                 C   sL   d}d}t  |¡}t  |¡}tj||dd�}tj||dd�}||ksHt‚d S )NéF   rD   Tr`  )rM   Zint64r   re  rl  )r2   rT   rU   Znp_nZnp_kZres_npZres_pyr3   r3   r4   Útest_comb_with_np_int64I  s    

z)TestCombinatorics.test_comb_with_np_int64c                 C   s†   t tjdddd�dƒ t tjdddd�dƒ t tjdddd�dƒ t tjdddd�dƒ tt ddddgddddg¡d	d	d	d
gƒ d S )Nr:   rm   Tr`  r   r=   Frü   ru   r_  )r   r   re  r   r1   r3   r3   r4   Útest_comb_zerosR  s    
ÿz!TestCombinatorics.test_comb_zerosc                 C   sJ   t t ddgddg¡ddgƒ tt dd¡dƒ ttjdddd�dƒ d S )	Nrü   rm   r8   ç     €†@g     °³@Tr`  iÐ  )r   r   Úpermr   r   r1   r3   r3   r4   Ú	test_permZ  s    zTestCombinatorics.test_permc                 C   s†   t tjdddd�dƒ t tjdddd�dƒ t tjdddd�dƒ t tjdddd�dƒ tt ddddgddddg¡d	d	d	d
gƒ d S )Nr:   rm   Tr`  r   r=   Frü   ru   rz  )r   r   r{  r   r1   r3   r3   r4   Útest_perm_zeros_  s    
ÿz!TestCombinatorics.test_perm_zerosN)r  r  r  rn  r  r  Úparametrizerv  rx  ry  r|  r}  r3   r3   r3   r4   r^    s   	r^  c                   @   sd   e Z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d„ ZdS )ÚTestTrigonometricc                 C   s   t  d¡}d}t||ƒ d S )Né   r­   )r   rš   r   )r2   ÚcbZcbrlr3   r3   r4   r›   i  s    
zTestTrigonometric.test_cbrtc                 C   s   t  d¡}d}t||dƒ d S )Ngfffffæ;@géŽ–š…C@ry  )r   rš   r   )r2   Zcb1Zcbrl1r3   r3   r4   Útest_cbrtmoren  s    
zTestTrigonometric.test_cbrtmorec                 C   s&   t  d¡}ttd ƒ}t||dƒ d S )Nrå  r«   ry  ©r   r¹   r	   r   r   )r2   ZcdgZcdgrlr3   r3   r4   rº   s  s    
zTestTrigonometric.test_cosdgc                 C   s&   t  d¡}ttd ƒ}t||dƒ d S ©NrD   ç      @ry  rƒ  )r2   ZcdgmZcdgmrlr3   r3   r4   Útest_cosdgmorex  s    
z TestTrigonometric.test_cosdgmorec                 C   sV   t  d¡t  d¡t  td ¡f}tdƒd tdƒd ttd ƒd f}t||dƒ d S )Nr   rò   rü   rH   ry  )r   r»   r   r	   r   )r2   ÚcsZcsrlr3   r3   r4   r¼   }  s     &zTestTrigonometric.test_cosm1c                 C   s*   t  d¡}ttd ƒd }t||dƒ d S )NrD   r…  r=   ry  ©r   r¿   r
   r   r   )r2   ÚctZctrlr3   r3   r4   rÀ   ‚  s    
zTestTrigonometric.test_cotdgc                 C   s*   t  d¡}ttd ƒd }t||dƒ d S )Nr¾   rç   r=   ry  rˆ  )r2   Zct1Zctrl1r3   r3   r4   Útest_cotdgmore‡  s    
z TestTrigonometric.test_cotdgmorec                 C   sî   t t d¡ddƒ t t d¡ddƒ t t d¡ddƒ t t d¡ddƒ t t d	¡ddƒ t t d
¡ddƒ t t d¡ddƒ t t d¡ddƒ t t d¡ddƒ t t d¡ddƒ t t d¡ddƒ t t d¡ddƒ t t d¡ddƒ d S )Nr¾   rj   é   éÓÿÿÿrË   rå  ru   i¦ÿÿÿé‡   éyÿÿÿéá   éÿÿÿi  iòþÿÿé;  éÅþÿÿiý  )r   r   r¿   r1   r3   r3   r4   Útest_specialpointsŒ  s    z$TestTrigonometric.test_specialpointsc                 C   s&   t t dg¡dƒ tt d¡dƒ d S )Nr   rH   ru   rj   )r   r   Zsincr   r1   r3   r3   r4   Ú	test_sinc›  s    zTestTrigonometric.test_sincc                 C   s   t  d¡}t|dƒ d S rä  )r   ræ  r   )r2   Zsnr3   r3   r4   rç     s    
zTestTrigonometric.test_sindgc                 C   sH   t  d¡}ttd ƒ}t||dƒ t  d¡}ttd ƒ}t||dƒ d S )NrD   r…  ry  r¾   rç   )r   ræ  r   r   r   )r2   ZsnmZsnmrlZsnm1Zsnmrl1r3   r3   r4   Útest_sindgmore¤  s    

z TestTrigonometric.test_sindgmoreN)r  r  r  r›   r‚  rº   r†  r¼   rÀ   rŠ  r“  r”  rç  r•  r3   r3   r3   r4   r  h  s   r  c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú	TestTandgc                 C   s&   t  d¡}ttd ƒ}t||dƒ d S r„  ©r   rþ  r
   r   r   )r2   ÚtnZtnrlr3   r3   r4   rÿ  ¯  s    
zTestTandg.test_tandgc                 C   sH   t  d¡}ttd ƒ}t||dƒ t  d¡}ttd ƒ}t||dƒ d S )Nr¾   rç   ry  rš  r­   r—  )r2   ZtnmZtnmrlZtnm1Ztnmrl1r3   r3   r4   Útest_tandgmore´  s    

zTestTandg.test_tandgmorec                 C   sÊ   t t d¡ddƒ t t d¡ddƒ t t d¡ddƒ t t d¡ddƒ t t d	¡ddƒ t t d
¡ddƒ t t d¡ddƒ t t d¡ddƒ t t d¡ddƒ t t d¡ddƒ t t d¡ddƒ d S )Nr   ru   r‹  r¾   rj   rŒ  rË   r�  rŽ  rx  iLÿÿÿr�  r�  r‘  r’  )r   r   rþ  r1   r3   r3   r4   r“  ¼  s    zTestTandg.test_specialpointsN)r  r  r  rÿ  r™  r“  r3   r3   r3   r4   r–  ­  s   r–  c                   @   sT   e Z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 )Ú	TestEllipc                 C   s   t  dtj¡ dS )zRegression test for #912.ri   N)r   rÙ   rM   r±   r1   r3   r3   r4   Útest_ellipj_nanË  s    zTestEllip.test_ellipj_nanc                 C   s0   t  dd¡}tdƒtdƒddg}t||dƒ d S )NrÌ   r   rj   é   )r   rÙ   r   r	   r   )r2   ÚelÚrelr3   r3   r4   rÚ   Ï  s    zTestEllip.test_ellipjc                 C   sˆ   t  d¡}t|ddƒ tt  d¡tjƒ tt  d¡td ƒ tt  tj¡dƒ tt  tj¡tjƒ tt  d¡tjƒ t	t  d¡d	ƒ d S )
NrÌ   g˜;{yÑ�ú?ró   ru   rj   r:   r=   éöÿÿÿg­Õü�ÒNé?)
r   r!   r   r   r"   rM   r   r   r±   r   )r2   Úelkr3   r3   r4   rÛ   Ô  s    
zTestEllip.test_ellipkc                 C   sä  t  td d¡}t  d¡}t||dƒ dt d }dt d }t|ƒd }t  ||¡}t|ddƒ tt  td d	¡td ƒ tt  td d
¡tjƒ tt  td tj ¡d	ƒ tt  td tj	¡tj	ƒ tt  td d¡tj	ƒ tt  dd¡d	ƒ tt  tjd¡tjƒ tt  tj d¡tj ƒ tt  tjtj¡tj	ƒ tt  tjtj ¡tj	ƒ tt  tj tj ¡tj	ƒ tt  tj tj¡tj	ƒ tt  tj	d¡tj	ƒ tt  tj	tj	¡tj	ƒ t
t  dd¡ddd� t
t  dd¡dƒ d S )Nr:   rÌ   rc   rY   rx  r¾   gëfo¾Khé?ry  ru   rj   r   ri   g–±t½„ñØ?rH   r;   r‹   rA   ç6<½R–!ù?rŸ  gfäO¨•Né?)r   rÜ   r   r!   r   r   r   rM   r   r±   r   )r2   Zelkincr   ÚalphaÚphir|  r3   r3   r4   rÝ   ß  s0    
zTestEllip.test_ellipkincc                 C   s„   d}d}t  |d¡}g }tdƒD ]}| |¡ t  |d¡}q t ||¡}t|t  |d¡dƒ t |t |¡}t|t  |d¡dƒ d S )	Nç    àå?çP»ag¬í?r   rü   rH   gV»^»8jð?g,j6êÆ„@r:   )	rM   Ú	nextafterr^   Úappendr   rÜ   r   Ú	full_liker   ©r2   Zmbadr£  r|  ZmvalsÚjrª  Úf1r3   r3   r4   Útest_ellipkinc_2ü  s    
zTestEllip.test_ellipkinc_2c                 C   sD  t  ddd¡}t  ddd¡}t jdtd ddd�}tt |d	¡t  t  |¡¡d
d� tt |d	¡t  t  |¡¡d
d� tt |d	¡t  t  |¡¡d
d� t	t t jd d	¡t j
ƒ tt | d	¡t  t  | ¡¡d
d� tt | d	¡t  t  | ¡¡d
d� tt | d	¡t  t  | ¡¡d
d� t	t t j d d	¡t j
ƒ d S )NiÔþÿÿiïÿÿÿrÃ   g—ÔFFõg<rñ   r:   Frî  rH   r  rA   )rM   rZ   r�  r   r   r   rÜ   Zarcsinhr
   r   r   )r2   ZxlogZxlinZxlin2r3   r3   r4   Útest_ellipkinc_singular  s    """&&&z!TestEllip.test_ellipkinc_singularc                 C   sŠ   t  d¡}t|ddƒ tt  d¡td ƒ tt  d¡dƒ tt  tj ¡tjƒ tt  tj¡tjƒ tt  d¡tjƒ tt  d¡dƒ d S )	NrÌ   gèÑlÓ÷?ry  ru   r:   rj   rŸ  g?egô@)	r   r    r   r   r   rM   r   r±   r   )r2   Úeler3   r3   r4   rÖ     s    
zTestEllip.test_ellipec                 C   sÒ  t  td d¡}t  d¡}t||dƒ dt d dt d  }}t|ƒd }t  ||¡}t|ddƒ tt  td d	¡td ƒ tt  td d
¡d
ƒ tt  td tj ¡tjƒ tt  td tj	¡tj	ƒ tt  td d¡tj	ƒ tt  dd¡d	ƒ tt  tjd¡tjƒ tt  tj d¡tj ƒ tt  tjtj ¡tjƒ tt  tj tj ¡tj ƒ tt  tjtj¡tj	ƒ tt  tj tj¡tj	ƒ tt  tj	d¡tj	ƒ tt  tj	tj	¡tj	ƒ t
t  dd¡dƒ d S )Nr:   rÌ   r‹  é4   rx  é#   g�'ˆÉÒâ?ry  ru   rj   r   ri   r¡  rŸ  g¢‚‰çL@)r   r×   r   r    r   r   r   rM   r   r±   r   )r2   Zeleincr®  r¢  r£  r|  r3   r3   r4   rØ   &  s,    
zTestEllip.test_ellipeincc                 C   s„   d}d}t  |d¡}g }tdƒD ]}| |¡ t  |d¡}q t ||¡}t|t  |d¡dƒ t |t |¡}t|t  |d¡d	ƒ d S )
Nr¤  r¥  r   rü   rH   gà%‰¤�ë?r:   gXo«�óÆ
@r8   )	rM   r¦  r^   r§  r   r×   r   r¨  r   r©  r3   r3   r4   Útest_ellipeinc_2@  s    
zTestEllip.test_ellipeinc_2N)r  r  r  r›  rÚ   rÛ   rÝ   r¬  r­  rÖ   rØ   r±  r3   r3   r3   r4   rš  Ê  s   rš  c                   @   sN   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Ze	j
jdd�dd„ ƒZdS )ÚTestEllipCarlsonz³Test for Carlson elliptic integrals ellipr[cdfgj].
    The special values used in these tests can be found in Sec. 3 of Carlson
    (1994), https://arxiv.org/abs/math/9409227
    c                 C   sÆ   t tddƒdƒ tdtƒdks"t‚ttddƒƒs4t‚tdtdtƒƒdksLt‚tddgddgddgddgdd	gdd
ggƒ}ttjt 	d¡ddt 	d¡d dgƒ}t
|ƒD ]\}}t t|Ž || ƒ q¦d S )NrH   ru   r   r�   g      @r«   rô   ù       €      ð¿ç       ÀrË   y
cÝƒÅñ?
cÝƒÅñ¿y=‹€Bžó?C†GÀÖ¿r­   yæª fŸãè?P×9lµbÉ?)r   r#   r   rl  r   rí   r   rM   r   r   Ú	enumerate©r2   ÚargsZexpected_resultsra   Úarrr3   r3   r4   Útest_elliprcV  s(    ûûzTestEllipCarlson.test_elliprcc              	   C   s>  t tdddƒdƒ t tdddƒd dƒ tddtƒdks<t‚t tdddƒ¡sRt‚t tddtddƒƒ¡snt‚t tddtddƒƒ¡sŠt‚ttddt tj	¡j
 d ƒƒs®t‚ttddtddƒƒƒsÈt‚tddd	gddd
gdddgdddgdddgdddggƒ}tddddddgƒ}t|ƒD ]\}}t t|Ž || ƒ �qd S )NrH   r   r:   r­   gÌ`C•+ã?ru   r«   r=   rj   rç   rô   r³  ù      ð¿      ð?y       À      ð¿gfe¤_Áü?gÓÃ×i+"Å?g”P$Må?ytgöFUô?7¨·?@y™¢R<¹ý¿ý8á*Èî¿y{ ÿ6Í2ý?×zä°Œó¿)r   r$   r   rl  rM   r’   rí   r   r   ÚdoubleÚtinyr   rµ  r¶  r3   r3   r4   Útest_elliprdj  s0    $
ûûzTestEllipCarlson.test_elliprdc              
   C   s  t tdddƒdƒ t tdddƒdƒ tdtdƒdks8t‚t tdddƒ¡sNt‚ttdddƒƒsbt‚tttƒddƒdkszt‚ttddtt dƒƒƒs–t‚tdddgd	d
dgdddgdd	dgdddgd	d
dgdd	dggƒ}tdddddddgƒ}t	|ƒD ]\}}t t|Ž || ƒ qôd S )NrH   r   r:   g°PŸOùùô?ru   r=   rj   r«   rô   r³  ri   rº  r­   rç   ù      ð?      ð¿geQŸOùùô?gÊžu5Jªý?yp\©óÜyé?õª¯øôkó¿g2åÎ°â?gHw‹îÐ´ð?y­‘|pFî?-6Fjá¿)
r   r%   r   rl  rM   r’   r   rí   r   rµ  r¶  r3   r3   r4   Útest_elliprf‚  s2    
úúzTestEllipCarlson.test_elliprfc              	   C   sÜ   t tdddƒdƒ t tdddƒdƒ t tdddƒdƒ t tdtdƒ¡sLt‚t tttƒddƒ¡sft‚tdddgdddgdd	d
gdd	dgd
dd	gdddggƒ}ttjdddddgƒ}t	|ƒD ]\}}t t|Ž || ƒ q¼d S )NrH   r   ri   ru   g      0@r«   r­   rç   rô   r³  rº  g8øÂdª`´?gˆL+©›û?g’Þ}�^Û?yæ—®û0•Ü?Ê‹µêW¥æ?yjèN”×?Ó^ßì·ÒÙ?géÈ£tð?)
r   r&   rM   r’   r   rl  rí   r   r   rµ  r¶  r3   r3   r4   Útest_elliprg›  s*    
ûûzTestEllipCarlson.test_elliprgc                 C   s  t tddddƒdƒ tddtdƒdks*t‚ttddddƒƒs@t‚ttddddƒƒsVt‚tdddtƒdkslt‚tddddgdddd	gdddd
gddddgd
dddgddddgd
dddgddddgddddgg	ƒ}tdddddddddg	ƒ}t|ƒD ]\}}t t|Ž || ƒ qðd S )NrH   ru   r   r=   rj   r«   r­   rç   rq   rº  rô   r³  ù      ð¿      ð¿r¾  y      À      ð?rì  ç      Àg ‡@Üè?gÔviéMÂ?yà»ŒmÁ?\�IísØ¿g'4Obú?g›o¾0¢ î?y¨ÏÛW7ý?xfOAªó?y�¸bvš�ã¿˜Ü¶Ÿ.ñ¿g·HQ€¥Ï?gjß¡B7EÀ¿)r   r'   r   rl  r   r   rµ  r¶  r3   r3   r4   Útest_elliprj°  s6    







ø	ø	zTestEllipCarlson.test_elliprjzInsufficient accuracy on 32-bitrï   c                 C   s8   t tddddƒdddd� t td	d
ddƒdddd� d S )Ng   €ƒgq>g   `ÐW:g    H¸ÀBg   @Û˜ß?gR€yì|â>g›+¡†›„ö<rÍ  r„   g   àÀ,@g    ¥xÛ=g   @§e•:g   `Ý½Ø>gî(óHœR)A)r   r'   r1   r3   r3   r4   Útest_elliprj_hardË  s$    ý ûý ûz"TestEllipCarlson.test_elliprj_hardN)r  r  r  Ú__doc__r¹  r½  r¿  rÀ  rÃ  r  r  r  rÄ  r3   r3   r3   r4   r²  Q  s   r²  c                   @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )Ú"TestEllipLegendreCarlsonIdentitiesz½Test identities expressing the Legendre elliptic integrals in terms
    of Carlson's symmetric integrals.  These identities can be found
    in the DLMF https://dlmf.nist.gov/19.25#i .
    c                 C   s^   t  ddd¡| _ttƒj| _ddtdt  | j ¡ ddƒ  | _t  	| jg| j| jf¡| _
d S )NrË   rj   rª   r«   r=   ru   )rM   r   Zm_n1_1r   r   ÚminZmax_negÚlog2Z
very_neg_mZconcatenateÚ
ms_up_to_1r1   r3   r3   r4   Úsetup_classá  s    ÿþ

þz.TestEllipLegendreCarlsonIdentities.setup_classc                 C   s$   | j }tt|ƒtdd| dƒƒ dS )z5Test identity:
        K(m) = R_F(0, 1-m, 1)
        ru   rj   N)rÉ  r   r!   r%   ©r2   r|  r3   r3   r4   Útest_kí  s    z)TestEllipLegendreCarlsonIdentities.test_kc                 C   s>   t tƒj}|dtdt |¡ ƒ  }tt|ƒtd|dƒƒ dS )z\Test identity:
        K(m) = R_F(0, 1-m, 1)
        But with the ellipkm1 function
        r«   ru   rj   N)	r   r   r¼  r   rM   rÈ  r   r"   r%   )r2   r¼  Úm1r3   r3   r4   Útest_km1ô  s    
z+TestEllipLegendreCarlsonIdentities.test_km1c                 C   s(   | j }tt|ƒdtdd| dƒ ƒ dS )z9Test identity:
        E(m) = 2*R_G(0, 1-k^2, 1)
        r«   ru   rj   N)rÉ  r   r    r&   rË  r3   r3   r4   Útest_eÿ  s    z)TestEllipLegendreCarlsonIdentities.test_eN)r  r  r  rÅ  rÊ  rÌ  rÎ  rÏ  r3   r3   r3   r4   rÆ  Û  s
   rÆ  c                   @   sv   e Zd Zdd„ Zdd„ Zd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 )ÚTestErfc                 C   s   t  d¡}t|ddƒ d S )Nr�   g)‘;âT¯Ñ?ry  )r   rß   r   )r2   Zerr3   r3   r4   rà     s    
zTestErf.test_erfc                 C   s,   t  d¡}tdddddgƒ}t||dƒ d S )Nr°   yTücJ¹5÷?÷=ê¯Wþ?yo²ìõ@ìœnò¾î@yŸÞÖ'Ê·@¦Ž´¯g	@y»"[
¯
@•ç,y]+@y¼ldì&@-;'j'>@r8   )r   Z	erf_zerosr   r   )r2   ZerzZerzrr3   r3   r4   Útest_erf_zeros  s    
üzTestErf.test_erf_zerosr   c              	   C   sî   t j d¡ d}t j d|¡dt j dd|¡ d  }t j d|¡dt j dd|¡ d  }|d|  }t jdd	��p ||ƒ}	||ƒj}
t  |	¡}|	| }	|| }t  |
¡}|
| }
|| }t||	|||d
� t||
|||d
� W 5 Q R X d S )NrC   r—  g{®Gáz”?r:   r   rH   rô   Úignore©Úallr„   )	rM   rR   rS   ÚparetoÚrandintÚerrstater   Úisfiniter+   )r2   ÚfuncZ
other_funcrB   rL   rT   rÑ   rö   r÷   r  Zw_realÚmaskr3   r3   r4   Ú_check_variant_func  s     &&


zTestErf._check_variant_funcc                 C   s   | j tjdd„ ddd� d S )Nc                 S   s   dt  | ¡ S r\   ©r/   rß   ©r÷   r3   r3   r4   Ú<lambda>/  ó    z.TestErf.test_erfc_consistent.<locals>.<lambda>rf   r‹   r„   )rÛ  r/   rã   r1   r3   r3   r4   Útest_erfc_consistent,  s    üzTestErf.test_erfc_consistentc                 C   s   | j tjdd„ dd� d S )Nc                 S   s   t  | |  ¡t | ¡ S r*  )rM   r   r/   rã   rÝ  r3   r3   r4   rÞ  7  rß  z/TestErf.test_erfcx_consistent.<locals>.<lambda>rf   rA   )rÛ  r/   Úerfcxr1   r3   r3   r4   Útest_erfcx_consistent4  s
    ýzTestErf.test_erfcx_consistentc                 C   s   | j tjdd„ dd� d S )Nc                 S   s   dt  d|  ¡ S )Nr³  rô   rÜ  rÝ  r3   r3   r4   rÞ  >  rß  z.TestErf.test_erfi_consistent.<locals>.<lambda>rf   rA   )rÛ  r/   Úerfir1   r3   r3   r4   Útest_erfi_consistent;  s
    ýzTestErf.test_erfi_consistentc                 C   s   | j tjdd„ dd� d S )Nc                 S   s&   t tƒd t |  |  ¡ t | ¡ S rL  )r   r   rM   r   r/   rã  rÝ  r3   r3   r4   rÞ  E  rß  z/TestErf.test_dawsn_consistent.<locals>.<lambda>rf   rA   )rÛ  r/   rÁ   r1   r3   r3   r4   Útest_dawsn_consistentB  s
    ýzTestErf.test_dawsn_consistentc                 C   s6   t jt j t jg}t jddg}tt |¡|dd� d S )Nr=   rH   rÇ   rA   )rM   r±   r   r   r   rß   ©r2   r  rø   r3   r3   r4   Útest_erf_nan_infI  s    zTestErf.test_erf_nan_infc                 C   s6   t jt j t jg}t jddg}tt |¡|dd� d S )Nr:   r   rÇ   rA   )rM   r±   r   r   r   rã   ræ  r3   r3   r4   Útest_erfc_nan_infN  s    zTestErf.test_erfc_nan_infc                 C   s8   t jt j t jg}t jt jdg}tt |¡|dd� d S )Nr   rÇ   rA   )rM   r±   r   r   r   rá  ræ  r3   r3   r4   Útest_erfcx_nan_infS  s    zTestErf.test_erfcx_nan_infc                 C   s<   t jt j t jg}t jt j t jg}tt |¡|dd� d S )NrÇ   rA   )rM   r±   r   r   r   rã  ræ  r3   r3   r4   Útest_erfi_nan_infX  s    zTestErf.test_erfi_nan_infc                 C   s6   t jt j t jg}t jddg}tt |¡|dd� d S )Nrc  ru   rÇ   rA   )rM   r±   r   r   r   rÁ   ræ  r3   r3   r4   Útest_dawsn_nan_inf]  s    zTestErf.test_dawsn_nan_infc                 C   s@   t jt j t jg}t jt jd  ddg}tt |¡|dd� d S )Nrô   rì   rÇ   rA   )rM   r±   r   r   r   r  ræ  r3   r3   r4   Útest_wofz_nan_infb  s    zTestErf.test_wofz_nan_infN)r   )r  r  r  rà   rÑ  rÛ  rà  râ  rä  rå  rç  rè  ré  rê  rë  rì  r3   r3   r3   r4   rÐ    s   	
rÐ  c                   @   s   e Zd Zdd„ ZdS )Ú	TestEulerc           
      C   s
  t  d¡}t  d¡}t  d¡}t|dgdd� t|ddgdd� t|dddgdd� t  d¡}dddd	d
ddddddddg}tddƒ}tddƒD ]8}|d r´t|| ƒ |d| < q�t|| ƒ|d| < q�tjdd�� t|| | ƒ}t	|ƒ}	W 5 Q R X t
|	ddƒ d S )Nr   rH   r:   rÇ   rA   r=   rÊ   r°   é=   ii  iYÅ  i­=) iÕâl   Q~¥ l   10ÿ[¿l   Õ$8gC
 l   í2�¼³l   ¹vö}Ju: )rÃ   Údrœ  rÒ  rÓ  ru   r‹  )r   Zeulerr   r   r^   r_   rM   r×  r   rk  r   )
r2   Zeu0Zeu1Zeu2Zeu24Z	mathworldÚcorrectrU   ÚerrZerrmaxr3   r3   r4   Ú
test_euleri  s.    



  ý
zTestEuler.test_eulerN)r  r  r  rò  r3   r3   r3   r4   rí  h  s   rí  c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚTestExpc                 C   s   t  d¡}d}t||ƒ d S )Nr:   r8   )r   rè   r   ©r2   ÚexZexrlr3   r3   r4   ré   ‚  s    
zTestExp.test_exp2c                 C   s   t  d¡}d}t||dƒ d S )Nç      @gÍ;fž @ry  )r   rè   r   ©r2   ZexmZexmrlr3   r3   r4   Útest_exp2more‡  s    
zTestExp.test_exp2morec                 C   s   t  d¡}d}t||ƒ d S )Nr:   r  )r   rå   r   rô  r3   r3   r4   ræ   Œ  s    
zTestExp.test_exp10c                 C   s   t  d¡}d}t||dƒ d S )Nrö  gY—úí¤Ãs@ry  )r   rå   r   r÷  r3   r3   r4   Útest_exp10more‘  s    
zTestExp.test_exp10morec                 C   sN   t  d¡t  d¡t  d¡f}tdƒd tdƒd tdƒd f}t||dƒ d S )Nr:   rm   r8   rH   ry  ©r   rê   r   r   rô  r3   r3   r4   rë   –  s    "zTestExp.test_expm1c                 C   sN   t  d¡t  d¡t  d¡f}tdƒd tdƒd tdƒd f}t||dƒ d S )Nr:   çÍÌÌÌÌÌ @çš™™™™™@rH   ry  rú  )r2   Zex1Zexrl1r3   r3   r4   Útest_expm1more›  s    "zTestExp.test_expm1moreN)	r  r  r  ré   rø  ræ   rù  rë   rý  r3   r3   r3   r4   ró  �  s   ró  c                	   @   sº   e Zd Zdd„ Zej ddde d¡dfe d¡dfg¡d	d
„ ƒZ	dd„ Z
dd„ Zej dejdfejdfe ejg¡dfe ejg¡dfg¡dd„ ƒZejjejdkdd�dd„ ƒZdS )ÚTestFactorialFunctionsc              	   C   sœ  t t d¡dƒ t t d¡dƒ t t d¡dƒ t dddgtjddd	gd
d�ƒ t t d	dgddgg¡ddgddggƒ ttjddd�dƒ ttjddd�dƒ ttjddd�dƒ ttjd	dd�dƒ ttjddd�dƒ ttjddddgdd�ddddgƒ tt d	dgddggd¡ddgddggƒ tt t dd¡d¡t t dd¡d
¡ƒ tt t dd¡d¡t t dd¡d
¡ƒ tt t dd	¡d¡t t dd	¡d
¡ƒ dD ]:}tdt d|¡ƒ tddddgt ddddg|¡ƒ �q¬tddƒD ]¤}t |¡}t|t |d¡ƒ t|t |gd¡d ƒ t	t
|ƒt |d
¡ƒ t	t
|ƒt |gd
¡d ƒ tt |d¡t |d
¡ƒ tt |gd¡t |gd
¡ƒ �qòd S )Nr   rH   r:   r…  r	  r_  rm   r8   r°   Fr`  rb  r>   rÊ   Trc   l    XînÁr<   rü   i°  i _7 éýÿÿÿé   )TFéûÿÿÿr  )r   r   Ú	factorialr   rM   r   r   r^   Úmathr   r_   )r2   ra  rT   rð  r3   r3   r4   Útest_factorial¢  s\    
ÿÿ
ÿÿÿÿÿÿ

ÿÿz%TestFactorialFunctions.test_factorialzx, exact)rH   T)rH   FrH   TFc                 C   s   t  tj||d�¡st‚d S ©Nr`  )rM   Zisscalarr   r  rl  )r2   rÑ   ra  r3   r3   r4   Útest_factorial_0d_return_typeÜ  s    z4TestFactorialFunctions.test_factorial_0d_return_typec                 C   s8   t dddgtjdddgdd�ƒ ttjdd	d�d
ƒ d S )Ng     @Z@g      x@g     ˆ�@r<   ry  r±  Fr`  Téi   )r   r   Z
factorial2r   r1   r3   r3   r4   Útest_factorial2å  s    
ÿz&TestFactorialFunctions.test_factorial2c                 C   s0   t tjdddd�dƒ t tjdddd�dƒ d S )Nr°   rH   Tr`  rb  rm   rü   )r   r   Z
factorialkr1   r3   r3   r4   Útest_factorialkê  s    z&TestFactorialFunctions.test_factorialkc                 C   s    t j||d�}tt |¡ƒ d S r  )r   r  r   rM   r   )r2   rÑ   ra  r¸  r3   r3   r4   Útest_nan_inputsî  s    z&TestFactorialFunctions.test_nan_inputs)rm   rü   z*Python 3.10+ math.factorial() requires intrï   c              	   C   s’   t  t jdddt jg¡}tƒ �j}| td¡ tj|dd�}tt  t jdddt jg¡|ƒ tj|dd�}tt  t jdddt jg¡|ƒ W 5 Q R X d S )	NrH   r:   rm   z-Using factorial\(\) with floats is deprecatedTr`  r>   F)	rM   r   r±   r   rn  ru  r   r  r   )r2   rÑ   rq  r¸  r3   r3   r4   Útest_mixed_nan_inputsý  s    z,TestFactorialFunctions.test_mixed_nan_inputsN)r  r  r  r  r  r  r~  rM   r   r  r  r	  r±   r
  ZskipifÚsysÚversion_infor  r3   r3   r3   r4   rþ  ¡  s*   :ü
ü
	ÿrþ  c                   @   sb   e Zd Zej ddddddddd	d
ejddfej ddfg¡dd„ ƒZdd„ Z	dd„ Z
dd„ ZdS )ÚTestFresnelzz, s, c)ri   çgÌN’°?çÖ�[‘‚ß?)y      à?        r  r  )y       Àš™™™™™¹?y²n<«æÓ¿ÌÆôj¹<C¿yÿ)¬BR;ß¿u´ñx7Q»?)yš™™™™™¹¿      ø¿yÚ¾|Î¤¿}-Ðì2ç?y�ŽÇ/—¸?½�¶!�ëÛ¿)r…  çGæ²M›Ü?çpB¾×Røß?)y      @        r  r  )y              @y       €Gæ²M›Ü¿y        pB¾×Røß?)y      À        gGæ²M›Ü¿gpB¾×Røß¿)y       €      Ày        Gæ²M›Ü?y       €pB¾×Røß¿ri   rì  c                 C   s&   t t |¡ƒ}t|t ||gƒdƒ d S )Nry  )r   r   r  r   )r2   r÷   râ  rp  Úfrsr3   r3   r4   Útest_fresnel_values
  s     zTestFresnel.test_fresnel_valuesc                 C   sz   t  d¡\}}t|tdddddgƒdƒ t|tdd	d
ddgƒdƒ t  |¡d }t  |¡d }t|ddƒ t|ddƒ d S )Nr°   y‰ÒÞà @X9´ÈvÒ?y^ºI«@¡Ö4ï8EÏ?y=
×£p½@+‡ÙÎ÷Ë?yßà“©@eâX·É?y„O¯”å@Çº¸�È?rm   y.� ø1æû?ãÇ˜»–�Ó?yƒÀÊ¡E6@:#J{ƒ/Ð?yqà-�
@yé&1¬Ì?yŒÛh o@¤ß¾œ3Ê?y¨WÊ2Äq@q¬‹ÛhÈ?r   rH   r‹  )r   Úfresnel_zerosr   r   r  )r2   ÚszoÚczoZvals1Zvals2r3   r3   r4   Útest_fresnel_zeros/  s.    üûüûzTestFresnel.test_fresnel_zerosc                 C   s(   t  d¡\}}t  d¡}t||dƒ d S )Nr>   rz  )r   r  Zfresnelc_zerosr   )r2   r  r  Zfrcr3   r3   r4   Útest_fresnelc_zerosB  s    
zTestFresnel.test_fresnelc_zerosc                 C   s(   t  d¡\}}t  d¡}t||dƒ d S )Nr°   rz  )r   r  Zfresnels_zerosr   )r2   r  r  r  r3   r3   r4   Útest_fresnels_zerosG  s    
zTestFresnel.test_fresnels_zerosN)r  r  r  r  r  r~  rM   r   r  r  r  r  r3   r3   r3   r4   r  	  s"   
ã
r  c                   @   sL   e Zd Zdd„ Zdd„ Zdd„ Zedd„ ƒZed	d
„ ƒZdd„ Z	dd„ Z
dS )Ú	TestGammac                 C   s   t  d¡}t|dƒ d S r  )r   r†   r   )r2   Zgamr3   r3   r4   r
  N  s    
zTestGamma.test_gammac                 C   s(   t  d¡}tt  d¡ƒ}t||dƒ d S )Nrm   ry  )r   r�   r   r†   r   )r2   ZgamlnZlngamr3   r3   r4   r  R  s    
zTestGamma.test_gammalnc                 C   s(   t  dd¡}t  dd¡}t||dƒ d S )Nri   ry  )r   r  Úgammaincinvr   )r2   ZgccinvZgcinvr3   r3   r4   r  W  s    zTestGamma.test_gammainccinvc                 C   sv   t  dd¡}t  d|¡}t|ddƒ t  dd¡}t  dd¡}td|dd� t|ddd� t  dd¡}td	|dd� d S )
Nr;   rH   rü   gš™™™™™©?g`£	í\Þ;rÄ   ri  g¦m�áìb<g      &@)r   r  Úgammaincr   ©r2   rö   rÑ   r3   r3   r4   Útest_gammaincinv\  s    zTestGamma.test_gammaincinvc                 C   sR   dt  dd¡dt  dd¡dg}|D ]*}t d|¡}t d|¡}t||dd� q"d S )	Nr�   r   gCsÿÿÿÿÏ?rH   g^F    Ð?r;   rf   rA   )rM   r¦  r   r  r  r   )r2   ZptsZxprö   rÑ   r3   r3   r4   Útest_975h  s    
 
 þzTestGamma.test_975c                 C   s(   t  d¡}dt  d¡ }t||dƒ d S )Nry  rH   )r   r  r†   r   )r2   ZrgamZrlgamr3   r3   r4   rÚ  u  s    
zTestGamma.test_rgammac                 C   s(   t t t d¡¡ƒ tt d¡dƒ d S )Nr=   r   )r   rM   r’   r   r†   r   r  r1   r3   r3   r4   Útest_infinityz  s    zTestGamma.test_infinityN)r  r  r  r
  r  r  r*   r  r   rÚ  r!  r3   r3   r3   r4   r  M  s   

r  c                   @   sL   e Z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 )Ú
TestHankelc                 C   s"   t t dd¡t dd¡ dƒ d S ©Nrÿ  r:   rm   r‹  )r   r   r  r1   r3   r3   r4   Ú
test_negv1�  s    zTestHankel.test_negv1c                 C   s8   t  dd¡}t  dd¡t  dd¡d  }t||dƒ d S ©NrH   rñ   rô   ry  )r   r  rH  r  r   )r2   Zhank1Zhankrlr3   r3   r4   r  „  s    zTestHankel.test_hankel1c                 C   s"   t t dd¡t dd¡ dƒ d S r#  )r   r   r  r1   r3   r3   r4   Útest_negv1e‰  s    zTestHankel.test_negv1ec                 C   s0   t  dd¡}t  dd¡tdƒ }t||dƒ d S )NrH   rñ   y       €š™™™™™¹¿ry  )r   r  r  r   r   )r2   Zhank1eZhankrler3   r3   r4   r   Œ  s    zTestHankel.test_hankel1ec                 C   s"   t t dd¡t dd¡ dƒ d S r#  )r   r   r!  r1   r3   r3   r4   Ú
test_negv2‘  s    zTestHankel.test_negv2c                 C   s8   t  dd¡}t  dd¡t  dd¡d  }t||dƒ d S r%  )r   r!  rH  r  r   )r2   Zhank2Zhankrl2r3   r3   r4   r"  ”  s    zTestHankel.test_hankel2c                 C   s"   t t dd¡t dd¡ dƒ d S r#  )r   r   r#  r1   r3   r3   r4   Ú
test_neg2e™  s    zTestHankel.test_neg2ec                 C   s(   t  dd¡}t  dd¡}t||dƒ d S )NrH   rñ   ry  )r   r#  r   )r2   Zhank2eZhankrl2er3   r3   r4   Útest_hankl2eœ  s    zTestHankel.test_hankl2eN)r  r  r  r$  r  r&  r   r'  r"  r(  r)  r3   r3   r3   r4   r"    s   r"  c                   @   s\   e Z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 )Ú	TestHyperc                 C   s8   t  dd¡}t  dd¡t  dd¡d  }t||dƒ d S r%  )r   Zh1vpÚjvpÚyvpr   )r2   Zh1Zh1realr3   r3   r4   Ú	test_h1vp£  s    zTestHyper.test_h1vpc                 C   s8   t  dd¡}t  dd¡t  dd¡d  }t||dƒ d S r%  )r   Zh2vpr+  r,  r   )r2   Zh2Zh2realr3   r3   r4   Ú	test_h2vp¨  s    zTestHyper.test_h2vpc              
   C   s&  t t dd¡ddd� t t dd¡ddd� t d	d
ddddg¡}t dddddg¡}t ||dd� t d	t d
ddddg¡d ¡}t || t¡dd� dddg}dddg}t ||¡}dddg}t ||dd� t t |gd ¡|¡}t |t |gd ¡dd� tt	tjt |gd ¡ddgƒ d S )Nrö  ri   gQívîoó?rf   rA   r   rj   rÇ   r­   g      ø¿r=   rH   r˜  gÄñÌ·â?g3|t-Õ”æ?g�ßo�Ýö?g�{hùç¨ù?rì   gŸá¶cÏý?r:   rm   )
r   r   Úhyp0f1rM   r   rÍ   rí   Ú	row_stackÚassert_raisesÚ
ValueError)r2   rÑ   rø   Úx1Zx2r3   r3   r4   Útest_hyp0f1­  s*    
 ÿ 


 ÿzTestHyper.test_hyp0f1c                 C   s   t  dd¡}t|dƒ d S )Nçš™™™™™é?ù      à?      à?y;EÊGÔÒù?uMÂâé?)r   r/  r   )r2   Úresr3   r3   r4   Útest_hyp0f1_gh5764Ç  s    zTestHyper.test_hyp0f1_gh5764c              h   C   st  t  ddd¡}t|ddƒ tddddgd	d
ddgddddgddddgddddgddddgdddd gd!d"d#d$gd%d&d'd(gd)d*d+d,gd-d.d/d0gd1d2d3d4gd5d6d7d8gd9d:d;d<gd=d>d?d@gdAdBdCdDgdEdFdGdHgdIdJdKdLgdMdNdOdPgdQdRdSdTgdUdVdWdXgdYdZd[d\gd]d^d_d`gdadbdcddgdedfdgdhgdidjdkdlgdmdndodpgdqdrdsdtgdudvdwdxgdydzd{d|gd}d~dd€gd�d‚dƒd„gd…d†d‡dˆgd‰dŠd‹dŒgd�dŽd�d�gd‘d’d“d”gd•d–d—d˜gd™dšd›dœgd�dždŸd gd¡d¢d£d¤gd¥d¦d§d¨gd©dªd«d¬gd­d®d¯d°gd±d²d³d´gdµd¶d·d¸gd¹dºd»d¼gd½d¾d¿dÀgdÁdÂdÃdÄgdÅdÆdÇdÈgdÉdÊdËdÌgdÍdÎdÏdÐgdÑdÒdÓdÔgdÕdÖd×dØgdÙdÚdÛdÜgdÝdÞdßdàgdádâdãdägdådædçdègdédêdëdìgdídîdïdðgdñdòdódôgdõdöd÷døgdùdúdûdügdýdþdÿ�d g�d�d�d�dg�d�d�d�dg�d	�d
�d�dg�d�d�d�dg�d�d�d�dg�d�d�d�dg�d�d�d�dg�d�d�d�d g�d!�d"�d#�d$g�d%�d&�d'�d(g�d)�d*�d+�d,g�d-�d.�d/�d0g�d1�d2�d3�d4g�d5�d6�d7�d8g�d9�d:�d;�d<g�d=�d>�d?�d@g�dA�dB�dC�dDg�dE�dF�dG�dHg�dI�dJ�dK�dLg�dM�dN�dO�dPg�dQ�dR�dS�dTg�dU�dV�dW�dXg�dY�dZ�d[�d\g�d]�d^�d_�d`g�da�db�dc�ddg�de�df�dg�dhg�di�dj�dk�dlg�dm�dn�do�dpg�dq�dr�ds�dtg�du�dv�dw�dxg�dy�dz�d{�d|g�d}�d~�d�d€g�d��d‚�dƒ�d„g�d…�d†�d‡�dˆg�d‰�dŠ�d‹�dŒg�d��dŽ�d��d�g�d‘�d’�d“�d”ggdƒ}|D ]6\}}}}t  |||¡}tt|| ƒ| �d•k ƒ �q8d S (–  Nrñ   rò   g–ŒŒ™õ?r<   gÕ{*§=Ã ÀgÀË±aò¯)Àg5æ¯=ÀgÉv¾ŸêXÄ@g�îÀ)AI@gDA�°ÌhÀgÂ$P³j)Àg•~ÂÙ­¹@g,qÓUp–,ÀgË@=¸&Ç?gXÍÎý 3@g¬ZžÀø@gô”îÞ\@gˆ8Œ8£*@g\Ö³Ö!=@g   Æž£Ag•AZ;Àg‰OðFA'ÀgxÅ�Oõ<Àg_DÌc „òDg‰^g¿Å@g ŸëV*E7Àgíé4à)3@g7-XÌtDgÎ§ŽU(@g2Tj›‡8Àgº$Ã@g  Lý¦h¥BgëüÛe¿¼;@gJÎìgoèÿ¿grÑ›è@g `å±«õ»BgÏ5'Šë.@gqZð¢¯=Àg7ßˆîY·.Àgé8¨²wÀgB‰–Ì,@g"î^¬¯#@grTÉ[	R3@g  €¢œÓBgªºÃý²YÀg�N]ù,ã*@gÑòò*!j,Àg©³¤í1@gÃ#r¦ @g�q{874*ÀgWs%§o.@g´ÔÿMÀdDg8˜—|.2@g°*±!î”,Àg?áËÈI(#@gJ
r þß.Äg¡ªøu–÷8Àgø#ûÖ=)@g*³÷˜þ'1Àgš™™)ÏˆvAg%™0õNº:@gUxá1@gžxÎ‚@grÜ),c¾@g:³Màô8@g˜´óGb+=@g3ÒœV/@gX9Ò™im@g"d¬xz@gqùöK—ù¿gÙv7ã##@g  ð—Õñ>Bg küxž’-ÀgëD8L+8@gÞó²Üˆÿ2Àg‹72�LU¥@gtd@Q4h6@gé%ç@æ}Àgr3ýŽ¸b @gu­ß¯Ñ¡Ãgêçò‹·ºé?g"p$Ð`E2@gY|TÈ3Àgíƒ\DŒá?gV-é(ë+@g$ø•½[»3@g;/@gEQwÐ²@g[üfªÀg­ßLL4ÀgQÿ´¬V�@g0#ž.@g Õ§¤®;@g/áŽ?jvÀgx„.<ŠN&@g©óè^I•èÄgŸ‹+­9Àg‹Xþ[íó?gbZåSH%@g£â¤Õ5/)@g}ÊRgÅ¢	@gïÕ}¶Ä,*@gÎñœ6@g�1w-ØÓ@g—RAö(Àg_¢“›@g5AÔ} :=Àg   Fª�¬Agô¬ÿÎQz5@gÊq.#ÐÀgœT��qÀ&Àgõc ™·™Ü?gÏ†Û%šµ#Àg¨ZV«@
Àgý‰%@¨¾0@g   àSydÁgB˜Û½ÜŸ%@gúÝ*>¼8ÀgôV¸@Ý'Àg¶Ö	­Ê¦Àg/HŸûË:ÀgÛn@SÈ ÀgÄÀ)bÇ™9@g  À9�·óÁgTì�¹Š3!ÀgŒËD ÀgkëLFr%@g3333»`4Ag:§kƒ™
º¿g\ëæ=)²'Àgi›,ÿkŠ9Àgèbx‘®Þø?g´iøXòwÀg-Cw¤U5@g'jin…Â9Àg¬ÆÖÆX5@gb�Ëêãú@g€Tyñ4#/@g]p¿H=ÀgIŒ»Œw�?gÔ6ÕÅ3ý@g2×XxMü:@g›~?ë^0ÀgœWÊ1ŸŒŸ?gá¾Ä37Àg R€æ{Ï@gicx.4ï?gµºmÕm’?gv�Ü�%å7@g9˜M€a%=Àg}êy³ÝÀgG­r™�##@gG8-xÑ‹.@gÇ‚½@g�åhb(@g  €£’¸ÓAgþë�û¦w1@gó�Óqëø2@gO]ù,ÏË@g0É·-€ÅX@gôÍì©å2@gÌ�y# <@gÍ£xï¬á?g’‚]÷?g];¬Ë„f$@g1é”ì}¯0ÀgƒŠª_éŠ9ÀgÊû8Úƒ„@gã:!Ï‰ò1Àg†�ˆ)q(@gîåãg2ÀgÉv¾ŸÓ%)AgYöN»:+Àg”n	È°-õ?g‹¨‰>åÀgZdû|I.Agrøæ/ÛK@g\‡}Lù9@g«‡çìÓ*ÀgßÎ™„£¢?gQq5V°@gÁ¤�?š)@g'Ó¹¾@0@glìÕÛ­`@gøºVŒn:ÀgÄ¾‹RQ0Àg—÷ÝT&Àg à›Q¡C¶ÂgîR4 Œ©8ÀgÙüèiú+Àgªù…²K• @g{®G¤Ág²�t±iq+Àg(¡O?«3ÀgÀ	àÁª1=@g  8çœc‡Bg|>oÏ˜ÒÀg¨\—Ð!<@g"?4VÆ?g%®c\qñî?gÇ »’ëø¿gp�¹fP!Àg³†AO¹Ü:@g€ª¦,\Ãgº=RŽŠ8@gÿ%¤;ÀgŒôz®3@gÿ†Å~ž0«Gg.CV–l@gÜáe< ¤.@g§��»­9@g¸…kq1Ag–€ó=~†$Àgpš™ôR°7@g Ä77Àg,œ¤¹Ç†@g‹à^ðîô¿g”¢•{©)Àg—RAº2@g  dLäú Âgf=ç4,R@gy…O„Û-Àg#Þ•¸é~8@gËÌ÷ˆ—¸Åg|´Ý©%P4Àg:<„ñÓö9@gKzsž4Àg$(~ŒO4æ@gÅñ2y¹Ä3@gæ‰1ú$6Àg&TpxA¬6Àg®G!½ðJAgf^XH
^;@g7Ãøür:@g±`,…/@gš™™ùi{dAgihÉxî@g!B·òí8(@g°7Öj´�*@gò˜�Êh�¤@gæäêlmF<Àg¨Óp€OÜ4@g�’`2"@gÌÚðâ“-¦¾g¢nV3!º2@gÑ.•m–q1Àgµ!Z†“{.@gr»ûÖÛOµEg“‹sÌ`m@g“ôzAUŽÀguCÏ=V”#@g  ž\�ÂgŠPLÚ-(@g,›9$µ"9Àg6¹Îu7@g¿ÕeR´ÂFgúðÆÝw8Àgƒv=5@gÄjâÓRW+ÀgÃõ(\«-æ@gŠyó§ÏÀg~=—ŠÈ@gç4MÐVÀgw±zÑä:@g˜^0ò‘ÜÀg+î‰¿7¯%Àg-@Ûj81Àg5¶×‚Þ,jÀgj¯ô�ß4ÀgˆÇz0Àg¸­-</Ý;Àg…ºÝ½]
DgáNØ4ý3@g¤}ˆW6@gLªUS!9ÀgäØÞÉ�F>g ž€�Q4@g=Ÿàæ}­ÀgÇÕÈ®´5@g¿Ç]nhgFg—æV«9ÀgÒÐé”9Àgfž9ó,#ÀgF|}fvÑ?g=^°ee;@gy›’}2Àg¥'Tà> Àg#…�o@g•÷Ìí¹+5Àg™±�È;ÀgN8CgÓ8@g   Çbk²Ag´ÎSx+26@g™œÚ¦@g‡ÚÛÒI0ÀgéSÀ•M­C¾gTÝ‹*0@gŸ`<¯6ÀgóWy¹5@gûƒÇŸRjùÆgÓ°kÍ
Àg Ïß/:õ?gJLHRË"@g±x ìu-ÀgŠKÀuæò@g¬œÁôù6Àg¼t8_‘x7@gdý;Ëõ='Æg+:í„ò;@gBªÍ¤ò10@g";Àª²Ãæ¿gK$¼Ó?gp›ã»Í @g òñd’üÀgœ‰�	�=@g=§6`²¥ Fg²TÍbR.Àg³±·9:g3@gUùà­ÚfÀgRb×öKZ@gÓâ¥þ¬!Àg%ÏP7«3;ÀgûÀ]‰þ?gr	òyæý?g)Yóˆvº2ÀgÈ¹¨qÊ@gñ¦¶/û3Àg   ¸ž®Ag©?j/|öá¿g¡š7óò:@g‹#~áoÝ½?g8çpEìï?g²ÖPj/ÆÀgS�ÄÖ"X)Àg©�Y¬Àgt¢—0N»?g¤»ìù�Àgo&	xT7@gá-hT@#@g.;Éø%rÓ?g·Ø'_ @gÉ–@¥¥ç7Àg‘:KÚžÖ$@g ð[™ŠÅBgØk5Úº9ÀgÑ¼ÒèÄ:ÀgÊk%t—p;@g  .<Ûÿ^Âgf¶Ð:OI&ÀgžÐëOâ/Àg´#01ñ|2Àg´­f�ñ`YÀgqÓv~@g©uÑFdü9@gØz+·S7ÀgÊF1Š/$‰?gíx¤°3Àg~…[6:Àg;ŠsÔÑ9@gÉÀKºw*1@gÈP€îì@gvïò¾;K,ÀgÒ¬ÇØd&<@g—!³õºsÆgÔÖˆ`|.ÀgOwžxÎø=@gå+ÜMK“<Àg›UŸ«UÃÉ@gÚ©ÚêI÷@gÂ©jÝG1ÀgÂ4gØƒ66@g(ë4Î½4EgøS¡‰É>×?gDß-íl¸¿g–SLï,c<ÀgÔ‰åE4î?gd�?A÷ç Àg�„3$)ÀgùlxÕ^¿ò?gs>Èô|Tó?g(%ˆãŽá@g:Ä‰ù»$@g~ê³^gv2ÀgJ‹HF&–°?g}rØ"Š:@g3�Ç\¾z;@go¦ø®÷á)@g+‡h¨Ag©¶@')ý"ÀgùÔV‘vü/@guQ™Uë-ÀgföyŒ2yt@gM6y%$‘Àg/Œ;Rï#@güšöÞ):@gw%",Å6Ô¿g¬%xžÓ'Àg¸ª‘°$6ÀgÜÚ­ÅÄ5Àgu$9ŽÄ?gl¦k»C9Àgâ<œÀtF8ÀgÅpôçÁô?gï¢ õ?r›  )r   r&  r   r   r   r  )r2   Úhyp1Zref_datar  r  rp  rø   r¸  r3   r3   r4   r'  Î  sÔ    




























































�ezTestHyper.test_hyp1f1c                 C   s,   t  ddd¡}t  ddd¡}t||dƒ d S )Nri   r˜  g7úþB.†Àg|:úþB.†Àrz  ©r   r&  r   )r2   r9  Zhyp2r3   r3   r4   Útest_hyp1f1_gh2957@	  s    zTestHyper.test_hyp1f1_gh2957c                 C   s   t  ddd¡}t|ddƒ d S )Nri   r˜  iüÿÿgÅ<`÷’²œ?rz  r:  )r2   Zhypr3   r3   r4   Útest_hyp1f1_gh2282E	  s    zTestHyper.test_hyp1f1_gh2282c           	      C   s²  dddddt dƒ gdddddtd	ƒ gddd
d	dt dƒ gdddddgdddtd	ƒd
 tdƒgddddt d¡t d¡ t d¡ t d¡ gdd
d
ddttƒ t d
¡ t d¡ t d¡ gdd
dddttƒ t d¡ t d¡ t d¡ gdddddt d¡ t d¡ t d¡ t d¡ gdd d!d"d#gd$ddd%d&gd
ddd%d'gd(ddd%d)gd
d*dd%d+gd,d-g}t|ƒD ]8\}\}}}}}t 	||||¡}t
||dd.| d/� �qtd S )0Nri   rH   r˜  g|®Gáz¤?rö  gÿÿÿÿÿÿ÷?g|®Gáz¤¿rq   rÌ   r:   rÂ  r5  rm   rÞ  gŒYiô2õ?rÿ  g433333ó?r8   ry  r°   r=   g      À?r«   g       ?r­   rq  g      ÀgUUUUUUÕ¿g  º†@gUUUUUUõ?g«ªªªªªÀrì  rj   ç      $ÀgEciH!…@rk  rÌ  gáz®Gáæ?gyé&1¬|¿r%  g"nN%@?r  g!¡JÍþ¾)rü   é|üÿÿç      %@r  g²z˜SŽ;)rü   r>  g      %Àr  g[�B.—VP<útest #%d©Úerr_msg)r   r   r   r	   r   r†   r   r   rµ  r(  r   )	r2   r²   ra   r  r  rp  rÑ   rœ  Úcvr3   r3   r4   r)  I	  sP    ÿ0ÿÿÿÿÿÿÿÿÿézTestHyper.test_hyp2f1c                 C   sà   t  ddd¡}t|ddƒ dddd	gd
dddg }}t|ƒt|ƒ }}d}t  |||¡}ttt| ƒ t  |||¡t  d| | ¡t  |¡  |d|  t  d| | d| |¡ t  |¡t  d| ¡    }t||dƒ d S )NrH   rñ   r  gÑà D„?r<   rò   ró  ç333333ó?gš™™™™™Àr˜  gš™™™™™	@r
  gš™™™™™	Àri   r:   rz  )	r   Úhyperur   r   r   r   r&  r†   r   )r2   Zval1r  r  r÷   ZhypuZhprlr3   r3   r4   Útest_hyperuh	  s    ÿ$ÿþzTestHyper.test_hyperuc                 C   s   t t ddd¡ddƒ d S )NrH   r˜  g3333334@g«ð(ÃÂ¨?rz  )r   r   rE  r1   r3   r3   r4   Útest_hyperu_gh2287u	  s     ÿzTestHyper.test_hyperu_gh2287N)r  r  r  r-  r.  r4  r8  r'  r;  r<  r)  rF  rG  r3   r3   r3   r4   r*  ¢  s   rr*  c                   @   s¨  e Z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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+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zd;d<„ Z d=d>„ Z!d?d@„ Z"dAdB„ Z#dCdD„ Z$dEdF„ Z%dGdH„ Z&dIdJ„ Z'dKdL„ Z(dMdN„ Z)dOdP„ Z*dQdR„ Z+dSdT„ Z,dUdV„ Z-dWdX„ Z.dYdZ„ Z/d[d\„ Z0d]d^„ Z1d_d`„ Z2d ddde„Z3e4j5j6e7 8¡ dfkdgdh�didj„ ƒZ9e4j5j6e7 8¡ dfkdgdh�dkdl„ ƒZ:dmdn„ Z;dodp„ Z<e4j5j=dqdr„ ƒZ>dsdt„ Z?dudv„ Z@dwdx„ ZAdydz„ ZBd{d|„ ZCd}d~„ ZDdd€„ ZEd¡d‚dƒ„ZFd„d…„ ZGd†d‡„ ZHdˆd‰„ ZIdŠd‹„ ZJdŒd�„ ZKdŽd�„ ZLd�d‘„ ZMd’d“„ ZNd”d•„ ZOd–d—„ ZPd˜d™„ ZQdšd›„ ZRdœd�„ ZSdždŸ„ ZTdcS )¢Ú
TestBesselc                 C   s&   t t d¡ƒ}t|t ddgƒdƒ d S )NrÌ   gîb�“ÉƒÉ?gÎ�Jö Ö¿ry  )r   r   r:  r   )r2   Zit0r3   r3   r4   r;  {	  s    zTestBessel.test_itj0y0c                 C   s&   t t d¡ƒ}t|t ddgƒdƒ d S )NrÌ   gbqòÌTtt?g/]ÃooÊÛ¿ry  )r   r   r4  r   )r2   Zit2r3   r3   r4   r5  	  s    zTestBessel.test_it2j0y0c                 C   s   t t dd¡t dd¡ƒ d S ©Nrm   r:   rÿ  )r   r   r>  r1   r3   r3   r4   Útest_negv_ivƒ	  s    zTestBessel.test_negv_ivc                 C   s&   t  d¡}t  dd¡}t||dƒ d S ©Nrñ   r   ry  )r   rB  rF  r   ©r2   ZozZozrr3   r3   r4   rC  †	  s    
zTestBessel.test_j0c                 C   s&   t  d¡}t  dd¡}t||dƒ d S ©Nrñ   rH   ry  )r   rD  rF  r   ©r2   Zo1Zo1rr3   r3   r4   rE  ‹	  s    
zTestBessel.test_j1c                 C   s   t  dd¡}t|ddƒ d S )NrH   rÌ   çÕ;öâx¹?ry  )r   rF  r   )r2   Zjnnrr3   r3   r4   rG  �	  s    zTestBessel.test_jnc                 C   s"   t t dd¡t dd¡ dƒ d S r#  )r   r   rH  r1   r3   r3   r4   Útest_negv_jv”	  s    zTestBessel.test_negv_jvc                 C   sh   dddgdddgdddgd	dd
gdddgg}t |ƒD ].\}\}}}t ||¡}t||dd| d� q4d S )Nr   rñ   g³
Yeˆëï?gUUUUUUå?ç:Œ0âŽyE>gË¿ÀÀÂ+Ë>rJ   g)%¡›¹-„>gÍÌÌÌÌÌ@g5Ôc)Ç!9rç   g%²,ÄÍ¿ry  r@  rA  )rµ  r   rH  r   )r2   r²   ra   rœ  rÑ   rö   Zycr3   r3   r4   rI  —	  s    üzTestBessel.test_jvc                 C   s"   t t dd¡t dd¡ dƒ d S r#  )r   r   rJ  r1   r3   r3   r4   Útest_negv_jve¢	  s    zTestBessel.test_negv_jvec                 C   sT   t  dd¡}t|ddƒ t  dd¡}d}t  d|¡tt|jƒ ƒ }t||dƒ d S )NrH   rÌ   rO  ry  ùš™™™™™É?      ð?)r   rJ  r   rH  r   r  rõ   )r2   ZjvexpZjvexp1r÷   Zjvexprr3   r3   r4   Útest_jve¥	  s    zTestBessel.test_jvec                 C   s    t  dd¡}t  dd¡}t|tdddddgƒd	ƒ t|td
ddddgƒd	ƒ t  dd¡}t|tdddddgƒdd� t  dd¡}t|tdddddgƒdd� d S )Nr   r°   rH   go@—.=@gzj,[�@g“ÆÌlµN!@g5/ƒ D•'@g”hó>¡Ü-@r8   çžŽ’W§@ç”0Óö@ç›¬QÑX$@ç ²º¥*@ç8„*5{x0@rG   g’Eèk¹[@g÷~CÅju]@gYrÊ�ìì^@g�Ê,Æ `@gò»f	À`@r@   rA   é-  g“õ¦t™s@g&»Ç­r3t@gWú¦þ’³t@gæ,‘$Y&u@gëú­…†�u@)r   Újn_zerosr   r   r   )r2   Újn0Zjn1Zjn102Zjn301r3   r3   r4   Útest_jn_zeros­	  sH    üüüüüüüüzTestBessel.test_jn_zerosc                 C   s°   t  dd¡}t|d ddd� t|d ddd� t|d	 d
dd� t  dd¡}t|d ddd� t|d ddd� t|d	 ddd� t  dd¡}t|tdddddgƒdd� d S )Nr   rX   i  gç¾;€‰@r@   rA   i  g¬8ç¯âv‹@i+  g×‚MŠm�@rü   gíxæÙiý‰@g‡	,ô‹@gÐ¸{>Éê�@iÂ  r°   gU´DX»¹§@g×ÒÈ!â§@g*±HÄS¨@g¾zú5Á ¨@g@–2�º;¨@rQ  )r   r[  r   r   )r2   r\  Zjn10Zjn3010r3   r3   r4   Útest_jn_zeros_slowÉ	  s"    üüzTestBessel.test_jn_zeros_slowc           
         s˜   t j‰ ‡ fdd„}tddƒD ]v}t  |¡\}}}}t|||ƒD ]R\}}}	|	dkrftˆ ||ƒddd� q>|	dkr„t|||ƒddd� q>td| ƒ‚q>qd S )	Nc                    s    ˆ | d |ƒˆ | d |ƒ d S )NrH   r:   r3   )rT   rÑ   ©rF  r3   r4   ÚjnpÞ	  s    z(TestBessel.test_jnjnp_zeros.<locals>.jnprH   rD   r   rû   rh  zInvalid t return for nt=%d)r   rF  r^   Zjnjnp_zerosÚzipr   rl  )
r2   r`  Úntr÷   rT   r|  ÚtÚzzÚnnÚttr3   r_  r4   Útest_jnjnp_zerosÛ	  s    zTestBessel.test_jnjnp_zerosc                 C   sL   t  dd¡}t|tdddddgƒdƒ t  d	d¡}tt  d	|¡d
dd� d S )NrH   r°   çÚÉà(yuý?çOXâeS@ç¦aøˆ˜!@ç¶óýÔxi'@ç'Nîw(º-@r8   é»  r   rÇ   rh  )r   Z	jnp_zerosr   r   r   r+  )r2   r`  r3   r3   r4   Útest_jnp_zerosê	  s    üüzTestBessel.test_jnp_zerosc                 C   s\   t  dd¡}t|tdddddgƒtdd	d
ddgƒtdddddgƒtdddddgƒfdƒ d S )NrH   r°   rU  rV  rW  rX  rY  rh  ri  rj  rk  rl  çÞå"¾“@g+û®þ·@gŒ-9(1!@gÈ˜»–�'@g–>tA}Ë-@g‚”0Óv@gj¼t“Ä@g§èH.?$@gŠ}"O’*@gG¬Å§p0@)r   Z
jnyn_zerosr   r   )r2   Zjnzr3   r3   r4   Útest_jnyn_zerosô	  s8    üüüüñízTestBessel.test_jnyn_zerosc                 C   s8   t  dd¡}t  dd¡t  dd¡ d }t||dƒ d S )Nr:   rH   rm   rü   )r   r+  rH  r   )r2   ZjvprimZjv0r3   r3   r4   Útest_jvp
  s    zTestBessel.test_jvpc                 C   s&   t  d¡}t  dd¡}t||dƒ d S rK  )r   rM  rg  r   )r2   ZozkZozkrr3   r3   r4   rN  
  s    
zTestBessel.test_k0c                 C   s&   t  d¡}t  dd¡}t||dƒ d S rK  )r   rO  ri  r   )r2   ZozkeZozkerr3   r3   r4   rP  
  s    
zTestBessel.test_k0ec                 C   s&   t  d¡}t  dd¡}t||dƒ d S rM  )r   rQ  rg  r   )r2   Zo1kZo1krr3   r3   r4   rR  
  s    
zTestBessel.test_k1c                 C   s&   t  d¡}t  dd¡}t||dƒ d S rM  )r   rS  ri  r   )r2   Zo1keZo1kerr3   r3   r4   rT  
  s    
zTestBessel.test_k1ec           
      C   s  dt j ¡  d }dt j ¡  d }t d||¡}t d||¡}t d||¡}t d||¡}t|jdgdƒ t|jt|| d || gƒd dƒ || d || d  d|| d  |d  d|d  |d  g}|d |d d|d   |d |d  |d  g}t|jt|ƒd	 dƒ || d || d  || d
  d
|| d  || d  |d  d|| d  |d  |d  d|d  |d  |d  g}|d |d d|d   |d d|d   d|d   |d |d  |d  |d  g}	t|jt|	ƒd dƒ d S )Nr°   rH   r   r:   rm   rœ  r«   r8   r§   r>   rz  ry  g      H@)rM   rR   r   Zjacobir   rp  r   )
r2   r  r  ZP0ZP1ZP2ZP3ÚcpZp2cZp3cr3   r3   r4   Útest_jacobi$
  s"    &B2D ÿXzTestBessel.test_jacobic                 C   s   t  dd¡}t|ddƒ d S )Nr   rÌ   ç_±2ü?ry  )r   r_  r   )r2   Zkn1r3   r3   r4   r`  6
  s    zTestBessel.test_knc                 C   s   t t dd¡t dd¡ƒ d S ©Nr­   rü  rÝ  ©r   r   rg  r1   r3   r3   r4   Útest_negv_kv:
  s    zTestBessel.test_negv_kvc                 C   s   t  dd¡}t|ddƒ d S )Nr   rÌ   rt  rü   ©r   rg  r   )r2   Zkv0r3   r3   r4   Útest_kv0=
  s    zTestBessel.test_kv0c                 C   s   t  dd¡}t|ddƒ d S )NrH   rÌ   gKçÞ‹˜@rü   rx  )r2   Úkv1r3   r3   r4   Útest_kv1A
  s    zTestBessel.test_kv1c                 C   s   t  dd¡}t|ddƒ d S )Nr:   rÌ   g¢)lH—ÁH@rü   rx  )r2   Úkv2r3   r3   r4   Útest_kv2E
  s    zTestBessel.test_kv2c                 C   s   t t dd¡dƒ d S )Né    rH   gÜ.€Õ”"éH)r   r   r_  r1   r3   r3   r4   Útest_kn_largeorderI
  s    zTestBessel.test_kn_largeorderc                 C   s   t t dd¡dƒ d S )Nr   g =‘`äXáCrv  r1   r3   r3   r4   Útest_kv_largeargL
  s    zTestBessel.test_kv_largeargc                 C   s   t t dd¡t dd¡ƒ d S ru  )r   r   ri  r1   r3   r3   r4   Útest_negv_kveO
  s    zTestBessel.test_negv_kvec                 C   s`   t  dd¡}t  dd¡tdƒ }t||dƒ d}t  d|¡}t  d|¡t|ƒ }t||dƒ d S )Nr   rÌ   ry  rS  )r   ri  rg  r   r   )r2   Zkve1rz  r÷   Zkve2r|  r3   r3   r4   Útest_kveR
  s    zTestBessel.test_kvec                 C   s*   d}t t d|¡ tjd|dd�dƒ d S )Nrü  rH   r   ©rT   rü   )r   r   rg  Úkvp)r2   r÷   r3   r3   r4   Útest_kvp_v0n1[
  s    zTestBessel.test_kvp_v0n1c                 C   sN   d}d}t  |d |¡ || t  ||¡  }t j||dd�}t||dƒ d S )Nr­   rü  rH   rƒ  rü   ©r   rg  r„  r   ©r2   rœ  r÷   ZxcrÑ   r3   r3   r4   Útest_kvp_n1_
  s
    &zTestBessel.test_kvp_n1c                 C   sd   d}d}|d |d  | |d  t  ||¡ t  |d |¡|  }t j||dd�}t||dƒ d S )Nr­   rü  r:   rH   rƒ  rü   r†  r‡  r3   r3   r4   Útest_kvp_n2f
  s
    <zTestBessel.test_kvp_n2c                 C   s&   t  d¡}t  dd¡}t||dƒ d S rK  )r   r  r  r   rL  r3   r3   r4   r  m
  s    
zTestBessel.test_y0c                 C   s&   t  d¡}t  dd¡}t||dƒ d S rM  )r   r�  r  r   rN  r3   r3   r4   r  r
  s    
zTestBessel.test_y1c                 C   sp   t  d¡\}}t jddd�\}}t||f }t||f }ttt  d|¡ƒddƒ ttt  d|¡| ƒddƒ d S )Nr:   rH   ©rí   ru   ró   )r   Zy0_zerosr   r   r  r  )r2   ZyoZypoZzoZzporÔ  Zallvalr3   r3   r4   Útest_y0_zerosw
  s    zTestBessel.test_y0_zerosc                 C   s*   t  d¡}t|tdgƒtdgƒfdƒ d S )NrH   ro  gÑ®BÊOªà?r°   )r   Zy1_zerosr   r   )r2   r�  r3   r3   r4   Útest_y1_zeros
  s    
zTestBessel.test_y1_zerosc                 C   s.   t jddd�}t|tdgƒtdgƒfdƒ d S )NrH   rŠ  yL¦
F%uâ?!°rh‘íì?y;ßO�—nè¿Ð³Yõ¹Úâ?rm   )r   Z	y1p_zerosr   r   )r2   Zy1pr3   r3   r4   Útest_y1p_zerosƒ
  s    zTestBessel.test_y1p_zerosc                 C   sH   t  dd¡}t|tddgƒdƒ t  dd¡}t|ddd	d
dgdd� d S )Nr8   r:   g¿œ3¢”@g·(³A&¹"@r°   rm  g]E.ô+"|@gçHå(éð|@gffÂ|çŒ}@g&îb`~@g�HO_°�~@rÇ   rA   )r   Zyn_zerosr   r   r   )r2   Zanr3   r3   r4   Útest_yn_zeros‡
  s     þþzTestBessel.test_yn_zerosc                 C   sh   t  dd¡}t|tddgƒdƒ t  dd¡}tt  d|¡ddd	� t  d
d¡}tt  d
|¡ddd	� d S )Nr   r:   gÎQhÕ¾“@gŠzNþ·@r>   é+   r°   rÇ   rh  rm  rÆ   )r   Ú	ynp_zerosr   r   r   r,  ©r2   Zaor3   r3   r4   Útest_ynp_zeros�
  s    zTestBessel.test_ynp_zerosc                 C   s&   t  dd¡}tt  d|¡ddd� d S )Nrm  r°   r   r‹   rh  )r   r�  r   r,  r‘  r3   r3   r4   Útest_ynp_zeros_large_order—
  s    z%TestBessel.test_ynp_zeros_large_orderc                 C   s   t  dd¡}t|ddƒ d S ©NrH   rÌ   ç5‹,Ž1—
Àry  )r   r  r   )r2   Zyn2nr3   r3   r4   r  ›
  s    zTestBessel.test_ync                 C   s"   t t dd¡t dd¡ dƒ d S r#  )r   r   r  r1   r3   r3   r4   Útest_negv_yvŸ
  s    zTestBessel.test_negv_yvc                 C   s   t  dd¡}t|ddƒ d S r”  )r   r  r   )r2   Zyv2r3   r3   r4   r  ¢
  s    zTestBessel.test_yvc                 C   s"   t t dd¡t dd¡ dƒ d S r#  )r   r   r  r1   r3   r3   r4   Útest_negv_yve¦
  s    zTestBessel.test_negv_yvec                 C   sH   t  dd¡}t|ddƒ t  dd¡tdƒ }t  dd¡}t||dƒ d S )NrH   rÌ   r•  ry  rS  r=   )r   r  r   r  r   )r2   Zyve2Zyve2rZyve22r3   r3   r4   Útest_yve©
  s
    zTestBessel.test_yvec                 C   s8   t  dd¡t  dd¡ d }t  dd¡}t||dƒ d S )NrH   rÌ   rm   r«   r:   rü   )r   r  r,  r   )r2   ZyvprZyvp1r3   r3   r4   Útest_yvp°
  s    zTestBessel.test_yvpc                 c   sj   ddddddddd	d
dg}ddddddddddddg}t  ||¡E dH  t  dtddƒ dg¡E dH  dS )z>Yield points at which to compare Cephes implementation to AMOSiˆÿÿÿr€   ç      4Àr=  rË   rì  ru   rj   ç{®Gáú(@r_  rZ  iìúÿÿéõÿÿÿrŸ  r=   r®   ç     i@g     y@g     Ä‚@gÍÌÌÌÌä…@é  i'  Nri   iÄÿÿÿrš  rÞ  )Ú	itertoolsÚproductr   )r2   rœ  r÷   r3   r3   r4   Ú_cephes_vs_amos_pointsµ
  s    ÿz!TestBessel._cephes_vs_amos_pointsç•dyáý¥=r   Nc                 C   sÐ   |   ¡ D ]Â\}}|d k	r$|||ƒr$q|||ƒ|||d ƒ|t|ƒ|ƒ  }}	}
t |¡rrtt |	¡dk||fƒ qt |¡r’t|	jdk||fƒ qt||	||f||d� |t|ƒkrt|
|	||f||d� qd S )Nrì   çœu ˆ<ä7~r   )rB  rB   rL   )	r¡  r]   rM   r’   r   r  r   rõ   r   )r2   r«  Úf2rB   rL   Úskiprœ  r÷   Úc1Úc2Úc3r3   r3   r4   Úcheck_cephes_vs_amosÁ
  s    *

 ÿzTestBessel.check_cephes_vs_amosÚppc64lezfails on ppc64lerï   c                 C   s   | j tjtjddd� d S )NrJ   çu5%ÅÅœ r„   )r©  r   rH  rF  r1   r3   r3   r4   Útest_jv_cephes_vs_amosÐ
  s    z!TestBessel.test_jv_cephes_vs_amosc                 C   s   | j tjtjddd� d S )Nr¢  r«  r„   ©r©  r   r  r  r1   r3   r3   r4   Útest_yv_cephes_vs_amosÕ
  s    z!TestBessel.test_yv_cephes_vs_amosc                 C   s$   dd„ }| j tjtjdd|d� d S )Nc                 S   s   t | ƒdkS )Nri  )r  )rœ  r÷   r3   r3   r4   rÞ  Û
  rß  zETestBessel.test_yv_cephes_vs_amos_only_small_orders.<locals>.<lambda>r¢  r«  )rB   rL   r¥  r­  )r2   Úskipperr3   r3   r4   Ú(test_yv_cephes_vs_amos_only_small_ordersÚ
  s    z3TestBessel.test_yv_cephes_vs_amos_only_small_ordersc              	   C   s2   t jdd�� | jtjtjddd� W 5 Q R X d S )NrÒ  rÓ  g:Œ0âŽy5>r«  r„   )rM   r×  r©  r   r>  r1   r3   r3   r4   Útest_iv_cephes_vs_amosÞ
  s    z!TestBessel.test_iv_cephes_vs_amosc           	   
   C   sd  d}t j d¡ t j d|¡dt jjd|d�  }t j d|¡dt jjd|d�  }t jjd|d�d	k}||  t¡||< t jd
d��„ t 	||¡}t 	||d ¡}t j
|t|ƒdk< t j
|t|ƒdk< d	|t|ƒdk < d	|t|ƒdk < t|| d ƒ}d	|t  |¡< W 5 Q R X t  |¡}t|| dk || || t 	|| || ¡t 	|| || d ¡fƒ d S )Ni@B rH   ri   r=   r:   )rÔ   rÌ   ry  r   rÒ  rÓ  rì   r£  gYóøÂn¥gH¯¼šò×Š>)rM   rR   rS   rÕ  rÖ  rÍ   r]   r×  r   r>  r   r  r   Zargmaxr   )	r2   rp  rœ  rÑ   Zimskr¦  r§  ZdcrU   r3   r3   r4   Ú test_iv_cephes_vs_amos_mass_testâ
  s"    ""
z+TestBessel.test_iv_cephes_vs_amos_mass_testc                 C   s0   | j tjtjddd� | j tjtjddd� d S )NrÆ   r«  r„   )r©  r   rg  r_  r1   r3   r3   r4   Útest_kv_cephes_vs_amosÿ
  s    z!TestBessel.test_kv_cephes_vs_amosc                 C   s:   t t dd¡dƒ t t dd¡dƒ t t dd¡dƒ d S )	Nrm   r8   gPòýîí‡Û?rZ  rž  g©~OmÊ’?gY†8ÖE@”@gKÆSn˜ô–¿)r   r   rH  r1   r3   r3   r4   Útest_ticket_623  s    zTestBessel.test_ticket_623c                 C   sØ  t t dd¡dƒ t t dd¡dƒ t t dd¡dƒ t t dd¡dƒ t t dd¡dƒ t t dd¡d	ƒ t t dd¡d
ƒ t t dd¡dƒ t t dd¡dƒ t t dd¡dƒ t t dd¡dƒ t t dd¡dƒ t t dd¡dƒ t t dd¡dƒ t t dd¡dƒ t t dd¡dƒ t t dd¡dƒ t t dd¡d	ƒ t t dd¡d
ƒ t t dd¡dƒ t t dd¡dƒ t t dd¡dƒ t t dd¡dƒ t t dd¡dƒ t t dd¡dƒ t t dd¡dƒ t t dd¡dƒ t t dd¡dƒ t t dd¡t dd¡tdƒ ƒ t t dd¡t dd¡tdƒ ƒ t t 	dd¡t dd¡tdƒ ƒ t t 
dd¡t dd¡tdƒ ƒ t t dd¡t dd¡dt dd¡  ƒ t t dd¡t dd¡dt dd¡  ƒ dS )zNegative-order Besselsr=   rH   gl—îÉ)Ü¿rk  gè›ú•Pj½?g”kÖ²ÿè?g%¡E*2iú¿gæ•‹Èâ?gw-ý-`Á?gÃ‰�óÒBã?g‚®Wÿù?rì  g¥ÑÞ´—Û?gÅzò|å?çaÿþ²ó?gpôx%‚Ý?y      ð?        ù      ð?      ð?yY…»DÓÐ?`{€ñ1wê¿y6 xùî?BŽ„]#Ó®?yÞ ¤‚¢©è?ùbæ>à‡Ù?yÙ.}9d•±?°¤°8ÇkØ¿y      ð?333333Ó?g333333Ó¿y333333Ó?      ð?rô   N)r   r   rH  r  r>  rg  rJ  r   r  r@  ri  r  r!  r1   r3   r3   r4   Útest_ticket_853  sD    """"*zTestBessel.test_ticket_853c                 C   sB  t tt dd¡ƒƒ t tt dd¡ƒƒ t tt dd¡ƒƒ t tt dd¡ƒƒ t tt dd¡ƒƒ t tt dd¡ƒƒ t tt dd¡ƒƒ t tt dd¡ƒƒ t tt 	dd¡ƒƒ t tt 	dd¡ƒƒ t tt 
dd¡ƒƒ t tt 
dd¡ƒƒ t tt d¡dd… ƒ ¡ t d¡ƒ t tt d¡dd… ƒ ¡  t d¡ƒ dS )zReal-valued Bessel domainsri   r=   rH   r   r:   r8   N)r   r   r   rH  r>  r  rg  rJ  r@  r  ri  r6   rÔ  Úanyr1   r3   r3   r4   Útest_ticket_8544  s    &zTestBessel.test_ticket_854c                 C   s0   t t dd¡tjkƒ t t dd¡tjkƒ d S )Nr˜  r   )r   r   rg  rM   r   ri  r1   r3   r3   r4   Útest_gh_7909E  s    zTestBessel.test_gh_7909c                 C   s(   t t dd¡dƒ t t dd¡dƒ dS )zReal-valued Bessel I overflowrH   i¼  gá¹Îõ¥‡¬~rE   i`  g ¶?los~N©r   r   r>  r1   r3   r3   r4   Útest_ticket_503I  s    zTestBessel.test_ticket_503c                 C   s   t t dd¡dƒ d S )Nrì  rH   rµ  r»  r1   r3   r3   r4   Útest_iv_hyperg_polesN  s    zTestBessel.test_iv_hyperg_poleséÈ   c                 C   s’   t d|ƒ t¡}|d|  td| ƒ t |d ¡ t || d ¡ }t|t|ƒ< t|ƒ}t	|ƒ 
¡ ttƒj | t	|d ƒd  }| ¡ |fS )Nr   r:   ri   rH   r=   rü   )r   rÍ   r   r   r   r�   r   r   r   r  rk  r   ÚepsÚsum©r2   rœ  r÷   rT   rU   Úrrñ  r3   r3   r4   Ú	iv_seriesQ  s    8*zTestBessel.iv_seriesc                 C   s4   dD ]*}|   d|¡\}}tt |¡|||d� qd S )N©rj   r®   r�  r   ©rL   rB  )rÃ  r   r   r*  ©r2   r÷   Úvaluerñ  r3   r3   r4   Útest_i0_seriesY  s    zTestBessel.test_i0_seriesc                 C   s4   dD ]*}|   d|¡\}}tt |¡|||d� qd S )NrÄ  rH   rÅ  )rÃ  r   r   r.  rÆ  r3   r3   r4   Útest_i1_series^  s    zTestBessel.test_i1_seriesc                 C   sD   dD ]:}dD ]0}|   ||¡\}}tt ||¡||||fd� qqd S )N)rš  r=  rË   ru   rj   r›  r_  )rj   r®   r�  y      ð¿       @rÅ  )rÃ  r   r   r>  ©r2   rœ  r÷   rÇ  rñ  r3   r3   r4   Útest_iv_seriesc  s    zTestBessel.test_iv_seriesc              	   C   sv   ddgddgddgddgddgd	d
gddgddgg}t |ƒD ]4\}\}}t |¡t| ƒ }t||dd| d� q<d S )Nru   rj   rJ   rñ   g0oO…øí?ri   gÖÊÿ!¤ä?gr¢·bÏÝ?rö  gâ®ÄÞpHÑ?rq   gð“ÌíC~Ç?r¦   gïgo¯×û¶?ry  r@  rA  )rµ  r   r*  r   r   ©r2   r²   ra   rÑ   rœ  rC  r3   r3   r4   r+  i  s    ù	zTestBessel.test_i0c                 C   s&   t  d¡}t  dd¡}t||dƒ d S rK  )r   r,  r@  r   )r2   ZoizeZoizerr3   r3   r4   r-  w  s    
zTestBessel.test_i0ec                 C   sp   ddgddgddgddgdd	gd
dgddgg}t |ƒD ]4\}\}}t |¡t| ƒ }t||dd| d� q6d S )Nru   rJ   gjïËÙß|Ë=rñ   gÈ•!§[1§?ri   g;Í˜Ä?rj   gèRùÎœÊ?rq   g|«äýÄ?r¦   g}¦‹ÊÎf¶?ry  r@  rA  )rµ  r   r.  r   r   rÌ  r3   r3   r4   r/  |  s    úzTestBessel.test_i1c                 C   s&   t  d¡}t  dd¡}t||dƒ d S rM  )r   r0  r@  r   )r2   Zoi1eZoi1err3   r3   r4   r1  ‰  s    
zTestBessel.test_i1ec                 C   s&   t t d¡ƒ}t|t ddgƒdƒ d S )Nr°   gÑ—JBÙ?@g*uõÌù?)r   r   r8  r   )r2   Ziti0r3   r3   r4   r9  Ž  s    zTestBessel.test_iti0k0c                 C   s"   t  d¡}t|tddgƒdƒ d S )Nrñ   gÝ³¿É„|T?gVäÀ‚Æ¥
@r>   )r   r2  r   r   )r2   Zit2kr3   r3   r4   r3  ’  s    
zTestBessel.test_it2i0k0c                 C   s$   t  dd¡tdƒ }t|ddƒ d S )Nr   rñ   çš™™™™™¹¿gv M…øí?rü   )r   r>  r   r   )r2   Úiv1r3   r3   r4   r?  –  s    zTestBessel.test_ivc                 C   s   t t dd¡t dd¡ƒ d S rI  )r   r   r@  r1   r3   r3   r4   Útest_negv_iveš  s    zTestBessel.test_negv_ivec                 C   s0   t  dd¡}t  dd¡tdƒ }t||dƒ d S )Nr   rñ   rÍ  rü   )r   r@  r>  r   r   )r2   Zive1rÎ  r3   r3   r4   Útest_ive�  s    zTestBessel.test_ivec                 C   s    t t dd¡t dd¡dƒ d S )NrH   r:   r   rü   )r   r   r>  Úivpr1   r3   r3   r4   Ú	test_ivp0¢  s    zTestBessel.test_ivp0c                 C   s8   t  dd¡t  dd¡ d }t  dd¡}t||dƒ d S )Nr   r:   rH   rü   )r   r>  rÑ  r   r  r3   r3   r4   Útest_ivp¥  s    zTestBessel.test_ivp)r¢  r   N)r¾  )Ur  r  r  r;  r5  rJ  rC  rE  rG  rP  rI  rR  rT  r]  r^  rg  rn  rp  rq  rN  rP  rR  rT  rs  r`  rw  ry  r{  r}  r  r€  r�  r‚  r…  rˆ  r‰  r  r  r‹  rŒ  r�  rŽ  r’  r“  r  r–  r  r—  r˜  r™  r¡  r©  r  r  r  ÚplatformÚmachiner¬  r®  r°  r±  Zslowr²  r³  r´  r·  r¹  rº  r¼  r½  rÃ  rÈ  rÉ  rË  r+  r-  r/  r1  r9  r3  r?  rÏ  rÐ  rÒ  rÓ  r3   r3   r3   r4   rH  z	  s¦   
	
ÿ
ÿ

,
rH  c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestLaguerrec              	   C   sÞ   t  d¡}t  d¡}t  d¡}t  d¡}t  d¡}t  d¡}t|jdgdƒ t|jddgdƒ t|jtdd	dgƒd
 dƒ t|jtddddgƒd dƒ t|jtdddddgƒd dƒ t|jtddddddgƒd dƒ d S )Nr   rH   r:   rm   r8   r°   rœ  r=   r  r«   r±  iîÿÿÿr>   r…  iðÿÿÿéH   i ÿÿÿrÊ   r	  rÃ   i8ÿÿÿiX  i¨ýÿÿrb  r_  )r   Zlaguerrer   rp  r   )r2   Úlag0Úlag1Úlag2Úlag3Zlag4Zlag5r3   r3   r4   Útest_laguerre¬  s    





 zTestLaguerre.test_laguerrec              	   C   sÞ   dt j ¡  d }t d|¡}t d|¡}t d|¡}t d|¡}t|jdgƒ t|jd|d gƒ t|jtdd|d  |d	 |d
  gƒd
 ƒ t|jtdd|d  d|d  |d  |d |d  |d  gƒd ƒ d S )Nr°   rè  r   rH   r:   rm   r=   rk  rj   r«   rÿ  r…  )rM   rR   r   r'  r   rp  r   r   )r2   rU   rØ  rÙ  rÚ  rÛ  r3   r3   r4   Útest_genlaguerreº  s    .zTestLaguerre.test_genlaguerreN)r  r  r  rÜ  rÝ  r3   r3   r3   r4   rÖ  «  s   rÖ  c                   @   s   e Zd Zdd„ ZdS )ÚTestLegendrec              	   C   sÖ   t  d¡}t  d¡}t  d¡}t  d¡}t  d¡}t  d¡}t|jdgƒ t|jddgƒ t|jtdddgƒd d	d
� t|jtddddgƒd ƒ t|jtdddddgƒd ƒ t|jtddddddgƒd ƒ d S )Nr   rH   r:   rm   r8   r°   r=   r«   rœ  rÄ   rÿ  r°  r€  r§   é?   iºÿÿÿrc   )r   Zlegendrer   rp  r   r   )r2   Zleg0Zleg1Zleg2Zleg3Zleg4Zleg5r3   r3   r4   Útest_legendreÈ  s    





zTestLegendre.test_legendreN)r  r  r  rà  r3   r3   r3   r4   rÞ  Ç  s   rÞ  c                   @   s   e Zd Zdd„ ZdS )Ú
TestLambdac              	   C   sx   t  dd¡}tt  dd¡dt  dd¡ d gƒtt  dd¡dt  dd¡ d dt  dd¡ d  gƒf}t||dƒ d S )NrH   rñ   r   r:   rk  rª   ry  )r   Zlmbdar   rF  r+  rH  r   )r2   ZlamZlamrr3   r3   r4   Ú
test_lmbdaØ  s
    "6ÿzTestLambda.test_lmbdaN)r  r  r  râ  r3   r3   r3   r4   rá  ×  s   rá  c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú	TestLog1pc                 C   sB   t  d¡t  d¡t  d¡f}tdƒtdƒtdƒf}t||dƒ d S )Nrü   ró   rz  rœ  ry  ©r   rl  r   r   )r2   Zl1pZl1prlr3   r3   r4   rm  à  s    zTestLog1p.test_log1pc                 C   sB   t  d¡t  d¡t  d¡f}tdƒtdƒtdƒf}t||dƒ d S )NrH   çš™™™™™ñ?rD  r:   rû  rü  ry  rä  )r2   Zl1pmZl1pmrlr3   r3   r4   Útest_log1pmoreå  s    zTestLog1p.test_log1pmoreN)r  r  r  rm  ræ  r3   r3   r3   r4   rã  ß  s   rã  c                   @   st   e Z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d„ Zdd„ Zdd„ ZdS )ÚTestLegendreFunctionsc                 C   sÔ   d}t  dd|d¡}t|td|dd| | d  gdt|| d ƒd| t|| d ƒ gddd|| d  ggƒtddd| gd|t|| d ƒ dd| | d  t|| d ƒ gddd| ggƒfd	ƒ d S )
Ny      à?333333Ó?r:   rm   rj   ri   rH   ru   r>   r<   )r   Úclpmnr   r   r   )r2   r÷   Zclpr3   r3   r4   Ú
test_clpmnì  s    (þ8þýùz TestLegendreFunctions.test_clpmnc              	   C   sŒ   d}d}d}d}t  |||d|  d¡d ||f }t  |||d|  d¡d ||f }tt||gƒtt  |||¡t  |||¡gƒdƒ d S )	NrJ   rH   rm   ri   rô   r:   r   r<   )r   rè  r   r   rs  ©r2   r¿  r|  rT   rÑ   Zclp_plusZ	clp_minusr3   r3   r4   Útest_clpmn_close_to_real_2ø  s    $$ÿýz0TestLegendreFunctions.test_clpmn_close_to_real_2c              	   C   s´   d}d}d}d}t  |||d|  d¡d ||f }t  |||d|  d¡d ||f }tt||gƒtt  |||¡t d| tj ¡ t  |||¡t d| tj ¡ gƒd	ƒ d S )
NrJ   rH   rm   ri   rô   r   y       €      à¿y              à?r<   )r   rè  r   r   rs  rM   r   r   rê  r3   r3   r4   Útest_clpmn_close_to_real_3  s    $$" ÿýz0TestLegendreFunctions.test_clpmn_close_to_real_3c              
   C   sj   d}d}d}d}dD ]P}t t |||d|  |¡d ||f t |||d|  |¡d ||f dƒ qd S )NçH¯¼šò×z>rH   rô   ©r:   rm   r   r>   )r   r   rè  )r2   r¿  r|  rT   rÑ   Útyper3   r3   r4   Útest_clpmn_across_unit_circle  s    $" ÿz3TestLegendreFunctions.test_clpmn_across_unit_circlec              
   C   sŒ   dD ]‚}t dƒD ]t}t d|ƒD ]d}t |||¡}tt |d ddd …f ¡ ¡ ƒ t |||¡}tt |d ddd …f ¡ ¡ ƒ qqqd S )N)rH   r=   r8   rH   )r^   r   rè  r   rM   r’   rÔ  Úlpmn)r2   r÷   rT   r|  Úlpr3   r3   r4   Útest_inf  s    "zTestLegendreFunctions.test_infc                 C   s˜   ddddddddg}d	}d
}dD ]r}|D ]h}dD ]^}t  |||d|  |¡d t  |||d|  |¡d  | }tt  ||||¡d |dd� q0q(q d S )Nr6  y      à¿      à?y      à¿      à¿y      à?      à¿r¶  rº  rÁ  r¾  r:   rm   rî  )r©   y        ü©ñÒMbP?ri   r   rH   r›  rA   )r   rè  r   )r2   Zzvalsr|  rT   rï  r÷   ÚhZapprox_derivativer3   r3   r4   Útest_deriv_clpmn"  s(       ÿÿÿþz&TestLegendreFunctions.test_deriv_clpmnc                 C   s:   t  ddd¡}t|tdddggƒtdddggƒfdƒ d S )	Nr   r:   ri   rj   ç      À¿ru   r˜  r8   )r   rñ  r   r   ©r2   rò  r3   r3   r4   Ú	test_lpmn1  s    þþýûzTestLegendreFunctions.test_lpmnc                 C   s4   t  dd¡}t|tdddgƒtdddgƒfdƒ d S )Nr:   ri   rj   rö  ru   r˜  r8   )r   Zlpnr   r   )r2   Zlpnfr3   r3   r4   Útest_lpn:  s    þþýûzTestLegendreFunctions.test_lpnc              	   C   st   t  ddd¡}t|ddƒ t  ddd¡}t|ddƒ tjd	d
�� t  ddd¡}W 5 Q R X t|dkplt |¡ƒ d S )Nr   r:   ri   rö  r<   é(   r©   g�‚ÔIÇÀ?rÒ  rÓ  r=   )r   rs  r   rM   r×  r   r   r÷  r3   r3   r4   rt  C  s    zTestLegendreFunctions.test_lpmvc                 C   sN   t  ddd¡}t  dd¡}t|d d |d dƒ t|d d |d dƒ d S )Nr   r:   ri   r8   rH   )r   ÚlqmnÚlqnr   )r2   ZlqmnfÚlqfr3   r3   r4   Ú	test_lqmnO  s    zTestLegendreFunctions.test_lqmnc                 C   sR   d}d}|| || fD ]4}t  dd|¡d d }d|| d  }t||ƒ qdS )znalgorithm for real arguments changes at 1.0001
           test against analytical result for m=2, n=1
        gq¬‹Ûh ð?gñhãˆµøô>r:   rH   r   )r=   r=   N)r   rû  r   )r2   Zx0ÚdeltarÑ   Zlqrø   r3   r3   r4   Útest_lqmn_gt1U  s    z#TestLegendreFunctions.test_lqmn_gt1c                 C   sX   t  ddd¡\}}t|jdƒ t|jdƒ t  ddd¡\}}t|jdƒ t|jdƒ d S )Nr8   rå  )r°   r°   r   )r°   rH   )r   rû  r   rÓ   )r2   r  r  r3   r3   r4   Útest_lqmn_shape`  s    z%TestLegendreFunctions.test_lqmn_shapec                 C   s4   t  dd¡}t|tdddgƒtdddgƒfd	ƒ d S )
Nr:   ri   gk+ö—Ý“á?gÙ=yX¨5ç¿gÂ†§WÊ2ê¿gÚ|a2Uõ?gÛù~j¼tó?gºÚŠýe÷ê¿r8   )r   rü  r   r   )r2   rý  r3   r3   r4   Útest_lqni  s    ÿÿzTestLegendreFunctions.test_lqnN)r  r  r  ré  rë  rì  rð  ró  rõ  rø  rù  rt  rþ  r   r  r  r3   r3   r3   r4   rç  ë  s   					rç  c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestMathieuc                 C   s   d S r*  r3   r1   r3   r3   r4   ru  q  s    zTestMathieu.test_mathieu_ac                 C   s   t  dd¡ d S )Nr:   r°   )r   r)   r1   r3   r3   r4   Útest_mathieu_even_coeft  s    z"TestMathieu.test_mathieu_even_coefc                 C   s   d S r*  r3   r1   r3   r3   r4   Útest_mathieu_odd_coefx  s    z!TestMathieu.test_mathieu_odd_coefN)r  r  r  ru  r  r  r3   r3   r3   r4   r  o  s   r  c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestFresnelIntegralc                 C   s   d S r*  r3   r1   r3   r3   r4   rŸ    s    z$TestFresnelIntegral.test_modfresnelpc                 C   s   d S r*  r3   r1   r3   r3   r4   rž  ‚  s    z$TestFresnelIntegral.test_modfresnelmN)r  r  r  rŸ  rž  r3   r3   r3   r4   r  }  s   r  c                   @   s   e Zd Zdd„ ZdS )ÚTestOblCvSeqc                 C   s*   t  ddd¡}t|tddddgƒdƒ d S )	Nr   rm   rH   g~TÃ~OÖ¿g£té_’Jö?gmÅþ²{ò@g@j'÷û&@r°   )r   Z
obl_cv_seqr   r   )r2   Zoblr3   r3   r4   Útest_obl_cv_seq‡  s    ýýzTestOblCvSeq.test_obl_cv_seqN)r  r  r  r  r3   r3   r3   r4   r  †  s   r  c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚTestParabolicCylinderc                 C   s0   t  dd¡}t|tddgƒtddgƒfdƒ d S )NrH   rñ   gìQ¸…ëï?gx$(~Œ¹?gx$(~Œ©¿gÃõ(\�Âï?r8   )r   Úpbdn_seqr   r   )r2   Zpbr3   r3   r4   Útest_pbdn_seq�  s    ÿÿþýz#TestParabolicCylinder.test_pbdn_seqc                 C   s4   t  dd¡ dt  dd¡d  t  dd¡d   d S )NrH   rÌ   rñ   r   )r   rÀ  r1   r3   r3   r4   rÁ  —  s    zTestParabolicCylinder.test_pbdvc                 C   s<   t  dd¡}t  dd¡}t|t|d ƒt|d ƒfdƒ d S )NrH   rñ   r   r8   )r   r
  Zpbdv_seqr   r   )r2   ZpbnZpbvr3   r3   r4   Útest_pbdv_seq›  s    z#TestParabolicCylinder.test_pbdv_seqc                 C   sŒ   t  ddd¡}d|d  t  t j¡ t dd|  ¡ }tt |d¡d |ddd	� tt d
d¡d ddd� tt dd¡d ddd� d S )NrŸ  rü   r°   r:   ri   ru   r   r‹   r„   g®Gáz®$@gq=
×£p4@g©³HáÓQ9rf   rA   g�Âõ(\#Àg…ëQ¸…@gŸ¡kÓS a>)rM   r�  r   r   r   r†   r   rÀ  )r2   Úetar÷   r3   r3   r4   Útest_pbdv_points   s
    *z&TestParabolicCylinder.test_pbdv_pointsc                 C   s˜   t  ddd¡d d …d f }t  ddd¡d d d …f }t ||¡}ddt|ƒ  }t ||| ¡d t ||| ¡d  | d	 }t|d
 |ddd� d S ©Nr  r8   ry  rŸ  rü   r°   rí  r   r«   rH   rû   r„   )rM   r�  r   rÀ  r  r   ©r2   rÑ   r  r   r¿  Zdpr3   r3   r4   Útest_pbdv_gradientª  s    0z(TestParabolicCylinder.test_pbdv_gradientc                 C   s˜   t  ddd¡d d …d f }t  ddd¡d d d …f }t ||¡}ddt|ƒ  }t ||| ¡d t ||| ¡d  | d	 }t|d
 |ddd� d S r  )rM   r�  r   rÂ  r  r   r  r3   r3   r4   Útest_pbvv_gradient³  s    0z(TestParabolicCylinder.test_pbvv_gradientN)	r  r  r  r  rÁ  r  r  r  r  r3   r3   r3   r4   r	  �  s   
	r	  c                   @   s   e Zd Zdd„ ZdS )ÚTestPolygammac                 C   sÒ   t  dd¡}t  dd¡}t|ddƒ t|ddƒ dddg}tt  d|¡t  |¡ƒ dddg}d	d
dg}dddg}tt  ||¡|ƒ t |gd ¡}tt  |t |gd ¡¡|ƒ tt  t |gd ¡|¡|ƒ d S )Nr:   rH   rm   gX]ï ;Àrü   gOV,@Ëù@g  8»×ÙBr   ri   r˜  rö  gý2}‰jÿ¿gó.òMæéí?gçð}2ï;Î¿)r   Z	polygammar   rÖ  rM   r0  )r2   Zpoly2Zpoly3rÑ   rT   rø   r3   r3   r4   Útest_polygamma¿  s&    


ÿÿÿzTestPolygamma.test_polygammaN)r  r  r  r  r3   r3   r3   r4   r  ½  s   r  c                   @   s   e Zd Zdd„ ZdS )ÚTestProCvSeqc                 C   s*   t  ddd¡}t|tddddgƒdƒ d S )	Nr   rm   rH   gÑ"Ûù~jÔ?g6?þÒ¢¾@g)uÉ8F"@gË2�g)@r°   )r   Z
pro_cv_seqr   r   )r2   Zprolr3   r3   r4   Útest_pro_cv_seq×  s    ýýzTestProCvSeq.test_pro_cv_seqN)r  r  r  r  r3   r3   r3   r4   r  Ö  s   r  c                   @   s   e Zd Zdd„ ZdS )ÚTestPsic                 C   s   t  d¡}t|ddƒ d S )NrH   g¶oüŒxâ¿ry  )r   rÖ  r   )r2   Zpsr3   r3   r4   r×  à  s    
zTestPsi.test_psiN)r  r  r  r×  r3   r3   r3   r4   r  ß  s   r  c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú
TestRadianc                 C   s"   t  ddd¡}t|td dƒ d S )Nrå  r   r«   r°   ©r   rØ  r   r   )r2   Zradr3   r3   r4   rÙ  æ  s    zTestRadian.test_radianc                 C   s&   t  ddd¡}t|td d dƒ d S )Nrå  rH   rš  r:   gƒ†íC?r°   r  )r2   Zrad1r3   r3   r4   Útest_radianmoreê  s    zTestRadian.test_radianmoreN)r  r  r  rÙ  r  r3   r3   r3   r4   r  å  s   r  c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestRiccatic                 C   s|   d\}}t  ||f¡}t|ƒD ]D}t ||¡}tj||dd�}|| |d|f< || | |d|f< qt|t ||¡dƒ d S ©N)r:   rÌ   T)Z
derivativer   rH   ry  )rM   Úemptyr^   r   Zspherical_jnr   Z
riccati_jn)r2   rp  rÑ   ÚSrT   rª  Újpr3   r3   r4   Útest_riccati_jnð  s    zTestRiccati.test_riccati_jnc                 C   s|   d\}}t  ||f¡}t|ƒD ]D}t ||¡}tj||dd�}|| |d|f< || | |d|f< qt|t ||¡dƒ d S r  )rM   r  r^   r   Zspherical_ynr   Z
riccati_yn)r2   rp  rÑ   ÚCrT   rö   Zypr3   r3   r4   Útest_riccati_ynú  s    zTestRiccati.test_riccati_ynN)r  r  r  r   r"  r3   r3   r3   r4   r  ï  s   
r  c                   @   s   e Zd Zdd„ ZdS )Ú	TestRoundc              	   C   s@   t ttt d¡t d¡t d¡t d¡fƒƒ}d}t||ƒ d S )Ng333333$@gÍÌÌÌÌÌ$@r?  g333333%@)rü   rü   rü   ró   )rj  Úmapr]   r   rß  r   )r2   ZrndZrndrlr3   r3   r4   rà    s    .zTestRound.test_roundN)r  r  r  rà  r3   r3   r3   r4   r#    s   r#  c                  C   s°  t j} tj}tj}tj}tj}tj}t| ddddƒd||ƒ ƒ t| ddd|d ƒd|dd	|  ƒ ||d ƒd	  ƒ t| ddd|d ƒd|dd	|  ƒ ƒ t| dd||d ƒd|d
d	|  ƒ |dd	| d  ƒ ||d	 ƒd	  ƒ t| dd|d |d ƒd|dd	|  ƒ |dd	| d d  ƒ ||d ƒd	  d||d ƒd	  d  ƒ t| dd|d |d ƒd|dd	|  ƒ |dd| d d  ƒ ||d ƒd  ƒ d S )Nr   ri   rk  r:   ru   r8   r�   g      .@r«   rc   rô   rç   r­   g      Ø?rq   g      @rH   r§   r…  g      È?g     €A@)	r   Úsph_harmrM   r   r   r   r   r	   r   )Úshr   r   r   r   r	   r3   r3   r4   Útest_sph_harm  sP    
ÿÿÿÿÿÿÿÿþýÿÿÿÿr'  c                  C   s°   t  t j¡} tt dddd¡j| ƒ tt dgddd¡j| ƒ tt ddgdd¡j| ƒ tt dddgd¡j| ƒ tt ddddg¡j| ƒ tt dgdgdgdg¡j| ƒ d S r.   )rM   ÚdtypeZ
complex128r   r   r%  )Údtr3   r3   r4   Ú"test_sph_harm_ufunc_loop_selection/  s    r*  c                   @   s.   e Zd Zddd„Zdd„ Zdd„ Zdd	„ Zd
S )Ú
TestStruver  c                 C   sp   t d|ƒ}d| d| d| | d   t |d ¡ t || d ¡ }t|ƒ ¡ ttƒj | }| ¡ |fS )z?Compute Struve function & error estimate from its power series.r   r=   ri   r:   rH   r˜  )	r   r   r†   r  rk  r   r   r¿  rÀ  rÁ  r3   r3   r4   Ú_series;  s    
@zTestStruve._seriesc                 C   sH   dD ]>}dD ]4}|   ||¡\}}tt ||¡|d|d�||ff qqdS )z-Check Struve function versus its power series)
iìÿÿÿrŸ  çö(\�ÂõÀrÜ  r=   r   rH   rÛ  r›  é   )rH   rü   rÉ   r  rD   r   r„   N)r,  r   r   rü  rÊ  r3   r3   r4   Útest_vs_seriesB  s    zTestStruve.test_vs_seriesc                 C   sô   t t dd¡ddd� t t dd¡ddd� t t d	d
¡ddd� t t dd¡ddd� tt dd¡t dd¡ ƒ tt dd¡t dd¡ ƒ tt dd¡t dd¡
 ƒ tt dd¡t dd¡
 ƒ ttt dd¡ƒƒ ttt dd¡ƒƒ d S )Nr-  r  gä;cv=ð§?rí  rA   g…ëQ¸ ÀgŠ< j¤?rQ  rÝ  r¾  g³÷ýï�?rf   g       Ài×ÿÿÿg©Ÿ zzµ“?r¢  iôÿÿÿé)   rz  rœ  ró   gffffffÀr=   g333333$À)r   r   rü  r   r   r   r1   r3   r3   r4   Útest_some_valuesI  s    zTestStruve.test_some_valuesc                 C   sR   t t dd¡t dd¡ƒ t t dd¡t dd¡ƒ t t dd¡t dd¡ƒ dS )zRegression test for #679rË   gâÕÿÿÿ3@gó*   4@r´  g333333ÀN)r   r   rü  r1   r3   r3   r4   Útest_regression_679V  s    zTestStruve.test_regression_679N)r  )r  r  r  r,  r/  r1  r2  r3   r3   r3   r4   r+  :  s   
r+  c                   C   s   t t dd¡dƒ d S )Nró  rm   gdX	
§î?)r   r   r�   r3   r3   r3   r4   Útest_chi2_smalldf]  s    r3  c                   C   s   t t dtj¡dƒ d S )Nrù  rj   )r   r   r�   rM   r   r3   r3   r3   r4   Útest_ch2_infa  s    r4  c                   C   s   t t dd¡dƒ d S )Nró  rm   çÀyj_�¥?)r   r   r    r3   r3   r3   r4   Útest_chi2c_smalldfe  s    r6  c                   C   s   t t dd¡dƒ d S )Nró  r5  rm   )r   r   r£   r3   r3   r3   r4   Útest_chi2_inv_smalldfi  s    r7  c                  C   sþ  d} t dt dt d¡¡ d| d� d}d}d}t t dgd	ggdd	d
g¡d||g|d	|gg| d� d}t t dd¡|| d� t t dd¡|| d� t t dd¡| | d� t t dd¡d| d� t t dd¡d| d� t t dd¡d| d� t t dd¡d| d� t t dd¡d| d� t t dd¡d| d� t t dd¡d| d� t d¡}t t |j|j¡d | d� t t d!|j |j¡d"| d� t t |jd	|j ¡d#| d� tt d$d$¡d$ƒ tt d%d$¡d$ƒ tt dd&¡tj	ƒ tt d$tj
¡tj	ƒ tt tj
d$¡tj	ƒ tt d$tj
 ¡tj	ƒ tt tj
 d$¡tj	ƒ tt tj
tj
 ¡tj	ƒ tt tj
 tj
¡tj	ƒ tt dtj	¡tj	ƒ tt tj	d¡tj	ƒ tt dtj
¡tj
ƒ tt tj
d¡tj
ƒ tt dtj
 ¡tj
 ƒ tt tj
 d¡tj
 ƒ d S )'Nr@   rH   r:   gDS«YCµê?rA   gQÕ_Ñý?g®Å?Õ@g>;,
i}@rm   r°   gÊ=·O÷?r=   rk  rÊ   r>   gXñÓs•ê*@rœ  g   V4o�Agˆ†ôO„1eAgêŒ 9Y>)Fg‹¾ÜìÒEgæ^ 9^;g–d¼¾-èž?g¯–P.5�_gsTNÓØNegºÒ6ödgu”?jç/Ê g]éXC}KÀdg¯žÑ§›R£g"!çx{¿{ rj   gë][#!Rrë  gŒÙ�S1ÛëgNÕ_Ñ r   éc   rü   )r   r   ZagmrM   r   r   r¼  rk  r   r±   r   )rB   Zagm13Zagm15Zagm35Zagm12Úfir3   r3   r4   Útest_agm_simplem  sr    ÿÿþÿÿÿÿ
ÿÿÿr:  c               	   C   s  t ƒ ��} |  td¡ tt dd¡t dd¡ƒ tt ddd¡t ddd¡ƒ tt ddd¡t ddd¡ƒ tt ddd¡t ddd¡ƒ tt 	dd¡t 	dd¡ƒ tt 
dd¡t 
dd¡ƒ tt dd¡t dd¡ƒ tt dd¡t dd¡ƒ tt dd¡t dd¡ƒ W 5 Q R X d S )NrÉ  rH   rò   gÍÌÌÌÌÌü?r:   gffffff@)r   rn  ro  r   r   Zexpnr£  r¡  r¥  rÊ  r_  r  ré  rô  )rq  r3   r3   r4   Útest_legacyª  s    
r;  c                   C   s   t tjtjddƒ d S )NrH   y        .Ÿ‡¢®B}T)r1  r   ZSpecialFunctionErrorr>  r3   r3   r3   r4   Útest_error_raising¹  s    r<  c                  C   s¸   dd„ } t jddt jfdt jfdgtd�}t j|ddgf }t  | ¡|d d …df |d d …d	f ƒ}ttj	||d
d
d� t  | ¡|d d …df |d d …d	f ƒ}ttj	||d
d
d� d S )Nc              
   S   sX   t jdd��B | dkr0t  |¡s0| W  5 Q R £ S | t  |¡ W  5 Q R £ S W 5 Q R X d S ©NrÒ  )Úinvalidr   )rM   r×  r   r   ©rÑ   rö   r3   r3   r4   Úxfunc¿  s    ztest_xlogy.<locals>.xfunc©r   r   r   ©rj   r«   ©r(  )r   rô   )rH   rô   rH   r@   r„   )
rM   r   r±   r   r_   r   rd   r+   r   Úxlogy)r@  Úz1Zz2Úw1Zw2r3   r3   r4   Ú
test_xlogy¾  s    "((rG  c                  C   sl   dd„ } t jddt jfdt jfddgtd�}t  | ¡|d d …df |d d …df ƒ}ttj||d	d	d
� d S )Nc              
   S   sX   t jdd��B | dkr0t  |¡s0| W  5 Q R £ S | t  |¡ W  5 Q R £ S W 5 Q R X d S r=  )rM   r×  r   rl  r?  r3   r3   r4   r@  Ð  s    ztest_xlog1py.<locals>.xfuncrA  r   rB  )rH   g ÂëþKH´9rC  rH   r@   r„   )	rM   r   r±   r   r_   rd   r+   r   Zxlog1py)r@  rE  rF  r3   r3   r4   Útest_xlog1pyÏ  s    ÿÿ(rH  c                  C   s‚   dd„ } dddt jf}ddg}g }t ||¡D ]\}}| || ¡ q.t j|td�}t j| t jgd	�|ƒ}t	t
j||d
d
d� d S )Nc                 S   s"   | dk rt j S t | | ¡ S d S r.   )rM   r   r   rD  )rÑ   r3   r3   r4   r@  Þ  s    ztest_entr.<locals>.xfuncr   ri   rj   r=   rH   rC  ©Zotypesr@   r„   )rM   r   rŸ  r   r§  r   r_   rd   rÏ   r+   r   Zentr)r@  r²   Úsignsr¸  Zsgnrœ  r÷   r  r3   r3   r4   Ú	test_entrÝ  s    rK  c            
      C   s¢   dd„ } d}ddg}g }t  ||||¡D ]"\}}}}| || || f¡ q(tj|td�}tj| tjgd�|d d …df |d d …df ƒ}	tt	j
|	|d	d	d
� d S )Nc                 S   sh   | dk s |dk s |dkr&| dkr&t jS t  | ¡s:t  |¡r@t jS | dkrL|S t | | | ¡|  | S d S r.   )rM   r   Zisposinfr   rD  r?  r3   r3   r4   r@  î  s     ztest_kl_div.<locals>.xfunc©r   ri   rj   r=   rH   rC  rI  r   r@   r„   )rŸ  r   r§  rM   r   r_   rd   rÏ   r+   r   Zkl_div©
r@  r²   rJ  r¸  ZsgnaÚvaZsgnbZvbr÷   r  r3   r3   r4   Útest_kl_diví  s    0rO  c            
      C   s¢   dd„ } d}ddg}g }t  ||||¡D ]"\}}}}| || || f¡ q(tj|td�}tj| tjgd�|d d …df |d d …df ƒ}	tt	j
|	|d	d	d
� d S )Nc                 S   s>   | dkr |dkr t  | | | ¡S | dkr4|dkr4dS tjS d S r.   )r   rD  rM   r   r?  r3   r3   r4   r@    s
    ztest_rel_entr.<locals>.xfuncrL  r=   rH   rC  rI  r   r@   r„   )rŸ  r   r§  rM   r   r_   rd   rÏ   r+   r   Zrel_entrrM  r3   r3   r4   Útest_rel_entr  s    0rP  c                  C   s    t t dd¡tjƒ tt dd¡dt d¡ ƒ tt dd¡dƒ dd„ } tj d	d¡}tj	| tj
gd
�|d d …df |d d …df ƒ}ttj||ddd� d S )Nr=   r˜  r:   ri   rö  r­   c                 S   sD   | dk rt jS t  |¡| k r*dt  |¡ S | t  |¡d|    S d S )Nr   ri   )rM   r   r  Úsquare©rÿ  rÂ  r3   r3   r4   r@    s
    ztest_huber.<locals>.xfuncrü   rI  r   rH   r@   r„   )r   r   ZhuberrM   r   r   rQ  rR   Úrandnrd   rÏ   r+   ©r@  r÷   r  r3   r3   r4   Ú
test_huber  s    0rU  c                  C   sx   dd„ } t  t j dd¡ ¡ ddgddgg ¡}t j| t jgd�|d d …df |d d …df ƒ}ttj	||d	d	d
� d S )Nc                 S   s@   | dk rt jS | r|sdS | d t  d||  d  ¡d  S d S )Nr   r:   rH   )rM   r   r   rR  r3   r3   r4   r@  (  s
    z test_pseudo_huber.<locals>.xfuncrü   r:   r   ri   rI  rH   r@   r„   )
rM   r   rR   rS  Útolistrd   rÏ   r+   r   Úpseudo_huberrT  r3   r3   r4   Útest_pseudo_huber'  s    (0rX  c                  C   s*   d} d}t  | |¡}d}t||dd� d S )Nrj   g¬CÒÑ]r2<gs.-“„De8r@   rA   )r   rW  r   )rÿ  rÂ  rö   rø   r3   r3   r4   Útest_pseudo_huber_small_r5  s
    rY  c                	   C   sL   t jtdd�� tddƒ W 5 Q R X t jtdd�� tddƒ W 5 Q R X d S )NzToo many predicted coefficientsrr  rE   )r  rt  ro  r(   r)   r3   r3   r3   r4   Útest_runtime_warningB  s    ÿÿrZ  )srŸ  rÔ  r  ÚnumpyrM   r   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r  r   r1  Znumpy.testingr   r   r   r   r   r   r   r   r   Zscipyr   Zscipy.special._ufuncsZ_ufuncsr/   Zscipy.specialr    r!   r"   r#   r$   r%   r&   r'   r(   r)   Zscipy.special._testutilsr*   r+   r,   r  r-   r  r&  r)  r+  rY  r[  r^  r  r–  rš  Úobjectr²  rÆ  rÐ  rí  ró  rþ  r  r  r"  r*  rH  rÖ  rÞ  rá  rã  rç  r  r  r  r	  r  r  r  r  r  r#  r'  r*  r+  r3  r4  r6  r7  r:  r;  r<  rG  rH  rK  rO  rP  rU  rX  rY  rZ  r3   r3   r3   r4   Ú<module>   s®   T,       >n	 ME  +b hD2# Y    5 		.	
#=
