
    -ii             	       t   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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$ d dl%m&Z& d dl'm&c m(Z) d dl*m+Z+m,Z,m-Z- d dl*m.Z.m/Z/m0Z0m1Z1m2Z2 d dl*m3Z3 d d	l*m4Z4m5Z5m6Z6 d d
l7m8Z8m9Z9 d dl:m;Z;m<Z<m=Z= d dl>m?Z?m@Z@mAZA d dlBmCZCmDZDmEZE d dlFmGZG d dlHZHej        dk    s ejI                    d          dk    rejJ        nejK        ZL G d d          ZM G d d          ZN G d d          ZO G d d          ZP G d d          ZQ G d d          ZR G d d          ZS G d d           ZT G d! d"          ZU G d# d$          ZV G d% d&          ZW G d' d(          ZX G d) d*          ZY G d+ d,          ZZ G d- d.          Z[ G d/ d0          Z\ G d1 d2          Z]dd3Z^ G d4 d5          Z_ G d6 d7          Z` G d8 d9          Za G d: d;          Zb G d< d=          Zc G d> d?          Zd G d@ dA          Ze G dB dC          Zf G dD dE          ZgdF ZhdG Zi G dH dI          Zj G dJ dK          Zk G dL dM          Zl G dN dO          Zm G dP dQ          Zn G dR dS          Zo G dT dU          Zp G dV dW          Zq G dX dY          Zr G dZ d[          Zs G d\ d]          Zt G d^ d_          Zud` Zvda Zwejx        y                    dbej         dcdddeej        ejz        g          df             Z{ejx        y                    dgej         dcdddeej        ejz        g          dh             Z|ejx        y                    dbej         dcdddeej        ejz        g          di             Z}ejx        y                    dgej         dcdddeej        ejz        g          dj             Z~dk Zdl Zdm Zdn Zdo Zej        dp             ZeCdq             Zdr Zds Zdt Zdu Zdv Zdw Zdx Zdy Zdz Zd{ Zd| Z G d} d~          Zd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_array_equalassert_assert_allcloseassert_array_almost_equal_nulp)special)ellipeellipkellipkm1)elliprcelliprdelliprfelliprgelliprj)softplus)mathieu_odd_coefmathieu_even_coef	stirling2)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)quadwin3232bitc                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)e*j+        ,                    d()          d*             Z-d+ Z.d, Z/d- Z0d. Z1d/ Z2d0 Z3d1 Z4d2 Z5d3 Z6d4 Z7d5 Z8d6 Z9d7 Z:d8 Z;d9 Z<d: Z=d; Z>d< Z?d= Z@d> ZAd? ZBd@ ZCdA ZDdB ZEdC ZFdD ZGdE ZHdF ZIdG ZJdH ZKdI ZLdJ ZMdK ZNdL ZOdM ZPdN ZQdO ZRdP ZSdQ ZTdR ZUdS ZVdT ZWdU ZXdV ZYdW ZZdX Z[dY Z\dZ Z]d[ Z^d\ Z_d] Z`d^ Zad_ Zbd` Zcda Zddb Zedc Zfdd Zgde Zhdf Zidg Zjdh Zkdi Zle*j+        m                    djg dk          dl             Zndm Zoe*j+        m                    djg dn          do             Zpdp Zqdq Zrdr Zsds Ztdt Zudu Zvdv Zwdw Zxdx Zydy Zzdz Z{d{ Z|d| Z}d} Z~d~ Zd Zd Zd Ze*j+        ,                    d)          d             Ze*j+        ,                    d)          d             Ze*j+        ,                    d)          d             Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )
TestCephesc                 .    t          j        d           d S Nr   )cephesairyselfs    d/var/www/html/bet.cuttalo.com/ml/venv/lib/python3.11/site-packages/scipy/special/tests/test_basic.py	test_airyzTestCephes.test_airy<       A    c                 .    t          j        d           d S r;   )r<   airyer>   s    r@   
test_airyezTestCephes.test_airye?   s    QrC   c           	         t          j        g d          }t          j        g d          }t          j        t          j        |d d d f         |d d d f                                                 dd          j        }t          j        g dg dg dg dg          }t          t          j        |                                |d	
           t           j	        
                    d          }t           j        t          j        dd          d|                    d          z  dz
  f         }t          j        dd          }t          j        t          j        |d d d f         |d d d f                                                 dd          j        }t          t          j        t          j        |d d df         |d d df         dz            |dd           d S )N)gL7A`?   g@   )   皙?   gffffff
@rJ   )g޸g	TշJ?g	7?geLF)   g*+ @r   gM{@)gףp=
%@gϔ>@g<wg$@)   g,y3@iK  g5@vIh%<=rtol  i       r   f           ?绽|=atolrR   )npr   broadcast_arraysreshapeTr3   r<   binomravelrandomRandomStater   r   rand)r?   nknkrknownrngs         r@   
test_binomzTestCephes.test_binomB   s   H((())H%%%&&Xb)!AAAdF)QtAAAvY??  2q 	 # # ##Q#Q#QFFF@@@B C C 	&,GGGG i##D))E")B##T#((2,,%6%<<=IaXb)!AAAdF)QtAAAvY??  2q 	 	&, ,r!!!A#w111Q390EFF$5	2 	2 	2 	2 	2 	2rC   c           	         t           j                            d           t           j        t          j        ddd                   }t          j        dd          }t          j        t          j        |d d d f         |d d d f                                                 dd          j	        }t          t          j        t          j        |d d df         |d d df         d	z            |d
d
           d S )NrS   rX   ,     r   rW   rJ   rM   rY   rZ   r[   )r]   rc   seedr   logspacer   r   r^   r_   r`   r3   r<   ra   )r?   rf   rg   rh   s       r@   test_binom_2zTestCephes.test_binom_2Y   s    
	tE"+ab))*IaXb)!AAAdF)QtAAAvY??  2q 	 	&, ,r!!!A#w111Q390EFF$5	2 	2 	2 	2 	2 	2rC   c           	      "   t           j        d             }t           j                            d           t          j        dd          }t          j        dd          }t          j        t          j        |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 S )	Nc                     t          |           } t          |          }d}d}t          d|dz             D ]}||| z   |z
  z  }||z  }t          ||z            S NrX   )intrangefloat)rf   rg   numdenis        r@   	binom_intz.TestCephes.test_binom_exact.<locals>.binom_intg   sj    AAAACC1ac]]  q1uqy qS>>!rC   rS   rX      r   rJ   rM   r[   )r]   	vectorizerc   ro   r   r   r^   r_   r`   r3   r<   ra   )r?   r{   rf   rg   rh   s        r@   test_binom_exactzTestCephes.test_binom_exactf   s   		" 	" 
	" 		tIaIaXb)!AAAdF)QtAAAvY??  2q 	111Q32aaac7"#&,#)BqqqsGR!W55 q	* 	* 	* 	* 	* 	*rC   c                     g d}t          j        |          }t          t          j        |ddd                                           d S )N))rU   rV   gwP~)i  i  gii9~)i  i  gyhY~)i  i  gpvy~)i  i  gzN~)i  i  gGTɳ~)i  i  g@jH~)i  i  gF:aYͦ~)i  i  gɸV)i  i  g
{9)i  i  gyVxY)i    g*I y)i   i   gI)i  i  gW@N)i  i  g5y)r   rX   rJ   -q=rQ   )r]   r   r4   r<   ra   check)r?   datasets     r@   test_binom_nooverflow_8346z%TestCephes.test_binom_nooverflow_8346}   sQ    
 
 
" *W%%w>>>DDFFFFFrC   c                 N    t          t          j        ddd          d           d S )NrX         ?      ?)r   r<   bdtrr>   s    r@   	test_bdtrzTestCephes.test_bdtr   s&    V[1S))#.....rC   c                 N    t          t          j        ddd          d           d S NrX      r   )r   r<   bdtrir>   s    r@   
test_bdtrizTestCephes.test_bdtri   &    V\!Ac**3/////rC   c                 N    t          t          j        ddd          d           d S r   )r   r<   bdtrcr>   s    r@   
test_bdtrczTestCephes.test_bdtrc   r   rC   c                 N    t          t          j        ddd          d           d S NrX   r         @)r   r<   bdtrinr>   s    r@   test_bdtrinzTestCephes.test_bdtrin   &    V]1Qq))#.....rC   c                 2    t          j        ddd           d S r   )r<   bdtrikr>   s    r@   test_bdtrikzTestCephes.test_bdtrik   s    a#rC   c                 J    t          t          j        d          d           d S Nr           )r   r<   beir>   s    r@   test_beizTestCephes.test_bei        VZ]]3'''''rC   c                 J    t          t          j        d          d           d S r   )r   r<   beipr>   s    r@   	test_beipzTestCephes.test_beip        V[^^C(((((rC   c                 J    t          t          j        d          d           d S Nr   r   )r   r<   berr>   s    r@   test_berzTestCephes.test_ber   r   rC   c                 J    t          t          j        d          d           d S r   )r   r<   berpr>   s    r@   	test_berpzTestCephes.test_berp   r   rC   c                 N    t          t          j        ddd          d           d S r   )r   r<   
besselpolyr>   s    r@   test_besselpolyzTestCephes.test_besselpoly   s'    V&q1--c22222rC   c                 P    t          t          j        d          ddd           d S )NrX   r   ư>r   r[   )r   r<   cbrtr>   s    r@   	test_cbrtzTestCephes.test_cbrt   s'    A$Q??????rC   c                 L    t          t          j        dd          d           d S NrX   r   r   )r   r<   chdtrr>   s    r@   
test_chdtrzTestCephes.test_chdtr   s$    V\!A&&s+++++rC   c                 L    t          t          j        dd          d           d S NrX   r   r   )r   r<   chdtrcr>   s    r@   test_chdtrczTestCephes.test_chdtrc   $    V]1Q'',,,,,rC   c                 L    t          t          j        dd          d           d S NrX   r   )r   r<   chdtrir>   s    r@   test_chdtrizTestCephes.test_chdtri   r   rC   c                 N    t          t          j        ddd          d           d S Nr   rX   r   )r   r<   chndtrixr>   s    r@   test_chndtrixzTestCephes.test_chndtrix   &    V_Qq++C00000rC   c                 J    t          t          j        d          d           d S r   )r   r<   cosdgr>   s    r@   
test_cosdgzTestCephes.test_cosdg        V\!__S)))))rC   c                 J    t          t          j        d          d           d S r   )r   r<   cosm1r>   s    r@   
test_cosm1zTestCephes.test_cosm1   r   rC   c                 P    t          t          j        d          ddd           d S )N-   r   v!>r   r[   )r   r<   cotdgr>   s    r@   
test_cotdgzTestCephes.test_cotdg   s)    R((#FCCCCCCrC   c                     t          t          j        d          d           t          t          j        d          d           d S )Nr   r   gGz?gf?)r   r<   dawsnr   r>   s    r@   
test_dawsnzTestCephes.test_dawsn   s;    V\!__S)))T**,?@@@@@rC   c                    g d}t          j        dt           j        z  dz                                 t           j                  }t          t          j        ||          ddd           t          j        dt           j        z  dz                                 t           j                  }t          t          j        ||          dd	d           t          j        dt           j        z  d
z                                 t           j                  }t          t          j        ||          dd	d           t          t           d          rgt          j        dt           j        z  dz                                 t           j
                  }t          t          j        ||          ddd           g d}t          j        dt           j        z  dz                                 t           j                  }t          t          j        ||          dd	d           t          j        dt           j        z  dt           j        z  dt           j        z            }g d}t          t          j        |d          |d	d           d S )N)rX         rJ   g-C6
?r   r   r   r[   &.> [n<V瞯<float128r   g"<)rJ   rH            皙?)gg?gsOB?gsaL?g
7I^ʿr   )r]   r   r   astypefloat32r   r   diricfloat64hasattrr   r   )r?   n_oddxn_evenoctave_results        r@   
test_diriczTestCephes.test_diric   s	    

HQruWt^$$++BJ77a//6JJJJHQruWt^$$++BJ77a//7KKKKHQruWu_%%,,RZ88a//7KKKK2z"" 	P255))00==AGM!U33SwQOOOOHQruWt^$$++BJ77a00$W1MMMM Ic"%iRUCI66@ @ @a++]qQQQQQQrC   c                     t          j        d          }t          j        g d          }t          t	          j        |d d t           j        f         |          j        |j        |j        fk               d S )Nr   )rX   r   rL   )	r]   r   r   r   r   r   newaxisshapesize)r?   r   rf   s      r@   test_diric_broadcastingz"TestCephes.test_diric_broadcasting   sb    IaLLHYYYa2:.228QVQV<LLMMMMMrC   c                 J    t          t          j        d          d           d S NrX   r   )r   r<   r   r>   s    r@   test_ellipezTestCephes.test_ellipe   "    V]1%%c*****rC   c                 L    t          t          j        dd          d           d S r   )r   r<   	ellipeincr>   s    r@   test_ellipeinczTestCephes.test_ellipeinc   %    V%a**3/////rC   c                 0    t          j        dd           d S Nr   rX   )r<   ellipjr>   s    r@   test_ellipjzTestCephes.test_ellipj   s    arC   c                 P    t          t          d          t          dz             d S )Nr   rJ   )r   r   r   r>   s    r@   test_ellipkzTestCephes.test_ellipk   s"    q		2a4(((((rC   c                 L    t          t          j        dd          d           d S r   )r   r<   	ellipkincr>   s    r@   test_ellipkinczTestCephes.test_ellipkinc   r   rC   c                 J    t          t          j        d          d           d S r   r   r<   erfr>   s    r@   test_erfzTestCephes.test_erf   s     VZ]]C(((((rC   c                 z    d}t          t          j        |          t          j        |           z   d           d S )Ng#8x@r   r   r?   r   s     r@   test_erf_symmetryzTestCephes.test_erf_symmetry   s4    VZ]]VZ^^3S99999rC   c                 J    t          t          j        d          d           d S r   )r   r<   erfcr>   s    r@   	test_erfczTestCephes.test_erfc  s     V[^^S)))))rC   c                 P    t          t          j        d          ddd           d S )NrJ   g      Y@r   r   r[   )r   r<   exp10r>   s    r@   
test_exp10zTestCephes.test_exp10  s'    QTBBBBBBrC   c                 J    t          t          j        d          d           d S )NrJ         @)r   r<   exp2r>   s    r@   	test_exp2zTestCephes.test_exp2  r   rC   c                 |   t          t          j        d          d           t          t          j        t          j                  t          j                   t          t          j        t          j                   d           t          t          j        t          j                  t          j                   d S )Nr   r   rM   )r   r<   expm1r]   r   nanr>   s    r@   
test_expm1zTestCephes.test_expm1
  sz    V\!__S)))V\"&))26222V\26'**B///V\"&))2622222rC   c                 
   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   rX   rJ   rH   r   rM   )r<   r  r   complexr]   r   r  )r?   r  s     r@   test_expm1_complexzTestCephes.test_expm1_complex  s;   UU6]]F+++UU7261--..0B0BCCCUU7261--..0G0GHHHUU7261--..0H0HIIIUU7261--.."&0I0IJJJUU7261--..0H0HIIIUU71bf--..0G0GHHHUU71bf--..0G0GHHHUU726262233WRVRV5L5LMMMUU7BF7BF3344gb!nnEEEUU7BF7BF3344gb!nnEEEUU726262233WRVRV5L5LMMMUU71bf--..0G0GHHHUU71bf--..0G0GHHHUU7261--..0G0GHHHUU726262233WRVRV5L5LMMMMMrC   z-The real part of expm1(z) bad at these pointsreasonc                 P   t          j        g d          }t          j        t          j        |                     }|d|z  z   }t          j        g d          }t	          j        |          }t          |j        |j        d           t          |j        |j        d           d S )N)皙?r   333333?r      rn                 ?)y=Cw?yC7gg)gF<Ug?yQ<D*?yg:><sKy>񸣼$	Um>ly;Vl <@r   rn   )	r]   r   r   r
   r<   r  r   imagr   )r?   yr   zexpectedfounds         r@   test_expm1_complex_hardz"TestCephes.test_expm1_complex_hard#  s     H///00VBF1II1H 8 J J J K K Q&uz8=!DDD&uz8="EEEEErC   c                     t          t          j        ddd          d           t          t          j        ddd          dd	           d S )
NrX   r   r   r   r   
   g2?r   rQ   )r   r<   fdtrr   r>   s    r@   	test_fdtrzTestCephes.test_fdtr8  sW    V[Aq))3///D!R002D"	$ 	$ 	$ 	$ 	$ 	$rC   c                     t          t          j        ddd          d           t          t          j        ddd          dd	           d S )
NrX   r   r   rJ   r  g    _BgDIXl?r   rQ   )r   r<   fdtrcr   r>   s    r@   
test_fdtrczTestCephes.test_fdtrc>  sY    V\!Q**C000 	QT224G"	$ 	$ 	$ 	$ 	$ 	$rC   c                     t          t          j        ddddg          t          ddg          d           d}t          t          j        d	d|          d
d           d S )NrX   gV-?gx&1?g
}?g<zO'?r   rQ   g׀?r  r   r   )r   r<   fdtrir   )r?   ps     r@   
test_fdtrizTestCephes.test_fdtriE  ss    QE5>::y*566T	C 	C 	C 	C %S!Q//??????rC   c                     d\  }}}t          t          j        ||t          j        |||                    |d           d S )N)rX   P  g\/չ=@r   rQ   )r   r<   r-  r'  )r?   dfddfnr   s       r@   test_gh20835zTestCephes.test_gh20835M  sE    1S!S#v{3Q/G/GHH!RWXXXXXXrC   c                 N    t          t          j        ddd          d           d S )NrX   r   )r   r<   r-  r>   s    r@   test_fdtri_mysterious_failurez(TestCephes.test_fdtri_mysterious_failureR  s&    Q3//33333rC   c                 N    t          t          j        ddd          d           d S r   )r   r<   fdtridfdr>   s    r@   test_fdtridfdzTestCephes.test_fdtridfdU  r   rC   c                 J    t          t          j        d          d           d S Nr   r   r   )r   r<   fresnelr>   s    r@   test_fresnelzTestCephes.test_fresnelX  s"    V^A&&y11111rC   c                 J    t          t          j        d          d           d S Nr         8@)r   r<   gammar>   s    r@   
test_gammazTestCephes.test_gamma[  s     V\!__T*****rC   c                 L    t          t          j        dd          d           d S )Nr   rX   r   )r   r<   gammainccinvr>   s    r@   test_gammainccinvzTestCephes.test_gammainccinv^  s%    V(1--c22222rC   c                 .    t          j        d           d S )Nr&  )r<   gammalnr>   s    r@   test_gammalnzTestCephes.test_gammalna  s    rrC   c                 <   t          j        t           j         dddddddt           j        g	t           j                  }t          j        t           j        t           j        dd	d	ddddg	t           j                  }t          t          j        |          |           d S )
N      gffffff       r   rX   g@r   r   )r]   r   r   r   r  r   r<   gammasgn)r?   vals	references      r@   test_gammasgnzTestCephes.test_gammasgnd  s    xfWb$dCC@"*
 
 HVRVS$c3SA2:
 
	 	6?400)<<<<<rC   c                 N    t          t          j        ddd          d           d S r   )r   r<   gdtrr>   s    r@   	test_gdtrzTestCephes.test_gdtrm  &    V[1Q'',,,,,rC   c                 b    t          t          j        ddt          j                  d           d S r   )r   r<   rS  r]   r   r>   s    r@   test_gdtr_infzTestCephes.test_gdtr_infp  s(    V[1RV,,S11111rC   c                 N    t          t          j        ddd          d           d S r   )r   r<   gdtrcr>   s    r@   
test_gdtrczTestCephes.test_gdtrcs  &    V\!Aa((-----rC   c                 N    t          t          j        ddd          d           d S r   )r   r<   gdtriar>   s    r@   test_gdtriazTestCephes.test_gdtriav  r   rC   c                 2    t          j        ddd           d S NrX   r   )r<   gdtribr>   s    r@   test_gdtribzTestCephes.test_gdtriby  s    a!rC   c                 2    t          j        ddd           d S NrX   r  )r<   gdtrixr>   s    r@   test_gdtrixzTestCephes.test_gdtrix}  s    a"rC   c                 0    t          j        dd           d S rt   )r<   hankel1r>   s    r@   test_hankel1zTestCephes.test_hankel1      qrC   c                 0    t          j        dd           d S rt   )r<   hankel1er>   s    r@   test_hankel1ezTestCephes.test_hankel1e      !rC   c                 0    t          j        dd           d S rt   )r<   hankel2r>   s    r@   test_hankel2zTestCephes.test_hankel2  rj  rC   c                 0    t          j        dd           d S rt   )r<   hankel2er>   s    r@   test_hankel2ezTestCephes.test_hankel2e  rn  rC   c                     t          t          j        ddd          t          d          dd           t          t          j        ddd          d	dd           t          j        ddd           d S )
NrX   r   r   r   r[   r   rH   g㈮?)r   r<   hyp1f1r   r>   s    r@   test_hyp1f1zTestCephes.test_hyp1f1  sv    aA..Ct!LLLLaB//1H!	+ 	+ 	+ 	+a!rC   c                 P    t          t          j        dddd          d           d S r   )r   r<   hyp2f1r>   s    r@   test_hyp2f1zTestCephes.test_hyp2f1  (    V]1Qq++C00000rC   c                 J    t          t          j        d          d           d S r   )r   r<   i0r>   s    r@   test_i0zTestCephes.test_i0       VYq\\#&&&&&rC   c                 J    t          t          j        d          d           d S r   )r   r<   i0er>   s    r@   test_i0ezTestCephes.test_i0e  r   rC   c                 J    t          t          j        d          d           d S r   )r   r<   i1r>   s    r@   test_i1zTestCephes.test_i1  r  rC   c                 J    t          t          j        d          d           d S r   )r   r<   i1er>   s    r@   test_i1ezTestCephes.test_i1e  r   rC   c                 .    t          j        d           d S rt   )r<   it2i0k0r>   s    r@   test_it2i0k0zTestCephes.test_it2i0k0      qrC   c                 .    t          j        d           d S rt   )r<   it2j0y0r>   s    r@   test_it2j0y0zTestCephes.test_it2j0y0  r  rC   c                 .    t          j        d           d S rt   )r<   
it2struve0r>   s    r@   test_it2struve0zTestCephes.test_it2struve0  s    !rC   c                 .    t          j        d           d S rt   )r<   itairyr>   s    r@   test_itairyzTestCephes.test_itairy      arC   c                 J    t          t          j        d          d           d S r;  )r   r<   iti0k0r>   s    r@   test_iti0k0zTestCephes.test_iti0k0  "    V]1%%i00000rC   c                 J    t          t          j        d          d           d S r;  )r   r<   itj0y0r>   s    r@   test_itj0y0zTestCephes.test_itj0y0  r  rC   c                 J    t          t          j        d          d           d S r   )r   r<   itmodstruve0r>   s    r@   test_itmodstruve0zTestCephes.test_itmodstruve0  s#    V(++C00000rC   c                 J    t          t          j        d          d           d S r   )r   r<   	itstruve0r>   s    r@   test_itstruve0zTestCephes.test_itstruve0  s#    V%a((-----rC   c                 L    t          t          j        dd          d           d S r   )r   r<   ivr>   s    r@   test_ivzTestCephes.test_iv  "    VYq^^C(((((rC   c                 L    t          t          j        dd          d           d S r   )r   r<   iver>   s    r@   test_ivezTestCephes.test_ive  "    VZ!__S)))))rC   c                 J    t          t          j        d          d           d S r   )r   r<   j0r>   s    r@   test_j0zTestCephes.test_j0  r  rC   c                 J    t          t          j        d          d           d S r   )r   r<   j1r>   s    r@   test_j1zTestCephes.test_j1  r  rC   c                 L    t          t          j        dd          d           d S r   )r   r<   jnr>   s    r@   test_jnzTestCephes.test_jn  r  rC   c                 L    t          t          j        dd          d           d S r   )r   r<   jvr>   s    r@   test_jvzTestCephes.test_jv  r  rC   c                 L    t          t          j        dd          d           d S r   )r   r<   jver>   s    r@   test_jvezTestCephes.test_jve  r  rC   c                 .    t          j        d           d S NrJ   )r<   k0r>   s    r@   test_k0zTestCephes.test_k0      	!rC   c                 .    t          j        d           d S r  )r<   k0er>   s    r@   test_k0ezTestCephes.test_k0e      
1rC   c                 .    t          j        d           d S r  )r<   k1r>   s    r@   test_k1zTestCephes.test_k1  r  rC   c                 .    t          j        d           d S r  )r<   k1er>   s    r@   test_k1ezTestCephes.test_k1e  r  rC   c                 .    t          j        d           d S r  )r<   keir>   s    r@   test_keizTestCephes.test_kei  r  rC   c                 J    t          t          j        d          d           d S r   )r   r<   keipr>   s    r@   	test_keipzTestCephes.test_keip  r   rC   c                 .    t          j        d           d S r  )r<   kerr>   s    r@   test_kerzTestCephes.test_ker  r  rC   c                 .    t          j        d           d S r  )r<   kerpr>   s    r@   	test_kerpzTestCephes.test_kerp  rB   rC   c                 .    t          j        d           d S r  )r<   kelvinr>   s    r@   test_kelvinzTestCephes.test_kelvin  r  rC   c                 0    t          j        dd           d S rt   )r<   knr>   s    r@   test_knzTestCephes.test_kn      	!ArC   c                     t          t          j        d          d           t          t	          j        t          j        t          j                                       d S r   )r   r<   kolmogir   r]   r   r  r>   s    r@   test_kolmogizTestCephes.test_kolmogi  sF    V^A&&s+++//0011111rC   c                 J    t          t          j        d          d           d S r   )r   r<   
kolmogorovr>   s    r@   test_kolmogorovzTestCephes.test_kolmogorov  s#    V&q))3/////rC   c                 J    t          t          j        d          d           d S )Nr   rM  )r   r<   _kolmogpr>   s    r@   test_kolmogpzTestCephes.test_kolmogp  s"    V_Q''.....rC   c                 J    t          t          j        d          d           d S r   )r   r<   _kolmogcr>   s    r@   test_kolmogczTestCephes.test_kolmogc  s"    V_Q''-----rC   c                     t          t          j        d          d           t          t	          j        t          j        t          j                                       d S r   )r   r<   	_kolmogcir   r]   r   r  r>   s    r@   test_kolmogcizTestCephes.test_kolmogci  sH    V%a((#...)"&112233333rC   c                 0    t          j        dd           d S rt   )r<   kvr>   s    r@   test_kvzTestCephes.test_kv  r  rC   c                 0    t          j        dd           d S rt   )r<   kver>   s    r@   test_kvezTestCephes.test_kve       
1QrC   c                 8   t           j        }t           |d          d           t           |d          t          j                    t           |d          t          j                   t           |t          j                  t          j                   d S )Nr   r   rM   )r<   log1pr   r]   r   r  )r?   r  s     r@   
test_log1pzTestCephes.test_log1p  sy    UU1XXs###UU2YY(((UU2YY'''UU26]]BF+++++rC   c           	      P   t           j        }t          }t           |d          d           t           | |dd                     |t          j         d                     t          j                    5  t          j        ddt                     t           | |dt          j                             |t          j        t          j        dz                       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        z  d	z                       t           | |t          j        t          j                             |t          j        t          j        d	z                       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                             d d d            d S # 1 swxY w Y   d S )
Nr  rM   r   ignorez%invalid value encountered in multiplyrX   rJ   r   rH   )r<   r  r  r   r]   r   warningscatch_warningsfilterwarningsRuntimeWarningr   r   r  )r?   r  cs      r@   test_log1p_complexzTestCephes.test_log1p_complex
  sy   UU6]]F+++UU11R88__aamm444$&& 	F 	F#A>S S SEE!!Arv,,//262571C1CDDDqqBF||,,aa.?.?@@@EE!!RVGQ--00!!BFBE2B2BCCCqq||,,aall;;;EE!!RVGRV"4"455qq257K7KLLLEE!!BFBF"3"344aaa6H6HIIIqq001111RVRV3D3DEEEqq"&"&1122AAbfbf4E4EFFFqq001111RVRV3D3DEEEqq||,,aa.?.?@@@qq001111RVRV3D3DEEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	Fs   8NPP"Pc                 N    t          t          j        ddd          d           d S )Nr   rX   r   )r   r<   lpmvr>   s    r@   	test_lpmvzTestCephes.test_lpmv  rU  rC   c                 ~    t          j        g d          }t          t          j        |d          |dz             d S N)rX   rJ   r   r   rJ   )r]   r   r   r<   	mathieu_ar?   ms     r@   test_mathieu_a_q0zTestCephes.test_mathieu_a_q0!  <    HYYYV%a++QT22222rC   z	m, q, ref))r      gs66%)r         ?g:$Zb"@)r         ?g5`VU 9@)r
  gq^A3P@c                 T    t          j        ||          }t          ||d           d S Nr   rQ   )r<   r  r   r?   r  qrefr   s        r@   test_mathieu_azTestCephes.test_mathieu_a(  1     Q""3U++++++rC   c                 ~    t          j        g d          }t          t          j        |d          |dz             d S r  )r]   r   r   r<   	mathieu_br  s     r@   test_mathieu_b_q0zTestCephes.test_mathieu_b_q03  r	  rC   ))rX   r|   g*|2T6)r   r   gkBv/9@)	   r  ggf@T@)r&  gY@c                 T    t          j        ||          }t          ||d           d S r  )r<   r  r   r  s        r@   test_mathieu_bzTestCephes.test_mathieu_b:  r  rC   c           
         t          t          j        ddd          d           t          j        d             }t          j        dd          }t          j        dt          j        ddd          f         }t          t          j        |d d d f         |d d d f         d	          d          ||d d d f         |d d d f         d	          d
d           d S )NrX   r   r   r   c                    |t           j        dz  z  }| dk    rddd|z  t          d|z            z  z
  z  S | dk    r(t          |          |dz  t          d|z            z  z
  S | dk    r.t          d|z            |t          d	|z            d
z  dz
  z  z
  S t          | |z            |t          | dz   |z            d	| dz   z  z  t          | dz
  |z            d	| dz
  z  z  z
  z  z
  S )N   r   g;f?rX   r   rJ   r
  r   rH      r  )r]   r   r
   r  r  r!  s      r@   	ce_smallqz.TestCephes.test_mathieu_cem.<locals>.ce_smallqI  s    sNAAvv A1S1XX$566a1vv!c!A#hh..a1Q3xx!S1XXb[3%6"777 1Q3xx!S!A#q\\1ac7%;c1Q3'llAqQRsG>T%T"UUUrC   d   r&  rh|?+=rR   r\   )	r   r<   mathieu_cemr]   r}   r   r   rp   r   )r?   r"  r  r  s       r@   test_mathieu_cemzTestCephes.test_mathieu_cemE  s    V'!A..y999 
	V 	V 
	V IaE!R[b"---.*1QQQtV9aQQQiGGJ!	!AAAdF)QtAAAvY>>"	, 	, 	, 	, 	, 	,rC   c           
         t          t          j        ddd          d           t          j        d             }t          j        dd          }t          j        dt          j        ddd          f         }t          t          j        |d d d f         |d d d f         d	          d          ||d d d f         |d d d f         d	          d
d           d S )NrX   r   r   r   c                    |t           j        dz  z  }| dk    r(t          |          |dz  t          d|z            z  z
  S | dk    r+t          d|z            |t          d|z            z  dz  z
  S t          | |z            |t          | dz   |z            d| dz   z  z  t          | dz
  |z            d| dz
  z  z  z
  z  z
  S )Nr  rX   r
  r   rJ   rH   r   )r]   r   r	   r!  s      r@   	se_smallqz.TestCephes.test_mathieu_sem.<locals>.se_smallqb  s    sNAAvv1vv!c!A#hh..a1Q3xx!C!HH*R-// 1Q3xx!S!A#q\\1ac7%;c1Q3'llAqQRsG>T%T"UUUrC   r#  r$  r%  r&  r&  r'  r(  )	r   r<   mathieu_semr]   r}   r   r   rp   r   )r?   r.  r  r  s       r@   test_mathieu_semzTestCephes.test_mathieu_sem^  s    V'!A..y999 

	V 
	V 

	V IaE!R[b"---.*1QQQtV9aQQQiGGJ!	!AAAdF)QtAAAvY>>"	, 	, 	, 	, 	, 	,rC   c                 N    t          t          j        ddd          d           d S NrX   r   r<  )r   r<   mathieu_modcem1r>   s    r@   test_mathieu_modcem1zTestCephes.test_mathieu_modcem1t  '    V+Aa229=====rC   c                 h   t          j        ddd           t          j        dd          d d d d f         }t          j        t          j        ddd                   d d d d f         }t          j        ddd          d d d d f         }t          j        |||           d         }t          j        ||d          d          t          j        ||d          d         z  }t          j        |||          d          d|z  t          j        |||          d         z  z
  }t          ||d	           d S )
NrX   r   rH   r  rJ   r&  rL   rZ   rQ   )	r<   mathieu_modcem2r]   r   r   rp   linspacer3  r   r?   r  r  r!  y1fry2s          r@   test_mathieu_modcem2zTestCephes.test_mathieu_modcem2w  s2   q1%%% IaOOAAAd4K(E"+b!R(()$qqq+6K1a  d111-#Aq1"--a0$Q1--a0063I!QPQ3R3RST3UU%aA..q11"V+Aq!44Q778 	BU++++++rC   c                 N    t          t          j        ddd          d           d S r2  )r   r<   mathieu_modsem1r>   s    r@   test_mathieu_modsem1zTestCephes.test_mathieu_modsem1  r5  rC   c                 d   t          j        ddd           t          j        dd          d d d d f         }t          j        t          j        ddd                   d d d d f         }t          j        ddd          d d d d f         }t          j        |||           d         }t          j        ||d          d         t          j        ||d          d         z  }t          j        |||          d         d|z  t          j        |||          d         z  z
  }t          ||d	           d S )
NrX   rH   r  rJ   r&  r   rL   rZ   rQ   )	r<   mathieu_modsem2r]   r   r   rp   r8  r?  r   r9  s          r@   test_mathieu_modsem2zTestCephes.test_mathieu_modsem2  s)   q1%%% IaOOAAAd4K(E"+b!R(()$qqq+6K1a  d111-#Aq1"--a0#Aq!,,Q/&2HAq2Q2QRS2TT$Q1--a0"V+Aq!44Q778BU++++++rC   c                    t          t          j        ddd          t          j        t          j        f           t          t          j        ddd          t          j        t          j        f           t          t          j        ddd          t          j        t          j        f           t          t          j        ddd          t          j        t          j        f           t          t          j        ddd          t          j        t          j        f           t          t          j        ddd          t          j        t          j        f           t          t          j        ddd          t          j        t          j        f           t          t          j	        ddd          t          j        t          j        f           d S )N'  r   g?r  )
r   r<   r)  r]   r  r/  r3  r?  r7  rB  r>   s    r@   test_mathieu_overflowz TestCephes.test_mathieu_overflow  sH   V'q#668HIIIV'q#668HIIIV'sC882626:JKKKV'sC882626:JKKKV+E3<<rvrv>NOOOV+E3<<rvrv>NOOOV+E3<<rvrv>NOOOV+E3<<rvrv>NOOOOOrC   c                     t          d          D ]H}t          j        ddd          }t          |d         dd           t          |d	         d
d           Id S )N<   rJ   r#  rM   r   g.dS?rZ   rQ   rX   gGc?-C6?)rv   r<   rB  r   )r?   rg   vs      r@   test_mathieu_ticket_1847z#TestCephes.test_mathieu_ticket_1847  sr     r 	G 	GA&q#r22AAaD":GGGGAaD":FFFFF		G 	GrC   c                 .    t          j        d           d S r;   )r<   modfresnelmr>   s    r@   test_modfresnelmzTestCephes.test_modfresnelm      1rC   c                 .    t          j        d           d S r;   )r<   modfresnelpr>   s    r@   test_modfresnelpzTestCephes.test_modfresnelp  rO  rC   c                 L    t          t          j        dd          d           d S r   )r   r<   	modstruver>   s    r@   test_modstruvezTestCephes.test_modstruve  r   rC   c                 N    t          t          j        ddd          d           d S r   )r   r<   nbdtrr>   s    r@   
test_nbdtrzTestCephes.test_nbdtr  r[  rC   c                 N    t          t          j        ddd          d           d S r   )r   r<   nbdtrcr>   s    r@   test_nbdtrczTestCephes.test_nbdtrc  r   rC   c                 N    t          t          j        ddd          d           d S r   )r   r<   nbdtrir>   s    r@   test_nbdtrizTestCephes.test_nbdtri  r   rC   c                 2    t          j        ddd           d S )NrX   rK   r   )r<   nbdtrikr>   s    r@   test_nbdtrikzTestCephes.test_nbdtrik  s    qBrC   c                 N    t          t          j        ddd          d           d S r   )r   r<   nbdtrinr>   s    r@   test_nbdtrinzTestCephes.test_nbdtrin  s&    V^Aa**3/////rC   c                 P    t          t          j        dddd          d           d S r   )r   r<   ncfdtrr>   s    r@   test_ncfdtrzTestCephes.test_ncfdtr  r|  rC   c                     t          t          j        dddd          d           g d}t          j        ddd|          }t	          t          j        ddd|          |           d S )NrX   r   r   )r   rX   r  rJ   r   r  )r   r<   ncfdtrirf  r   )r?   fr.  s      r@   test_ncfdtrizTestCephes.test_ncfdtri  sf    V^Aq!Q//555MMM!QQ''q!S!44a88888rC   zpncfdtr uses a Boost math implementation but ncfdtridfdinverts the less accurate cdflib implementation of ncfdtr.c                     g d}t          j        d|dd          }t          t          j        d|dd          |           d S )NrX   rJ   r   rJ   r  r|   )r<   rf  r   
ncfdtridfd)r?   r2  r.  s      r@   test_ncfdtridfdzTestCephes.test_ncfdtridfd  sI     iiM!S$++)!Qb993?????rC   zpncfdtr uses a Boost math implementation but ncfdtridfninverts the less accurate cdflib implementation of ncfdtr.c                     g d}t          j        |ddd          }t          t          j        |ddd          |d           d S )N)r  rX   rJ   r   g     @rJ   r  r|   gh㈵>rQ   )r<   rf  r   
ncfdtridfn)r?   r3  r.  s      r@   test_ncfdtridfnzTestCephes.test_ncfdtridfn  sP     "!!M#q$++)!Qb993TJJJJJJrC   zoncfdtr uses a Boost math implementation but ncfdtrincinverts the less accurate cdflib implementation of ncfdtr.c                     g d}t          j        dd|d          }t          t          j        dd|d          |           d S )N)r   r         @rJ   r   r|   )r<   rf  r   	ncfdtrinc)r?   ncr.  s      r@   test_ncfdtrinczTestCephes.test_ncfdtrinc  sI     __M!QB''(Aq"55r:::::rC   c           	      R   t          t          j        ddd          d           t          t          j        ddd          d           t          t          j        t          j        dd          dd	d
           t          t	          j        t          j        dt          j        d                               t          t          j        ddt          j                  ddd
           t          t	          j        t          j        t          j        dd                               t          t	          j        t          j        dt          j        d                               t          t	          j        t          j        ddt          j                                       d S )NrX   r   r   r  i   r   r   r   rI  r[   rt        $@r   )	r   r<   nctdtrr   r]   r   r   r   r  r>   s    r@   test_nctdtrzTestCephes.test_nctdtr  s2   V]1Qq))#...V]1eR00#666bfb"55sANNNNr2637788999b"bf55r1MMMMrvr26677888r2626677888r2rv667788888rC   c                 2    t          j        ddd           d S )NrX   r   r   )r<   	nctdtridfr>   s    r@   test_nctdtridfzTestCephes.test_nctdtridf  s    3q!!!!!rC   c                 2    t          j        ddd           d S r`  )r<   	nctdtrincr>   s    r@   test_nctdtrinczTestCephes.test_nctdtrinc  s    1QrC   c                 2    t          j        ddd           d S )Nr  r   r   )r<   nctdtritr>   s    r@   test_nctdtritzTestCephes.test_nctdtrit   s    3r"""""rC   c                 T    t          t          j        ddd          ddd           d S )Nr   rX   r   r   r   r[   )r   r<   nrdtrimnr>   s    r@   test_nrdtrimnzTestCephes.test_nrdtrimn  s-    Q22CdKKKKKKrC   c                 T    t          t          j        ddd          ddd           d S )Nr   r   r   r[   )r   r<   nrdtrisdr>   s    r@   test_nrdtrisdzTestCephes.test_nrdtrisd  s:    C44ca	) 	) 	) 	) 	) 	)rC   c                 4    t          j        dddd           d S r`  )r<   obl_ang1r>   s    r@   test_obl_ang1zTestCephes.test_obl_ang1
      !Aa     rC   c                     t          j        ddddd          }t          |d         ddd           t          |d         ddd           d S )NrX   r   r   r   r[   r   )r<   obl_ang1_cvr   )r?   results     r@   test_obl_ang1_cvzTestCephes.test_obl_ang1_cv  sV    #Aa!A..q	3V!<<<<q	3V!<<<<<<rC   c                 N    t          t          j        ddd          d           d S NrX   r   rt  )r   r<   obl_cvr>   s    r@   test_obl_cvzTestCephes.test_obl_cv  r   rC   c                 4    t          j        dddd           d S r`  )r<   obl_rad1r>   s    r@   test_obl_rad1zTestCephes.test_obl_rad1  r  rC   c                 6    t          j        ddddd           d S r`  )r<   obl_rad1_cvr>   s    r@   test_obl_rad1_cvzTestCephes.test_obl_rad1_cv  !    1Qq1%%%%%rC   c                 4    t          j        dddd           d S r`  )r<   obl_rad2r>   s    r@   test_obl_rad2zTestCephes.test_obl_rad2  r  rC   c                 6    t          j        ddddd           d S r`  )r<   obl_rad2_cvr>   s    r@   test_obl_rad2_cvzTestCephes.test_obl_rad2_cv  r  rC   c                 L    t          t          j        dd          d           d S )NrX   r   r,  )r   r<   pbdvr>   s    r@   	test_pbdvzTestCephes.test_pbdv!  s$    V[1%%i00000rC   c                 0    t          j        dd           d S r`  )r<   pbvvr>   s    r@   	test_pbvvzTestCephes.test_pbvv$      AarC   c                 0    t          j        dd           d S r`  )r<   pbwar>   s    r@   	test_pbwazTestCephes.test_pbwa'  r  rC   c                     t          j        dd          }t          |t          j        d          dd           t          j        g dd          }t          |g d           d S )Nr   rX   rM   r   r[   r   rX   rJ   )rX   rX   rX   )r<   pdtrr   r]   r   r   r?   vals     r@   	test_pdtrzTestCephes.test_pdtr*  sa    k!QRVBZZf1====k)))Q''3			*****rC   c                     t          j        dd          }t          |dt          j        d          z
  dd           t          j        g dd          }t          |g d           d S )	Nr   rX   rM   r   r[   r  r   )r   r   r   )r<   pdtrcr   r]   r   r   r  s     r@   
test_pdtrczTestCephes.test_pdtrc1  se    l1a  Q^&qAAAAl999c**3			*****rC   c                     t          j                    5  d}t          j        d|t                     t	          j        dd           d d d            d S # 1 swxY w Y   d S )N-floating point number truncated to an integerr  r   )r  r  r  r  r<   pdtrir?   msgs     r@   
test_pdtrizTestCephes.test_pdtri8  s    $&& 	" 	"AC#Hc>BBBLS!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   3AAAc                 4    t          j        dddd           d S r`  )r<   pro_ang1r>   s    r@   test_pro_ang1zTestCephes.test_pro_ang1?  r  rC   c           	      r    t          t          j        ddddd          t          d          dd           d S )NrX   r   r  r   r[   )r   r<   pro_ang1_cvr   r>   s    r@   test_pro_ang1_cvzTestCephes.test_pro_ang1_cvB  sG    *1aAq995;L;L#!	- 	- 	- 	- 	- 	-rC   c                 N    t          t          j        ddd          d           d S r  )r   r<   pro_cvr>   s    r@   test_pro_cvzTestCephes.test_pro_cvF  r   rC   c                 4    t          j        dddd           d S rd  )r<   pro_rad1r>   s    r@   test_pro_rad1zTestCephes.test_pro_rad1I  s    !Ac"""""rC   c                 6    t          j        ddddd           d S r`  )r<   pro_rad1_cvr>   s    r@   test_pro_rad1_cvzTestCephes.test_pro_rad1_cvL  r  rC   c                 4    t          j        dddd           d S r`  )r<   pro_rad2r>   s    r@   test_pro_rad2zTestCephes.test_pro_rad2O  r  rC   c                 6    t          j        ddddd           d S r`  )r<   pro_rad2_cvr>   s    r@   test_pro_rad2_cvzTestCephes.test_pro_rad2_cvR  r  rC   c                 .    t          j        d           d S rt   )r<   psir>   s    r@   test_psizTestCephes.test_psiU  r  rC   c                 N    t          t          j        ddd          d           d S r;   )r   r<   radianr>   s    r@   test_radianzTestCephes.test_radianX  s&    V]1Qq))!,,,,,rC   c                 J    t          t          j        d          d           d S r   )r   r<   rgammar>   s    r@   test_rgammazTestCephes.test_rgamma[  r   rC   c                    t          t          j        d          d           t          t          j        d          d           t          t          j        d          d           t          t          j        d          d           t          t          j        d	          d           t          t          j        d
          d           d S )N333333@      @333333      g@r  gg            @rL  )r   r<   roundr>   s    r@   
test_roundzTestCephes.test_round^  s    V\#&&s+++V\$''---V\#&&s+++V\$''---V\#&&s+++V\$''-----rC   c                 .    t          j        d           d S rt   )r<   shichir>   s    r@   test_shichizTestCephes.test_shichif  r  rC   c                    t          j        d           t          j        t          j                  \  }}t	          |t          j        dz  dd           t	          |ddd           t          j        t          j                   \  }}t	          |t          j         dz  dd           t          t          j        |          d           d S )NrX   r   r   r   r[   z cosine integral(-inf) is not nan)r<   sicir]   r   r   r   r   r   )r?   sr  s      r@   	test_sicizTestCephes.test_sicii  s    A{26""1253;V!<<<<162222{BF7##1BE6C<f1====?@@@@@rC   c                 J    t          t          j        d          d           d S NZ   r   )r   r<   sindgr>   s    r@   
test_sindgzTestCephes.test_sindgt  "    V\"%%c*****rC   c                     t          t          j        dd          d           t          t	          j        t          j        dt          j                                       d S )NrX   r  ?)r   r<   smirnovr   r]   r   r  r>   s    r@   test_smirnovzTestCephes.test_smirnovw  sJ    V^Ab))#..."&112233333rC   c                 T   t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t	          j        t          j        dt          j                                       d S )	NrX   r  rM   rJ         ?      r   g      ȿ)r   r<   	_smirnovpr   r]   r   r  r>   s    r@   test_smirnovpzTestCephes.test_smirnovp{  s    V%a,,b111V%a..0@AAAV%a..0@AAA)!RV445566666rC   c                    t          t          j        dd          d           t          t	          j        t          j        dt          j                                       t	          j        dddd          }t          t          j        d|          dt          j	        d|          z
  dd	           t	          j        ddd
d          }t          t          j        d|          dt          j	        d|          z
  dd	           d S )NrX   r  r   r  Tendpointr   r   r[   r   rH   )
r   r<   	_smirnovcr   r]   r   r  r8  r   r  )r?   x10x4s      r@   test_smirnovczTestCephes.test_smirnovc  s    V%a++C000)!BF3344555k!QT222(C00!fnQ6L6L2L#!	- 	- 	- 	-[Aq4000(B//V^Ar5J5J1J#!	- 	- 	- 	- 	- 	-rC   c           	      f   t          t          j        dt          j        dd                    ddd           t          t          j        dt          j        dd                    ddd           t	          t          j        t          j        dt
          j                                       d S NrX   rK   r   r   r[   333333?)r   r<   r  smirnovir   r]   r   r  r>   s    r@   test_smirnovizTestCephes.test_smirnovi  s    q&/!S*A*ABBC#!	- 	- 	- 	-q&/!S*A*ABBC#!	- 	- 	- 	-26223344444rC   c           	      f   t          t          j        dt          j        dd                    ddd           t          t          j        dt          j        dd                    ddd           t	          t          j        t          j        dt
          j                                       d S r  )r   r<   r  
_smirnovcir   r]   r   r  r>   s    r@   test_smirnovcizTestCephes.test_smirnovci  s    (F,=a,E,EFF#!	- 	- 	- 	-(F,=a,E,EFF#!	- 	- 	- 	-*1RV445566666rC   c                 J    t          t          j        d          d           d S r   )r   r<   spencer>   s    r@   test_spencezTestCephes.test_spence  r   rC   c                     t          t          j        dd          d           t          t          j        dd          ddd           t          t          j        dd          ddd           d S )	NrX   r   r   r  r   r[   rJ   gMoF?)r   r<   stdtrr   r>   s    r@   
test_stdtrzTestCephes.test_stdtr  sj    V\!A&&s+++Q**DvAFFFFQ**NaPPPPPPrC   c                 0    t          j        dd           d S )Nffffff?rX   )r<   stdtridfr>   s    r@   test_stdtridfzTestCephes.test_stdtridf  s    ArC   c                 0    t          j        dd           d S )NrX   r  )r<   stdtritr>   s    r@   test_stdtritzTestCephes.test_stdtrit  s    qrC   c                 L    t          t          j        dd          d           d S r   )r   r<   struver>   s    r@   test_struvezTestCephes.test_struve  r   rC   c                 J    t          t          j        d          d           d S )Nr   r   )r   r<   tandgr>   s    r@   
test_tandgzTestCephes.test_tandg  r  rC   c                 R    t          t          j        dd          ddd           d S )NrX   r   r   r   r[   )r   r<   tklmbdar>   s    r@   test_tklmbdazTestCephes.test_tklmbda  s+    q!,,cQGGGGGGrC   c                 .    t          j        d           d S rt   )r<   y0r>   s    r@   test_y0zTestCephes.test_y0  r  rC   c                 .    t          j        d           d S rt   )r<   r:  r>   s    r@   test_y1zTestCephes.test_y1  r  rC   c                 0    t          j        dd           d S rt   )r<   ynr>   s    r@   test_ynzTestCephes.test_yn  r  rC   c                 0    t          j        dd           d S rt   )r<   yvr>   s    r@   test_yvzTestCephes.test_yv  r  rC   c                 0    t          j        dd           d S rt   )r<   yver>   s    r@   test_yvezTestCephes.test_yve  r  rC   c                    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 S )=Ng@g+п皙ٿr  r  rt  r   r   g      "g      "@g4׵/Yg8EGr?r  gffffff@ig>@r   g|Pk?r  rX   ir  r  i   ig     j@  ļBg0"bgpتO#M?gMF>?g5-g`?g	S+?g6U?gǗʿgjD{?/,Gg` 0Gg!^?gnF5o{gI\Y?g7f8goC9	?gyhgEbr?g{g.
?ga~gT-s?gɤ,P&?g|bgޗY3g!ؑ-@gi$bghgy(V@^gһ>g>gx\h<rP   rQ   )r  r3   r<   wofz)r?   r!  ws      r@   	test_wofzzTestCephes.test_wofz  s;   U8$$gd2&6&6BS__gc#..B%f--ws3/?/?SG 4 4R]]GCOOWQs^^R__gc#..T0B0B FFH HGIK KGHJ JHIK KFFH HGIK KDGI IHIK KHIK KJ HGI IHGI IFFH HFFH HFFH HFFH H?!
D 	&+q!%888888rC   N)__name__
__module____qualname__rA   rF   rk   rq   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/  r4  r6  r9  r>  rC  rF  rI  rQ  rT  rW  rZ  r^  rb  rf  ri  rm  rq  rt  rx  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  parametrizer  r  r  r*  r0  r4  r=  r@  rC  rF  rK  rN  rR  rU  rX  r[  r^  ra  rd  rg  rk  ro  rr  rw  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+  r2   rC   r@   r9   r9   ;   s           2 2 2.2 2 2* * *.G G G,/ / /0 0 00 0 0/ / /  ( ( () ) )( ( () ) )3 3 3@ @ @, , ,- - -- - -1 1 1* * ** * *D D DA A AR R R2N N N
+ + +0 0 0  ) ) )0 0 0) ) ): : :* * *C C C) ) )3 3 3N N N& [MNNF F ONF($ $ $$ $ $@ @ @Y Y Y
4 4 41 1 12 2 2+ + +3 3 3  = = =- - -2 2 2. . ./ / /              1 1 1' ' '( ( (' ' '( ( (        1 1 11 1 11 1 1. . .) ) )* * *' ' '' ' ') ) )) ) )* * *          ) ) )        2 2 20 0 0/ / /. . .4 4 4    , , ,F F F(- - -3 3 3 [	. 	. 	. , , ,3 3 3 [	, 	, 	, , , ,, , ,2, , ,,> > >, , , > > >, , ,	P 	P 	PG G G    0 0 0. . ./ / // / /     0 0 01 1 19 9 9 [I   @ @ @
 [I   K K K
 [I   ; ; ;

9 
9 
9" " "     # # #L L L) ) )! ! != = =
/ / /! ! !& & &! ! !& & &1 1 1    + + ++ + +" " "! ! !- - -/ / /# # #& & &! ! !& & &  - - -+ + +. . .  	A 	A 	A+ + +4 4 47 7 7- - -5 5 57 7 7+ + +Q Q Q
    - - -+ + +H H H          *9 *9 *9 *9 *9rC   r9   c                       e Zd Zd Zd Zd Zd Zej        	                    d          d             Z
ej        	                    d          d             ZdS )	TestAiryc                 J   t          j        d          }t          |t          g d          dd           t          j        d          }t          |t          g d          dd           t          j        d          }t          |t          g d	          dd           d S )
NGz?)g*?gTk'kPĿge+?gyCyt?+i)+P>r   r[   g=
ףp=?)g'$'?geοgL?g
HVV?g
ףp=
׿)gl@D|?gV~׭ͿgU?g3{ɔ?)r   r=   r   r   r  s     r@   rA   zTestAiry.test_airy  s     L5!R!R!RSS#!	- 	- 	- 	-L5!Q!Q!QRR#!	- 	- 	- 	-L5!O!O!OPP#!	- 	- 	- 	- 	- 	-rC   c                    t          j        d          }t          j        d          }d gdz  }t          d          D ]-}||         t	          dt          d          z            z  ||<   .t          dd          D ]H}||         t	          t          t          dt          d          z                                 z  ||<   It          ||dd           d S )N{Gz?rH   rJ   gN贁N{?Tqs*>r   r[   )	r   rE   r=   rv   r   r   absr   r   )r?   abb1rf   s        r@   rF   zTestAiry.test_airye  s    M$LVAXq 	6 	6AaD\$t**4555BqEEq 	B 	BAaDc$|DJJ'>"?"?@@@AAABqEE2F333333rC   c                 @   t          j        d          }t          ddg          t          ddg          t          ddg          t          dd	g          f}t          ||d
d           t          j        d          }t          |d         t          g d          dd           t          |d         t          g d          dd           t          |d         t          g d          dd           t          |d         t          g d          dd           d S )NrJ   glgoe2+
g(0[g X*JgUfݿg˰zU`?g4c1=C?gCuTa2U0*#?r   r[   r   )g&g(.2+
gRg}`g%́p~=rX   )g7;1[ge*JgVwgL g<3La㧝=)gNݿg3%IQ`?gZyΌ׿gʀ11^?g33tտr   )gqM0=C?g7uTg\G`?gp⍞vg$.m?)r   bi_zerosr   r   )r?   bibias      r@   test_bi_zeroszTestAiry.test_bi_zeros  s   a  k:.//k;/00k:.//j+.//1 	Cf15555a  1u &: &: &:  ;  ;
 %1	. 	. 	. 	. 	1u &: &: &:  ;  ;
 %1	. 	. 	. 	. 	1u &: &: &:  ;  ;
 %1	. 	. 	. 	. 	1u &9 &9 &9  :  :
 %1	. 	. 	. 	. 	. 	.rC   c           	          t          j        d          }t          |t          dg          t          dg          t          dg          t          dg          fdd           d S )	NrX   gcqg!xLgMSt$?g ~:p?rH  r   r[   )r   ai_zerosr   r   )r?   ais     r@   test_ai_zeroszTestAiry.test_ai_zeros)  sp    a  UK=11"K=11"F8__"F8__. $!		- 	- 	- 	- 	- 	-rC   r   c                    t          j        d          \  }}}}t          j        |          \  }}}}t          j        |          \  }}	}}dt          |          dz  z  }
t          |          dz  }t	          ||d           t	          ||d           t	          ||
z  ddd           t	          |	|z  ddd           t	          |d d         g d	d           t	          |d d         g d
d           d S )Nr1  rX   r  rZ   rQ   r   r[   rN   )guqgqHkZg4g9Ζ%gB~gL")gLgQO	gMQnGg3:g)}g )r   rP  r=   rC  r   )r?   r!  zpai_zpxaip_zxai_zaip_z_ai_zpaip_zpai_envelopeaip_envelopes               r@   test_ai_zeros_bigzTestAiry.test_ai_zeros_big1  sP    ' 0 7 72vv#LOOeQ%l2..vq!A&2ww 	E2222E2222 	[(!%a@@@@|+QUCCCC 	"1": : :@E	G 	G 	G 	G 	2A2: : :@E	G 	G 	G 	G 	G 	GrC   c                    t          j        d          \  }}}}t          j        |          \  }}}}t          j        |          \  }}}}	dt          |          dz  z  }
t          |          dz  }t	          ||d           t	          ||d           t	          ||
z  ddd           t	          |	|z  ddd           t	          |d d         g d	d           t	          |d d         g d
d           d S )Nr1  rX   r  rZ   rQ   r   r[   rN   )gx&gg-2+
gRgg`gu%́g{ )g K;1[g*JgVwg<w gd
3g/{
")r   rK  r=   rC  r   )r?   r!  rT  bi_zpxbip_zxrY  bi_zbip_zbi_zpbip_zpbi_envelopebip_envelopes               r@   test_bi_zeros_bigzTestAiry.test_bi_zeros_bigJ  sP    ' 0 7 72vv#LOO1dE%l2..1eVA&2ww 	E2222E2222 	[(!%a@@@@|+QUCCCC 	"1": : :@E	G 	G 	G 	G 	2A2: : :@E	G 	G 	G 	G 	G 	GrC   N)r3  r4  r5  rA   rF   rN  rR  r6  r7  	fail_slowr^  rh  r:  rC   r@   r<  r<    s        - - -4 4 4#. #. #.J- - - [1G G G0 [1G G G G GrC   r<  c                       e Zd Zd ZdS )TestAssocLaguerrec                     t          j        dd          }t          j        ddd          }t          | |d          dd           t          j        ddd          }t          | |d          dd           d S )Nr  rX   r   r?  r   r[   )r   genlaguerreassoc_laguerrer   )r?   a1a2s      r@   test_assoc_laguerrez%TestAssocLaguerre.test_assoc_laguerree  s     A&&#Br!,,BBrFFa8888#Ab++BBqEEQ777777rC   N)r3  r4  r5  rq  r:  rC   r@   rk  rk  d  s#        8 8 8 8 8rC   rk  c                       e Zd Zd ZdS )TestBesselpolyc                     d S Nr:  r>   s    r@   r   zTestBesselpoly.test_besselpolyn      rC   N)r3  r4  r5  r   r:  rC   r@   rs  rs  m  s#            rC   rs  c                   z    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd ZdS )
TestKelvinc                 T    t          j        d          }t          |ddd           d S )NrJ   gT?iUMu>r   r[   )r   r   r   )r?   mbeis     r@   r   zTestKelvin.test_beis  s-    {1~~0vAFFFFFFrC   c                 T    t          j        d          }t          |ddd           d S )NrJ   gD,X?rz  r   r[   )r   r   r   )r?   mbeips     r@   r   zTestKelvin.test_beipx  s-    Q2aHHHHHHrC   c                 T    t          j        d          }t          |ddd           d S )NrJ   gPA4?rz  r   r[   )r   r   r   )r?   mbers     r@   r   zTestKelvin.test_ber}  s-    {1~~1QGGGGGGrC   c                 T    t          j        d          }t          |ddd           d S )NrJ   gii߿rz  r   r[   )r   r   r   )r?   mberps     r@   r   zTestKelvin.test_berp  s-    Q3&qIIIIIIrC   c                 r    t          j        d          }t          |t          g d          dd           d S )Nr   g&jj@g+"@g(rw+@gU2@g`<6@rH  r   r[   )r   	bei_zerosr   r   )r?   rL  s     r@   test_bei_zeroszTestKelvin.test_bei_zeros  sW    q!!E #- #- #- . .
 $!	- 	- 	- 	- 	- 	-rC   c                 r    t          j        d          }t          |t          g d          dd           d S )Nr   )gyWo.@g╲ݏ @gנ{)@gK11@gWc"5@r?  r   r[   )r   
beip_zerosr   r   )r?   bips     r@   test_beip_zeroszTestKelvin.test_beip_zeros  sW     ##U $8 $8 $8 9 9
 $!	- 	- 	- 	- 	- 	-rC   c                 r    t          j        d          }t          |t          g d          dd           d S )Nr   g\@g6ُ@gӟHY'@g>"D0@ggaO;4@rH  r   r[   )r   	ber_zerosr   r   )r?   r   s     r@   test_ber_zeroszTestKelvin.test_ber_zeros  W    ""U $. $. $. / /
 $!	- 	- 	- 	- 	- 	-rC   c                 r    t          j        d          }t          |t          g d          dd           d S )Nr   g '@gs%@gF ^-@gvۅj3@gB7@rH  r   r[   )r   
berp_zerosr   r   )r?   brps     r@   test_berp_zeroszTestKelvin.test_berp_zeros  sW     ##U $. $. $. / /
 $!	- 	- 	- 	- 	- 	-rC   c           
         t          j        d          }t          |t          j        d          t          j        d          dz  z   t          j        d          t          j        d          dz  z   t          j        d          t          j        d          dz  z   t          j	        d          t          j
        d          dz  z   fdd           d S )NrJ   r  r?  r   r[   )r   r  r   r   r   r  r  r   r   r  r  )r?   mkelvs     r@   r  zTestKelvin.test_kelvin  s    q!!AQ1B B 'AQ1B B 'Q',q//"2D D 'Q',q//"2D D F $!		- 	- 	- 	- 	- 	-rC   c                 T    t          j        d          }t          |ddd           d S )NrJ   g>ɿrz  r   r[   )r   r  r   )r?   mkeis     r@   r  zTestKelvin.test_kei  s-    {1~~2aHHHHHHrC   c                 T    t          j        d          }t          |ddd           d S )NrJ   gr@d"?rz  r   r[   )r   r  r   )r?   mkeips     r@   r  zTestKelvin.test_keip  s-    Q2aHHHHHHrC   c                 T    t          j        d          }t          |ddd           d S )NrJ   gܙUrz  r   r[   )r   r  r   )r?   mkers     r@   r  zTestKelvin.test_ker  s-    {1~~3&qIIIIIIrC   c                 T    t          j        d          }t          |ddd           d S )NrJ   g^.n3Jrz  r   r[   )r   r  r   )r?   mkerps     r@   r  zTestKelvin.test_kerp  s-    Q3&qIIIIIIrC   c                 r    t          j        d          }t          |t          g d          dd           d S )Nr   gE>Q@gB= @gPN)@gm91@g
%5@rH  r   r[   )r   	kei_zerosr   r   )r?   r  s     r@   test_kei_zeroszTestKelvin.test_kei_zeros  r  rC   c                 r    t          j        d          }t          |t          g d          dd           d S )Nr   gWf,@g?"@gFZ*o+@gOpN2@gEa6@rH  r   r[   )r   
keip_zerosr   r   )r?   r  s     r@   test_keip_zeroszTestKelvin.test_keip_zeros  W    !!$$e %/ %/ %/ 0 0
 $!	- 	- 	- 	- 	- 	-rC   c                 d   t          j        d          }|\  }}}}}}}}	t          |t          g d          dd           t          |t          g d          dd           t          |t          g d          dd           t          |t          g d          dd           t          |t          g d	          dd           t          |t          g d
          dd           t          |t          g d          dd           t          |	t          g d          dd           d S )Nr   r  rH  r   r[   r  )#?Q5U@q89 %@ol`.@gO0q3@r  r  )gum.@gݏ @gs{)@g䠄11@gN(D!5@gS@g89@@g^C'@g1ZG0@g+ڇ4@r  )r   kelvin_zerosr   r   )
r?   tmpberzbeizkerzkeizberpzbeipzkerpzkeipzs
             r@   test_kelvin_zeroszTestKelvin.test_kelvin_zeros  s   "1%%=@:dD$ueUe %/ %/ %/ 0 0
 $!	- 	- 	- 	- 	e %/ %/ %/ 0 0
 $!	- 	- 	- 	- 	e %/ %/ %/ 0 0
 $!	- 	- 	- 	- 	e %/ %/ %/ 0 0
 $!	- 	- 	- 	- 	u &0 &0 &0  1  1
 $!	- 	- 	- 	- 	u &0 &0 &0  1  1 $!	- 	- 	- 	- 	u &0 &0 &0  1  1
 $!	- 	- 	- 	- 	u &0 &0 &0  1  1
 $!	- 	- 	- 	- 	- 	-rC   c                 r    t          j        d          }t          |t          g d          dd           d S )Nr   )r  r  r  r  gD;q3@rH  r   r[   )r   	ker_zerosr   r   )r?   r  s     r@   test_ker_zeroszTestKelvin.test_ker_zeros  r  rC   c                 r    t          j        d          }t          |t          g d          dd           d S )Nr   r  rH  r   r[   )r   
kerp_zerosr   r   )r?   r  s     r@   test_kerp_zeroszTestKelvin.test_kerp_zeros  r  rC   N)r3  r4  r5  r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r:  rC   r@   rx  rx  r  s;       G G G
I I I
H H H
J J J
- - -- - -- - -- - -- - -I I II I IJ J JJ J J- - -- - -4- 4- 4-l- - -- - - - -rC   rx  c                       e Zd Zd ZdS )TestBernoullic                 r    t          j        d          }t          |t          g d          dd           d S )Nr   )r   r  g-!lV?r   g镲r   rH  r   r[   )r   	bernoullir   r   )r?   brns     r@   test_bernoullizTestBernoulli.test_bernoulli!  sW    ""U $, $, $, - - $!	- 	- 	- 	- 	- 	-rC   N)r3  r4  r5  r  r:  rC   r@   r  r     s#        - - - - -rC   r  c                   $    e Zd ZdZd Zd Zd ZdS )TestBetaz
    Test beta and betaln.
    c                    t          t          j        dd          d           t          t          j        dd          t          j        d                     t          t          j        dd          ddd	
           t          j        dd          }t          j        d          t          j        d          z  t          j        d          z  }t          ||d           d S )NrX   r   33333YN~h?   g6.8@rP   r   r(  rJ   rH   rN   rQ   )r   r   betar   rB  )r?   betbetgs      r@   	test_betazTestBeta.test_beta1  s    W\!Q''---VV44gmF6K6KLLLVS113E"	, 	, 	, 	, l1a  a  q!1!117=3C3CCT......rC   c                 n    t          t          j        t          j        dd                               d S )NrM   rJ   )r   r]   isinfr   r  r>   s    r@   test_beta_infzTestBeta.test_beta_inf;  s,    b!,,--.....rC   c                    t          t          j        dd          d           t          t          j        dd          t          j        d                     t          t          j        dd          ddd	
           t          j        dd          }t          t          t          j        dd                              }t          ||d           d S )NrX   r   r  r  r     gIs	@r'  r   r(  rJ   rH   rP   rQ   )r   r   betalnr   rH  r   rC  r  )r?   betlnr  s      r@   test_betalnzTestBeta.test_betaln>  s    W^Aq))3///vv66//	1 	1 	1vs335G"	, 	, 	, 	, q!$$#gl1a(())**s//////rC   N)r3  r4  r5  __doc__r  r  r  r:  rC   r@   r  r  ,  sK         / / // / /	0 	0 	0 	0 	0rC   r  c                      e Zd ZdZd Zej                            dg d          d             Zej                            dg d          d             Z	ej                            dg d	          d
             Z
ej                            dej        ej        ej        ej        ej        ej        g          ej                            dg d          d                         Zej                            ddej        fdej        fdej        fej        ej        dfej        fej        ej        dfej        fej        ej        dfej        fdddddddej        dfdfdej        dfdfdej        dfdfej        ddfdfej        ddfdfej        ddfdfdej        dfdfdej        dfdfdej        dfdfej        ddfdfej        ddfdfej        ddfdfg          d             Zej                            ddej        fdej        fdej        fej        ej        dfej        fej        ej        dfej        fej        ej        dfej        fdddd d!d"dej        dfdfdej        dfdfdej        dfdfej        ddfdfej        ddfdfej        ddfdfdej        dfdfdej        dfdfdej        dfdfej        ddfdfej        ddfdfej        ddfdfg          d#             Zej                            d$ej        ej        g          d%             Zej                            d&ej        d'fej        d(fg          ej                            d)d*d+g          d,                         Zd-S ).TestBetaIncz?
    Tests for betainc, betaincinv, betaincc, betainccinv.
    c                 ^   t          j        g d          }t          t          j        dd|          |           t          t          j        dd|          |           t          t          j        dd|          d|z
             t          t          j        dd|          d|z
             d S )N)r   r  rX   rX   )r]   r   r   r   betainc
betaincinvbetainccbetainccinvr  s     r@   
test_a1_b1zTestBetaInc.test_a1_b1O  s    H\\\""W_Q1--q111W'1a00!444W%aA..A666W(Aq111q599999rC   z
a, b, x, p))rJ   rH   g@w?r   )r  g     `e@rZ   g*?)r  r  g"Yx;r  )g   `1?g    ئAg\aY4g    ?)rH   i g-߇)?g;?c                 F   t          j        |||          }t          ||d           t          j        |||          }t          ||d           t          j        |||          }t          ||d           t          j        |||          }t          ||d           d S )Nr   rQ   g-a=rP   )r   r  r   r  btdtriabtdtrib)	r?   rD  rE  r   r.  p1x1ro  rF  s	            r@   test_betainc_and_inversesz%TestBetaInc.test_betainc_and_inversesf  s     _Q1%%AE****1a((AE****_Q1%%AE****_Q1%%AE******rC   ))      @r  r  g     ?)      @g     *@g      ?g&?)      ?r  g333333?gFoE?)r        2@r   gg2$Z?)r  r  gZd;?g6)r  rA  r  g`<)      0@r  g?g<dEA>)g?g7Ê@g/3J?Hz>c                     t          j        |||          }t          ||d           t          j        |||          }t          ||d           d S )N+<rQ   gV瞯=)r   r  r   r  )r?   rD  rE  r   r.  r  r  s          r@   test_betaincc_betainccinvz%TestBetaInc.test_betaincc_betainccinv  s\     aA&&AE**** Aq))AE******rC   za, b, y, ref))cj,@r  ghHISOa gڭ Y;)g      ,@g      -@g둤g}c]춫;)r  g      .@gUv \U,gS^%:)ry  g      ?gMoigKB;)r  g    i@g1$-g\_cp:c                 V    t          j        |||          }t          ||d           d S )Nr'  rQ   )r   r  r   )r?   rD  rE  r   r  r   s         r@   test_betaincinv_tiny_yz"TestBetaInc.test_betaincinv_tiny_y  s3    2 q!Q''3U++++++rC   funcargs))r   rJ   r   )r         r   )r  rt  333333ӿ)r  rt  皙?c                     t          j        d          5  t          j        t           j        d          5   ||  d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nraise)domainr  match)r   errstater6  r   SpecialFunctionError)r?   r  r  s      r@   test_betainc_domain_errorsz&TestBetaInc.test_betainc_domain_errors  s     W--- 	 	w;8LLL  d              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s3   !A!A	A!	A	A!A	A!!A%(A%zargs,expected)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   c                 B    t          j        | }t          ||           d S ru  )r   r  r   r?   r  r"  observeds       r@   test_betainc_edge_casesz#TestBetaInc.test_betainc_edge_cases  s&    < ?D)Xx(((((rC   )r  r   )r   r   )r  r   )r  r   )r  r   )r  r   c                 B    t          j        | }t          ||           d S ru  )r   r  r   r  s       r@   test_betaincc_edge_casesz$TestBetaInc.test_betaincc_edge_cases  s'    < #T*Xx(((((rC   dtypec                     t          j        dg|          }t          j        dg|          }t          j        |||          }t	          ||dt          j        |          j        z             d S )Nr   r  r   r&  rQ   )r]   r   r   r  r   r   eps)r?   r  rD  r   r  s        r@   test_gh21426zTestBetaInc.test_gh21426  so     HbT'''HcU%(((#Aq!,,RXe__-@(@AAAAAArC   zdtype, rtolrI  r   za, b, x, reference)#B;gO
;r   gE]tE?)r   gؗҜ<r   gF]tE?c                     t          j        ||          }t          j        ||          }t          j        ||          }t          j        |||          }t	          |||           d S )Nr  rQ   )r]   r   r   r  r   )r?   rD  rE  r   rP  r  rR   ress           r@   test_gh22682zTestBetaInc.test_gh22682  sn     HQe$$$HQe$$$HQe$$$oaA&&YT222222rC   N)r3  r4  r5  r  r  r6  r7  r9  r  r  r  r   r  r  r  r  r  r  r  r]   r  r   r  r
  r   r   r  r  r:  rC   r@   r  r  J  s$        : : :. [	6 	6 	6
7 
7+ +
7 
7+ [\
< 
< 
<= =+ += =+ [	7 	7 	7 , , ,& [Vgow7I&-ow&-&68K&M N N [V &I &I &I J J J JN N

 [bf%bf%bf%fbfc"BF+fbfc"BF+fbfc"BF+""""""263%263%263%fc3%fc3%fc3%263%263%263%fc3%fc3%fc3%1	
 :) ); :) [bf%bf%bf%fbfc"BF+fbfc"BF+fbfc"BF+""""""263%263%263%fc3%fc3%fc3%263%263%263%fc3%fc3%fc3%1	
 :) ); :) [Wrz2:&>??B B @?B []!z40!z5134 4 [1EFHI I3 3I I4 43 3 3rC   r  c                       e Zd Zd Zd Zd Zd Zej        	                    dg d          ej        	                    ddd	g          d
                         Z
d Zd Zd Zd ZdS )TestCombinatoricsc                    t          t          j        ddgddg          ddg           t          t          j        dd          d           t          t          j        ddd          d           t          t          j        dddd	          d
           t          d t	          d          D             t          j        dt          t	          d                              d           t          j        t                    j	        dz   }t          t          j        ||dz
  d          |           d}t          j        ddd          |k    sJ d S )Nr&  r   rH         ^@g     @j@Texactx   r  
repetition   c                 <    g | ]}t          j        d |d          S )rn   Tr  )r   comb).0rg   s     r@   
<listcomp>z/TestCombinatorics.test_comb.<locals>.<listcomp>  s)    LLLQb!4888LLLrC   r.  rn   r   r\   rX   l   hU7`S?Q r#  2   )
r   r   r  r   rv   listr]   iinforu   max)r?   iir"  s      r@   	test_combzTestCombinatorics.test_comb  sB   b"X1v66tEEER++T222W\"at444c:::W\"atEEEsKKKLL%))LLLReBii99	G 	G 	G 	G Xc]]"W\"bd$777<<<1|C4000H<<<<<<rC   c                     d}d}t          j        |          }t          j        |          }t          j        ||d          }t          j        ||d          }||k    sJ d S )NF   rT   Tr  )r]   int64r   r  )r?   rf   rg   np_nnp_kres_npres_pys          r@   test_comb_with_np_int64z)TestCombinatorics.test_comb_with_np_int64!  si    x{{x{{dD555a$///rC   c                    t          t          j        ddd          d           t          t          j        ddd          d           t          t          j        ddd          d           t          t          j        ddd          d           t          t          j        g dg d	          g d
           d S )NrJ   r   Tr  r   rM   FrJ   rM   rJ   r&  r   r   rM   r   )r   r   r   r  )r   r   r  r   r>   s    r@   test_comb_zerosz!TestCombinatorics.test_comb_zeros*      W\!Qd333Q777W\"at444a888W\!Rt444a888W\!Ru555q999^^^]]]CCEWEWEWXXXXXrC   c                 4   d}t          j        t          |          5  t          j        ddd           d d d            n# 1 swxY w Y   t          j        t          |          5  t          j        ddd           d d d            d S # 1 swxY w Y   d S )	Nz`exact=True`r  r  rH   Tr  r   g@)r6  r   
ValueErrorr   r  r  s     r@   test_comb_exact_non_int_errorz/TestCombinatorics.test_comb_exact_non_int_error1  s   ]:S111 	- 	-Lat,,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-]:S111 	- 	-LCt,,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s#   AA	A(BBBNr   r   r&  r  TFc                     t          j        |d|d          }|dk    sJ |rt          |          t          u snt          j        sJ d S d S )Nr   Tr  rX   )r   r  typeru   r]   r   )r?   r9  r  actuals       r@   test_comb_repetition_k_zeroz-TestCombinatorics.test_comb_repetition_k_zero8  s[    
 a%DAAA{{{{&+;tF||s""""""""""rC   c                     t          j        g d          }t          j        |ddd          }t          j        g d          }t	          ||           d S )Nr:  r   FTr  )r   r   r   )r]   r   r   r  r   )r?   r9  r  r"  s       r@   !test_comb_repetition_k_zero_arrayz3TestCombinatorics.test_comb_repetition_k_zero_arrayA  sV    HZZZ  a%DAAA8OOO,,VX&&&&&rC   c                     t          t          j        ddgddg          ddg           t          t          j        dd          ddd           t          t          j        ddd	
          d           d S )Nr&  r   rH        @g     @r   r   r[   Tr  i  )r   r   permr   r>   s    r@   	test_permzTestCombinatorics.test_permH  st    b"X1v66uFFFR++TQGGGGW\"at444c:::::rC   c                    t          t          j        ddd          d           t          t          j        ddd          d           t          t          j        ddd          d           t          t          j        ddd          d           t          t          j        g dg d	          g d
           d S )NrJ   r   Tr  r   rM   Fr2  r3  )r   r   r   rB  )r   r   rC  r   r>   s    r@   test_perm_zerosz!TestCombinatorics.test_perm_zerosM  r5  rC   c                    t          j        t          d          5  t          j        ddgddgd           d d d            n# 1 swxY w Y   t          j        t          d	          5  t          j        d
dd           d d d            n# 1 swxY w Y   t          j        t          d	          5  t          j        ddd           d d d            n# 1 swxY w Y   t          j        t          d	          5  t          j        ddd           d d d            n# 1 swxY w Y   t          j        t          d	          5  t          j        dd
d           d d d            d S # 1 swxY w Y   d S )Nzscalar integersr  rX   rJ   rH   r   Tr  zNon-integergffffff@rN   gffffffr   g333333      @)r6  r   r7  r   rC  r>   s    r@   test_perm_ivzTestCombinatorics.test_perm_ivT  s   ]:->??? 	5 	5L!Q!Qt4444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 ]:];;; 	- 	-Lat,,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-]:];;; 	. 	.Lq----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.]:];;; 	. 	.LD----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.]:];;; 	/ 	/Lc....	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/sY   AAA*BBB4CCC>D""D&)D&E--E14E1N)r3  r4  r5  r(  r0  r4  r8  r6  r7  r9  r>  r@  rD  rF  rI  r:  rC   r@   r  r    s        = = =     Y Y Y- - - [S***--[WtUm44< < 54 .-<' ' '; ; ;
Y Y Y/ / / / /rC   r  c                   P    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd ZdS )TestTrigonometricc                 X    t          j        d          }d}t          ||dd           d S )N   r  r   r   r[   r   r   r   )r?   cbcbrls      r@   r   zTestTrigonometric.test_cbrtd  s3    \"DvA666666rC   c                 X    t          j        d          }d}t          ||dd           d S )Ngfffff;@g鎖C@r?  r   r[   rN  )r?   cb1cbrl1s      r@   test_cbrtmorezTestTrigonometric.test_cbrtmorei  s3    l4  Ua888888rC   c                     t          j        d          }t          t          dz            }t	          ||dd           d S )Nr  rt  r?  r   r[   r   r   r
   r   r   )r?   cdgcdgrls      r@   r   zTestTrigonometric.test_cosdgn  s=    mBBsFUa888888rC   c                     t          j        d          }t          t          dz            }t	          ||dd           d S NrT   rH  r?  r   r[   rV  )r?   cdgmcdgmrls      r@   test_cosdgmorez TestTrigonometric.test_cosdgmores  s=    }R  RVf6::::::rC   c                 ,   t          j        d          t          j        d          t          j        t          dz            f}t          d          dz
  t          d          dz
  t          t          dz            dz
  f}t	          ||dd           d S )Nr   r  r&  rX   r?  r[   )r   r   r   r
   r   )r?   cscsrls      r@   r   zTestTrigonometric.test_cosm1x  s{    mAw}R00r"u1E1EFAqR3r"u::a<0DvA666666rC   c                     t          j        d          }t          t          dz            dz  }t	          ||dd           d S )NrT   rH  rM   r?  r   r[   r   r   r   r   r   )r?   ctctrls      r@   r   zTestTrigonometric.test_cotdg}  sB    ]22c6{{R DvA666666rC   c                     t          j        d          }t          t          dz            dz  }t	          ||dd           d S )Nr   r  rM   r?  r   r[   rb  )r?   ct1ctrl1s      r@   test_cotdgmorez TestTrigonometric.test_cotdgmore  sB    mBBsFb!Ua888888rC   c                    t          t          j        d          ddd           t          t          j        d          ddd           t          t          j        d          d	dd           t          t          j        d
          d	dd           t          t          j        d          ddd           t          t          j        d          ddd           t          t          j        d          ddd           t          t          j        d          ddd           t          t          j        d          d	dd           t          t          j        d          d	dd           t          t          j        d          ddd           t          t          j        d          ddd           t          t          j        d          ddd           d S )Nr   r   t=r   r[   r   r  r   i   y   i  i;  i  )r   r   r   r>   s    r@   test_specialpointsz$TestTrigonometric.test_specialpoints  s   b))3W1EEEEc**DwQGGGGb))3W1EEEEc**CgAFFFFc**DwQGGGGd++SwQGGGGc**CgAFFFFd++TaHHHHc**CgAFFFFd++SwQGGGGc**DwQGGGGd++SwQGGGGc**CgAFFFFFFrC   c                     t          t          j        dg          d           t          t          j        d          d           d S )Nr   rX   r   r   )r   r   sincr   r>   s    r@   	test_sinczTestTrigonometric.test_sinc  s>    7<,,a000W\#&&,,,,,rC   c                 N    t          j        d          }t          |d           d S r  )r   r  r   )r?   sns     r@   r  zTestTrigonometric.test_sindg  s'    ]2RrC   c                     t          j        d          }t          t          dz            }t	          ||dd           t          j        d          }t          t          dz            }t	          ||dd           d S )NrT   rH  r?  r   r[   r   r  )r   r  r	   r   r   )r?   snmsnmrlsnm1snmrl1s        r@   test_sindgmorez TestTrigonometric.test_sindgmore  r    mBBsFUa8888}R  RVf6::::::rC   N)r3  r4  r5  r   rT  r   r]  r   r   rh  rr  ru  r  r}  r:  rC   r@   rK  rK  c  s        7 7 7
9 9 9
9 9 9
; ; ;
7 7 7
7 7 7
9 9 9
G G G- - -
  ; ; ; ; ;rC   rK  c                        e Zd Zd Zd Zd ZdS )	TestTandgc                     t          j        d          }t          t          dz            }t	          ||dd           d S rZ  r   r  r   r   r   )r?   tntnrls      r@   r  zTestTandg.test_tandg  s=    ]22c6{{DvA666666rC   c                     t          j        d          }t          t          dz            }t	          ||dd           t          j        d          }t          t          dz            }t	          ||dd           d S )Nr   r  r?  r   r[   rH  r  r  )r?   tnmtnmrltnm1tnmrl1s        r@   test_tandgmorezTestTandg.test_tandgmore  r~  rC   c                 4   t          t          j        d          ddd           t          t          j        d          ddd           t          t          j        d          ddd           t          t          j        d	          ddd           t          t          j        d
          ddd           t          t          j        d          ddd           t          t          j        d          ddd           t          t          j        d          ddd           t          t          j        d          ddd           t          t          j        d          ddd           t          t          j        d          ddd           d S )Nr   r   rj  r[   r   r   rk  r   rl  rm  r  iLrn  ro  rp  rq  )r   r   r  r>   s    r@   rr  zTestTandg.test_specialpoints  ss   a((#G!DDDDb))3W1EEEEc**DwQGGGGc**DwQGGGGd++SwQGGGGc**CgAFFFFd++SwQGGGGc**CgAFFFFd++TaHHHHc**DwQGGGGd++SwQGGGGGGrC   N)r3  r4  r5  r  r  rr  r:  rC   r@   r  r    sF        7 7 7
; ; ;H H H H HrC   r  c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )	TestEllipc                 D    t          j        dt          j                   dS )zRegression test for #912.r   N)r   r   r]   r  r>   s    r@   test_ellipj_nanzTestEllip.test_ellipj_nan  s    sBF#####rC   c                     t          j        dd          }t          d          t          d          ddg}t	          ||dd           d S )Nr   r   r   7QE=r[   )r   r   r	   r
   r   )r?   elrels      r@   r   zTestEllip.test_ellipj  sJ    ^C""3xxCT*CgA666666rC   c                 `   t          j        d          }t          |ddd           t          t          j        d          t
          j                   t          t          j        d          t          dz             t          t          j        t
          j                  d           t          t          j        t
          j                  t
          j                   t          t          j        d	          t
          j                   t          t          j        d
          d           d S )Nr   g;{yэ?rI  r   r[   r   r   rJ   rM   r  gN?)	r   r   r   r   r    r]   r   r   r  )r?   elks     r@   r   zTestEllip.test_ellipk  s    nR  .W1EEEEW%c**BF333W%c**BqD111W%bf--s333W%bf--rv666W%b))26222s++-?@@@@@rC   c                    t          j        t          dz  d          }t          j        d          }t	          ||dd           dt          z  dz  }dt          z  dz  }t          |          dz  }t          j        ||          }t	          |d	d
d           t          t          j        t          dz  d          t          dz             t          t          j        t          dz  d          t          j                   t          t          j        t          dz  t          j                   d           t          t          j        t          dz  t          j	                  t          j	                   t          t          j        t          dz  d          t          j	                   t          t          j        dd          d           t          t          j        t          j        d          t          j                   t          t          j        t          j         d          t          j                    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        t          j         t          j                  t          j	                   t          t          j        t          j	        d          t          j	                   t          t          j        t          j	        t          j	                  t          j	                   t	          t          j        dd          dd           t	          t          j        dd          d           d S )NrJ   r   r   r   r[   rn   r  r   gfoKh?r?  r   r   r   gt?rX   rK   r'  rQ   6<R!?r  gfON?)
r   r   r   r   r   r	   r   r]   r   r  )r?   elkincr  alphaphir  s         r@   r   zTestEllip.test_ellipkinc  s   "2a4++nS!!'::::2c	eCiJJM"3q))
a@@@@ 	W&r!tS112a4888W&r!tS1126:::W&r!tbfW55s;;;W&r!tRV44bf===W&r!tQ//888W&q#..444W&rvs33RV<<<W&w44rvg>>>W&rvrv66???W&rvw77@@@W&w88"&AAAW&w77@@@W&rvs33RV<<<W&rvrv66???)*=qAA3USSSS)&#668KLLLLLrC   c                    d}d}t          j        |d          }g }t          d          D ],}|                    |           t          j        |d          }-t	          j        ||          }t          |t          j        |d          d           t	          j        |t          z   |          }t          |t          j        |d          d           d S )	N    ?Pag?r   r&  rX   gV^8j?g,j6Ƅ@rJ   )	r]   	nextafterrv   appendr   r   r   	full_liker   r?   mbadr  r  mvalsjrj  f1s           r@   test_ellipkinc_2zTestEllip.test_ellipkinc_2  s     # Lq!!r 	# 	#ALLOOOQ""AAc5))&q",q:L*M*MqQQQsRx//&r2<<N+O+OQRSSSSSrC   c                     t          j        ddd          }t          j        ddd          }t          j        dt          dz  dd          }t	          t          j        |d	          t          j        t          j        |                    d
           t	          t          j        |d	          t          j        t          j        |                    d
           t	          t          j        |d	          t          j        t          j        |                    d
           t          t          j        t           j        dz  d	          t           j
                   t	          t          j        | d	          t          j        t          j        |                     d
           t	          t          j        | d	          t          j        t          j        |                     d
           t	          t          j        | d	          t          j        t          j        |                     d
           t          t          j        t           j         dz  d	          t           j
                   d S )Niir   gFFg<r  rJ   Fr  rX   r/  rQ   )r]   rp   r8  r   r   r   r   arcsinhr   r   r   )r?   xlogxlinxlin2s       r@   test_ellipkinc_singularz!TestEllip.test_ellipkinc_singular  s   {4b)){5#r**CArE:::)$22BJrvd||4L4L!	# 	# 	# 	#)$22BJrvd||4L4L!	# 	# 	# 	#)%33RZu5N5N!	# 	# 	# 	#W&ruQw22BF;;;)4%33RZu5N5N!	# 	# 	# 	#)4%33RZu5N5N!	# 	# 	# 	#)5&!44bj6P6P!	# 	# 	# 	#W&vax33RV<<<<<rC   c                 b   t          j        d          }t          |ddd           t          t          j        d          t          dz             t          t          j        d          d           t          t          j        t
          j                   t
          j                   t          t          j        t
          j                  t
          j                   t          t          j        d          t
          j                   t          t          j        d	          d
           d S )Nr   gl?r?  r   r[   r   rJ   r   r  g?eg@)r   r   r   r   r   r]   r   r  )r?   eles     r@   r   zTestEllip.test_ellipe  s    nR  /f1EEEEW^C(("Q$///W^C((#...W^RVG,,bf555W^BF++RV444W^A&&///s++-?@@@@@rC   c                    t          j        t          dz  d          }t          j        d          }t	          ||dd           dt          z  dz  dt          z  dz  }}t          |          dz  }t          j        ||          }t	          |d	d
d           t          t          j        t          dz  d          t          dz             t          t          j        t          dz  d          d           t          t          j        t          dz  t          j                   t          j                   t          t          j        t          dz  t          j	                  t          j	                   t          t          j        t          dz  d          t          j	                   t          t          j        dd          d           t          t          j        t          j        d          t          j                   t          t          j        t          j         d          t          j                    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        t          j         t          j                  t          j	                   t          t          j        t          j	        d          t          j	                   t          t          j        t          j	        t          j	                  t          j	                   t	          t          j        dd          d           d S )NrJ   r   rj  r   r[   4   r  #   g'?r?  r   r   r   r  r  gL@)
r   r   r   r   r   r	   r   r]   r   r  )r?   eleincr  r  r  r  s         r@   r   zTestEllip.test_ellipeinc'  s   "2a4++nS!!'::::U3Yr"uSysJJM"3q))
a@@@@W&r!tS112a4888W&r!tS113777W&r!tbfW55rv>>>W&r!tRV44bf===W&r!tQ//888W&q#..444W&rvs33RV<<<W&w44rvg>>>W&rvw77@@@W&w8826'BBBW&rvrv66???W&w77@@@W&rvs33RV<<<W&rvrv66???)&#668JKKKKKrC   c                    d}d}t          j        |d          }g }t          d          D ],}|                    |           t          j        |d          }-t	          j        ||          }t          |t          j        |d          d           t	          j        |t          z   |          }t          |t          j        |d          d	           d S )
Nr  r  r   r&  rX   g%?rJ   gXo
@rH   )	r]   r  rv   r  r   r   r   r  r   r  s           r@   test_ellipeinc_2zTestEllip.test_ellipeinc_2A  s     # Lq!!r 	# 	#ALLOOOQ""AAc5))&q",q:M*N*NPQRRRsRx//&r2<<N+O+OQRSSSSSrC   N)r3  r4  r5  r  r   r   r   r  r  r   r   r  r:  rC   r@   r  r    s        $ $ $7 7 7
	A 	A 	AM M M:T T T = = =*	A 	A 	AL L L4T T T T TrC   r  c                   x    e Zd ZdZd Zd Zd Zd Zd Ze	j
                            d          d	             Zd
S )TestEllipCarlsonzTest 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           	      :   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          j        d          ddt          j        d          dz  dg          }t          |          D ]"\  }}t          t          | ||                    #d S )NrX   r   r   r  g      @rt  r               r  r   y
c?
cy=B?CGֿr  y檠f?P9lb?)
r   r!   r   r   r  r   r]   r   r   	enumerater?   r  expected_resultsrz   arrs        r@   test_elliprczTestEllipCarlson.test_elliprcW  s7   1q)))q##%%%%WQ]]#####q'!S//**c1111sDkSkDkdmTlTl$ % % !"%"$&++">"C"$&++"3"D"F G G  oo 	@ 	@FAsGSM+;A+>????	@ 	@rC   c           
         t          t          ddd          d           t          t          ddd          dz  d           t          ddt                    dk    sJ t          j        t          ddd                    sJ t          j        t          ddt          dd                              sJ t          j        t          ddt          dd                              sJ t          t          ddt          j        t          j                  j	         dz                      sJ t          t          ddt          dd                              sJ t          g d	g d
g dg dg dg dg          }t          g d          }t          |          D ]"\  }}t          t          | ||                    #d S )NrX   r   rJ   r  g`C+?r   rt  rM   )r   rt  r   rt  r  r  r  r  rt  r   r  r  )r               ?r  )y             r  r  )gfe_?gi+"?gP$M?ytgFU?7?@yR<8*y{62?z)r   r"   r   r]   r  r  r   r   r   tinyr   r  r  s        r@   test_elliprdzTestEllipCarlson.test_elliprdk  s   1a((!,,,1a((3.0FGGGq!S!!S((((x1a(()))))x1gamm4455555x1gamm4455555WQBHRZ$8$8$=#=#CDDEEEEEWQ72q>>2233333ooo%oo((((((,,,3335 6 6 ! "D "D "D E E  oo 	@ 	@FAsGSM+;A+>????	@ 	@rC   c           
         t          t          ddd          d           t          t          ddd          d           t          dt          d          dk    sJ t          j        t          ddd                    sJ t          t          ddd                    sJ t          t          t                    dd          dk    sJ t          t          ddt          t           d                              sJ t          g dg dg d	g d
g dg dg dg          }t          g d          }t          |          D ]"\  }}t          t          | ||                    #d S )NrX   r   rJ   gPO?r   rM   )r   rt  r   )r  r  r   )r   r   r   r  r  r   r  r  )r  r        ?      )geQO?ʞu5J?r  yp\y?kg2ΰ?gHwд?y|pF?-6Fj)	r   r#   r   r]   r  r   r  r   r  r  s        r@   test_elliprfzTestEllipCarlson.test_elliprf  s   1a((!,,,1a((*@AAAq#q!!S((((x1a(()))))WQ2&&'''''ws||Q**c1111WQ7C4#3#34455555ooo(((%oo,,,%oo(((1113 4 4 ! "F "F "F G G  oo 	@ 	@FAsGSM+;A+>????	@ 	@rC   c           	      f   t          t          ddd          d           t          t          ddd          d           t          t          ddd          d           t          j        t          dt          d                    sJ t          j        t          t          t                    dd                    sJ 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          | ||                    #d S )NrX   r   r   )r   r  r  r  r  r  )r  r  r  )r   g8d`?r  gL+?g}^?y旮0?ʋW?yjN?^?gt?)	r   r$   r]   r  r   r  r   r   r  r  s        r@   test_elliprgzTestEllipCarlson.test_elliprg  sX   1a((!,,,1a((#...1a((!,,,x3**+++++xa3344444'''%oo(((,,,...(((* + + !"%"1"2"D"D"1"3 4 4  oo 	@ 	@FAsGSM+;A+>????	@ 	@rC   c                    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    sJ 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          | ||                    #d S )NrX   r   r   rM   )r   r   rt  r  )rt  r  r  r   )rt  r  r  r  )r  r  r   rt  )r              r   rt  )r  r  r   r  )r  r  r   y            ?)rt  r  r  r  )rt  r  r        )	g @?gviM?ym?\Isؿg'4Ob?go0 ?yW7?xfOA?ybv㿘ܶ.gHQ?gjߡB7E)r   r%   r   r   r   r  r  s        r@   test_elliprjzTestEllipCarlson.test_elliprj  sn   1a++Q///q!S!$$++++WQ1a(()))))WRAq))*****q!Q$$++++******000---666222<<<++++++- . . ! "5 "5 "5 6 6  oo 	@ 	@FAsGSM+;A+>????	@ 	@rC   zInsufficient accuracy on 32-bitr  c                     t          t          dddd          ddd           t          t          d	d
dd          ddd           d S )Ng   gq>g   `W:g    HBg   @ۘ?gRy|>r  r  r(  g   ,@g    x=g   @e:g   `ݽ>g(HR)A)r   r%   r>   s    r@   test_elliprj_hardz"TestEllipCarlson.test_elliprj_hard  s     5 6 3 13 3 ;"	0 	0 	0 	0 	 2 5 4 57 7 <"	0 	0 	0 	0 	0 	0rC   N)r3  r4  r5  r  r  r  r  r  r  r6  r7  r8  r  r:  rC   r@   r  r  R  s         @ @ @(@ @ @0@ @ @2@ @ @*@ @ @6 [?@@0 0 A@0 0 0rC   r  c                   *    e Zd ZdZd Zd Zd Zd ZdS )"TestEllipLegendreCarlsonIdentitieszTest 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                 >   t          j        ddd          | _        t          t                    j        | _        ddt          dt          j        | j                   z   dd          z  z  | _        t          j	        | j        g| j        | j        f          | _
        d S )Nr   r   rA  rt  rM   r   )r]   r   m_n1_1r   r   minmax_neglog2
very_neg_mconcatenate
ms_up_to_1r>   s    r@   setup_classz.TestEllipLegendreCarlsonIdentities.setup_class  s    iR..V}}(F2+-7DL=+A+A,BCE+.%0 %0 !0 0 .4<.*./*.+*7 8 8rC   c                 r    | j         }t          t          |          t          dd|z
  d                     dS )z5Test identity:
        K(m) = R_F(0, 1-m, 1)
        r   r   N)r  r   r   r#   r  s     r@   test_kz)TestEllipLegendreCarlsonIdentities.test_k  s7     Oq		72r!tR#8#899999rC   c                     t          t                    j        }|dt          dt	          j        |                     z  z  }t          t          |          t          d|d                     dS )z\Test identity:
        K(m) = R_F(0, 1-m, 1)
        But with the ellipkm1 function
        rt  r   r   N)	r   r   r  r   r]   r  r   r    r#   )r?   r  m1s      r@   test_km1z+TestEllipLegendreCarlsonIdentities.test_km1  s]     V}}!BrBGDMM>2222gb"b&9&9:::::rC   c           	      x    | j         }t          t          |          dt          dd|z
  d          z             dS )z9Test identity:
        E(m) = 2*R_G(0, 1-k^2, 1)
        rt  r   r   N)r  r   r   r$   r  s     r@   test_ez)TestEllipLegendreCarlsonIdentities.test_e   s<     Oq		2gb"Q$&;&;#;<<<<<rC   N)r3  r4  r5  r  r  r  r  r  r:  rC   r@   r  r    sZ         

8 
8 
8: : :	; 	; 	;= = = = =rC   r  c                   ^    e Zd Zd Zd ZddZd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd ZdS )TestErfc                 T    t          j        d          }t          |ddd           d S )Nr  g);T?r?  r   r[   )r   r  r   )r?   ers     r@   r  zTestErf.test_erf
  s.    [LvA>>>>>>rC   c                 v    t          j        d          }t          g d          }t          ||dd           d S )Nr   )yTcJ5?=W?yo@n@y'ʷ@g	@y"[

@,y]+@yld&@-;'j'>@rH  r   r[   )r   	erf_zerosr   r   )r?   erzerzrs      r@   test_erf_zeroszTestErf.test_erf_zeros  sO    "" - - - . .
 	TQ777777rC   r   c                    t           j                            d          }d}|                    d|          d|                    dd|          z  dz
  z  }|                    d|          d|                    dd|          z  dz
  z  }|d|z  z   }	t          j        d	          5   ||	          }
 ||          j        }t          j        |
          }|
|         }
|	|         }	t          j        |          }||         }||         }t          ||
|	||
           t          |||||
           d d d            d S # 1 swxY w Y   d S )NrS   rE  g{Gz?rJ   r   rX   r  r  allr(  )	r]   rc   rd   paretorandintr  r   isfiniter3   )r?   r  
other_funcrR   r\   rj   rf   r   r   r!  r1  w_realmasks                r@   _check_variant_funczTestErf._check_variant_func  s   i##D))JJtQ1S[[Aq%9%9#9A#=>JJtQ1S[[Aq%9%9#9A#=>1H[X&&& 	E 	E
1AZ]]'F;q>>D$A$A;v&&DD\F$A dAqt$????dFADtDDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	Es   'BE  EEc                 N    |                      t          j        d dd           d S )Nc                 0    dt          j        |           z
  S rt   r<   r  r!  s    r@   <lambda>z.TestErf.test_erfc_consistent.<locals>.<lambda>1  s    a&*Q--' rC   r   r'  r(  )r  r<   r  r>   s    r@   test_erfc_consistentzTestErf.test_erfc_consistent.  s:      K''	 	! 	 	 	 	 	rC   c                 L    |                      t          j        d d           d S )Nc                 Z    t          j        | | z            t          j        |           z  S ru  )r]   r   r<   r  r  s    r@   r  z/TestErf.test_erfcx_consistent.<locals>.<lambda>9  s    bfQqSkkFKNN2 rC   r   rQ   )r  r<   erfcxr>   s    r@   test_erfcx_consistentzTestErf.test_erfcx_consistent6  s7      L22 	! 	 	 	 	 	rC   c                 L    |                      t          j        d d           d S )Nc                 6    dt          j        d| z            z  S )Nr  r  r  r  s    r@   r  z.TestErf.test_erfi_consistent.<locals>.<lambda>@  s    cFJr!t,,, rC   r   rQ   )r  r<   erfir>   s    r@   test_erfi_consistentzTestErf.test_erfi_consistent=  s7      K,, 	! 	 	 	 	 	rC   c                 L    |                      t          j        d d           d S )Nc                     t          t                    dz  t          j        |  | z            z  t	          j        |           z  S r  )r   r   r]   r   r<   r  r  s    r@   r  z/TestErf.test_dawsn_consistent.<locals>.<lambda>G  s0    d2hhqj261"Q$<</&+a..@ rC   r   rQ   )r  r<   r   r>   s    r@   test_dawsn_consistentzTestErf.test_dawsn_consistentD  s7      L@@ 	! 	 	 	 	 	rC   c                     t           j        t           j         t           j        g}t           j        ddg}t          t	          j        |          |d           d S )NrM   rX   r   rQ   )r]   r  r   r   r   r  r?   rO  r"  s      r@   test_erf_nan_infzTestErf.test_erf_nan_infK  sH    (FB?D))8%@@@@@@rC   c                     t           j        t           j         t           j        g}t           j        ddg}t          t	          j        |          |d           d S )NrJ   r   r   rQ   )r]   r  r   r   r   r  r	  s      r@   test_erfc_nan_infzTestErf.test_erfc_nan_infP  sH    (FAq>T**H5AAAAAArC   c                     t           j        t           j         t           j        g}t           j        t           j        dg}t          t	          j        |          |d           d S )Nr   r   rQ   )r]   r  r   r   r   r  r	  s      r@   test_erfcx_nan_infzTestErf.test_erfcx_nan_infU  sK    (FBFA&d++XEBBBBBBrC   c                     t           j        t           j         t           j        g}t           j        t           j         t           j        g}t          t	          j        |          |d           d S r  )r]   r  r   r   r   r  r	  s      r@   test_erfi_nan_infzTestErf.test_erfi_nan_infZ  sO    (FRVGRV,T**H5AAAAAArC   c                     t           j        t           j         t           j        g}t           j        ddg}t          t	          j        |          |d           d S )NrM  r   r   rQ   )r]   r  r   r   r   r   r	  s      r@   test_dawsn_nan_infzTestErf.test_dawsn_nan_inf_  sI    (FD#&d++XEBBBBBBrC   c                     t           j        t           j         t           j        g}t           j        t           j        dz  z   ddg}t          t	          j        |          |d           d S )Nr  r  r   rQ   )r]   r  r   r   r   r0  r	  s      r@   test_wofz_nan_infzTestErf.test_wofz_nan_infd  sT    (FRVc\)66:T**H5AAAAAArC   N)r   )r3  r4  r5  r  r  r  r  r   r  r  r
  r  r  r  r  r  r:  rC   r@   r  r    s        ? ? ?8 8 8E E E E.        A A A
B B B
C C C
B B B
C C C
B B B B BrC   r  c                       e Zd Zd ZdS )	TestEulerc                    t          j        d          }t          j        d          }t          j        d          }t          |dgd           t          |ddgd           t          |g dd           t          j        d          }g d}t          d	d
          }t	          dd          D ]?}|dz  rt          ||                    |d|z  <   $t          ||                   |d|z  <   @t          j        d          5  t          ||z
  |z            }t          |          }	d d d            n# 1 swxY w Y   t          |	ddd           d S )Nr   rX   rJ   r   rQ   )rX   r   rM   r   )rX   rX   r   =   ii  iY  i=) il   Q~ l   10[l   $8gC
 l   2l   v}Ju: )r   d   r  r  r   rj  r[   )
r   eulerr   r   rv   rw   r]   r  r   r&  )
r?   eu0eu1eu2eu24	mathworldcorrectrg   errerrmaxs
             r@   
test_eulerzTestEuler.test_eulerk  s   mAmAmAaSu----aV%0000ZZZe4444}R  + + +	 c""q 	3 	3AA 3 %il 3 33!$Yq\22![X&&& 	 	d7lG344CXXF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	'::::::s   %D66D:=D:N)r3  r4  r5  r$  r:  rC   r@   r  r  j  s#        ; ; ; ; ;rC   r  c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestExpc                 R    t          j        d          }d}t          ||           d S )NrJ   rH   )r   r  r   r?   exexrls      r@   r  zTestExp.test_exp2  s*    \!__RrC   c                 X    t          j        d          }d}t          ||dd           d S )Nr  g;f@r?  r   r[   )r   r  r   r?   exmexmrls      r@   test_exp2morezTestExp.test_exp2more  s3    l3Ua888888rC   c                 X    t          j        d          }d}t          ||dd           d S )NrJ   r#  r   r   r[   r   r
  r   r(  s      r@   r  zTestExp.test_exp10  s3    ]1Dt!444444rC   c                 X    t          j        d          }d}t          ||dd           d S )Nr  gYs@r?  r   r[   r1  r,  s      r@   test_exp10morezTestExp.test_exp10more  s3    mC  Ua888888rC   c                    t          j        d          t          j        d          t          j        d          f}t          d          dz
  t          d          dz
  t          d          dz
  f}t          ||dd           d S )NrJ   r   rH   rX   r?  r   r[   r   r  r   r   r(  s      r@   r  zTestExp.test_expm1  ss    mAa 0 0'-2B2BCA
CFFQJA
3DvA666666rC   c                    t          j        d          t          j        d          t          j        d          f}t          d          dz
  t          d          dz
  t          d          dz
  f}t          ||dd           d S )NrJ    @皙@rX   r?  r   r[   r5  )r?   ex1exrl1s      r@   test_expm1morezTestExp.test_expm1more  ss    }Qs!3!3W]35G5GHQ!SXX\3s88a<8Ua888888rC   N)	r3  r4  r5  r  r/  r  r3  r  r;  r:  rC   r@   r&  r&    sn          
9 9 9
5 5 5
9 9 9
7 7 7
9 9 9 9 9rC   r&  c                    fd}d }t          |           t          |          u s*J dt          |            dt          |                       t          | t          j                  rl| j        |j        k    sJ  || |           t          |                                 |                                          D ]\  }}t          ||           dS t          j        |           rLt          j        |          r8t          t          |           d          r ||           o ||           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                 T    t          | |           d S t          | |           d S )NrQ   )r-   r,   )r   r   rR   s     r@   assert_funcz(assert_really_equal.<locals>.assert_func  s7    !%1?1ad3S3S3S3S3S3SrC   c                 n    t          j        | j                  rt          j        | j                  sJ d S ru  )r]   r   r   r  r   s    r@   assert_complex_nanz/assert_really_equal.<locals>.assert_complex_nan  s1    x4BHQV$4$444444rC   ztypes not equal: z, rQ   r  N)
r<  
isinstancer]   ndarrayr  ziprb   assert_really_equalr   r1   )r   r   rR   r>  rA  elem_xelem_ys     `    r@   rE  rE    s   T T T T T5 5 5 77d1ggG477GGd1ggGG !RZ   w!'!!!!Aq!!''))QWWYY77 	; 	;NFFT:::::	; 	;	! ! d1ggs)C)C 17"4"4Q"7"7"7"7"7777 	AqrC   c                      e Zd Zd Zej                            dg d          d             Zej                            dg d          ej                            ddd	g          d
                         Zej                            ddd	g          d             Z	ej                            dg d          d             Z
ej                            dddg          ej                            dg d          d                         Zej                            ddd	g          ej                            dddg          ej                            dej         ej        d          ej        ej        dz  z    ej        d          ej        ej        dz   ej         ej         dz   d ej        d          g
g d          ej                            dej        ej        ej        g          d                                                 Zej                            ddd ej        d!g          d"             Zej                            d# ed$d%                    ej                            ddd	g          d&                         Zej                            ddd	g          ej                            d'deej        ej        ej        ej        ej        ej         ej!        ej"        g
          ej                            d( edd%                    d)                                     Z#ej                            ddd	g          ej                            d* ed$d%                    d+                         Z$ej        %                    d%          ej                            d'ej        ej         ej!        ej"        g          ej                            dg d          d,                                     Z&ej                            d ed-d.d/                    d0             Z'ej                            d e( edd1                     e( ed-d.d/                    z             d2             Z)d3 Z*d4 Z+ej                            d'ej        ej        ej        e,g          ej                            dddg          ej                            ddd	g          ej                            d( edd%                    ej                            d5g d$gd gej        gej        ej        dz  z   gej        d$ggg d6          d7                                                             Z-ej                            dddg          ej                            ddd	g          ej                            dd$d d8ej        ej        ej        dz  z   dgg d9          d:                                     Z.ej                            d ed-d.d;                    d<             Z/ej                            d e( edd1                     e( ed-d.d;                    z             d=             Z0d> Z1ej                            d'ej        ej        ej        e,g          ej                            dddg          ej                            ddd	g          ej                            d( edd%                    ej                            d5g d$gd gej        gej        ej        dz  z   gej        d$ggg d6          d?                                                             Z2ej                            dddg          ej                            ddd	g          ej                            dd$d d8ej        ej        ej        dz  z   dgg d9          d@                                     Z3ej                            dA ed$d%                    ej                            d edBdCdD                    dE                         Z4ej                            dA e( ed$d%                    d/dCgz             ej                            d e( edd1                     e( ed1dFd;                    z             dG                         Z5dH Z6ej                            d'ej        ej        ej        e,g          ej                            dddg          ej                            ddd	g          ej                            d( edd%                    ej                            d5g d$gd gej        gej        ej        dz  z   gej        d$ggg d6          dI                                                             Z7ej                            dddg          ej                            ddd	g          ej                            dA ed$d%                    ej                            dd$d d8ej        ej        ej        dz  z   dgg d9          dJ                                                 Z8ej                            ddd	g          ej                            dg d          ej                            dAdKdLddMdd ej        g          dN                                     Z9ej                            ddd	g          ej                            dg d          ej                            dAd! ej        d          gd!dOg          dP                                     Z:ej                            dg d          ej                            dA ed$dQ                    dR                         Z;dS Z<dS )TTestFactorialFunctionsc                 @   |rt          j        ||d          S |dk    rt          j        ||          nd}t          j        |||z
  |z            t          j        ||z  dz             z  t          j        ||z  dz             z  }|t          j        |d          z  S )NTrg   r  zerorX   )r   
factorialkr]   modpowerrB  r  maximum)r?   rf   rg   r  extendrrO  s          r@   factorialk_refz%TestFactorialFunctions.factorialk_ref  s     	:%a1D9999"f,,BF1aLLL!xAE19%%acAg(>(>>PQRSPSVWPWAXAXXbjA&&&&rC   zexact,extend))TrL  )FrL  )Fr  c                     ||d}t          j        t          j        di |          sJ t          j        t          j        di |          sJ t          j        t          j        dddi|          sJ d S )Nr  rQ  rX   rg   r   rX   )r]   isscalarr   	factorial
factorial2rM  )r?   r  rQ  kws       r@   "test_factorialx_scalar_return_typez9TestFactorialFunctions.test_factorialx_scalar_return_type  s     //{7,55"5566666{7-6626677777{7-;;1;;;<<<<<<<rC   rf   )rM   r  r  r  TFc                     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   rg   r   )r   r   rX  rY  rM  )r?   r  rf   rZ  s       r@   $test_factorialx_negative_extend_zeroz;TestFactorialFunctions.test_factorialx_negative_extend_zero  s     uW&q//B//333W'00R00!444W'55Q5"55q99999rC   c                 @   d|i}d}g d}t          j        g d|rt          nt           j                  }t	          t          j        |fi |||           t	          t          j        |fi |||           t	          t          j        |fddi|||           d S )	Nr  r   )rK  r   rX   )r   r   rX   rX   r  rQ   rg   r   )	r]   r   
native_intr   rE  r   rX  rY  rM  )r?   r  rZ  rR   rf   r"  s         r@   *test_factorialx_negative_extend_zero_arrayzATestFactorialFunctions.test_factorialx_negative_extend_zero_array  s    uNN8LLLe0S

TTTG-a66266tLLLLG.q77B77MMMMG.q<<A<<<hTRRRRRRrC   gggffffff
c                 H   ddi}dddd}ddd	d}d
ddd}d}t          t          j        |fi |||         |           t          t          j        |fi |||         |           t          t          j        |fddi|||         |           t          t          j        |gfi |d         ||         |           t          t          j        |gfi |d         ||         |           t          t          j        |gfddi|d         ||         |           d S )NrQ  r  gRc/a_%g:\Oag@g*BZ'rb  go	08G)?goNb]gMxcQgNy?g=u?g7K [n<rQ   rg   r   r   )r   r   rX  rY  rM  )r?   rf   rZ  exp_1exp_2exp_krR   s          r@   'test_factorialx_negative_extend_complexz>TestFactorialFunctions.test_factorialx_negative_extend_complex  s   	"-..0 0 .-.0 0 /--/ / )!22r22E!H4HHHH*13333U1XDIIII*1888R88%(NNNN)1#4444Q7qMMMM*A355"55a8%(NNNN*A3::!:r::1=uQxdSSSSSSrC   r  r   r  n_outerc                 X    ddifd} |||z               |d|z  |z              d S )NrQ  r  c                 .   t          t          |           d          }t          j        d          }|rt          j        d          nt          j        d          }t          t          j        | fi |           t          t          j        | dz  fi |           t          t          j	        | dz  fddi|           d}t          t          j	        | |z  fd|i|           t          t          j        | gfi d         |           t          t          j        | dz  gfi d         |           t          t          j	        | dz  gfddid         |           t          t          j	        | |z  gfd|id         |           d S )	Nr  nan+nanjr  rJ   r   rg   y      ?       r   )
r1   r<  r]   
complex128r   rE  r   rX  rY  rM  )rf   
complexifycomplex_nanr   r  rZ  s        r@   _checkzTTestFactorialFunctions.test_factorialx_negative_extend_complex_poles.<locals>._check	  s   %d1ggs33J-
33K/9P"-
+++rz%?P?PC 1! : :r : :C@@@ 21q5 ? ?B ? ?EEE 21q5 D DA D D DcJJJA 21q5 D DA D D DkRRR 11# < < < <Q ?EEE 2AE7 A Ab A A! DcJJJ 2AE7 F Fa F2 F Fq I3OOO 2AE7 F Fa F2 F Fq I;WWWWWrC   i r:  )r?   ri  r  rp  rZ  s       @r@   -test_factorialx_negative_extend_complex_poleszDTestFactorialFunctions.test_factorialx_negative_extend_complex_poles 	  sc     	"	X 	X 	X 	X 	X( 	w~w 4'(((((rC   boxedrQ  rL  r  r  r  rl  Nnat)
NaNznp.float64('nan')	NaN+i*NaNznp.complex128('nan+nanj')r   zinf+0iz-infz-inf+0iNoneNaT)ids
factorialxc                    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          |          |          sDt          j        t          d	
          5   ||r|gn|fi | d d d            d S # 1 swxY w Y   d S t	          t          |          |          rJ|dk    rDt          j        t          d
          5   ||r|gn|fi | d d d            d S # 1 swxY w Y   d S |dk    ot	          t          |          d          }|rt          j	        d          nt          j
        d          }	t	          t          |          d          rLt          j        |          r8t          j
        |dk    rdnd          }
|dk    rt          j
        d          n|
}	|r ||gfi |d         n ||fi |}t          ||	           d S )NFrU  r   rg   rz   rj  r  rz   rj  r  Unsupported data type.*r  r  In order to use non-integer.*rl  r  rL  r   r   )r   rM  r<  rX  r1   r6  r   r7  r]   rm  r   r  rE  )r?   ry  rf   rQ  rr  rZ  permissible_typestypes_need_complex_extrn  r"  neg_inf_resultr  s               r@   test_factorialx_inf_nanz.TestFactorialFunctions.test_factorialx_inf_nan	  s   & //+++BsG 05UOOOO3S$t**:U(2g6G(G(GcSVZDGG%677 	2z1JKKK 6 6
%.A33Q55"5556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6$q''#9:: 	2v?R?Rz1PQQQ 6 6
%.A33Q55"5556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 !I-M<Q3M3MJ 5?Ur}Z000BJuDUDUHDGGS)) Lbhqkk L!#&F2B2BAA!O!O12Q2:e,,,^16OZZ**r**1--JJq<O<OB<O<OF11111s$   BB"%B")DD	D	r  stringc                    t          j        t          d          5  t          j        d|           d d d            n# 1 swxY w Y   t          j        t          d          5  t          j        d|           d d d            n# 1 swxY w Y   t          j        t          d          5  t          j        ddd|           d d d            d S # 1 swxY w Y   d S )Nzargument `extend` must be.*r  rX   )rQ  r   Trg   r  rQ  )r6  r   r7  r   rX  rY  rM  )r?   rQ  s     r@   test_factorialx_raises_extendz4TestFactorialFunctions.test_factorialx_raises_extendN	  s   ]:-JKKK 	0 	0a////	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0]:-JKKK 	1 	1q0000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1]:-JKKK 	B 	BqAT&AAAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	Bs3   ?AA%BBB.CCClevelsrX   r   c                    dfd	fd}t          j         ddg                    }dt          j        d          gdt	          j        dd	
          gdt	          j        ddd	
          gd} |t	          j        ||
          |d                     |t	          j        ||
          |d                     |t	          j        |d|
          |d                    d S )NrX   c                 6    |dk    r| S  | | g|dz
            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   rX   r:  r   rg   _nest_mes     r@   r  zDTestFactorialFunctions.test_factorialx_array_shape.<locals>._nest_meZ	  s-     AvvxA!,,,rC   c                     t          j         |          t                    }t          |                     t           j                   |j        t           j                             d S )Nrg   r  )r]   r   objectr   r   r   )r  nucleusr   r  r  s      r@   rp  zBTestFactorialFunctions.test_factorialx_array_shape.<locals>._checkg	  sZ    (88Gv666fEEEC CJJrz22JCJrz4J4JKKKKKrC   r   r   r  r  r|   Tr  r&  r   rm  rJ   rV  )r]   r   mathrX  r   rY  rM  )r?   r  r  rp  rf   exp_nucleusr  s    `    @r@   test_factorialx_array_shapez2TestFactorialFunctions.test_factorialx_array_shapeW	  s8   	- 	- 	- 	- 	- 	-	L 	L 	L 	L 	L 	L HXXq"g00011r 2 23w1"DAAABw1"atDDDEG G
 	w %000+a.AAAw!!5111;q>BBBw!!Qe444k!nEEEEErC   r  dimc                    t          j        d||          }dddd}t          t          j        ||          t          j        |d         |	                     t          t          j        ||          t          j        |d
         |	                     t          t          j        |d|          t          j        |d         |	                     d S )Nr   )r  ndminr  r|   r&  rm  r  rX   r  rJ   r   )r]   r   r   r   rX  rY  rM  )r?   r  r  r  rf   r   s         r@   test_factorialx_array_dimensionz6TestFactorialFunctions.test_factorialx_array_dimensionw	  s     HQe3///"$$)!5999Qs333	5 	5 	5*1E:::Qs333	5 	5 	5*1au===Qs333	5 	5 	5 	5 	5rC   levelc                    dfd	 dg|dz
            }dddd}|rt           nt          } |t          j        ||	          t	          j        |d         |
                      |t          j        ||	          t	          j        |d         |
                      |t          j        |d|	          t	          j        |d         |
                     d S )NrX   c                 4    |dk    r| S  | g|dz
            S r   r:  r  s     r@   r  zCTestFactorialFunctions.test_factorialx_array_like.<locals>._nest_me	  s)    AvvxQqS)))rC   r   r  r  r|   r&  rm  r  r  rJ   r   rV  )r   r   r   rX  r]   r   rY  rM  )r?   r  r  rf   r  r>  r  s         @r@   test_factorialx_array_likez1TestFactorialFunctions.test_factorialx_array_like	  s   	* 	* 	* 	* 	* 	* HaSE!G$$$",,,1F((G%au555H[^5999	; 	; 	;G&q666H[^5999	; 	; 	;G&q!5999H[^5999	; 	; 	; 	; 	;rC   c                    ||d|rt           nt          fd}fd} | |d                      | |d                      |t          j        d|                      |t          j        ddg|                      |t          j        |          j                  }|t          j        k    r|rd S t          j                            t          j	                  dk    r^ | ||dz
                        |t          j        |dz
  |                      |t          j        |dz
  g|                     d S d S |t          j
        t          j        fv s|sY ||dz
              |t          j        |dz
  |                      |t          j        |dz
  |dz
  g|                     d S d S )	NrU  c                    t          | t          j                  r|                     t          j                  nt          j        |           } 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 )Nrg   r   )	rB  r]   rC  r   r+  r   rX  rY  rM  )rf   n_refr>  rZ  s     r@   rp  z;TestFactorialFunctions.test_factorialx_uint.<locals>._check	  s    *4Q
*C*CTAHHRX&&&RSEK)!22r22G4Ee4R4Rr4R4RSSSK*13333W5G5T5TQS5T5TUUUK*1888R88*5<<A<<<> > > > >rC   c                 H   t          j                    5  t          j        dt                     | dz  }d d d            n# 1 swxY w Y    t	          j        | fi |            t	          j        | fi |            t	          j        | fddi|           d S )Nr  r   rg   r   )r  r  simplefilterr  r   rX  rY  rM  )rf   
shaped_infr>  rZ  s     r@   
_check_infz?TestFactorialFunctions.test_factorialx_uint.<locals>._check_inf	  s    (** # #%h???U
# # # # # # # # # # # # # # # K)!22r22J???K*13333Z@@@K*1888R88*EEEEEs    AAAr   rX   r  z2.0.0rJ   )r   r   r]   r   r%  r&  uint64libNumpyVersion__version__uint8uint16)	r?   r  rQ  r  rp  r  r9  r>  rZ  s	          @@r@   test_factorialx_uintz+TestFactorialFunctions.test_factorialx_uint	  s'    //,1F((	> 	> 	> 	> 	> 	>	F 	F 	F 	F 	F 	F 	uuQxxuuQxxrx'''(((rxAe,,,---E"(5//%&&BI 9$$R^44??
551::&&&
28AaCu555666
28QqSE77788888	 @?
 rx+++5+ F1Q3KKKF28AaCu---...F28QqS!A#Je44455555 ,+rC   rT   r  r&  c                 d   t           j        dk    rdnd}t          t          t	          j        |d                    t	          j        |d          |           t          t	          j        |gd                              t                    t	          j        |gd          |           d S )Nr6   t0=r   Tr  FrQ   )sysplatformr   rw   r   rX  r   r?   rf   rR   s      r@   test_factorial_accuracyz.TestFactorialFunctions.test_factorial_accuracy	  s    
 //uuUg/>>>??)!5999	F 	F 	F 	F)1#T:::AA%HH)1#U;;;$	H 	H 	H 	H 	H 	HrC      c                 X   t          j        |          }t          |t          j        |d                     t          |t          j        |gd          d                    t          j        dk    rdnd}t          |          }t          |t          j        |d          |           t          |t          j        |gd          d         |           dd	d
}t          |t          j        |fi ||           t          |t          j        |gfi |d         |           d S )NTr  r   r6   +6=r   FrQ   r  rU  )r  rX  r   r   r  r  rw   r   r?   rf   r!  rR   rZ  s        r@   test_factorial_int_referencez3TestFactorialFunctions.test_factorial_int_reference	  s7    .##7G$5at$D$D$DEEE7G$5qc$F$F$Fq$IJJJ//uuU..!21E!B!B!BNNNN!2A3e!D!D!DQ!GdSSSS 	22!21!;!;!;!;$GGGG!2A3!=!="!=!=a!@tLLLLLLrC   c                     d } |dd            |dd            |dd            |dd	            |d
d            |dd            |dd            |dd            |dd           d S )Nc                    t           j        dk    rdnd}t          t          j        |           ||           t          t          j        | g          d         ||           t          j        t          d          5  t          j        | d	           d d d            n# 1 swxY w Y   t          j        t          d          5  t          j        | gd	           d d d            d S # 1 swxY w Y   d S )
Nr6   r  r   rQ   r   `exact=True` only supports.*r  Tr  )r  r  r   r   rX  r6  r   r7  )rf   r"  rR   s      r@   rp  zETestFactorialFunctions.test_factorial_float_reference.<locals>._check	  sq   LG3355DG-a00(FFFFG-qc2215xdKKKKz1OPPP 1 1!!400001 1 1 1 1 1 1 1 1 1 1 1 1 1 1z1OPPP 3 3!1#T22223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3s$   ?B""B&)B&C--C14C1rA  gr?g(\?gc?g333333@g4s@g333333&@gމOAfffff@@g	²Gg     K@gC$JOglS@g }WgX@gX>%`g\CSe@gG=r:  r?   rp  s     r@   test_factorial_float_referencez5TestFactorialFunctions.test_factorial_float_reference	  s    	3 	3 	3 	t2333t2333t2333t2333t6777t6777t7888t7888x788888rC   c                     d } |dd            |dd            |dd            |d	d
            |dd           d S )Nc                     t           j        dk    rdnd}ddd}t          t          j        | fi |||           t          t          j        | gfi |d         ||           d S )	Nr6   rd  V瞯<Fr  rU  rQ   r   )r  r  r   r   rX  rf   r"  rR   rZ  s       r@   rp  zGTestFactorialFunctions.test_factorial_complex_reference.<locals>._check
  s    LG3355D I66BG-a66266tLLLLG-qc88R88;XDQQQQQQrC   r  gkﴑ[?r"                ykﴑ[?               @       @yB}ۿ?gH.gK	!@y      -C6?yI{xQr:  r  s     r@    test_factorial_complex_referencez7TestFactorialFunctions.test_factorial_complex_reference 
  s    	R 	R 	R 	t34444y#=>>>>v QRRRRw!56666|&STTTTTTrC   content)z[]z[1]z[1.1]z[NaN]z[NaN+i*NaN]z[NaN, 1]c                    |t           u rt          rt          j        d           |t          j        u r-t          d |D                       rt          j        d           |t          j        k    r-t          d |D                       rt          j        d           ||d|dk    st          |          dk    r|n|d         }t	          j	        |||          }d }|d	k    rI|rGt          j
        t          d
          5  t          j        |fi  d d d            n# 1 swxY w Y   n-t          |j        g d          sFt          j
        t          d          5  t          j        |fi  d d d            n# 1 swxY w Y   nt          |j        d          rL|d	k    rFt          j
        t          d          5  t          j        |fi  d d d            n# 1 swxY w Y   no|r[t          |j        d          sFt          j
        t          d          5  t          j        |fi  d d d            n# 1 swxY w Y   nt          j        |fi }|f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	        |||          }
t)          ||
d           d S d S )Nz+object arrays unsupported in array API modec              3   d   K   | ]+}t          j        |          p|t          |          k    V  ,d S ru  r]   r   ru   r   r   s     r@   	<genexpr>zKTestFactorialFunctions.test_factorial_array_corner_cases.<locals>.<genexpr>
  9      $S$SaRXa[[%AQ#a&&[$S$S$S$S$S$SrC   impossible combinationc              3   P   K   | ]!}t          t          |          d           V  "dS r  Nr1   r<  r  s     r@   r  zKTestFactorialFunctions.test_factorial_array_corner_cases.<locals>.<genexpr>!
  2      &S&Sa|DGGS'A'A&S&S&S&S&S&SrC   rU  r   rX   r  r  r  Incompatible options:.*r  r{  r|  r  r}  rz   r  c                 4    g | ]}t          j        |fi S r:  )r   rX  r   r   rZ  s     r@   r!  zLTestFactorialFunctions.test_factorial_array_corner_cases.<locals>.<listcomp>;
  s,    AAA!7$Q--"--AAArC   r   rQ   )r  r.   r6  skipr]   r+  anyr   lenr   r   r7  r   rX  r1   r  rb   r   rm  r`  rE  r?   r  r  r  rQ  r  rf   r  r  cxr"  rZ  s              @r@   !test_factorial_array_corner_casesz8TestFactorialFunctions.test_factorial_array_corner_cases
  s1    F???KEFFFBH$S$S7$S$S$S!S!SK0111BJ3&S&S7&S&S&S#S#SK0111//!AggW):):''HWCu555Y5z1JKKK + +!!**r***+ + + + + + + + + + + + + + +ag77 
	0z1JKKK + +!!**r***+ + + + + + + + + + + + + + +!'3'' 	0Fi,?,?z1PQQQ + +!!**r***+ + + + + + + + + + + + + + + 	0<55 	0z1OPPP + +!!**r***+ + + + + + + + + + + + + + + &q//B//FAAAAqwwyyAAACHHMM#a&&sC v W	)I|AGS/I/I)+V2U**2:x3e<<<Hu====== sH   D!!D%(D% E??FFG  G$'G$H==IIr  )1z1.1z2+2jrt  ru  rv  c           	         ||d}|dk    rJ|rHt          j        t          d          5  t          j        |fi | d d d            d S # 1 swxY w Y   d S t          t          |          dddt          d           g          sHt          j        t          d          5  t          j        |fi | d d d            d S # 1 swxY w Y   d S t          t          |          d          rN|dk    rHt          j        t          d	          5  t          j        |fi | d d d            d S # 1 swxY w Y   d S |t          j        |          ro|dk    ot          t          |          d          }|rt          j	        d
          nt          j
        d          }t          t          j        |fi ||           d S |ret          t          |          d          rHt          j        t          d          5  t          j        |fi | d d d            d S # 1 swxY w Y   d S t          t          j        |fi |t          j        |dz                        d S )NrU  r  r  r  rz   rj  r  r|  r}  rl  r  r  rX   )r6  r   r7  r   rX  r1   r<  r]   r   rm  r   rE  r   rB  r?   rf   r  rQ  rZ  rn  r"  s          r@   "test_factorial_scalar_corner_casesz9TestFactorialFunctions.test_factorial_scalar_corner_casesF
  s   
 //Y5z1JKKK + +!!**r***+ + + + + + + + + + + + + + + + + +d1ggS#tDzz'BCC 	Kz1JKKK + +!!**r***+ + + + + + + + + + + + + + + + + +$q''3'' 	KFi,?,?z1PQQQ + +!!**r***+ + + + + + + + + + + + + + + + + +Y"(1++Y I-M<Q3M3MJ4>Ur}Z000BJuDUDUH 1! : :r : :HEEEEE 	K|DGGS11 	Kz1OPPP + +!!**r***+ + + + + + + + + + + + + + + + + + *13333W]1q55I5IJJJJJsG   A		AAB??CC
D**D.1D.6HHHr  c                 d   t           j        dk    rdnd}t          t          t	          j        |d                    t	          j        |d          |           t          t	          j        |gd                              t                    t	          j        |gd          |           d S )Nr6   +=r   Tr  FrQ   )r  r  r   rw   r   rY  r   r  s      r@   test_factorial2_accuracyz/TestFactorialFunctions.test_factorial2_accuracya
  s    
 //uuUg0$???@@*1E:::	G 	G 	G 	G*A3d;;;BB5II*A3e<<<4	I 	I 	I 	I 	I 	IrC   c           
         t          j        t          j        t	          t          |dd                    d          }t          |t          j        |d                     t          |t          j        |gd          d                    t          j
        dk    rdnd}t          |          }t          |t          j        |d	          |
           t          |t          j        |gd	          d         |
           d	dd}|dz  dk    rMt          |t          j        |fi ||
           t          |t          j        |gfi |d         |
           d S d S )Nr   r  rX   Tr  r6   r  r   FrQ   r  rU  rJ   )	functoolsreduceoperatormulr$  rv   r   r   rY  r  r  rw   r   r  s        r@   test_factorial2_int_referencez4TestFactorialFunctions.test_factorial2_int_referencem
  sd    "8<eAq"oo1F1FJJ7G$6q$E$E$EFFF7G$6s$$G$G$G$JKKK//uuU..!3AU!C!C!C$OOOO!3QCu!E!E!Ea!HtTTTT 	22q5A::GW%7%@%@R%@%@tLLLLGW%7%B%Br%B%B1%EDQQQQQQ :rC   c                    d } |dd            |dt          j        d          t          j        dt          j        z            z              |dt          j        d          t          j        dt          j        z            z              |dd            |d	d
            |dd            |dd            |dd           d S )Nc                     d}ddd}t          t          j        | fi |||           t          t          j        | gfi |d         ||           d S )Nr  Fr  rU  rQ   r   )r   r   rY  r  s       r@   rp  zHTestFactorialFunctions.test_factorial2_complex_reference.<locals>._check
  sq    D I66BG.q77B77MMMMG.s99b99!<hTRRRRRRrC   r   r  rH   rJ   rn   r  g^D]?JO?r  y^D]?JO?        y      @      @y&0!:?gSt$gtQ*@y       -C6?yqj?x*)r   rY  r  r   r   r  s     r@   !test_factorial2_complex_referencez8TestFactorialFunctions.test_factorial2_complex_reference
  s	   	S 	S 	S 	q1q7-a0049Q[3I3IIJJJJrG.r22TYq47{5K5KKLLLLt45555y#>????v OPPPPw!67777|&UVVVVVVrC   c                    |t           j        k    r-t          d |D                       rt          j        d           |t           j        k    r-t          d |D                       rt          j        d           ||d|dk    st          |          dk    r|n|d         }t          j        |||          }d }|dk    rH|rFt          j        t          d	
          5  t          j        |fi  d d d            n# 1 swxY w Y   nt          |j        g d          sFt          j        t          d
          5  t          j        |fi  d d d            n# 1 swxY w Y   nut          |j        ddg          rL|dk    rFt          j        t          d
          5  t          j        |fi  d d d            n# 1 swxY w Y   nt          j        |fi }|f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        |||          }
t%          ||
d           d S d S )Nc              3   d   K   | ]+}t          j        |          p|t          |          k    V  ,d S ru  r  r  s     r@   r  zLTestFactorialFunctions.test_factorial2_array_corner_cases.<locals>.<genexpr>
  r  rC   r  c              3   P   K   | ]!}t          t          |          d           V  "dS r  r  r  s     r@   r  zLTestFactorialFunctions.test_factorial2_array_corner_cases.<locals>.<genexpr>
  r  rC   rU  r   rX   r  r  r  r  r{  r|  rj  r  r}  c                 4    g | ]}t          j        |fi S r:  )r   rY  r  s     r@   r!  zMTestFactorialFunctions.test_factorial2_array_corner_cases.<locals>.<listcomp>
  ,    BBB17%a..2..BBBrC   r  rQ   )r]   r+  r  r6  r  r   r  r   r   r7  r   rY  r1   r  rb   r   rm  r`  rE  r  s              @r@   "test_factorial2_array_corner_casesz9TestFactorialFunctions.test_factorial2_array_corner_cases
  sw    BH$S$S7$S$S$S!S!SK0111BJ3&S&S7&S&S&S#S#SK0111//!AggW):):''HWCu555Y5z1JKKK , ,"1+++++, , , , , , , , , , , , , , ,ag77 	1z1JKKK , ,"1+++++, , , , , , , , , , , , , , ,!'C:.. 	16Y3F3Fz1PQQQ , ,"1+++++, , , , , , , , , , , , , , , '00R00FBBBB		BBBCHHMM#a&&sC v W	)I|AGS/I/I)+V2U**2:x3e<<<Hu====== s6    C??DD=EE #E  F??GGc           	         ||d}|dk    rJ|rHt          j        t          d          5  t          j        |fi | d d d            d S # 1 swxY w Y   d S t          t          |          dddt          d           g          sHt          j        t          d          5  t          j        |fi | d d d            d S # 1 swxY w Y   d S t          t          |          ddg          rN|dk    rHt          j        t          d	          5  t          j        |fi | d d d            d S # 1 swxY w Y   d S |t          j        |          ro|dk    ot          t          |          d          }|rt          j	        d
          nt          j
        d          }t          t          j        |fi ||           d S  | j        |fddi|}t          t          j        |fi ||d           d S )NrU  r  r  r  rz   rj  r  r|  r}  rl  r  rg   rJ   r   rQ   )r6  r   r7  r   rY  r1   r<  r]   r   rm  r   rE  rS  r  s          r@   #test_factorial2_scalar_corner_casesz:TestFactorialFunctions.test_factorial2_scalar_corner_cases
  s   
 //Y5z1JKKK , ,"1+++++, , , , , , , , , , , , , , , , , ,d1ggS#tDzz'BCC 	Sz1JKKK , ,"1+++++, , , , , , , , , , , , , , , , , ,$q''C:.. 
	S6Y3F3Fz1PQQQ , ,"1+++++, , , , , , , , , , , , , , , , , ,Y"(1++Y I-M<Q3M3MJ4>Ur}Z000BJuDUDUH 21 ; ; ; ;XFFFFF*t*1888R88H 21 ; ; ; ;XERRRRRRs5   A		AAB??CCD,,D03D0rg   r  rn   ic           	      l   t           j        dk    rdnd}t          t          t	          j        ||d                    t	          j        ||d          |           t          t	          j        |g|d                              t                    t	          j        |g|d          |           d S )Nr6   r  r  TrK  FrQ   )r  r  r   rw   r   rM  r   )r?   rf   rg   rR   s       r@   test_factorialk_accuracyz/TestFactorialFunctions.test_factorialk_accuracy
  s     //uuUg0atDDDEE*1???d	L 	L 	L 	L*A3!4@@@GGNN*A3!5AAA	N 	N 	N 	N 	N 	NrC   r#  c           
         t          j        t          j        t	          t          |d|                     d          }t          |t          j        ||d                     t          |t          j        |g|d          d                    t          j
        dk    rdnd}t          |          }t          |t          j        ||d          |	           t          |t          j        |g|d          d         |	           |dd
d}||z  dk    rOd}t          |t          j        |fi ||	           t          |t          j        |gfi |d         |	           d S d S )Nr   rX   Tr  r6   gt =r'  FrQ   r  r  r  )r  r  r  r  r$  rv   r   r   rM  r  r  rw   r   )r?   rf   rg   r!  rR   rZ  s         r@   test_factorialk_int_referencez4TestFactorialFunctions.test_factorialk_int_reference
  sv    "8<eAq1"oo1F1FJJ7G$6q!4$H$H$HIII7G$6sAT$J$J$J1$MNNN//uuU..!3Aq!F!F!FTRRRR!3QC%!H!H!H!KRVWWWW u	::q5A::DGW%7%@%@R%@%@tLLLLGW%7%B%Br%B%B1%EDQQQQQQ :rC   c           	         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 S )#Nc                     d}|ddd}t          t          j        | fi |||           t          t          j        | gfi |d         ||           d S )Nr'  Fr  r  rQ   r   )r   r   rM  )rf   rg   r   rR   rZ  s        r@   rp  zHTestFactorialFunctions.test_factorialk_complex_reference.<locals>._check  ss    D5I>>BG.q77B774HHHHG.s99b99!<cMMMMMMrC   rH   r   TrK  )rf   rg   r   r   gD!)@g      @gNq53@r  gG`@r  g     @y             @y            @y      @      @yRsU#[@y      @      y?M,a?y@/n?'?r  gyL_ǚZ?r  yyL_ǚZ?        g333333@gffffffyNV?*V7?g333333y)kh]bg):giߑT@y      -C6?y(5E?WTr   rM  r  s     r@   !test_factorialk_complex_referencez8TestFactorialFunctions.test_factorialk_complex_reference  s   	N 	N 	N 	aW/QdCCCDDDDa0111123333c23333s''''W55551"RSSSSf"QRRRR6'VWWWW 67777a%@AAAA"RSSSS#UVVVVA#89999(VWWWWWWrC   c                    |t           j        k    r-t          d |D                       rt          j        d           |t           j        k    r-t          d |D                       rt          j        d           d||d|dk    st          |          dk    r|n|d         }t          j        |||          }d }|d	k    rH|rFt          j        t          d
          5  t          j        |fi  d d d            n# 1 swxY w Y   nt          |j        g d          sFt          j        t          d          5  t          j        |fi  d d d            n# 1 swxY w Y   nut          |j        ddg          rL|d	k    rFt          j        t          d          5  t          j        |fi  d d d            n# 1 swxY w Y   nt          j        |fi }|f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        |||          }
t%          ||
d           d S d S )Nc              3   d   K   | ]+}t          j        |          p|t          |          k    V  ,d S ru  r  r  s     r@   r  zLTestFactorialFunctions.test_factorialk_array_corner_cases.<locals>.<genexpr>8  r  rC   r  c              3   P   K   | ]!}t          t          |          d           V  "dS r  r  r  s     r@   r  zLTestFactorialFunctions.test_factorialk_array_corner_cases.<locals>.<genexpr>:  r  rC   r   r  r   rX   r  r  r  r  r{  r|  rj  r  r}  c                 4    g | ]}t          j        |fi S r:  r  r  s     r@   r!  zMTestFactorialFunctions.test_factorialk_array_corner_cases.<locals>.<listcomp>Q  r  rC   r  rQ   )r]   r+  r  r6  r  r   r  r   r   r7  r   rM  r1   r  rb   r   rm  r`  rE  r  s              @r@   "test_factorialk_array_corner_casesz9TestFactorialFunctions.test_factorialk_array_corner_cases+  sy    BH$S$S7$S$S$S!S!SK0111BJ3&S&S7&S&S&S#S#SK0111u77!AggW):):''HWCu555Y5z1JKKK , ,"1+++++, , , , , , , , , , , , , , ,ag77 	1z1JKKK , ,"1+++++, , , , , , , , , , , , , , ,!'C:.. 	16Y3F3Fz1PQQQ , ,"1+++++, , , , , , , , , , , , , , , '00R00FBBBB		BBBCHHMM#a&&sC v W	)I|AGS/I/I)+V2U**2:x3e<<<Hu====== s6   !D  DD>EE!$E!!G  GGc           	         |||d}|dk    rJ|rHt          j        t          d          5  t          j        |fi | d d d            d S # 1 swxY w Y   d S t          t          |          dddt          d           g          sHt          j        t          d          5  t          j        |fi | d d d            d S # 1 swxY w Y   d S t          t          |          ddg          rN|dk    rHt          j        t          d	          5  t          j        |fi | d d d            d S # 1 swxY w Y   d S |t          j        |          ro|dk    ot          t          |          d          }|rt          j	        d
          nt          j
        d          }t          t          j        |fi ||           d S  | j        |fi |}t          t          j        |fi ||d           d S )Nr  r  r  r  rz   rj  r  r|  r}  rl  r  r   rQ   )r6  r   r7  r   rM  r1   r<  r]   r   rm  r   rE  rS  )r?   rf   rg   r  rQ  rZ  rn  r"  s           r@   #test_factorialk_scalar_corner_casesz:TestFactorialFunctions.test_factorialk_scalar_corner_cases\  s    u77Y5z1JKKK , ,"1+++++, , , , , , , , , , , , , , , , , ,d1ggS#tDzz'BCC 	Sz1JKKK , ,"1+++++, , , , , , , , , , , , , , , , , ,$q''C:.. 
	S6Y3F3Fz1PQQQ , ,"1+++++, , , , , , , , , , , , , , , , , ,Y"(1++Y I-M<Q3M3MJ4>Ur}Z000BJuDUDUH 21 ; ; ; ;XFFFFF*t*13333H 21 ; ; ; ;XERRRRRRs5   A

AA C  CCD--D14D1rM   r   r   c                    |rdgnd}|||d}|dk    rod}t          t          |          d          r|dk     rd}t          j        t          |          5  t          j        |fi | d d d            d S # 1 swxY w Y   d S |dk    rHt          j        t          d	          5  t          j        |fi | d d d            d S # 1 swxY w Y   d S t          j        |fi | d S )
NrX   r  rL  r}  rz   zFor `extend='zero'`.*r  r   zParameter k cannot be zero!)r1   r<  r6  r   r7  r   rM  )r?   rg   r  rQ  rr  rf   rZ  r  s           r@    test_factorialk_raises_k_complexz7TestFactorialFunctions.test_factorialk_raises_k_complexu  s   
 QCCau77V1CDGGS)) .q1uu-z555 , ,"1+++++, , , , , , , , , , , , , , , , , ,!VVz1NOOO , ,"1+++++, , , , , , , , , , , , , , , , , , q''B'''''s$   A66A:=A:$CCCrw  c                     |rdgnd}|||d}t          j        t          d          5  t          j        |fi | d d d            d S # 1 swxY w Y   d S )NrX   r  r|  r  )r6  r   r7  r   rM  )r?   rg   r  rQ  rr  rf   rZ  s          r@   test_factorialk_raises_k_otherz5TestFactorialFunctions.test_factorialk_raises_k_other  s     QCCau77]:-FGGG 	( 	(q''B'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   A		AAr   c                    |||d}|r|t          j                    v rrt          j        t          |         g          }t          t          j        |fi |j        t                     t          t          j        |dz   fi |j        t          j
                   t          j        |dz   fi |t          j        t          j                  j        k    sJ t          j        t           |         g          }t          t          j        |fi |j        t          j
                   t          t          j        |dz   fi |j        t                     t          j        |dz   fi |t          j        t          j
                  j        k    sJ d S t          j        t          j        |d          g          }|rt          nt          j        }t          t          j        |fi |j        |           d S )Nr  rX   )r/   keysr]   r   r0   r   r   rM  r  r*   r+  r%  int32r&  r  getr   )r?   rg   r  rQ  rZ  rf   r  s          r@   test_factorialk_dtypez,TestFactorialFunctions.test_factorialk_dtype  s    u77 	CQ38::::3A6788A+A4444:GDDD+AE88R88>III%a!e22r22RXbh5G5G5KKKKK3A6788A+A4444:BHEEE+AE88R88>GGG%a!e22r22RXbh5G5G5KKKKKKK371==>??A $3FFE+A4444:EBBBBBrC   c                    t          j        t           j        dddt           j        g          }t          j        t           j        dddt           j        g          }t          t	          j        |d          |           t          j        t          d          5  t	          j        |d	           d d d            d S # 1 swxY w Y   d S )
NrX   rJ   r   rN   Fr  r  r  T)	r]   r   r  r   r   rX  r6  r   r7  r?   r   r"  s      r@   test_factorial_mixed_nan_inputsz6TestFactorialFunctions.test_factorial_mixed_nan_inputs  s    HbfaArv.//8RVQ1bf566W&q666AAA]:-KLLL 	- 	-at,,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   B>>CC)=r3  r4  r5  rS  r6  r7  r9  r[  r]  ra  rh  rq  r]   r  r   rm  r   
datetime64r   rX  rY  rM  r  r  rv   r  ru   int8int16r  r+  r  r  uint32r  r  r  ri  r  r  r$  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r
  r:  rC   r@   rI  rI    s_       ' ' ' [^RRRT T= =T T= [S,,,//[WtUm44: : 54 0/: [WtUm44S S 54S [S"4"4"455T T 65T& [VaW--[Y55) ) 65 .-)4 [WtUm44[X	':;;[FJBJu%%rvr	'9=2=;T;TFBFRK"&26'B,mbmE>R>R	

 
 
  
 
 [		G.0BC 2 2	 
 
 <; 54"2B [X3'ABBB B CBB [XuuQ{{33[WtUm44F F 54 43F< [WtUm44[Wc27BHbh
")RY	'   [UEE!QKK005 5 10	  545 [WtUm44[WeeAqkk22; ; 32 54;" [1[WrxBIry&QRR[^RRRT T)6 )6T T SR )6X [S%%C"4"455	H 	H 65	H [S!T%%2,,//$$uuRb7I7I2J2JJL LM ML LM"9 9 9.U U U  [Wrx')}f'> ? ?[X	':;;[WtUm44[UEE!QKK00[	aS3%"&BFRVb[$8#9BFA;GFFF   
)> )>  10 54 <;? ?)>V [X	':;;[WtUm44[S1c62626BF2I;Mt"T!Q!Q!Q  S SK KS S 54 <;K. [S%%C"4"455	I 	I 65	I [S!T%%2,,//$$uuRb7I7I2J2JJL LR RL LR,W W W* [Wrx')}f'> ? ?[X	':;;[WtUm44[UEE!QKK00[	aS3%"&BFRVb[$8#9BFA;GFFF   
$> $>  10 54 <;? ?$>L [X	':;;[WtUm44[S1c62626BF2I;Mt"T!Q!Q!Q  S SS SS S 54 <;S( [S%%1++.. [S%%R"5"566	N 	N 76 /.	N [S$$uuQ{{"3"3r2h">??[S!T%%2,,//$$uuRb7I7I2J2JJL LR RL L @?R0X X X< [Wrx')}f'> ? ?[X	':;;[WtUm44[UEE!QKK00[	aS3%"&BFRVb[$8#9BFA;GFFF   
$> $>  10 54 <;? ?$>L [X	':;;[WtUm44[S%%1++..[S1c62626BF2I;Mt"T!Q!Q!Q  S SS SS S /. 54 <;
S( [WtUm44[^RRRT T[S2tQVS"&"IJJ( ( KJT T 54(  [WtUm44[^RRRT T [S8]R]5-A-A"B"*E!2  4 4( (4 4T T 54( [^RRRT T[S%%2,,//C C 0/T TC(- - - - -rC   rI  c                       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             Zd Z	d Z
d ZdS )TestFresnelzz, s, c)r   gN?ց[?)y      ?        r  r  )y       ?yn<ӿj<Cy)BR;߿ux7Q?)y      yھ|}-2?y/?!ۿ)rH  GM?pBR?)y      @        r  r  )y              @y       GMܿy        pBR?)y              gGMܿgpBR߿)y             y        GM?y       pBR߿r   r  c                     t          t          j        |                    }t          |t          ||g          dd           d S )Nr?  r   r[   )r   r   r=  r   )r?   r!  r  r  frss        r@   test_fresnel_valueszTestFresnel.test_fresnel_values  sC    @ GOA&&''UAq6]]a@@@@@@rC   c                 p   t          j        d          \  }}t          |t          g d          dd           t          |t          g d          dd           t          j        |          d         }t          j        |          d         }t          |ddd           t          |ddd           d S )	Nr   )y @X9v?y^I@48E?y=
ףp@+?y@eX?yO@Ǻ?~jtX?r   r[   )y.1?ǘ?yʡE6@:#J{/?yq-
@y&1?yh o@߾3?yW2q@qh?rX   rj  )r   fresnel_zerosr   r   r=  )r?   szoczovals1vals2s        r@   test_fresnel_zeroszTestFresnel.test_fresnel_zeros  s    (++SU $4 $4 $4 5 5
 $!	- 	- 	- 	- 	U $4 $4 $4 5 5
 $!	- 	- 	- 	- $$Q'$$Q'qwQ7777qwQ777777rC   c                     t          j        d          \  }}t          j        d          }t          ||dd           d S )NrN   Afcz=r   r[   )r   r  fresnelc_zerosr   )r?   r  r  frcs       r@   test_fresnelc_zeroszTestFresnel.test_fresnelc_zeros  C    (++S$Q''SwQ777777rC   c                     t          j        d          \  }}t          j        d          }t          ||dd           d S )Nr   r!  r   r[   )r   r  fresnels_zerosr   )r?   r  r  r  s       r@   test_fresnels_zeroszTestFresnel.test_fresnels_zeros  r%  rC   N)r3  r4  r5  r6  r7  r9  r]   r   r  r  r$  r(  r:  rC   r@   r  r    s        [Y7=	

	
 	&,)/*	c
&$;)  >A A? >A8 8 8&8 8 8
8 8 8 8 8rC   r  c                      e Zd Zd Zd Zd Zed             Zed             Zd Z	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j        dej                  f eddd           ej        dej                  fdgej        gfg          d             ZdS )	TestGammac                 N    t          j        d          }t          |d           d S r@  )r   rB  r   )r?   gams     r@   rC  zTestGamma.test_gamma  s'    mASrC   c                     t          j        d          }t          t          j        d                    }t	          ||dd           d S )Nr   r?  r   r[   )r   rH  r   rB  r   )r?   gamlnlngams      r@   rI  zTestGamma.test_gammaln  sE    ""GM!$$%%u6::::::rC   c                     t          j        dd          }t          j        dd          }t          ||dd           d S )Nr   r?  r   r[   )r   rE  gammaincinvr   )r?   gccinvgcinvs      r@   rF  zTestGamma.test_gammainccinv  sC    %b,,#Br**F;;;;;;rC   c                 p   t          j        dd          }t          j        d|          }t          |ddd           t          j        dd          }t          j        dd          }t          d|dd           t          |ddd           t          j        dd	          }t          d
|dd           d S )NrK   rJ  r   r[   r&  g?g`	\;r#  gmb<g      &@)r   r1  gammaincr   r?   r   r   s      r@   test_gammaincinvzTestGamma.test_gammaincinv  s    2&&R""3W15555R&&$:;;agA66661aHHHH$JKKagA666666rC   c                     dt          j        dd          dt          j        dd          dg}|D ]>}t          j        d|          }t          j        d|          }t          ||d           ?d S )	Nr  r   gCs?rX   g^F    ?rK   r   rQ   )r]   r  r   r1  r5  r   )r?   ptsptr   r   s        r@   test_975zTestGamma.test_975  s    
 |D!$$l|D!$$l4  	/ 	/B#B++A a((AAr.....	/ 	/rC   c                     t          j        d          }dt          j        d          z  }t          ||dd           d S )Nr
  rX   r?  r   r[   )r   r  rB  r   )r?   rgamrlgams      r@   r  zTestGamma.test_rgamma   sB    ~a  '-"""e&q999999rC   c                 J    t          t          j        d          d           d S )NrM   r   )r   r   r  r>   s    r@   test_infinityzTestGamma.test_infinity%  s"    W^B''+++++rC   z
x,expectedrM  r   ir       i c   r  gP²Zdbc                 J    t          t          j        |          |           d S ru  )r   r   rB  r	  s      r@   
test_poleszTestGamma.test_poles(  s$      	7=++X66666rC   N)r3  r4  r5  rC  rI  rF  r2   r7  r;  r  r@  r6  r7  r9  r]   r   r  rv   fullrD  r:  rC   r@   r*  r*    s[         ; ; ;
< < <
 	7 	7 	7 
/ 
/ 
/: : :
, , , [ vgrv 01C[BF7BF+,U3]]GBGB//0U5#r""GBGB$7$78$%x0	
 7 7 7 7 7rC   r*  c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )
TestHankelc                 z    t          t          j        dd          t          j        dd           dd           d S Nr  rJ   r   rj  r   r[   )r   r   rh  r>   s    r@   
test_negv1zTestHankel.test_negv1=  G    A..A1F1F0F$1	. 	. 	. 	. 	. 	.rC   c                     t          j        dd          }t          j        dd          t          j        dd          dz  z   }t	          ||dd           d S NrX   r  r  r?  r   r[   )r   rh  r  r'  r   )r?   hank1hankrls      r@   ri  zTestHankel.test_hankel1A  sW    "%%*Qr""WZ"%5%5b%88vF;;;;;;rC   c                 z    t          t          j        dd          t          j        dd           dd           d S rI  )r   r   rl  r>   s    r@   test_negv1ezTestHankel.test_negv1eF  I    (Q//'2B1a2H2H1H$1	. 	. 	. 	. 	. 	.rC   c                     t          j        dd          }t          j        dd          t          d          z  }t	          ||dd           d S )NrX   r  y       r?  r   r[   )r   rl  rh  r   r   )r?   hank1ehankrles      r@   rm  zTestHankel.test_hankel1eJ  sM    !!B''/!B''D		1f1======rC   c                 z    t          t          j        dd          t          j        dd           dd           d S rI  )r   r   rp  r>   s    r@   
test_negv2zTestHankel.test_negv2O  rK  rC   c                     t          j        dd          }t          j        dd          t          j        dd          dz  z
  }t	          ||dd           d S rM  )r   rp  r  r'  r   )r?   hank2hankrl2s      r@   rq  zTestHankel.test_hankel2S  sW    "%%:a##gj2&6&6r&99wV!<<<<<<rC   c                 z    t          t          j        dd          t          j        dd           dd           d S rI  )r   r   rs  r>   s    r@   
test_neg2ezTestHankel.test_neg2eX  rR  rC   c                     t          j        dd          }t          j        dd          }t          ||dd           d S )NrX   r  r?  r   r[   )r   rs  r   )r?   hank2ehankrl2es      r@   test_hankl2ezTestHankel.test_hankl2e\  sC    !!B''#Ab))vA>>>>>>rC   c                     t          j        dd          }t          j        |j                  sJ t          j        |j                  sJ d S r;   )r   rp  r]   r   r   isposinfr  r?   r  s     r@   test_hankel2_gh4517zTestHankel.test_hankel2_gh4517a  sI    oa##x!!!!!{38$$$$$$$rC   N)r3  r4  r5  rJ  ri  rQ  rm  rW  rq  r\  r`  rd  r:  rC   r@   rG  rG  ;  s        . . .< < <
. . .> > >
. . .= = =
. . .? ? ?
% % % % %rC   rG  c                   J    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )	TestHyperc                     t          j        dd          }t          j        dd          t          j        dd          dz  z   }t	          ||dd           d S rM  )r   h1vpjvpyvpr   )r?   h1h1reals      r@   	test_h1vpzTestHyper.test_h1vpi  W    \!B+a##gk!B&7&7&::Fa888888rC   c                     t          j        dd          }t          j        dd          t          j        dd          dz  z
  }t	          ||dd           d S rM  )r   h2vpri  rj  r   )r?   h2h2reals      r@   	test_h2vpzTestHyper.test_h2vpn  rn  rC   c                 B   t          t          j        dd          dd           t          t          j        dd          dd           t          j        d	g d
          }t          j        g d          }t          ||d           t          j        d	t          j        g d
          dz             }t          ||                    t                    d           g d}g d}t          j        ||          }g d}t          ||d           t          j        t          j        |gdz            |          }t          |t          j        |gdz            d           t          t          t          j        t          j        |gdz            ddg           d S )Nr  r   Qvo?r   rQ   r   r   r   r  )g      rM   r   rX   r  )g̷?g3|t-Ք?r   go?g{h?r  r   r  r  )r   rX   r   )r   gc?ru  rJ   r   rX   )
r   r   hyp0f1r]   r   r   r  vstackassert_raisesr7  )r?   r   r"  r  x2s        r@   test_hyp0f1zTestHyper.test_hyp0f1s  s   sC002BOOOOsA..%@@@@ N3 5 5 5668 A A A B B8%0000 N3)>)>)> ? ?# EFF8??733%@@@@ __[[N2r"">>>8%0000N29bTAX..3329hZ!^445AAAAj'.iq))Aq6	3 	3 	3 	3 	3rC   c                 V    t          j        dd          }t          |ddd           d S )N皙?y      ?      ?y;EG?uM?r   r   r[   )r   rw  r   rc  s     r@   test_hyp0f1_gh5764zTestHyper.test_hyp0f1_gh5764  s@     nS,//H#!	- 	- 	- 	- 	- 	-rC   c                 "   t          j        ddd          }t          |d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 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g dig dj          }|D ]C\  }}}}t          j        |||          }t	          t          ||z
            |z  dkk                Dd S )lNr  r  g?r   r   r[   )g{*= g˱a)g5=gvX@)g)AI@gDAhg$Pj)g~٭@)g,qUp,g@=&?gX 3@gZ@)g\@g88*@g\ֳ!=@g   ƞA)gAZ;gOFA'gxŝO<g_Dc D)g^g@g V*E7g4)3@g7-XtD)gΧU(@g2Tj8g$@g  LhB)ge;@gJgogr@g `屫B)g5'.@gqZ=g7߈Y.g8w)gB,@g"^#@grT[	R3@g  B)gYgN],*@g*!j,g1@)g#r @gq{874*gWs%o.@gMdD)g8|.2@g*!,g?I(#@gJ
r .)gu8g#=)@g*'1g)ψvA)g%0N:@gUx1@gx@gr),c@)g:M8@gGb+=@g3ҜV/@gX9ҙim@)g"dxz@gqKgv7##@g  >B)g kx-gD8L+8@g܈2g72LU@)gtd@Q4h6@g%@}gr3b @gu߯ѡ)g򋷺?g"p$`E2@gY|T3g\D?)gV-(+@g$[3@g;/@gEQwв@)g[fgLL4gQV@g0#.@)g;@g/?jvgx.<N&@g^I)g+9gX[?gbZSH%@g5/)@)g}RgŢ	@g},*@g6@g1w-@)gRA(g_@g5A} :=g   FA)gQz5@gq.#gTq&gc ?)gφ%#gZV@
g%@0@g   Syd)gB۽ܟ%@g*>8gV@'g	ʦ)g/H:gn@S g)bǙ9@g  9)gT쁹3!gD gkLFr%@g3333`4A)g:k
g\=)'gi,k9gbx?)giXwg-CwU5@g'jin9gX5@)gb@gTy4#/@g]pH=gIw?)g63@g2XxM:@g~?^0gW1?)g37g R{@gicx.4?gmm?)gv܏%7@g9Ma%=g}ygGr##@)gG8-xы.@gǂ@ghb(@g  A)gw1@gq2@gO],@g0ɷ-X@)g2@g́y#<@gͣx?g]?)g];˄f$@g1}0g_9g8ڃ@)g:!ω1g)q(@gg2gv%)A)gYN:+gn	Ȱ-?g>gZd|I.A)gr/K@g\}L9@g*gΙ?)gQq5V@g?)@g'@0@glۭ`@)gVn:gRQ0gT&g QC)gR4 8gi+gK @g{G)gtiq+g(O?3g	1=@g  8cB)g|>oϘg\!<@g"?4V?g%c\q?)g gpfP!gAO:@g,\)g=R8@g%;gz3@g~0G)g.CVl@ge< .@g9@gkq1A)g=~$gpR7@g 77g,ǆ@)g^g{)gRA2@g  dL)gf=4,R@gyO-g#ޕ~8@g)g|ݩ%P4g:<9@gKzs4g$(~O4@)g2y3@g1$6g&TpxA6gG!JA)gf^XH
^;@g7r:@g`,/@gi{dA)gihx@g!B8(@g7j*@gh@)glmF<gpO4@g`2"@g-)gnV3!2@g.mq1g!Z{.@grOE)gs`m@gzAUguC=V#@g  \)gPL-(@g,9$"9g6u7@geRF)gw8gv=5@gjRW+g(\-@)gyg~=@g4MVgwz:@)g^0g+7%g-@j81g5ׂ,j)gj4gz0g-</;gݽ]
D)gN43@g}W6@gLUS!9gɍF>)g Q4@g=}gȮ5@g]nhgF)gV9g9gf9,#gF|}fv?)g=^ee;@gy}2g'T> g#o@)g+5g;gN8Cg8@g   bkA)gSx+26@g@gI0gSMC)gT*0@g`<6gWy5@gǟRj)gӰk
g/:?gJLHR"@gxu-)gKu@g6gt8_x7@gd;=')g+:;@gBͤ10@g";gK$?)gp @g dg	=@g=6` F)gTbR.g9:g3@gUfgRbKZ@)g!g%P73;g]?gr	y?)g)Yv2gȹq@g/3g   A)g?j/|g7:@g#~oݽ?g8pE?)gPj/gS"X)gYgt0N?)ggo&	xT7@g-hT@#@g.;%r?)g'_@gɖ@7g:Kڞ$@g [B)gk5ں9gѼ:gk%tp;@g  .<^)gf:OI&gO/g#01|2gf`Y)gqv~@guFd9@gz+S7gF1/$?)gx3g~[6:g;s9@gKw*1@)gP@gv;K,gҬd&<@g!s)gֈ`|.gOwx=@g+MK<gUU@)gکI@g©jG1g4g؃66@g(4ν4E)gS>?gD-lgSL,c<gԉE4?)gd?A g3$)glx^?gs>|T?)g(%@g:ĉ$@g~^gv2gJHF&?)g}r":@g3\z;@go)@g+hA)g@')"gVv/@guQU-gfy2yt@)gM6y%$g/;R#@g):@gw%",6Կ)g%x'g$6g5gu$9?)glkC9g<tF8gp?g ?rI  )r   rw  r   r   r   rC  )r?   hyp1ref_datarD  rE  r  r"  r  s           r@   rx  zTestHyper.test_hyp1f1  s1   ~bB''0vAFFFF  e
OOOe
NNNe
 NMMe
 MLL	e

 POOe
 NMMe
 NMMe
 NMMe
 POOe
 MLLe
 ONNe
 NMMe
 ONNe
 ONNe
 MLLe
  MLL!e
" NMM#e
$ ONN%e
& ONN'e
( NMM)e
* MLL+e
, ONN-e
. ONN/e
0 NMM1e
2 MLL3e
4 ONN5e
6 ONN7e
8 POO9e
: POO;e
< POO=e
> ONN?e
@ POOAe
B ONNCe
D NMMEe
F NMMGe
H NMMIe
J ONNKe
L MLLMe
N MLLOe
P MLLQe
R ONNSe
T ONNUe
V ONNWe
X NMMYe
Z MLL[e
\ QPP]e
^ POO_e
` ONNae
b NMMce
d POOee
f NMMge
h MLLie
j ONNke
l POOme
n ONNoe
p ONNqe
r ONNse
t MLLue
v MLLwe
x ONNye
z NMM{e
| ONN}e
~ NMMe
@ ONNAe
B ONNCe
D QPPEe
F POOGe
H NMMIe
J NMMKe
L POOMe
N ONNOe
P ONNQe
R ONNSe
T ONNUe
V ONNWe
X ONNYe
Z NMM[e
\ NMM]e
^ ONN_e
` ONNae
b ONNce
d NMMee
f POOge
h NMMie
j NMMke
l POOme
n QPPoe
p NMMqe
r ONNse
t ONNue
v ONNwe
x NMMye
z ONN{e
| ONN}e
~ NMMe
@ MLLAe
B ONNCe
D ONNEe
F POOGe
H ONNIe
 e eN ' 	< 	<NAa(^Aa**FC6)**83d:;;;;	< 	<rC   c                     t          j        ddd          }t          j        ddd          }t          ||dd           d S )Nr   r  g7B.g|:B.r!  r   r[   r   rw  r   )r?   r  hyp2s      r@   test_hyp1f1_gh2957zTestHyper.test_hyp1f1_gh2957	  sE    ~c388~c388dq999999rC   c                 X    t          j        ddd          }t          |ddd           d S )Nr   r  ig<`?r!  r   r[   r  )r?   hyps     r@   test_hyp1f1_gh2282zTestHyper.test_hyp1f1_gh2282  s3    nS#u--1aHHHHHHrC   c                 X   dddddt          d          z  gdddddt          d	          z  gddd
d	dt          d          z  gg ddddt          d	          d
z  t          d          gddddt	          j        d          t	          j        d          z  t	          j        d          z  t	          j        d          z  gdd
d
ddt          t                    z  t	          j        d
          z  t	          j        d          z  t	          j        d          z  gdd
dddt          t                    z  t	          j        d          z  t	          j        d          z  t	          j        d          z  gdddddt	          j        d          z  t	          j        d          z  t	          j        d          z  t	          j        d          z  gg dg d g d!g d"g d#d$d%g}t          |          D ]9\  }\  }}}}}t	          j	        ||||          }t          ||d&d'd(| )           :d S )*Nr   rX   r  |Gz?r  g?g|Gzr   r   rJ   r  r}  )r   r  r  r  gYi2?r  r   g433333?rH   r
  r   rM   r  rt  g      ?r        @g      gUUUUUUտg  @gUUUUUU?g)r  r  r         $gEciH!@)r  r   rX   ffffff?gzG?)rJ   r  rX   r  gy&1|)rv  r   rX   r  g"nN%@?)rJ   r_  rX   r  g!J)r&  |      %@r>  gzS;)r&  r  g      %r>  g[B.VP<r?  r   test #r\   rR   err_msg)r   r   r	   r
   r   rB  r   r   r  rz  r   )	r?   valuesrz   rD  rE  r  r   rJ  cvs	            r@   r{  zTestHyper.test_hyp2f1  sj    !S&'#o*>*>">?!S'6&++#561c6#e**,-MMMCS1c'll31a]1e 4 44}S!!"$+M#$6$678 5"T"XXe 4 44}Y''(*1-	*B*BCD 5"T"XXe 4 44}Y''(*1-	*B*BCD wGM$///'-2H2HH}T""#%,]8%<%<=>
 ;::   &&&&&&GH9
< #,F"3"3 	N 	NA1aA1a++BBQMMMMM	N 	NrC   c                 r   t          j        ddd          }t          |ddd           g dg d	}}t          |          t          |          }}d
}t          j        |||          }t          t          t          |z            z  t          j        |||          t          j        d|z   |z
            t          j        |          z  z  |d|z
  z  t          j        d|z   |z
  d|z
  |          z  t          j        |          t          j        d|z
            z  z  z
  z  }t          ||dd           d S )NrX   r  r#  g D?r   r   r[   )r  r  333333?g)r  g	@r-  g	r   rJ   r!  )r   hyperur   r   r   r	   rw  rB  )r?   val1rD  rE  r!  hypuhprls          r@   test_hyperuzTestHyper.test_hyperu6  s7   ~aC((if1====   !4!4!4!ajj'!**!~a!$$3r!t99w~a!44 'ac!e 4 4W]15E5E E G 1Q3xqs1uQqS(C(CC")-"2"27=13E3E"E G G H 	dq999999rC   c                 T    t          t          j        ddd          ddd           d S )NrX   r  g3333334@g(¨?r!  r   r[   )r   r   r  r>   s    r@   test_hyperu_gh2287zTestHyper.test_hyperu_gh2287C  s;    q#t446J$1	. 	. 	. 	. 	. 	.rC   N)r3  r4  r5  rm  rs  r{  r~  rx  r  r  r{  r  r  r:  rC   r@   rf  rf  h  s        9 9 9
9 9 9
3 3 34- - -r< r< r<h: : :
I I I"N "N "NH: : :. . . . .rC   rf  c                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0d/ Z1d0 Z2d1 Z3dUd5Z4e5j6        7                     e8j9                    d6k    d78          d9             Z:e5j6        7                     e8j9                    d6k    d78          d:             Z;d; Z<d< Z=e5j6        j>        d=             Z?d> Z@d? ZAd@ ZBdA ZCdB ZDdC ZEdD ZFdVdFZGdG ZHdH ZIdI ZJdJ ZKdK ZLdL ZMdM ZNdN ZOdO ZPdP ZQdQ ZRdR ZSdS ZTdT ZUd4S )W
TestBesselc                     t          t          j        d                    }t          |t          ddg          dd           d S )Nr   gbɃ?gΝJ ֿr?  r   r[   )r   r   r  r   )r?   it0s     r@   r  zTestBessel.test_itj0y0I  sR    GN2&&''U$79M#NOO#!	- 	- 	- 	- 	- 	-rC   c                     t          t          j        d                    }t          |t          ddg          dd           d S )Nr   gbqTtt?g/]ooۿr?  r   r[   )r   r   r  r   )r?   it2s     r@   r  zTestBessel.test_it2j0y0N  sR    GOB''((U$9;O#PQQ#!	- 	- 	- 	- 	- 	-rC   c                 r    t          t          j        dd          t          j        dd                     d S Nr   rJ   r  )r   r   r  r>   s    r@   test_negv_ivzTestBessel.test_negv_ivS  s.    WZ!__gjA&6&677777rC   c                 ~    t          j        d          }t          j        dd          }t          ||dd           d S Nr  r   r?  r[   )r   r  r  r   r?   ozozrs      r@   r  zTestBessel.test_j0V  =    Z^^j2Cf1555555rC   c                 ~    t          j        d          }t          j        dd          }t          ||dd           d S Nr  rX   r?  r   r[   )r   r  r  r   r?   o1o1rs      r@   r  zTestBessel.test_j1[  r  rC   c                 V    t          j        dd          }t          |ddd           d S )NrX   r   ;x?r?  r   r[   )r   r  r   )r?   jnnrs     r@   r  zTestBessel.test_jn`  s1    z!B2aHHHHHHrC   c                 z    t          t          j        dd          t          j        dd           dd           d S rI  r   r   r  r>   s    r@   test_negv_jvzTestBessel.test_negv_jvd  s;    
2q))GJq!,<,<+<7QRSSSSSSrC   c           	          g dg dg dg dg dg}t          |          D ]5\  }\  }}}t          j        ||          }t          ||ddd| 	           6d S )
N)r   r  g
Ye?)UUUUUU?:0yE>g˿+>)r  rZ   g)%->)g@rZ   g5c)!9)r  r  g%,Ϳr?  r   r  r  )r  r   r  r   )r?   r  rz   rJ  r   r   ycs          r@   r  zTestBessel.test_jvg  s    ///555666666222	 &f-- 	N 	NLAy1aAq!!BBQMMMMM	N 	NrC   c                 z    t          t          j        dd          t          j        dd           dd           d S rI  )r   r   r  r>   s    r@   test_negv_jvezTestBessel.test_negv_jver  G    B**W[A->->,>$1	. 	. 	. 	. 	. 	.rC   c                    t          j        dd          }t          |ddd           t          j        dd          }d}t          j        d|          t	          t          |j                             z  }t          ||dd           d S )NrX   r   r  r?  r   r[   ?      ?)r   r  r   r  r   rC  r  )r?   jvexpjvexp1r!  jvexprs        r@   r  zTestBessel.test_jvev  s    Ab!!3&qIIIIQu%%Aac!&kk\!2!22V!<<<<<<rC   c                    t          j        dd          }t          j        dd          }t          |t          g d          dd           t          |t          g d          dd           t          j        dd          }t          |t          g d	          d
           t          j        dd          }t          |t          g d          d
           d S )Nr   r   rX   )go@.=@gzj,[@glN!@g5/ D'@gh>-@rH  r[   gW@g0@gQX$@g*@g8*5{x0@rW   )gEk[@g~Cju]@gYrʝ^@g, `@gf	`@rP   rQ   -  )gts@g&ǭr3t@gWt@g,$Y&u@gu@r   jn_zerosr   r   )r?   jn0jn1jn102jn301s        r@   test_jn_zeroszTestBessel.test_jn_zeros~  sP   q##q##U $3 $3 $3 4 4
 $!	- 	- 	- 	- 	U $. $. $. / /
 $!	- 	- 	- 	-  Q''u &> &> &>  ?  ? FK		L 	L 	L 	L  Q''u &> &> &>  ?  ? FK		L 	L 	L 	L 	L 	LrC   c                    t          j        dd          }t          |d         dd           t          |d         dd           t          |d	         d
d           t          j        dd          }t          |d         dd           t          |d         dd           t          |d	         dd           t          j        dd          }t          |t          g d          d           d S )Nr   rm   i  g;@rP   rQ   i  g8v@i+  gׂMm@r&  gxi@g	,@gи{>@i  r   )gUDX@g!@g*HS@gz5 @g@2;@r  r  )r?   r  jn10jn3010s       r@   test_jn_zeros_slowzTestBessel.test_jn_zeros_slow  s   q#&&E
$9FFFFE
$9FFFFE
$9FFFFC((U%:GGGGU%:GGGGU%:GGGG!$q)) ': ': ': !; !; BF		G 	G 	G 	G 	G 	GrC   c                 `  
 t           j        

fd}t          dd          D ]}t          j        |          \  }}}}t	          |||          D ]]\  }}}	|	dk    rt           
||          dd           )|	dk    rt           |||          dd           Lt          d|           d S )Nc                 H     | dz
  |           | dz   |          z
  dz  S )NrX   rJ   r:  )rf   r   r  s     r@   jnpz(TestBessel.test_jnjnp_zeros.<locals>.jnp  s/    Bqs1II1Q3q		)1,,rC   rX   rT   r   r   r"  zInvalid t return for nt=)r   r  rv   jnjnp_zerosrD  r   AssertionError)r?   r  ntr!  rf   r  tzznnttr  s             @r@   test_jnjnp_zeroszTestBessel.test_jnjnp_zeros  s    Z	- 	- 	- 	- 	-2,, 	J 	JB ,R00JAq!Q!!Qll J J
B77#BBr2JJ=====1WW#CCBKK>>>>>()HB)H)HIIIJ	J 	JrC   c                     t          j        dd          }t          |t          g d          dd           t          j        dd          }t          t          j        d|          dd	           d S )
NrX   r   g(yu?gOXeS@ga!@gxi'@g'Nw(-@rH  r   r[     r   r"  )r   	jnp_zerosr   r   ri  )r?   r  s     r@   test_jnp_zeroszTestBessel.test_jnp_zeros  s    !$$U $. $. $. / /
 $!	- 	- 	- 	- A&&C--qu======rC   c           
          t          j        dd          }t          |t          g d          t          g d          t          g d          t          g d          fdd	           d S )
NrX   r   r  r  )"@g+@g-9(1!@gȘ'@g>tA}-@)g0v@gjt@gH.?$@g}"O*@gGŧp0@rz  r   r[   )r   
jnyn_zerosr   r   )r?   jnzs     r@   test_jnyn_zeroszTestBessel.test_jnyn_zeros  s     A&&e %/ %/ %/ 0 0
 $ %/ %/ %/ 0 0
 $ %/ %/ %/ 0 0
 $ %/ %/ %/ 0 01( $!)	- 	- 	- 	- 	- 	-rC   c                     t          j        dd          }t          j        dd          t          j        dd          z
  dz  }t          ||dd           d S )NrJ   rX   r   rJ  r   r[   )r   ri  r  r   )r?   jvprimjv0s      r@   test_jvpzTestBessel.test_jvp  sS    Qq!!z!Awz!A.1'::::::rC   c                 ~    t          j        d          }t          j        dd          }t          ||dd           d S r  )r   r  r  r   )r?   ozkozkrs      r@   r  zTestBessel.test_k0  =    jnnz!BDvA666666rC   c                 ~    t          j        d          }t          j        dd          }t          ||dd           d S r  )r   r  r  r   )r?   ozkeozkers      r@   r  zTestBessel.test_k0e  =    {2Ab!!e&q999999rC   c                 ~    t          j        d          }t          j        dd          }t          ||dd           d S r  )r   r  r  r   )r?   o1ko1krs      r@   r  zTestBessel.test_k1  r  rC   c                 ~    t          j        d          }t          j        dd          }t          ||dd           d S r  )r   r  r  r   )r?   o1keo1kers      r@   r  zTestBessel.test_k1e  r  rC   c                    dt           j                                        z  dz
  }dt           j                                        z  dz
  }t          j        d||          }t          j        d||          }t          j        d||          }t          j        d||          }t	          |j        dgdd           t	          |j        t          ||z   dz   ||z
  g          dz  dd           ||z   dz   ||z   d	z   z  d	||z   dz   z  |dz   z  d	|dz   z  |dz   z  g}|d         |d         d|d         z  z
  |d         |d         z
  |d         z   g}t	          |j        t          |          d
z  dd           ||z   d	z   ||z   dz   z  ||z   dz   z  d||z   d	z   z  ||z   dz   z  |dz   z  d||z   d	z   z  |dz   z  |dz   z  d|dz   z  |dz   z  |dz   z  g}|d         |d         d|d         z  z
  |d         d|d         z  z
  d|d         z  z   |d         |d         z
  |d         z   |d         z
  g}	t	          |j        t          |	          dz  dd           d S )Nr   rX   r   rJ   r   r  r[   rt  rH   g       @rN   r   r
  g      H@)r]   rc   r   jacobir   r  r   )
r?   rD  rE  P0P1P2P3cpp2cp3cs
             r@   test_jacobizTestBessel.test_jacobi  s   bi   1$bi   1$^Aa""^Aa""^Aa""^Aa""qca8888eQUQYA$677#=$1	. 	. 	. 	.s1uqs1uoq!A#a%y!A#1Q31>!uRU1RU7]2a5A;r!u#45eCjj3.W1EEEEs1uqs1uoqs1u%a1Qi1Q&71&=!A#a%j!A#!$Q!Wac]AaC%8:!uRU1RU7]2a52a5=2a5#8Ar!uRU9J2a59PQeCjj4/gAFFFFFFrC   c                 V    t          j        dd          }t          |ddd           d S )Nr   r   _2?r?  r[   )r   r  r   )r?   kn1s     r@   r  zTestBessel.test_kn  s1    j2/f1EEEEEErC   c                 r    t          t          j        dd          t          j        dd                     d S Nr  r8  r  r   r   r  r>   s    r@   test_negv_kvzTestBessel.test_negv_kv  s0    WZS))7:dC+@+@AAAAArC   c                 V    t          j        dd          }t          |ddd           d S )Nr   r   r  rJ  r[   r   r  r   )r?   kv0s     r@   test_kv0zTestBessel.test_kv0  s1    j2/gAFFFFFFrC   c                 V    t          j        dd          }t          |ddd           d S )NrX   r   gKދ@rJ  r   r[   r  )r?   kv1s     r@   test_kv1zTestBessel.test_kv1  1    j3.W1EEEEEErC   c                 V    t          j        dd          }t          |ddd           d S )NrJ   r   g)lHH@rJ  r   r[   r  )r?   kv2s     r@   test_kv2zTestBessel.test_kv2  r  rC   c                 L    t          t          j        dd          d           d S )NrA  rX   g.Ք"H)r   r   r  r>   s    r@   test_kn_largeorderzTestBessel.test_kn_largeorder  s%    
2q))+ABBBBBrC   c                 L    t          t          j        dd          d           d S )Nr   g =`XCr  r>   s    r@   test_kv_largeargzTestBessel.test_kv_largearg"  s$    WZ4((!,,,,,rC   c                 r    t          t          j        dd          t          j        dd                     d S r  )r   r   r  r>   s    r@   test_negv_kvezTestBessel.test_negv_kve%  s0    W[c**GKc,B,BCCCCCrC   c                 >   t          j        dd          }t          j        dd          t          d          z  }t	          ||dd           d}t          j        d|          }t          j        d|          t          |          z  }t	          ||dd           d S )Nr   r   r?  r[   r  )r   r  r  r   r   )r?   kve1r  r!  kve2r  s         r@   r  zTestBessel.test_kve(  s    {1R  j2s2ww&cQ7777{1Qj1ooc!ff$cQ777777rC   c                     d}t          t          j        d|           t          j        d|d          dd           d S )Nr8  rX   r   rf   rJ  r[   )r   r   r  kvp)r?   r!  s     r@   test_kvp_v0n1zTestBessel.test_kvp_v0n11  sQ    Aq)))7;q!q+A+A+A$1	. 	. 	. 	. 	. 	.rC   c                     d}d}t          j        |dz   |           ||z  t          j        ||          z  z   }t          j        ||d          }t          ||dd           d S )Nr  r8  rX   r  rJ  r   r[   r   r  r   r   r?   rJ  r!  xcr   s        r@   test_kvp_n1zTestBessel.test_kvp_n16  so    j1Q!A#gj1oo"55K!q!!!AG!444444rC   c                     d}d}|dz  |dz  z   |z
  |dz  z  t          j        ||          z  t          j        |dz   |          |z  z   }t          j        ||d          }t          ||dd           d S )	Nr  r8  rJ   rX   r  rJ  r   r[   r#  r$  s        r@   test_kvp_n2zTestBessel.test_kvp_n2>  s    d1a4ik1a4'*Qq//1GJqs14E4Ea4GGK1"""AG!444444rC   c                 ~    t          j        d          }t          j        dd          }t          ||dd           d S r  )r   r  r$  r   r  s      r@   r   zTestBessel.test_y0E  r  rC   c                 ~    t          j        d          }t          j        dd          }t          ||dd           d S r  )r   r:  r$  r   r  s      r@   r"  zTestBessel.test_y1J  s=    Z^^j23V!444444rC   c                 t   t          j        d          \  }}t          j        dd          \  }}t          ||f         }t          ||f         }t          t	          t          j        d|                    ddd           t          t	          t          j        d|          |z
            ddd           d S )NrJ   rX   r  r   rI  r   r[   )r   y0_zerosr   r   rC  r'  )r?   yoypozozpor  allvals          r@   test_y0_zeroszTestBessel.test_y0_zerosO  s    !!$$3!!A...3BiCGGJsC00113W1MMMMGJq#..788#GRSTTTTTTrC   c                     t          j        d          }t          |t          dg          t          dg          fdd           d S )NrX   r  gѮBO?rz  r   r[   )r   y1_zerosr   r   )r?   r:  s     r@   test_y1_zeroszTestBessel.test_y1_zerosW  sU    a  UG9--ugY/?/?@#!	- 	- 	- 	- 	- 	-rC   c                     t          j        dd          }t          |t          dg          t          dg          fdd           d S )NrX   r,  yL
F%u?!rh?y;OnгY?r  r   r[   )r   	y1p_zerosr   r   )r?   y1ps     r@   test_y1p_zeroszTestBessel.test_y1p_zeros\  s[    !,,,e]O44e_<M6N6NO#!	- 	- 	- 	- 	- 	-rC   c                     t          j        dd          }t          |t          ddg          dd           t          j        dd	          }t          |g d
d           d S )NrH   rJ   g3@g(A&"@rz  r   r[   r  r   )g]E.+"|@gH(|@gff|}@g&b`~@gHO_~@r   rQ   )r   yn_zerosr   r   )r?   ans     r@   test_yn_zeroszTestBessel.test_yn_zerosa  s    a""E7G"455FKKKKc!$$ 4 4 4
 #	% 	% 	% 	% 	% 	%rC   c                 \   t          j        dd          }t          |t          ddg          dd           t          j        dd          }t          t          j        d|          dd	
           t          j        dd          }t          t          j        d|          dd
           d S )Nr   rJ   gQhվ@gzN@rB  r[   +   r   r   r"  r  r   )r   	ynp_zerosr   r   rj  r?   aos     r@   test_ynp_zeroszTestBessel.test_ynp_zerosl  s    q##E:z":;;&qQQQQr!$$B++QU;;;;s1%%C,,ad;;;;;;rC   c                 z    t          j        dd          }t          t          j        d|          dd           d S )Nr  r   r   r'  r"  )r   rA  r   rj  rB  s     r@   test_ynp_zeros_large_orderz%TestBessel.test_ynp_zeros_large_ordert  s;    s1%%C,,ae<<<<<<rC   c                 V    t          j        dd          }t          |ddd           d S NrX   r   5,1
r?  r   r[   )r   r$  r   )r?   yn2ns     r@   r%  zTestBessel.test_ynx  s1    z!B1QGGGGGGrC   c                 V    t          j        dd          }|t          j         k    sJ d S )NrV   rX   )r<   r$  r]   r   )r?   r  s     r@   test_yn_gh_20405zTestBessel.test_yn_gh_20405|  s.    9S!$$BF7""""""rC   c                 z    t          t          j        dd          t          j        dd           dd           d S rI  )r   r   r'  r>   s    r@   test_negv_yvzTestBessel.test_negv_yv  sG    
2q))GJq!,<,<+<$1	. 	. 	. 	. 	. 	.rC   c                 V    t          j        dd          }t          |ddd           d S rH  )r   r'  r   )r?   yv2s     r@   r(  zTestBessel.test_yv  s1    j20vAFFFFFFrC   c                 z    t          t          j        dd          t          j        dd           dd           d S rI  )r   r   r*  r>   s    r@   test_negv_yvezTestBessel.test_negv_yve  r  rC   c                     t          j        dd          }t          |ddd           t          j        dd          t	          d          z  }t          j        dd          }t          ||dd           d S )	NrX   r   rI  r?  r   r[   r  rM   )r   r*  r   r'  r   )r?   yve2yve2ryve22s       r@   r+  zTestBessel.test_yve  su    {1R  1QGGGG
1U##CGG+Ae$$u6::::::rC   c                     t          j        dd          t          j        dd          z
  dz  }t          j        dd          }t          ||dd           d S )	NrX   r   r   rt  rJ   rJ  r   r[   )r   r'  rj  r   )r?   yvpryvp1s      r@   test_yvpzTestBessel.test_yvp  sW    
1R  7:a#3#33S8{1R  dq999999rC   c              #      K   g d}g d}t          j        ||          E d{V  t          j        dt          dd          z   dg          E d{V  dS )z>Yield points at which to compare Cephes implementation to AMOS)ir        4r  r   r  r   r   {G(@r  r  )ir  rM   r   ry       i@g     y@g     Ă@g@  i'  Nr   irH  r  )	itertoolsproductr   )r?   rJ  r!  s      r@   _cephes_vs_amos_pointsz!TestBessel._cephes_vs_amos_points  s       KJJ  $Q********* $S6#r??%:SEBBBBBBBBBBBrC   dy=r   Nc                    |                                  D ]\  }}| |||          r |||           |||dz              |t          |          |          }
}	}t          j        |          r)t	          t          j        |	          dk    ||f           t          j        |          rt	          |	j        dk    ||f           t          ||	||f||           |t          |          k    rt          |
|	||f||           d S )Nr  u <7~r   )r  rR   r\   )	rc  ru   r]   r  r   rC  r   r  r   )r?   r  f2rR   r\   r  rJ  r!  c1c2c3s              r@   check_cephes_vs_amoszTestBessel.check_cephes_vs_amos  s,   //11 	; 	;DAqDDAJJAq22a"::rr#a&&!}}BBx|| ;r

e+aV4444" ;1q!f----BATMMMMA;;#BQF*.T; ; ; ;	; 	;rC   ppc64lezfails on ppc64ler  c                 `    |                      t          j        t          j        dd           d S )NrZ   u5% r(  )rk  r   r  r  r>   s    r@   test_jv_cephes_vs_amosz!TestBessel.test_jv_cephes_vs_amos  +     	!!'*gju6!RRRRRrC   c                 `    |                      t          j        t          j        dd           d S )Nrd  rn  r(  rk  r   r'  r$  r>   s    r@   test_yv_cephes_vs_amosz!TestBessel.test_yv_cephes_vs_amos  rp  rC   c                 h    d }|                      t          j        t          j        dd|           d S )Nc                 (    t          |           dk    S )Nr#  )rC  )rJ  r!  s     r@   skipperzDTestBessel.test_yv_cephes_vs_amos_only_small_orders.<locals>.skipper  s    q66B;rC   rd  rn  )rR   r\   r  rr  )r?   rv  s     r@   (test_yv_cephes_vs_amos_only_small_ordersz3TestBessel.test_yv_cephes_vs_amos_only_small_orders  sG    	 	 	!!'*gju6'. 	" 	0 	0 	0 	0 	0rC   c                     t          j        d          5  |                     t          j        t          j        dd           d d d            d S # 1 swxY w Y   d S )Nr  r  g:0y5>rn  r(  )r]   r  rk  r   r  r>   s    r@   test_iv_cephes_vs_amosz!TestBessel.test_iv_cephes_vs_amos  s    [X&&& 	V 	V%%gj'*4f%UUU	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	Vs   .AAAc                    d}t           j                            d           t           j                            d|          dt           j                            d|          z  z  }t           j                            d|          dt           j                            d|          z  z  }t           j                            d|          d	k    }||                             t           j                  ||<   t          j        d
          5  t          j	        ||          }t          j	        ||dz             }t           j
        |t          |          dk    <   t           j
        |t          |          dk    <   d	|t          |          dk     <   d	|t          |          dk     <   t          ||z  dz
            }d	|t          j        |          <   d d d            n# 1 swxY w Y   t          j        |          }t          ||         dk     ||         ||         t          j	        ||         ||                   t          j	        ||         ||         dz             f           d S )Ni@B rX   r   rM   rJ   r   r   r
  r   r  r  r  rf  gYngH׊>)r]   rc   ro   r  r  r   r+  r  r   r  r   rC  r   argmaxr   )	r?   r9  rJ  r   imskrh  ri  dcrg   s	            r@    test_iv_cephes_vs_amos_mass_testz+TestBessel.test_iv_cephes_vs_amos_mass_test  sD   
	qIS!$$RY->->qq->-I-I'IIIS!$$RY->->qq->-I-I'II	!!!!!,,1D'..**$[X&&& 	! 	!Aq!!BAqt$$B #%&Bs2ww"$&Bs2ww#$Bs2ww #$Bs2ww RUQYB Brx||	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! IbMM 	qEDLqT1Q4AaD!A$//AaD!A$r'1J1JK	
 	
 	
 	
 	
s   CG  G$'G$c                     |                      t          j        t          j        dd           |                      t          j        t          j        dd           d S )Nr   rn  r(  )rk  r   r  r  r>   s    r@   test_kv_cephes_vs_amosz!TestBessel.test_kv_cephes_vs_amos  sJ    !!'*gjt&!QQQ!!'*gjt&!QQQQQrC   c                     t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           d S )	Nr   rH   gP?r  r`  g~Omʒ?gY8E@@gKSnr  r>   s    r@   test_ticket_623zTestBessel.test_ticket_623  s_    
1a((*=>>>
3--/ABBB
3	224GHHHHHrC   c           	         t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d	           t          t          j        dd          d
           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d	           t          t          j        dd          d
           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          t          j        dd          t          d          z             t          t          j        dd          t          j        dd          t          d          z             t          t          j	        dd          t          j        dd          t          d          z             t          t          j
        dd          t          j        dd          t          d          z             t          t          j        dd          t          j        dd          dt          j        dd          z  z              t          t          j        dd          t          j        dd          dt          j        dd          z  z
             dS )zNegative-order BesselsrM   rX   gl)ܿr  gPj?gk?g%E*2ig敋?gw--`?gÉB?gW?r  g޴?gz|?a?gpx%?y      ?        y      ?      ?yYD?`{1wy6x?B]#Ӯ?y ?b>?y.}9d?8kؿy      ?333333?r  y333333?      ?r  N)r   r   r  r'  r  r  r  r   r*  r  r  rh  rp  r>   s    r@   test_ticket_853zTestBessel.test_ticket_853  s    	
2q))+>???
2q))+=>>>
2q))+=>>>
2q))+=>>>
2q))+=>>>
2q))+=>>>
2q))+=>>>
2q))+<===
4++-CDDD
4++-?@@@
4++->???
4++-?@@@
2t,,.ABBB
2t,,.@AAA
2t,,.@AAA
2t,,.@AAA
2t,,.@AAA
2t,,.@AAA
2t,,.@AAA
2t,,.?@@@
4..0FGGG
4..0UVVV
4..0BCCC
4..0UVVV
4..0ABBB
4..0RSSS
4..0BCCC
4..0RSSSD00'*T62J2J3t992TUUUD00'*T62J2J3t992TUUUD00'*T62J2J3t992TUUUD00'*T62J2J3v;;2VWWWOD$''JtT""R
4(=(=%==	
 	
 	
 	OD$''JtT""R
4(=(=%==	
 	
 	
 	
 	
rC   c                    t          t          t          j        dd                               t          t          t          j        dd                               t          t          t          j        dd                               t          t          t          j        dd                               t          t          t          j        dd                               t          t          t          j        dd                               t          t          t          j        dd                               t          t          t          j        dd                               t          t          t          j	        dd                               t          t          t          j	        dd                               t          t          t          j
        dd                               t          t          t          j
        dd                               t          t          t          j        d          dd                                                   t          j        d                     t          t          t          j        d          dd                                                    t          j        d                     dS )zReal-valued Bessel domainsr   rM   rX   r   rJ   rH   N)r   r   r   r  r  r'  r  r  r  r*  r  rE   r  r  r>   s    r@   test_ticket_854zTestBessel.test_ticket_854#  s%   gjb))**+++gjb))**+++gjb))**+++gjB''(()))gjb))**+++gjB''(()))gk#r**++,,,gk#r**++,,,gk#r**++,,,gk!R(())***gk#r**++,,,gk!R(())***gmB''!,--1133W]25F5FGGGE'-++AaC01155777r9J9JKKKKKrC   c                     t          t          j        dd          t          j        k               t          t          j        dd          t          j        k               d S )Nr  r   )r   r   r  r]   r   r  r>   s    r@   test_gh_7909zTestBessel.test_gh_79094  sJ    
3""bf,---C##rv-.....rC   c                     t          t          j        dd          d           t          t          j        dd          d           dS )zReal-valued Bessel I overflowrX   i  g~rU   i`  g ?los~Nr   r   r  r>   s    r@   test_ticket_503zTestBessel.test_ticket_5038  sB    
1c**,ABBB
4..0EFFFFFrC   c                 L    t          t          j        dd          d           d S )Nr  rX   r  r  r>   s    r@   test_iv_hyperg_poleszTestBessel.test_iv_hyperg_poles=  s%    
4++->?????rC      c                    t          d|                              t                    }|d|z  z   t          d|z            z  t	          j        |dz             z
  t	          j        ||z   dz             z
  }t          |t          |          <   t          |          }t          |          
                                t          t                    j        z  |z  t          |d                   dz  z   }|                                |fS )Nr   rJ   r   rX   rM   r&  )r   r   r   r   r   rH  r   r   r   rC  r&  r   r  sumr?   rJ  r!  rf   rg   rR  r"  s          r@   	iv_serieszTestBessel.iv_series@  s    1aLL''qsUC1II! 4 44wqs1u7M7MM%((FF!ffjjllU6]]..2S2ZZ]Buuww|rC   c                     dD ]@}|                      d|          \  }}t          t          j        |          |||           Ad S )Nr   ry  r_  r   r\   r  )r  r   r   r~  r?   r!  valuer"  s       r@   test_i0_serieszTestBessel.test_i0_seriesH  X    ! 	G 	GA1--JE3GJqMM5sAFFFFF	G 	GrC   c                     dD ]@}|                      d|          \  }}t          t          j        |          |||           Ad S )Nr  rX   r  )r  r   r   r  r  s       r@   test_i1_serieszTestBessel.test_i1_seriesM  r  rC   c           	          dD ]H}dD ]C}|                      ||          \  }}t          t          j        ||          ||||f           DId S )N)r\  r  r   r   r   r]  r  )r   ry  r_  y             @r  )r  r   r   r  r?   rJ  r!  r  r"  s        r@   test_iv_serieszTestBessel.test_iv_seriesR  sw    7 	S 	SA, S S!^^Aq11
s
1a 0 0%cAq6RRRRRS	S 	SrC   c           	          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 ]D\  }\  }}t          j        |          t          |           z  }t	          ||ddd|            Ed S )Nr   r   rZ   r  g0oO?r   g!?grb?r  gpH?r   gC~?      4@ggo?r?  r   r  r  )r  r   r~  r   r   r?   r  rz   r   rJ  r  s         r@   r  zTestBessel.test_i0X  s    *#,%%%%%& #6** 	N 	NIAv1AaR(BBQMMMMM	N 	NrC   c                 ~    t          j        d          }t          j        dd          }t          ||dd           d S r  )r   r  r  r   )r?   oizeoizers      r@   r  zTestBessel.test_i0ef  =    {2Ar""e&q999999rC   c           	          ddgddgddgddgdd	gd
dgddgg}t          |          D ]D\  }\  }}t          j        |          t          |           z  }t	          ||ddd|            Ed S )Nr   rZ   gj|=r  gȕ![1?r   g;͘?r   gRΜ?r   g|?r  g}f?r?  r   r  r  )r  r   r  r   r   r  s         r@   r  zTestBessel.test_i1k  s    *01%%%%& #6** 	N 	NIAv1AaR(BBQMMMMM	N 	NrC   c                 ~    t          j        d          }t          j        dd          }t          ||dd           d S r  )r   r  r  r   )r?   oi1eoi1ers      r@   r  zTestBessel.test_i1ex  r  rC   c                     t          t          j        d                    }t          |t          ddg          dd           d S )Nr   gїJB?@g*u?rz  r   r[   )r   r   r  r   )r?   iti0s     r@   r  zTestBessel.test_iti0k0}  sR    W^A&&''e%79K$LMM#!	- 	- 	- 	- 	- 	-rC   c                 r    t          j        d          }t          |t          ddg          dd           d S )Nr  gݳɄ|T?gVƥ
@rB  r   r[   )r   r  r   r   )r?   it2ks     r@   r  zTestBessel.test_it2i0k0  sJ    r""e%:<N$OPP#!	- 	- 	- 	- 	- 	-rC   c                 v    t          j        dd          t          d          z  }t          |ddd           d S )Nr   r  皙gv M?rJ  r[   )r   r  r   r   )r?   iv1s     r@   r  zTestBessel.test_iv  s<    j2s3xx'0wQGGGGGGrC   c                 r    t          t          j        dd          t          j        dd                     d S r  )r   r   r  r>   s    r@   test_negv_ivezTestBessel.test_negv_ive  s0    W[1%%w{2a'8'899999rC   c                     t          j        dd          }t          j        dd          t          d          z  }t	          ||dd           d S )Nr   r  r  rJ  r[   )r   r  r  r   r   )r?   ive1r  s      r@   r  zTestBessel.test_ive  sL    {1R  j2s3xx'ca888888rC   c                 x    t          t          j        dd          t          j        dd          dd           d S )NrX   rJ   r   rJ  r[   )r   r   r  ivpr>   s    r@   	test_ivp0zTestBessel.test_ivp0  s8    
1a(('+a*;*;'PQRRRRRRrC   c                     t          j        dd          t          j        dd          z   dz  }t          j        dd          }t          ||dd           d S )Nr   rJ   rX   rJ  r[   )r   r  r  r   r6  s      r@   test_ivpzTestBessel.test_ivp  sS    Z!__wz!A.1K!17333333rC   )rd  r   N)r  )Vr3  r4  r5  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r  r  r!  r&  r(  r   r"  r3  r6  r:  r>  rD  rF  r%  rL  rN  r(  rR  r+  rZ  rc  rk  r6  r7  r8  r  machinero  rs  rw  ry  slowr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r:  rC   r@   r  r  H  s       - - -
- - -
8 8 86 6 6
6 6 6
I I IT T T	N 	N 	N. . .= = =L L L<G G G$J J J	> 	> 	>- - -0; ; ;
7 7 7
: : :
7 7 7
: : :
G G G&F F FB B BG G GF F FF F FC C C- - -D D D8 8 8. . .
5 5 55 5 56 6 6
5 5 5
U U U- - -
- - -
	% 	% 	%< < <= = =H H H# # #
. . .G G G. . .; ; ;: : :

C 
C 
C; ; ; ; ['x'))Y60  2 2S S2 2S ['x'))Y60  2 2S S2 2S0 0 0V V V [
 
 
>R R RI I I
0
 0
 0
dL L L"/ / /G G G
@ @ @   G G G
G G G
S S SN N N: : :
N N N: : :
- - -
- - -
H H H: : :9 9 9
S S S4 4 4 4 4rC   r  c                       e Zd Zd Zd ZdS )TestLaguerrec                    t          j        d          }t          j        d          }t          j        d          }t          j        d          }t          j        d          }t          j        d          }t          |j        dgdd           t          |j        d	dgdd           t          |j        t	          g d
          dz  dd           t          |j        t	          g d          dz  dd           t          |j        t	          g d          dz  dd           t          |j        t	          g d          dz  dd           d S )Nr   rX   rJ   r   rH   r   r  r[   rM   )rX   rK  rJ   rt  )rM   r  irN   rH  )rX   iH   ir   rA  )rM   r   i8iX  ir  r  )r   laguerrer   r  r   )r?   lag0lag1lag2lag3lag4lag5s          r@   test_laguerrezTestLaguerre.test_laguerre  sd   """"""""""""'::::QgA>>>>iii 0 03 6W1MMMMmmm 4 4S 8wQOOOO&8&8&8 9 9$ >$1	. 	. 	. 	.&D&D&D E E M$1	. 	. 	. 	. 	. 	.rC   c           
      h   dt           j                                        z  dz
  }t          j        d|          }t          j        d|          }t          j        d|          }t          j        d|          }t	          |j        dg           t	          |j        d|dz   g           t          |j        t          dd|dz   z  |d	z   |d
z   z  g          d
z  dd           t          dd|dz   z  d|dz   z  |dz   z  |dz   |dz   z  |dz   z  g          dz  }t          |j        |dd           d S )Nr   r  r   rX   rJ   r   rM   r  r   rt  r   r[   r  rH  )r]   rc   r   rm  r   r  r   r   )r?   rg   r  r  r  r  r"  s          r@   test_genlaguerrezTestLaguerre.test_genlaguerre  sZ   bi   3&"1Q''"1Q''"1Q''"1Q''TVaS!!!TVb!a%[)))q"A,RAF8K&L M MPS S#!	- 	- 	- 	-"q1u+A,!a%0q5QU+q1u57 8 8 ;>> 	vA>>>>>>rC   N)r3  r4  r5  r  r  r:  rC   r@   r  r    s2        . . . ? ? ? ? ?rC   r  c                       e Zd Zd ZdS )
TestLambdac           
         t          j        dd          }t          t          j        dd          dt          j        dd          z  dz  g          t          t          j        dd          dt          j        dd          z  dz  dt          j        dd          z  dz  z   g          f}t          ||dd           d S )	NrX   r  r   rJ   r  rA  r?  r[   )r   lmbdar   r  ri  r  r   )r?   lamlamrs      r@   
test_lmbdazTestLambda.test_lmbda  s    mAb!!7:a##Qwz!B'7'7%7%:;<<7;q$$bAb)9)9&9#&='+aPRBSBS@STV@V&VWXX
 	TQ777777rC   N)r3  r4  r5  r  r:  rC   r@   r  r    s#        8 8 8 8 8rC   r  c                       e Zd Zd Zd ZdS )	TestLog1pc                     t          j        d          t          j        d          t          j        d          f}t          d          t          d          t          d          f}t          ||dd           d S )Nr&  r  r   r  r?  r   r[   r   r  r   r   )r?   l1pl1prls      r@   r  zTestLog1p.test_log1p  sg    }R  '-"3"3W]25F5FGR#b''3r77+Ua888888rC   c                     t          j        d          t          j        d          t          j        d          f}t          d          t          d          t          d          f}t          ||dd	           d S )
NrX   r  r  rJ   r7  r8  r?  r   r[   r  )r?   l1pml1pmrls      r@   test_log1pmorezTestLog1p.test_log1pmore  sg    a  '-"4"4gmC6H6HIa&&S#c((+f6::::::rC   N)r3  r4  r5  r  r  r:  rC   r@   r  r    s2        9 9 9
; ; ; ; ;rC   r  c           	          dz  dk    rdnd}d|z  t          fd| dz  |dz  ddt          j        z  | z  |z  d	          d         z  }| dk    r|dz  }|S )
z
    Compute the Fourier coefficient of the even Mathieu function.
    The integral definition of a Fourier coefficient is used.
    This function is used as an alternative implementation of
    mathieu_even_coef().
    rJ   r   r  h  rX   c                 <    t          j        |           d         S r;   )r   r)  r  rf   r  s    r@   r  z7ce_fourier_coefficient_using_integral.<locals>.<lambda>      '"5aA">">q"A rC   r
   r'  weightwvarepsrelr5   r]   r   rg   rf   r  periodr  s    ``  r@   %ce_fourier_coefficient_using_integralr    s     EQJJSSCF 
64AAAAA	6!8$1RU719V+;EK K KKLN 	NA 	1uu	QHrC   c           	          | dk    rdS dz  dk    rdnd}d|z  t          fd| dz  |dz  ddt          j        z  | z  |z  d	          d         z  }|S )
z
    Compute the Fourier coefficient of the odd Mathieu function.
    The integral definition of a Fourier coefficient is used.
    This function is used as an alternative implementation of
    mathieu_odd_coef().
    r   r   rJ   r  r  c                 <    t          j        |           d         S r;   )r   r/  r  s    r@   r  z7se_fourier_coefficient_using_integral.<locals>.<lambda>  r  rC   r	   r'  r  r  r  s    ``  r@   %se_fourier_coefficient_using_integralr    s     	AvvsEQJJSSCF	
64AAAAA	6!8$1RU719V+;EK K KKLN 	NA HrC   c                   >   e Zd Zej                            dddg          d             Zej                            dddg          d             Zej                            ddd	g          d
             Zej                            dddg          d             Z	dS )TestMathieuzn, q)rH   r  )r
  g      @c                     t          j                  }fdt          d          D             }t          ||d t	          |                   d           d S )Nc                 2    g | ]}t          |          S r:  r  r   rg   rf   r  s     r@   r!  zNTestMathieu.test_mathieu_even_coef_against_integral_n_even.<locals>.<listcomp>  s&    NNN21a;;NNNrC   rH   rZ   rQ   r   r(   rv   r   r  r?   rf   r  Ar  s    ``  r@   .test_mathieu_even_coef_against_integral_n_evenz:TestMathieu.test_mathieu_even_coef_against_integral_n_even  sf    
 %a++ ONNNNU1XXNNN1Wc!ffW:E222222rC   )r   r  )rL   rJ   c                     t          j                  }fdt          ddd          D             }t          ||d t	          |                   d           d S )Nc                 2    g | ]}t          |          S r:  r  r  s     r@   r!  zMTestMathieu.test_mathieu_even_coef_against_integral_n_odd.<locals>.<listcomp>  &    TTT21a;;TTTrC   rX   r  rJ   rZ   rQ   r  r  s    ``  r@   -test_mathieu_even_coef_against_integral_n_oddz9TestMathieu.test_mathieu_even_coef_against_integral_n_odd  sk     %a++ UTTTTU1aQR^^TTT1Wc!ffW:E222222rC   )rJ   r  )r&  rJ   c                     t          j                  }fdt          dd          D             }t          ||d t	          |                   d           d S )Nc                 2    g | ]}t          |          S r:  r  r  s     r@   r!  zMTestMathieu.test_mathieu_odd_coef_against_integral_n_even.<locals>.<listcomp>  s&    QQQ21a;;QQQrC   rX   r   rZ   rQ   r   r'   rv   r   r  r?   rf   r  Br  s    ``  r@   -test_mathieu_odd_coef_against_integral_n_evenz9TestMathieu.test_mathieu_odd_coef_against_integral_n_even  sh     $Q** RQQQQU1a[[QQQ1Wc!ffW:E222222rC   c                     t          j                  }fdt          ddd          D             }t          ||d t	          |                   d           d S )Nc                 2    g | ]}t          |          S r:  r  r  s     r@   r!  zLTestMathieu.test_mathieu_odd_coef_against_integral_n_odd.<locals>.<listcomp>&  r  rC   rX   r  rJ   rZ   rQ   r  r  s    ``  r@   ,test_mathieu_odd_coef_against_integral_n_oddz8TestMathieu.test_mathieu_odd_coef_against_integral_n_odd  sk     $Q** UTTTTU1aQR^^TTT1Wc!ffW:E222222rC   N)
r3  r4  r5  r6  r7  r9  r  r  r  r  r:  rC   r@   r  r    s        [Vh	%:;;3 3 <;3 [Vh%788	3 	3 98	3 [Vh%899	3 	3 :9	3 [Vh%788	3 	3 98	3 	3 	3rC   r  c                       e Zd Zd Zd ZdS )TestFresnelIntegralc                     d S ru  r:  r>   s    r@   rR  z$TestFresnelIntegral.test_modfresnelp,  rv  rC   c                     d S ru  r:  r>   s    r@   rN  z$TestFresnelIntegral.test_modfresnelm/  rv  rC   N)r3  r4  r5  rR  rN  r:  rC   r@   r  r  *  s2              rC   r  c                       e Zd Zd ZdS )TestOblCvSeqc                 v    t          j        ddd          }t          |t          g d          dd           d S )Nr   r   rX   )g~T~Oֿgt_J?gm{@g@j'&@rz  r[   )r   
obl_cv_seqr   r   )r?   obls     r@   test_obl_cv_seqzTestOblCvSeq.test_obl_cv_seq4  s[     1Q''U $/ $/ $/ 0 0 $!		- 	- 	- 	- 	- 	-rC   N)r3  r4  r5  r  r:  rC   r@   r
  r
  3  #        - - - - -rC   r
  c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TestParabolicCylinderc                     t          j        dd          }t          |t          ddg          t          ddg          fdd	           d S )
NrX   r  gQ?gx$(~?gx$(~g(\?rH  r   r[   )r   pbdn_seqr   r   )r?   pbs     r@   test_pbdn_seqz#TestParabolicCylinder.test_pbdn_seq>  sp    a$$UF$*$, - -"G$*$, - -. $!		- 	- 	- 	- 	- 	-rC   c                     t          j        dd           dt          j        dd          d         z  t          j        dd          d         z
   d S )NrX   r   r  r   )r   r  r>   s    r@   r  zTestParabolicCylinder.test_pbdvF  sL    Qra##A&&a););A)>>>>>rC   c                     t          j        dd          }t          j        dd          }t          |t	          |d                   t	          |d                   fdd           d S )NrX   r  r   rH  r[   )r   r  pbdv_seqr   r   )r?   pbnpbvs      r@   test_pbdv_seqz#TestParabolicCylinder.test_pbdv_seqJ  s\    q$$q$$d3q6llDQLL9QOOOOOOrC   c                    t          j        ddd          }d|dz  z  t          j        t           j                  z  t	          j        dd|z  z
            z  }t          t	          j        |d          d         |dd	           t          t	          j        d
d          d         dd           t          t	          j        dd          d         dd           d S )Nr  r&  r   rJ   r   r   r   r'  r(  gGz$@gq=
ףp4@gHQ9r   rQ   g(\#gQ@gkS a>)r]   r8  r   r   r   r  r   r  )r?   etar!  s      r@   test_pbdv_pointsz&TestParabolicCylinder.test_pbdv_pointsO  s    k#r1%%AJrwru~~%gnR3Y&?&??S"--a0!%eLLLL 	UE22157JQVWWWWUD11!46JQVWWWWWWrC   c                    t          j        ddd          d d d f         }t          j        ddd          d d d f         }t          j        ||          }ddt	          |          z  z   }t          j        |||z             d         t          j        |||z
            d         z
  |z  d	z  }t          |d
         |dd           d S NrK  rH   r
  r  r&  r   r  r   rt  rX   r   r(  )r]   r8  r   r  rC  r   r?   r   r  r.  r  dps         r@   test_pbdv_gradientz(TestParabolicCylinder.test_pbdv_gradientY      KAq!!!!!D&)k#r1%%d111f-La  T#a&&[ l3C((+gl3C.H.H.KKsRUWW!bt$777777rC   c                    t          j        ddd          d d d f         }t          j        ddd          d d d f         }t          j        ||          }ddt	          |          z  z   }t          j        |||z             d         t          j        |||z
            d         z
  |z  d	z  }t          |d
         |dd           d S r   )r]   r8  r   r  rC  r   r!  s         r@   test_pbvv_gradientz(TestParabolicCylinder.test_pbvv_gradientb  r$  rC   c                     t          j        dd          \  }}t          |t          j        g d                     t          |t          j        g d                     d S )NrJ   r   )g:4@g1{н?g7,%n?)gX@g=<'?gʠ?)r   pbvv_seqr   r]   r   )r?   res1res2s      r@   test_pbvv_seqz#TestParabolicCylinder.test_pbvv_seqk  s    %a++
dbh (< (< (< = = 	> 	> 	> 	bh (; (; (; < < 	= 	= 	= 	= 	=rC   N)
r3  r4  r5  r  r  r  r  r#  r&  r+  r:  rC   r@   r  r  =  s        - - -? ? ?P P P
X X X8 8 88 8 8= = = = =rC   r  c                       e Zd Zd ZdS )TestPolygammac           	         t          j        dd          }t          j        dd          }t          |ddd           t          |ddd           g d	}t          t          j        d|          t          j        |          d
d           g d}g d}g d}t          t          j        ||          |d
d           t	          j        |gdz            }t          t          j        |t	          j        |gdz                      |d
d           t          t          j        t	          j        |gdz            |          |d
d           d S )NrJ   rX   r   gX];rJ  r   r[   gOV,@@)rJ   r   g  8Br   r  rv  )g2}jg.M?g}2;ο)r   	polygammar   r  r]   rx  )r?   poly2poly3r   rf   r"  s         r@   test_polygammazTestPolygamma.test_polygammaw  sv   !!Q''!!Q''}7CCCC|'BBBB NN)!Q//Q#!	- 	- 	- 	- IIOO* * *)!Q//QOOOO9hZ\**)!RYs1u-=-=>>#!	- 	- 	- 	-)")QCE*:*:A>>#!	- 	- 	- 	- 	- 	-rC   N)r3  r4  r5  r2  r:  rC   r@   r-  r-  u  s#        - - - - -rC   r-  c                       e Zd Zd ZdS )TestProCvSeqc                 v    t          j        ddd          }t          |t          g d          dd           d S )Nr   r   rX   )g"~j?g6?Ң@g)u8F"@g2g)@rz  r[   )r   
pro_cv_seqr   r   )r?   prols     r@   test_pro_cv_seqzTestProCvSeq.test_pro_cv_seq  s[    !!Q**e %0 %0 %0 1 1 $!		- 	- 	- 	- 	- 	-rC   N)r3  r4  r5  r8  r:  rC   r@   r4  r4    r  rC   r4  c                       e Zd Zd ZdS )TestPsic                 T    t          j        d          }t          |ddd           d S )NrX   goxr?  r   r[   )r   r  r   )r?   pss     r@   r  zTestPsi.test_psi  s-    [^^0vAFFFFFFrC   N)r3  r4  r5  r  r:  rC   r@   r:  r:    s(        G G G G GrC   r:  c                       e Zd Zd Zd ZdS )
TestRadianc                 h    t          j        ddd          }t          |t          dz  dd           d S )Nr  r   rt  rz  r[   r   r  r   r   )r?   rads     r@   r  zTestRadian.test_radian  s6    nRA&&RV&q999999rC   c                 n    t          j        ddd          }t          |t          dz  dz   dd           d S )	Nr  rX   rH  rJ   gC?rz  r   r[   r@  )r?   rad1s     r@   test_radianmorezTestRadian.test_radianmore  s<    ~b!R((bd%::aPPPPPPrC   N)r3  r4  r5  r  rD  r:  rC   r@   r>  r>    s7        : : :Q Q Q Q QrC   r>  c                       e Zd Zd Zd ZdS )TestRiccatic                 2   d\  }}t          j        ||f          }t          |          D ]E}t          j        ||          }t          j        ||d          }||z  |d|f<   ||z  |z   |d|f<   Ft          |t          j        ||          dd           d S N)rJ   r   T)
derivativer   rX   r?  r[   )r]   emptyrv   r   spherical_jnr   
riccati_jn)r?   r9  r   Srf   r  jps          r@   test_riccati_jnzTestRiccati.test_riccati_jn      1HaVq 	 	A$Q**A%at<<<BqSAacFrTAXAacFF7-a33&qIIIIIIrC   c                 2   d\  }}t          j        ||f          }t          |          D ]E}t          j        ||          }t          j        ||d          }||z  |d|f<   ||z  |z   |d|f<   Ft          |t          j        ||          dd           d S rH  )r]   rJ  rv   r   spherical_ynr   
riccati_yn)r?   r9  r   Crf   r   yps          r@   test_riccati_ynzTestRiccati.test_riccati_yn  rP  rC   N)r3  r4  r5  rO  rV  r:  rC   r@   rF  rF    s:        J J JJ J J J JrC   rF  c                       e Zd Zd Zd ZdS )TestSoftplusc                    dd l }|j                            d          }d}|                    dd|          }|                    dd|          }|                    dd|          }|                    d	d
|          } |j        ||||g          }g dg dg dg dg}	t          |          }
t          |
|	d           d S )Nr   l   (sr   iir{     r  g
ףp=@@r#  )g%~B7gpNf7g8B8)gJR{?g6]=gXes>)g n@?@gWH;@glH.=@)g9lchPR@gS@gzsevB@r  rQ   )numpyrc   default_rnguniformstackr&   r   )r?   r]   rj   rf   ro  rp  a3a4rD  r  r  s              r@   test_softpluszTestSoftplus.test_softplus  s     	i##M22[[s[++[[bq[))[[T[**[[![,,BHb"b"%&& TSSQQQKKKHHHJ
 qkkSu------rC   c                    t          j        d          dz
  }t          j        d          }|                                }|dk    }t	          |||           t	          ||                   ||<   t          ||           d S )Nr   rJ   r   )outwhere)r]   r   onescopyr&   r   )r?   r   rc  r  rd  s        r@   test_softplus_with_kwargsz&TestSoftplus.test_softplus_with_kwargs  sw    IaLL1gajjhhjjA5))))ah''E
S!!!!!rC   N)r3  r4  r5  ra  rg  r:  rC   r@   rX  rX    s2        . . .:" " " " "rC   rX  c                       e Zd Zd ZdS )	TestRoundc                    t          t          t          t          j        d          t          j        d          t          j        d          t          j        d          f                    }d}t          ||           d S )Ng333333$@g$@r  g333333%@)r&  r&  r&  r  )r$  mapru   r   r  r   )r?   rndrndrls      r@   r  zTestRound.test_round  st    3sW]400$]400$]400$]4002 3 3 4 4 3u%%%%%rC   N)r3  r4  r5  r  r:  rC   r@   ri  ri    s#        & & & & &rC   ri  c                   (    e Zd ZddZd Zd Zd ZdS )
TestStruver#  c                 ^   t          d|          }d|z  d|z  d|z  |z   dz   z  z  t          j        |dz             z  t          j        ||z   dz             z  }t          |                                          t          t                    j        z  |z  }|                                |fS )z?Compute Struve function & error estimate from its power series.r   rM   r   rJ   rX   r  )	r   r   rB  rC  r&  r   r   r  r  r  s          r@   _serieszTestStruve._series  s    1aLL!Gr!tqs1uQw''ae(<(<<W]1Q3s7=S=SS!ffjjllU6]]..2uuww|rC   c                     dD ]J}dD ]E}|                      ||          \  }}t          t          j        ||          |d|          ||ff FKdS )z-Check Struve function versus its power series)
ir  (\r  rM   r   rX   r  r]     )rX   r&     r.  rT   r   r(  N)rq  r   r   r  r  s        r@   test_vs_serieszTestStruve.test_vs_series  s    B 	W 	WA( W W!\\!Q//
sq! 4 4e!#NNNQRTUPVVVVW	W 	WrC   c                    t          t          j        dd          dd           t          t          j        dd          dd           t          t          j        d	d
          dd           t          t          j        dd          dd           t          t          j        dd          t          j        dd                      t          t          j        dd          t          j        dd                      t          t          j        dd          t          j        dd          
            t          t          j        dd          t          j        dd          
            t	          t          t          j        dd                               t	          t          t          j        dd                               d S )Nrs  r.  g;cv=?r  rQ   gQ g< j?r  r  r  g?r   g       igzz?rd  i)   r   r^  r  gffffffrM   g333333$)r   r   r  r   r   r   r>   s    r@   test_some_valueszTestStruve.test_some_values  s|   ub11?NNNNub11?NNNNtS11?OOOOtS11?OOOOW^C--sB0G0G/GHHHW^C--sB0G0G/GHHHW^C--sB0G0G/GHHHW^C--sB0G0G/GHHHgnT2..//000gnUB//0011111rC   c                 J   t          t          j        dd          t          j        dd                     t          t          j        dd          t          j        dd                     t          t          j        dd          t          j        dd                     dS )zRegression test for #679r   g3@g*   4@r  g333333N)r   r   r  r>   s    r@   test_regression_679zTestStruve.test_regression_679  s    tY77tY77	9 	9 	9tY77tY77	9 	9 	9tY77tY77	9 	9 	9 	9 	9rC   N)r#  )r3  r4  r5  rq  rv  ry  r{  r:  rC   r@   ro  ro    sX           W W W2 2 29 9 9 9 9rC   ro  c                  R    t          t          j        dd          ddd           d S )Nr  r   gdX	
?r   r   r[   )r   r   r   r:  rC   r@   test_chi2_smalldfr}    s-    GM#q))+<6PQRRRRRRrC   c                  `    t          t          j        dt          j                  d           d S )Nr  r   )r   r   r   r]   r   r:  rC   r@   test_ch2_infr  !  s&    s26**C00000rC   r   r   rM  r   c                 l    t          j        t          j        t           j        |                     sJ d S ru  r]   r   r   r   r  r@  s    r@   test_chi2_v_nanr  %  s,    8GM"&!,,-------rC   rJ  c                 l    t          j        t          j        | t           j                            sJ d S ru  r  rJ  s    r@   test_chi2_x_nanr  *  s,    8GM!RV,,-------rC   c                 l    t          j        t          j        t           j        |                     sJ d S ru  r]   r   r   r   r  r@  s    r@   test_chi2c_v_nanr  /  s,    8GN261--.......rC   c                 l    t          j        t          j        | t           j                            sJ d S ru  r  r  s    r@   test_chi2c_x_nanr  4  s,    8GN1bf--.......rC   c            	         t          j        ddddt           j        g          d d t           j        f         } t          j        t           j         dddt           j        g          }t	          j        | dz  |dz            }|dk     | dk     z  |dk    | dk    z  z  t          j        |           t          j        |          z  z  }t          j        t          j        ||                             sJ t          j        t          j	        ||                              sJ t          t	          j        | |          |           t          t	          j        d| dz  |dz            |           t          dt	          j        | dz  |dz            z
  |           t          dt	          j        | |          z
  |           t          dt	          j        d| dz  |dz            z
  |           d S )Ng{Gzr   rA  rX   rJ   )r]   r   r   r   r   r5  r  r  r   r  r   r   rS  	gammainccr   rY  )rJ  r   r  r  s       r@   test_chi2_edgecases_gh20972r  9  s    	
E1dArv.//2:>A

RVGUAtRV455A 
1q5!a%
(
(CEa!eQ1622RXa[[28A;;5NND6"(3t9%%&&&&&6"+c4%j))***** GM!Q''---GLAE1q5113777A)!a%Q777===Aq!,,,c222AaQA666<<<<<rC   c                  R    t          t          j        dd          ddd           d S )Nr  r   yj_?r   r   r[   )r   r   r   r:  rC   r@   test_chi2c_smalldfr  N  s9    GN3**,Aa) ) ) ) ) )rC   c                  R    t          t          j        dd          ddd           d S )Nr  r  r   r   r   r[   )r   r   r   r:  rC   r@   test_chi2_inv_smalldfr  S  s9    GN3(=>>a) ) ) ) ) )rC   c            	      n   d} t          dt          j        dt          j        d                    z  d|            d}d}d}t          t          j        dgd	ggg d
          d||g|d	|gg|            d}t          t          j        dd          ||            t          t          j        dd          ||            t          t          j        dd          | |            t          t          j        dd          d|            t          t          j        dd          d|            t          t          j        dd          d|            t          t          j        dd          d|            t          t          j        dd          d|            t          t          j        dd          d|            t          t          j        dd          d|            t          j        d          }t          t          j        |j        |j                  d |            t          t          j        d!|j        z  |j                  d"|            t          t          j        |j        d	|j        z            d#|            t          t          j        d$d$          d$           t          t          j        d%d$          d$           t          t          j        dd&          t          j	                   t          t          j        d$t          j
                  t          j	                   t          t          j        t          j
        d$          t          j	                   t          t          j        d$t          j
                   t          j	                   t          t          j        t          j
         d$          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	        d          t          j	                   t          t          j        dt          j
                  t          j
                   t          t          j        t          j
        d          t          j
                   t          t          j        dt          j
                   t          j
                    t          t          j        t          j
         d          t          j
                    d S )'NrP   rX   rJ   gDSYC?rQ   gQ_?g?@g>;,
i}@r   )rX   r   r   g=O?rM   r  r   rN   gXs*@r  g   V4oAgO1eAgꌠ9Y>)FgEg^ 9^;gd-?gP.5_gsTNNeg6dgu?j/ g]XC}KdgѧRg"!x{{ r   g][#!Rr  gٍS1gN_ r   rB  r&  )r   r   agmr]   r   r   r  r&  r   r  r   )rR   agm13agm15agm35agm12fis         r@   test_agm_simpler  X  s   D Agk!RWQZZ0002F   
 EEEGK!qc
III66&Q&(.24 4 4 4 EGK1%%u48888GK1%%u48888GKB''%d;;;;GKA&&(:FFFFGKK002D   GKa((*?dKKKKGKq))+?dKKKKGKu--/E   GKv..0G   GK//1H   	#BGK002I   GKRVRV446L   GK27335L    Q""A&&&R##Q'''R$$bf---Q''000RVQ''000Q(("&111bfWa(("&111RVbfW--rv666bfWbf--rv666Q''000RVR(("&111Q''000RVQ''000R"&))BF7333bfWb))BF733333rC   c            	      l   t          j                    5  t          j        ddt                     t	          t          j        dd          t          j        dd                     t	          t          j        ddd          t          j        ddd                     t	          t          j        ddd          t          j        ddd                     t	          t          j	        ddd          t          j	        ddd                     t	          t          j
        dd          t          j
        dd                     t	          t          j        dd          t          j        dd                     t	          t          j        dd          t          j        dd                     t	          t          j        dd          t          j        dd                     t	          t          j        dd          t          j        dd                     d d d            d S # 1 swxY w Y   d S )Nr  r  rX   r  g?rJ   gffffff@)r  r  r  r  r   r   expnrZ  rW  r]  r  r  r$  r  r  r:  rC   r@   test_legacyr    s   		 	"	" K KE~	W 	W 	WW\!S))7<S+A+ABBBW^Aq#..sC0M0MNNNW]1a--w}S#s/K/KLLLW^Aq#..sC0M0MNNNW]1c**GM#s,C,CDDDWZ3''C)=)=>>>WZ3''C)=)=>>>W_Q,,goc3.G.GHHHW%a--w/?S/I/IJJJK K K K K K K K K K K K K K K K K Ks   HH))H-0H-c                  2    dd l } |                                 S r;   )	threadingLock)r  s    r@   errstate_lockr    s    >>rC   c                     | 5  t          j        d          5  t          t           j        t           j        dd           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr  r  rX   y        .B}T)r   r  ry  r  r  )r  s    r@   test_error_raisingr    s   	 N N'*** 	N 	N'6
AuMMM	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	NN N N N N N N N N N N N N N N N N Ns4   A$'A A$A	A$A	A$$A(+A(c                     d } t          j        ddt           j        fdt           j        fdgt                    }t           j        |ddgf         } t          j        |           |d d df         |d d df                   }t          t          j	        ||d	d	
            t          j        |           |d d df         |d d df                   }t          t          j	        ||d	d	
           d S )Nc                     t          j        d          5  | dk    r"t          j        |          s| cd d d            S | t          j        |          z  cd d d            S # 1 swxY w Y   d S Nr  )invalidr   )r]   r  r   r   r   r   s     r@   xfuncztest_xlogy.<locals>.xfunc  s    [*** 	# 	#Avvbhqkkv	# 	# 	# 	# 	# 	# 	# 	# {		# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#   A"A""A&)A&r   r   r   r   rt  r  )r   r  )rX   r  rX   rP   r(  )
r]   r   r  r   rw   r   r}   r3   r   xlogy)r  z1z2w1w2s        r@   
test_xlogyr    s    # # # 
UQK!RVjA	O	O	OB	rGW%%	&B	e		R!Wb1g	.	.BgmR%eDDDD	e		R!Wb1g	.	.BgmR%eDDDDDDrC   c                     d } t          j        ddt           j        fdt           j        fddgt                    } t          j        |           |d d df         |d d df                   }t          t          j        ||dd	           d S )
Nc                     t          j        d          5  | dk    r"t          j        |          s| cd d d            S | t          j        |          z  cd d d            S # 1 swxY w Y   d S r  )r]   r  r   r  r  s     r@   r  ztest_xlog1py.<locals>.xfunc  s    [*** 	' 	'Avvbhqkkv	' 	' 	' 	' 	' 	' 	' 	' 28A;;		' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'r  r  r   r  )rX   gKH9r  rX   rP   r(  )	r]   r   r  r   rw   r}   r3   r   xlog1py)r  r  r  s      r@   test_xlog1pyr    s    ' ' ' 
UQK!RVj!(-
/ 
/ 
/B	e		R!Wb1g	.	.Bgor2EFFFFFFrC   c                  d   d } dddt           j        f}ddg}g }t          j        ||          D ]\  }}|                    ||z             t          j        |t                    } t          j        | t           j        g          |          }t          t          j        ||d	d	
           d S )Nc                 T    | dk     rt           j         S t          j        | |            S r;   )r]   r   r   r  r@  s    r@   r  ztest_entr.<locals>.xfunc  s)    q55F7NM!Q''''rC   r   r   r   rM   rX   r  otypesrP   r(  )r]   r   ra  rb  r  r   rw   r}   r   r3   r   entr)r  r  signsr  sgnrJ  r!  r1  s           r@   	test_entrr    s    ( ( (
 c26"FGE
C#E622  Q

37
E"""A0UBJ<00033AglAqu5AAAAAArC   c                     d } d}ddg}g }t          j        ||||          D ]$\  }}}}|                    ||z  ||z  f           %t          j        |t
                    } t          j        | t          j        g          |d d df         |d d df                   }	t          t          j
        |	|dd	           d S )
Nc                     | dk     s|dk     s|dk    r| dk    rt           j        S t          j        |           st          j        |          rt           j        S | dk    r|S t          j        | | |z            | z
  |z   S r;   )r]   r   rb  r   r  r  s     r@   r  ztest_kl_div.<locals>.xfunc  s~    q55AEEa1ffa6M[^^ 	1r{1~~ 	16M!VVH=AaC((1,q00rC   r   r   r   rM   rX   r  r  r   rP   r(  )ra  rb  r  r]   r   rw   r}   r   r3   r   kl_div
r  r  r  r  sgnavasgnbvbr!  r1  s
             r@   test_kl_divr    s    
1 
1 
1 FGE
C'/vufMM ' 'b$

DGT"W%&&&&
E"""A0UBJ<000111Q3111Q3@@AgnaUCCCCCCrC   c                     d } d}ddg}g }t          j        ||||          D ]$\  }}}}|                    ||z  ||z  f           %t          j        |t
                    } t          j        | t          j        g          |d d df         |d d df                   }	t          t          j
        |	|dd	           d S )
Nc                 ~    | dk    r|dk    rt          j        | | |z            S | dk    r|dk    rdS t          j        S r;   )r   r  r]   r   r  s     r@   r  ztest_rel_entr.<locals>.xfunc  sF    q55QUU=AaC(((!VVQ16MrC   r  rM   rX   r  r  r   rP   r(  )ra  rb  r  r]   r   rw   r}   r   r3   r   rel_entrr  s
             r@   test_rel_entrr    s       FGE
C'/vufMM ' 'b$

DGT"W%&&&&
E"""A0UBJ<000111Q3111Q3@@Ag&15uEEEEEErC   c                      t          j        g d          } g d}| d d df         }| d d df         }t          t          j        ||          |dd           d S )N))gpB?gĬB?)gtK&?gCtK&?)g>уO'?gvуO'?)ggQW"g    G=r   rX   rP   r(  )r]   r   r   r   r  inputsr"  r   r   s       r@    test_rel_entr_gh_20710_near_zeror  
  s    X     F  H
 	qqq!tAqqq!tAG$Q**H5qIIIIIIrC   c                      t          j        d           t          j        g d          } g d}| d d df         }| d d df         }t	          t          j        ||          |dd           d S )	Nr  r  ))rH   X )r  gZbti)r  g  4&kC)gMG.@g)Z?g wa)r   rX   rP   r(  )r   seterrr]   r   r   r  r  s       r@   test_rel_entr_gh_20710_overflowr    s    Nx    X     F  H
 	qqq!tAqqq!tAG$Q**H5qIIIIIIrC   c                     t          t          j        dd          t          j                   t          t          j        dd          dt          j        d          z             t          t          j        dd          d           d } t          j                            dd          } t          j	        | t          j
        g	          |d d d
f         |d d df                   }t          t          j        ||dd           d S )NrM   r  rJ   r   r  r  c                     | dk     rt           j        S t          j        |          | k     rdt          j        |          z  S | t          j        |          d| z  z
  z  S )Nr   r   )r]   r   rC  squaredeltarR  s     r@   r  ztest_huber.<locals>.xfunc8  sT    1996MVAYY1%%BF1IIe344rC   r&  r  r   rX   rP   r(  )r   r   huberr]   r   r   r  rc   randnr}   r   r3   r  r!  r1  s      r@   
test_huberr  3  s    r3''000GM!S))33+?@@@GM!S))+>???5 5 5 		AA0UBJ<000111Q3111Q3@@AgmQEBBBBBBrC   c                  `   d } t          j        t           j                            dd                                          ddgddggz             } t          j        | t           j        g          |d d df         |d d df                   }t          t          j	        ||dd	           d S )
Nc                 ~    | dk     rt           j        S | r|sdS | dz  t          j        d|| z  dz  z             dz
  z  S )Nr   rJ   rX   )r]   r   r   r  s     r@   r  z test_pseudo_huber.<locals>.xfuncF  sQ    1996M 	> 	>1!8rwqAeGa<'7881<==rC   r&  rJ   r   r   r  rX   rP   r(  )
r]   r   rc   r  tolistr}   r   r3   r   pseudo_huberr  s      r@   test_pseudo_huberr  E  s    > > > 	Q''..00QHsAh3GGHHA0UBJ<000111Q3111Q3@@Ag*Aqu5IIIIIIrC   c                  `    d} d}t          j        | |          }d}t          ||d           d S )Nr   gC]r2<gs.-De8rP   rQ   )r   r  r   )r  rR  r   r"  s       r@   test_pseudo_huber_small_rr  S  s@    EAUA&&A &HAxe,,,,,,rC   c                     t          j        t          d          5  t          dd           d d d            n# 1 swxY w Y   t          j        t          d          5  t	          dd           d d d            d S # 1 swxY w Y   d S )NzToo many predicted coefficientsr  rU   )r6  warnsr  r'   r(   r:  rC   r@   test_runtime_warningr  `  s   	n>
@ 
@ 
@ % %t$$$% % % % % % % % % % % % % % % 
n>
@ 
@ 
@ & &$%%%& & & & & & & & & & & & & & & & & &s   9= =A==BBc                      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             Z	ej                            ddei fdeddifg          d             Z
ej                            ddei fdeddifg          d             Zej                            ddei fdeddifg          d             Zej                            ddei fdeddifg          d             Zd Zd Zej                            dddddej        g          ej                            dg d          ej                            d ddg          d!                                     Zej                            d ddg          d"             Zej                            ddei fdeddifg          d#             Zej                            ddei fdeddifg          d$             Zd% Zd&S )'TestStirling2rX   r   )r   rX   rX   )r   rX   r   rX   )r   rX   rL   rN   rX   )r   rX   r|   r   r&  rX   )r   rX      r  A   r|   rX   )r   rX   ?   r  i^     r.  rX   )	r   rX      i  i    i
     rX   )
r   rX      i  iZ  i'  iV
  i  $   rX   )r   rX   r   r$  i9  i  i+Y    i  r   rX   zis_exact, comp, kwargsTFrR   r   c           	          t          dt          | j                            D ]I}t          t          |dz                       }| j        |         } ||t	          |g||          fi | Jd S )NrX   r  )rv   r  tabler$  r)   )r?   is_exactcompkwargsrf   k_valuesrows          r@   test_table_caseszTestStirling2.test_table_casesx  s    
 q#dj//** 	J 	JAE!A#JJ''H*Q-CDiXX>>>II&IIII	J 	JrC   c                      |t          dd|          | j        d         d         fi |  |t          dd|          | j        d         d         fi |  |t          dd|          dfi |  |t          dgdg|          dgfi | d S )Nr   r  rH   rJ   r   r   r   )r)   r  r?   r  r  r  s       r@   test_valid_single_integerz'TestStirling2.test_valid_single_integer  s    
 	Yq!8,,,djmA.>II&IIIYq!8,,,djmA.>II&III 	Yq!8,,,b;;F;;;YsQCx0002$AA&AAAAArC   c                      |t          dd|          dfi |  |t          dd|          dfi |  |t          dd|          dfi | d S )NrM   r  r   rJ   r)   r  s       r@   test_negative_integerz#TestStirling2.test_negative_integer  s     	Yr2X...<<V<<<Yr1H---q;;F;;;Yq"H---q;;F;;;;;rC   c           	      z   | j         d         d         | j         d         d         g} |t          t          ddg          t          ddg          |          |            |t          ddgt          ddg          |          |            |t          t          ddg          ddg|          |           d S )Nr&  r   rH   r  )r  r)   r   )r?   r  r  r  anss        r@   test_array_inputszTestStirling2.test_array_inputs  s    
 z"~a $*R."34YwBx((&1v%-/ / / 	 	 	 	YBx&1v%-/ / / 	 	 	 	YwBx(( !1v%-/ / / 	 	 	 	 	rC   rP   c                 R    g d}g d}g d} |t          |||          |fi | d S )N)r   rX   r   r   r  r  r  )rM   r   r   r   r
  r&  r&  )r  r   rJ   r   r   rL   r   r  r	  r?   r  r  r  r	  rf   rg   s          r@   test_mixed_valueszTestStirling2.test_mixed_values  sT     .--$$$"""Yq!8,,,c<<V<<<<<rC   c                     dt          j        d          c}t          t          |d          dz  f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  rJ   c                 X    g | ]&}t          j        |d z  z
  dz
  |z
            d z  'S )rJ   rX   )r  r  )r   rg   rf   s     r@   r!  z5TestStirling2.test_correct_parity.<locals>.<listcomp>  s;    ???TYqAF|a'Q//!3???rC   N)r]   r   r   r)   )r?   Krf   s     @r@   test_correct_parityz!TestStirling2.test_correct_parity  sb    
 BIcNN1a$'''!+????Q???	
 	
 	
 	
 	
rC   c                     t          ddg          }ddg}ddg}t          t          ||d          |          sJ t          d	d
g          }ddg}ddg}t          t          ||d          |          sJ d S )Nl   V^;. l   k4-Tr   rT   rI   rH   Tr  l	   D,"SBXp!N l   wY)H_1e_*   r@     )r   r   r)   )r?   r	  rf   rg   s       r@   test_big_numberszTestStirling2.test_big_numbers  s    ~'89::HG9Q666<<<<<<:< = =HH9Q666<<<<<<<rC   r9  r  r  y      @      ?12r	  )r  r   2Nr  c                     t          j        t                    5  t          |||           d d d            d S # 1 swxY w Y   d S )Nr  )r6  r   	TypeErrorr)   )r?   r9  r	  r  s       r@   test_unsupported_input_typesz*TestStirling2.test_unsupported_input_types  s    
 ]9%% 	, 	,a(++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   :>>c                 N   t          | j        d         dd                    }t          g dt                    }t          g dt                    }t          j        t
                    5  t          t          |||          |           d d d            d S # 1 swxY w Y   d S )NrH   rX   rH   rH   rH   rH   r  rX   rJ   r   rH   r  )r   r  r  r6  r   r	  r   r)   )r?   r  r	  rf   rg   s        r@   !test_numpy_array_int_object_dtypez/TestStirling2.test_numpy_array_int_object_dtype  s     djmABB'((LLL///LLL///]9%% 	> 	>	!Qh777===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>s   ,!BB!Bc                     t          | j        d         dd                    }t          g dt                    }t          g dt                    } |t          ||d          |fi | d S )NrH   rX   r	  r  r	  Fr  )r   r  r+   r)   r	  s          r@   #test_numpy_array_unsigned_int_dtypez1TestStirling2.test_numpy_array_unsigned_int_dtype  s{     djmABB'((LLL111LLL111Yq!5)))399&99999rC   c                    t          g dg dg          }t          g dg dg          }t          g d          } |t          |||          |fi | t          dgdgdgdgdgg          }t          g d          }t          d	 t          d
          D                       } |t          ||d          |fi | d S )N)rX   r|   r   r&  )rX   rL   rN   rX   )r   r   r   r   r	  r	  r  rH   )r   rX   rJ   r   rH   r   c                     g | ]}g d S ))r   rX   rL   rN   rX   r   r:  )r   rY  s     r@   r!  zDTestStirling2.test_broadcasting_arrays_correctly.<locals>.<listcomp>  s    <<<a)))<<<rC   r   F)r   r)   rv   r	  s          r@   "test_broadcasting_arrays_correctlyz0TestStirling2.test_broadcasting_arrays_correctly  s     566\\\<<<011LLL!!Yq!8,,,c<<V<<<aS1#sQC!-..&&&''<<588<<<==Yq!5)))399&99999rC   c                 <   t          t          ddd                    }|D ]z}t          t          d|dz                       }t          |g|d          }|t          |g|d          z
  }t          j        t          j        ||z                      dk     sJ {d S )	N3   r
	  r   rX   Tr  Fgh㈵>)r$  rv   r)   r]   r&  rC  )r?   r   rf   	k_entriesdenomrx   s         r@   test_temme_rel_max_errorz&TestStirling2.test_temme_rel_max_error  s     r3""## 	6 	6AU1ac]]++Iqc9D999E)QC%@@@@C6"&u--..55555		6 	6rC   N)r3  r4  r5  r  r6  r7  r9  r   r   r  r  r	  r	  r	  r	  r	  r]   r  r	  r	  r	  r	  r$	  r:  rC   r@   r  r  i  s       	
	
A		!!!(((000777@@@E [5	|R 	&%18  J J	 J [5	|R 	&%18  B B	 B [5	|R 	&%18  < <	 < [5	|R 	&%18   	  [5	|R 	&%18  = =	 =	
 	
 	
= = = [S3D$"?@@[S"5"5"566[Z$77, , 87 76 A@,
 [Z$77> > 87> [5	|R 	&%18  : :	 : [5	|R 	&%18  : :	 :6 6 6 6 6rC   r  ru  )r  ra  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   r6  r   ry  numpy.testingr   r   r   r   r   scipyr   scipy.special._ufuncs_ufuncsr<   scipy.specialr   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   scipy._lib._utilr*   r+   scipy._lib._array_apir,   r-   r.   scipy.special._basicr/   r0   r1   scipy.special._testutilsr2   r3   r4   scipy.integrater5   r  architecturer  r+  r`  r9   r<  rk  rs  rx  r  r  r  r  rK  r  r  r  r  r  r  r&  rE  rI  r  r*  rG  rf  r  r  r  r  r  r  r  r  r
  r  r-  r4  r:  r>  rF  rX  ri  ro  r}  r  r7  r9  r  r  r  r  r  r  r  r  r  r  fixturer  r  r  r  r  r  r  r  r  r  r  r  r  r  r:  rC   r@   <module>r1	     s  "           



                                                  * * * * * *L L L L L L L L L L L L L L       & & & & & & & & & 2 2 2 2 2 2 2 2 2 2 E E E E E E E E E E E E E E " " " " " " H H H H H H H H H H . . . . . . . . S S S S S S S S S S         ! ! ! ! ! ! ! ! ! !              LGxq!W,, XX 
x n9 n9 n9 n9 n9 n9 n9 n9buG uG uG uG uG uG uG uGp8 8 8 8 8 8 8 8       
k- k- k- k- k- k- k- k-\	- 	- 	- 	- 	- 	- 	- 	-0 0 0 0 0 0 0 0<D3 D3 D3 D3 D3 D3 D3 D3NO/ O/ O/ O/ O/ O/ O/ O/dB; B; B; B; B; B; B; B;JH H H H H H H H:JT JT JT JT JT JT JT JTZG0 G0 G0 G0 G0 G0 G0 G0T)= )= )= )= )= )= )= )=X_B _B _B _B _B _B _B _BD; ; ; ; ; ; ; ;29 9 9 9 9 9 9 9@! ! ! !Hj- j- j- j- j- j- j- j-ZA8 A8 A8 A8 A8 A8 A8 A8H@7 @7 @7 @7 @7 @7 @7 @7F*% *% *% *% *% *% *% *%Z]. ]. ]. ]. ]. ]. ]. ].@Q	4 Q	4 Q	4 Q	4 Q	4 Q	4 Q	4 Q	4h? ? ? ? ? ? ? ?D8 8 8 8 8 8 8 8	; 	; 	; 	; 	; 	; 	; 	;  $  $/3 /3 /3 /3 /3 /3 /3 /3d       - - - - - - - -5= 5= 5= 5= 5= 5= 5= 5=p- - - - - - - -4- - - - - - - -G G G G G G G GQ Q Q Q Q Q Q QJ J J J J J J J,&" &" &" &" &" &" &" &"R& & & & & & & &#9 #9 #9 #9 #9 #9 #9 #9LS S S1 1 1 wdCHII. . JI. wdCHII. . JI. wdCHII/ / JI/ wdCHII/ / JI/= = =*) ) )
) ) )
:4 :4 :4zK K K"   
 N N NE E E"G G GB B B D D D,F F F$J J J&J J J,C C C$J J J
- 
- 
-& & &[6 [6 [6 [6 [6 [6 [6 [6 [6 [6rC   