o
    Ö­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-m6Z6 d d	l-m7Z7m8Z8m9Z9 d d
l-m:Z:m;Z;m<Z< d dl=m>Z>m?Z? d dl@mAZAmBZBmCZC d dlDmEZEmFZFmGZG d dlHmIZImJZJmKZK d dlLZLejdksÜe M¡ d  dkrßejNnejOZPG 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d„ dƒZWG dd „ d ƒZXG d!d"„ d"ƒZYG d#d$„ d$ƒZZG d%d&„ d&ƒZ[G d'd(„ d(ƒZ\G d)d*„ d*ƒZ]G d+d,„ d,ƒZ^G d-d.„ d.ƒZ_G d/d0„ d0ƒZ`G d1d2„ d2ƒZad�d3d4„ZbG d5d6„ d6ƒZcG d7d8„ d8ƒZdG d9d:„ d:ƒZeG d;d<„ d<ƒZfG d=d>„ d>ƒZgG d?d@„ d@ƒZhG dAdB„ dBƒZiG dCdD„ dDƒZjG dEdF„ dFƒZkG dGdH„ dHƒZlG dIdJ„ dJƒZmG dKdL„ dLƒZnG dMdN„ dNƒZoG dOdP„ dPƒZpG dQdR„ dRƒZqG dSdT„ dTƒZrG dUdV„ dVƒZsG dWdX„ dXƒZtG dYdZ„ dZƒZuG d[d\„ d\ƒZvd]d^„ Zwd_d`„ ZxG dadb„ dbƒZydcdd„ Zzdedf„ Z{dgdh„ Z|didj„ Z}dkdl„ Z~dmdn„ Zej€dodp„ ƒZ�eIdqdr„ ƒZ‚dsdt„ Zƒdudv„ Z„dwdx„ Z…dydz„ Z†d{d|„ Z‡d}d~„ Zˆdd€„ Z‰d�d‚„ ZŠdƒd„„ Z‹d…d†„ ZŒej�jŽd‡dˆ„ ƒZ�G d‰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)Úsoftplus)Úmathieu_odd_coefÚmathieu_even_coefÚ	stirling2)ÚlpnÚlpmnÚclpmn)Únp_longÚnp_ulong)Úxp_assert_closeÚxp_assert_equalÚSCIPY_ARRAY_API)Ú_FACTORIALK_LIMITS_64BITSÚ_FACTORIALK_LIMITS_32BITSÚ_is_subdtype)Úwith_special_errorsÚassert_func_equalÚFuncDataÚwin32Ú32bitc                   @   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/e0j1j2d[d\�d]d^„ ƒZ3d_d`„ Z4dadb„ Z5dcdd„ Z6e0j1j2ded\�dfdg„ ƒZ7dhdi„ Z8djdk„ 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„e0j1j2�dd\��d�d„ ƒZ…e0j1j2�dd\��d�d„ ƒZ†e0j1j2�d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�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š�d1�d2„ Z›�d3�d4„ Zœ�d5�d6„ Z��d7�d8„ Zž�d9�d:„ ZŸ�d;�d<„ Z �d=�d>„ Z¡�d?�d@„ Z¢�dA�dB„ Z£�dC�dD„ Z¤�dE�dF„ Z¥�dG�dH„ Z¦�dI�dJ„ Z§�dK�dL„ Z¨�dM�dN„ Z©�dO�dP„ Zª�dQ�dR„ Z«�dS�dT„ Z¬�dU�dV„ Z­�dW�dX„ Z®�dY�dZ„ Z¯�d[�d\„ Z°�d]�d^„ Z±�d_�d`„ Z²�da�db„ Z³�dc�dd„ Z´�de�df„ Zµ�dg�dh„ Z¶�di�dj„ Z·�dk�dl„ Z¸�dm�dn„ Z¹�do�dp„ Zº�dq�dr„ Z»�dsS (t  Ú
TestCephesc                 C   ó   t  d¡ d S ©Nr   )ÚcephesÚairy©Úself© rD   ú[/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/special/tests/test_basic.pyÚ	test_airy@   ó   zTestCephes.test_airyc                 C   r>   r?   )r@   ÚairyerB   rD   rD   rE   Ú
test_airyeC   rG   zTestCephes.test_airyec              	   C   s4  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| 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
@rL   éÿÿÿÿ)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   é   ç     ð?ç»½×Ùß|Û=©ÚatolrT   )Únpr   Úbroadcast_arraysÚreshapeÚTr9   r@   ÚbinomÚravelÚrandomÚRandomStater   r   Úrand)rC   ÚnÚkÚnkÚrknownÚrngrD   rD   rE   Ú
test_binomF   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 )NrU   rZ   é,  é   r   rY   rL   rO   r[   r\   r]   )r_   re   Úseedr   Úlogspacer   r   r`   ra   rb   r9   r@   rc   )rC   rh   ri   rj   rD   rD   rE   Útest_binom_2]   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 ©NrZ   )ÚintÚrangeÚfloat)rh   ri   ÚnumÚdenÚirD   rD   rE   Ú	binom_intk   s   
z.TestCephes.test_binom_exact.<locals>.binom_intrU   rZ   é   r   rL   rO   r]   )r_   Ú	vectorizere   rp   r   r   r`   ra   rb   r9   r@   rc   )rC   rz   rh   ri   rj   rD   rD   rE   Útest_binom_exactj   s   

(
ÿ$ 
ýzTestCephes.test_binom_exactc                 C   s.   g d¢}t  |¡}ttj|dddd� ¡  d S )N))rW   rX   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   rZ   rL   çê-�™—q=rS   )r_   r   r:   r@   rc   Úcheck)rC   ÚdatasetrD   rD   rE   Útest_binom_nooverflow_8346�   s   
z%TestCephes.test_binom_nooverflow_8346c                 C   ó   t t ddd¡dƒ d S )NrZ   ç      à?ç      ð?)r   r@   ÚbdtrrB   rD   rD   rE   Ú	test_bdtr—   ó   zTestCephes.test_bdtrc                 C   ó   t t ddd¡dƒ d S ©NrZ   é   r„   )r   r@   ÚbdtrirB   rD   rD   rE   Ú
test_bdtriš   rˆ   zTestCephes.test_bdtric                 C   r‰   rŠ   )r   r@   ÚbdtrcrB   rD   rD   rE   Ú
test_bdtrc�   rˆ   zTestCephes.test_bdtrcc                 C   ó   t t ddd¡dƒ d S ©NrZ   r   ç      @)r   r@   ÚbdtrinrB   rD   rD   rE   Útest_bdtrin    rˆ   zTestCephes.test_bdtrinc                 C   ó   t  ddd¡ d S rŠ   )r@   ÚbdtrikrB   rD   rD   rE   Útest_bdtrik£   ó   zTestCephes.test_bdtrikc                 C   ó   t t d¡dƒ d S ©Nr   ç        )r   r@   ÚbeirB   rD   rD   rE   Útest_bei¦   ó   zTestCephes.test_beic                 C   r™   rš   )r   r@   ÚbeiprB   rD   rD   rE   Ú	test_beip©   rž   zTestCephes.test_beipc                 C   r™   ©Nr   r…   )r   r@   ÚberrB   rD   rD   rE   Útest_ber¬   rž   zTestCephes.test_berc                 C   r™   rš   )r   r@   ÚberprB   rD   rD   rE   Ú	test_berp¯   rž   zTestCephes.test_berpc                 C   ó   t t ddd¡dƒ d S r¡   )r   r@   Ú
besselpolyrB   rD   rD   rE   Útest_besselpoly²   rˆ   zTestCephes.test_besselpolyc                 C   r¦   ©NrZ   r’   )r   r@   ÚbtdtriarB   rD   rD   rE   Útest_btdtriaµ   rˆ   zTestCephes.test_btdtriac                 C   r¦   r©   )r   r@   ÚbtdtribrB   rD   rD   rE   Útest_btdtrib¸   rˆ   zTestCephes.test_btdtribc                 C   r™   ©NrZ   r…   )r   r@   ÚcbrtrB   rD   rD   rE   Ú	test_cbrt»   rž   zTestCephes.test_cbrtc                 C   ó   t t dd¡dƒ d S ©NrZ   r   r›   )r   r@   ÚchdtrrB   rD   rD   rE   Ú
test_chdtr¾   ó   zTestCephes.test_chdtrc                 C   r±   ©NrZ   r   r…   )r   r@   ÚchdtrcrB   rD   rD   rE   Útest_chdtrcÁ   rµ   zTestCephes.test_chdtrcc                 C   ó   t t dd¡dƒ d S ©NrZ   r›   )r   r@   ÚchdtrirB   rD   rD   rE   Útest_chdtriÄ   rµ   zTestCephes.test_chdtric                 C   r¹   )Nr   r’   )r   r@   ÚchdtrivrB   rD   rD   rE   Útest_chdtrivÇ   rµ   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   rZ   r›   )ç      9@ç      4@é�  g¢ÚLÞ94)r¿   ç       @éú   g7ÅF�hþ9)gü©ñÒ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Æ   r…   gpˆ!PÜã?)g     àu@g     Àr@ç      $@g jû¨
î?)ç      Y@ç      +@rÉ   g]þÿÿï?)g     à…@rÀ   rÁ   g4Û™ÿÿÿï?)g     Àb@rË   rÉ   gþÿÿÿÿÿï?)g      d@rË   rÉ   r…   rL   r‹   r   rS   rÆ   é   )r   r@   Úchndtrr_   r   r   r   r   r   r   Únan)rC   ÚvaluesÚcdfrD   rD   rE   Útest_chndtrÊ   s.   ó2zTestCephes.test_chndtrc                 C   rƒ   ©Nr   rZ   r’   )r   r@   Ú	chndtridfrB   rD   rD   rE   Útest_chndtridfè   rˆ   zTestCephes.test_chndtridfc                 C   r�   rÒ   )r   r@   Ú	chndtrincrB   rD   rD   rE   Útest_chndtrincë   rˆ   zTestCephes.test_chndtrincc                 C   r�   ©Nr   rZ   r›   )r   r@   ÚchndtrixrB   rD   rD   rE   Útest_chndtrixî   rˆ   zTestCephes.test_chndtrixc                 C   r™   r¡   )r   r@   ÚcosdgrB   rD   rD   rE   Ú
test_cosdgñ   rž   zTestCephes.test_cosdgc                 C   r™   rš   )r   r@   Úcosm1rB   rD   rD   rE   Ú
test_cosm1ô   rž   zTestCephes.test_cosm1c                 C   r™   ©Né-   r…   )r   r@   ÚcotdgrB   rD   rD   rE   Ú
test_cotdg÷   rž   zTestCephes.test_cotdgc                 C   s$   t t d¡dƒ tt d¡dƒ d S )Nr   r›   g®Gáz®ó?gâ¨Àfà?)r   r@   Údawsnr   rB   rD   rD   rE   Ú
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
ƒrmt  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)rZ   rÌ   é   rL   g-Cëâ6
?r…   rN   ©Údecimalç•Ö&è.>r{   çVçž¯Ò<Úfloat128r   é   )rL   rJ   é   ç      ð¿çš™™™™™É?)g£ºgúìë?gsø½OBá?g”saLÀ?g
7•I”^Ê¿r‹   )r_   r   r   ÚastypeÚfloat32r   r    ÚdiricÚfloat64Úhasattrré   r   )rC   Ún_oddÚxÚn_evenÚoctave_resultrD   rD   rE   Ú
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Ì   )rZ   r‹   rN   )	r_   r   r   r   r    rð   ÚnewaxisÚshapeÚsize)rC   rô   rh   rD   rD   rE   Útest_diric_broadcasting  s   
0z"TestCephes.test_diric_broadcastingc                 C   r™   r®   )r   r@   r!   rB   rD   rD   rE   Útest_ellipe  rž   zTestCephes.test_ellipec                 C   r±   r×   )r   r@   Ú	ellipeincrB   rD   rD   rE   Útest_ellipeinc  rµ   zTestCephes.test_ellipeincc                 C   ó   t  dd¡ d S ©Nr   rZ   )r@   ÚellipjrB   rD   rD   rE   Útest_ellipj"  ó   zTestCephes.test_ellipjc                 C   s   t tdƒtd ƒ d S )Nr   rL   )r   r"   r   rB   rD   rD   rE   Útest_ellipk%  rµ   zTestCephes.test_ellipkc                 C   r¹   rš   )r   r@   Ú	ellipkincrB   rD   rD   rE   Útest_ellipkinc(  rµ   zTestCephes.test_ellipkincc                 C   r™   rš   ©r   r@   ÚerfrB   rD   rD   rE   Útest_erf+  rž   zTestCephes.test_erfc                 C   s$   d}t t |¡t | ¡ dƒ d S )Ng ¡#8xŸ@r›   r  ©rC   rô   rD   rD   rE   Útest_erf_symmetry.  s    zTestCephes.test_erf_symmetryc                 C   r™   r¡   )r   r@   ÚerfcrB   rD   rD   rE   Ú	test_erfc2  rž   zTestCephes.test_erfcc                 C   r™   )NrL   rÊ   )r   r@   Úexp10rB   rD   rD   rE   Ú
test_exp105  rž   zTestCephes.test_exp10c                 C   r™   )NrL   ç      @)r   r@   Úexp2rB   rD   rD   rE   Ú	test_exp28  rž   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›   rO   )r   r@   Úexpm1r_   r   rÎ   rB   rD   rD   rE   Ú
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   rZ   rL   rJ   rÌ   rO   )r@   r  r   Úcomplexr_   r   rÎ   )rC   r  rD   rD   rE   Útest_expm1_complexA  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Ì   é   ro   ù              ð?)y”­á=…ÿ�¼Cwˆ¯¹?yC7gg)gF<ëUŠgòÉ?yŠQØá”Š<—™âD*ÌÓ?yg:>¬Œ–<»›sKÀy>ñûÕñ¸£¼$	‹Um>lÀy;VÃél ™<„«£´å@r‹   ro   )	r_   r   r   r	   r@   r  r   Úimagr   )rC   Úyrô   ÚzÚexpectedÚfoundrD   rD   rE   Útest_expm1_complex_hardT  s   
z"TestCephes.test_expm1_complex_hardc                 C   ó0   t t ddd¡dƒ tt ddd¡ddd	� d S )
NrZ   r   r›   ç�íµ ÷Æ°>rÌ   é
   g£�2•óÿï?r   rS   )r   r@   Úfdtrr   rB   rD   rD   rE   Ú	test_fdtri  s   
ÿzTestCephes.test_fdtrc                 C   r$  )
NrZ   r   r…   rL   r  g    _ BgDô�IXlÑ?r   rS   )r   r@   Úfdtrcr   rB   rD   rD   rE   Ú
test_fdtrco  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 )NrZ   gV-²�ïß?gÕxé&1à?gší
}°Ìï?g<zO'Ñð?r%  rS   g°×€í‡ì?r  r‹   r   )r   r@   Úfdtrir   )rC   ÚprD   rD   rE   Ú
test_fdtriv  s
   ÿzTestCephes.test_fdtrizReturns nan on i686.c                 C   s   t t ddd¡dƒ d S )NrZ   r„   )r   r@   r+  rB   rD   rD   rE   Útest_fdtri_mysterious_failure~  s   z(TestCephes.test_fdtri_mysterious_failurec                 C   ó   t t ddd¡dƒ d S r‘   )r   r@   ÚfdtridfdrB   rD   rD   rE   Útest_fdtridfd‚  rˆ   zTestCephes.test_fdtridfdc                 C   r™   ©Nr   ©r›   r›   )r   r@   ÚfresnelrB   rD   rD   rE   Útest_fresnel…  rž   zTestCephes.test_fresnelc                 C   r™   ©NrÌ   ç      8@)r   r@   ÚgammarB   rD   rD   rE   Ú
test_gammaˆ  rž   zTestCephes.test_gammac                 C   r±   )NrÌ   rZ   r›   )r   r@   ÚgammainccinvrB   rD   rD   rE   Útest_gammainccinv‹  rµ   zTestCephes.test_gammainccinvc                 C   r>   )Nr&  )r@   ÚgammalnrB   rD   rD   rE   Útest_gammalnŽ  rG   zTestCephes.test_gammalnc                 C   s^   t  t j dddddddt jg	t j¡}t  t jt jdd	d	ddddg	t j¡}tt |¡|ƒ d S )
Néüÿÿÿç      ÀgffffffÀç       €r›   rZ   gÍÌÌÌÌÌ@r…   rì   )r_   r   r   rñ   rÎ   r   r@   Úgammasgn)rC   ÚvalsÚ	referencerD   rD   rE   Útest_gammasgn‘  s   ÿÿzTestCephes.test_gammasgnc                 C   rƒ   r²   )r   r@   ÚgdtrrB   rD   rD   rE   Ú	test_gdtrš  rˆ   zTestCephes.test_gdtrc                 C   s   t t ddtj¡dƒ d S r®   )r   r@   rE  r_   r   rB   rD   rD   rE   Útest_gdtr_inf�  ó   zTestCephes.test_gdtr_infc                 C   rƒ   r¶   )r   r@   ÚgdtrcrB   rD   rD   rE   Ú
test_gdtrc   rˆ   zTestCephes.test_gdtrcc                 C   r/  r×   )r   r@   ÚgdtriarB   rD   rD   rE   Útest_gdtria£  rˆ   zTestCephes.test_gdtriac                 C   s   t  ddd¡ d S ©NrZ   r   )r@   ÚgdtribrB   rD   rD   rE   Útest_gdtrib¦  r˜   zTestCephes.test_gdtribc                 C   s   t  ddd¡ d S ©NrZ   r  )r@   ÚgdtrixrB   rD   rD   rE   Útest_gdtrixª  r˜   zTestCephes.test_gdtrixc                 C   ó   t  dd¡ d S rs   )r@   Úhankel1rB   rD   rD   rE   Útest_hankel1­  r  zTestCephes.test_hankel1c                 C   rS  rs   )r@   Úhankel1erB   rD   rD   rE   Útest_hankel1e°  r  zTestCephes.test_hankel1ec                 C   rS  rs   )r@   Úhankel2rB   rD   rD   rE   Útest_hankel2³  r  zTestCephes.test_hankel2c                 C   rS  rs   )r@   Úhankel2erB   rD   rD   rE   Útest_hankel2e¶  r  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 )NrZ   r…   r‹   rJ   éúÿÿÿg¹ãˆ®š?)r   r@   Úhyp1f1r   rB   rD   rD   rE   Útest_hyp1f1¹  s   zTestCephes.test_hyp1f1c                 C   ó   t t dddd¡dƒ d S r¶   )r   r@   Úhyp2f1rB   rD   rD   rE   Útest_hyp2f1¾  rH  zTestCephes.test_hyp2f1c                 C   r™   r¡   )r   r@   Úi0rB   rD   rD   rE   Útest_i0Á  rž   zTestCephes.test_i0c                 C   r™   r¡   )r   r@   Úi0erB   rD   rD   rE   Útest_i0eÄ  rž   zTestCephes.test_i0ec                 C   r™   rš   )r   r@   Úi1rB   rD   rD   rE   Útest_i1Ç  rž   zTestCephes.test_i1c                 C   r™   rš   )r   r@   Úi1erB   rD   rD   rE   Útest_i1eÊ  rž   zTestCephes.test_i1ec                 C   r>   rs   )r@   Úit2i0k0rB   rD   rD   rE   Útest_it2i0k0Í  rG   zTestCephes.test_it2i0k0c                 C   r>   rs   )r@   Úit2j0y0rB   rD   rD   rE   Útest_it2j0y0Ð  rG   zTestCephes.test_it2j0y0c                 C   r>   rs   )r@   Ú
it2struve0rB   rD   rD   rE   Útest_it2struve0Ó  rG   zTestCephes.test_it2struve0c                 C   r>   rs   )r@   ÚitairyrB   rD   rD   rE   Útest_itairyÖ  rG   zTestCephes.test_itairyc                 C   r™   r2  )r   r@   Úiti0k0rB   rD   rD   rE   Útest_iti0k0Ù  rž   zTestCephes.test_iti0k0c                 C   r™   r2  )r   r@   Úitj0y0rB   rD   rD   rE   Útest_itj0y0Ü  rž   zTestCephes.test_itj0y0c                 C   r™   rš   )r   r@   Úitmodstruve0rB   rD   rD   rE   Útest_itmodstruve0ß  rž   zTestCephes.test_itmodstruve0c                 C   r™   rš   )r   r@   Ú	itstruve0rB   rD   rD   rE   Útest_itstruve0â  rž   zTestCephes.test_itstruve0c                 C   r±   r²   )r   r@   ÚivrB   rD   rD   rE   Útest_ivå  rµ   zTestCephes.test_ivc                 C   r±   r²   )r   r@   ÚiverB   rD   rD   rE   Útest_iveè  rµ   zTestCephes.test_ivec                 C   r™   r¡   )r   r@   Új0rB   rD   rD   rE   Útest_j0ë  rž   zTestCephes.test_j0c                 C   r™   rš   )r   r@   Új1rB   rD   rD   rE   Útest_j1î  rž   zTestCephes.test_j1c                 C   r¹   r¡   )r   r@   ÚjnrB   rD   rD   rE   Útest_jnñ  rµ   zTestCephes.test_jnc                 C   r¹   r¡   )r   r@   ÚjvrB   rD   rD   rE   Útest_jvô  rµ   zTestCephes.test_jvc                 C   r¹   r¡   )r   r@   ÚjverB   rD   rD   rE   Útest_jve÷  rµ   zTestCephes.test_jvec                 C   r>   ©NrL   )r@   Úk0rB   rD   rD   rE   Útest_k0ú  rG   zTestCephes.test_k0c                 C   r>   rˆ  )r@   Úk0erB   rD   rD   rE   Útest_k0eý  rG   zTestCephes.test_k0ec                 C   r>   rˆ  )r@   Úk1rB   rD   rD   rE   Útest_k1   rG   zTestCephes.test_k1c                 C   r>   rˆ  )r@   Úk1erB   rD   rD   rE   Útest_k1e  rG   zTestCephes.test_k1ec                 C   r>   rˆ  )r@   ÚkeirB   rD   rD   rE   Útest_kei  rG   zTestCephes.test_keic                 C   r™   rš   )r   r@   ÚkeiprB   rD   rD   rE   Ú	test_keip	  rž   zTestCephes.test_keipc                 C   r>   rˆ  )r@   ÚkerrB   rD   rD   rE   Útest_ker  rG   zTestCephes.test_kerc                 C   r>   rˆ  )r@   ÚkerprB   rD   rD   rE   Ú	test_kerp  rG   zTestCephes.test_kerpc                 C   r>   rˆ  )r@   ÚkelvinrB   rD   rD   rE   Útest_kelvin  rG   zTestCephes.test_kelvinc                 C   rS  rs   )r@   ÚknrB   rD   rD   rE   Útest_kn  r  zTestCephes.test_knc                 C   ó*   t t d¡dƒ tt t tj¡¡ƒ d S rº   )r   r@   Úkolmogir   r_   r   rÎ   rB   rD   rD   rE   Útest_kolmogi  ó   zTestCephes.test_kolmogic                 C   r™   r¡   )r   r@   Ú
kolmogorovrB   rD   rD   rE   Útest_kolmogorov  rž   zTestCephes.test_kolmogorovc                 C   r™   )Nr   r@  )r   r@   Ú_kolmogprB   rD   rD   rE   Útest_kolmogp  rž   zTestCephes.test_kolmogpc                 C   r™   rš   )r   r@   Ú_kolmogcrB   rD   rD   rE   Útest_kolmogc"  rž   zTestCephes.test_kolmogcc                 C   r�  rš   )r   r@   Ú	_kolmogcir   r_   r   rÎ   rB   rD   rD   rE   Útest_kolmogci%  r   zTestCephes.test_kolmogcic                 C   rS  rs   )r@   ÚkvrB   rD   rD   rE   Útest_kv)  r  zTestCephes.test_kvc                 C   rS  rs   )r@   ÚkverB   rD   rD   rE   Útest_kve,  r  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›   rO   éþÿÿÿ)r@   Úlog1pr   r_   r   rÎ   )rC   r®  rD   rD   rE   Ú
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   ƒ d S 1 sðw   Y  d S )	Nr  rO   r   z%invalid value encountered in multiplyrZ   rL   r‹   rJ   )r@   r®  r  r   r_   r   r   ÚfilterÚRuntimeWarningr   r   rÎ   )rC   r®  ÚcÚsuprD   rD   rE   Útest_log1p_complex6  s$   $ ",&"$" $"ôzTestCephes.test_log1p_complexc                 C   rƒ   )Nr   rZ   r…   )r   r@   ÚlpmvrB   rD   rD   rE   Ú	test_lpmvI  rˆ   zTestCephes.test_lpmvc                 C   r±   r¶   )r   r@   Ú	mathieu_arB   rD   rD   rE   Útest_mathieu_aL  rµ   zTestCephes.test_mathieu_ac                 C   r±   r¶   )r   r@   Ú	mathieu_brB   rD   rD   rE   Útest_mathieu_bO  rµ   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 )NrZ   r   ©r…   r›   c                 S   sÊ   |t jd 9 }| dkrddd| td| ƒ   S | dkr+t|ƒ|d td| ƒ  S | dkrAtd| ƒ|td	| ƒd
 d   S t| | ƒ|t| d | ƒd	| d   t| d | ƒd	| d      S )Né´   r   gÍ;fž æ?rZ   r„   rL   é   r‹   rJ   é   ç      Ð?)r_   r   r	   ©ÚmÚqr   rD   rD   rE   Ú	ce_smallqV  s   $Hz.TestCephes.test_mathieu_cem.<locals>.ce_smallqéd   éâÿÿÿé÷ÿÿÿr&  ç°rh‘í|¿?ç›+¡†›„=©rT   r^   )	r   r@   Úmathieu_cemr_   r|   r   r   rq   r   )rC   rÃ  rÁ  rÂ  rD   rD   rE   Útest_mathieu_cemR  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 )NrZ   r   ©r›   r…   c                 S   s¢   |t jd 9 }| dkrt|ƒ|d td| ƒ  S | dkr-td| ƒ|td| ƒ d  S t| | ƒ|t| d | ƒd| d   t| d | ƒd| d      S )Nr¼  rZ   r½  r‹   rL   rJ   r¾  )r_   r   r   rÀ  rD   rD   rE   Ú	se_smallqo  s    Hz.TestCephes.test_mathieu_sem.<locals>.se_smallqrÄ  rÅ  rÆ  r&  rÇ  rÈ  rÉ  )	r   r@   Úmathieu_semr_   r|   r   r   rq   r   )rC   rÍ  rÁ  rÂ  rD   rD   rE   Útest_mathieu_semk  s   
*"
þzTestCephes.test_mathieu_semc                 C   r/  ©NrZ   r   r3  )r   r@   Úmathieu_modcem1rB   rD   rD   rE   Útest_mathieu_modcem1�  rˆ   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 )
NrZ   r   rJ   r­  rL   r&  rN   r\   rS   )	r@   Úmathieu_modcem2r_   r   r   rq   ÚlinspacerÑ  r   ©rC   rÁ  rÂ  r   Úy1ÚfrÚy2rD   rD   rE   Útest_mathieu_modcem2„  s   "&ÿzTestCephes.test_mathieu_modcem2c                 C   r/  rÐ  )r   r@   Úmathieu_modsem1rB   rD   rD   rE   Útest_mathieu_modsem1”  rˆ   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 )
NrZ   rJ   r­  rL   r&  r   rN   r\   rS   )	r@   Úmathieu_modsem2r_   r   r   rq   rÔ  rÚ  r   rÕ  rD   rD   rE   Útest_mathieu_modsem2—  s   "$ÿzTestCephes.test_mathieu_modsem2c                 C   sä   t t ddd¡tjtjfƒ t t ddd¡tjtjfƒ t t ddd¡tjtjfƒ t t ddd¡tjtjfƒ t t ddd¡tjtjfƒ t t ddd¡tjtjfƒ t t ddd¡tjtjfƒ t t 	ddd¡tjtjfƒ d S )Né'  r   gÍÌÌÌÌÌô?ç      ø?)
r   r@   rÊ  r_   rÎ   rÎ  rÑ  rÚ  rÓ  rÜ  rB   rD   rD   rE   Útest_mathieu_overflow¥  s    z TestCephes.test_mathieu_overflowc                 C   sD   t dƒD ]}t ddd¡}t|d ddd� t|d	 d
dd� qd S )Né<   rL   rÄ  rO   r   g.ød‰SÂ?r\   rS   rZ   gà§GcÛì?ç-Cëâ6?)ru   r@   rÜ  r   )rC   ri   ÚvrD   rD   rE   Útest_mathieu_ticket_1847°  s
   üz#TestCephes.test_mathieu_ticket_1847c                 C   r>   r?   )r@   ÚmodfresnelmrB   rD   rD   rE   Útest_modfresnelm¹  rG   zTestCephes.test_modfresnelmc                 C   r>   r?   )r@   ÚmodfresnelprB   rD   rD   rE   Útest_modfresnelp¼  rG   zTestCephes.test_modfresnelpc                 C   r±   r²   )r   r@   Ú	modstruverB   rD   rD   rE   Útest_modstruve¿  rµ   zTestCephes.test_modstruvec                 C   r¦   r®   )r   r@   ÚnbdtrrB   rD   rD   rE   Ú
test_nbdtrÂ  rˆ   zTestCephes.test_nbdtrc                 C   r¦   rº   )r   r@   ÚnbdtrcrB   rD   rD   rE   Útest_nbdtrcÅ  rˆ   zTestCephes.test_nbdtrcc                 C   r¦   r®   )r   r@   ÚnbdtrirB   rD   rD   rE   Útest_nbdtriÈ  rˆ   zTestCephes.test_nbdtric                 C   r•   )NrZ   rM   r„   )r@   ÚnbdtrikrB   rD   rD   rE   Útest_nbdtrikË  r˜   zTestCephes.test_nbdtrikc                 C   r/  r‘   )r   r@   ÚnbdtrinrB   rD   rD   rE   Útest_nbdtrinÎ  rˆ   zTestCephes.test_nbdtrinc                 C   r_  r²   )r   r@   ÚncfdtrrB   rD   rD   rE   Útest_ncfdtrÑ  rH  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 )NrZ   r   r›   )r„   rZ   rß  rL   r‹   rß  )r   r@   Úncfdtrirõ  r   )rC   Úfr,  rD   rD   rE   Útest_ncfdtriÔ  s   zTestCephes.test_ncfdtrizpncfdtr uses a Boost math implementation but ncfdtridfdinverts the less accurate cdflib implementation of ncfdtr.c                 C   s2   g d¢}t  d|dd¡}tt  d|dd¡|ƒ d S )N©rZ   rL   r‹   rL   r¿  r{   )r@   rõ  r   Ú
ncfdtridfd)rC   Údfdr,  rD   rD   rE   Útest_ncfdtridfdÚ  ó   zTestCephes.test_ncfdtridfdzpncfdtr uses a Boost math implementation but ncfdtridfninverts the less accurate cdflib implementation of ncfdtr.c                 C   s6   g d¢}t  |ddd¡}tt  |ddd¡|dd� d S )N)r  rZ   rL   r‹   g     ˆÃ@rL   r¿  r{   gñhãˆµøä>rS   )r@   rõ  r   Ú
ncfdtridfn)rC   Údfnr,  rD   rD   rE   Útest_ncfdtridfnå  s   zTestCephes.test_ncfdtridfnzoncfdtr uses a Boost math implementation but ncfdtrincinverts the less accurate cdflib implementation of ncfdtr.c                 C   s2   g d¢}t  dd|d¡}tt  dd|d¡|ƒ d S )N)r„   rß  rÆ   rL   r‹   r{   )r@   rõ  r   Ú	ncfdtrinc)rC   Úncr,  rD   rD   rE   Útest_ncfdtrincð  rþ  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 )NrZ   r   r„   é	   i   rß   r›   r…   rÌ   rÆ   rÉ   )	r   r@   Únctdtrr   r_   r   r   r   rÎ   rB   rD   rD   rE   Útest_nctdtrû  s   zTestCephes.test_nctdtrc                 C   r•   )NrZ   r„   r   )r@   Ú	nctdtridfrB   rD   rD   rE   Útest_nctdtridf  r˜   zTestCephes.test_nctdtridfc                 C   s   t  ddd¡ d S rM  )r@   Ú	nctdtrincrB   rD   rD   rE   Útest_nctdtrinc
  r˜   zTestCephes.test_nctdtrincc                 C   r•   )Nr  rí   r„   )r@   ÚnctdtritrB   rD   rD   rE   Útest_nctdtrit  r˜   zTestCephes.test_nctdtritc                 C   r/  )Nr„   rZ   r…   )r   r@   ÚnrdtrimnrB   rD   rD   rE   Útest_nrdtrimn  rˆ   zTestCephes.test_nrdtrimnc                 C   s   t t ddd¡dddd� d S )Nr„   r›   r   r]   )r   r@   ÚnrdtrisdrB   rD   rD   rE   Útest_nrdtrisd  s   
ÿzTestCephes.test_nrdtrisdc                 C   ó   t  dddd¡ d S rM  )r@   Úobl_ang1rB   rD   rD   rE   Útest_obl_ang1  rž   zTestCephes.test_obl_ang1c                 C   s2   t  ddddd¡}t|d dƒ t|d dƒ d S )NrZ   r   r…   r›   )r@   Úobl_ang1_cvr   )rC   ÚresultrD   rD   rE   Útest_obl_ang1_cv  s   zTestCephes.test_obl_ang1_cvc                 C   rƒ   ©NrZ   r   rÆ   )r   r@   Úobl_cvrB   rD   rD   rE   Útest_obl_cv  rˆ   zTestCephes.test_obl_cvc                 C   r  rM  )r@   Úobl_rad1rB   rD   rD   rE   Útest_obl_rad1"  rž   zTestCephes.test_obl_rad1c                 C   ó   t  ddddd¡ d S rM  )r@   Úobl_rad1_cvrB   rD   rD   rE   Útest_obl_rad1_cv%  rµ   zTestCephes.test_obl_rad1_cvc                 C   r  rM  )r@   Úobl_rad2rB   rD   rD   rE   Útest_obl_rad2(  rž   zTestCephes.test_obl_rad2c                 C   r  rM  )r@   Úobl_rad2_cvrB   rD   rD   rE   Útest_obl_rad2_cv+  rµ   zTestCephes.test_obl_rad2_cvc                 C   r±   )NrZ   r   rÌ  )r   r@   ÚpbdvrB   rD   rD   rE   Ú	test_pbdv.  rµ   zTestCephes.test_pbdvc                 C   rÿ   rM  )r@   ÚpbvvrB   rD   rD   rE   Ú	test_pbvv1  r  zTestCephes.test_pbvvc                 C   rÿ   rM  )r@   ÚpbwarB   rD   rD   rE   Ú	test_pbwa4  r  zTestCephes.test_pbwac                 C   s>   t  dd¡}t|t d¡ƒ t  g d¢d¡}t|g d¢ƒ d S )Nr   rZ   rO   ©r   rZ   rL   )rZ   rZ   rZ   )r@   Úpdtrr   r_   r   r   ©rC   ÚvalrD   rD   rE   Ú	test_pdtr7  s   zTestCephes.test_pdtrc                 C   sB   t  dd¡}t|dt d¡ ƒ t  g d¢d¡}t|g d¢ƒ d S )Nr   rZ   rO   r*  r›   )r   r   r   )r@   Úpdtrcr   r_   r   r   r,  rD   rD   rE   Ú
test_pdtrc>  s   zTestCephes.test_pdtrcc                 C   sD   t ƒ �}| td¡ t dd¡ W d   ƒ d S 1 sw   Y  d S )Nú-floating point number truncated to an integerr„   )r   r°  r±  r@   Úpdtri)rC   r³  rD   rD   rE   Ú
test_pdtriE  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 )Nr„   rZ   r   r¿  çffffffî?)r   ç#B’¡œÇ;r%  )r‹   r‹   )r@   Úpdtrikr   Ú	gammainccr   r_   r   )rC   ri   rD   rD   rE   Útest_pdtrikJ  s   zTestCephes.test_pdtrikc                 C   r  rM  )r@   Úpro_ang1rB   rD   rD   rE   Útest_pro_ang1Q  rž   zTestCephes.test_pro_ang1c                 C   s    t t ddddd¡tdƒƒ d S )NrZ   r   r»  )r   r@   Úpro_ang1_cvr   rB   rD   rD   rE   Útest_pro_ang1_cvT  s   ÿzTestCephes.test_pro_ang1_cvc                 C   rƒ   r  )r   r@   Úpro_cvrB   rD   rD   rE   Útest_pro_cvX  rˆ   zTestCephes.test_pro_cvc                 C   r  rP  )r@   Úpro_rad1rB   rD   rD   rE   Útest_pro_rad1[  rž   zTestCephes.test_pro_rad1c                 C   r  rM  )r@   Úpro_rad1_cvrB   rD   rD   rE   Útest_pro_rad1_cv^  rµ   zTestCephes.test_pro_rad1_cvc                 C   r  rM  )r@   Úpro_rad2rB   rD   rD   rE   Útest_pro_rad2a  rž   zTestCephes.test_pro_rad2c                 C   r  rM  )r@   Úpro_rad2_cvrB   rD   rD   rE   Útest_pro_rad2_cvd  rµ   zTestCephes.test_pro_rad2_cvc                 C   r>   rs   )r@   ÚpsirB   rD   rD   rE   Útest_psig  rG   zTestCephes.test_psic                 C   s   t t ddd¡dƒ d S r?   )r   r@   ÚradianrB   rD   rD   rE   Útest_radianj  rˆ   zTestCephes.test_radianc                 C   r™   r®   )r   r@   ÚrgammarB   rD   rD   rE   Útest_rgammam  rž   zTestCephes.test_rgammac                 C   sd   t t d¡dƒ t t d¡dƒ t t d¡dƒ t t d¡dƒ t t d	¡dƒ t t d
¡dƒ d S )Nç333333@rÈ   ç333333Àç      ÀgÍÌÌÌÌÌ@r  gÍÌÌÌÌÌÀg      Àç      @r?  )r   r@   ÚroundrB   rD   rD   rE   Ú
test_roundp  s   zTestCephes.test_roundc                 C   r>   rs   )r@   ÚshichirB   rD   rD   rE   Útest_shichix  rG   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 )NrZ   r„   r   z cosine integral(-inf) is not nan)r@   Úsicir_   r   r   r   r   r   )rC   Úsr²  rD   rD   rE   Ú	test_sici{  s   

zTestCephes.test_sicic                 C   r™   ©NéZ   r…   )r   r@   ÚsindgrB   rD   rD   rE   Ú
test_sindg†  rž   zTestCephes.test_sindgc                 C   s.   t t dd¡dƒ tt t dtj¡¡ƒ d S )NrZ   r  çÍÌÌÌÌÌì?)r   r@   Úsmirnovr   r_   r   rÎ   rB   rD   rD   rE   Útest_smirnov‰  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 )	NrZ   r  rO   rL   ç      è?ç      à¿r‹   g      È¿)r   r@   Ú	_smirnovpr   r_   r   rÎ   rB   rD   rD   rE   Útest_smirnovp�  s   zTestCephes.test_smirnovpc                 C   sŽ   t t dd¡dƒ tt t dtj¡¡ƒ tjddddd�}tt d|¡dt 	d|¡ ƒ tjddddd�}tt d	|¡dt 	d	|¡ ƒ d S )
NrZ   r  r   r  T©Úendpointr‹   rÌ   rJ   )
r   r@   Ú	_smirnovcr   r_   r   rÎ   rÔ  r   r]  )rC   Úx10Úx4rD   rD   rE   Útest_smirnovc“  s   "zTestCephes.test_smirnovcc                 C   óP   t t dt dd¡¡dƒ t t dt dd¡¡dƒ tt t dtj¡¡ƒ d S ©NrZ   rM   ç333333ã?)r   r@   r]  Úsmirnovir   r_   r   rÎ   rB   rD   rD   rE   Útest_smirnovi›  ó   zTestCephes.test_smirnovic                 C   ri  rj  )r   r@   re  Ú
_smirnovcir   r_   r   rÎ   rB   rD   rD   rE   Útest_smirnovci   rn  zTestCephes.test_smirnovcic                 C   r™   rº   )r   r@   ÚspencerB   rD   rD   rE   Útest_spence¥  rž   zTestCephes.test_spencec                 C   s:   t t dd¡dƒ tt dd¡dƒ tt dd¡dƒ d S )NrZ   r   r„   r_  rL   gMo˜¸þFë?)r   r@   Ústdtrr   rB   rD   rD   rE   Ú
test_stdtr¨  ó   zTestCephes.test_stdtrc                 C   rÿ   )Nçffffffæ?rZ   )r@   ÚstdtridfrB   rD   rD   rE   Útest_stdtridf­  r  zTestCephes.test_stdtridfc                 C   rÿ   )NrZ   rv  )r@   ÚstdtritrB   rD   rD   rE   Útest_stdtrit°  r  zTestCephes.test_stdtritc                 C   r¹   rš   )r   r@   ÚstruverB   rD   rD   rE   Útest_struve³  rµ   zTestCephes.test_struvec                 C   r™   rÞ   )r   r@   ÚtandgrB   rD   rD   rE   Ú
test_tandg¶  rž   zTestCephes.test_tandgc                 C   r¹   r®   )r   r@   ÚtklmbdarB   rD   rD   rE   Útest_tklmbda¹  rµ   zTestCephes.test_tklmbdac                 C   r>   rs   )r@   Úy0rB   rD   rD   rE   Útest_y0¼  rG   zTestCephes.test_y0c                 C   r>   rs   )r@   rÖ  rB   rD   rD   rE   Útest_y1¿  rG   zTestCephes.test_y1c                 C   rS  rs   )r@   ÚynrB   rD   rD   rE   Útest_ynÂ  r  zTestCephes.test_ync                 C   rS  rs   )r@   ÚyvrB   rD   rD   rE   Útest_yvÅ  r  zTestCephes.test_yvc                 C   rS  rs   )r@   ÚyverB   rD   rD   rE   Útest_yveÈ  r  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È   rk  rÆ   rì   r…   g      "Àg      "@g†4×µ/Y¾gï8EGrùñ?rO  gffffff@iËÿÿÿgš™™™™>@r›   g|ò°Pkš¿?r  rZ   iêÿÿÿr­  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é<rR   rS   )r  r9   r@   Úwofz)rC   r   ÚwrD   rD   rE   Ú	test_wofzË  sr   ûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿá"zTestCephes.test_wofzN)¼Ú__name__Ú
__module__Ú__qualname__rF   rI   rm   rr   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  ÚpytestÚmarkÚxfailr#  r(  r*  r-  r.  r1  r5  r9  r;  r=  rD  rF  rG  rJ  rL  rO  rR  rU  rW  rY  r[  r^  ra  rc  re  rg  ri  rk  rm  ro  rq  rs  ru  rw  ry  r{  r}  r  r�  rƒ  r…  r‡  rŠ  rŒ  rŽ  r�  r’  r”  r–  r˜  rš  rœ  rŸ  r¢  r¤  r¦  r¨  rª  r¬  r¯  r´  r¶  r¸  rº  rË  rÏ  rÒ  rÙ  rÛ  rÝ  rà  rä  ræ  rè  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.  r0  r3  r8  r:  r<  r>  r@  rB  rD  rF  rH  rJ  rL  rR  rT  rW  r[  r^  rb  rh  rm  rp  rr  rt  rx  rz  r|  r~  r€  r‚  rƒ  r…  r‡  r‰  r�  rD   rD   rD   rE   r=   ?   s„   

		þþþr=   c                   @   sT   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zej 	d	¡d
d„ ƒZ
ej 	d	¡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    rA   r   r   r
  rD   rD   rE   rF   ù  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ƒ ƒƒ ƒ ||< q)t||dƒ d S )NrÅ   rJ   rL   gNè´�N{?rP   )	r    rH   rA   ru   r   r   Úabsr   r   )rC   ÚaÚbÚb1rh   rD   rD   rE   rI     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 )NrL   g‘†lƒ‡Çò¿goe‰Î2+
Àg(õá0[Àg Xü*éJÀgõUfÏÝ¿gË°zU¡`Ù?g4Ðc1=Cã?gó¿CîuTè¿rJ   rÌ   r   )g²&„‡Çò¿g(Æ.÷2+
Àg²óÕð¬RÀg}þ`·í­Àg¯%ëÍ�Àr  rZ   )g7Ç;1[ÀgÛeì*éJÀg”Vw±Àg˜L¸¦ Àg<€É3¾ÂÀr&  )gÌNÏÝ¿g3%IQ¡`Ù?gZy¡†ÎŒ×¿gÊ€1‹1^Ö?gô3þ3t�Õ¿r‹   )gq«M0=Cã?g7ëïuTè¿g\ÜG`¡Èê?gþpâ�žvì¿g$ß.mÂí?)r    Úbi_zerosr   r   )rC   ÚbiÚbiarD   rD   rE   Ú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 )NrZ   gÒác¨q´Àg!·xÛùLð¿gMóŽSt$á?g ‘~û:pæ?rJ   )r    Úai_zerosr   r   )rC   ÚairD   rD   rE   Útest_ai_zeros:  s   
ýýzTestAiry.test_ai_zerosrÌ   c                 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Ã  rZ   r¿  r\   rS   r   r]   rP   )gÞu¨q´Àg‹qHkZÀg4µ¢Àg™é9Î–%ÀgB™~ôÊÆÀgÌL„ä˜"À)g ªæÛùLð¿gQö“Oü	ÀgMQnÈGÀg3þ:§Àg)Ê}Àg¥æîú À)r    r   rA   r˜  r   )rC   r   ÚzpÚai_zpxÚaip_zxÚai_zÚaip_zÚ_Úai_zpÚaip_zpÚai_envelopeÚaip_enveloperD   rD   rE   Útest_ai_zeros_bigA  ó"   þ
þ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£  rZ   r¿  r\   rS   r   r]   rP   )gx&„‡Çò¿gg†-÷2+
ÀgÁšÖð¬RÀggÑ`·í­Àgu•%ëÍ�Àg{¸àû À)g K;1[ÀgÂáì*éJÀg¬¯Vw±Àg<w¸¦ Àgd
Ê3¾ÂÀg/{Ô
"À)r    rœ  rA   r˜  r   )rC   r   r¤  Úbi_zpxÚbip_zxr©  Úbi_zÚbip_zÚbi_zpÚbip_zpÚbi_envelopeÚbip_enveloperD   rD   rE   Útest_bi_zeros_bigZ  r¯  zTestAiry.test_bi_zeros_bigN)r�  r‘  r’  rF   rI   rŸ  r¢  r“  r”  Ú	fail_slowr®  r¸  rD   rD   rD   rE   r–  ø  s    
!


r–  c                   @   ó   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  rZ   rí   r½  )r    ÚgenlaguerreÚassoc_laguerrer   )rC   Úa1Úa2rD   rD   rE   Útest_assoc_laguerreu  s
   z%TestAssocLaguerre.test_assoc_laguerreN)r�  r‘  r’  rÀ  rD   rD   rD   rE   r»  t  ó    r»  c                   @   rº  )ÚTestBesselpolyc                 C   ó   d S ©NrD   rB   rD   rD   rE   r¨   ~  ó   zTestBesselpoly.test_besselpolyN)r�  r‘  r’  r¨   rD   rD   rD   rE   rÂ  }  rÁ  rÂ  c                   @   sœ   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%S )&Ú
TestKelvinc                 C   ó   t  d¡}t|ddƒ d S )NrL   gŠ�®Tï?rÌ   )r    rœ   r   )rC   ÚmbeirD   rD   rE   r�   ƒ  ó   
zTestKelvin.test_beic                 C   rÇ  )NrL   gDïî,Xí?rÌ   )r    rŸ   r   )rC   ÚmbeiprD   rD   rE   r    ‡  rÉ  zTestKelvin.test_beipc                 C   rÇ  )NrL   g¦PAØ4è?rÌ   )r    r¢   r   )rC   ÚmberrD   rD   rE   r£   ‹  rÉ  zTestKelvin.test_berc                 C   rÇ  )NrL   gß×iiŽß¿rÌ   )r    r¤   r   )rC   ÚmberprD   rD   rE   r¥   �  rÉ  zTestKelvin.test_berpc                 C   ó"   t  d¡}t|tg d¢ƒdƒ d S )NrÌ   ©g&jjÙ@gðŠà+é"@g(›r…wÉ+@g¡„™¶U2@gŸ`<ƒÆ6@rJ   )r    Ú	bei_zerosr   r   )rC   r�  rD   rD   rE   Útest_bei_zeros“  s   
üzTestKelvin.test_bei_zerosc                 C   rÍ  )NrÌ   )g¼€yWo.@gâ•²£Ý� @g× �Âú{)@g¡K¾„11@g›Wc"¤5@r½  )r    Ú
beip_zerosr   r   )rC   ÚbiprD   rD   rE   Útest_beip_zerosœ  ó   
üzTestKelvin.test_beip_zerosc                 C   rÍ  )NrÌ   ©gÑ\§‘–Ê@gø6ýÙ�ô@gÓŸýHY'@g>"¦D0@ggaO;ü�4@rJ   )r    Ú	ber_zerosr   r   )rC   r¢   rD   rD   rE   Útest_ber_zeros¤  rÔ  zTestKelvin.test_ber_zerosc                 C   rÍ  )NrÌ   ©gÖ ˜£'@g»ÕsÒû%@gÇF ^×ï-@g´vÛ…æj3@gÌîÉÃBÝ7@rJ   )r    Ú
berp_zerosr   r   )rC   ÚbrprD   rD   rE   Útest_berp_zeros¬  rÔ  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 )NrL   r  r½  )r    r™  r   r¢   rœ   r•  r‘  r¤   rŸ   r—  r“  )rC   ÚmkelvrD   rD   rE   rš  ´  s   
ýýzTestKelvin.test_kelvinc                 C   rÇ  )NrL   g¬øàÓ>èÉ¿rÌ   )r    r‘  r   )rC   ÚmkeirD   rD   rE   r’  »  rÉ  zTestKelvin.test_keic                 C   rÇ  )NrL   grß@dª"Ì?rÌ   )r    r“  r   )rC   ÚmkeiprD   rD   rE   r”  ¿  rÉ  zTestKelvin.test_keipc                 C   rÇ  )NrL   gÜ™þU¥¿rÌ   )r    r•  r   )rC   ÚmkerrD   rD   rE   r–  Ã  rÉ  zTestKelvin.test_kerc                 C   rÇ  )NrL   gº^.n3J»¿rÌ   )r    r—  r   )rC   ÚmkerprD   rD   rE   r˜  Ç  rÉ  zTestKelvin.test_kerpc                 C   rÍ  )NrÌ   ©gþE�>Q@gB•š=° @gÆPN´«�)@gðmú³91@g
�×Ø%ª5@rJ   )r    Ú	kei_zerosr   r   )rC   r‘  rD   rD   rE   Útest_kei_zerosË  rÔ  zTestKelvin.test_kei_zerosc                 C   rÍ  )NrÌ   ©gÑW�f,º@gÉå?¤ßÎ"@g�FZ*o·+@gôOp±¢N2@gE¦aøÀ6@rJ   )r    Ú
keip_zerosr   r   )rC   r“  rD   rD   rE   Útest_keip_zerosÓ  rÔ  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Ì   rÕ  rJ   rÎ  )ç¬â�Ì#û?ç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    Úkelvin_zerosr   r   )
rC   ÚtmpÚberzÚbeizÚkerzÚkeizÚberpzÚbeipzÚkerpzÚkeipzrD   rD   rE   Útest_kelvin_zerosÜ  s4   
üüüüüúüüzTestKelvin.test_kelvin_zerosc                 C   rÍ  )NrÌ   )rç  rè  ré  rê  gD£;ˆ�q3@rJ   )r    Ú	ker_zerosr   r   )rC   r•  rD   rD   rE   Útest_ker_zeros
  rÔ  zTestKelvin.test_ker_zerosc                 C   rÍ  )NrÌ   rë  rJ   )r    Ú
kerp_zerosr   r   )rC   r—  rD   rD   rE   Útest_kerp_zeros  rÔ  zTestKelvin.test_kerp_zerosN)r�  r‘  r’  r�   r    r£   r¥   rÐ  rÓ  r×  rÛ  rš  r’  r”  r–  r˜  rã  ræ  rö  rø  rú  rD   rD   rD   rE   rÆ  ‚  s&    		.rÆ  c                   @   rº  )ÚTestBernoullic                 C   rÍ  )NrÌ   )r…   r`  g-!ôlVÅ?r›   g±áé•²¡¿r›   rJ   )r    Ú	bernoullir   r   )rC   ÚbrnrD   rD   rE   Útest_bernoulli  s   
ûzTestBernoulli.test_bernoulliN)r�  r‘  r’  rþ  rD   rD   rD   rE   rû    rÁ  rû  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 )NrZ   r…   ç33333YÀç¬÷N’~hçßà“©‚¡?é«   g6.8@rR   r   rÉ  rL   rJ   rP   rS   )r   r    Úbetar   r8  )rC   ÚbetÚbetgrD   rD   rE   Ú	test_beta+  s   ÿzTestBeta.test_betac                 C   s   t t t dd¡¡ƒ d S )NrO   rL   )r   r_   Úisinfr    r  rB   rD   rD   rE   Útest_beta_inf5  rH  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 )NrZ   r›   r   r  r  éª   gðIÊÀs	@rÈ  r   rÉ  rL   rJ   rR   rS   )r   r    Úbetalnr   r<  r   r˜  r  )rC   Úbetlnr  rD   rD   rE   Útest_betaln8  s   ÿÿzTestBeta.test_betalnN)r�  r‘  r’  Ú__doc__r  r	  r  rD   rD   rD   rE   rÿ  &  s
    
rÿ  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ej dejejg¡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¿  rZ   rZ   )r_   r   r   r    ÚbetaincÚ
betaincinvÚbetainccÚbetainccinvr
  rD   rD   rE   Ú
test_a1_b1I  s
   zTestBetaInc.test_a1_b1z
a, b, x, p))rL   rJ   gšÐ@wÔ?r„   )r  g     `e@r\   g°î*¶¯á?)r  r  g"YxãÃ;r¿  )g   `¥ù1?g    Ø¦Ag¯ª\Àa¼Y4g   €ý ï?)rJ   i�† gñ-ß‡)?gŽ;¥ƒõÿï?c                 C   ó<   t  |||¡}t||dd� t  |||¡}t||dd� d S )Nrè   rS   gê-�™—a=)r    r  r   r  ©rC   r™  rš  rô   r,  Úp1Úx1rD   rD   rE   Útest_betainc_betaincinv`  s   z#TestBetaInc.test_betainc_betaincinv))ç      @rÈ   r¿  g     ªê?)ç      @g     €*@ç      Ø?gòó&�¶Û?)ç      À?r  g333333Û?gF­Úo„êE?)r  ç      2@r%  gg2$·Zç?)r  r  g¬Zd;ßï?g•‡²ˆºœ�6)r  r7  r_  gâž�Ô`…<)ç      0@r_  gè£Ýÿÿÿï?g<dE­A¢>)g’áëßôÚ?g7–ûÃŠÐ@g¼Òô/3·J?çH¯¼šò×z>c                 C   r  )Nç›+¡†›„ö<rS   gVçž¯=)r    r  r   r  r  rD   rD   rE   Útest_betaincc_betainccinvu  s   z%TestBetaInc.test_betaincc_betainccinvza, b, y, ref))ç¢‰c§j,@r#  ghHçISOa gÚ­ù  ãY;)g      ,@g      -@g„ë‘¤Íg}äc]ì¶«;)rP  ç      .@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È  rS   )r    r  r   )rC   r™  rš  r  Úrefrô   rD   rD   rE   Útest_betaincinv_tiny_y‡  s   z"TestBetaInc.test_betaincinv_tiny_yÚfuncÚargs))rì   rL   r„   )r   rL   r„   )rß  ç       Àr„   )rß  r   r„   )rß  rÆ   ç333333Ó¿)rß  rÆ   çš™™™™™ñ?c              	   C   s|   t jdd��. tjt jdd�� t j|Ž  W d   ƒ n1 sw   Y  W d   ƒ d S W d   ƒ d S 1 s7w   Y  d S )NÚraise)Údomainr-  ©Úmatch)r    Úerrstater“  r   ÚSpecialFunctionErrorr  )rC   r'  r(  rD   rD   rE   Útest_betainc_domain_errors£  s   ÿÿ"ÿz&TestBetaInc.test_betainc_domain_errorsÚdtypec                 C   sL   t jdg|d�}t jdg|d�}t |||¡}t||dt  |¡j d� d S )Nr’   ©r3  r„   r&  rS   )r_   r   r    r  r   r   Úeps)rC   r3  r™  rô   r  rD   rD   rE   Útest_gh21426­  s   zTestBetaInc.test_gh21426N)r�  r‘  r’  r  r  r“  r”  Úparametrizer  r"  r&  r    r  r  r  r  r2  r_   rï   rñ   r6  rD   rD   rD   rE   r  D  s0    þ

ÿ
þ
	ÿr  c                   @   sT   e Zd Zdd„ Zdd„ Zdd„ Zejjdd„ ƒZ	d	d
„ Z
dd„ Zejj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shJ ‚d S )Nr&  r‹   rJ   ç      ^@g     @j@T©Úexactéx   )r;  Ú
repetitionéÜ   c                 S   s   g | ]
}t jd |dd�‘qS )ro   Tr:  )r    Úcomb©Ú.0ri   rD   rD   rE   Ú
<listcomp>½  s    z/TestCombinatorics.test_comb.<locals>.<listcomp>r‹  ro   rè   ©r^   rZ   l   hU7`�±Së?Q rÄ  é2   )
r   r    r?  r   ru   Úlistr_   Úiinfort   Úmax)rC   Úiir!  rD   rD   rE   Ú	test_comb·  s   ÿzTestCombinatorics.test_combc                 C   sL   d}d}t  |¡}t  |¡}tj||dd�}tj||dd�}||ks$J ‚d S )NéF   rV   Tr:  )r_   Úint64r    r?  )rC   rh   ri   Únp_nÚnp_kÚres_npÚres_pyrD   rD   rE   Útest_comb_with_np_int64Æ  s   

z)TestCombinatorics.test_comb_with_np_int64c                 C   óz   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 )NrL   r‹   Tr:  r   rO   F©rL   rO   rL   r&  ©r‹   r‹   rO   r‹   )r›   r›   r›   r9  )r   r    r?  r   rB   rD   rD   rE   Útest_comb_zerosÏ  ó
   "z!TestCombinatorics.test_comb_zerosc                 C   sF   d}t j|d�� tjdddd� W d   ƒ d S 1 sw   Y  d S )Nz`exact=True`r.  rM  rJ   Tr:  )r“  Údeprecated_callr    r?  )rC   ÚmsgrD   rD   rE   Útest_comb_exact_non_int_depÖ  s   "ÿz-TestCombinatorics.test_comb_exact_non_int_depc                 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&  r‹   rJ   ç     €†@g     °³@Tr:  iÐ  )r   r    Úpermr   r   rB   rD   rD   rE   Ú	test_permÜ  s   zTestCombinatorics.test_permc                 C   rQ  )NrL   r‹   Tr:  r   rO   FrR  rS  )r›   r›   r›   rY  )r   r    rZ  r   rB   rD   rD   rE   Útest_perm_zerosá  rU  z!TestCombinatorics.test_perm_zerosc                 C   s>  t jtdd�� tjddgddgdd� W d   ƒ n1 sw   Y  t jd	d�� tjd
ddd� W d   ƒ n1 s<w   Y  t jd	d�� tjdddd� W d   ƒ n1 sZw   Y  t jd	d�� tjdddd� W d   ƒ n1 sxw   Y  t jtd	d�� tjdd
dd� W d   ƒ d S 1 s˜w   Y  d S )Nzscalar integersr.  rZ   rL   rJ   rÌ   Tr:  zNon-integergffffff@rP   gffffffÀr‹   g333333Àç      @)r“  r   Ú
ValueErrorr    rZ  rV  rB   rD   rD   rE   Útest_perm_ivè  s   ÿÿÿÿ"ÿzTestCombinatorics.test_perm_ivN)r�  r‘  r’  rI  rP  rT  r“  r”  Úthread_unsaferX  r[  r\  r_  rD   rD   rD   rE   r8  ¶  s    	
r8  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   ó   t  d¡}d}t||ƒ d S )Né   rÈ   )r    r¯   r   )rC   ÚcbÚcbrlrD   rD   rE   r°   þ  ó   
zTestTrigonometric.test_cbrtc                 C   ó   t  d¡}d}t||dƒ d S )Ngfffffæ;@géŽ–š…C@r½  )r    r¯   r   )rC   Úcb1Úcbrl1rD   rD   rE   Útest_cbrtmore  ó   
zTestTrigonometric.test_cbrtmorec                 C   ó&   t  d¡}ttd ƒ}t||dƒ d S )NrY  rÆ   r½  ©r    rÚ   r	   r   r   )rC   ÚcdgÚcdgrlrD   rD   rE   rÛ     ó   
zTestTrigonometric.test_cosdgc                 C   rl  ©NrV   r]  r½  rm  )rC   ÚcdgmÚcdgmrlrD   rD   rE   Útest_cosdgmore  rp  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&  rZ   r½  )r    rÜ   r   r	   r   )rC   ÚcsÚcsrlrD   rD   rE   rÝ     s    &zTestTrigonometric.test_cosm1c                 C   ó*   t  d¡}ttd ƒd }t||dƒ d S )NrV   r]  rO   r½  ©r    rà   r
   r   r   )rC   ÚctÚctrlrD   rD   rE   rá     ó   
zTestTrigonometric.test_cotdgc                 C   rw  )Nrß   r  rO   r½  rx  )rC   Úct1Úctrl1rD   rD   rE   Útest_cotdgmore  r{  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ß   r…   é   éÓÿÿÿrì   rY  r›   i¦ÿÿÿé‡   éyÿÿÿéá   éÿÿÿi  iòþÿÿé;  éÅþÿÿiý  )r   r    rà   rB   rD   rD   rE   Útest_specialpoints!  s   z$TestTrigonometric.test_specialpointsc                 C   s&   t t dg¡dƒ tt d¡dƒ d S )Nr   rZ   r›   r…   )r   r    Úsincr   rB   rD   rD   rE   Ú	test_sinc0  s   zTestTrigonometric.test_sincc                 C   ó   t  d¡}t|dƒ d S rX  )r    rZ  r   )rC   ÚsnrD   rD   rE   r[  5  ó   
zTestTrigonometric.test_sindgc                 C   óH   t  d¡}ttd ƒ}t||dƒ t  d¡}ttd ƒ}t||dƒ d S )NrV   r]  r½  rß   r  )r    rZ  r   r   r   )rC   ÚsnmÚsnmrlÚsnm1Úsnmrl1rD   rD   rE   Útest_sindgmore9  ó   

z TestTrigonometric.test_sindgmoreN)r�  r‘  r’  r°   rj  rÛ   rt  rÝ   rá   r~  r‡  r‰  r[  r’  rD   rD   rD   rE   ra  ý  s    ra  c                   @   ó$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú	TestTandgc                 C   rl  rq  ©r    r}  r
   r   r   )rC   ÚtnÚtnrlrD   rD   rE   r~  D  rp  zTestTandg.test_tandgc                 C   r�  )Nrß   r  r½  rá  rÈ   r–  )rC   ÚtnmÚtnmrlÚtnm1Útnmrl1rD   rD   rE   Útest_tandgmoreI  r“  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ß   r…   r€  rì   r�  r‚  r¼  iLÿÿÿrƒ  r„  r…  r†  )r   r    r}  rB   rD   rD   rE   r‡  Q  s   zTestTandg.test_specialpointsN)r�  r‘  r’  r~  r�  r‡  rD   rD   rD   rE   r•  B  s    r•  c                   @   óT   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.r„   N)r    r  r_   rÎ   rB   rD   rD   rE   Útest_ellipj_nan`  s   zTestEllip.test_ellipj_nanc                 C   s0   t  dd¡}tdƒtdƒddg}t||dƒ d S )Nrí   r   r…   é   )r    r  r   r	   r   )rC   ÚelÚrelrD   rD   rE   r  d  ó   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›   r…   rL   rO   éöÿÿÿg­Õü�ÒNé?)
r    r"   r   r   r#   r_   r   r   rÎ   r   )rC   ÚelkrD   rD   rE   r  i  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 )NrL   rí   r{   ro   r¼  rß   gëfo¾Khé?r½  r›   r…   r   r„   g–±t½„ñØ?rZ   rM   rÈ  rS   ç6<½R–!ù?r¥  gfäO¨•Né?)r    r  r   r"   r   r   r   r_   r   rÎ   r   )rC   Úelkincr¦  ÚalphaÚphirÁ  rD   rD   rE   r  t  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&  rZ   gV»^»8jð?g,j6êÆ„@rL   )	r_   Ú	nextafterru   Úappendr    r  r   Ú	full_liker   ©rC   Úmbadrª  rÁ  ÚmvalsÚjrø  Úf1rD   rD   rE   Útest_ellipkinc_2‘  ó   
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  rL   Frc  rZ   rŒ  rS   )r_   rq   rÔ  r   r   r    r  Úarcsinhr
   r   r   )rC   ÚxlogÚxlinÚxlin2rD   rD   rE   Ú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›   rL   r…   r¥  g?egô@)	r    r!   r   r   r   r_   r   rÎ   r   )rC   ÚelerD   rD   rE   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 )NrL   rí   r  é4   r¼  é#   g�'ˆÉÒâ?r½  r›   r…   r   r„   r§  r¥  g¢‚‰çL@)r    rý   r   r!   r   r   r   r_   r   rÎ   r   )rC   Úeleincr¼  r©  rª  rÁ  rD   rD   rE   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&  rZ   gà%‰¤�ë?rL   gXo«�óÆ
@rJ   )	r_   r­  ru   r®  r    rý   r   r¯  r   r°  rD   rD   rE   Útest_ellipeinc_2Û  r¶  zTestEllip.test_ellipeinc_2N)r�  r‘  r’  r   r  r  r  rµ  r»  rü   rþ   rÀ  rD   rD   rD   rE   rŸ  _  s    rŸ  c                   @   sN   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Ze	j
jdd�dd„ ƒZdS )ÚTestEllipCarlsonz³Test for Carlson elliptic integrals ellipr[cdfgj].
    The special values used in these tests can be found in Sec. 3 of Carlson
    (1994), https://arxiv.org/abs/math/9409227
    c                 C   sÆ   t tddƒdƒ tdtƒdksJ ‚ttddƒƒsJ ‚tdtdtƒƒdks&J ‚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|Ž || ƒ qSd S )NrZ   r›   r   r¿  g      @rÆ   r  ù       €      ð¿r)  rì   y
cÝƒÅñ?
cÝƒÅñ¿y=‹€Bžó?C†GÀÖ¿rÈ   yæª fŸãè?P×9lµbÉ?)
r   r$   r   r   r  r   r_   r   r   Ú	enumerate©rC   r(  Úexpected_resultsry   ÚarrrD   rD   rE   Ú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ƒ¡s)J ‚t tddtddƒƒ¡s7J ‚t tddtddƒƒ¡sEJ ‚ttddt tj¡j	 d ƒƒsWJ ‚ttddtddƒƒƒsdJ ‚t
g d	¢g d
¢g d¢g d¢g d¢g d¢gƒ}t
g d¢ƒ}t|ƒD ]\}}t t|Ž || ƒ q„d S )NrZ   r   rL   rÈ   gÌ`C•+ã?r›   rÆ   rO   )r›   rÆ   r…   ©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   r_   r  r  r   r   rñ   Útinyr   rÃ  rÄ  rD   rD   rE   Ú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sJ ‚t tdddƒ¡s'J ‚ttdddƒƒs1J ‚tttƒddƒdks=J ‚ttddtt dƒƒƒsKJ ‚tg d¢g d¢g d	¢g d
¢g d¢g d¢g d¢gƒ}tg d¢ƒ}t|ƒD ]\}}t t|Ž || ƒ qnd S )NrZ   r   rL   g°PŸOùùô?r›   rO   )r…   rÆ   r›   )r  rÂ  r›   )r„   r…   r›   ©rË  r  r›   rÈ  rÉ  )rË  r  ù      ð?      ð¿)geQŸOùùô?çÊžu5Jªý?rÐ  yp\©óÜyé?õª¯øôkó¿g2åÎ°â?gHw‹îÐ´ð?y­‘|pFî?-6Fjá¿)	r   r&   r   r_   r  r   r  r   rÃ  rÄ  rD   rD   rE   Ú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ƒ¡s&J ‚t tttƒddƒ¡s3J ‚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|Ž || ƒ qXd S )NrZ   r   r„   )r›   r  r  rÈ  rÊ  rÎ  )rÂ  rË  r  )r›   g8øÂdª`´?r  gˆL+©›û?g’Þ}�^Û?yæ—®û0•Ü?Ê‹µêW¥æ?yjèN”×?Ó^ßì·ÒÙ?géÈ£tð?)	r   r'   r_   r  r   r  r   r   rÃ  rÄ  rD   rD   rE   Útest_elliprg6  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ƒƒs+J ‚tdddtƒdks6J ‚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 )NrZ   r›   r   rO   )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…   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Ä  rD   rD   rE   Útest_elliprjK  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ì|â>r!  r5  rÉ  g   àÀ,@g    ¥xÛ=g   @§e•:g   `Ý½Ø>gî(óHœR)A)r   r(   rB   rD   rD   rE   Útest_elliprj_hardf  s    ýûý
ûz"TestEllipCarlson.test_elliprj_hardN)r�  r‘  r’  r  rÇ  rÍ  rÑ  rÒ  rÕ  r“  r”  r•  rÖ  rD   rD   rD   rE   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ì   r…   rÅ   rÆ   rO   r›   )r_   r   Úm_n1_1r   r   ÚminÚmax_negÚlog2Ú
very_neg_mÚconcatenateÚ
ms_up_to_1rB   rD   rD   rE   Úsetup_class|  s   ÿ
þ
þz.TestEllipLegendreCarlsonIdentities.setup_classc                 C   s$   | j }tt|ƒtdd| dƒƒ dS )z5Test identity:
        K(m) = R_F(0, 1-m, 1)
        r›   r…   N)rÞ  r   r"   r&   ©rC   rÁ  rD   rD   rE   Útest_kˆ  s   z)TestEllipLegendreCarlsonIdentities.test_kc                 C   s>   t tƒj}|dtdt |¡ ƒ  }tt|ƒtd|dƒƒ dS )z\Test identity:
        K(m) = R_F(0, 1-m, 1)
        But with the ellipkm1 function
        rÆ   r›   r…   N)	r   r   rÌ  r   r_   rÛ  r   r#   r&   )rC   rÌ  Úm1rD   rD   rE   Ú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›   r…   N)rÞ  r   r!   r'   rà  rD   rD   rE   Útest_eš  s   "z)TestEllipLegendreCarlsonIdentities.test_eN)r�  r‘  r’  r  rß  rá  rã  rä  rD   rD   rD   rE   r×  v  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   rÇ  )Nr¿  g)‘;âT¯Ñ?r½  )r    r  r   )rC   ÚerrD   rD   rE   r	  ¤  rÉ  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'>@rJ   )r    Ú	erf_zerosr   r   )rC   ÚerzÚerzrrD   rD   rE   Útest_erf_zeros¨  s   
zTestErf.test_erf_zerosr   c                 C   sü   t j d¡}d}| d|¡d| dd|¡ d  }| d|¡d| dd|¡ d  }|d|  }	t jdd	��> ||	ƒ}
||ƒj}t  |
¡}|
| }
|	| }	t  |¡}|| }|| }t||
|	||d
� t|||||d
� W d   ƒ d S 1 sww   Y  d S )NrU   rÞ  g{®Gáz”?rL   r   rZ   r  Úignore©ÚallrÉ  )	r_   re   rf   ÚparetoÚrandintr0  r   Úisfiniter9   )rC   r'  Ú
other_funcrT   r^   rl   rh   rô   r  r   rŽ  Úw_realÚmaskrD   rD   rE   Ú_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 rs   ©r@   r  ©r   rD   rD   rE   Ú<lambda>Ë  s    z.TestErf.test_erfc_consistent.<locals>.<lambda>r   rÈ  rÉ  )rô  r@   r  rB   rD   rD   rE   Útest_erfc_consistentÈ  s   
üzTestErf.test_erfc_consistentc                 C   ó   | j tjdd„ dd� d S )Nc                 S   s   t  | |  ¡t | ¡ S rÄ  )r_   r   r@   r  rö  rD   rD   rE   r÷  Ó  s    z/TestErf.test_erfcx_consistent.<locals>.<lambda>r   rS   )rô  r@   ÚerfcxrB   rD   rD   rE   Útest_erfcx_consistentÐ  ó
   
ýzTestErf.test_erfcx_consistentc                 C   rù  )Nc                 S   s   dt  d|  ¡ S )NrÂ  r  rõ  rö  rD   rD   rE   r÷  Ú  s    z.TestErf.test_erfi_consistent.<locals>.<lambda>r   rS   )rô  r@   ÚerfirB   rD   rD   rE   Útest_erfi_consistent×  rü  zTestErf.test_erfi_consistentc                 C   rù  )Nc                 S   s&   t tƒd t |  |  ¡ t | ¡ S rˆ  )r   r   r_   r   r@   rý  rö  rD   rD   rE   r÷  á  s   & z/TestErf.test_dawsn_consistent.<locals>.<lambda>r   rS   )rô  r@   râ   rB   rD   rD   rE   Útest_dawsn_consistentÞ  rü  zTestErf.test_dawsn_consistentc                 C   ó6   t jt j t jg}t jddg}tt |¡|dd� d S )NrO   rZ   rè   rS   )r_   rÎ   r   r   r    r  ©rC   rB  r!  rD   rD   rE   Útest_erf_nan_infå  ó   zTestErf.test_erf_nan_infc                 C   r   )NrL   r   rè   rS   )r_   rÎ   r   r   r    r  r  rD   rD   rE   Útest_erfc_nan_infê  r  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è   rS   )r_   rÎ   r   r   r    rú  r  rD   rD   rE   Ú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è   rS   )r_   rÎ   r   r   r    rý  r  rD   rD   rE   Útest_erfi_nan_infô  s   zTestErf.test_erfi_nan_infc                 C   r   )Nr@  r›   rè   rS   )r_   rÎ   r   r   r    râ   r  rD   rD   rE   Útest_dawsn_nan_infù  r  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è   rS   )r_   rÎ   r   r   r    r�  r  rD   rD   rE   Ú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  rD   rD   rD   rE   rå  ¢  s    
	rå  c                   @   rº  )Ú	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 ]}|d rNt|| ƒ |d| < q<t|| ƒ|d| < q<tjdd�� t|| | ƒ}t	|ƒ}	W d   ƒ n1 svw   Y  t
|	ddƒ d S )Nr   rZ   rL   rè   rS   )rZ   r   rO   rë   )rZ   rZ   rÌ   é=   ii  iYÅ  i­=) iÕâl   Q~¥ l   10ÿ[¿l   Õ$8gC
 l   í2�¼³l   ¹vö}Ju: )rä   Údr¡  rë  rì  r›   r  )r    Úeulerr   r   ru   rv   r_   r0  r   rG  r   )
rC   Úeu0Úeu1Úeu2Úeu24Ú	mathworldÚcorrectri   ÚerrÚerrmaxrD   rD   rE   Ú
test_euler  s$   





þzTestEuler.test_eulerN)r�  r‘  r’  r  rD   rD   rD   rE   r	    rÁ  r	  c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚTestExpc                 C   rb  )NrL   rJ   )r    r  r   ©rC   ÚexÚexrlrD   rD   rE   r    rf  zTestExp.test_exp2c                 C   rg  )Nr  gÍ;fž @r½  )r    r  r   ©rC   ÚexmÚexmrlrD   rD   rE   Útest_exp2more#  rk  zTestExp.test_exp2morec                 C   rb  )NrL   rÄ  )r    r  r   r  rD   rD   rE   r  (  rf  zTestExp.test_exp10c                 C   rg  )Nr  gY—úí¤Ãs@r½  )r    r  r   r  rD   rD   rE   Útest_exp10more-  rk  zTestExp.test_exp10morec                 C   óN   t  d¡t  d¡t  d¡f}tdƒd tdƒd tdƒd f}t||dƒ d S )NrL   r‹   rJ   rZ   r½  ©r    r  r   r   r  rD   rD   rE   r  2  ó   "zTestExp.test_expm1c                 C   r  )NrL   çÍÌÌÌÌÌ @çš™™™™™@rZ   r½  r   )rC   Úex1Úexrl1rD   rD   rE   Útest_expm1more7  r!  zTestExp.test_expm1moreN)	r�  r‘  r’  r  r  r  r  r  r&  rD   rD   rD   rE   r    s    r  c                    sÞ   ‡ fdd„}dd„ }t | ƒt |ƒu s J dt | ƒ› dt |ƒ› �ƒ‚t| tjƒrJ| j|jks.J ‚|| |ƒ t|  ¡ | ¡ ƒD ]\}}t||ˆ d� q<d	S t | ¡rht |¡rht	t | ƒdƒrh|| ƒoe||ƒ d	S  d	S || |ƒ d	S )
aÄ  
    Sharper assertion function that is stricter about matching types, not just values

    This is useful/necessary in some cases:
      * dtypes for arrays that have the same _values_ (e.g. element 1.0 vs 1)
      * distinguishing complex from real NaN
      * result types for scalars

    We still want to be able to allow a relative tolerance for the values though.
    The main logic comparison logic is handled by the xp_assert_* functions.
    c                    s(   ˆ d u rt | |ƒ d S t| |ˆ d� d S )NrS   )r3   r2   ©rô   r  rS   rD   rE   Úassert_funcI  s   (z(assert_really_equal.<locals>.assert_funcc                 S   s    t  | j¡rt  | j¡sJ ‚d S rÄ  )r_   r   r   r  ©rô   rD   rD   rE   Úassert_complex_nanL  ó    z/assert_really_equal.<locals>.assert_complex_nanztypes not equal: z, rS   r²  N)
ÚtypeÚ
isinstancer_   Úndarrayr3  Úziprd   Úassert_really_equalr   r7   )rô   r  rT   r(  r*  Úelem_xÚelem_yrD   rS   rE   r0  =  s   ,
ÿ"r0  c                   @   sr  e Zd Zdd„ Zej dg d¢¡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g d¢¡dd„ ƒZ
ej dddg¡ej dg d¢¡dd„ ƒƒZej dd
dg¡ej dddg¡ejjdeje d¡ejejd  e d¡ejejd ej ej d d e d!¡g
g d"¢d#�ej d$ejejejg¡d%d&„ ƒƒƒƒZej ddd'ejd(g¡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 d0d eejejejejejej ej!ej"g
¡ej d1edd-ƒ¡d2d3„ ƒƒƒZ#ej d	d
dg¡ej d4ed,d-ƒ¡d5d6„ ƒƒZ$ej d0ejej ej!ej"g¡ej dg d¢¡d7d8„ ƒƒZ%ej ded9d:d;ƒ¡d<d=„ ƒZ&ej de'edd>ƒƒe'ed9d:d;ƒƒ ¡d?d@„ ƒZ(dAdB„ Z)dCdD„ Z*ej d0ejejeje+g¡ej dddg¡ej d	d
dg¡ej d1edd-ƒ¡ejjdEg d,gd'gejgejejd  gejd,ggg dF¢d#�dGdH„ ƒƒƒƒƒZ,ej dddg¡ej d	d
dg¡ejjdd,d'dIejejejd  d gg dJ¢d#�dKdL„ ƒƒƒZ-ej ded9d:dMƒ¡dNdO„ ƒZ.ej de'edd>ƒƒe'ed9d:dMƒƒ ¡dPdQ„ ƒZ/dRdS„ Z0ej d0ejejeje+g¡ej dddg¡ej d	d
dg¡ej d1edd-ƒ¡ejjdEg d,gd'gejgejejd  gejd,ggg dF¢d#�dTdU„ ƒƒƒƒƒZ1ej dddg¡ej d	d
dg¡ejjdd,d'dIejejejd  d gg dJ¢d#�dVdW„ ƒƒƒZ2ej dXed,d-ƒ¡ej dedYdZd[ƒ¡d\d]„ ƒƒZ3ej dXe'ed,d-ƒƒd;dZg ¡ej de'edd>ƒƒe'ed>d^dMƒƒ ¡d_d`„ ƒƒZ4dadb„ Z5ej d0ejejeje+g¡ej dddg¡ej d	d
dg¡ej d1edd-ƒ¡ejjdEg d,gd'gejgejejd  gejd,ggg dF¢d#�dcdd„ ƒƒƒƒƒZ6ej dddg¡ej d	d
dg¡ej dXed,d-ƒ¡ejjdd,d'dIejejejd  d gg dJ¢d#�dedf„ ƒƒƒƒZ7ej dd
dg¡ej dg d¢¡ej dXdgdhddidd'ejg¡djdk„ ƒƒƒZ8ej dd
dg¡ej dg d¢¡ejjdXd(e d!¡gd(dlgd#�dmdn„ ƒƒƒZ9ej dg d¢¡ej dXed,doƒ¡dpdq„ ƒƒZ:drds„ Z;d S )tÚTestFactorialFunctionsc                 C   st   |r
t j||dd�S |dkrt ||¡nd}t ||| | ¡t  || d ¡ t  || d ¡ }|t |d¡ S )NT©ri   r;  ÚzerorZ   )r    Ú
factorialkr_   ÚmodÚpowerr8  rK  Úmaximum)rC   rh   ri   r;  ÚextendÚrrB  rD   rD   rE   Úfactorialk_refb  s
   8z%TestFactorialFunctions.factorialk_refzexact,extend))Tr5  )Fr5  )Fr  c                 C   s`   ||dœ}t  tjdi |¤Ž¡sJ ‚t  tjdi |¤Ž¡sJ ‚t  tjdddi|¤Ž¡s.J ‚d S )N©r;  r:  rZ   ri   r‹   ©rZ   )r_   Úisscalarr    Ú	factorialÚ
factorial2r6  )rC   r;  r:  ÚkwrD   rD   rE   Ú"test_factorialx_scalar_return_typek  s   
"z9TestFactorialFunctions.test_factorialx_scalar_return_typerh   )rO   r­  éýÿÿÿr;  TFc                 C   sX   d|i}t tj|fi |¤Ždƒ t tj|fi |¤Ždƒ t tj|fddi|¤Ždƒ d S )Nr;  r   ri   r‹   )r   r    r@  rA  r6  )rC   r;  rh   rB  rD   rD   rE   Ú$test_factorialx_negative_extend_zeros  s    z;TestFactorialFunctions.test_factorialx_negative_extend_zeroc                 C   sŒ   d|i}d}g d¢}t jg d¢|rtnt jd�}ttj|fi |¤Ž||d� ttj|fi |¤Ž||d� ttj|fddi|¤Ž||d� d S )	Nr;  rè   )éûÿÿÿr>  r   rZ   )r   r   rZ   rZ   r4  rS   ri   r‹   )	r_   r   Ú
native_intrñ   r0  r    r@  rA  r6  )rC   r;  rB  rT   rh   r!  rD   rD   rE   Ú*test_factorialx_negative_extend_zero_array{  s   $zATestFactorialFunctions.test_factorialx_negative_extend_zero_array©gš™™™™™ñ¿gš™™™™™Àgffffff
Àc                 C   s  ddi}ddddœ}ddd	dœ}d
dddœ}d}t tj|fi |¤Ž|| |d� t tj|fi |¤Ž|| |d� t tj|fddi|¤Ž|| |d� t tj|gfi |¤Žd || |d� t tj|gfi |¤Žd || |d� t tj|gfddi|¤Žd || |d� d S )Nr:  r  gRc/a_%Àg:\Oag@g*BZ'÷¿rI  go	08G)ñ?goíNb]ÒÀg¢MxcQÞï¿g¡N«yŠç?g†=uÌò?gÙ7ÁKÓÀç [n‡ë<rS   ri   r‹   r   )r   r    r@  rA  r6  )rC   rh   rB  Úexp_1Úexp_2Úexp_krT   rD   rD   rE   Ú'test_factorialx_negative_extend_complex†  s(   þþþ  $&&.z>TestFactorialFunctions.test_factorialx_negative_extend_complexr  r   r  Ún_outerc                    s4   ddi‰ ‡ fdd„}||| ƒ |d| | ƒ d S )Nr:  r  c                    s8  t t| ƒdƒ}t d¡}|rt d¡nt d¡}ttj| fi ˆ ¤Ž|ƒ ttj| d fi ˆ ¤Ž|ƒ ttj	| d fddiˆ ¤Ž|ƒ d}ttj	| | fd|iˆ ¤Ž|ƒ ttj| gfi ˆ ¤Žd |ƒ ttj| d gfi ˆ ¤Žd |ƒ ttj	| d gfddiˆ ¤Žd |ƒ ttj	| | gfd|iˆ ¤Žd |ƒ d S )	Nr²  únan+nanjrÎ   rL   r‹   ri   y      ø?       Àr   )
r7   r,  r_   Ú
complex128rñ   r0  r    r@  rA  r6  )rh   Ú
complexifyÚcomplex_nanr   r²  ©rB  rD   rE   Ú_checkž  s   
  "&*zTTestFactorialFunctions.test_factorialx_negative_extend_complex_poles.<locals>._checki † rD   )rC   rO  r  rU  rD   rT  rE   Ú-test_factorialx_negative_extend_complex_polesš  s   zDTestFactorialFunctions.test_factorialx_negative_extend_complex_polesÚboxedr:  r5  r  rÎ   r  rP  NÚnat)
ÚNaNznp.float64('nan')ú	NaN+i*NaNznp.complex128('nan+nanj')r   zinf+0iz-infz-inf+0iÚNoneÚNaT)ÚidsÚ
factorialxc                 C   s¸  d|dœ}|t jkrd|d< |rg d¢ndddtd ƒg}|t jkr#dnddg}tt|ƒ|ƒsUtjtd	d
�� ||r<|gn|fi |¤Ž W d   ƒ d S 1 sNw   Y  d S tt|ƒ|ƒr‡|dkr‡tjtdd
�� ||rn|gn|fi |¤Ž W d   ƒ d S 1 s€w   Y  d S |dko‘tt|ƒdƒ}|r™t 	d¡nt 
d¡}	tt|ƒdƒrÀt |¡rÀt 
|dkr²dnd¡}
|dkr¾t 
d¡n|
}	|rÍ||gfi |¤Žd n||fi |¤Ž}t||	ƒ d S )NFr=  r‹   ri   ©ry   rø  r²  ry   rø  r²  úUnsupported data type.*r.  r  úIn order to use non-integer.*rP  rÎ   r5  r   r   )r    r6  r,  r@  r7   r“  r   r^  r_   rQ  rñ   r  r0  )rC   r^  rh   r:  rW  rB  Úpermissible_typesÚtypes_need_complex_extrR  r!  Úneg_inf_resultr  rD   rD   rE   Útest_factorialx_inf_nan¶  s(   

"ÿ"ÿ*z.TestFactorialFunctions.test_factorialx_inf_nanr+  Ústringc                 C   s¾   t jtdd�� tjd|d� W d   ƒ n1 sw   Y  t jtdd�� tjd|d� W d   ƒ n1 s7w   Y  t jtdd�� tjddd|d� W d   ƒ d S 1 sXw   Y  d S )Nzargument `extend` must be.*r.  rZ   )r:  r‹   T©ri   r;  r:  )r“  r   r^  r    r@  rA  r6  )rC   r:  rD   rD   rE   Útest_factorialx_raises_extendè  s   ÿÿ"ÿz4TestFactorialFunctions.test_factorialx_raises_extendÚlevelsrZ   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 )NrZ   c                    s   |dkr| S ˆ | | g|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   rZ   rD   ©rô   ri   ©Ú_nest_merD   rE   rl  ô  s   zDTestFactorialFunctions.test_factorialx_array_shape.<locals>._nest_mec                    s4   t jˆ |ˆd�td�}t|  t j¡| t j¡ƒ d S )N©ri   r4  )r_   r   Úobjectr   rî   rñ   )ÚresÚnucleusr   ©rl  ri  rD   rE   rU  	  s   zBTestFactorialFunctions.test_factorialx_array_shape.<locals>._checkrÌ   rä   rm  r<  r{   Tr:  r&  r‹   rú  rL   r>  )r_   r   Úmathr@  r    rA  r6  )rC   ri  r;  rU  rh   Úexp_nucleusrD   rq  rE   Útest_factorialx_array_shapeñ  s   ýz2TestFactorialFunctions.test_factorialx_array_shaper3  Údimc                 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Ì   )r3  Úndminr<  r{   r&  rú  r:  rZ   ©rv  rL   r‹   )r_   r   r   r    r@  rA  r6  )rC   ru  r3  r;  rh   r   rD   rD   rE   Útest_factorialx_array_dimension	  s   ÿÿÿz6TestFactorialFunctions.test_factorialx_array_dimensionÚlevelc                    s¤   d‡ fdd„	‰ ˆ dg|d d�}dddd	œ}|rt 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 )NrZ   c                    s   |dkr| S ˆ | g|d ƒS r   rD   rj  rk  rD   rE   rl  $	  s   zCTestFactorialFunctions.test_factorialx_array_like.<locals>._nest_merÌ   rm  r<  r{   r&  rú  r:  rw  rL   r‹   r>  )r   r   r    r@  r_   r   rA  r6  )rC   ry  r;  rh   rs  r(  rD   rk  rE   Útest_factorialx_array_like!	  s   ÿÿÿz1TestFactorialFunctions.test_factorialx_array_likec                    sh   ||dœ‰|r	t nt‰ ‡ ‡fdd„}||dƒƒ ||dƒƒ |tjd|d�ƒ |tjddg|d�ƒ d S )Nr=  c                    s    t | tjƒr|  tj¡nt | ¡}ˆ tj| fi ˆ¤Žtj|fi ˆ¤Žƒ ˆ tj| fi ˆ¤Žtj|fi ˆ¤Žƒ ˆ tj| fddiˆ¤Žtj|fddiˆ¤Žƒ d S )Nri   r‹   )	r-  r_   r.  rî   rK  r    r@  rA  r6  )rh   Ún_ref©r(  rB  rD   rE   rU  ;	  s   "&&ÿz;TestFactorialFunctions.test_factorialx_uint.<locals>._checkr   rZ   r4  )r   r   r_   r   )rC   r;  r:  r3  rU  rD   r|  rE   Útest_factorialx_uint4	  s   
z+TestFactorialFunctions.test_factorialx_uintrV   r¼  r&  c                 C   óh   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;   ç´àø¤tã0=rè   Tr:  FrS   )ÚsysÚplatformr   rv   r    r@  rî   ©rC   rh   rT   rD   rD   rE   Útest_factorial_accuracyG	  ó   ÿ
ÿz.TestFactorialFunctions.test_factorial_accuracyé   c                 C   sÔ   t  |¡}t|tj|dd�ƒ t|tj|gdd�d ƒ tjdkr#dnd}t|ƒ}t|tj|dd�|d� t|tj|gdd�d |d� dd	d
œ}t|tj|fi |¤Ž|d� t|tj|gfi |¤Žd |d� d S )NTr:  r   r;   ç›+¡†›„6=rè   FrS   r  r=  )rr  r@  r   r    r€  r�  rv   r   ©rC   rh   r  rT   rB  rD   rD   rE   Útest_factorial_int_referenceS	  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 jdkrdnd}tt | ¡||d� tt | g¡d ||d� tjtdd�� tj| dd	� W d   ƒ n1 s9w   Y  tjtdd�� tj| gdd	� W d   ƒ d S 1 sYw   Y  d S )
Nr;   r†  rè   rS   r   ú`exact=True` only supports.*r.  Tr:  )r€  r�  r   r    r@  r“  r   r^  )rh   r!  rT   rD   rD   rE   rU  g	  s   ÿ"ÿzETestFactorialFunctions.test_factorial_float_reference.<locals>._checkrÅ   gŒê�r„Ñï?gÃõ(\�Âñ?gö“þ÷cÓð?g333333@g»”ð�4¯s@g333333&@gù¿ÀÞ‰OˆAçfffff¦@@g çÈ	Â²Gg     ÀK@gC$¡ŠÇÓJOgÍÌÌÌÌlS@gæØ á}â³Wgš™™™™ùX@gXÖ>Ü%±`g’\þCúSe@gG=ÂüïrD   ©rC   rU  rD   rD   rE   Útest_factorial_float_referencef	  s   







z5TestFactorialFunctions.test_factorial_float_referencec                 C   sH   dd„ }|ddd� |ddd� |dd	d� |d
dd� |ddd� d S )Nc                 S   s^   t jdkrdnd}dddœ}ttj| fi |¤Ž||d� ttj| gfi |¤Žd ||d� d S )	Nr;   rJ  çVçž¯â<Fr  r=  rS   r   )r€  r�  r   r    r@  ©rh   r!  rT   rB  rD   rD   rE   rU  ~	  s   
&zGTestFactorialFunctions.test_factorial_complex_reference.<locals>._checkr`  gkï´‘ø[ü?©r!  ù      à¿        ykï´‘ø[ü?        ù       @       @y·±B}Û¿æŒçåë?g§èH.ÿï¿gK«	!¶‡Ã@y      ð¿-Cëâ6?yI{�÷Œxâ¿ØQÂüÿ‡ÃÀrD   r‹  rD   rD   rE   Ú test_factorial_complex_reference}	  s   z7TestFactorialFunctions.test_factorial_complex_referenceÚcontent)z[]z[1]z[1.1]z[NaN]z[NaN+i*NaN]z[NaN, 1]c                    s”  |t u rtrt d¡ |tju rtdd„ |D ƒƒrt d¡ |tjkr1tdd„ |D ƒƒr1t d¡ ||dœ‰ |dks@t|ƒdkrB|n|d }tj	|||d	�}d }|d
krw|rwtj
tdd�� tj|fi ˆ ¤Ž W d   ƒ n1 sqw   Y  n†t|jg d¢ƒs tj
tdd�� tj|fi ˆ ¤Ž W d   ƒ n1 sšw   Y  n]t|jdƒrË|d
krËtj
tdd�� tj|fi ˆ ¤Ž W d   ƒ n1 sÅw   Y  n2|rôt|jdƒsôtj
tdd�� tj|fi ˆ ¤Ž W d   ƒ n1 sîw   Y  n	tj|fi ˆ ¤Ž}|d u�rH‡ fdd„| ¡ D ƒ}t|ƒdk�r|d n|}|j�r7|d
k�o(t|jdƒ}	|	�r/tjn|�r4tntj}tj	|||d	�}
t||
dd� d S d S )Nz+object arrays unsupported in array API modec                 s   ó&   � | ]}t  |¡p|t|ƒkV  qd S rÄ  ©r_   r   rt   ©rA  rô   rD   rD   rE   Ú	<genexpr>œ	  ó   €$ zKTestFactorialFunctions.test_factorial_array_corner_cases.<locals>.<genexpr>úimpossible combinationc                 s   ó   � | ]
}t t|ƒd ƒV  qdS ©r²  N©r7   r,  r–  rD   rD   rE   r—  ž	  ó   € r=  r   rZ   ©rv  r3  r  úIncompatible options:.*r.  r_  r`  r²  ra  ry   r‰  c                    ó   g | ]}t j|fi ˆ ¤Ž‘qS rD   )r    r@  r–  rT  rD   rE   rB  ¸	  ó    zLTestFactorialFunctions.test_factorial_array_corner_cases.<locals>.<listcomp>rè   rS   )rn  r4   r“  Úskipr_   rK  Úanyrñ   Úlenr   r   r^  r    r@  r7   r3  rd   rú   rQ  rG  r0  ©rC   r“  ru  r;  r:  r3  rh   r  r%  Úcxr!  rD   rT  rE   Ú!test_factorial_array_corner_cases�	  sP   



 ÿ€ÿ€ÿ€ÿ€
õz8TestFactorialFunctions.test_factorial_array_corner_casesr‘  )Ú1z1.1z2+2jrY  rZ  r[  c                 C   sò  ||dœ}|dkr.|r.t jtdd�� tj|fi |¤Ž W d   ƒ d S 1 s'w   Y  d S tt|ƒdddtd ƒgƒs^t jtdd�� tj|fi |¤Ž W d   ƒ d S 1 sWw   Y  d S tt|ƒdƒrŒ|dkrŒt jtd	d�� tj|fi |¤Ž W d   ƒ d S 1 s…w   Y  d S |d u s•t |¡rº|dkoŸtt|ƒdƒ}|r§t 	d
¡nt 
d¡}ttj|fi |¤Ž|ƒ d S |rætt|ƒdƒræt jtdd�� tj|fi |¤Ž W d   ƒ d S 1 sßw   Y  d S ttj|fi |¤Žt |d ¡ƒ d S )Nr=  r  rŸ  r.  ry   rø  r²  r`  ra  rP  rÎ   r‰  rZ   )r“  r   r^  r    r@  r7   r,  r_   r   rQ  rñ   r0  r   r8  ©rC   rh   r;  r:  rB  rR  r!  rD   rD   rE   Ú"test_factorial_scalar_corner_casesÃ	  s,   
"ÿ"ÿ"ÿ"ÿ&z9TestFactorialFunctions.test_factorial_scalar_corner_casesr  c                 C   r~  )Nr;   ç›+¡†›„=rè   Tr:  FrS   )r€  r�  r   rv   r    rA  rî   r‚  rD   rD   rE   Útest_factorial2_accuracyÞ	  r„  z/TestFactorialFunctions.test_factorial2_accuracyc                 C   sö   t  tjtt|ddƒƒd¡}t|tj|dd�ƒ t|tj|gdd�d ƒ t	j
dkr,dnd}t|ƒ}t|tj|d	d�|d
� t|tj|gd	d�d |d
� d	ddœ}|d dkryt|tj|fi |¤Ž|d
� t|tj|gfi |¤Žd |d
� d S d S )Nr   r­  rZ   Tr:  r;   r«  rè   FrS   r  r=  rL   )Ú	functoolsÚreduceÚoperatorÚmulrE  ru   r   r    rA  r€  r�  rv   r   r‡  rD   rD   rE   Útest_factorial2_int_referenceê	  s   
&þz4TestFactorialFunctions.test_factorial2_int_referencec                 C   s˜   dd„ }|ddd� |dt  d¡t dtj ¡ d� |dt  d¡t dtj ¡ d� |dd	d� |d
dd� |ddd� |ddd� |ddd� d S )Nc                 S   sP   d}dddœ}t tj| fi |¤Ž||d� t tj| gfi |¤Žd ||d� d S )Nr!  Fr  r=  rS   r   )r   r    rA  rŽ  rD   rD   rE   rU  
  s   
&zHTestFactorialFunctions.test_factorial2_complex_reference.<locals>._checkr‹   r�  rJ   rL   ro   r`  g^D]?JOê?r�  y^D]?JOê?        y      @      @y­ÄÓ&0ñ¿!›Ÿ:÷?g�St$—ÿÿ¿gtäQä*¿@y       À-Cëâ6?yqƒjí®§?¯xØ*¿À)r    rA  rr  r   r   r‹  rD   rD   rE   Ú!test_factorial2_complex_reference
  s   ""z8TestFactorialFunctions.test_factorial2_complex_referencec                    s(  |t jkrtdd„ |D ƒƒrt d¡ |t jkr&tdd„ |D ƒƒr&t d¡ ||dœ‰ |dks5t|ƒdkr7|n|d }t j|||d�}d }|d	krl|rltjt	d
d�� t
j|fi ˆ ¤Ž W d   ƒ n1 sfw   Y  n_t|jg d¢ƒs•tjt	dd�� t
j|fi ˆ ¤Ž W d   ƒ n1 s�w   Y  n6t|jddgƒrÂ|d	krÂtjt	dd�� t
j|fi ˆ ¤Ž W d   ƒ n1 s¼w   Y  n	t
j|fi ˆ ¤Ž}|d u�r‡ fdd„| ¡ D ƒ}t|ƒdkrå|d n|}|j�r|d	koôt|jdƒ}	|	rút jn|rþtnt j}t j|||d�}
t||
dd� d S d S )Nc                 s   r”  rÄ  r•  r–  rD   rD   rE   r—  $
  r˜  zLTestFactorialFunctions.test_factorial2_array_corner_cases.<locals>.<genexpr>r™  c                 s   rš  r›  rœ  r–  rD   rD   rE   r—  &
  r�  r=  r   rZ   rž  r  rŸ  r.  r_  r`  rø  r²  ra  c                    r   rD   )r    rA  r–  rT  rD   rE   rB  =
  r¡  zMTestFactorialFunctions.test_factorial2_array_corner_cases.<locals>.<listcomp>r�  rS   )r_   rK  r£  r“  r¢  rñ   r¤  r   r   r^  r    rA  r7   r3  rd   rú   rQ  rG  r0  r¥  rD   rT  rE   Ú"test_factorial2_array_corner_cases
  sB   


 ÿ€ÿ€ÿ€
õz9TestFactorialFunctions.test_factorial2_array_corner_casesc                 C   s®  ||dœ}|dkr.|r.t jtdd�� tj|fi |¤Ž W d   ƒ d S 1 s'w   Y  d S tt|ƒdddtd ƒgƒs^t jtdd�� tj|fi |¤Ž W d   ƒ d S 1 sWw   Y  d S tt|ƒddgƒrŽ|dkrŽt jtd	d�� tj|fi |¤Ž W d   ƒ d S 1 s‡w   Y  d S |d u s—t |¡r¼|dko¡tt|ƒdƒ}|r©t 	d
¡nt 
d¡}ttj|fi |¤Ž|ƒ d S | j|fddi|¤Ž}ttj|fi |¤Ž|dd� d S )Nr=  r  rŸ  r.  ry   rø  r²  r`  ra  rP  rÎ   ri   rL   rè   rS   )r“  r   r^  r    rA  r7   r,  r_   r   rQ  rñ   r0  r<  r©  rD   rD   rE   Ú#test_factorial2_scalar_corner_casesH
  s&   
"ÿ"ÿ"ÿ z:TestFactorialFunctions.test_factorial2_scalar_corner_casesri   r
  ro   iãÿÿÿc                 C   sp   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;   r  r«  Tr4  FrS   )r€  r�  r   rv   r    r6  rî   )rC   rh   ri   rT   rD   rD   rE   Útest_factorialk_accuracy`
  s   ÿ
ÿz/TestFactorialFunctions.test_factorialk_accuracyrÄ  c                 C   s  t  tjtt|d| ƒƒd¡}t|tj||dd�ƒ t|tj|g|dd�d ƒ t	j
dkr/dnd}t|ƒ}t|tj||dd�|d	� t|tj|g|dd�d |d	� |dd
dœ}|| dkr�d}t|tj|fi |¤Ž|d	� t|tj|gfi |¤Žd |d	� d S d S )Nr   rZ   Tr:  r;   g´àø¤tã =rÈ  FrS   r  rg  r«  )r­  r®  r¯  r°  rE  ru   r   r    r6  r€  r�  rv   r   )rC   rh   ri   r  rT   rB  rD   rD   rE   Útest_factorialk_int_referenceo
  s    &ýz4TestFactorialFunctions.test_factorialk_int_referencec                 C   sê   dd„ }|ddt jdddd�d� |ddd	d� |d
ddd� |dddd� |dddd� |dddd� |dddd� |dddd� |dddd� |dddd� |dddd� |dddd� |dddd� |d dd!d� |d"dd#d� d S )$Nc                 S   sR   d}|dddœ}t tj| fi |¤Ž||d� t tj| gfi |¤Žd ||d� d S )NrÈ  Fr  rg  rS   r   )r   r    r6  )rh   ri   r   rT   rB  rD   rD   rE   rU  Œ
  s   &zHTestFactorialFunctions.test_factorialk_complex_reference.<locals>._checkrJ   r‹   Tr4  )rh   ri   r   rÌ   gD!Áñ)@g      @gNqåÅ5®3@r  gªGÜ`­@r  g     ®ž@y       À      @y      À      @y      @      @yRsÁ¶å¿ðÌU#[˜@y      @      Àyõ¼•ú£ÿ?M…,a¢í?y@/Ìn­êÇ?ƒ�'ì?r`  gyL_ÇšZç?r�  yyL_ÇšZç?        g333333@gffffffæ¿y©NVÇÝ?ü†*ÊV7â?g333333ã¿y›ü)k“h²¿»]ýb·¿gÇ):’ËÿÀgÌiß‘·T¾@y      À-Cëâ6?y(“5öEÁ?WùÝ•T¾À©r    r6  r‹  rD   rD   rE   Ú!test_factorialk_complex_referenceŠ
  s    z8TestFactorialFunctions.test_factorialk_complex_referencec                    s*  |t jkrtdd„ |D ƒƒrt d¡ |t jkr&tdd„ |D ƒƒr&t d¡ d||dœ‰ |dks6t|ƒdkr8|n|d }t j|||d	�}d }|d
krm|rmtjt	dd�� t
j|fi ˆ ¤Ž W d   ƒ n1 sgw   Y  n_t|jg d¢ƒs–tjt	dd�� t
j|fi ˆ ¤Ž W d   ƒ n1 s�w   Y  n6t|jddgƒrÃ|d
krÃtjt	dd�� t
j|fi ˆ ¤Ž W d   ƒ n1 s½w   Y  n	t
j|fi ˆ ¤Ž}|d u�r‡ fdd„| ¡ D ƒ}t|ƒdkræ|d n|}|j�r|d
koõt|jdƒ}	|	rût jn|rÿtnt j}t j|||d	�}
t||
dd� d S d S )Nc                 s   r”  rÄ  r•  r–  rD   rD   rE   r—  µ
  r˜  zLTestFactorialFunctions.test_factorialk_array_corner_cases.<locals>.<genexpr>r™  c                 s   rš  r›  rœ  r–  rD   rD   rE   r—  ·
  r�  r‹   rg  r   rZ   rž  r  rŸ  r.  r_  r`  rø  r²  ra  c                    r   rD   r·  r–  rT  rD   rE   rB  Î
  r¡  zMTestFactorialFunctions.test_factorialk_array_corner_cases.<locals>.<listcomp>r�  rS   )r_   rK  r£  r“  r¢  rñ   r¤  r   r   r^  r    r6  r7   r3  rd   rú   rQ  rG  r0  r¥  rD   rT  rE   Ú"test_factorialk_array_corner_cases¨
  sB   

 ÿ€ÿ€ÿ€
õz9TestFactorialFunctions.test_factorialk_array_corner_casesc                 C   s¬  |||dœ}|dkr/|r/t jtdd�� tj|fi |¤Ž W d   ƒ d S 1 s(w   Y  d S tt|ƒdddtd ƒgƒs_t jtdd�� tj|fi |¤Ž W d   ƒ d S 1 sXw   Y  d S tt|ƒddgƒr�|dkr�t jtd	d�� tj|fi |¤Ž W d   ƒ d S 1 sˆw   Y  d S |d u s˜t |¡r½|dko¢tt|ƒdƒ}|rªt 	d
¡nt 
d¡}ttj|fi |¤Ž|ƒ d S | j|fi |¤Ž}ttj|fi |¤Ž|dd� d S )Nrg  r  rŸ  r.  ry   rø  r²  r`  ra  rP  rÎ   rè   rS   )r“  r   r^  r    r6  r7   r,  r_   r   rQ  rñ   r0  r<  )rC   rh   ri   r;  r:  rB  rR  r!  rD   rD   rE   Ú#test_factorialk_scalar_corner_casesÙ
  s&   "ÿ"ÿ"ÿ z:TestFactorialFunctions.test_factorialk_scalar_corner_casesrO   rì   r›   c                 C   sê   |rdgnd}|||dœ}|dkrCd}t t|ƒdƒr |dk r d}tjt|d�� tj|fi |¤Ž W d   ƒ d S 1 s<w   Y  d S |dkrjtjtd	d�� tj|fi |¤Ž W d   ƒ d S 1 scw   Y  d S tj|fi |¤Ž d S )
NrZ   rg  r5  ra  ry   zFor `extend='zero'`.*r.  r   zParameter k cannot be zero!)r7   r,  r“  r   r^  r    r6  )rC   ri   r;  r:  rW  rh   rB  rW  rD   rD   rE   Ú test_factorialk_raises_k_complexò
  s   "ÿ"ÿz7TestFactorialFunctions.test_factorialk_raises_k_complexr\  c                 C   s`   |rdgnd}|||dœ}t jtdd�� tj|fi |¤Ž W d   ƒ d S 1 s)w   Y  d S )NrZ   rg  r`  r.  )r“  r   r^  r    r6  )rC   ri   r;  r:  rW  rh   rB  rD   rD   rE   Útest_factorialk_raises_k_other  s
   "ÿz5TestFactorialFunctions.test_factorialk_raises_k_otherr¾  c                 C   sD  |||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sGJ ‚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s€J ‚d S t t  |d¡g¡}|r�tntj}ttj|fi |¤Žj|ƒ d S )Nrg  rZ   )r5   Úkeysr_   r   r6   r   r    r6  r3  r0   rK  rF  Úint32rG  rn  Úgetrñ   )rC   ri   r;  r:  rB  rh   r3  rD   rD   rE   Ú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   ƒ d S 1 s<w   Y  d S )
NrZ   rL   r‹   rP   Fr:  r‰  r.  T)	r_   r   rÎ   r   r    r@  r“  r   r^  ©rC   rô   r!  rD   rD   rE   Útest_factorial_mixed_nan_inputs)  s   "ÿz6TestFactorialFunctions.test_factorial_mixed_nan_inputs)<r�  r‘  r’  r<  r“  r”  r7  rC  rE  rH  rN  rV  r_   rÎ   rñ   rQ  r   Ú
datetime64r    r@  rA  r6  re  rh  ru   rt  rt   Úint8Úint16r¾  rK  Úuint8Úuint16Úuint32Úuint64rx  rz  r}  rƒ  rE  rˆ  rŒ  r’  rn  r§  rª  r¬  r±  r²  r³  r´  rµ  r¶  r¸  r¹  rº  r»  r¼  rÀ  rÂ  rD   rD   rD   rE   r3  a  s*   	ÿ



"&þúþ!
þ
ÿ
ÿ
ÿ*ý+$ÿ
ÿ
ÿ*ý&$ÿÿÿ*ý&$ÿÿÿÿÿr3  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)r„   çgÌN’°?çÖ�[‘‚ß?)y      à?        rË  rÌ  )y       Àš™™™™™¹?y²n<«æÓ¿ÌÆôj¹<C¿yÿ)¬BR;ß¿u´ñx7Q»?)yš™™™™™¹¿      ø¿yÚ¾|Î¤¿}-Ðì2ç?y�ŽÇ/—¸?½�¶!�ëÛ¿)r]  çGæ²M›Ü?çpB¾×Røß?)y      @        rÍ  rÎ  )y              @y       €Gæ²M›Ü¿y        pB¾×Røß?)y      À        gGæ²M›Ü¿gpB¾×Røß¿)y       €      Ày        Gæ²M›Ü?y       €pB¾×Røß¿r„   r`  c                 C   s&   t t |¡ƒ}t|t ||gƒdƒ d S )Nr½  )r   r    r4  r   )rC   r   rV  r²  ÚfrsrD   rD   rE   Útest_fresnel_values2  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¯”å@Çº¸�È?r‹   )y.� ø1æû?ãÇ˜»–�Ó?yƒÀÊ¡E6@:#J{ƒ/Ð?yqà-�
@yé&1¬Ì?yŒÛh o@¤ß¾œ3Ê?y¨WÊ2Äq@q¬‹ÛhÈ?r   rZ   r  )r    Úfresnel_zerosr   r   r4  )rC   ÚszoÚczoÚvals1Úvals2rD   rD   rE   Útest_fresnel_zerosW  s   
û
ûzTestFresnel.test_fresnel_zerosc                 C   s(   t  d¡\}}t  d¡}t||dƒ d S )NrP   r¾  )r    rÑ  Úfresnelc_zerosr   )rC   rÒ  rÓ  ÚfrcrD   rD   rE   Útest_fresnelc_zerosj  ó   
zTestFresnel.test_fresnelc_zerosc                 C   s(   t  d¡\}}t  d¡}t||dƒ d S )NrÌ   r¾  )r    rÑ  Úfresnels_zerosr   )rC   rÒ  rÓ  rÏ  rD   rD   rE   Útest_fresnels_zeroso  rÚ  zTestFresnel.test_fresnels_zerosN)r�  r‘  r’  r“  r”  r7  r_   r   rÐ  rÖ  rÙ  rÜ  rD   rD   rD   rE   rÊ  1  s$    
ã
rÊ  c                   @   sÈ   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
ej dej ejgejejgfddgej ejgfeddƒe dej¡fedddƒe dej¡fdgejgfg¡dd„ ƒZdS )Ú	TestGammac                 C   rŠ  r6  )r    r8  r   )rC   ÚgamrD   rD   rE   r9  v  rŒ  zTestGamma.test_gammac                 C   s(   t  d¡}tt  d¡ƒ}t||dƒ d S )Nr‹   r½  )r    r<  r   r8  r   )rC   ÚgamlnÚlngamrD   rD   rE   r=  z  ó   
zTestGamma.test_gammalnc                 C   s(   t  dd¡}t  dd¡}t||dƒ d S )Nr„   r½  )r    r:  Úgammaincinvr   )rC   ÚgccinvÚgcinvrD   rD   rE   r;    ó   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 )
NrM   rZ   r&  gš™™™™™©?g`£	í\Þ;rå   rD  g¦m�áìb<g      &@)r    râ  Úgammaincr   ©rC   r  rô   rD   rD   rE   Ú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ÿÿÿÿÏ?rZ   g^F    Ð?rM   r   rS   )r_   r­  r    râ  ræ  r   )rC   ÚptsÚxpr  rô   rD   rD   rE   Útest_975�  s   þýzTestGamma.test_975c                 C   s(   t  d¡}dt  d¡ }t||dƒ d S )Nr½  rZ   )r    rK  r8  r   )rC   ÚrgamÚrlgamrD   rD   rE   rL  �  rá  zTestGamma.test_rgammac                 C   r™   )NrO   r   )r   r    rK  rB   rD   rD   rE   Útest_infinity¢  rž   zTestGamma.test_infinityz
x,expectedr@  r›   iàÿÿÿr   é    i üÿÿéc   r  gPÚÂ²ZdbÃc                 C   s   t t |¡|ƒ d S rÄ  )r   r    r8  rÁ  rD   rD   rE   Ú
test_poles¥  s   zTestGamma.test_polesN)r�  r‘  r’  r9  r=  r;  r8   rè  rë  rL  rî  r“  r”  r7  r_   r   rÎ   ru   Úfullrñ  rD   rD   rD   rE   rÝ  u  s(    

öþrÝ  c                   @   rž  )Ú
TestHankelc                 C   ó"   t t dd¡t dd¡ dƒ d S ©NrD  rL   r‹   r  )r   r    rT  rB   rD   rD   rE   Ú
test_negv1º  ó   "zTestHankel.test_negv1c                 C   ó8   t  dd¡}t  dd¡t  dd¡d  }t||dƒ d S ©NrZ   r  r  r½  )r    rT  r„  r†  r   )rC   Úhank1ÚhankrlrD   rD   rE   rU  ½  ó   zTestHankel.test_hankel1c                 C   rô  rõ  )r   r    rV  rB   rD   rD   rE   Útest_negv1eÂ  r÷  zTestHankel.test_negv1ec                 C   ó0   t  dd¡}t  dd¡tdƒ }t||dƒ d S )NrZ   r  y       €š™™™™™¹¿r½  )r    rV  rT  r   r   )rC   Úhank1eÚhankrlerD   rD   rE   rW  Å  r¤  zTestHankel.test_hankel1ec                 C   rô  rõ  )r   r    rX  rB   rD   rD   rE   Ú
test_negv2Ê  r÷  zTestHankel.test_negv2c                 C   ó8   t  dd¡}t  dd¡t  dd¡d  }t||dƒ d S rù  )r    rX  r„  r†  r   )rC   Úhank2Úhankrl2rD   rD   rE   rY  Í  rü  zTestHankel.test_hankel2c                 C   rô  rõ  )r   r    rZ  rB   rD   rD   rE   Ú
test_neg2eÒ  r÷  zTestHankel.test_neg2ec                 C   s(   t  dd¡}t  dd¡}t||dƒ d S )NrZ   r  r½  )r    rZ  r   )rC   Úhank2eÚhankrl2erD   rD   rE   Útest_hankl2eÕ  rå  zTestHankel.test_hankl2ec                 C   s0   t  dd¡}t |j¡sJ ‚t |j¡sJ ‚d S r?   )r    rX  r_   r   r   Úisposinfr  ©rC   ro  rD   rD   rE   Útest_hankel2_gh4517Ú  s   zTestHankel.test_hankel2_gh4517N)r�  r‘  r’  rö  rU  rý  rW  r  rY  r  r  r  rD   rD   rD   rE   ró  ¸  s    ró  c                   @   s\   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )Ú	TestHyperc                 C   rø  rù  )r    Úh1vpÚjvpÚyvpr   )rC   Úh1Úh1realrD   rD   rE   Ú	test_h1vpâ  rü  zTestHyper.test_h1vpc                 C   r  rù  )r    Úh2vpr  r  r   )rC   Úh2Úh2realrD   rD   rE   Ú	test_h2vpç  rü  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 )Nr  r„   çQívîoó?r   rS   r   r…   rè   rÈ   )g      ø¿rO   r   rZ   rß  )gÄñÌ·â?g3|t-Õ”æ?r…   g�ßo�Ýö?g�{hùç¨ù?r  ©r„   rß  r  )r   rZ   r„   )r…   gŸá¶cÏý?r  rL   r‹   rZ   )
r   r    Úhyp0f1r_   r   rî   r  ÚvstackÚassert_raisesr^  )rC   rô   r!  r  Úx2rD   rD   rE   Útest_hyp0f1ì  s"   ÿzTestHyper.test_hyp0f1c                 C   s   t  dd¡}t|dƒ d S )Nçš™™™™™é?y      à?      à?y;EÊGÔÒù?uMÂâé?)r    r  r   r
  rD   rD   rE   Útest_hyp0f1_gh5764  s   zTestHyper.test_hyp0f1_gh5764c                 C   s€  t  ddd¡}t|ddƒ tg 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¢‘ƒ}|D ]\}}}}t  |||¡}tt|| ƒ| dik ƒ �q£d S )jNr  r  g–ŒŒ™õ?rN   )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˜  )rC   Úhyp1Úref_datar™  rš  r²  r!  r  rD   rD   rE   r^    sž  ÿþýüûúùø	÷
öõôóòñðïîíìëêéèçæåäãâá à!ß"Þ#Ý$Ü%Û&Ú'Ù(Ø)×*Ö+Õ,Ô-Ó.Ò/Ñ0Ð1Ï2Î3Í4Ì5Ë6Ê7É8È9Ç:Æ;Å<Ä=Ã>Â?Á@ÀA¿B¾C½D¼E»FºG¹H¸I·J¶KµL´M³N²O±P°Q¯R®S­T¬U«VªW©X¨Y§Z¦[¥\¤]£^¢_¡` aŸbžc�dœgþzTestHyper.test_hyp1f1c                 C   s,   t  ddd¡}t  ddd¡}t||dƒ d S )Nr„   rß  g7úþB.†Àg|:úþB.†Àr¾  ©r    r]  r   )rC   r   Úhyp2rD   rD   rE   Útest_hyp1f1_gh2957�  s   zTestHyper.test_hyp1f1_gh2957c                 C   s   t  ddd¡}t|ddƒ d S )Nr„   rß  iüÿÿgÅ<`÷’²œ?r¾  r"  )rC   ÚhyprD   rD   rE   Ú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 ]\}\}}}}}t 	||||¡}t
||dd&| d'� q¨d S )(Nr„   rZ   rß  ç|®Gáz¤?r  gÿÿÿÿÿÿ÷?g|®Gáz¤¿r’   rí   rL   rÔ  r  )r‹   rP  rß  r'  gŒYiô2õ?rD  r‹   g433333ó?rJ   r½  rÌ   rO   r  rÆ   g       ?rÈ   ç      @g      ÀgUUUUUUÕ¿g  º†@gUUUUUUõ?g«ªªªªªÀ)rß  r`  r…   ç      $ÀgEciH!…@)r­  r‹   rZ   r4  gáz®Gáæ?)rL   rD  rZ   r4  gyé&1¬|¿)r\  r‹   rZ   r4  g"nN%@?)rL   rF  rZ   r4  g!¡JÍþ¾)r&  é|üÿÿç      %@r—  g²z˜SŽ;)r&  r*  g      %Àr—  g[�B.—VP<útest #%d©Úerr_msg)r   r   r   r	   r    r8  r   r   rÃ  r`  r   )	rC   rÏ   ry   r™  rš  r²  rô   rã  ÚcvrD   rD   rE   ra  Š  sZ   ÿÿÿÿÿÿÿÿÿÿÿÿäþ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 )NrZ   r  rÄ  gÑà D„?rN   )r  rk  ç333333ó?gš™™™™™À)rß  gš™™™™™	@rŠ  gš™™™™™	Àr„   rL   r¾  )	r    Úhyperur   r   r   r   r]  r8  r   )rC   Úval1r™  rš  r   ÚhypuÚhprlrD   rD   rE   Útest_hyperu®  s   ÿ$ÿþzTestHyper.test_hyperuc                 C   s   t t ddd¡ddƒ d S )NrZ   rß  g3333334@g«ð(ÃÂ¨?r¾  )r   r    r1  rB   rD   rD   rE   Útest_hyperu_gh2287»  s   ÿzTestHyper.test_hyperu_gh2287N)r�  r‘  r’  r  r  r  r  r^  r$  r&  ra  r5  r6  rD   rD   rD   rE   r  á  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`„ Z2dadb„ Z3d¢dfdg„Z4e5j6j7e8 9¡ dhkdidj�dkdl„ ƒZ:e5j6j7e8 9¡ dhkdidj�dmdn„ ƒZ;dodp„ Z<dqdr„ Z=e5j6j>dsdt„ ƒZ?dudv„ Z@dwdx„ ZAdydz„ ZBd{d|„ ZCd}d~„ ZDdd€„ ZEd�d‚„ ZFd£d„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¡„ ZUdeS )¤Ú
TestBesselc                 C   ó&   t t d¡ƒ}t|t ddgƒdƒ d S )Nrí   gîb�“ÉƒÉ?gÎ�Jö Ö¿r½  )r   r    rt  r   )rC   Úit0rD   rD   rE   ru  Á  ó   
ýzTestBessel.test_itj0y0c                 C   r8  )Nrí   gbqòÌTtt?g/]ÃooÊÛ¿r½  )r   r    rl  r   )rC   Úit2rD   rD   rE   rm  É  r:  zTestBessel.test_it2j0y0c                 C   ó   t t dd¡t dd¡ƒ d S ©Nr‹   rL   rD  )r   r    rz  rB   rD   rD   rE   Útest_negv_ivÑ  ó   zTestBessel.test_negv_ivc                 C   ó&   t  d¡}t  dd¡}t||dƒ d S ©Nr  r   r½  )r    r~  r‚  r   ©rC   ÚozÚozrrD   rD   rE   r  Ô  rp  zTestBessel.test_j0c                 C   r@  ©Nr  rZ   r½  )r    r€  r‚  r   ©rC   Úo1Úo1rrD   rD   rE   r�  Ù  rp  zTestBessel.test_j1c                 C   ó   t  dd¡}t|ddƒ d S )NrZ   rí   çÕ;öâx¹?r½  )r    r‚  r   )rC   ÚjnnrrD   rD   rE   rƒ  Þ  ó   zTestBessel.test_jnc                 C   rô  rõ  )r   r    r„  rB   rD   rD   rE   Útest_negv_jvâ  r÷  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Ë¿ÀÀÂ+Ë>)rN  r\   g)%¡›¹-„>)gÍÌÌÌÌÌ@r\   g5Ôc)Ç!9)rN  r  g%²,ÄÍ¿r½  r,  r-  )rÃ  r    r„  r   )rC   rÏ   ry   rã  rô   r  ÚycrD   rD   rE   r…  å  s   üþzTestBessel.test_jvc                 C   rô  rõ  )r   r    r†  rB   rD   rD   rE   Útest_negv_jveð  r÷  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 )NrZ   rí   rJ  r½  ùš™™™™™É?      ð?)r    r†  r   r„  r   r˜  r  )rC   ÚjvexpÚjvexp1r   ÚjvexprrD   rD   rE   r‡  ó  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Ì   rZ   )go@—.=@gzj,[�@g“ÆÌlµN!@g5/ƒ D•'@g”hó>¡Ü-@rJ   ©gžŽ’W§@g”0Óö@g›¬QÑX$@g ²º¥*@g8„*5{x0@rY   )g’Eèk¹[@g÷~CÅju]@gYrÊ�ìì^@g�Ê,Æ `@gò»f	À`@rR   rS   é-  )g“õ¦t™s@g&»Ç­r3t@gWú¦þ’³t@gæ,‘$Y&u@gëú­…†�u@)r    Újn_zerosr   r   r   )rC   Újn0Újn1Újn102Újn301rD   rD   rE   Útest_jn_zerosû  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   rn   i  gç¾;€‰@rR   rS   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�º;¨@rO  )r    rX  r   r   )rC   rY  Újn10Újn3010rD   rD   rE   Útest_jn_zeros_slow  s   
üzTestBessel.test_jn_zeros_slowc           
         s–   t j‰ ‡ fdd„}tddƒD ]:}t  |¡\}}}}t|||ƒD ](\}}}	|	dkr3tˆ ||ƒddd� q|	dkrBt|||ƒddd� qtd| ƒ‚qd S )	Nc                    s    ˆ | d |ƒˆ | d |ƒ d S )NrZ   rL   rD   )rh   rô   ©r‚  rD   rE   Újnp,  r+  z(TestBessel.test_jnjnp_zeros.<locals>.jnprZ   rV   r   r%  rC  zInvalid t return for nt=%d)r    r‚  ru   Újnjnp_zerosr/  r   ÚAssertionError)
rC   rb  Úntr   rh   rÁ  ÚtÚzzÚnnÚttrD   ra  rE   Ú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 )	NrZ   rÌ   ©gÚÉà(yuý?gOXâeS@g¦aøˆ˜!@g¶óýÔxi'@g'Nîw(º-@rJ   é»  r   rè   rC  )r    Ú	jnp_zerosr   r   r   r  )rC   rb  rD   rD   rE   Útest_jnp_zeros8  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 )NrZ   rÌ   rV  rk  )çÞå"¾“@g+û®þ·@gŒ-9(1!@gÈ˜»–�'@g–>tA}Ë-@)g‚”0Óv@gj¼t“Ä@g§èH.?$@gŠ}"O’*@gG¬Å§p0@)r    Ú
jnyn_zerosr   r   )rC   ÚjnzrD   rD   rE   Útest_jnyn_zerosB  s   


ñízTestBessel.test_jnyn_zerosc                 C   s8   t  dd¡}t  dd¡t  dd¡ d }t||dƒ d S )NrL   rZ   r‹   r&  )r    r  r„  r   )rC   ÚjvprimÚjv0rD   rD   rE   Útest_jvpY  rü  zTestBessel.test_jvpc                 C   r@  rA  )r    r‰  r©  r   )rC   ÚozkÚozkrrD   rD   rE   rŠ  ^  rp  zTestBessel.test_k0c                 C   r@  rA  )r    r‹  r«  r   )rC   ÚozkeÚozkerrD   rD   rE   rŒ  c  rp  zTestBessel.test_k0ec                 C   r@  rE  )r    r�  r©  r   )rC   Úo1kÚo1krrD   rD   rE   rŽ  h  rp  zTestBessel.test_k1c                 C   r@  rE  )r    r�  r«  r   )rC   Úo1keÚo1kerrD   rD   rE   r�  m  rp  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Ì   rZ   r   rL   r‹   r¡  rÆ   rJ   rÂ   rP   r¾  r½  g      H@)r_   re   r    Újacobir   r²  r   )
rC   r™  rš  ÚP0ÚP1ÚP2ÚP3ÚcpÚp2cÚp3crD   rD   rE   Útest_jacobir  s    &B2D8ÿXzTestBessel.test_jacobic                 C   rI  )Nr   rí   ç_±2ü?r½  )r    r›  r   )rC   Úkn1rD   rD   rE   rœ  „  rL  zTestBessel.test_knc                 C   r<  ©NrÈ   r#  rO  ©r   r    r©  rB   rD   rD   rE   Útest_negv_kvˆ  r?  zTestBessel.test_negv_kvc                 C   rI  )Nr   rí   r‡  r&  ©r    r©  r   )rC   Úkv0rD   rD   rE   Útest_kv0‹  rL  zTestBessel.test_kv0c                 C   rI  )NrZ   rí   gKçÞ‹˜@r&  rŒ  )rC   Úkv1rD   rD   rE   Útest_kv1�  rL  zTestBessel.test_kv1c                 C   rI  )NrL   rí   g¢)lH—ÁH@r&  rŒ  )rC   Úkv2rD   rD   rE   Útest_kv2“  rL  zTestBessel.test_kv2c                 C   r±   )Nrï  rZ   gÜ.€Õ”"éH)r   r    r›  rB   rD   rD   rE   Útest_kn_largeorder—  rµ   zTestBessel.test_kn_largeorderc                 C   s   t t dd¡dƒ d S )Nr   g =‘`äXáCrŠ  rB   rD   rD   rE   Útest_kv_largeargš  rµ   zTestBessel.test_kv_largeargc                 C   r<  r‰  )r   r    r«  rB   rD   rD   rE   Útest_negv_kve�  r?  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½  rR  )r    r«  r©  r   r   )rC   Úkve1r�  r   Úkve2r‘  rD   rD   rE   r¬     s   zTestBessel.test_kvec                 C   s*   d}t t d|¡ tjd|dd�dƒ d S )Nr#  rZ   r   ©rh   r&  )r   r    r©  Úkvp)rC   r   rD   rD   rE   Ú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#  rZ   r˜  r&  ©r    r©  r™  r   ©rC   rã  r   Úxcrô   rD   rD   rE   Ú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#  rL   rZ   r˜  r&  r›  rœ  rD   rD   rE   Útest_kvp_n2´  s
   <zTestBessel.test_kvp_n2c                 C   r@  rA  )r    r�  r„  r   rB  rD   rD   rE   r‚  »  rp  zTestBessel.test_y0c                 C   r@  rE  )r    rÖ  r„  r   rF  rD   rD   rE   rƒ  À  rp  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 )NrL   rZ   ©r  r›   r  )r    Úy0_zerosr   r   r˜  r†  )rC   ÚyoÚypoÚzoÚzporí  ÚallvalrD   rD   rE   Útest_y0_zerosÅ  s    zTestBessel.test_y0_zerosc                 C   s*   t  d¡}t|tdgƒtdgƒfdƒ d S )NrZ   ro  gÑ®BÊOªà?rÌ   )r    Úy1_zerosr   r   )rC   rÖ  rD   rD   rE   Útest_y1_zerosÍ  s   
 zTestBessel.test_y1_zerosc                 C   s.   t jddd�}t|tdgƒtdgƒfdƒ d S )NrZ   r   yL¦
F%uâ?!°rh‘íì?y;ßO�—nè¿Ð³Yõ¹Úâ?r‹   )r    Ú	y1p_zerosr   r   )rC   Úy1prD   rD   rE   Útest_y1p_zerosÑ  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 )
NrJ   rL   g¿œ3¢”@g·(³A&¹"@rÌ   rl  )g]E.ô+"|@gçHå(éð|@gffÂ|çŒ}@g&îb`~@g�HO_°�~@rè   rS   )r    Úyn_zerosr   r   r   )rC   ÚanrD   rD   rE   Útest_yn_zerosÙ  s   

ûzTestBessel.test_yn_zerosc                 C   sh   t  dd¡}t|tddgƒdƒ t  dd¡}tt  d|¡ddd	� t  d
d¡}tt  d
|¡ddd	� d S )Nr   rL   gÎQhÕ¾“@gŠzNþ·@rP   é+   rÌ   rè   rC  rl  rç   )r    Ú	ynp_zerosr   r   r   r  ©rC   ÚaorD   rD   rE   Útest_ynp_zerosä  s   zTestBessel.test_ynp_zerosc                 C   s&   t  dd¡}tt  d|¡ddd� d S )Nrl  rÌ   r   rÈ  rC  )r    r±  r   r  r²  rD   rD   rE   Útest_ynp_zeros_large_orderì  s   z%TestBessel.test_ynp_zeros_large_orderc                 C   rI  ©NrZ   rí   ç5‹,Ž1—
Àr½  )r    r„  r   )rC   Úyn2nrD   rD   rE   r…  ð  rL  zTestBessel.test_ync                 C   s    t  dd¡}|tj ksJ ‚d S )NrX   rZ   )r@   r„  r_   r   )rC   ÚobservedrD   rD   rE   Útest_yn_gh_20405ô  s   zTestBessel.test_yn_gh_20405c                 C   rô  rõ  )r   r    r†  rB   rD   rD   rE   Útest_negv_yvù  r÷  zTestBessel.test_negv_yvc                 C   rI  r¶  )r    r†  r   )rC   Úyv2rD   rD   rE   r‡  ü  rL  zTestBessel.test_yvc                 C   rô  rõ  )r   r    rˆ  rB   rD   rD   rE   Útest_negv_yve   r÷  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 )NrZ   rí   r·  r½  rR  rO   )r    rˆ  r   r†  r   )rC   Úyve2Úyve2rÚyve22rD   rD   rE   r‰    s
   zTestBessel.test_yvec                 C   s8   t  dd¡t  dd¡ d }t  dd¡}t||dƒ d S )NrZ   rí   r‹   rÆ   rL   r&  )r    r†  r  r   )rC   ÚyvprÚyvp1rD   rD   rE   Útest_yvp
  ó   zTestBessel.test_yvpc                 c   sF   � 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ˆÿÿÿr   ç      4Àr)  rì   r`  r›   r…   ç{®Gáú(@r9  rW  )iìúÿÿéõÿÿÿr¥  rO   r…   rÉ   ç     i@g     y@g     Ä‚@gÍÌÌÌÌä…@é  i'  Nr„   iÄÿÿÿrá  rP  )Ú	itertoolsÚproductr   )rC   rã  r   rD   rD   rE   Ú_cephes_vs_amos_points  s
   €"z!TestBessel._cephes_vs_amos_pointsç•dyáý¥=r   Nc                 C   sÐ   |   ¡ D ]a\}}|d ur|||ƒrq|||ƒ|||d ƒ|t|ƒ|ƒ}}	}
t |¡r9tt |	¡dk||fƒ qt |¡rIt|	jdk||fƒ qt||	||f||d� |t|ƒkret|
|	||f||d� qd S )Nr  çœu ˆ<ä7~r   )r.  rT   r^   )	rÌ  rt   r_   r  r   r˜  r   r  r   )rC   r´  Úf2rT   r^   r¢  rã  r   Úc1Úc2Úc3rD   rD   rE   Úcheck_cephes_vs_amos  s   *

ÿ€õzTestBessel.check_cephes_vs_amosÚppc64lezfails on ppc64ler  c                 C   ó   | j tjtjddd� d S )Nr\   çu5%ÅÅœ rÉ  )rÓ  r    r„  r‚  rB   rD   rD   rE   Útest_jv_cephes_vs_amos*  ó   z!TestBessel.test_jv_cephes_vs_amosc                 C   rÕ  )NrÍ  rÖ  rÉ  ©rÓ  r    r†  r„  rB   rD   rD   rE   Útest_yv_cephes_vs_amos/  rØ  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 )NrD  )r˜  )rã  r   rD   rD   rE   Úskipper5  s   zDTestBessel.test_yv_cephes_vs_amos_only_small_orders.<locals>.skipperrÍ  rÖ  )rT   r^   r¢  rÙ  )rC   rÛ  rD   rD   rE   Ú(test_yv_cephes_vs_amos_only_small_orders4  s   
ÿz3TestBessel.test_yv_cephes_vs_amos_only_small_ordersc                 C   sH   t jdd�� | jtjtjddd� W d   ƒ d S 1 sw   Y  d S )Nrë  rì  g:Œ0âŽy5>rÖ  rÉ  )r_   r0  rÓ  r    rz  rB   rD   rD   rE   Útest_iv_cephes_vs_amos:  s   "ÿz!TestBessel.test_iv_cephes_vs_amosc           	   
   C   sz  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��G 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Žw   Y  t  |¡}t|| dk || || t 	|| || ¡t 	|| || d ¡fƒ d S )Ni@B rZ   r„   rO   rL   ©rú   rí   r½  r   rë  rì  r  rÎ  gYóøÂn¥gH¯¼šò×Š>)r_   re   rp   rî  rï  rî   rK  r0  r    rz  r   r˜  r   Úargmaxr   )	rC   ÚNrã  rô   ÚimskrÐ  rÑ  Údcri   rD   rD   rE   Ú 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    r©  r›  rB   rD   rD   rE   Útest_kv_cephes_vs_amos^  ó   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 )	Nr‹   rJ   gPòýîí‡Û?rW  rÉ  g©~OmÊ’?gY†8ÖE@”@gKÆSn˜ô–¿)r   r    r„  rB   rD   rD   rE   Útest_ticket_623b  ru  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 BesselsrO   rZ   gl—îÉ)Ü¿r­  gè›ú•Pj½?g”kÖ²ÿè?g%¡E*2iú¿gæ•‹Èâ?gw-ý-`Á?gÃ‰�óÒBã?g‚®Wÿù?r`  g¥ÑÞ´—Û?gÅzò|å?çaÿþ²ó?gpôx%‚Ý?y      ð?        y      ð?      ð?yY…»DÓÐ?`{€ñ1wê¿y6 xùî?BŽ„]#Ó®?yÞ ¤‚¢©è?ùbæ>à‡Ù?yÙ.}9d•±?°¤°8ÇkØ¿y      ð?333333Ó?r*  y333333Ó?      ð?r  N)r   r    r„  r†  rz  r©  r†  r   rˆ  r|  r«  rT  rX  rB   rD   rD   rE   Útest_ticket_853g  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 domainsr„   rO   rZ   r   rL   rJ   N)r   r   r    r„  rz  r†  r©  r†  r|  rˆ  r«  rH   rí  r£  rB   rD   rD   rE   Ú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    r©  r_   r   r«  rB   rD   rD   rE   Útest_gh_7909ª  rå  zTestBessel.test_gh_7909c                 C   s(   t t dd¡dƒ t t dd¡dƒ dS )zReal-valued Bessel I overflowrZ   i¼  gá¹Îõ¥‡¬~rW   i`  g ¶?los~N©r   r    rz  rB   rD   rD   rE   Útest_ticket_503®  s   zTestBessel.test_ticket_503c                 C   r±   )Nr`  rZ   rç  rë  rB   rD   rD   rE   Útest_iv_hyperg_poles³  rµ   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   rL   r„   rZ   rO   r&  )r   rî   r   r   r    r<  r   r   r   r˜  rG  r   r5  Úsum©rC   rã  r   rh   ri   r;  r  rD   rD   rE   Ú	iv_series¶  s   8*zTestBessel.iv_seriesc                 C   ó4   dD ]}|   d|¡\}}tt |¡|||d� qd S )N©r…   rÉ   rÈ  r   ©r^   r.  )rñ  r   r    rb  ©rC   r   Úvaluer  rD   rD   rE   Útest_i0_series¾  ó   þzTestBessel.test_i0_seriesc                 C   rò  )Nró  rZ   rô  )rñ  r   r    rf  rõ  rD   rD   rE   Útest_i1_seriesÃ  rø  zTestBessel.test_i1_seriesc                 C   sD   dD ]}dD ]}|   ||¡\}}tt ||¡||||fd� qqd S )N)rÅ  r)  rì   r›   r…   rÆ  r9  )r…   rÉ   rÈ  y      ð¿       @rô  )rñ  r   r    rz  ©rC   rã  r   rö  r  rD   rD   rE   Útest_iv_seriesÈ  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 ]\}\}}t |¡t| ƒ }t||dd| d� qd S )Nr›   r…   r\   r  g0oO…øí?r„   gÖÊÿ!¤ä?gr¢·bÏÝ?r  gâ®ÄÞpHÑ?r’   gð“ÌíC~Ç?rÀ   gïgo¯×û¶?r½  r,  r-  )rÃ  r    rb  r   r   ©rC   rÏ   ry   rô   rã  r/  rD   rD   rE   rc  Î  s   ù	þzTestBessel.test_i0c                 C   r@  rA  )r    rd  r|  r   )rC   ÚoizeÚoizerrD   rD   rE   re  Ü  rp  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 ]\}\}}t |¡t| ƒ }t||dd| d� qd S )Nr›   r\   gjïËÙß|Ë=r  gÈ•!§[1§?r„   g;Í˜Ä?r…   gèRùÎœÊ?r’   g|«äýÄ?rÀ   g}¦‹ÊÎf¶?r½  r,  r-  )rÃ  r    rf  r   r   rü  rD   rD   rE   rg  á  s   úþzTestBessel.test_i1c                 C   r@  rE  )r    rh  r|  r   )rC   Úoi1eÚoi1errD   rD   rE   ri  î  rp  zTestBessel.test_i1ec                 C   s&   t t d¡ƒ}t|t ddgƒdƒ d S )NrÌ   gÑ—JBÙ?@g*uõÌù?)r   r    rr  r   )rC   Úiti0rD   rD   rE   rs  ó  r:  zTestBessel.test_iti0k0c                 C   s"   t  d¡}t|tddgƒdƒ d S )Nr  gÝ³¿É„|T?gVäÀ‚Æ¥
@rP   )r    rj  r   r   )rC   Úit2krD   rD   rE   rk  û  s   

ýzTestBessel.test_it2i0k0c                 C   s$   t  dd¡tdƒ }t|ddƒ d S )Nr   r  çš™™™™™¹¿gv M…øí?r&  )r    rz  r   r   )rC   Úiv1rD   rD   rE   r{    s   zTestBessel.test_ivc                 C   r<  r=  )r   r    r|  rB   rD   rD   rE   Útest_negv_ive  r?  zTestBessel.test_negv_ivec                 C   rþ  )Nr   r  r  r&  )r    r|  rz  r   r   )rC   Úive1r  rD   rD   rE   r}  
  r¤  zTestBessel.test_ivec                 C   s    t t dd¡t dd¡dƒ d S )NrZ   rL   r   r&  )r   r    rz  ÚivprB   rD   rD   rE   Ú	test_ivp0  r+  zTestBessel.test_ivp0c                 C   s8   t  dd¡t  dd¡ d }t  dd¡}t||dƒ d S )Nr   rL   rZ   r&  )r    rz  r  r   rç  rD   rD   rE   Útest_ivp  rÄ  zTestBessel.test_ivp)rÍ  r   N)rî  )Vr�  r‘  r’  ru  rm  r>  r  r�  rƒ  rM  r…  rQ  r‡  r]  r`  rj  rn  rr  ru  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�  Úmachiner×  rÚ  rÜ  rÝ  Úslowrã  rä  ræ  rè  ré  rê  rì  rí  rñ  r÷  rù  rû  rc  re  rg  ri  rs  rk  r{  r  r}  r  r	  rD   rD   rD   rE   r7  À  sª    
	
ÿ
ÿ

2
r7  c                   @   ó   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   rZ   rL   r‹   rJ   rÌ   r¡  rO   )rZ   r>  rL   rÆ   )rO   r  iîÿÿÿrP   r]  )rZ   iðÿÿÿéH   i ÿÿÿrë   r7  )rO   rä   i8ÿÿÿiX  i¨ýÿÿr<  r9  )r    Úlaguerrer   r²  r   )rC   Úlag0Úlag1Úlag2Úlag3Úlag4Úlag5rD   rD   rE   Ú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   rZ   rL   r‹   rO   r­  r…   rÆ   rD  r]  )r_   re   r    r¼  r   r²  r   r   )rC   ri   r  r  r  r  rD   rD   rE   Útest_genlaguerre'  s   $þ>þzTestLaguerre.test_genlaguerreN)r�  r‘  r’  r  r  rD   rD   rD   rE   r    s    r  c                   @   rº  )Ú
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 )NrZ   r  r   rL   r­  rÅ   r½  )r    Úlmbdar   r‚  r  r„  r   )rC   ÚlamÚlamrrD   rD   rE   Ú
test_lmbda:  s
   "6þzTestLambda.test_lmbdaN)r�  r‘  r’  r  rD   rD   rD   rE   r  9  rÁ  r  c                   @   r  )Ú	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    r®  r   r   )rC   Úl1pÚl1prlrD   rD   rE   r¯  D  ó   zTestLog1p.test_log1pc                 C   sB   t  d¡t  d¡t  d¡f}tdƒtdƒtdƒf}t||dƒ d S )NrZ   r+  r0  rL   r"  r#  r½  r  )rC   Úl1pmÚl1pmrlrD   rD   rE   Útest_log1pmoreI  r!  zTestLog1p.test_log1pmoreN)r�  r‘  r’  r¯  r$  rD   rD   rD   rE   r  C  s    r  c                   @   r”  )ÚTestMathieuc                 C   rÃ  rÄ  rD   rB   rD   rD   rE   r¸  Q  rÅ  zTestMathieu.test_mathieu_ac                 C   rÿ   )NrL   rÌ   )r    r+   rB   rD   rD   rE   Útest_mathieu_even_coefT  r  z"TestMathieu.test_mathieu_even_coefc                 C   rÃ  rÄ  rD   rB   rD   rD   rE   Útest_mathieu_odd_coefX  s   z!TestMathieu.test_mathieu_odd_coefN)r�  r‘  r’  r¸  r&  r'  rD   rD   rD   rE   r%  O  s    r%  c                   @   r  )ÚTestFresnelIntegralc                 C   rÃ  rÄ  rD   rB   rD   rD   rE   rè  _  rÅ  z$TestFresnelIntegral.test_modfresnelpc                 C   rÃ  rÄ  rD   rB   rD   rD   rE   ræ  b  rÅ  z$TestFresnelIntegral.test_modfresnelmN)r�  r‘  r’  rè  ræ  rD   rD   rD   rE   r(  ]  s    r(  c                   @   rº  )ÚTestOblCvSeqc                 C   ó&   t  ddd¡}t|tg d¢ƒdƒ d S )Nr   r‹   rZ   )g~TÃ~OÖ¿g£té_’Jö?gmÅþ²{ò@g@j'÷û&@rÌ   )r    Ú
obl_cv_seqr   r   )rC   ÚoblrD   rD   rE   Útest_obl_cv_seqg  ó   ýzTestOblCvSeq.test_obl_cv_seqN)r�  r‘  r’  r-  rD   rD   rD   rE   r)  f  rÁ  r)  c                   @   sD   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dS )ÚTestParabolicCylinderc                 C   s0   t  dd¡}t|tddgƒtddgƒfdƒ d S )NrZ   r  gìQ¸…ëï?gx$(~Œ¹?gx$(~Œ©¿gÃõ(\�Âï?rJ   )r    Úpbdn_seqr   r   )rC   ÚpbrD   rD   rE   Útest_pbdn_seqp  s   ÿÿþýz#TestParabolicCylinder.test_pbdn_seqc                 C   s4   t  dd¡ dt  dd¡d  t  dd¡d   d S )NrZ   rí   r  r   )r    r$  rB   rD   rD   rE   r%  w  s   (zTestParabolicCylinder.test_pbdvc                 C   s<   t  dd¡}t  dd¡}t|t|d ƒt|d ƒfdƒ d S )NrZ   r  r   rJ   )r    r0  Úpbdv_seqr   r   )rC   ÚpbnÚpbvrD   rD   rE   Ú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Ì   rL   r„   r›   r   rÈ  rÉ  g®Gáz®$@gq=
×£p4@g©³HáÓQ9r   rS   g�Âõ(\#Àg…ëQ¸…@gŸ¡kÓS a>)r_   rÔ  r   r   r    rK  r   r$  )rC   Úetar   rD   rD   rE   Útest_pbdv_points€  s
   *z&TestParabolicCylinder.test_pbdv_pointsc                 C   ó˜   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>  rJ   r½  r¥  r&  rÌ   r   r   rÆ   rZ   r%  rÉ  )r_   rÔ  r    r$  r˜  r   ©rC   rô   r7  r,  r5  ÚdprD   rD   rE   Útest_pbdv_gradientŠ  ó   0z(TestParabolicCylinder.test_pbdv_gradientc                 C   r9  r:  )r_   rÔ  r    r&  r˜  r   r;  rD   rD   rE   Útest_pbvv_gradient“  r>  z(TestParabolicCylinder.test_pbvv_gradientc                 C   s<   t  dd¡\}}t|t g d¢¡ƒ t|t g d¢¡ƒ d S )NrL   r‹   )g:4¦¬€Ï@gŽ1{Ð½õ?g7,%Ònšá?)g�µ»ûXØ@g=<'‡’î?gÊ ¾áùá?)r    Úpbvv_seqr   r_   r   )rC   Úres1Úres2rD   rD   rE   Útest_pbvv_seqœ  s   z#TestParabolicCylinder.test_pbvv_seqN)
r�  r‘  r’  r2  r%  r6  r8  r=  r?  rC  rD   rD   rD   rE   r/  o  s    
		r/  c                   @   rº  )Ú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 )NrL   rZ   r‹   gX]ï ;Àr&  gOV,@Ëù@)rL   r‹   g  8»×ÙBr   r*  r  )gý2}‰jÿ¿gó.òMæéí?gçð}2ï;Î¿)r    Ú	polygammar   rG  r_   r  )rC   Úpoly2Úpoly3rô   rh   r!  rD   rD   rE   Útest_polygamma¨  s"   ÿÿzTestPolygamma.test_polygammaN)r�  r‘  r’  rH  rD   rD   rD   rE   rD  ¦  s    rD  c                   @   rº  )ÚTestProCvSeqc                 C   r*  )Nr   r‹   rZ   )gÑ"Ûù~jÔ?g6?þÒ¢¾@g)uÉ8F"@gË2�g)@rÌ   )r    Ú
pro_cv_seqr   r   )rC   ÚprolrD   rD   rE   Útest_pro_cv_seqÀ  r.  zTestProCvSeq.test_pro_cv_seqN)r�  r‘  r’  rL  rD   rD   rD   rE   rI  ¿  rÁ  rI  c                   @   rº  )ÚTestPsic                 C   rÇ  )NrZ   g¶oüŒxâ¿r½  )r    rG  r   )rC   ÚpsrD   rD   rE   rH  É  rÉ  zTestPsi.test_psiN)r�  r‘  r’  rH  rD   rD   rD   rE   rM  È  rÁ  rM  c                   @   r  )Ú
TestRadianc                 C   s"   t  ddd¡}t|td dƒ d S )NrY  r   rÆ   rÌ   ©r    rI  r   r   )rC   ÚradrD   rD   rE   rJ  Ï  s   zTestRadian.test_radianc                 C   s&   t  ddd¡}t|td d dƒ d S )NrY  rZ   rá  rL   gƒ†íC?rÌ   rP  )rC   Úrad1rD   rD   rE   Útest_radianmoreÓ  s   zTestRadian.test_radianmoreN)r�  r‘  r’  rJ  rS  rD   rD   rD   rE   rO  Î  s    rO  c                   @   r  )ÚTestRiccatic                 C   ó|   d\}}t  ||f¡}t|ƒD ]"}t ||¡}tj||dd�}|| |d|f< || | |d|f< qt|t ||¡dƒ d S ©N)rL   rí   T)Ú
derivativer   rZ   r½  )r_   Úemptyru   r    Úspherical_jnr   Ú
riccati_jn)rC   rà  rô   ÚSrh   r³  ÚjprD   rD   rE   Útest_riccati_jnÙ  ó   zTestRiccati.test_riccati_jnc                 C   rU  rV  )r_   rX  ru   r    Úspherical_ynr   Ú
riccati_yn)rC   rà  rô   ÚCrh   r  ÚyprD   rD   rE   Útest_riccati_ynã  r^  zTestRiccati.test_riccati_ynN)r�  r‘  r’  r]  rc  rD   rD   rD   rE   rT  Ø  s    
rT  c                   @   r  )ÚTestSoftplusc                 C   s    dd l }|j d¡}d}|jdd|d�}|jdd|d�}|jdd|d�}|jd	d
|d�}| ||||g¡}g d¢g d¢g d¢g d¢g}	t|ƒ}
t|
|	dd� d S )Nr   l   �(Úsÿr‹   iœÿÿÿiÛÿÿÿrÞ  é   rŠ  g
×£p=ª@@rÄ  )g¨%~ÝßB7gpNÛfßà™7g­8ËëBÜ8)gJÈR{ý?g6ê�ï™]=g¡X�áes>)g °Ënö@?@gãWâHÂ;@gl¸H.÷þ=@)g9lchªPR@gäÀñöS@gzse‹vëB@r�  rS   )Únumpyre   Údefault_rngÚuniformÚstackr)   r   )rC   r_   rl   rh   r¾  r¿  Úa3Úa4r™  r%  ro  rD   rD   rE   Útest_softplusï  s   ýzTestSoftplus.test_softplusc                 C   sT   t  d¡d }t  d¡}| ¡ }|dk}t|||d� t|| ƒ||< t||ƒ d S )NrÌ   rL   r   )ÚoutÚwhere)r_   r   ÚonesÚcopyr)   r   )rC   rô   rm  r%  rn  rD   rD   rE   Útest_softplus_with_kwargs  s   
z&TestSoftplus.test_softplus_with_kwargsN)r�  r‘  r’  rl  rq  rD   rD   rD   rE   rd  î  s    rd  c                   @   rº  )Ú	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  )rE  Úmaprt   r    rQ  r   )rC   ÚrndÚrndrlrD   rD   rE   rR    s   ý
zTestRound.test_roundN)r�  r‘  r’  rR  rD   rD   rD   rE   rr    rÁ  rr  c                  C   sä  t j} tj}tj}tj}tj}tj}tƒ �Ó}|j	t
d� 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  ƒ W d   ƒ d S 1 sëw   Y  d S )N©Úcategoryr   r„   r­  rL   r›   rJ   r¿  r$  rÆ   r{   r  r  rÈ   r  r’   g      @rZ   rÂ   r]  g      È?g     €A@)r    Úsph_harmr_   r   r   r   r   r	   r   r°  ÚDeprecationWarningr   )Úshr   r   r   r   r	   r³  rD   rD   rE   Útest_sph_harm)  sV   
ÿÿÿÿÿÿÿÿþýÿÿÿÿ"ïr{  c                  C   sä   t  t j¡} tƒ �_}|jtd� 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| ƒ W d   ƒ d S 1 skw   Y  d S )Nrv  r   )	r_   r3  rQ  r   r°  ry  r   r    rx  )Údtr³  rD   rD   rE   Ú"test_sph_harm_ufunc_loop_selectionH  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   rO   r„   rL   rZ   rß  )	r   r    r8  r˜  rG  r   r   r5  rï  rð  rD   rD   rE   Ú_seriesV  s   
@zTestStruve._seriesc                 C   sH   dD ]}dD ]}|   ||¡\}}tt ||¡|d|d�||ff qqdS )z-Check Struve function versus its power series)
iìÿÿÿr¥  çö(\�ÂõÀrN  rO   r   rZ   rM  rÆ  é   )rZ   r&  rê   r‹  rV   r   rÉ  N)r  r   r    r{  rú  rD   rD   rE   Ú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=ð§?r   rS   g…ëQ¸ ÀgŠ< j¤?rO  rO  rî  g³÷ýï�?r   g       Ài×ÿÿÿg©Ÿ zzµ“?rÍ  iôÿÿÿé)   r¾  rÇ  r  gffffffÀrO   g333333$À)r   r    r{  r   r   r   rB   rD   rD   rE   Ú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@r)  g333333ÀN)r   r    r{  rB   rD   rD   rE   Útest_regression_679q  s   
ÿ
ÿ
ÿzTestStruve.test_regression_679N)rÄ  )r�  r‘  r’  r  r‚  r„  r…  rD   rD   rD   rE   r~  U  s
    
r~  c                   C   r±   )Nrk  r‹   gdX	
§î?)r   r    r³   rD   rD   rD   rE   Útest_chi2_smalldf{  rµ   r†  c                   C   s   t t dtj¡dƒ d S )Nrv  r…   )r   r    r³   r_   r   rD   rD   rD   rE   Útest_ch2_inf  rˆ   r‡  c                   C   r±   )Nrk  r‹   çÀyj_�¥?)r   r    r·   rD   rD   rD   rE   Útest_chi2c_smalldfƒ  rµ   r‰  c                   C   r±   )Nrk  rˆ  r‹   )r   r    r»   rD   rD   rD   rE   Útest_chi2_inv_smalldf‡  rµ   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 )'NrR   rZ   rL   gDS«YCµê?rS   gQÕ_Ñý?g®Å?Õ@g>;,
i}@r‹   )rZ   r‹   rÌ   gÊ=·O÷?rO   r­  rë   rP   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{¿{ r…   gë][#!Rr_  gŒÙ�S1ÛëgNÕ_Ñ r   rð  r&  )r   r    Úagmr_   r   r   rÌ  rG  r   rÎ   r   )rT   Úagm13Úagm15Úagm35Úagm12ÚfirD   rD   rE   Útest_agm_simple‹  sr   ÿÿþÿÿÿÿ
ÿÿÿr‘  c                  C   s.  t ƒ �Š} |  td¡ tt dd¡t dd¡ƒ tt ddd¡t ddd¡ƒ tt ddd¡t ddd¡ƒ tt ddd¡t ddd¡ƒ tt 	dd¡t 	dd¡ƒ tt 
dd¡t 
dd¡ƒ tt dd¡t dd¡ƒ tt dd¡t dd¡ƒ tt dd¡t dd¡ƒ W d   ƒ d S 1 s�w   Y  d S )Nr1  rZ   r  gÍÌÌÌÌÌü?rL   gffffff@)r   r°  r±  r   r    Úexpnrí  rë  rï  r2  r›  r„  r]  rl  )r³  rD   rD   rE   Útest_legacyÈ  s   "ör“  c                  C   s   dd l } |  ¡ S r?   )Ú	threadingÚLock)r”  rD   rD   rE   Úerrstate_lockØ  s   r–  c              	   C   sx   | �0 t jdd�� tt jt jddƒ W d   ƒ n1 sw   Y  W d   ƒ d S W d   ƒ d S 1 s5w   Y  d S )Nr,  rì  rZ   y        .Ÿ‡¢®B}T)r    r0  r  r1  rz  )r–  rD   rD   rE   Ú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   ób   t jdd��! | dkrt  |¡s| W  d   ƒ S | t  |¡ W  d   ƒ S 1 s*w   Y  d S ©Nrë  )Úinvalidr   )r_   r0  r   r   r'  rD   rD   rE   Úxfuncæ  ó   þ$üztest_xlogy.<locals>.xfunc©r   r   r   ©r…   rÆ   r4  )r   r  )rZ   r  rZ   rR   rÉ  )
r_   r   rÎ   r   rv   r   r|   r9   r    Úxlogy)r›  Úz1Úz2Úw1Úw2rD   rD   rE   Ú
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   r˜  r™  )r_   r0  r   r®  r'  rD   rD   rE   r›  ÷  rœ  ztest_xlog1py.<locals>.xfuncr�  r   rž  )rZ   g ÂëþKH´9r4  rZ   rR   rÉ  )	r_   r   rÎ   r   rv   r|   r9   r    Úxlog1py)r›  r   r¢  rD   rD   rE   Ú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 r?   )r_   r   r    rŸ  r)  rD   rD   rE   r›    s   ztest_entr.<locals>.xfuncr   r„   r…   rO   rZ   r4  ©ÚotypesrR   rÉ  )r_   r   rÊ  rË  r®  r   rv   r|   rñ   r9   r    Úentr)r›  rÏ   ÚsignsrÆ  Úsgnrã  r   rŽ  rD   rD   rE   Ú	test_entr  s   r¬  c            
      C   ó¢   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   sd   | dk s|dk s|dkr| dkrt jS t  | ¡st  |¡r t jS | dkr&|S t | | | ¡|  | S r?   )r_   r   r	  r    rŸ  r'  rD   rD   rE   r›    s    ztest_kl_div.<locals>.xfunc©r   r„   r…   rO   rZ   r4  r§  r   rR   rÉ  )rÊ  rË  r®  r_   r   rv   r|   rñ   r9   r    Úkl_div©
r›  rÏ   rª  rÆ  ÚsgnaÚvaÚsgnbÚvbr   rŽ  rD   rD   rE   Útest_kl_div  s   0rµ  c            
      C   r­  )Nc                 S   s:   | dkr|dkrt  | | | ¡S | dkr|dkrdS tjS r?   )r    rŸ  r_   r   r'  rD   rD   rE   r›  +  s
   ztest_rel_entr.<locals>.xfuncr®  rO   rZ   r4  r§  r   rR   rÉ  )rÊ  rË  r®  r_   r   rv   r|   rñ   r9   r    Úrel_entrr°  rD   rD   rE   Útest_rel_entr*  s   0r·  c                  C   sR   t  g d¢¡} g d¢}| d d …df }| d d …df }tt ||¡|ddd� d S )N))gp¬ÝäBî?gÄ¬ÝäBî?)gø‰tK&ÃÞ?gCŒtK&ÃÞ?)g>”ÑƒO'é?gvŽÑƒO'é?)gãÿÿÿÿÿ½gQÿÿÿÿW"½g¨    G=r   rZ   rR   rÉ  )r_   r   r   r    r¶  ©Úinputsr!  rô   r  rD   rD   rE   Ú test_rel_entr_gh_20710_near_zero<  s
   rº  c                  C   s^   t jdd� t g d¢¡} g d¢}| d d …df }| d d …df }tt  ||¡|ddd� d S )	Nrë  rì  ))rJ   çX™çë¨ö )r  gZb××çti)r»  g  4&õkC)gMÂá«G.¦@g)ØZ?—g åwaò)§€r   rZ   rR   rÉ  )r    Úseterrr_   r   r   r¶  r¸  rD   rD   rE   Útest_rel_entr_gh_20710_overflowO  s   
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 )NrO   rß  rL   r„   r  rÈ   c                 S   s@   | dk rt jS t  |¡| k rdt  |¡ S | t  |¡d|    S )Nr   r„   )r_   r   r˜  Úsquare©Údeltar;  rD   rD   rE   r›  j  s
   ztest_huber.<locals>.xfuncr&  r§  r   rZ   rR   rÉ  )r   r    Úhuberr_   r   r   r¾  re   Úrandnr|   rñ   r9   ©r›  r   rŽ  rD   rD   rE   Ú
test_hubere  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 )Nr   rL   rZ   )r_   r   r   r¿  rD   rD   rE   r›  x  s
   "z test_pseudo_huber.<locals>.xfuncr&  rL   r   r„   r§  rZ   rR   rÉ  )
r_   r   re   rÂ  Útolistr|   rñ   r9   r    Úpseudo_huberrÃ  rD   rD   rE   Útest_pseudo_huberw  s   (0rÇ  c                  C   s*   d} d}t  | |¡}d}t||dd� d S )Nr…   g¬CÒÑ]r2<gs.-“„De8rR   rS   )r    rÆ  r   )rÀ  r;  r  r!  rD   rD   rE   Útest_pseudo_huber_small_r…  s
   rÈ  c                   C   sv   t jtdd�� tddƒ W d   ƒ n1 sw   Y  t jtdd�� tddƒ W d   ƒ d S 1 s4w   Y  d S )NzToo many predicted coefficientsr.  rW   )r“  Úwarnsr±  r*   r+   rD   rD   rD   rE   Ú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ÚTestStirling2rZ   r   )r   rZ   rZ   )r   rZ   r‹   rZ   )r   rZ   rN   rP   rZ   )r   rZ   r{   rä   r&  rZ   )r   rZ   é   rY  éA   r{   rZ   )r   rZ   é?   rW  i^  éŒ   r‹  rZ   )	r   rZ   é   iÆ  i¥  é  i
  é   rZ   )
r   rZ   éÿ   iÑ  iZ  i'  iV
  iÎ  é$   rZ   )r   rZ   r~   ér$  i9…  i¦  i+Y  éø  iî  rß   rZ   zis_exact, comp, kwargsTFrT   r   c                 C   sR   t dt| jƒƒD ]}tt |d ƒƒ}| j| }||t|g||d�fi |¤Ž qd S )NrZ   r:  )ru   r¤  ÚtablerE  r,   )rC   Úis_exactÚcompÚkwargsrh   Úk_valuesÚrowrD   rD   rE   Útest_table_cases«  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:  rJ   rL   rÌ   r‹   rä   )r,   r×  ©rC   rØ  rÙ  rÚ  rD   rD   rE   Útest_valid_single_integerµ  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 )NrO   r:  r   rL   ©r,   rÞ  rD   rD   rE   Útest_negative_integerÁ  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&  r‹   rJ   r:  )r×  r,   r   )rC   rØ  rÙ  rÚ  ÚansrD   rD   rE   Útest_array_inputsË  s&   
þý

þýþýzTestStirling2.test_array_inputsrR   c                 C   s8   g d¢}g d¢}g d¢}|t |||d�|fi |¤Ž d S )N)r   rZ   r‹   rä   rÑ  rÖ  rÕ  )rO   r   r‹   rÌ   r½  r&  r&  )r­  r   rL   r‹   rÌ   rN   r‹   r:  rà  ©rC   rØ  rÙ  rÚ  râ  rh   ri   rD   rD   rE   Ú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:  rL   c                    s,   g | ]}t  ˆ |d   d ˆ | ¡d  ‘qS )rL   rZ   )rr  r?  r@  r˜  rD   rE   rB  ñ  s   , z5TestStirling2.test_correct_parity.<locals>.<listcomp>N)r_   r   r   r,   )rC   ÚKrD   r˜  rE   Ú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�|ƒsJ ‚t d	d
gƒ}ddg}ddg}tt||dd�|ƒs4J ‚d S )Nl   V^–;Ú. l   ák4Ô-Trä   rV   rK   rJ   Tr:  l	   D,"ÒSBX¡p!NæÑ l   wY®)ÄHŠ_î1e_é*   r°  é   )r   r   r,   )rC   râ  rh   ri   rD   rD   rE   Útest_big_numbersô  s   ÿzTestStirling2.test_big_numbersrà  r(  rÈ   y      @      ð?Ú12rç  )rP  r‹   Ú2NrØ  c                 C   s>   t  t¡� t|||d� W d   ƒ d S 1 sw   Y  d S )Nr:  )r“  r   Ú	TypeErrorr,   )rC   rà  rç  rØ  rD   rD   rE   Útest_unsupported_input_types  s   "ÿz*TestStirling2.test_unsupported_input_typesc                 C   sz   t | jd dd … ƒ}t g d¢td�}t g d¢td�}t t¡� tt|||d�|ƒ W d   ƒ d S 1 s6w   Y  d S )NrJ   rZ   ©rJ   rJ   rJ   rJ   r4  ©rZ   rL   r‹   rJ   r:  )r   r×  rn  r“  r   rî  r   r,   )rC   rØ  râ  rh   ri   rD   rD   rE   Ú!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 )NrJ   rZ   rð  r4  rñ  Fr:  )r   r×  r1   r,   rä  rD   rD   rE   Ú#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)rZ   r{   rä   r&  )rZ   rN   rP   rZ   )rÌ   rÌ   rÌ   rÌ   rð  rñ  r:  rJ   )r   rZ   rL   r‹   rJ   rÌ   c                 S   s   g | ]}g d ¢‘qS ))r   rZ   rN   rP   rZ   r   rD   )rA  r©  rD   rD   rE   rB  ,  s    zDTestStirling2.test_broadcasting_arrays_correctly.<locals>.<listcomp>rÌ   F)r   r,   ru   rä  rD   rD   rE   Ú"test_broadcasting_arrays_correctly  s    z0TestStirling2.test_broadcasting_arrays_correctlyc                 C   sp   t tdddƒƒ}|D ]+}t td|d ƒƒ}t|g|dd�}|t|g|dd� }t t || ¡¡dk s5J ‚q
d S )	Né3   ræ  rÌ   rZ   Tr:  Fgñhãˆµøô>)rE  ru   r,   r_   rG  r˜  )rC   rô   rh   Ú	k_entriesÚdenomrw   rD   rD   rE   Útest_temme_rel_max_error/  s   üz&TestStirling2.test_temme_rel_max_errorN)r�  r‘  r’  r×  r“  r”  r7  r   r   rÝ  rß  rá  rã  rå  rè  rë  r_   rÎ   rï  rò  ró  rô  rø  rD   rD   rD   rE   rË  œ  sr    õþ
þ
þ
þ
þ

	þ
þ
rË  c                   @   s6   e Zd Zdd„ Zej deeg¡dd„ ƒZ	dd„ Z
dS )	ÚTestLegendreDeprecationc                 C   s@   d}t j|d�� tddƒ}W d   ƒ d S 1 sw   Y  d S )Nz$`scipy.special.lpn` is deprecated...r.  rZ   r   )r“  rV  r-   ©rC   rW  r©  rD   rD   rE   Útest_warn_lpn<  s   "ÿz%TestLegendreDeprecation.test_warn_lpnÚxlpmnc                 C   sL   d|j › d�}tj|d�� |dddƒ}W d   ƒ d S 1 sw   Y  d S )Nz`scipy.special.z` is deprecated...r.  rZ   r   )r�  r“  rV  )rC   rü  Úmessager©  rD   rD   rE   Útest_warn_xlpmnA  s   "ÿz'TestLegendreDeprecation.test_warn_xlpmnc                 C   sF   d}t j|d�� t dddd¡}W d   ƒ d S 1 sw   Y  d S )Nz)`scipy.special.sph_harm` is deprecated...r.  rZ   r   )r“  rV  r    rx  rú  rD   rD   rE   Útest_warn_sph_harmG  s   "ÿz*TestLegendreDeprecation.test_warn_sph_harmN)r�  r‘  r’  rû  r“  r”  r7  r.   r/   rþ  rÿ  rD   rD   rD   rE   rù  :  s
    
rù  rÄ  )’r­  rÊ  r¯  r�  r€  rf  r_   r   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r“  r   r  Únumpy.testingr   r   r   r   r   r   r   r   r   Úscipyr    Úscipy.special._ufuncsÚ_ufuncsr@   Úscipy.specialr!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   Úscipy._lib._utilr0   r1   Úscipy._lib._array_apir2   r3   r4   Úscipy.special._basicr5   r6   r7   Úscipy.special._testutilsr8   r9   r:   rr  Úarchitecturer¾  rK  rG  r=   r–  r»  rÂ  rÆ  rû  rÿ  r  r8  ra  r•  rŸ  rÁ  r×  rå  r	  r  r0  r3  rÊ  rÝ  ró  r  r7  r  r  r  r%  r(  r)  r/  rD  rI  rM  rO  rT  rd  rr  r{  r}  r~  r†  r‡  r‰  rŠ  r‘  r“  Úfixturer–  r—  r¤  r¦  r¬  rµ  r·  rº  r½  rÄ  rÇ  rÈ  r”  r`  rÊ  rË  rù  rD   rD   rD   rE   Ú<module>   sâ   X,
þý       @|	 rGE  ,b
 $     UDC) `    \!
		7	
)&=


	 