a
    ˆù»jÈ¯ ã                   @   s:  d dl Z d dlZ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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/m0Z0 d dl-m1Z1m2Z2m3Z3m4Z4m5Z5 d dl-m6Z6m7Z7m8Z8 d d	l9m:Z: d d
l;m<Z<m=Z= d dl>m?Z?m@Z@ d dlAmBZBmCZCmDZD d dlEZEG dd„ dƒZFG dd„ dƒ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 dd„ dƒZNG dd „ d ƒZOG d!d"„ d"ƒZPG d#d$„ d$ƒZQG d%d&„ d&ƒZRG d'd(„ d(ƒZSG d)d*„ d*ƒZTG d+d,„ d,ƒZUG d-d.„ d.ƒZVG d/d0„ d0ƒZWG d1d2„ d2ƒZXG d3d4„ d4ƒZYG d5d6„ d6ƒZZG d7d8„ d8ƒZ[G d9d:„ d:ƒZ\G d;d<„ d<ƒZ]G d=d>„ d>ƒZ^G d?d@„ d@ƒZ_G dAdB„ dBƒZ`G dCdD„ dDƒZaG dEdF„ dFƒZbG dGdH„ dHƒZcG dIdJ„ dJƒZdG dKdL„ dLƒZeG dMdN„ dNƒZfG dOdP„ dPƒZgG dQdR„ dRƒZhG dSdT„ dTƒZiG dUdV„ dVƒZjG dWdX„ dXƒZkdYdZ„ Zld[d\„ ZmG d]d^„ d^ƒZnd_d`„ Zodadb„ Zpdcdd„ Zqdedf„ Zrdgdh„ Zsdidj„ ZteBdkdl„ ƒZudmdn„ Zvdodp„ Zwdqdr„ Zxdsdt„ Zydudv„ Zzdwdx„ Z{dydz„ Z|d{d|„ Z}d}d~„ Z~G dd€„ d€ƒZdS )�é    N)ÚarrayÚisnanÚr_ÚarangeÚfinfoÚpiÚsinÚcosÚtanÚexpÚlogÚzerosÚsqrtÚasarrayÚinfÚ
nan_to_numÚrealÚarctanÚdoubleÚarray_equal)Ú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Ú	stirling2)Ú_NoValue)Únp_longÚnp_ulong)Ú_FACTORIALK_LIMITS_64BITSÚ_FACTORIALK_LIMITS_32BITS)Ú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^„ Z1e2j3j4d_d`�dadb„ ƒZ5dcdd„ Z6dedf„ Z7dgdh„ Z8e2j3j4did`�djdk„ ƒZ9dldm„ Z:dndo„ Z;dpdq„ Z<drds„ Z=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½�dtS (u  Ú
TestCephesc                 C   s   t  d¡ d S ©Nr   )ÚcephesÚairy©Úself© r:   úDE:\soccer\ml_env\Lib\site-packages\scipy/special/tests/test_basic.pyÚ	test_airy7   s    zTestCephes.test_airyc                 C   s   t  d¡ d S r5   )r6   Úairyer8   r:   r:   r;   Ú
test_airye:   s    zTestCephes.test_airyec              	   C   s6  t  g d¢¡}t  g d¢¡}t  t  |d d …d f |d d d …f ¡¡ dd¡j}t  g d¢g d¢g d¢g d¢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 )N)gL7‰A`åÐ?é   gÍÌÌÌÌÌ@é   )é   çš™™™™™Ù?é   gffffff
@rA   éÿÿÿÿ)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ùÿÿÿé   éè  éô  r   éf   é   ç     ð?ç»½×Ùß|Û=©ÚatolrI   )Únpr   Úbroadcast_arraysÚreshapeÚTr2   r6   ÚbinomÚravelÚrandomÚseedr   r   Zrand)r9   ÚnÚkÚnkZrknownr:   r:   r;   Ú
test_binom=   s,    *ÿ
ý&*ÿ&ý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 )NrJ   rO   é,  é   r   rN   rA   rD   rP   rQ   rR   )rT   rZ   r[   r   Úlogspacer   r   rU   rV   rW   r2   r6   rX   )r9   r\   r]   r^   r:   r:   r;   Útest_binom_2T   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   sP   t | ƒ} t |ƒ}d}d}td|d ƒD ]}|||  | 9 }||9 }q&t|| ƒS ©NrO   )ÚintÚrangeÚfloat)r\   r]   ÚnumZdenÚir:   r:   r;   Ú	binom_intb   s    
z.TestCephes.test_binom_exact.<locals>.binom_intrJ   rO   é   r   rA   rD   rR   )rT   Ú	vectorizerZ   r[   r   r   rU   rV   rW   r2   r6   rX   )r9   rj   r\   r]   r^   r:   r:   r;   Útest_binom_exacta   s    

*ÿ$ ýzTestCephes.test_binom_exactc                 C   s.   g d¢}t  |¡}ttj|dddd� ¡  d S )N))rL   rM   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þ  éÿ  gù*I �y)i   i   g¯I¼¬†™)i  i  gõþW@N€¹)i  i  g5¿�†ôyÙ)r   rO   rA   çê-�™—q=rH   )rT   r   r3   r6   rX   Úcheck)r9   Zdatasetr:   r:   r;   Útest_binom_nooverflow_8346x   s    
z%TestCephes.test_binom_nooverflow_8346c                 C   s   t t ddd¡dƒ d S )NrO   ç      à?ç      ð?)r   r6   Zbdtrr8   r:   r:   r;   Ú	test_bdtrŽ   s    zTestCephes.test_bdtrc                 C   s   t t ddd¡dƒ d S ©NrO   é   rr   )r   r6   Zbdtrir8   r:   r:   r;   Ú
test_bdtri‘   s    zTestCephes.test_bdtric                 C   s   t t ddd¡dƒ d S ru   )r   r6   Zbdtrcr8   r:   r:   r;   Ú
test_bdtrc”   s    zTestCephes.test_bdtrcc                 C   s   t t ddd¡dƒ d S ©NrO   r   ç      @)r   r6   Zbdtrinr8   r:   r:   r;   Útest_bdtrin—   s    zTestCephes.test_bdtrinc                 C   s   t  ddd¡ d S ru   )r6   Zbdtrikr8   r:   r:   r;   Útest_bdtrikš   s    zTestCephes.test_bdtrikc                 C   s   t t d¡dƒ d S ©Nr   ç        )r   r6   Úbeir8   r:   r:   r;   Útest_bei�   s    zTestCephes.test_beic                 C   s   t t d¡dƒ d S r}   )r   r6   Úbeipr8   r:   r:   r;   Ú	test_beip    s    zTestCephes.test_beipc                 C   s   t t d¡dƒ d S ©Nr   rs   )r   r6   Úberr8   r:   r:   r;   Útest_ber£   s    zTestCephes.test_berc                 C   s   t t d¡dƒ d S r}   )r   r6   Úberpr8   r:   r:   r;   Ú	test_berp¦   s    zTestCephes.test_berpc                 C   s   t t ddd¡dƒ d S rƒ   )r   r6   Z
besselpolyr8   r:   r:   r;   Útest_besselpoly©   s    zTestCephes.test_besselpolyc                 C   sH   t jdd�� t ddd¡}W d   ƒ n1 s00    Y  t|dƒ d S ©Nzdeprecated in SciPy 1.12.0©ÚmatchrO   rs   )ÚpytestÚdeprecated_callr    Zbtdtrr   ©r9   Úyr:   r:   r;   Ú
test_btdtr¬   s    ,zTestCephes.test_btdtrc                 C   sH   t jdd�� t ddd¡}W d   ƒ n1 s00    Y  t|dƒ d S r‰   )rŒ   r�   r    Zbtdtrir   rŽ   r:   r:   r;   Útest_btdtri±   s    ,zTestCephes.test_btdtric                 C   s   t t ddd¡dƒ d S ©NrO   rz   )r   r6   Zbtdtriar8   r:   r:   r;   Útest_btdtria¶   s    zTestCephes.test_btdtriac                 C   s   t t ddd¡dƒ d S r’   )r   r6   Zbtdtribr8   r:   r:   r;   Útest_btdtrib¹   s    zTestCephes.test_btdtribc                 C   s   t t d¡dƒ d S ©NrO   rs   )r   r6   Úcbrtr8   r:   r:   r;   Ú	test_cbrt¼   s    zTestCephes.test_cbrtc                 C   s   t t dd¡dƒ d S ©NrO   r   r~   )r   r6   Úchdtrr8   r:   r:   r;   Ú
test_chdtr¿   s    zTestCephes.test_chdtrc                 C   s   t t dd¡dƒ d S ©NrO   r   rs   )r   r6   Úchdtrcr8   r:   r:   r;   Útest_chdtrcÂ   s    zTestCephes.test_chdtrcc                 C   s   t t dd¡dƒ d S ©NrO   r~   )r   r6   Úchdtrir8   r:   r:   r;   Útest_chdtriÅ   s    zTestCephes.test_chdtric                 C   s   t t dd¡dƒ d S )Nr   rz   )r   r6   Zchdtrivr8   r:   r:   r;   Útest_chdtrivÈ   s    zTestCephes.test_chdtrivc                 C   s8  t t ddd¡dƒ t g d¢g d¢g d¢g d¢g d¢g d	¢g d
¢g d¢g d¢g d¢g d¢g d¢g d¢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   rO   r~   )ç      9@ç      4@é�  g¢ÚLÞ94)r¢   ç       @éú   g7ÅF�hþ9)çü©ñÒMbP?r¥   ç      D@g‰gÃ¥cÿ;)ç{®Gáz„?r¥   r¨   g	®¼åð;)r£   ç       @ék   g8»x@xò>)g     €6@rª   r«   g—÷g1\’>>)r¢   rª   r«   g‘ÎÜë²`>)ç      @rª   rs   gpˆ!PÜã?)g     àu@g     Àr@ç      $@g jû¨
î?)ç      Y@ç      +@r­   g]þÿÿï?)g     à…@r£   r¤   g4Û™ÿÿÿï?)g     Àb@r¯   r­   gþÿÿÿÿÿï?)g      d@r¯   r­   rs   rA   rv   ro   rH   rª   é   )r   r6   ZchndtrrT   r   r   r   r   r   r   Únan)r9   ÚvaluesZcdfr:   r:   r;   Útest_chndtrË   s.    ó2zTestCephes.test_chndtrc                 C   s   t t ddd¡dƒ d S ©Nr   rO   rz   )r   r6   Z	chndtridfr8   r:   r:   r;   Útest_chndtridfé   s    zTestCephes.test_chndtridfc                 C   s   t t ddd¡dƒ d S r´   )r   r6   Z	chndtrincr8   r:   r:   r;   Útest_chndtrincì   s    zTestCephes.test_chndtrincc                 C   s   t t ddd¡dƒ d S ©Nr   rO   r~   )r   r6   Zchndtrixr8   r:   r:   r;   Útest_chndtrixï   s    zTestCephes.test_chndtrixc                 C   s   t t d¡dƒ d S rƒ   )r   r6   Úcosdgr8   r:   r:   r;   Ú
test_cosdgò   s    zTestCephes.test_cosdgc                 C   s   t t d¡dƒ d S r}   )r   r6   Úcosm1r8   r:   r:   r;   Ú
test_cosm1õ   s    zTestCephes.test_cosm1c                 C   s   t t d¡dƒ d S ©Né-   rs   )r   r6   Úcotdgr8   r:   r:   r;   Ú
test_cotdgø   s    zTestCephes.test_cotdgc                 C   s$   t t d¡dƒ tt d¡dƒ d S )Nr   r~   g®Gáz®ó?gâ¨Àfà?)r   r6   Údawsnr   r8   r:   r:   r;   Ú
test_dawsnû   s    zTestCephes.test_dawsnc                 C   sV  g 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  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� g d¢}t  dt j d ¡ t j¡}tt ||¡ddd� t  dt j dt j dt j ¡}g d¢}tt |d¡|dd� d S )N)rO   r°   é   rA   g-Cëâ6
?rs   rC   ©Údecimalç•Ö&è.>rk   çVçž¯Ò<Úfloat128ro   é   )rA   r?   é   ç      ð¿çš™™™™™É?)g£ºgúìë?gsø½OBá?g”saLÀ?g
7•I”^Ê¿rv   )rT   r   r   ÚastypeZfloat32r   r    ÚdiricÚfloat64ÚhasattrrÈ   r   )r9   Zn_oddÚxZn_evenZoctave_resultr:   r:   r;   Ú
test_diricÿ   s     
 zTestCephes.test_diricc                 C   sH   t  d¡}t  g d¢¡}tt |d d …t jf |¡j|j|jfkƒ d S )Nr°   )rO   rv   rC   )	rT   r   r   r   r    rÎ   ZnewaxisÚshapeÚsize)r9   rÑ   r\   r:   r:   r;   Útest_diric_broadcasting  s    
z"TestCephes.test_diric_broadcastingc                 C   s   t t d¡dƒ d S r•   )r   r6   r!   r8   r:   r:   r;   Útest_ellipe  s    zTestCephes.test_ellipec                 C   s   t t dd¡dƒ d S r·   )r   r6   Ú	ellipeincr8   r:   r:   r;   Útest_ellipeinc   s    zTestCephes.test_ellipeincc                 C   s   t  dd¡ d S ©Nr   rO   )r6   Úellipjr8   r:   r:   r;   Útest_ellipj#  s    zTestCephes.test_ellipjc                 C   s   t tdƒtd ƒ d S )Nr   rA   )r   r"   r   r8   r:   r:   r;   Útest_ellipk&  s    zTestCephes.test_ellipkc                 C   s   t t dd¡dƒ d S r}   )r   r6   Ú	ellipkincr8   r:   r:   r;   Útest_ellipkinc)  s    zTestCephes.test_ellipkincc                 C   s   t t d¡dƒ d S r}   ©r   r6   Úerfr8   r:   r:   r;   Útest_erf,  s    zTestCephes.test_erfc                 C   s$   d}t t |¡t | ¡ dƒ d S )Ng ¡#8xŸ@r~   rß   ©r9   rÑ   r:   r:   r;   Útest_erf_symmetry/  s    zTestCephes.test_erf_symmetryc                 C   s   t t d¡dƒ d S rƒ   )r   r6   Úerfcr8   r:   r:   r;   Ú	test_erfc3  s    zTestCephes.test_erfcc                 C   s   t t d¡dƒ d S )NrA   r®   )r   r6   Úexp10r8   r:   r:   r;   Ú
test_exp106  s    zTestCephes.test_exp10c                 C   s   t t d¡dƒ d S )NrA   ç      @)r   r6   Úexp2r8   r:   r:   r;   Ú	test_exp29  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   r~   rD   )r   r6   Úexpm1rT   r   r±   r8   r:   r:   r;   Ú
test_expm1<  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   rO   rA   r?   r°   rD   )r6   rë   r   ÚcomplexrT   r   r±   )r9   rë   r:   r:   r;   Útest_expm1_complexB  s"     "$"  "  "   zTestCephes.test_expm1_complexz-The real part of expm1(z) bad at these points©Úreasonc                 C   sh   t  g d¢¡}t  t  |¡¡ }|d|  }t  g d¢¡}t |¡}t|j|jdƒ t|j|jdƒ d S )N)çš™™™™™¹?rÌ   ç333333Ó?r°   é   ra   ù              ð?)y”­á=…ÿ�¼Cwˆ¯¹?yC7gg)gF<ëUŠgòÉ?yŠQØá”Š<—™âD*ÌÓ?yg:>¬Œ–<»›sKÀy>ñûÕñ¸£¼$	‹Um>lÀy;VÃél ™<„«£´å@rv   ra   )	rT   r   r   r	   r6   rë   r   Úimagr   )r9   r�   rÑ   ÚzÚexpectedÚfoundr:   r:   r;   Útest_expm1_complex_hardU  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 )
NrO   r   r~   ç�íµ ÷Æ°>r°   é
   g£�2•óÿï?ro   rH   )r   r6   Zfdtrr   r8   r:   r:   r;   Ú	test_fdtrj  s    ÿzTestCephes.test_fdtrc                 C   s0   t t ddd¡dƒ tt ddd¡ddd	� d S )
NrO   r   rs   rA   rò   g    _ BgDô�IXlÑ?ro   rH   )r   r6   Zfdtrcr   r8   r:   r:   r;   Ú
test_fdtrcp  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 )NrO   gV-²�ïß?gÕxé&1à?gší
}°Ìï?g<zO'Ñð?rû   rH   g°×€í‡ì?rò   rv   ro   )r   r6   Úfdtrir   )r9   Úpr:   r:   r;   Ú
test_fdtriw  s
    ÿzTestCephes.test_fdtrizReturns nan on i686.c                 C   s   t t ddd¡dƒ d S )NrO   rr   )r   r6   rÿ   r8   r:   r:   r;   Útest_fdtri_mysterious_failure  s    z(TestCephes.test_fdtri_mysterious_failurec                 C   s   t t ddd¡dƒ d S ry   )r   r6   Zfdtridfdr8   r:   r:   r;   Útest_fdtridfdƒ  s    zTestCephes.test_fdtridfdc                 C   s   t t d¡dƒ d S ©Nr   ©r~   r~   )r   r6   Úfresnelr8   r:   r:   r;   Útest_fresnel†  s    zTestCephes.test_fresnelc                 C   s   t t d¡dƒ d S ©Nr°   ç      8@)r   r6   Úgammar8   r:   r:   r;   Ú
test_gamma‰  s    zTestCephes.test_gammac                 C   s   t t dd¡dƒ d S )Nr°   rO   r~   )r   r6   Úgammainccinvr8   r:   r:   r;   Útest_gammainccinvŒ  s    zTestCephes.test_gammainccinvc                 C   s   t  d¡ d S )Nrü   )r6   Úgammalnr8   r:   r:   r;   Útest_gammaln�  s    zTestCephes.test_gammalnc                 C   s2   t  g d¢t j¡}tt |¡t  t |¡¡ƒ d S )N)éüÿÿÿç      ÀgffffffÀrO   gÍÌÌÌÌÌ@)rT   r   rÏ   r   r6   ZgammasgnÚsignÚrgamma)r9   Úvalsr:   r:   r;   Útest_gammasgn’  s    zTestCephes.test_gammasgnc                 C   s   t t ddd¡dƒ d S r˜   )r   r6   Úgdtrr8   r:   r:   r;   Ú	test_gdtr–  s    zTestCephes.test_gdtrc                 C   s   t t ddtj¡dƒ d S r•   )r   r6   r  rT   r   r8   r:   r:   r;   Útest_gdtr_inf™  s    zTestCephes.test_gdtr_infc                 C   s   t t ddd¡dƒ d S r›   )r   r6   Zgdtrcr8   r:   r:   r;   Ú
test_gdtrcœ  s    zTestCephes.test_gdtrcc                 C   s   t t ddd¡dƒ d S r·   )r   r6   Zgdtriar8   r:   r:   r;   Útest_gdtriaŸ  s    zTestCephes.test_gdtriac                 C   s   t  ddd¡ d S ©NrO   r   )r6   Zgdtribr8   r:   r:   r;   Útest_gdtrib¢  s    zTestCephes.test_gdtribc                 C   s   t  ddd¡ d S ©NrO   rò   )r6   Zgdtrixr8   r:   r:   r;   Útest_gdtrix¦  s    zTestCephes.test_gdtrixc                 C   s   t  dd¡ d S rd   )r6   Úhankel1r8   r:   r:   r;   Útest_hankel1©  s    zTestCephes.test_hankel1c                 C   s   t  dd¡ d S rd   )r6   Úhankel1er8   r:   r:   r;   Útest_hankel1e¬  s    zTestCephes.test_hankel1ec                 C   s   t  dd¡ d S rd   )r6   Úhankel2r8   r:   r:   r;   Útest_hankel2¯  s    zTestCephes.test_hankel2c                 C   s   t  dd¡ d S rd   )r6   Úhankel2er8   r:   r:   r;   Ú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 )NrO   rs   rv   r?   éúÿÿÿg¹ãˆ®š?)r   r6   Úhyp1f1r   r8   r:   r:   r;   Útest_hyp1f1µ  s    zTestCephes.test_hyp1f1c                 C   s   t t dddd¡dƒ d S r›   )r   r6   Úhyp2f1r8   r:   r:   r;   Útest_hyp2f1º  s    zTestCephes.test_hyp2f1c                 C   s   t t d¡dƒ d S rƒ   )r   r6   Úi0r8   r:   r:   r;   Útest_i0½  s    zTestCephes.test_i0c                 C   s   t t d¡dƒ d S rƒ   )r   r6   Úi0er8   r:   r:   r;   Útest_i0eÀ  s    zTestCephes.test_i0ec                 C   s   t t d¡dƒ d S r}   )r   r6   Úi1r8   r:   r:   r;   Útest_i1Ã  s    zTestCephes.test_i1c                 C   s   t t d¡dƒ d S r}   )r   r6   Úi1er8   r:   r:   r;   Útest_i1eÆ  s    zTestCephes.test_i1ec                 C   s   t  d¡ d S rd   )r6   Úit2i0k0r8   r:   r:   r;   Útest_it2i0k0É  s    zTestCephes.test_it2i0k0c                 C   s   t  d¡ d S rd   )r6   Úit2j0y0r8   r:   r:   r;   Útest_it2j0y0Ì  s    zTestCephes.test_it2j0y0c                 C   s   t  d¡ d S rd   )r6   Z
it2struve0r8   r:   r:   r;   Útest_it2struve0Ï  s    zTestCephes.test_it2struve0c                 C   s   t  d¡ d S rd   )r6   Zitairyr8   r:   r:   r;   Útest_itairyÒ  s    zTestCephes.test_itairyc                 C   s   t t d¡dƒ d S r  )r   r6   Úiti0k0r8   r:   r:   r;   Útest_iti0k0Õ  s    zTestCephes.test_iti0k0c                 C   s   t t d¡dƒ d S r  )r   r6   Úitj0y0r8   r:   r:   r;   Útest_itj0y0Ø  s    zTestCephes.test_itj0y0c                 C   s   t t d¡dƒ d S r}   )r   r6   Zitmodstruve0r8   r:   r:   r;   Útest_itmodstruve0Û  s    zTestCephes.test_itmodstruve0c                 C   s   t t d¡dƒ d S r}   )r   r6   Z	itstruve0r8   r:   r:   r;   Útest_itstruve0Þ  s    zTestCephes.test_itstruve0c                 C   s   t t dd¡dƒ d S r˜   )r   r6   Úivr8   r:   r:   r;   Útest_ivá  s    zTestCephes.test_ivc                 C   s   t t dd¡dƒ d S r˜   )r   r6   Úiver8   r:   r:   r;   Útest_iveä  s    zTestCephes.test_ivec                 C   s   t t d¡dƒ d S rƒ   )r   r6   Új0r8   r:   r:   r;   Útest_j0ç  s    zTestCephes.test_j0c                 C   s   t t d¡dƒ d S r}   )r   r6   Új1r8   r:   r:   r;   Útest_j1ê  s    zTestCephes.test_j1c                 C   s   t t dd¡dƒ d S rƒ   )r   r6   Újnr8   r:   r:   r;   Útest_jní  s    zTestCephes.test_jnc                 C   s   t t dd¡dƒ d S rƒ   )r   r6   Újvr8   r:   r:   r;   Útest_jvð  s    zTestCephes.test_jvc                 C   s   t t dd¡dƒ d S rƒ   )r   r6   Újver8   r:   r:   r;   Útest_jveó  s    zTestCephes.test_jvec                 C   s   t  d¡ d S ©NrA   )r6   Úk0r8   r:   r:   r;   Útest_k0ö  s    zTestCephes.test_k0c                 C   s   t  d¡ d S rN  )r6   Úk0er8   r:   r:   r;   Útest_k0eù  s    zTestCephes.test_k0ec                 C   s   t  d¡ d S rN  )r6   Úk1r8   r:   r:   r;   Útest_k1ü  s    zTestCephes.test_k1c                 C   s   t  d¡ d S rN  )r6   Úk1er8   r:   r:   r;   Útest_k1eÿ  s    zTestCephes.test_k1ec                 C   s   t  d¡ d S rN  )r6   Úkeir8   r:   r:   r;   Útest_kei  s    zTestCephes.test_keic                 C   s   t t d¡dƒ d S r}   )r   r6   Úkeipr8   r:   r:   r;   Ú	test_keip  s    zTestCephes.test_keipc                 C   s   t  d¡ d S rN  )r6   Úkerr8   r:   r:   r;   Útest_ker  s    zTestCephes.test_kerc                 C   s   t  d¡ d S rN  )r6   Úkerpr8   r:   r:   r;   Ú	test_kerp  s    zTestCephes.test_kerpc                 C   s   t  d¡ d S rN  )r6   Úkelvinr8   r:   r:   r;   Útest_kelvin  s    zTestCephes.test_kelvinc                 C   s   t  dd¡ d S rd   )r6   Úknr8   r:   r:   r;   Útest_kn  s    zTestCephes.test_knc                 C   s*   t t d¡dƒ tt t tj¡¡ƒ d S rž   )r   r6   Zkolmogir   rT   r   r±   r8   r:   r:   r;   Útest_kolmogi  s    zTestCephes.test_kolmogic                 C   s   t t d¡dƒ d S rƒ   )r   r6   Z
kolmogorovr8   r:   r:   r;   Útest_kolmogorov  s    zTestCephes.test_kolmogorovc                 C   s   t t d¡dƒ d S )Nr   ç       €)r   r6   Z_kolmogpr8   r:   r:   r;   Útest_kolmogp  s    zTestCephes.test_kolmogpc                 C   s   t t d¡dƒ d S r}   )r   r6   Z_kolmogcr8   r:   r:   r;   Útest_kolmogc  s    zTestCephes.test_kolmogcc                 C   s*   t t d¡dƒ tt t tj¡¡ƒ d S r}   )r   r6   Z	_kolmogcir   rT   r   r±   r8   r:   r:   r;   Útest_kolmogci!  s    zTestCephes.test_kolmogcic                 C   s   t  dd¡ d S rd   )r6   Úkvr8   r:   r:   r;   Útest_kv%  s    zTestCephes.test_kvc                 C   s   t  dd¡ d S rd   )r6   Úkver8   r:   r:   r;   Útest_kve(  s    zTestCephes.test_kvec                 C   sL   t j}t|dƒdƒ t|dƒtj ƒ t|dƒtjƒ t|tjƒtjƒ d S )Nr   r~   rD   éþÿÿÿ)r6   Úlog1pr   rT   r   r±   )r9   rn  r:   r:   r;   Ú
test_log1p+  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 d   ƒ n1 �sâ0    Y  d S )	Nrí   rD   r   z%invalid value encountered in multiplyrO   rA   rv   r?   )r6   rn  rî   r   rT   r   r   ÚfilterÚRuntimeWarningr   r   r±   )r9   rn  ÚcÚsupr:   r:   r;   Útest_log1p_complex2  s"    
$ ",&"$" zTestCephes.test_log1p_complexc                 C   s   t t ddd¡dƒ d S )Nr   rO   rs   )r   r6   Úlpmvr8   r:   r:   r;   Ú	test_lpmvE  s    zTestCephes.test_lpmvc                 C   s   t t dd¡dƒ d S r›   )r   r6   Z	mathieu_ar8   r:   r:   r;   Útest_mathieu_aH  s    zTestCephes.test_mathieu_ac                 C   s   t t dd¡dƒ d S r›   )r   r6   Z	mathieu_br8   r:   r:   r;   Útest_mathieu_bK  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 )NrO   r   ©rs   r~   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ž æ?rO   rr   rA   é   rv   r?   é   ç      Ð?)rT   r   r	   ©ÚmÚqr÷   r:   r:   r;   Ú	ce_smallqR  s    $z.TestCephes.test_mathieu_cem.<locals>.ce_smallqéd   éâÿÿÿé÷ÿÿÿrü   ç°rh‘í|¿?ç›+¡†›„=©rI   rS   )	r   r6   Úmathieu_cemrT   rl   r   r   rb   r   )r9   r�  r  r€  r:   r:   r;   Útest_mathieu_cemN  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 )NrO   r   ©r~   rs   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 )Nrz  rO   r{  rv   rA   r?   r|  )rT   r   r   r~  r:   r:   r;   Ú	se_smallqk  s     z.TestCephes.test_mathieu_sem.<locals>.se_smallqr‚  rƒ  r„  rü   r…  r†  r‡  )	r   r6   Úmathieu_semrT   rl   r   r   rb   r   )r9   r‹  r  r€  r:   r:   r;   Útest_mathieu_semg  s    
*"þzTestCephes.test_mathieu_semc                 C   s   t t ddd¡dƒ d S ©NrO   r   r  )r   r6   Úmathieu_modcem1r8   r:   r:   r;   Ú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 )
NrO   r   r?   rm  rA   rü   rC   rQ   rH   )	r6   Úmathieu_modcem2rT   r   r   rb   Úlinspacer�  r   ©r9   r  r€  r÷   Úy1ÚfrÚy2r:   r:   r;   Útest_mathieu_modcem2€  s    "&ÿzTestCephes.test_mathieu_modcem2c                 C   s   t t ddd¡dƒ d S rŽ  )r   r6   Úmathieu_modsem1r8   r:   r:   r;   Ú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 )
NrO   r?   rm  rA   rü   r   rC   rQ   rH   )	r6   Úmathieu_modsem2rT   r   r   rb   r’  r˜  r   r“  r:   r:   r;   Ú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   r6   rˆ  rT   r±   rŒ  r�  r˜  r‘  rš  r8   r:   r:   r;   Ú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é<   rA   r‚  rD   r   g.ød‰SÂ?rQ   rH   rO   gà§GcÛì?ç-Cëâ6?)rf   r6   rš  r   )r9   r]   Úvr:   r:   r;   Útest_mathieu_ticket_1847¬  s    z#TestCephes.test_mathieu_ticket_1847c                 C   s   t  d¡ d S r5   )r6   Zmodfresnelmr8   r:   r:   r;   Útest_modfresnelmµ  s    zTestCephes.test_modfresnelmc                 C   s   t  d¡ d S r5   )r6   Zmodfresnelpr8   r:   r:   r;   Útest_modfresnelp¸  s    zTestCephes.test_modfresnelpc                 C   s   t t dd¡dƒ d S r˜   )r   r6   Z	modstruver8   r:   r:   r;   Útest_modstruve»  s    zTestCephes.test_modstruvec                 C   s   t t ddd¡dƒ d S r•   )r   r6   Únbdtrr8   r:   r:   r;   Ú
test_nbdtr¾  s    zTestCephes.test_nbdtrc                 C   s   t t ddd¡dƒ d S rž   )r   r6   Únbdtrcr8   r:   r:   r;   Útest_nbdtrcÁ  s    zTestCephes.test_nbdtrcc                 C   s   t t ddd¡dƒ d S r•   )r   r6   Únbdtrir8   r:   r:   r;   Útest_nbdtriÄ  s    zTestCephes.test_nbdtric                 C   s   t  ddd¡ d S )NrO   rB   rr   )r6   Znbdtrikr8   r:   r:   r;   Útest_nbdtrikÇ  s    zTestCephes.test_nbdtrikc                 C   s   t t ddd¡dƒ d S ry   )r   r6   Znbdtrinr8   r:   r:   r;   Útest_nbdtrinÊ  s    zTestCephes.test_nbdtrinc                 C   s   t t dddd¡dƒ d S r˜   )r   r6   Úncfdtrr8   r:   r:   r;   Útest_ncfdtrÍ  s    zTestCephes.test_ncfdtrc                 C   sH   t t dddd¡dƒ g d¢}t ddd|¡}tt ddd|¡|ƒ d S )NrO   r   r~   )rr   rO   r�  rA   rv   r�  )r   r6   Zncfdtrir®  r   )r9   Úfr   r:   r:   r;   Útest_ncfdtriÐ  s    zTestCephes.test_ncfdtric                 C   s2   g d¢}t  d|dd¡}tt  d|dd¡|ƒ d S )N©rO   rA   rv   rA   r}  rk   )r6   r®  r   Z
ncfdtridfd)r9   Zdfdr   r:   r:   r;   Útest_ncfdtridfdÖ  s    zTestCephes.test_ncfdtridfdc                 C   s6   g d¢}t  |ddd¡}tt  |ddd¡|dd� d S )N)rò   rO   rA   rv   g     ˆÃ@rA   r}  rk   gñhãˆµøä>rH   )r6   r®  r   Z
ncfdtridfn)r9   Údfnr   r:   r:   r;   Útest_ncfdtridfnÛ  s    zTestCephes.test_ncfdtridfnc                 C   s2   g d¢}t  dd|d¡}tt  dd|d¡|ƒ d S )N)rr   r�  rª   rA   rv   rk   )r6   r®  r   Z	ncfdtrinc)r9   Úncr   r:   r:   r;   Ú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 )NrO   r   rr   é	   i   r¾   r~   rs   r°   rª   r­   )	r   r6   Znctdtrr   rT   r   r   r   r±   r8   r:   r:   r;   Útest_nctdtrå  s    zTestCephes.test_nctdtrc                 C   s   t  ddd¡ d S )NrO   rr   r   )r6   Z	nctdtridfr8   r:   r:   r;   Útest_nctdtridfñ  s    zTestCephes.test_nctdtridfc                 C   s   t  ddd¡ d S r  )r6   Z	nctdtrincr8   r:   r:   r;   Útest_nctdtrincô  s    zTestCephes.test_nctdtrincc                 C   s   t  ddd¡ d S )Nrò   rÌ   rr   )r6   Znctdtritr8   r:   r:   r;   Útest_nctdtrit÷  s    zTestCephes.test_nctdtritc                 C   s   t t ddd¡dƒ d S )Nrr   rO   rs   )r   r6   Znrdtrimnr8   r:   r:   r;   Útest_nrdtrimnú  s    zTestCephes.test_nrdtrimnc                 C   s   t t ddd¡dddd� d S )Nrr   r~   r   rR   )r   r6   Znrdtrisdr8   r:   r:   r;   Útest_nrdtrisdý  s    ÿzTestCephes.test_nrdtrisdc                 C   s   t  dddd¡ d S r  )r6   Zobl_ang1r8   r:   r:   r;   Ú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 )NrO   r   rs   r~   )r6   Zobl_ang1_cvr   )r9   Úresultr:   r:   r;   Útest_obl_ang1_cv  s    zTestCephes.test_obl_ang1_cvc                 C   s   t t ddd¡dƒ d S ©NrO   r   rª   )r   r6   Zobl_cvr8   r:   r:   r;   Útest_obl_cv	  s    zTestCephes.test_obl_cvc                 C   s   t  dddd¡ d S r  )r6   Zobl_rad1r8   r:   r:   r;   Útest_obl_rad1  s    zTestCephes.test_obl_rad1c                 C   s   t  ddddd¡ d S r  )r6   Zobl_rad1_cvr8   r:   r:   r;   Útest_obl_rad1_cv  s    zTestCephes.test_obl_rad1_cvc                 C   s   t  dddd¡ d S r  )r6   Zobl_rad2r8   r:   r:   r;   Útest_obl_rad2  s    zTestCephes.test_obl_rad2c                 C   s   t  ddddd¡ d S r  )r6   Zobl_rad2_cvr8   r:   r:   r;   Útest_obl_rad2_cv  s    zTestCephes.test_obl_rad2_cvc                 C   s   t t dd¡dƒ d S )NrO   r   rŠ  )r   r6   Úpbdvr8   r:   r:   r;   Ú	test_pbdv  s    zTestCephes.test_pbdvc                 C   s   t  dd¡ d S r  )r6   Úpbvvr8   r:   r:   r;   Ú	test_pbvv  s    zTestCephes.test_pbvvc                 C   s   t  dd¡ d S r  )r6   Zpbwar8   r:   r:   r;   Ú	test_pbwa  s    zTestCephes.test_pbwac                 C   s>   t  dd¡}t|t d¡ƒ t  g d¢d¡}t|g d¢ƒ d S )Nr   rO   rD   ©r   rO   rA   )rO   rO   rO   )r6   Zpdtrr   rT   r   r   ©r9   Úvalr:   r:   r;   Ú	test_pdtr!  s    zTestCephes.test_pdtrc                 C   sB   t  dd¡}t|dt d¡ ƒ t  g d¢d¡}t|g d¢ƒ d S )Nr   rO   rD   rÍ  r~   )r   r   r   )r6   Zpdtrcr   rT   r   r   rÎ  r:   r:   r;   Ú
test_pdtrc(  s    zTestCephes.test_pdtrcc                 C   sB   t ƒ �(}| td¡ t dd¡ W d   ƒ n1 s40    Y  d S )Nú-floating point number truncated to an integerrr   )r   rp  rq  r6   Úpdtri)r9   rs  r:   r:   r;   Ú
test_pdtri/  s    zTestCephes.test_pdtric                 C   sR   t  dd¡}tt  |d d¡dƒ t  dgdgdggg d¢¡}t|t d¡ƒ d S )Nrr   rO   r   r}  çffffffî?)r   ç#B’¡œÇ;rû   )rv   rv   )r6   Zpdtrikr   Z	gammainccr   rT   r   ©r9   r]   r:   r:   r;   Útest_pdtrik4  s    zTestCephes.test_pdtrikc                 C   s   t  dddd¡ d S r  )r6   Zpro_ang1r8   r:   r:   r;   Útest_pro_ang1;  s    zTestCephes.test_pro_ang1c                 C   s    t t ddddd¡tdƒƒ d S )NrO   r   ry  )r   r6   Zpro_ang1_cvr   r8   r:   r:   r;   Útest_pro_ang1_cv>  s    ÿzTestCephes.test_pro_ang1_cvc                 C   s   t t ddd¡dƒ d S rÂ  )r   r6   Zpro_cvr8   r:   r:   r;   Útest_pro_cvB  s    zTestCephes.test_pro_cvc                 C   s   t  dddd¡ d S r  )r6   Zpro_rad1r8   r:   r:   r;   Útest_pro_rad1E  s    zTestCephes.test_pro_rad1c                 C   s   t  ddddd¡ d S r  )r6   Zpro_rad1_cvr8   r:   r:   r;   Útest_pro_rad1_cvH  s    zTestCephes.test_pro_rad1_cvc                 C   s   t  dddd¡ d S r  )r6   Zpro_rad2r8   r:   r:   r;   Útest_pro_rad2K  s    zTestCephes.test_pro_rad2c                 C   s   t  ddddd¡ d S r  )r6   Zpro_rad2_cvr8   r:   r:   r;   Útest_pro_rad2_cvN  s    zTestCephes.test_pro_rad2_cvc                 C   s   t  d¡ d S rd   )r6   Úpsir8   r:   r:   r;   Útest_psiQ  s    zTestCephes.test_psic                 C   s   t t ddd¡dƒ d S r5   )r   r6   Úradianr8   r:   r:   r;   Útest_radianT  s    zTestCephes.test_radianc                 C   s   t t d¡dƒ d S r•   )r   r6   r  r8   r:   r:   r;   Útest_rgammaW  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   r6   Úroundr8   r:   r:   r;   Ú
test_roundZ  s    zTestCephes.test_roundc                 C   s   t  d¡ d S rd   )r6   Zshichir8   r:   r:   r;   Útest_shichib  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 )NrO   rr   r   z cosine integral(-inf) is not nan)r6   ZsicirT   r   r   r   r   r   )r9   Úsrr  r:   r:   r;   Ú	test_sicie  s    

zTestCephes.test_sicic                 C   s   t t d¡dƒ d S ©NéZ   rs   )r   r6   Úsindgr8   r:   r:   r;   Ú
test_sindgp  s    zTestCephes.test_sindgc                 C   s.   t t dd¡dƒ tt t dtj¡¡ƒ d S )NrO   rò   çÍÌÌÌÌÌì?)r   r6   Úsmirnovr   rT   r   r±   r8   r:   r:   r;   Útest_smirnovs  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 )	NrO   rò   rD   rA   ç      è?ç      à¿rv   g      È¿)r   r6   Z	_smirnovpr   rT   r   r±   r8   r:   r:   r;   Útest_smirnovpw  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 )
NrO   rò   r   rô   T©Zendpointrv   r°   r?   )
r   r6   Ú	_smirnovcr   rT   r   r±   r’  r   ró  )r9   Úx10Zx4r:   r:   r;   Ú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 ©NrO   rB   ç333333ã?)r   r6   ró  Úsmirnovir   rT   r   r±   r8   r:   r:   r;   Ú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   r6   rù  Z
_smirnovcir   rT   r   r±   r8   r:   r:   r;   Útest_smirnovciŠ  s    zTestCephes.test_smirnovcic                 C   s   t t d¡dƒ d S rž   )r   r6   Zspencer8   r:   r:   r;   Ú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 )NrO   r   rr   rõ  rA   gMo˜¸þFë?)r   r6   Zstdtrr   r8   r:   r:   r;   Ú
test_stdtr’  s    zTestCephes.test_stdtrc                 C   s   t  dd¡ d S )Nçffffffæ?rO   )r6   Zstdtridfr8   r:   r:   r;   Útest_stdtridf—  s    zTestCephes.test_stdtridfc                 C   s   t  dd¡ d S )NrO   r  )r6   Zstdtritr8   r:   r:   r;   Útest_stdtritš  s    zTestCephes.test_stdtritc                 C   s   t t dd¡dƒ d S r}   )r   r6   Ústruver8   r:   r:   r;   Útest_struve�  s    zTestCephes.test_struvec                 C   s   t t d¡dƒ d S r½   )r   r6   Útandgr8   r:   r:   r;   Ú
test_tandg   s    zTestCephes.test_tandgc                 C   s   t t dd¡dƒ d S r•   )r   r6   Ztklmbdar8   r:   r:   r;   Útest_tklmbda£  s    zTestCephes.test_tklmbdac                 C   s   t  d¡ d S rd   )r6   Úy0r8   r:   r:   r;   Útest_y0¦  s    zTestCephes.test_y0c                 C   s   t  d¡ d S rd   )r6   r”  r8   r:   r:   r;   Útest_y1©  s    zTestCephes.test_y1c                 C   s   t  dd¡ d S rd   )r6   Úynr8   r:   r:   r;   Útest_yn¬  s    zTestCephes.test_ync                 C   s   t  dd¡ d S rd   )r6   Úyvr8   r:   r:   r;   Útest_yv¯  s    zTestCephes.test_yvc                 C   s   t  dd¡ d S rd   )r6   Úyver8   r:   r:   r;   Útest_yve²  s    zTestCephes.test_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Ë   rs   g      "Àg      "@g†4×µ/Y¾gï8EGrùñ?rç  gffffff@iËÿÿÿgš™™™™>@r~   g|ò°Pkš¿?rô   rO   iêÿÿÿrm  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é<rG   rH   )rî   r2   r6   Úwofz)r9   r÷   Úwr:   r:   r;   Ú	test_wofzµ  sr    ûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿá"zTestCephes.test_wofzN)¾Ú__name__Ú
__module__Ú__qualname__r<   r>   r_   rc   rm   rq   rt   rw   rx   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Œ   Ú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/  r1  r3  r5  r7  r8  r9  r;  r=  r>  r?  rA  rC  rE  rG  rI  rK  rM  rP  rR  rT  rV  rX  rZ  r\  r^  r`  rb  rc  rd  rf  rg  rh  rj  rl  ro  rt  rv  rw  rx  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á  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;   r4   6   st  

	r4   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   s^   t  d¡}t|tg d¢ƒdƒ t  d¡}t|tg d¢ƒdƒ t  d¡}t|tg d¢ƒdƒ d S )Nç®Gáz®ï?)g*÷é¢…Á?gTk'kP‹Ä¿gñe¢©+ó?gýyC¯ytí?r{  g=
×£p=Ú?)g‚'Ý$'Ð?ge«ªÎ¿g›‰LÐÑé?gæ
ŒHVVà?g
×£p=
×¿)gl@ÆÔD|Ü?gVƒ¬~×­Í¿gU–¬äÂÜ?g¨3{É”ÉÞ?)r    r7   r   r   râ   r:   r:   r;   r<   ã  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©   r?   rA   gNè´�N{?rE   )	r    r=   r7   rf   r   r   Úabsr   r   )r9   ÚaÚbÚb1r\   r:   r:   r;   r>   ù  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g d¢ƒdƒ t|d tg d¢ƒdƒ t|d tg d¢ƒdƒ t|d tg d¢ƒdƒ d S )NrA   g‘†lƒ‡Çò¿goe‰Î2+
Àg(õá0[Àg Xü*éJÀgõUfÏÝ¿gË°zU¡`Ù?g4Ðc1=Cã?gó¿CîuTè¿r?   r°   r   )g²&„‡Çò¿g(Æ.÷2+
Àg²óÕð¬RÀg}þ`·í­Àg¯%ëÍ�Àrô   rO   )g7Ç;1[ÀgÛeì*éJÀg”Vw±Àg˜L¸¦ Àg<€É3¾ÂÀrü   )gÌNÏÝ¿g3%IQ¡`Ù?gZy¡†ÎŒ×¿gÊ€1‹1^Ö?gô3þ3t�Õ¿rv   )gq«M0=Cã?g7ëïuTè¿g\ÜG`¡Èê?gþpâ�žvì¿g$ß.mÂí?)r    Úbi_zerosr   r   )r9   ÚbiZbiar:   r:   r;   Útest_bi_zeros  s(    




ý
üüüü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 )NrO   gÒác¨q´Àg!·xÛùLð¿gMóŽSt$á?g ‘~û:pæ?r?   )r    Úai_zerosr   r   )r9   Zair:   r:   r;   Ú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… g d	¢dd� t|d d… g d
¢dd� d S )NéPÃ  rO   r}  rQ   rH   r   rR   rE   )gÞu¨q´Àg‹qHkZÀg4µ¢Àg™é9Î–%ÀgB™~ôÊÆÀgÌL„ä˜"À)g ªæÛùLð¿gQö“Oü	ÀgMQnÈGÀg3þ:§Àg)Ê}Àg¥æîú À)r    r(  r7   r!  r   )r9   r÷   ÚzpZai_zpxZaip_zxZai_zZaip_zÚ_Zai_zpZaip_zpZai_envelopeZaip_enveloper:   r:   r;   Útest_ai_zeros_big+  s"    þþ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… g d	¢dd� t|d d… g d
¢dd� d S )Nr*  rO   r}  rQ   rH   r   rR   rE   )gx&„‡Çò¿gg†-÷2+
ÀgÁšÖð¬RÀggÑ`·í­Àgu•%ëÍ�Àg{¸àû À)g K;1[ÀgÂáì*éJÀg¬¯Vw±Àg<w¸¦ Àgd
Ê3¾ÂÀg/{Ô
"À)r    r%  r7   r!  r   )r9   r÷   r+  Zbi_zpxZbip_zxr,  Zbi_zZbip_zZbi_zpZbip_zpZbi_envelopeZbip_enveloper:   r:   r;   Útest_bi_zeros_bigC  s"    þþzTestAiry.test_bi_zeros_bigN)	r  r  r  r<   r>   r'  r)  r-  r.  r:   r:   r:   r;   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ô   rO   rÌ   r{  )r    ÚgenlaguerreZassoc_laguerrer   )r9   Za1Za2r:   r:   r;   Útest_assoc_laguerre]  s
    z%TestAssocLaguerre.test_assoc_laguerreN)r  r  r  r1  r:   r:   r:   r;   r/  \  s   r/  c                   @   s   e Zd Zdd„ ZdS )ÚTestBesselpolyc                 C   s   d S ©Nr:   r8   r:   r:   r;   rˆ   f  s    zTestBesselpoly.test_besselpolyN)r  r  r  rˆ   r:   r:   r:   r;   r2  e  s   r2  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 )NrA   gŠ�®Tï?r°   )r    r   r   )r9   Zmbeir:   r:   r;   r€   k  s    
zTestKelvin.test_beic                 C   s   t  d¡}t|ddƒ d S )NrA   gDïî,Xí?r°   )r    r�   r   )r9   Zmbeipr:   r:   r;   r‚   o  s    
zTestKelvin.test_beipc                 C   s   t  d¡}t|ddƒ d S )NrA   g¦PAØ4è?r°   )r    r„   r   )r9   Zmberr:   r:   r;   r…   s  s    
zTestKelvin.test_berc                 C   s   t  d¡}t|ddƒ d S )NrA   gß×iiŽß¿r°   )r    r†   r   )r9   Zmberpr:   r:   r;   r‡   w  s    
zTestKelvin.test_berpc                 C   s"   t  d¡}t|tg d¢ƒdƒ d S )Nr°   ©g&jjÙ@gðŠà+é"@g(›r…wÉ+@g¡„™¶U2@gŸ`<ƒÆ6@r?   )r    Z	bei_zerosr   r   )r9   r&  r:   r:   r;   Útest_bei_zeros{  s    
üzTestKelvin.test_bei_zerosc                 C   s"   t  d¡}t|tg d¢ƒdƒ d S )Nr°   )g¼€yWo.@gâ•²£Ý� @g× �Âú{)@g¡K¾„11@g›Wc"¤5@r{  )r    Z
beip_zerosr   r   )r9   Zbipr:   r:   r;   Útest_beip_zeros„  s    
üzTestKelvin.test_beip_zerosc                 C   s"   t  d¡}t|tg d¢ƒdƒ d S )Nr°   ©gÑ\§‘–Ê@gø6ýÙ�ô@gÓŸýHY'@g>"¦D0@ggaO;ü�4@r?   )r    Z	ber_zerosr   r   )r9   r„   r:   r:   r;   Útest_ber_zerosŒ  s    
üzTestKelvin.test_ber_zerosc                 C   s"   t  d¡}t|tg d¢ƒdƒ d S )Nr°   ©gÖ ˜£'@g»ÕsÒû%@gÇF ^×ï-@g´vÛ…æj3@gÌîÉÃBÝ7@r?   )r    Z
berp_zerosr   r   )r9   Zbrpr:   r:   r;   Ú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 )NrA   rõ   r{  )r    r_  r   r„   r   r[  rW  r†   r�   r]  rY  )r9   Zmkelvr:   r:   r;   r`  œ  s    
ýýzTestKelvin.test_kelvinc                 C   s   t  d¡}t|ddƒ d S )NrA   g¬øàÓ>èÉ¿r°   )r    rW  r   )r9   Zmkeir:   r:   r;   rX  £  s    
zTestKelvin.test_keic                 C   s   t  d¡}t|ddƒ d S )NrA   grß@dª"Ì?r°   )r    rY  r   )r9   Zmkeipr:   r:   r;   rZ  §  s    
zTestKelvin.test_keipc                 C   s   t  d¡}t|ddƒ d S )NrA   gÜ™þU¥¿r°   )r    r[  r   )r9   Zmkerr:   r:   r;   r\  «  s    
zTestKelvin.test_kerc                 C   s   t  d¡}t|ddƒ d S )NrA   gº^.n3J»¿r°   )r    r]  r   )r9   Zmkerpr:   r:   r;   r^  ¯  s    
zTestKelvin.test_kerpc                 C   s"   t  d¡}t|tg d¢ƒdƒ d S )Nr°   ©gþE�>Q@gB•š=° @gÆPN´«�)@gðmú³91@g
�×Ø%ª5@r?   )r    Z	kei_zerosr   r   )r9   rW  r:   r:   r;   Útest_kei_zeros³  s    
üzTestKelvin.test_kei_zerosc                 C   s"   t  d¡}t|tg d¢ƒdƒ d S )Nr°   ©gÑW�f,º@gÉå?¤ßÎ"@g�FZ*o·+@gôOp±¢N2@gE¦aøÀ6@r?   )r    Z
keip_zerosr   r   )r9   rY  r:   r:   r;   Útest_keip_zeros»  s    
üzTestKelvin.test_keip_zerosc           
      C   sÂ   t  d¡}|\}}}}}}}}	t|tg d¢ƒdƒ t|tg d¢ƒdƒ t|tg d¢ƒdƒ t|tg d¢ƒdƒ t|tg d¢ƒdƒ t|tg d¢ƒdƒ t|tg d	¢ƒdƒ t|	tg d
¢ƒdƒ d S )Nr°   r8  r?   r5  )ç¬â�Ì#û?çQ½5°U‚@çq8ó«9 %@çol•`.@g‹O0žq3@r<  r:  )guÍä›m.@gŽÙëÝ� @gësµû{)@g¶ä „11@gN(DÀ!¤5@©gúòì£S@g8ó«9@°@gÝ^Ò­C'@g¾¤1ZG0@g+¤ü¤Ú‡4@r>  )r    Zkelvin_zerosr   r   )
r9   ÚtmpZberzZbeizZkerzZkeizZberpzZbeipzZkerpzZkeipzr:   r:   r;   Útest_kelvin_zerosÄ  s4    
üüüüüúüüzTestKelvin.test_kelvin_zerosc                 C   s"   t  d¡}t|tg d¢ƒdƒ d S )Nr°   )r@  rA  rB  rC  gD£;ˆ�q3@r?   )r    Z	ker_zerosr   r   )r9   r[  r:   r:   r;   Útest_ker_zerosò  s    
üzTestKelvin.test_ker_zerosc                 C   s"   t  d¡}t|tg d¢ƒdƒ d S )Nr°   rD  r?   )r    Z
kerp_zerosr   r   )r9   r]  r:   r:   r;   Útest_kerp_zerosú  s    
üzTestKelvin.test_kerp_zerosN)r  r  r  r€   r‚   r…   r‡   r6  r7  r9  r;  r`  rX  rZ  r\  r^  r=  r?  rF  rG  rH  r:   r:   r:   r;   r4  j  s$   		.r4  c                   @   s   e Zd Zdd„ ZdS )ÚTestBernoullic                 C   s"   t  d¡}t|tg d¢ƒdƒ d S )Nr°   )rs   rö  g-!ôlVÅ?r~   g±áé•²¡¿r~   r?   )r    Z	bernoullir   r   )r9   Zbrnr:   r:   r;   Útest_bernoulli  s    
ûzTestBernoulli.test_bernoulliN)r  r  r  rJ  r:   r:   r:   r;   rI    s   rI  c                   @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚTestBetaz
    Test beta and betaln.
    c                 C   s~   t t dd¡dƒ tt dd¡t d¡ƒ tt dd¡ddd	d
� t dd¡}t d¡t d¡ t d¡ }t||dd� d S )NrO   rs   ç33333YÀç¬÷N’~hçßà“©‚¡?é«   g6.8@rG   r   r‡  rA   r?   rE   rH   )r   r    Úbetar   r
  )r9   ÚbetZbetgr:   r:   r;   Ú	test_beta  s    ÿzTestBeta.test_betac                 C   s   t t t dd¡¡ƒ d S )NrD   rA   )r   rT   Úisinfr    rP  r8   r:   r:   r;   Útest_beta_inf  s    zTestBeta.test_beta_infc                 C   st   t t dd¡dƒ tt dd¡t d¡ƒ tt dd¡ddd	d
� t dd¡}ttt dd¡ƒƒ}t||dd� d S )NrO   r~   rL  rM  rN  éª   gðIÊÀs	@r†  r   r‡  rA   r?   rG   rH   )r   r    Zbetalnr   r  r   r!  rP  )r9   ZbetlnrQ  r:   r:   r;   Útest_betaln   s    ÿÿzTestBeta.test_betalnN)r  r  r  Ú__doc__rR  rT  rV  r:   r:   r:   r;   rK    s   
rK  c                   @   sž   e Zd ZdZdd„ Zej dg d¢¡dd„ ƒZej dg d¢¡d	d
„ ƒZ	ej dg d¢¡dd„ ƒZ
ej dejejejejg¡ej dg d¢¡dd„ ƒƒZdS )ÚTestBetaIncz?
    Tests for betainc, betaincinv, betaincc, betainccinv.
    c                 C   sj   t  g d¢¡}tt dd|¡|ƒ tt dd|¡|ƒ tt dd|¡d| ƒ tt dd|¡d| ƒ d S )N)r   r}  rO   rO   )rT   r   r   r    ÚbetaincÚ
betaincinvÚbetainccÚbetainccinvrâ   r:   r:   r;   Ú
test_a1_b11  s
    zTestBetaInc.test_a1_b1z
a, b, x, p))rA   r?   gšÐ@wÔ?rr   )rN  g     `e@rQ   g°î*¶¯á?)rN  rO  g"YxãÃ;r}  )g   `¥ù1?g    Ø¦Ag¯ª\Àa¼Y4g   €ý ï?)r?   i�† gñ-ß‡)?gŽ;¥ƒõÿï?c                 C   s<   t  |||¡}t||dd� t  |||¡}t||dd� d S )NrÇ   rH   gê-�™—a=)r    rY  r   rZ  ©r9   r"  r#  rÑ   r   Úp1Úx1r:   r:   r;   Útest_betainc_betaincinvH  s    z#TestBetaInc.test_betainc_betaincinv))ç      @r¬   r}  g     ªê?)ç      @g     €*@ç      Ø?gòó&�¶Û?)ç      À?rc  g333333Û?gF­Úo„êE?)re  ç      2@rû   gg2$·Zç?)re  rf  g¬Zd;ßï?g•‡²ˆºœ�6)re  r	  rõ  gâž�Ô`…<)ç      0@rõ  gè£Ýÿÿÿï?g<dE­A¢>)g’áëßôÚ?g7–ûÃŠÐ@g¼Òô/3·J?çH¯¼šò×z>c                 C   s<   t  |||¡}t||dd� t  |||¡}t||dd� d S )Nç›+¡†›„ö<rH   gVçž¯=)r    r[  r   r\  r^  r:   r:   r;   Útest_betaincc_betainccinv]  s    z%TestBetaInc.test_betaincc_betainccinvza, b, y, ref))ç¢‰c§j,@rk  ghHçISOa gÚ­ù  ãY;)g      ,@g      -@g„ë‘¤Íg}äc]ì¶«;)rè  ç      .@gUš¿v \U,gãS²‰^%:)r­   g      ô?g´M´›»oigºKB;)rè   g    Ðiø@g1ðúÖ$ÔÏ-g\_±«cp:c                 C   s    t  |||¡}t||dd� d S )Nr†  rH   )r    rZ  r   )r9   r"  r#  r�   ÚrefrÑ   r:   r:   r;   Útest_betaincinv_tiny_yo  s    z"TestBetaInc.test_betaincinv_tiny_yÚfuncÚargs))rË   rA   rr   )r   rA   rr   )r�  ç       Àrr   )r�  r   rr   )r�  rª   ç333333Ó¿)r�  rª   çš™™™™™ñ?c              	   C   sj   t jdd��J tjt jdd�� t j|Ž  W d   ƒ n1 s>0    Y  W d   ƒ n1 s\0    Y  d S )NÚraise)Údomainru  rŠ   )r    ÚerrstaterŒ   r   ÚSpecialFunctionErrorrY  )r9   ro  rp  r:   r:   r;   Útest_betainc_domain_errors‹  s    z&TestBetaInc.test_betainc_domain_errorsN)r  r  r  rW  r]  rŒ   r  Úparametrizera  rj  rn  r    rY  rZ  r[  r\  rx  r:   r:   r:   r;   rX  ,  s*   þ

ÿ
þ	
ÿrX  c                   @   sŽ   e Zd Zdd„ Zej dddg¡ej ddde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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ÐJ ‚d S )Nrü   rv   r?   ç      ^@g     @j@T©Úexactéx   )r}  Ú
repetitionéÜ   c                 S   s   g | ]}t jd |dd�‘qS )ra   Tr|  )r    Úcomb©Ú.0r]   r:   r:   r;   Ú
<listcomp>�  ó    z/TestCombinatorics.test_comb.<locals>.<listcomp>r  ra   rÇ   ©rS   rO   l   hU7`�±Së?Q r‚  é2   )r   r    r�  r   r   r   rf   ÚlistrT   Úiinfore   Úmax)r9   Úiirø   r:   r:   r;   Ú	test_comb—  s    ÿzTestCombinatorics.test_combr  TFÚlegacyr]   rè  rv   ÚNç      @r?   c                 C   sò   |t urLtjtdd��$ tj||d||d�}W d   ƒ q`1 s@0    Y  ntj||d||d�}|rš|rˆt|| d ƒt|ƒ }}d}nt|ƒt|ƒ }}tƒ �4}|t ur´| t¡ tj||||d�}W d   ƒ n1 sÚ0    Y  t	||ƒ d S )Nz$Using 'legacy' keyword is deprecatedrŠ   T)r}  r�  r  rO   F)r�  r  )
r,   rŒ   ÚwarnsÚDeprecationWarningr    r�  re   r   rp  r   )r9   rŽ  r]   r�  r  rÀ  rs  rø   r:   r:   r;   Útest_comb_legacy¦  s*    þÿ&ÿ
0z"TestCombinatorics.test_comb_legacyc                 C   sL   d}d}t  |¡}t  |¡}tj||dd�}tj||dd�}||ksHJ ‚d S )NéF   rK   Tr|  )rT   Úint64r    r�  )r9   r\   r]   Znp_nZnp_kZres_npZres_pyr:   r:   r;   Útest_comb_with_np_int64Ç  s    

z)TestCombinatorics.test_comb_with_np_int64c                 C   sz   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 g d¢g d	¢¡g d
¢ƒ d S )NrA   rv   Tr|  r   rD   F©rA   rD   rA   rü   ©rv   rv   rD   rv   )r~   r~   r~   r{  )r   r    r�  r   r8   r:   r:   r;   Útest_comb_zerosÐ  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ü   rv   r?   ç     €†@g     °³@Tr|  iÐ  )r   r    Úpermr   r   r8   r:   r:   r;   Ú	test_permØ  s    zTestCombinatorics.test_permc                 C   sz   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 g d¢g d	¢¡g d
¢ƒ d S )NrA   rv   Tr|  r   rD   Fr–  r—  )r~   r~   r~   r™  )r   r    rš  r   r8   r:   r:   r;   Útest_perm_zerosÝ  s    ÿz!TestCombinatorics.test_perm_zerosc                 C   sH   t jdd��( t ddgddgdd¡ W d   ƒ n1 s:0    Y  d S )Nzuse keyword argumentsrŠ   rü   rv   r?   F)rŒ   r�   r    r�  r8   r:   r:   r;   Útest_positional_deprecationå  s    z-TestCombinatorics.test_positional_deprecationN)r  r  r  rŒ  rŒ   r  ry  r,   r’  r•  r˜  r›  rœ  r�  r:   r:   r:   r;   rz  –  s   	rz  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   )r9   ÚcbZcbrlr:   r:   r;   r—   ì  s    
zTestTrigonometric.test_cbrtc                 C   s   t  d¡}d}t||dƒ d S )Ngfffffæ;@géŽ–š…C@r{  )r    r–   r   )r9   Zcb1Zcbrl1r:   r:   r;   Útest_cbrtmoreñ  s    
zTestTrigonometric.test_cbrtmorec                 C   s&   t  d¡}ttd ƒ}t||dƒ d S )Nrï  rª   r{  ©r    r¹   r	   r   r   )r9   ZcdgZcdgrlr:   r:   r;   rº   ö  s    
zTestTrigonometric.test_cosdgc                 C   s&   t  d¡}ttd ƒ}t||dƒ d S ©NrK   ç      @r{  r¢  )r9   ZcdgmZcdgmrlr:   r:   r;   Útest_cosdgmoreû  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ü   rO   r{  )r    r»   r   r	   r   )r9   ÚcsZcsrlr:   r:   r;   r¼      s     &zTestTrigonometric.test_cosm1c                 C   s*   t  d¡}ttd ƒd }t||dƒ d S )NrK   r¤  rD   r{  ©r    r¿   r
   r   r   )r9   ÚctZctrlr:   r:   r;   rÀ     s    
zTestTrigonometric.test_cotdgc                 C   s*   t  d¡}ttd ƒd }t||dƒ d S )Nr¾   rè   rD   r{  r§  )r9   Zct1Zctrl1r:   r:   r;   Ú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¾   rs   é   éÓÿÿÿrË   rï  r~   i¦ÿÿÿé‡   éyÿÿÿéá   éÿÿÿi  iòþÿÿé;  éÅþÿÿiý  )r   r    r¿   r8   r:   r:   r;   Útest_specialpoints  s    z$TestTrigonometric.test_specialpointsc                 C   s&   t t dg¡dƒ tt d¡dƒ d S )Nr   rO   r~   rs   )r   r    Zsincr   r8   r:   r:   r;   Ú	test_sinc  s    zTestTrigonometric.test_sincc                 C   s   t  d¡}t|dƒ d S rî  )r    rð  r   )r9   Zsnr:   r:   r;   rñ  #  s    
zTestTrigonometric.test_sindgc                 C   sH   t  d¡}ttd ƒ}t||dƒ t  d¡}ttd ƒ}t||dƒ d S )NrK   r¤  r{  r¾   rè   )r    rð  r   r   r   )r9   ZsnmZsnmrlZsnm1Zsnmrl1r:   r:   r;   Útest_sindgmore'  s    

z TestTrigonometric.test_sindgmoreN)r  r  r  r—   r¡  rº   r¥  r¼   rÀ   r©  r²  r³  rñ  r´  r:   r:   r:   r;   rž  ë  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   )r9   ÚtnZtnrlr:   r:   r;   r	  2  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è   r{  rŸ  r¬   r¶  )r9   ZtnmZtnmrlZtnm1Ztnmrl1r:   r:   r;   Útest_tandgmore7  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   r~   rª  r¾   rs   r«  rË   r¬  r­  rz  iLÿÿÿr®  r¯  r°  r±  )r   r    r  r8   r:   r:   r;   r²  ?  s    zTestTandg.test_specialpointsN)r  r  r  r	  r¸  r²  r:   r:   r:   r;   rµ  0  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.rr   N)r    rÚ   rT   r±   r8   r:   r:   r;   Útest_ellipj_nanN  s    zTestEllip.test_ellipj_nanc                 C   s0   t  dd¡}tdƒtdƒddg}t||dƒ d S )NrÌ   r   rs   é   )r    rÚ   r   r	   r   )r9   ÚelÚrelr:   r:   r;   rÛ   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ô   r~   rs   rA   rD   éöÿÿÿg­Õü�ÒNé?)
r    r"   r   r   r#   rT   r   r   r±   r   )r9   Úelkr:   r:   r;   rÜ   W  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 )NrA   rÌ   rk   ra   rz  r¾   gëfo¾Khé?r{  r~   rs   r   rr   g–±t½„ñØ?rO   rB   r†  rH   ç6<½R–!ù?r¾  gfäO¨•Né?)r    rÝ   r   r"   r   r   r   rT   r   r±   r   )r9   Zelkincr¿  ÚalphaÚphir  r:   r:   r;   rÞ   b  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ü   rO   gV»^»8jð?g,j6êÆ„@rA   )	rT   Ú	nextafterrf   Úappendr    rÝ   r   Ú	full_liker   ©r9   ZmbadrÂ  r  ZmvalsÚjr°  Úf1r:   r:   r;   Ú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ò   rA   Frø  rO   r  rH   )rT   rb   r’  r   r   r    rÝ   Zarcsinhr
   r   r   )r9   ZxlogZxlinZxlin2r:   r:   r;   Ú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Ó÷?r{  r~   rA   rs   r¾  g?egô@)	r    r!   r   r   r   rT   r   r±   r   )r9   Úeler:   r:   r;   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 )NrA   rÌ   rª  é4   rz  é#   g�'ˆÉÒâ?r{  r~   rs   r   rr   rÀ  r¾  g¢‚‰çL@)r    r×   r   r!   r   r   r   rT   r   r±   r   )r9   ZeleincrÍ  rÁ  rÂ  r  r:   r:   r;   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ü   rO   gà%‰¤�ë?rA   gXo«�óÆ
@r?   )	rT   rÅ  rf   rÆ  r    r×   r   rÇ  r   rÈ  r:   r:   r;   Útest_ellipeinc_2É  s    
zTestEllip.test_ellipeinc_2N)r  r  r  rº  rÛ   rÜ   rÞ   rË  rÌ  rÖ   rØ   rÐ  r:   r:   r:   r;   r¹  M  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"J ‚ttddƒƒs4J ‚tdtdtƒƒdksLJ ‚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 )NrO   r~   r   r}  g      @rª   rõ   ù       €      ð¿rq  rË   y
cÝƒÅñ?
cÝƒÅñ¿y=‹€Bžó?C†GÀÖ¿r¬   yæª fŸãè?P×9lµbÉ?)
r   r$   r   r   rî   r   rT   r   r   Ú	enumerate©r9   rp  Zexpected_resultsri   Úarrr:   r:   r;   Útest_elliprcß  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<J ‚t tdddƒ¡sRJ ‚t tddtddƒƒ¡snJ ‚t tddtddƒƒ¡sŠJ ‚ttddt tj¡j	 d ƒƒs®J ‚ttddtddƒƒƒsÈJ ‚t
g d	¢g d
¢g d¢g d¢g d¢g d¢gƒ}t
g d¢ƒ}t|ƒD ]\}}t t|Ž || ƒ �qd S )NrO   r   rA   r¬   gÌ`C•+ã?r~   rª   rD   )r~   rª   rs   ©rª   r¬   rè   ©rõ   rÒ  rª   ©r~   rõ   rÒ  )r~   ù      ð¿      ð?rõ   )y       À      ð¿rÒ  rÚ  )gfe¤_Áü?gÓÃ×i+"Å?g”P$Må?ytgöFUô?7¨·?@y™¢R<¹ý¿ý8á*Èî¿y{ ÿ6Í2ý?×zä°Œó¿)r   r%   r   rT   rS  rî   r   r   rÏ   Útinyr   rÓ  rÔ  r:   r:   r;   Útest_elliprdó  s$    $ûzTestEllipCarlson.test_elliprdc              	   C   sü   t tdddƒdƒ t tdddƒdƒ tdtdƒdks8J ‚t tdddƒ¡sNJ ‚ttdddƒƒsbJ ‚tttƒddƒdkszJ ‚ttddtt dƒƒƒs–J ‚tg d¢g d¢g d	¢g d
¢g d¢g d¢g d¢gƒ}tg d¢ƒ}t|ƒD ]\}}t t|Ž || ƒ qÜd S )NrO   r   rA   g°PŸOùùô?r~   rD   )rs   rª   r~   )rõ   rÒ  r~   )rr   rs   r~   ©rÚ  rõ   r~   r×  rØ  )rÚ  rõ   ù      ð?      ð¿)geQŸOùùô?çÊžu5Jªý?rß  yp\©óÜyé?õª¯øôkó¿g2åÎ°â?gHw‹îÐ´ð?y­‘|pFî?-6Fjá¿)	r   r&   r   rT   rS  r   rî   r   rÓ  rÔ  r:   r:   r;   Útest_elliprf  s$    ú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ƒ¡sLJ ‚t tttƒddƒ¡sfJ ‚tg d¢g d¢g d¢g d¢g d¢g d	¢gƒ}ttjd
ddddgƒ}t|ƒD ]\}}t t|Ž || ƒ q°d S )NrO   r   rr   )r~   rg  rg  r×  rÙ  rÝ  )rÒ  rÚ  rõ   )r~   g8øÂdª`´?rè   gˆL+©›û?g’Þ}�^Û?yæ—®û0•Ü?Ê‹µêW¥æ?yjèN”×?Ó^ßì·ÒÙ?géÈ£tð?)	r   r'   rT   rS  r   rî   r   r   rÓ  rÔ  r:   r:   r;   Útest_elliprg$  s*    ûûzTestEllipCarlson.test_elliprgc                 C   sÞ   t tddddƒdƒ tddtdƒdks*J ‚ttddddƒƒs@J ‚ttddddƒƒsVJ ‚tdddtƒdkslJ ‚tg d¢g d¢g d¢g d¢g d	¢g d
¢g d¢g d¢g d¢g	ƒ}tg d¢ƒ}t|ƒD ]\}}t t|Ž || ƒ q¾d S )NrO   r~   r   rD   )r~   rs   rª   r¬   )rª   r¬   rè   rz   )rª   r¬   rè   rÚ  )rõ   rÒ  r~   rª   )rÚ  ù      ð¿      ð¿rs   rª   )rõ   rÒ  r~   rÞ  )rÚ  râ  rs   y      À      ð?)rª   r¬   rè   rö  )rª   r¬   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   r   r   rÓ  rÔ  r:   r:   r;   Útest_elliprj9  s$    ø		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ì|â>ri  rÖ  r‡  g   àÀ,@g    ¥xÛ=g   @§e•:g   `Ý½Ø>gî(óHœR)A)r   r(   r8   r:   r:   r;   Útest_elliprj_hardT  s     ýûýûz"TestEllipCarlson.test_elliprj_hardN)r  r  r  rW  rÖ  rÜ  rà  rá  rä  rŒ   r  r  rå  r:   r:   r:   r;   rÑ  Ú  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Ë   rs   r©   rª   rD   r~   )rT   r   Zm_n1_1r   r   ÚminZmax_negÚlog2Z
very_neg_mZconcatenateÚ
ms_up_to_1r8   r:   r:   r;   Úsetup_classj  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)
        r~   rs   N)ré  r   r"   r&   ©r9   r  r:   r:   r;   Útest_kv  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ª   r~   rs   N)	r   r   rÛ  r   rT   rè  r   r#   r&   )r9   rÛ  Úm1r:   r:   r;   Ú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ª   r~   rs   N)ré  r   r!   r'   rë  r:   r:   r;   Útest_eˆ  s    z)TestEllipLegendreCarlsonIdentities.test_eN)r  r  r  rW  rê  rì  rî  rï  r:   r:   r:   r;   ræ  d  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¯Ñ?r{  )r    rà   r   )r9   Zerr:   r:   r;   rá   ’  s    
zTestErf.test_erfc                 C   s&   t  d¡}tg d¢ƒ}t||dƒ d S )Nr°   )yTücJ¹5÷?÷=ê¯Wþ?yo²ìõ@ìœnò¾î@yŸÞÖ'Ê·@¦Ž´¯g	@y»"[
¯
@•ç,y]+@y¼ldì&@-;'j'>@r?   )r    Z	erf_zerosr   r   )r9   ZerzZerzrr:   r:   r;   Ú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	��z ||ƒ}	||ƒj}
t  |	¡}|	| }	|| }t  |
¡}|
| }
|| }t||	|||d
� t||
|||d
� W d   ƒ n1 sô0    Y  d S )NrJ   rœ  g{®Gáz”?rA   r   rO   rõ   Úignore©Úallr‡  )	rT   rZ   r[   ÚparetoÚrandintrv  r   Úisfiniter2   )r9   ro  Z
other_funcrI   rS   r\   rÑ   r�   r÷   r  Zw_realÚmaskr:   r:   r;   Ú_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 rd   ©r6   rà   ©r÷   r:   r:   r;   Ú<lambda>¹  r…  z.TestErf.test_erfc_consistent.<locals>.<lambda>ro   r†  r‡  )rù  r6   rä   r8   r:   r:   r;   Ú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 r3  )rT   r   r6   rä   rû  r:   r:   r;   rü  Á  r…  z/TestErf.test_erfcx_consistent.<locals>.<lambda>ro   rH   )rù  r6   Úerfcxr8   r:   r:   r;   Útest_erfcx_consistent¾  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û  r:   r:   r;   rü  È  r…  z.TestErf.test_erfi_consistent.<locals>.<lambda>ro   rH   )rù  r6   Úerfir8   r:   r:   r;   Ú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 rN  )r   r   rT   r   r6   r   rû  r:   r:   r;   rü  Ï  r…  z/TestErf.test_dawsn_consistent.<locals>.<lambda>ro   rH   )rù  r6   rÁ   r8   r:   r:   r;   Útest_dawsn_consistentÌ  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 )NrD   rO   rÇ   rH   )rT   r±   r   r   r    rà   ©r9   r  rø   r:   r:   r;   Útest_erf_nan_infÓ  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 )NrA   r   rÇ   rH   )rT   r±   r   r   r    rä   r  r:   r:   r;   Útest_erfc_nan_infØ  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Ç   rH   )rT   r±   r   r   r    rþ  r  r:   r:   r;   Útest_erfcx_nan_infÝ  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Ç   rH   )rT   r±   r   r   r    r   r  r:   r:   r;   Útest_erfi_nan_infâ  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 )Nre  r~   rÇ   rH   )rT   r±   r   r   r    rÁ   r  r:   r:   r;   Ú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Ç   rH   )rT   r±   r   r   r    r  r  r:   r:   r;   Útest_wofz_nan_infì  s    zTestErf.test_wofz_nan_infN)r   )r  r  r  rá   rñ  rù  rý  rÿ  r  r  r  r  r  r  r  r	  r:   r:   r:   r;   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|g d¢dd� t  d¡}g d¢}td	d
ƒ}tddƒD ]8}|d rœt|| ƒ |d| < qxt|| ƒ|d| < qxtjdd��( t|| | ƒ}t	|ƒ}	W d   ƒ n1 sì0    Y  t
|	ddƒ d S )Nr   rO   rA   rÇ   rH   )rO   r   rD   rÊ   )rO   rO   r°   é=   ii  iYÅ  i­=) iÕâl   Q~¥ l   10ÿ[¿l   Õ$8gC
 l   í2�¼³l   ¹vö}Ju: )rÃ   Údr»  rò  ró  r~   rª  )r    Zeulerr   r   rf   rg   rT   rv  r   rŠ  r   )
r9   Zeu0Zeu1Zeu2Zeu24Z	mathworldÚcorrectr]   ÚerrZerrmaxr:   r:   r;   Ú
test_euleró  s"    




&zTestEuler.test_eulerN)r  r  r  r  r:   r:   r:   r;   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 )ÚTestExpc                 C   s   t  d¡}d}t||ƒ d S )NrA   r?   )r    ré   r   ©r9   ÚexZexrlr:   r:   r;   rê     s    
zTestExp.test_exp2c                 C   s   t  d¡}d}t||dƒ d S )Nrb  gÍ;fž @r{  )r    ré   r   ©r9   ZexmZexmrlr:   r:   r;   Útest_exp2more  s    
zTestExp.test_exp2morec                 C   s   t  d¡}d}t||ƒ d S )NrA   r‚  )r    ræ   r   r  r:   r:   r;   rç     s    
zTestExp.test_exp10c                 C   s   t  d¡}d}t||dƒ d S )Nrb  gY—úí¤Ãs@r{  )r    ræ   r   r  r:   r:   r;   Ú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 )NrA   rv   r?   rO   r{  ©r    rë   r   r   r  r:   r:   r;   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 )NrA   çÍÌÌÌÌÌ @çš™™™™™@rO   r{  r  )r9   Zex1Zexrl1r:   r:   r;   Útest_expm1more%  s    "zTestExp.test_expm1moreN)	r  r  r  rê   r  rç   r  rì   r  r:   r:   r:   r;   r    s   r  c                   @   s
  e Zd Zej dddg¡dd„ ƒZej dg d¢¡ej dddg¡dd	„ ƒƒZej dddg¡d
d„ ƒZej dddg¡ejjde	j
de	 d¡gg d¢d�dd„ ƒƒZej deddƒ¡ej dddg¡dd„ ƒƒZej dddg¡ej ddee	je	je	je	je	je	je	je	jg
¡ej deddƒ¡dd„ ƒƒƒZej dddg¡ej deddƒ¡dd„ ƒƒZej ded d!d"ƒ¡d#d$„ ƒZej deedd%ƒƒeed d!d"ƒƒ ¡d&d'„ ƒZd(d)„ Zej de	je	je	je g¡ej dddg¡ej deddƒ¡ejjdg dgd*ge	j
ge	j
dggg d+¢d�d,d-„ ƒƒƒƒZ!ej dddg¡ejjddd*d.e	j
dgg d/¢d�d0d1„ ƒƒZ"ej ded d!d2ƒ¡d3d4„ ƒZ#ej deedd%ƒƒeed d!d2ƒƒ ¡d5d6„ ƒZ$ej de	je	je	je g¡ej dddg¡ej deddƒ¡ejjdg dge	j
ge	j
dggg d7¢d�d8d9„ ƒƒƒƒZ%ej dddg¡ejjddd*d.e	j
dgg d/¢d�d:d;„ ƒƒZ&ej d<eddƒ¡ej ded=d>d?ƒ¡d@dA„ ƒƒZ'ej d<eeddƒƒd"d>g ¡ej deedd%ƒƒeed%dBd2ƒƒ ¡dCdD„ ƒƒZ(ej de	je	je	je g¡ej dddg¡ej deddƒ¡ejjdg dge	j
ge	j
dggg d7¢d�dEdF„ ƒƒƒƒZ)ej dg dG¢¡ej d<eddƒ¡ejjddd*d.e	j
dgg d/¢d�dHdI„ ƒƒƒZ*ej d<dd*e	j
dJg¡dKdL„ ƒZ+ej dddg¡ej d<eddMƒ¡dNdO„ ƒƒZ,dPdQ„ Z-dS )RÚTestFactorialFunctionsr}  TFc                 C   sN   t  tjd|d�¡sJ ‚t  tjd|d�¡s0J ‚t  tjdd|d�¡sJJ ‚d S )NrO   r|  rv   )rT   Zisscalarr    Ú	factorialÚ
factorial2Ú
factorialk)r9   r}  r:   r:   r;   Ú"test_factorialx_scalar_return_type,  s    z9TestFactorialFunctions.test_factorialx_scalar_return_typer\   )rD   rm  éýÿÿÿc                 C   sB   t tj||d�dƒ t tj||d�dƒ t tj|d|d�dƒ d S )Nr|  r   rv   )r   r    r  r  r  )r9   r}  r\   r:   r:   r;   Útest_factorialx_negative2  s    z/TestFactorialFunctions.test_factorialx_negativec                 C   sf   |rt nt}|tjg d¢|d�g d¢ƒ |tjg d¢|d�g d¢ƒ |tjg d¢d|d�g d¢ƒ d S )N)éûÿÿÿr  r   rO   r|  )r   r   rO   rO   rv   )r   r   r    r  r  r  )r9   r}  Úassert_funcr:   r:   r;   Útest_factorialx_negative_array9  s    ÿÿÿz5TestFactorialFunctions.test_factorialx_negative_arrayÚcontentNZnat)ÚNaNÚNoneZNaT)Zidsc                 C   s|  t j||d�tju sJ ‚t j||d�tju s0J ‚t j|d|d�tju sJJ ‚|tjur”tjtdd��  t j|g|d� W d   ƒ qö1 sˆ0    Y  nb|rØtjtdd��  t j|g|d� W d   ƒ qö1 sÌ0    Y  nt 	t j|g|d�d ¡söJ ‚tjtdd��  t j|g|d� W d   ƒ n1 �s,0    Y  tjtdd��" t j|gd|d� W d   ƒ n1 �sn0    Y  d S )	Nr|  rv   zUnsupported datatype.*rŠ   úfactorial with `exact=Tr.*r   zfactorial2 does not support.*zfactorialk does not support.*)
r    r  rT   r±   r  r  rŒ   r   Ú
ValueErrorr   )r9   r$  r}  r:   r:   r;   Útest_factorialx_nanD  s    
000z*TestFactorialFunctions.test_factorialx_nanÚlevelsrO   r°   c                    s´   d‡ fdd„	‰ ‡ ‡fdd„}t  ˆ ddgˆd�¡}d	t d¡gd
tjddd�gdtjdddd�gdœ}|tj||d�|d ƒ |tj||d�|d ƒ |tj|d|d�|d ƒ d S )NrO   c                    s"   |dkr| S ˆ | | g|d ƒS dS )z¥
            Double x and nest it k times

            For example:
            >>> _nest_me([3, 4], 2)
            [[[3, 4], [3, 4]], [[3, 4], [3, 4]]]
            r   rO   Nr:   ©rÑ   r]   ©Ú_nest_mer:   r;   r-  `  s    zDTestFactorialFunctions.test_factorialx_array_shape.<locals>._nest_mec                    s4   t jˆ |ˆd�td�}t|  t j¡| t j¡ƒ d S )N©r]   ©Údtype)rT   r   Úobjectr   rÍ   rÏ   )ÚresZnucleusr   ©r-  r*  r:   r;   Ú_checkm  s    zBTestFactorialFunctions.test_factorialx_array_shape.<locals>._checkr°   rÃ   r.  r~  rk   Tr|  rü   rv   r²  rA   )rO   )rT   r   Úmathr  r    r  r  )r9   r*  r}  r4  r\   Úexp_nucleusr:   r3  r;   Útest_factorialx_array_shape]  s    ýz2TestFactorialFunctions.test_factorialx_array_shaper0  Údimr   c                 C   sˆ   t jd||d�}ddddœ}ttj||d�t j|d |d	�ƒ ttj||d�t j|d
 |d	�ƒ ttj|d|d�t j|d |d	�ƒ d S )Nr°   )r0  Úndminr~  rk   rü   r²  r|  rO   ©r9  rA   rv   )rT   r   r   r    r  r  r  )r9   r8  r0  r}  r\   r   r:   r:   r;   Útest_factorialx_array_dimension}  s    ÿÿÿz6TestFactorialFunctions.test_factorialx_array_dimensionÚlevelc                    s¤   d‡ fdd„	‰ ˆ dg|d d�}dddd	œ}|r4t nt}|tj||d
�tj|d |d�ƒ |tj||d
�tj|d |d�ƒ |tj|d|d
�tj|d |d�ƒ d S )NrO   c                    s    |dkr| S ˆ | g|d ƒS d S rÙ   r:   r+  r,  r:   r;   r-  �  s    zCTestFactorialFunctions.test_factorialx_array_like.<locals>._nest_mer°   r.  r~  rk   rü   r²  r|  r:  rA   rv   )rO   )r   r   r    r  rT   r   r  r  )r9   r<  r}  r\   r6  r"  r:   r,  r;   Útest_factorialx_array_like�  s    ÿÿÿz1TestFactorialFunctions.test_factorialx_array_likerK   rz  rü   c                 C   sh   t jdkrdnd}tttj|dd�ƒtj|dd�|d� ttj|gdd� t¡tj|gdd�|d� d S )NÚwin32ç´àø¤tã0=rÇ   Tr|  FrH   )ÚsysÚplatformr   rg   r    r  rÍ   ©r9   r\   rI   r:   r:   r;   Útest_factorial_accuracy¡  s    ÿÿz.TestFactorialFunctions.test_factorial_accuracyé   c                 C   s„   t  |¡}t|t |d¡ƒ t|t |gd¡d ƒ tjdkrBdnd}tt|ƒt |d¡|d� tt|ƒt |gd¡d |d� d S )NTr   r>  r?  rÇ   FrH   )r5  r  r   r    r@  rA  r   rg   )r9   r\   r  rI   r:   r:   r;   Útest_factorial_int_reference­  s    
ÿÿz3TestFactorialFunctions.test_factorial_int_referencec                 C   sf   dd„ }|ddƒ |ddƒ |ddƒ |d	d
ƒ |ddƒ |ddƒ |ddƒ |ddƒ |ddƒ d S )Nc                 S   s¨   t t | ¡|ƒ t t | g¡d |ƒ tjdd��$ t tj| dd�|ƒ W d   ƒ n1 s\0    Y  tjtdd��  tj| gdd� W d   ƒ n1 sš0    Y  d S )Nr   úNon-integer values.*rŠ   Tr|  r'  )r   r    r  rŒ   r�   r   r(  )r\   rø   r:   r:   r;   r4  ¼  s    2zETestFactorialFunctions.test_factorial_float_reference.<locals>._checkr©   gŒê�r„Ñï?gÃõ(\�Âñ?gö“þ÷cÓð?g333333@g»”ð�4¯s@g333333&@gù¿ÀÞ‰OˆAgfffff¦@@g çÈ	Â²Gg     ÀK@gC$¡ŠÇÓJOgÍÌÌÌÌlS@gæØ á}â³Wgš™™™™ùX@gXÖ>Ü%±`g’\þCúSe@gG=Âüïr:   )r9   r4  r:   r:   r;   Útest_factorial_float_reference»  s    







z5TestFactorialFunctions.test_factorial_float_referencers  )ú[]ú[1]z[1.1]ú[NaN]ú[NaN, 1]c                 C   s�  |t jkr&tdd„ |D ƒƒr&t d¡ |dks:t|ƒdkr>|n|d }t j|||d�}d }|sntj||d�}nÄt  	|j
t j¡sÌt  	|j
t j¡sÌtjtdd	�� tj||d� W d   ƒ n1 sÀ0    Y  nf|�r$t  	|j
t j¡�s$tjtd
d	�� tj||d� W d   ƒ n1 �s0    Y  ntj||d�}dd„ }|d u�rŒ|j�rT| ¡ n|}|j�rntj||d�ng }	t j|	||d�}
|||
ƒ d S )Nc                 s   s   | ]}t  |¡V  qd S r3  ©rT   r   ©rƒ  rÑ   r:   r:   r;   Ú	<genexpr>Û  r…  zKTestFactorialFunctions.test_factorial_array_corner_cases.<locals>.<genexpr>úimpossible combinationr   rO   ©r9  r0  r|  úUnsupported datatype*rŠ   zfactorial with `exact=.*c                 S   s:   t | ƒt |ƒks,J dt | ƒ› dt |ƒ› �ƒ‚t| |ƒ d S )Nztypes not equal: z, )Útyper   ©rÑ   r�   r:   r:   r;   Úassert_really_equalð  s    ,zUTestFactorialFunctions.test_factorial_array_corner_cases.<locals>.assert_really_equal)rT   r”  ÚanyrŒ   ÚskipÚlenr   r    r  Ú
issubdtyper0  ÚintegerÚfloatingr   r(  ÚndimrY   rÔ   )r9   r$  r8  r}  r0  r\   rÀ  rT  Zn_flatrm  rø   r:   r:   r;   Ú!test_factorial_array_corner_casesÒ  s,    	
 ÿ.0
z8TestFactorialFunctions.test_factorial_array_corner_casesy       @       @)Ú1z1.1z2+2jr%  r&  c                 C   s  |d u s6|t ju s6t  t|ƒt j¡s6t  t|ƒt j¡rÎt  t|ƒt j¡r’|r’|t jur’tjdd�� tj	||d�}W d   ƒ q 1 s†0    Y  ntj	||d�}|t ju s²|d u r¸t jnt 	|¡}t
||ƒ n>tjtdd�� tj	||d� W d   ƒ n1 �s0    Y  d S )NrF  rŠ   r|  rQ  )rT   r±   rX  rR  rY  rZ  rŒ   r�   r    r  r   r   r(  ©r9   r\   r}  rÀ  r   r:   r:   r;   Ú"test_factorial_scalar_corner_casesý  s    $ÿÿ."z9TestFactorialFunctions.test_factorial_scalar_corner_casesrô   c                 C   sh   t jdkrdnd}tttj|dd�ƒtj|dd�|d� ttj|gdd� t¡tj|gdd�|d� d S )Nr>  g›+¡†›„=rÇ   Tr|  FrH   )r@  rA  r   rg   r    r  rÍ   rB  r:   r:   r;   Útest_factorial2_accuracy	  s    ÿÿz/TestFactorialFunctions.test_factorial2_accuracyc                 C   s|   t  tjtt|ddƒƒd¡}t|t |d¡ƒ t|t |gd¡d ƒ t	t
|ƒt |d¡ƒ t	t
|ƒt |gd¡d ƒ d S )Nr   rm  rO   TF)Ú	functoolsÚreduceÚoperatorÚmulrˆ  rf   r   r    r  r   rg   )r9   r\   r  r:   r:   r;   Útest_factorial2_int_reference	  s
    z4TestFactorialFunctions.test_factorial2_int_reference)rH  rI  rJ  rK  c                 C   sÒ   |t jkr&tdd„ |D ƒƒr&t d¡ |dks:t|ƒdkr>|n|d }t j|||d�}t  |jt j	¡sj|s”t
j||d�}|s€|s„tnt}|||ƒ n:tjtdd	�� t
 |d
¡ W d   ƒ n1 sÄ0    Y  d S )Nc                 s   s   | ]}t  |¡V  qd S r3  rL  rM  r:   r:   r;   rN  3	  r…  zLTestFactorialFunctions.test_factorial2_array_corner_cases.<locals>.<genexpr>rO  r   rO   rP  r|  úfactorial2 does not*rŠ   rv   )rT   r”  rU  rŒ   rV  rW  r   rX  r0  rY  r    r  r   r   r   r(  )r9   r$  r8  r}  r0  r\   rÀ  ro  r:   r:   r;   Ú"test_factorial2_array_corner_cases+	  s    
 z9TestFactorialFunctions.test_factorial2_array_corner_casesc                 C   s    |d u s$|t ju s$t  t|ƒt j¡r`tj||d�}|t ju sD|d u rJt jnt |¡}t||ƒ n<t	j
tdd�� tj||d� W d   ƒ n1 s’0    Y  d S )Nr|  rf  rŠ   )rT   r±   rX  rR  rY  r    r  r  r   rŒ   r   r(  r^  r:   r:   r;   Ú#test_factorial2_scalar_corner_casesC	  s    $"z:TestFactorialFunctions.test_factorial2_scalar_corner_casesr]   rU  ra   iãÿÿÿc                 C   sV   t ttj||dd�ƒtj||dd�ƒ t tj|g|dd� t¡tj|g|dd�ƒ d S )NT©r]   r}  F)r   rg   r    r  rÍ   )r9   r\   r]   r:   r:   r;   Útest_factorialk_accuracyP	  s    	ÿÿz/TestFactorialFunctions.test_factorialk_accuracyr‚  c                 C   s†   t  tjtt|d| ƒƒd¡}t|t ||d¡ƒ t|t |g|d¡d ƒ t	t
|ƒt ||d¡ƒ t	t
|ƒt |g|d¡d ƒ d S )Nr   rO   TF)ra  rb  rc  rd  rˆ  rf   r   r    r  r   rg   )r9   r\   r]   r  r:   r:   r;   Útest_factorialk_int_reference^	  s
    z4TestFactorialFunctions.test_factorialk_int_referencec                 C   sÎ   |t jkr&tdd„ |D ƒƒr&t d¡ |dks:t|ƒdkr>|n|d }t j|||rV|nt jd�}t  |j	t j
¡st|sŒttj|d|d�|ƒ n>tjtd	d
��  tj|d|d� W d   ƒ n1 sÀ0    Y  d S )Nc                 s   s   | ]}t  |¡V  qd S r3  rL  rM  r:   r:   r;   rN  v	  r…  zLTestFactorialFunctions.test_factorialk_array_corner_cases.<locals>.<genexpr>rO  r   rO   rP  rv   r|  úfactorialk does not*rŠ   )rT   r”  rU  rŒ   rV  rW  r   rÏ   rX  r0  rY  r   r    r  r   r(  )r9   r$  r8  r}  r0  r\   r:   r:   r;   Ú"test_factorialk_array_corner_casesn	  s    
 z9TestFactorialFunctions.test_factorialk_array_corner_cases)TFNc              	   C   s  |d u s$|t ju s$t  t|ƒt j¡r¦|d u rjtjdd��  tj|||d�}W d   ƒ qz1 s^0    Y  ntj|||d�}|t ju pŠ|d u }|r–t jnd}t	||ƒ nrtj
tdd��R tƒ �,}| td¡ tj|||d� W d   ƒ n1 sî0    Y  W d   ƒ n1 �s0    Y  d S )Nzfactorialk will default.*rŠ   ri  rO   rl  zfactorialk will default)rT   r±   rX  rR  rY  rŒ   r�   r    r  r   r   r(  r   rp  r‘  )r9   r\   r]   r}  rÀ  Znan_condrø   rs  r:   r:   r;   Ú#test_factorialk_scalar_corner_cases‚	  s    $0z:TestFactorialFunctions.test_factorialk_scalar_corner_casesr]  c                 C   s>   t jtdd�� t d|¡ W d   ƒ n1 s00    Y  d S )Nzk must be a positive integer*rŠ   rO   )rŒ   r   r(  r    r  r×  r:   r:   r;   Útest_factorialk_raises_k™	  s    z/TestFactorialFunctions.test_factorialk_raises_kr|  c                 C   sH  ||dœ}|�r|t  ¡ v �rt t| g¡}ttj|fi |¤Žjt	ƒ ttj|d fi |¤Žjtj
ƒ tj|d fi |¤Žt tj¡jks�J ‚t t | g¡}ttj|fi |¤Žjtj
ƒ ttj|d fi |¤Žjtƒ tj|d fi |¤Žt tj
¡jk�sDJ ‚n>t t  |d¡g¡}|�r$tntj}ttj|fi |¤Žj|ƒ d S )Nri  rO   )r/   ÚkeysrT   r   r0   r   r    r  r0  r-   r”  r‰  Úint32rŠ  r1  ÚgetrÏ   )r9   r]   r}  Úkwr\   r0  r:   r:   r;   Útest_factorialk_dtypež	  s    
 (,z,TestFactorialFunctions.test_factorialk_dtypec                 C   s„   t  t jdddt jg¡}t  t jdddt jg¡}ttj|dd�|ƒ tjtdd�� tj|d	d� W d   ƒ n1 sv0    Y  d S )
NrO   rA   rv   rE   Fr|  zfactorial with `exact=True.*rŠ   T)	rT   r   r±   r   r    r  rŒ   r   r(  )r9   rÑ   rø   r:   r:   r;   Útest_factorial_mixed_nan_inputs´	  s
    z6TestFactorialFunctions.test_factorial_mixed_nan_inputs).r  r  r  rŒ   r  ry  r  r   r#  rT   r±   Z
datetime64r)  rf   r7  re   Zint8Zint16rq  r”  Zuint8Zuint16Zuint32Zuint64r;  r=  rC  rˆ  rE  rG  rÏ   Ú
complex128r1  r\  r_  r`  re  rg  rh  rj  rk  rm  rn  ro  rt  ru  r:   r:   r:   r;   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)rr   çgÌN’°?çÖ�[‘‚ß?)y      à?        rx  ry  )y       Àš™™™™™¹?y²n<«æÓ¿ÌÆôj¹<C¿yÿ)¬BR;ß¿u´ñx7Q»?)yš™™™™™¹¿      ø¿yÚ¾|Î¤¿}-Ðì2ç?y�ŽÇ/—¸?½�¶!�ëÛ¿)r¤  çGæ²M›Ü?çpB¾×Røß?)y      @        rz  r{  )y              @y       €Gæ²M›Ü¿y        pB¾×Røß?)y      À        gGæ²M›Ü¿gpB¾×Røß¿)y       €      Ày        Gæ²M›Ü?y       €pB¾×Røß¿rr   rö  c                 C   s&   t t |¡ƒ}t|t ||gƒdƒ d S )Nr{  )r   r    r  r   )r9   r÷   rì  rr  Úfrsr:   r:   r;   Útest_fresnel_values½	  s     zTestFresnel.test_fresnel_valuesc                 C   sn   t  d¡\}}t|tg d¢ƒdƒ t|tg d¢ƒ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¯”å@Çº¸�È?rv   )y.� ø1æû?ãÇ˜»–�Ó?yƒÀÊ¡E6@:#J{ƒ/Ð?yqà-�
@yé&1¬Ì?yŒÛh o@¤ß¾œ3Ê?y¨WÊ2Äq@q¬‹ÛhÈ?r   rO   rª  )r    Úfresnel_zerosr   r   r  )r9   ÚszoÚczoZvals1Zvals2r:   r:   r;   Útest_fresnel_zerosâ	  s    
û
ûzTestFresnel.test_fresnel_zerosc                 C   s(   t  d¡\}}t  d¡}t||dƒ d S )NrE   r|  )r    r~  Zfresnelc_zerosr   )r9   r  r€  Zfrcr:   r:   r;   Útest_fresnelc_zerosõ	  s    
zTestFresnel.test_fresnelc_zerosc                 C   s(   t  d¡\}}t  d¡}t||dƒ d S )Nr°   r|  )r    r~  Zfresnels_zerosr   )r9   r  r€  r|  r:   r:   r;   Útest_fresnels_zerosú	  s    
zTestFresnel.test_fresnels_zerosN)r  r  r  rŒ   r  ry  rT   r   r}  r�  r‚  rƒ  r:   r:   r:   r;   rw  ¼	  s"   
ã
rw  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   )r9   Zgamr:   r:   r;   r  
  s    
zTestGamma.test_gammac                 C   s(   t  d¡}tt  d¡ƒ}t||dƒ d S )Nrv   r{  )r    r  r   r
  r   )r9   ZgamlnZlngamr:   r:   r;   r  
  s    
zTestGamma.test_gammalnc                 C   s(   t  dd¡}t  dd¡}t||dƒ d S )Nrr   r{  )r    r  Úgammaincinvr   )r9   ZgccinvZgcinvr:   r:   r;   r  

  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 )
NrB   rO   rü   gš™™™™™©?g`£	í\Þ;rÄ   r‡  g¦m�áìb<g      &@)r    r…  Úgammaincr   ©r9   r�   rÑ   r:   r:   r;   Ú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ÿÿÿÿÏ?rO   g^F    Ð?rB   ro   rH   )rT   rÅ  r    r…  r†  r   )r9   ZptsZxpr�   rÑ   r:   r:   r;   Útest_975
  s    þzTestGamma.test_975c                 C   s(   t  d¡}dt  d¡ }t||dƒ d S )Nr{  rO   )r    r  r
  r   )r9   ZrgamZrlgamr:   r:   r;   rä  (
  s    
zTestGamma.test_rgammac                 C   s(   t t t d¡¡ƒ tt d¡dƒ d S )NrD   r   )r   rT   rS  r    r
  r   r  r8   r:   r:   r;   Útest_infinity-
  s    zTestGamma.test_infinityN)r  r  r  r  r  r  r1   rˆ  r‰  rä  rŠ  r:   r:   r:   r;   r„   
  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  rA   rv   rª  )r   r    r  r8   r:   r:   r;   Ú
test_negv14
  s    zTestHankel.test_negv1c                 C   s8   t  dd¡}t  dd¡t  dd¡d  }t||dƒ d S ©NrO   rò   rõ   r{  )r    r  rJ  r  r   )r9   Zhank1Zhankrlr:   r:   r;   r   7
  s    zTestHankel.test_hankel1c                 C   s"   t t dd¡t dd¡ dƒ d S rŒ  )r   r    r!  r8   r:   r:   r;   Útest_negv1e<
  s    zTestHankel.test_negv1ec                 C   s0   t  dd¡}t  dd¡tdƒ }t||dƒ d S )NrO   rò   y       €š™™™™™¹¿r{  )r    r!  r  r   r   )r9   Zhank1eZhankrler:   r:   r;   r"  ?
  s    zTestHankel.test_hankel1ec                 C   s"   t t dd¡t dd¡ dƒ d S rŒ  )r   r    r#  r8   r:   r:   r;   Ú
test_negv2D
  s    zTestHankel.test_negv2c                 C   s8   t  dd¡}t  dd¡t  dd¡d  }t||dƒ d S rŽ  )r    r#  rJ  r  r   )r9   Zhank2Zhankrl2r:   r:   r;   r$  G
  s    zTestHankel.test_hankel2c                 C   s"   t t dd¡t dd¡ dƒ d S rŒ  )r   r    r%  r8   r:   r:   r;   Ú
test_neg2eL
  s    zTestHankel.test_neg2ec                 C   s(   t  dd¡}t  dd¡}t||dƒ d S )NrO   rò   r{  )r    r%  r   )r9   Zhank2eZhankrl2er:   r:   r;   Útest_hankl2eO
  s    zTestHankel.test_hankl2eN)r  r  r  r�  r   r�  r"  r�  r$  r‘  r’  r:   r:   r:   r;   r‹  2
  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   )r9   Zh1Zh1realr:   r:   r;   Ú	test_h1vpV
  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   )r9   Zh2Zh2realr:   r:   r;   Ú	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	g d
¢¡}t g d¢¡}t ||dd� t d	t g d
¢¡d ¡}t || t¡dd� g d¢}g d¢}t ||¡}g d¢}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 )Nrb  rr   çQívîoó?ro   rH   r   rs   rÇ   r¬   )g      ø¿rD   r   rO   r�  )gÄñÌ·â?g3|t-Õ”æ?rs   g�ßo�Ýö?g�{hùç¨ù?rí   ©rr   r�  rb  )r   rO   rr   )rs   gŸá¶cÏý?r˜  rA   rv   rO   )
r   r    Úhyp0f1rT   r   rÍ   rî   ÚvstackÚassert_raisesr(  )r9   rÑ   rø   r`  Zx2r:   r:   r;   Ú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   )r9   r2  r:   r:   r;   Útest_hyp0f1_gh5764z
  s    zTestHyper.test_hyp0f1_gh5764c              f   C   s¸  t  ddd¡}t|ddƒ tg d¢g d¢g d¢g d¢g d	¢g d
¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d ¢g d!¢g d"¢g d#¢g d$¢g d%¢g d&¢g d'¢g d(¢g d)¢g d*¢g d+¢g d,¢g d-¢g d.¢g d/¢g d0¢g d1¢g d2¢g d3¢g d4¢g d5¢g d6¢g d7¢g d8¢g d9¢g d:¢g d;¢g d<¢g d=¢g d>¢g d?¢g d@¢g dA¢g dB¢g dC¢g dD¢g dE¢g dF¢g dG¢g dH¢g dI¢g dJ¢g dK¢g dL¢g dM¢g dN¢g dO¢g dP¢g dQ¢g dR¢g dS¢g dT¢g dU¢g dV¢g dW¢g dX¢g dY¢g dZ¢g d[¢g d\¢g d]¢g d^¢g d_¢g d`¢g da¢g db¢g dc¢g dd¢g de¢g df¢g dg¢g dh¢gdƒ}|D ]4\}}}}t  |||¡}tt|| ƒ| dik ƒ �q~d S )jNrò   ró   g–ŒŒ™õ?rC   )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   Æž£A)g•AZ;Àg‰OðFA'ÀgxÅ�Oõ<Àg_DÌc „òD)g‰^g¿Å@g ŸëV*E7Àgíé4à)3@g7-XÌtD)gÎ§ŽU(@g2Tj›‡8Àgº$Ã@g  Lý¦h¥B)gëüÛe¿¼;@gJÎìgoèÿ¿grÑ›è@g `å±«õ»B)gÏ5'Šë.@gqZð¢¯=Àg7ßˆîY·.Àgé8¨²wÀ)gB‰–Ì,@g"î^¬¯#@grTÉ[	R3@g  €¢œÓB)gªºÃý²YÀg�N]ù,ã*@gÑòò*!j,Àg©³¤í1@)gÃ#r¦ @g�q{874*ÀgWs%§o.@g´ÔÿMÀdD)g8˜—|.2@g°*±!î”,Àg?áËÈI(#@gJ
r þß.Ä)g¡ªøu–÷8Àgø#ûÖ=)@g*³÷˜þ'1Àgš™™)ÏˆvA)g%™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  ð—Õñ>B)g 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ª�¬A)gô¬ÿÎ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»`4A)g:§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  €£’¸ÓA)gþë�û¦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¾ŸÓ%)A)gYöN»:+Àg”n	È°-õ?g‹¨‰>åÀgZdû|I.A)grøæ/Û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‡B)g|>oÏ˜ÒÀg¨\—Ð!<@g"?4VÆ?g%®c\qñî?)gÇ »’ëø¿gp�¹fP!Àg³†AO¹Ü:@g€ª¦,\Ã)gº=RŽŠ8@gÿ%¤;ÀgŒôz®3@gÿ†Å~ž0«G)g.CV–l@gÜáe< ¤.@g§��»­9@g¸…kq1A)g–€ó=~†$À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!½ðJA)gf^XH
^;@g7Ãøür:@g±`,…/@gš™™ùi{dA)gihÉ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µE)g“‹sÌ`m@g“ôzAUŽÀguCÏ=V”#@g  ž\�Â)gŠPLÚ-(@g,›9$µ"9Àg6¹Îu7@g¿ÕeR´ÂF)gúðÆÝ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…ºÝ½]
D)gáNØ4ý3@g¤}ˆW6@gLªUS!9ÀgäØÞÉ�F>)g ž€�Q4@g=Ÿàæ}­ÀgÇÕÈ®´5@g¿Ç]nhgF)g—æV«9ÀgÒÐé”9Àgfž9ó,#ÀgF|}fvÑ?)g=^°ee;@gy›’}2Àg¥'Tà> Àg#…�o@)g•÷Ìí¹+5Àg™±�È;ÀgN8CgÓ8@g   Çbk²A)g´Î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`²¥ F)g²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   ¸ž®A)g©?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 ð[™ŠÅB)gØ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Î½4E)gø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¨A)g©¶@')ý"À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!  )r9   Úhyp1Zref_datar"  r#  rr  rø   rÀ  r:   r:   r;   r)  �
  sÖ    œgzTestHyper.test_hyp1f1c                 C   s,   t  ddd¡}t  ddd¡}t||dƒ d S )Nrr   r�  g7úþB.†Àg|:úþB.†Àr|  ©r    r(  r   )r9   r¡  Zhyp2r:   r:   r;   Útest_hyp1f1_gh2957õ
  s    zTestHyper.test_hyp1f1_gh2957c                 C   s   t  ddd¡}t|ddƒ d S )Nrr   r�  iüÿÿgÅ<`÷’²œ?r|  r¢  )r9   Zhypr:   r:   r;   Útest_hyp1f1_gh2282ú
  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g d¢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g d¢g d ¢g d!¢g d"¢g d#¢d$d%g}t|ƒD ]8\}\}}}}}t 	||||¡}t
||dd&| d'� �qPd S )(Nrr   rO   r�  ç|®Gáz¤?rb  gÿÿÿÿÿÿ÷?g|®Gáz¤¿rz   rÌ   rA   rã  rž  )rv   rè  r�  r¥  gŒYiô2õ?r  rv   g433333ó?r?   r{  r°   rD   re  rª   g       ?r¬   r�  g      ÀgUUUUUUÕ¿g  º†@gUUUUUUõ?g«ªªªªªÀ)r�  rö  rs   ç      $ÀgEciH!…@)rm  rv   rO   rÕ  gáz®Gáæ?)rA   r  rO   rÕ  gyé&1¬|¿)r'  rv   rO   rÕ  g"nN%@?)rA   r!  rO   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   )	r9   r²   ri   r"  r#  rr  rÑ   r¡  Úcvr:   r:   r;   r+  þ
  sX    ÿÿÿÿÿÿÿÿÿÿÿÿäzTestHyper.test_hyp2f1c                 C   sØ   t  ddd¡}t|ddƒ g d¢g d¢ }}t|ƒt|ƒ }}d}t  |||¡}ttt| ƒ t  |||¡t  d| | ¡t  |¡  |d|  t  d| | d	| |¡ t  |¡t  d	| ¡    }t||d
ƒ d S )NrO   rò   r‚  gÑà D„?rC   )ró   rý  ç333333ó?gš™™™™™À)r�  gš™™™™™	@r  gš™™™™™	Àrr   rA   r|  )	r    Úhyperur   r   r   r   r(  r
  r   )r9   Zval1r"  r#  r÷   ZhypuZhprlr:   r:   r;   Útest_hyperu"  s    ÿ$ÿþzTestHyper.test_hyperuc                 C   s   t t ddd¡ddƒ d S )NrO   r�  g3333334@g«ð(ÃÂ¨?r|  )r   r    r®  r8   r:   r:   r;   Útest_hyperu_gh2287/  s    ÿzTestHyper.test_hyperu_gh2287N)r  r  r  r–  r—  r�  r   r)  r£  r¤  r+  r¯  r°  r:   r:   r:   r;   r“  U
  s   t$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ö Ö¿r{  )r   r    r<  r   )r9   Zit0r:   r:   r;   r=  5  s    
ýzTestBessel.test_itj0y0c                 C   s&   t t d¡ƒ}t|t ddgƒdƒ d S )NrÌ   gbqòÌTtt?g/]ÃooÊÛ¿r{  )r   r    r6  r   )r9   Zit2r:   r:   r;   r7  =  s    
ýzTestBessel.test_it2j0y0c                 C   s   t t dd¡t dd¡ƒ d S ©Nrv   rA   r  )r   r    r@  r8   r:   r:   r;   Útest_negv_ivE  s    zTestBessel.test_negv_ivc                 C   s&   t  d¡}t  dd¡}t||dƒ d S ©Nrò   r   r{  )r    rD  rH  r   ©r9   ZozZozrr:   r:   r;   rE  H  s    
zTestBessel.test_j0c                 C   s&   t  d¡}t  dd¡}t||dƒ d S ©Nrò   rO   r{  )r    rF  rH  r   ©r9   Zo1Zo1rr:   r:   r;   rG  M  s    
zTestBessel.test_j1c                 C   s   t  dd¡}t|ddƒ d S )NrO   rÌ   çÕ;öâx¹?r{  )r    rH  r   )r9   Zjnnrr:   r:   r;   rI  R  s    zTestBessel.test_jnc                 C   s"   t t dd¡t dd¡ dƒ d S rŒ  )r   r    rJ  r8   r:   r:   r;   Útest_negv_jvV  s    zTestBessel.test_negv_jvc                 C   s^   g d¢g d¢g d¢g d¢g d¢g}t |ƒD ].\}\}}}t ||¡}t||dd| d� q*d S )	N)r   rò   g³
Yeˆëï?)çUUUUUUå?ç:Œ0âŽyE>gË¿ÀÀÂ+Ë>)rº  rQ   g)%¡›¹-„>)gÍÌÌÌÌÌ@rQ   g5Ôc)Ç!9)rº  rè   g%²,ÄÍ¿r{  r©  rª  )rÓ  r    rJ  r   )r9   r²   ri   r¡  rÑ   r�   Zycr:   r:   r;   rK  Y  s    üzTestBessel.test_jvc                 C   s"   t t dd¡t dd¡ dƒ d S rŒ  )r   r    rL  r8   r:   r:   r;   Útest_negv_jved  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 )NrO   rÌ   r¸  r{  ùš™™™™™É?      ð?)r    rL  r   rJ  r   r!  rö   )r9   ZjvexpZjvexp1r÷   Zjvexprr:   r:   r;   rM  g  s    zTestBessel.test_jvec                 C   sˆ   t  dd¡}t  dd¡}t|tg d¢ƒdƒ t|tg d¢ƒdƒ t  dd¡}t|tg d¢ƒd	d
� t  dd¡}t|tg d¢ƒd	d
� d S )Nr   r°   rO   )go@—.=@gzj,[�@g“ÆÌlµN!@g5/ƒ D•'@g”hó>¡Ü-@r?   ©gžŽ’W§@g”0Óö@g›¬QÑX$@g ²º¥*@g8„*5{x0@rN   )g’Eèk¹[@g÷~CÅju]@gYrÊ�ìì^@g�Ê,Æ `@gò»f	À`@rG   rH   é-  )g“õ¦t™s@g&»Ç­r3t@gWú¦þ’³t@gæ,‘$Y&u@gëú­…†�u@)r    Újn_zerosr   r   r   )r9   Újn0Zjn1Zjn102Zjn301r:   r:   r;   Útest_jn_zeroso  s     üüüü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g d¢ƒdd� d S )Nr   r`   i  gç¾;€‰@rG   rH   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�º;¨@r»  )r    rÀ  r   r   )r9   rÁ  Zjn10Zjn3010r:   r:   r;   Ú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 )NrO   rA   r:   )r\   rÑ   ©rH  r:   r;   Újnp   s    z(TestBessel.test_jnjnp_zeros.<locals>.jnprO   rK   r   rû   r†  zInvalid t return for nt=%d)r    rH  rf   Zjnjnp_zerosÚzipr   ÚAssertionError)
r9   rÅ  Úntr÷   r\   r  ÚtÚzzÚnnÚttr:   rÄ  r;   Útest_jnjnp_zeros�  s    zTestBessel.test_jnjnp_zerosc                 C   sF   t  dd¡}t|tg d¢ƒdƒ t  dd¡}tt  d|¡ddd� d S )	NrO   r°   ©gÚÉà(yuý?gOXâeS@g¦aøˆ˜!@g¶óýÔxi'@g'Nîw(º-@r?   é»  r   rÇ   r†  )r    Z	jnp_zerosr   r   r   r”  )r9   rÅ  r:   r:   r;   Útest_jnp_zeros¬  s    üzTestBessel.test_jnp_zerosc                 C   sD   t  dd¡}t|tg d¢ƒtg d¢ƒtg d¢ƒtg d¢ƒfdƒ d S )NrO   r°   r¾  rÎ  )çÞå"¾“@g+û®þ·@gŒ-9(1!@gÈ˜»–�'@g–>tA}Ë-@)g‚”0Óv@gj¼t“Ä@g§èH.?$@gŠ}"O’*@gG¬Å§p0@)r    Z
jnyn_zerosr   r   )r9   Zjnzr:   r:   r;   Útest_jnyn_zeros¶  s    


ñízTestBessel.test_jnyn_zerosc                 C   s8   t  dd¡}t  dd¡t  dd¡ d }t||dƒ d S )NrA   rO   rv   rü   )r    r”  rJ  r   )r9   ZjvprimZjv0r:   r:   r;   Útest_jvpÍ  s    zTestBessel.test_jvpc                 C   s&   t  d¡}t  dd¡}t||dƒ d S r´  )r    rO  ri  r   )r9   ZozkZozkrr:   r:   r;   rP  Ò  s    
zTestBessel.test_k0c                 C   s&   t  d¡}t  dd¡}t||dƒ d S r´  )r    rQ  rk  r   )r9   ZozkeZozkerr:   r:   r;   rR  ×  s    
zTestBessel.test_k0ec                 C   s&   t  d¡}t  dd¡}t||dƒ d S r¶  )r    rS  ri  r   )r9   Zo1kZo1krr:   r:   r;   rT  Ü  s    
zTestBessel.test_k1c                 C   s&   t  d¡}t  dd¡}t||dƒ d S r¶  )r    rU  rk  r   )r9   Zo1keZo1kerr:   r:   r;   rV  á  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°   rO   r   rA   rv   r»  rª   r?   r¥   rE   r|  r{  g      H@)rT   rZ   r    Zjacobir   rr  r   )
r9   r"  r#  ZP0ZP1ZP2ZP3ÚcpZp2cZp3cr:   r:   r;   Útest_jacobiæ  s     &B2D8ÿXzTestBessel.test_jacobic                 C   s   t  dd¡}t|ddƒ d S )Nr   rÌ   ç_±2ü?r{  )r    ra  r   )r9   Zkn1r:   r:   r;   rb  ø  s    zTestBessel.test_knc                 C   s   t t dd¡t dd¡ƒ d S ©Nr¬   r  rç  ©r   r    ri  r8   r:   r:   r;   Útest_negv_kvü  s    zTestBessel.test_negv_kvc                 C   s   t  dd¡}t|ddƒ d S )Nr   rÌ   rÖ  rü   ©r    ri  r   )r9   Zkv0r:   r:   r;   Útest_kv0ÿ  s    zTestBessel.test_kv0c                 C   s   t  dd¡}t|ddƒ d S )NrO   rÌ   gKçÞ‹˜@rü   rÚ  )r9   Úkv1r:   r:   r;   Útest_kv1  s    zTestBessel.test_kv1c                 C   s   t  dd¡}t|ddƒ d S )NrA   rÌ   g¢)lH—ÁH@rü   rÚ  )r9   Úkv2r:   r:   r;   Útest_kv2  s    zTestBessel.test_kv2c                 C   s   t t dd¡dƒ d S )Né    rO   gÜ.€Õ”"éH)r   r    ra  r8   r:   r:   r;   Útest_kn_largeorder  s    zTestBessel.test_kn_largeorderc                 C   s   t t dd¡dƒ d S )Nr   g =‘`äXáCrØ  r8   r:   r:   r;   Útest_kv_largearg  s    zTestBessel.test_kv_largeargc                 C   s   t t dd¡t dd¡ƒ d S r×  )r   r    rk  r8   r:   r:   r;   Útest_negv_kve  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Ì   r{  r½  )r    rk  ri  r   r   )r9   Zkve1rÜ  r÷   Zkve2rÞ  r:   r:   r;   rl    s    zTestBessel.test_kvec                 C   s*   d}t t d|¡ tjd|dd�dƒ d S )Nr  rO   r   ©r\   rü   )r   r    ri  Úkvp)r9   r÷   r:   r:   r;   Ú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  rO   rä  rü   ©r    ri  rå  r   ©r9   r¡  r÷   ZxcrÑ   r:   r:   r;   Ú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  rA   rO   rä  rü   rç  rè  r:   r:   r;   Útest_kvp_n2(  s
    <zTestBessel.test_kvp_n2c                 C   s&   t  d¡}t  dd¡}t||dƒ d S r´  )r    r  r  r   rµ  r:   r:   r;   r  /  s    
zTestBessel.test_y0c                 C   s&   t  d¡}t  dd¡}t||dƒ d S r¶  )r    r”  r  r   r·  r:   r:   r;   r  4  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 )NrA   rO   ©rî   r~   rô   )r    Zy0_zerosr   r   r!  r  )r9   ZyoZypoZzoZzporô  Zallvalr:   r:   r;   Útest_y0_zeros9  s    zTestBessel.test_y0_zerosc                 C   s*   t  d¡}t|tdgƒtdgƒfdƒ d S )NrO   rÑ  gÑ®BÊOªà?r°   )r    Zy1_zerosr   r   )r9   r”  r:   r:   r;   Útest_y1_zerosA  s    
zTestBessel.test_y1_zerosc                 C   s.   t jddd�}t|tdgƒtdgƒfdƒ d S )NrO   rë  yL¦
F%uâ?!°rh‘íì?y;ßO�—nè¿Ð³Yõ¹Úâ?rv   )r    Z	y1p_zerosr   r   )r9   Zy1pr:   r:   r;   Útest_y1p_zerosE  s    ýzTestBessel.test_y1p_zerosc                 C   sB   t  dd¡}t|tddgƒdƒ t  dd¡}t|g d¢dd	� d S )
Nr?   rA   g¿œ3¢”@g·(³A&¹"@r°   rÏ  )g]E.ô+"|@gçHå(éð|@gffÂ|çŒ}@g&îb`~@g�HO_°�~@rÇ   rH   )r    Zyn_zerosr   r   r   )r9   Úanr:   r:   r;   Útest_yn_zerosM  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   rA   gÎQhÕ¾“@gŠzNþ·@rE   é+   r°   rÇ   r†  rÏ  rÆ   )r    Ú	ynp_zerosr   r   r   r•  ©r9   Zaor:   r:   r;   Útest_ynp_zerosX  s    zTestBessel.test_ynp_zerosc                 C   s&   t  dd¡}tt  d|¡ddd� d S )NrÏ  r°   r   r†  r†  )r    rò  r   r•  ró  r:   r:   r;   Útest_ynp_zeros_large_order`  s    z%TestBessel.test_ynp_zeros_large_orderc                 C   s   t  dd¡}t|ddƒ d S ©NrO   rÌ   ç5‹,Ž1—
Àr{  )r    r  r   )r9   Zyn2nr:   r:   r;   r  d  s    zTestBessel.test_ync                 C   s"   t t dd¡t dd¡ dƒ d S rŒ  )r   r    r  r8   r:   r:   r;   Útest_negv_yvh  s    zTestBessel.test_negv_yvc                 C   s   t  dd¡}t|ddƒ d S rö  )r    r  r   )r9   Zyv2r:   r:   r;   r  k  s    zTestBessel.test_yvc                 C   s"   t t dd¡t dd¡ dƒ d S rŒ  )r   r    r  r8   r:   r:   r;   Útest_negv_yveo  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 )NrO   rÌ   r÷  r{  r½  rD   )r    r  r   r  r   )r9   Zyve2Zyve2rZyve22r:   r:   r;   r  r  s
    zTestBessel.test_yvec                 C   s8   t  dd¡t  dd¡ d }t  dd¡}t||dƒ d S )NrO   rÌ   rv   rª   rA   rü   )r    r  r•  r   )r9   ZyvprZyvp1r:   r:   r;   Útest_yvpy  s    zTestBessel.test_yvpc                 c   sD   g d¢}g d¢}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 AMOS)iˆÿÿÿrL  ç      4Àr¦  rË   rö  r~   rs   ç{®Gáú(@r{  r¿  )iìúÿÿéõÿÿÿr¾  rD   rs   r­   ç     i@g     y@g     Ä‚@gÍÌÌÌÌä…@é  i'  Nrr   iÄÿÿÿrŸ  rè  )Ú	itertoolsÚproductr   )r9   r¡  r÷   r:   r:   r;   Ú_cephes_vs_amos_points~  s    z!TestBessel._cephes_vs_amos_pointsç•dyáý¥=r   Nc                 C   sÐ   |   ¡ D ]Â\}}|d u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   )r«  rI   rS   )	r  re   rT   rS  r   r!  r   rö   r   )r9   rÊ  Úf2rI   rS   rV  r¡  r÷   Úc1Úc2Úc3r:   r:   r;   Ú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 )NrQ   çu5%ÅÅœ r‡  )r	  r    rJ  rH  r8   r:   r:   r;   Ú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  r8   r:   r:   r;   Ú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 )Nr‡  )r!  )r¡  r÷   r:   r:   r;   Úskipper¤  s    zDTestBessel.test_yv_cephes_vs_amos_only_small_orders.<locals>.skipperr  r  )rI   rS   rV  r  )r9   r  r:   r:   r;   Ú(test_yv_cephes_vs_amos_only_small_orders£  s    ÿz3TestBessel.test_yv_cephes_vs_amos_only_small_ordersc                 C   sF   t jdd��& | jtjtjddd� W d   ƒ n1 s80    Y  d S )Nrò  ró  g:Œ0âŽy5>r  r‡  )rT   rv  r	  r    r@  r8   r:   r:   r;   Útest_iv_cephes_vs_amos©  s    z!TestBessel.test_iv_cephes_vs_amosc           	   
   C   s|  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 j¡||< 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 d   ƒ n1 �s0    Y  t  |¡}t|| dk || || t 	|| || ¡t 	|| || d ¡fƒ d S )Ni@B rO   rr   rD   rA   )rÔ   rÌ   r{  r   rò  ró  rí   r  gYóøÂn¥gH¯¼šò×Š>)rT   rZ   r[   rõ  rö  rÍ   r”  rv  r    r@  r   r!  r   Zargmaxr   )	r9   rŽ  r¡  rÑ   Zimskr  r  Zdcr]   r:   r:   r;   Ú test_iv_cephes_vs_amos_mass_test­  s(    "".

6þ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    ri  ra  r8   r:   r:   r;   Ú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 )	Nrv   r?   gPòýîí‡Û?r¿  rÿ  g©~OmÊ’?gY†8ÖE@”@gKÆSn˜ô–¿)r   r    rJ  r8   r:   r:   r;   Ú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 BesselsrD   rO   gl—îÉ)Ü¿rm  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Ó?rr  y333333Ó?      ð?rõ   N)r   r    rJ  r  r@  ri  rL  r   r  rB  rk  r  r#  r8   r:   r:   r;   Útest_ticket_853Ö  sP    """"
þ
þ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 domainsrr   rD   rO   r   rA   r?   N)r   r   r    rJ  r@  r  ri  rL  rB  r  rk  r=   rô  rU  r8   r:   r:   r;   Útest_ticket_854  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    ri  rT   r   rk  r8   r:   r:   r;   Útest_gh_7909  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 overflowrO   i¼  gá¹Îõ¥‡¬~rL   i`  g ¶?los~N©r   r    r@  r8   r:   r:   r;   Útest_ticket_503  s    zTestBessel.test_ticket_503c                 C   s   t t dd¡dƒ d S )Nrö  rO   r  r  r8   r:   r:   r;   Útest_iv_hyperg_poles"  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   rA   rr   rO   rD   rü   )r   rÍ   r   r   r    r  r   r   r   r!  rŠ  r   ÚepsÚsum©r9   r¡  r÷   r\   r]   Úrr  r:   r:   r;   Ú	iv_series%  s    8*zTestBessel.iv_seriesc                 C   s4   dD ]*}|   d|¡\}}tt |¡|||d� qd S )N©rs   r­   rþ  r   ©rS   r«  )r"  r   r    r,  ©r9   r÷   Úvaluer  r:   r:   r;   Útest_i0_series-  s    zTestBessel.test_i0_seriesc                 C   s4   dD ]*}|   d|¡\}}tt |¡|||d� qd S )Nr#  rO   r$  )r"  r   r    r0  r%  r:   r:   r;   Útest_i1_series2  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Ë   r~   rs   rü  r{  )rs   r­   rþ  y      ð¿       @r$  )r"  r   r    r@  ©r9   r¡  r÷   r&  r  r:   r:   r;   Útest_iv_series7  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 )Nr~   rs   rQ   rò   g0oO…øí?rr   gÖÊÿ!¤ä?gr¢·bÏÝ?rb  gâ®ÄÞpHÑ?rz   gð“ÌíC~Ç?r£   gïgo¯×û¶?r{  r©  rª  )rÓ  r    r,  r   r   ©r9   r²   ri   rÑ   r¡  r¬  r:   r:   r;   r-  =  s    ù	zTestBessel.test_i0c                 C   s&   t  d¡}t  dd¡}t||dƒ d S r´  )r    r.  rB  r   )r9   ZoizeZoizerr:   r:   r;   r/  K  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 )Nr~   rQ   gjïËÙß|Ë=rò   gÈ•!§[1§?rr   g;Í˜Ä?rs   gèRùÎœÊ?rz   g|«äýÄ?r£   g}¦‹ÊÎf¶?r{  r©  rª  )rÓ  r    r0  r   r   r+  r:   r:   r;   r1  P  s    úzTestBessel.test_i1c                 C   s&   t  d¡}t  dd¡}t||dƒ d S r¶  )r    r2  rB  r   )r9   Zoi1eZoi1err:   r:   r;   r3  ]  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    r:  r   )r9   Ziti0r:   r:   r;   r;  b  s    
ýzTestBessel.test_iti0k0c                 C   s"   t  d¡}t|tddgƒdƒ d S )Nrò   gÝ³¿É„|T?gVäÀ‚Æ¥
@rE   )r    r4  r   r   )r9   Zit2kr:   r:   r;   r5  j  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   )r9   Úiv1r:   r:   r;   rA  r  s    zTestBessel.test_ivc                 C   s   t t dd¡t dd¡ƒ d S r²  )r   r    rB  r8   r:   r:   r;   Útest_negv_ivev  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    rB  r@  r   r   )r9   Zive1r-  r:   r:   r;   rC  y  s    zTestBessel.test_ivec                 C   s    t t dd¡t dd¡dƒ d S )NrO   rA   r   rü   )r   r    r@  Úivpr8   r:   r:   r;   Ú	test_ivp0~  s    zTestBessel.test_ivp0c                 C   s8   t  dd¡t  dd¡ d }t  dd¡}t||dƒ d S )Nr   rA   rO   rü   )r    r@  r/  r   r‡  r:   r:   r;   Útest_ivp�  s    zTestBessel.test_ivp)r  r   N)r  )Ur  r  r  r=  r7  r³  rE  rG  rI  r¹  rK  r¼  rM  rÂ  rÃ  rÍ  rÐ  rÒ  rÓ  rP  rR  rT  rV  rÕ  rb  rÙ  rÛ  rÝ  rß  rá  râ  rã  rl  ræ  ré  rê  r  r  rì  rí  rî  rð  rô  rõ  r  rø  r  rù  r  rú  r  r	  rŒ   r  r  rA  Úmachiner  r  r  r  Zslowr  r  r  r  r  r  r  r  r"  r'  r(  r*  r-  r/  r1  r3  r;  r5  rA  r.  rC  r0  r1  r:   r:   r:   r;   r±  4  s¦   
	
ÿ
ÿ

2
r±  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g d	¢ƒd
 dƒ t|jtg d¢ƒd dƒ t|jtg d¢ƒd dƒ t|jtg d¢ƒd dƒ d S )Nr   rO   rA   rv   r?   r°   r»  rD   )rO   r  rA   rª   )rD   r¸  iîÿÿÿrE   r¤  )rO   iðÿÿÿéH   i ÿÿÿrÊ   r	  )rD   rÃ   i8ÿÿÿiX  i¨ýÿÿr~  r{  )r    Zlaguerrer   rr  r   )r9   Úlag0Úlag1Úlag2Úlag3Zlag4Zlag5r:   r:   r;   Ú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   rO   rA   rv   rD   rm  rs   rª   r  r¤  )rT   rZ   r    r0  r   rr  r   r   )r9   r]   r5  r6  r7  r8  r:   r:   r;   Útest_genlaguerre–  s    $þ>þzTestLaguerre.test_genlaguerreN)r  r  r  r9  r:  r:   r:   r:   r;   r3  ‡  s   r3  c                   @   sR   e Zd Zdd„ Zej dg d¢¡ej dg d¢¡ej dg d¢¡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g d¢ƒd d	d
� t|jtg d¢ƒd ƒ t|jtg d¢ƒd ƒ t|jtg d¢ƒd ƒ d S )Nr   rO   rA   rv   r?   r°   )rv   r   rD   rª   r»  rÄ   )r°   r   r  r   )rÏ  r   rƒ  r   rv   r¥   )é?   r   iºÿÿÿr   rk   r   )r    Zlegendrer   rr  r   r   )r9   Zleg0Zleg1Zleg2Zleg3Zleg4Zleg5r:   r:   r;   Útest_legendreª  s    





zTestLegendre.test_legendrer\   )rO   rA   rv   r?   r°   Úzr)gŸ£ŸºÆà?g{Úá¯Éš)@g¾…uãe#Àg bæLdà?g7–f©«ñÅ?Úzi)gà÷o^œˆ#@g"•²1Ó?gÊ7ÛÜ˜~ @gþñ^µ2Ù6Àg6ânµó"ì¿c                 C   sZ   t  |||d  ¡}t  d|||d  ¡}t|d |d d ƒ t|d |d d ƒ d S )Nrõ   r   rO   )r    ÚlpnÚclpmnr   )r9   r\   r>  r?  ZreslpnZresclpmnr:   r:   r;   Útest_lpn_against_clpmn¸  s    z#TestLegendre.test_lpn_against_clpmnN)r  r  r  r=  rŒ   r  ry  rB  r:   r:   r:   r;   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 )NrO   rò   r   rA   rm  r©   r{  )r    Zlmbdar   rH  r”  rJ  r   )r9   ZlamZlamrr:   r:   r;   Ú
test_lmbdaÅ  s
    "6þzTestLambda.test_lmbdaN)r  r  r  rD  r:   r:   r:   r;   rC  Ä  s   rC  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ô   r|  r»  r{  ©r    rn  r   r   )r9   Zl1pZl1prlr:   r:   r;   ro  Ï  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 )NrO   rs  r­  rA   r  r  r{  rF  )r9   Zl1pmZl1pmrlr:   r:   r;   Útest_log1pmoreÔ  s    zTestLog1p.test_log1pmoreN)r  r  r  ro  rG  r:   r:   r:   r;   rE  Î  s   rE  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Ó?rA   rv   rs   rr   rO   r~   rE   rC   )r    rA  r   r   r   )r9   r÷   Zclpr:   r:   r;   Ú
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 )	NrQ   rO   rv   rr   rõ   rA   r   rC   )r    rA  r   r   ru  ©r9   r  r  r\   rÑ   Zclp_plusZ	clp_minusr:   r:   r;   Ú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 )
NrQ   rO   rv   rr   rõ   r   y       €      à¿y              à?rC   )r    rA  r   r   ru  rT   r   r   rJ  r:   r:   r;   Ú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 )Nrh  rO   rõ   ©rA   rv   r   rE   )r   r    rA  )r9   r  r  r\   rÑ   rR  r:   r:   r;   Ú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)rO   rD   r?   rO   )rf   r    rA  r   rT   rS  rô  Úlpmn)r9   r÷   r\   r  Úlpr:   r:   r;   Útest_inf  s    "zTestLegendreFunctions.test_infc                 C   sŒ   g d¢}d}d}dD ]r}|D ]h}dD ]^}t  |||d|  |¡d t  |||d|  |¡d  | }tt  ||||¡d |d	d
� q$qqd S )N)rŸ  y      à¿      à?y      à¿      à¿y      à?      à¿r  rÚ  râ  rÞ  rA   rv   rM  )r§   y        ü©ñÒMbP?rr   r   rO   r   rH   )r    rA  r   )r9   Zzvalsr  r\   rR  r÷   ÚhZapprox_derivativer:   r:   r;   Útest_deriv_clpmn  s    ÿÿþz&TestLegendreFunctions.test_deriv_clpmnc                 C   s6   t  ddd¡}t|tg d¢gƒtg d¢gƒfdƒ d S )Nr   rA   rr   ©rs   rr   ç      À¿©r~   rs   r�  r?   )r    rO  r   r   ©r9   rP  r:   r:   r;   Ú	test_lpmn   s    ýûzTestLegendreFunctions.test_lpmnc                 C   s0   t  dd¡}t|tg d¢ƒtg d¢ƒfdƒ d S )NrA   rr   rT  rV  r?   )r    r@  r   r   )r9   Zlpnfr:   r:   r;   Útest_lpn)  s    
ýûzTestLegendreFunctions.test_lpnc                 C   sˆ   t  ddd¡}t|ddƒ t  ddd¡}t|ddƒ tjd	d
�� t  ddd¡}W d   ƒ n1 sd0    Y  t|dkp€t |¡ƒ d S )Nr   rA   rr   rU  rC   é(   r§   g�‚ÔIÇÀ?rò  ró  rD   )r    ru  r   rT   rv  r   r   rW  r:   r:   r;   rv  2  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   rA   rr   r?   rO   )r    ÚlqmnÚlqnr   )r9   ZlqmnfÚlqfr:   r:   r;   Ú	test_lqmn>  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 ð?çñhãˆµøô>rA   rO   r   )rD   rD   N)r    r[  r   )r9   Zx0ÚdeltarÑ   Zlqrø   r:   r:   r;   Útest_lqmn_gt1D  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 )Nr?   rs  )r°   r°   r   )r°   rO   )r    r[  r   rÓ   )r9   r"  r#  r:   r:   r;   Útest_lqmn_shapeO  s    z%TestLegendreFunctions.test_lqmn_shapec                 C   s0   t  dd¡}t|tg d¢ƒtg d¢ƒfdƒ d S )NrA   rr   )gk+ö—Ý“á?gÙ=yX¨5ç¿gÂ†§WÊ2ê¿)gÚ|a2Uõ?gÛù~j¼tó?gºÚŠýe÷ê¿r?   )r    r\  r   r   )r9   r]  r:   r:   r;   Útest_lqnX  s    
ÿÿzTestLegendreFunctions.test_lqnN)r  r  r  rI  rK  rL  rN  rQ  rS  rX  rY  rv  r^  ra  rb  rc  r:   r:   r:   r;   rH  Ú  s   					rH  c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestMathieuc                 C   s   d S r3  r:   r8   r:   r:   r;   rw  `  s    zTestMathieu.test_mathieu_ac                 C   s   t  dd¡ d S )NrA   r°   )r    r*   r8   r:   r:   r;   Útest_mathieu_even_coefc  s    z"TestMathieu.test_mathieu_even_coefc                 C   s   d S r3  r:   r8   r:   r:   r;   Útest_mathieu_odd_coefg  s    z!TestMathieu.test_mathieu_odd_coefN)r  r  r  rw  re  rf  r:   r:   r:   r;   rd  ^  s   rd  c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestFresnelIntegralc                 C   s   d S r3  r:   r8   r:   r:   r;   r¤  n  s    z$TestFresnelIntegral.test_modfresnelpc                 C   s   d S r3  r:   r8   r:   r:   r;   r£  q  s    z$TestFresnelIntegral.test_modfresnelmN)r  r  r  r¤  r£  r:   r:   r:   r;   rg  l  s   rg  c                   @   s   e Zd Zdd„ ZdS )ÚTestOblCvSeqc                 C   s&   t  ddd¡}t|tg d¢ƒdƒ d S )Nr   rv   rO   )g~TÃ~OÖ¿g£té_’Jö?gmÅþ²{ò@g@j'÷û&@r°   )r    Z
obl_cv_seqr   r   )r9   Zoblr:   r:   r;   Útest_obl_cv_seqv  s    ýzTestOblCvSeq.test_obl_cv_seqN)r  r  r  ri  r:   r:   r:   r;   rh  u  s   rh  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S )ÚTestParabolicCylinderc                 C   s0   t  dd¡}t|tddgƒtddgƒfdƒ d S )NrO   rò   gìQ¸…ëï?gx$(~Œ¹?gx$(~Œ©¿gÃõ(\�Âï?r?   )r    Úpbdn_seqr   r   )r9   Zpbr:   r:   r;   Ú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 )NrO   rÌ   rò   r   )r    rÈ  r8   r:   r:   r;   rÉ  †  s    zTestParabolicCylinder.test_pbdvc                 C   s<   t  dd¡}t  dd¡}t|t|d ƒt|d ƒfdƒ d S )NrO   rò   r   r?   )r    rk  Zpbdv_seqr   r   )r9   ZpbnZpbvr:   r:   r;   Ú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°   rA   rr   r~   r   r†  r‡  g®Gáz®$@gq=
×£p4@g©³HáÓQ9ro   rH   g�Âõ(\#Àg…ëQ¸…@gŸ¡kÓS a>)rT   r’  r   r   r    r
  r   rÈ  )r9   Úetar÷   r:   r:   r;   Ú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  r?   r{  r¾  rü   r°   rh  r   rª   rO   rû   r‡  )rT   r’  r    rÈ  r!  r   ©r9   rÑ   rn  r   r  Zdpr:   r:   r;   Ú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 rp  )rT   r’  r    rÊ  r!  r   rq  r:   r:   r;   Útest_pbvv_gradient¢  s    0z(TestParabolicCylinder.test_pbvv_gradientc                 C   s<   t  dd¡\}}t|t g d¢¡ƒ t|t g d¢¡ƒ d S )NrA   rv   )g:4¦¬€Ï@gŽ1{Ð½õ?g7,%Ònšá?)g�µ»ûXØ@g=<'‡’î?gÊ ¾áùá?)r    Zpbvv_seqr   rT   r   )r9   Zres1Zres2r:   r:   r;   Útest_pbvv_seq«  s    z#TestParabolicCylinder.test_pbvv_seqN)
r  r  r  rl  rÉ  rm  ro  rr  rs  rt  r:   r:   r:   r;   rj  ~  s   
		rj  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ƒ g d¢}tt  d|¡t  |¡ƒ g d	¢}g d
¢}g d¢}tt  ||¡|ƒ t |gd ¡}tt  |t |gd ¡¡|ƒ tt  t |gd ¡|¡|ƒ d S )NrA   rO   rv   gX]ï ;Àrü   gOV,@Ëù@)rA   rv   g  8»×ÙBr   rÍ  r™  )gý2}‰jÿ¿gó.òMæéí?gçð}2ï;Î¿)r    Z	polygammar   rà  rT   r›  )r9   Zpoly2Zpoly3rÑ   r\   rø   r:   r:   r;   Útest_polygamma·  s"    ÿÿzTestPolygamma.test_polygammaN)r  r  r  rv  r:   r:   r:   r;   ru  µ  s   ru  c                   @   s   e Zd Zdd„ ZdS )ÚTestProCvSeqc                 C   s&   t  ddd¡}t|tg d¢ƒdƒ d S )Nr   rv   rO   )gÑ"Ûù~jÔ?g6?þÒ¢¾@g)uÉ8F"@gË2�g)@r°   )r    Z
pro_cv_seqr   r   )r9   Zprolr:   r:   r;   Útest_pro_cv_seqÏ  s    ýzTestProCvSeq.test_pro_cv_seqN)r  r  r  rx  r:   r:   r:   r;   rw  Î  s   rw  c                   @   s   e Zd Zdd„ ZdS )ÚTestPsic                 C   s   t  d¡}t|ddƒ d S )NrO   g¶oüŒxâ¿r{  )r    rà  r   )r9   Zpsr:   r:   r;   rá  Ø  s    
zTestPsi.test_psiN)r  r  r  rá  r:   r:   r:   r;   ry  ×  s   ry  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   )r9   Zradr:   r:   r;   rã  Þ  s    zTestRadian.test_radianc                 C   s&   t  ddd¡}t|td d dƒ d S )Nrï  rO   rŸ  rA   gƒ†íC?r°   r{  )r9   Zrad1r:   r:   r;   Útest_radianmoreâ  s    zTestRadian.test_radianmoreN)r  r  r  rã  r|  r:   r:   r:   r;   rz  Ý  s   rz  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)rA   rÌ   T)Z
derivativer   rO   r{  )rT   Úemptyrf   r    Zspherical_jnr   Z
riccati_jn)r9   rŽ  rÑ   ÚSr\   rÉ  Újpr:   r:   r;   Ú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~  )rT   r  rf   r    Zspherical_ynr   Z
riccati_yn)r9   rŽ  rÑ   ÚCr\   r�   Zypr:   r:   r;   Útest_riccati_ynò  s    zTestRiccati.test_riccati_ynN)r  r  r  r‚  r„  r:   r:   r:   r;   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ô   )rˆ  Úmapre   r    ré  r   )r9   ZrndZrndrlr:   r:   r;   rê  þ  s    ý
zTestRound.test_roundN)r  r  r  rê  r:   r:   r:   r;   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   rr   rm  rA   r~   r?   r}  rl  rª   rk   rõ   rè   r¬   rd  rz   g      @rO   r¥   r¤  g      È?g     €A@)	r    Úsph_harmrT   r   r   r   r   r	   r   )Úshr   r   r   r   r	   r:   r:   r;   Ú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 r5   )rT   r0  rv  r   r    r‡  )Údtr:   r:   r;   Ú"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   rD   rr   rA   rO   r�  )	r   r    r
  r!  rŠ  r   r   r  r  r   r:   r:   r;   Ú_series6  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æ  rD   r   rO   rå  rü  é   )rO   rü   rÉ   r  rK   r   r‡  N)r�  r   r    r  r)  r:   r:   r;   Útest_vs_series=  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=ð§?rh  rH   g…ëQ¸ ÀgŠ< j¤?r»  rç  r  g³÷ýï�?ro   g       Ài×ÿÿÿg©Ÿ zzµ“?r  iôÿÿÿé)   r|  rý  rô   gffffffÀrD   g333333$À)r   r    r  r   r   r   r8   r:   r:   r;   Útest_some_valuesD  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@rq  g333333ÀN)r   r    r  r8   r:   r:   r;   Útest_regression_679Q  s    
ÿ
ÿ
ÿzTestStruve.test_regression_679N)r‚  )r  r  r  r�  r�  r’  r“  r:   r:   r:   r;   rŒ  5  s   
rŒ  c                   C   s   t t dd¡dƒ d S )Nrý  rv   gdX	
§î?)r   r    r™   r:   r:   r:   r;   Útest_chi2_smalldf[  s    r”  c                   C   s   t t dtj¡dƒ d S )Nr  rs   )r   r    r™   rT   r   r:   r:   r:   r;   Útest_ch2_inf_  s    r•  c                   C   s   t t dd¡dƒ d S )Nrý  rv   çÀyj_�¥?)r   r    rœ   r:   r:   r:   r;   Útest_chi2c_smalldfc  s    r—  c                   C   s   t t dd¡dƒ d S )Nrý  r–  rv   )r   r    rŸ   r:   r:   r:   r;   Útest_chi2_inv_smalldfg  s    r˜  c                  C   sü  d} t dt dt d¡¡ d| d� d}d}d}t t dgd	ggg d
¢¡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 )'NrG   rO   rA   gDS«YCµê?rH   gQÕ_Ñý?g®Å?Õ@g>;,
i}@rv   )rO   rv   r°   gÊ=·O÷?rD   rm  rÊ   rE   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{¿{ rs   gë][#!Rrõ  gŒÙ�S1ÛëgNÕ_Ñ r   éc   rü   )r   r    ZagmrT   r   r   rÛ  rŠ  r   r±   r   )rI   Zagm13Zagm15Zagm35Zagm12Úfir:   r:   r;   Útest_agm_simplek  sr    ÿÿþÿÿÿÿ
ÿÿÿr›  c                  C   s0  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 d   ƒ n1 �s"0    Y  d S )NrÒ  rO   ró   gÍÌÌÌÌÌü?rA   gffffff@)r   rp  rq  r   r    Zexpnr¨  r¦  rª  rÓ  ra  r  ró  rþ  )rs  r:   r:   r;   Útest_legacy¨  s    
rœ  c                   C   s   t tjtjddƒ d S )NrO   y        .Ÿ‡¢®B}T)rœ  r    rw  r@  r:   r:   r:   r;   Ú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   sp   t jdd��P | dkr2t  |¡s2| W  d   ƒ S | t  |¡ W  d   ƒ S W d   ƒ n1 sb0    Y  d S ©Nrò  )Úinvalidr   )rT   rv  r   r   rS  r:   r:   r;   Úxfunc½  s    ztest_xlogy.<locals>.xfunc©r   r   r   ©rs   rª   r/  )r   rõ   )rO   rõ   rO   rG   r‡  )
rT   r   r±   r   rg   r   rl   r2   r    Úxlogy)r   Úz1Zz2Úw1Zw2r:   r:   r;   Ú
test_xlogy¼  s    "((r¦  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   sp   t jdd��P | dkr2t  |¡s2| W  d   ƒ S | t  |¡ W  d   ƒ S W d   ƒ n1 sb0    Y  d S rž  )rT   rv  r   rn  rS  r:   r:   r;   r   Î  s    ztest_xlog1py.<locals>.xfuncr¡  r   r¢  )rO   g ÂëþKH´9r/  rO   rG   r‡  )	rT   r   r±   r   rg   rl   r2   r    Zxlog1py)r   r¤  r¥  r:   r:   r;   Útest_xlog1pyÍ  s    ÿÿ(r§  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 r5   )rT   r   r    r£  )rÑ   r:   r:   r;   r   Ü  s    ztest_entr.<locals>.xfuncr   rr   rs   rD   rO   r/  ©ZotypesrG   r‡  )rT   r   r   r  rÆ  r   rg   rl   rÏ   r2   r    Zentr)r   r²   ÚsignsrÕ  Zsgnr¡  r÷   r  r:   r:   r;   Ú	test_entrÛ  s    rª  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 r5   )rT   r   Zisposinfr    r£  rS  r:   r:   r;   r   ì  s     ztest_kl_div.<locals>.xfunc©r   rr   rs   rD   rO   r/  r¨  r   rG   r‡  )r   r  rÆ  rT   r   rg   rl   rÏ   r2   r    Zkl_div©
r   r²   r©  rÕ  ZsgnaÚvaZsgnbZvbr÷   r  r:   r:   r;   Útest_kl_divë  s    0r®  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 r5   )r    r£  rT   r   rS  r:   r:   r;   r     s
    ztest_rel_entr.<locals>.xfuncr«  rD   rO   r/  r¨  r   rG   r‡  )r   r  rÆ  rT   r   rg   rl   rÏ   r2   r    Zrel_entrr¬  r:   r:   r;   Útest_rel_entr  s    0r¯  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 )NrD   r�  rA   rr   rb  r¬   c                 S   sD   | dk rt jS t  |¡| k r*dt  |¡ S | t  |¡d|    S d S )Nr   rr   )rT   r   r!  Úsquare©r`  r!  r:   r:   r;   r     s
    ztest_huber.<locals>.xfuncrü   r¨  r   rO   rG   r‡  )r   r    ZhuberrT   r   r   r°  rZ   Úrandnrl   rÏ   r2   ©r   r÷   r  r:   r:   r;   Ú
test_huber  s    0r´  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   rA   rO   )rT   r   r   r±  r:   r:   r;   r   &  s
    z test_pseudo_huber.<locals>.xfuncrü   rA   r   rr   r¨  rO   rG   r‡  )
rT   r   rZ   r²  Útolistrl   rÏ   r2   r    Úpseudo_huberr³  r:   r:   r;   Útest_pseudo_huber%  s    (0r·  c                  C   s*   d} d}t  | |¡}d}t||dd� d S )Nrs   g¬CÒÑ]r2<gs.-“„De8rG   rH   )r    r¶  r   )r`  r!  r�   rø   r:   r:   r;   Útest_pseudo_huber_small_r3  s
    r¸  c                   C   st   t jtdd�� tddƒ W d   ƒ n1 s.0    Y  t jtdd�� tddƒ W d   ƒ n1 sf0    Y  d S )NzToo many predicted coefficientsrŠ   rL   )rŒ   r�  rq  r)   r*   r:   r:   r:   r;   Útest_runtime_warning@  s    ÿ(ÿr¹  c                   @   sî  e Zd Zdgddgg d¢g d¢g d¢g d¢g d¢g d¢g d	¢g d
¢g d¢gZej ddei fdeddifg¡dd„ ƒZ	ej ddei fdeddifg¡dd„ ƒZ
ej ddei fdeddifg¡dd„ ƒZej ddei fdeddifg¡dd„ ƒZej ddei fdeddifg¡dd„ ƒZdd„ Zdd„ Zej d d!d"d#d$ejg¡ej d%g d&¢¡ej d'ddg¡d(d)„ ƒƒƒZej d'ddg¡d*d+„ ƒZej ddei fdeddifg¡d,d-„ ƒZej ddei fdeddifg¡d.d/„ ƒZd0d1„ Zd2S )3ÚTestStirling2rO   r   )r   rO   rO   )r   rO   rv   rO   )r   rO   rC   rE   rO   )r   rO   rk   rÃ   rü   rO   )r   rO   é   rï  éA   rk   rO   )r   rO   r<  r¿  i^  éŒ   r  rO   )	r   rO   é   iÆ  i¥  é  i
  é   rO   )
r   rO   éÿ   iÑ  iZ  i'  iV
  iÎ  é$   rO   )r   rO   rn   ér$  i9…  i¦  i+Y  éø  iî  r¾   rO   zis_exact, comp, kwargsTFrI   ro   c                 C   sR   t dt| jƒƒD ]<}tt |d ƒƒ}| j| }||t|g||d�fi |¤Ž qd S )NrO   r|  )rf   rW  Útablerˆ  r+   )r9   Úis_exactÚcompÚkwargsr\   Zk_valuesÚrowr:   r:   r;   Útest_table_casesX  s    
zTestStirling2.test_table_casesc                 C   sŽ   |t dd|d�| jd d fi |¤Ž |t dd|d�| jd d fi |¤Ž |t dd|d�dfi |¤Ž |t dgdg|d�dgfi |¤Ž d S )Nr   r|  r?   rA   r°   rv   rÃ   )r+   rÅ  ©r9   rÆ  rÇ  rÈ  r:   r:   r;   Útest_valid_single_integerb  s    &&z'TestStirling2.test_valid_single_integerc                 C   sX   |t dd|d�dfi |¤Ž |t dd|d�dfi |¤Ž |t dd|d�dfi |¤Ž d S )NrD   r|  r   rA   ©r+   rË  r:   r:   r;   Útest_negative_integern  s    z#TestStirling2.test_negative_integerc                 C   s„   | j d d | j d d g}|ttddgƒtddgƒ|d�|ƒ |tddgtddgƒ|d�|ƒ |ttddgƒddg|d�|ƒ d S )Nrü   rv   r?   r|  )rÅ  r+   r   )r9   rÆ  rÇ  rÈ  Úansr:   r:   r;   Útest_array_inputsx  s&    
þý

þýþýzTestStirling2.test_array_inputsrG   c                 C   s8   g d¢}g d¢}g d¢}|t |||d�|fi |¤Ž d S )N)r   rO   rv   rÃ   r¿  rÄ  rÃ  )rD   r   rv   r°   r{  rü   rü   )rm  r   rA   rv   r°   rC   rv   r|  rÍ  ©r9   rÆ  rÇ  rÈ  rÏ  r\   r]   r:   r:   r;   Útest_mixed_values‹  s    zTestStirling2.test_mixed_valuesc                    s:   dt  d¡ ‰ }ttˆ |dd�d ‡ fdd„|D ƒƒ dS )	z{Test parity follows well known identity.

        en.wikipedia.org/wiki/Stirling_numbers_of_the_second_kind#Parity
        r‚  ée   Tr|  rA   c                    s,   g | ]$}t  ˆ |d   d ˆ | ¡d  ‘qS )rA   rO   )r5  r�  r‚  rä  r:   r;   r„  ž  r…  z5TestStirling2.test_correct_parity.<locals>.<listcomp>N)rT   r   r   r+   )r9   ÚKr:   rä  r;   Útest_correct_parity–  s
    þz!TestStirling2.test_correct_parityc                 C   sl   t ddgƒ}ddg}ddg}tt||dd�|ƒs4J ‚t d	d
gƒ}ddg}ddg}tt||dd�|ƒshJ ‚d S )Nl   V^–;Ú. l   ák4Ô-TrÃ   rK   r@   r?   Tr|  l	   D,"ÒSBX¡p!NæÑ l   wY®)ÄHŠ_î1e_é*   rñ  é   )r   r   r+   )r9   rÏ  r\   r]   r:   r:   r;   Útest_big_numbers¡  s    ÿzTestStirling2.test_big_numbersrŽ  r�  r¬   y      @      ð?Z12rÔ  )rè  rv   Ú2NrÆ  c                 C   s<   t  t¡� t|||d� W d   ƒ n1 s.0    Y  d S )Nr|  )rŒ   r   Ú	TypeErrorr+   )r9   rŽ  rÔ  rÆ  r:   r:   r;   Útest_unsupported_input_types®  s    z*TestStirling2.test_unsupported_input_typesc                 C   sx   t | jd dd … ƒ}t g d¢td�}t g d¢td�}t t¡�$ tt|||d�|ƒ W d   ƒ n1 sj0    Y  d S )Nr?   rO   ©r?   r?   r?   r?   r/  ©rO   rA   rv   r?   r|  )r   rÅ  r1  rŒ   r   rÚ  r   r+   )r9   rÆ  rÏ  r\   r]   r:   r:   r;   Ú!test_numpy_array_int_object_dtype¶  s
    z/TestStirling2.test_numpy_array_int_object_dtypec                 C   sV   t | jd dd … ƒ}t g d¢td�}t g d¢td�}|t||dd�|fi |¤Ž d S )Nr?   rO   rÜ  r/  rÝ  Fr|  )r   rÅ  r.   r+   rÑ  r:   r:   r;   Ú#test_numpy_array_unsigned_int_dtypeÀ  s    z1TestStirling2.test_numpy_array_unsigned_int_dtypec                 C   s®   t g d¢g d¢gƒ}t g d¢g d¢gƒ}t g d¢ƒ}|t|||d�|fi |¤Ž t dgdgdgdgdggƒ}t g d¢ƒ}t d	d
„ tdƒD ƒƒ}|t||dd�|fi |¤Ž d S )N)rO   rk   rÃ   rü   )rO   rC   rE   rO   )r°   r°   r°   r°   rÜ  rÝ  r|  r?   )r   rO   rA   rv   r?   r°   c                 S   s   g | ]}g d ¢‘qS ))r   rO   rC   rE   rO   r   r:   )rƒ  r,  r:   r:   r;   r„  Ù  r…  zDTestStirling2.test_broadcasting_arrays_correctly.<locals>.<listcomp>r°   F)r   r+   rf   rÑ  r:   r:   r;   Ú"test_broadcasting_arrays_correctlyË  s    z0TestStirling2.test_broadcasting_arrays_correctlyc                 C   sp   t tdddƒƒ}|D ]V}t td|d ƒƒ}t|g|dd�}|t|g|dd� }t t || ¡¡dk sJ ‚qd S )	Né3   rÓ  r°   rO   Tr|  Fr_  )rˆ  rf   r+   rT   rŠ  r!  )r9   rÑ   r\   Z	k_entriesÚdenomrh   r:   r:   r;   Útest_temme_rel_max_errorÜ  s    z&TestStirling2.test_temme_rel_max_errorN)r  r  r  rÅ  rŒ   r  ry  r   r   rÊ  rÌ  rÎ  rÐ  rÒ  rÕ  rØ  rT   r±   rÛ  rÞ  rß  rà  rã  r:   r:   r:   r;   rº  I  sp   õþ
þ
þ
þ
þ

	þ
þ
rº  )€ra  r   rc  rA  r@  ÚnumpyrT   r   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   rŒ   r   rœ  Znumpy.testingr   r   r   r   r   r   r   r   r   Zscipyr    Zscipy.special._ufuncsZ_ufuncsr6   Zscipy.specialr!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   Zscipy._lib.deprecationr,   Zscipy._lib._utilr-   r.   Zscipy.special._basicr/   r0   Zscipy.special._testutilsr1   r2   r3   r5  r4   r  r/  r2  r4  rI  rK  rX  rz  rž  rµ  r¹  rÑ  ræ  rð  r
  r  r  rw  r„  r‹  r“  r±  r3  r;  rC  rE  rH  rd  rg  rh  rj  ru  rw  ry  rz  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;   Ú<module>   sÂ   X,       3z	 jUE  ,b    D2# `    W"
 		7	
&=
	