
    UgS                       d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlZd dlmZ d dlmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z' d dl(m)Z) d dl*m)c m+Z, d dl-m.Z.m/Z/m0Z0 d dl-m1Z1m2Z2m3Z3m4Z4m5Z5 d dl-m6Z6m7Z7m8Z8 d d	l9m:Z:m;Z; d d
l<m=Z=m>Z> d dl?m@Z@mAZAmBZB d dlCZC G d d          ZD G d d          ZE G d d          ZF G d d          ZG G d d          ZH G d d          ZI G d d          ZJ G d d          ZK G d d          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 d0 d1          ZV G d2 d3          ZW G d4 d5          ZX G d6 d7          ZY G d8 d9          ZZ G d: d;          Z[ G d< d=          Z\ G d> d?          Z] G d@ dA          Z^ G dB dC          Z_ G dD dE          Z` G dF dG          Za G dH dI          Zb G dJ dK          Zc G dL dM          Zd G dN dO          Ze G dP dQ          Zf G dR dS          Zg G dT dU          Zh G dV dW          ZidX ZjdY Zk G dZ d[          Zld\ Zmd] Znd^ Zod_ Zpd` Zqda Zre@db             Zsdc Ztdd Zude Zvdf Zwdg Zxdh Zydi Zzdj Z{dk Z| G dl dm          Z}dS )n    N)arrayisnanr_arangefinfopisincostanexplogzerossqrtasarrayinf
nan_to_numrealarctandoublearray_equal)raises)	assert_equalassert_almost_equalassert_array_equalassert_array_almost_equalassert_approx_equalassert_assert_allcloseassert_array_almost_equal_nulpsuppress_warnings)special)ellipeellipkellipkm1)elliprcelliprdelliprfelliprgelliprj)mathieu_odd_coefmathieu_even_coef	stirling2)np_longnp_ulong)_FACTORIALK_LIMITS_64BITS_FACTORIALK_LIMITS_32BITS)with_special_errorsassert_func_equalFuncDatac                      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/ Z1e2j3        4                    d01          d2             Z5d3 Z6d4 Z7d5 Z8e2j3        4                    d61          d7             Z9d8 Z:d9 Z;d: Z<d; Z=d< Z>d= Z?d> Z@d? ZAd@ ZBdA ZCdB ZDdC ZEdD ZFdE ZGdF ZHdG ZIdH ZJdI ZKdJ ZLdK ZMdL ZNdM ZOdN ZPdO ZQdP ZRdQ ZSdR ZTdS ZUdT ZVdU ZWdV ZXdW ZYdX ZZdY Z[dZ Z\d[ Z]d\ Z^d] Z_d^ Z`d_ Zad` Zbda Zcdb Zddc Zedd Zfde Zgdf Zhdg Zidh Zjdi Zkdj Zldk Zmdl Zndm Zodn Zpdo Zqdp Zrdq Zsdr Ztds Zudt Zvdu Zwdv Zxdw Zydx Zzdy Z{dz Z|d{ Z}d| Z~d} Z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 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )
TestCephesc                 .    t          j        d           d S Nr   )cephesairyselfs    ]/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/scipy/special/tests/test_basic.py	test_airyzTestCephes.test_airy6       A    c                 .    t          j        d           d S r7   )r8   airyer:   s    r<   
test_airyezTestCephes.test_airye9   s    Qr?   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t           j	                            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
@rF   )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           ?绽|=atolrN   )npr   broadcast_arraysreshapeTr2   r8   binomravelrandomseedr   r   rand)r;   nknkrknowns        r<   
test_binomzTestCephes.test_binom<   s   H((())H%%%&&Xb)!AAAdF)QtAAAvY??  2q 	 # # ##Q#Q#QFFF@@@B C C 	&,GGGG 		tE")B##T")..*<*<%<s%BBCIaXb)!AAAdF)QtAAAvY??  2q 	 	&, ,r!!!A#w111Q390EFF$5	2 	2 	2 	2 	2 	2r?   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 )NrO   rT   ,     r   rS   rF   rI   rU   rV   rW   )rY   r_   r`   r   logspacer   r   rZ   r[   r\   r2   r8   r]   )r;   rb   rc   rd   s       r<   test_binom_2zTestCephes.test_binom_2S   s    
	tE"+ab))*IaXb)!AAAdF)QtAAAvY??  2q 	 	&, ,r!!!A#w111Q390EFF$5	2 	2 	2 	2 	2 	2r?   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 NrT   )intrangefloat)rb   rc   numdenis        r<   	binom_intz.TestCephes.test_binom_exact.<locals>.binom_inta   sj    AAAACC1ac]]  q1uqy qS>>!r?   rO   rT      r   rF   rI   rW   )rY   	vectorizer_   r`   r   r   rZ   r[   r\   r2   r8   r]   )r;   ru   rb   rc   rd   s        r<   test_binom_exactzTestCephes.test_binom_exact`   s   		" 	" 
	" 		tIaIaXb)!AAAdF)QtAAAvY??  2q 	111Q32aaac7"#&,#)BqqqsGR!W55 q	* 	* 	* 	* 	* 	*r?   c                     g d}t          j        |          }t          t          j        |ddd                                           d S )N))rQ   rR   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   rT   rF   -q=rM   )rY   r   r3   r8   r]   check)r;   datasets     r<   test_binom_nooverflow_8346z%TestCephes.test_binom_nooverflow_8346w   sQ    
 
 
" *W%%w>>>DDFFFFFr?   c                 N    t          t          j        ddd          d           d S )NrT         ?      ?)r   r8   bdtrr:   s    r<   	test_bdtrzTestCephes.test_bdtr   s&    V[1S))#.....r?   c                 N    t          t          j        ddd          d           d S NrT      r   )r   r8   bdtrir:   s    r<   
test_bdtrizTestCephes.test_bdtri   &    V\!Ac**3/////r?   c                 N    t          t          j        ddd          d           d S r   )r   r8   bdtrcr:   s    r<   
test_bdtrczTestCephes.test_bdtrc   r   r?   c                 N    t          t          j        ddd          d           d S NrT   r         @)r   r8   bdtrinr:   s    r<   test_bdtrinzTestCephes.test_bdtrin   &    V]1Qq))#.....r?   c                 2    t          j        ddd           d S r   )r8   bdtrikr:   s    r<   test_bdtrikzTestCephes.test_bdtrik   s    a#r?   c                 J    t          t          j        d          d           d S Nr           )r   r8   beir:   s    r<   test_beizTestCephes.test_bei        VZ]]3'''''r?   c                 J    t          t          j        d          d           d S r   )r   r8   beipr:   s    r<   	test_beipzTestCephes.test_beip        V[^^C(((((r?   c                 J    t          t          j        d          d           d S Nr   r   )r   r8   berr:   s    r<   test_berzTestCephes.test_ber   r   r?   c                 J    t          t          j        d          d           d S r   )r   r8   berpr:   s    r<   	test_berpzTestCephes.test_berp   r   r?   c                 N    t          t          j        ddd          d           d S r   )r   r8   
besselpolyr:   s    r<   test_besselpolyzTestCephes.test_besselpoly   s'    V&q1--c22222r?   c                     t          j        d          5  t          j        ddd          }d d d            n# 1 swxY w Y   t	          |d           d S Nzdeprecated in SciPy 1.12.0matchrT   r   )pytestdeprecated_callr!   btdtrr   r;   ys     r<   
test_btdtrzTestCephes.test_btdtr   s    #*FGGG 	' 	'aA&&A	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'Q   9= =c                     t          j        d          5  t          j        ddd          }d d d            n# 1 swxY w Y   t	          |d           d S r   )r   r   r!   btdtrir   r   s     r<   test_btdtrizTestCephes.test_btdtri   s    #*FGGG 	( 	(q!Q''A	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(Qr   c                 N    t          t          j        ddd          d           d S NrT   r   )r   r8   btdtriar:   s    r<   test_btdtriazTestCephes.test_btdtria   &    V^Aa**3/////r?   c                 N    t          t          j        ddd          d           d S r   )r   r8   btdtribr:   s    r<   test_btdtribzTestCephes.test_btdtrib   r   r?   c                 J    t          t          j        d          d           d S NrT   r   )r   r8   cbrtr:   s    r<   	test_cbrtzTestCephes.test_cbrt   s     FKNN3/////r?   c                 L    t          t          j        dd          d           d S NrT   r   r   )r   r8   chdtrr:   s    r<   
test_chdtrzTestCephes.test_chdtr   s$    V\!A&&s+++++r?   c                 L    t          t          j        dd          d           d S NrT   r   r   )r   r8   chdtrcr:   s    r<   test_chdtrczTestCephes.test_chdtrc   $    V]1Q'',,,,,r?   c                 L    t          t          j        dd          d           d S NrT   r   )r   r8   chdtrir:   s    r<   test_chdtrizTestCephes.test_chdtri   r   r?   c                 L    t          t          j        dd          d           d S )Nr   r   )r   r8   chdtrivr:   s    r<   test_chdtrivzTestCephes.test_chdtriv   s$    V^Aa((-----r?   c                    t          t          j        ddd          d           t          j        g dg dg dg dg dg d	g d
g dg dg dg dg dg dg          }t          j        |d d df         |d d df         |d d df                   }t          ||d d df         d           t          t          j        t          j        t          j        d          d           t          t          j        ddt          j                  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 )Nr   rT   r   )      9@      4@  gL94)r          @   g7Fh9)MbP?r         D@ggåc;){Gz?r   r   g	;)r          @k   g8x@x>)g     6@r   r   gg1\>>)r   r   r   g`>)      @r   r   gp!P?)g     u@g     r@      $@g j
?)      Y@      +@r   g]?)g     @r   r   g4ۙ?)g     b@r   r   g?)g      d@r   r   r   rF   r   r|   rM   r      )r   r8   chndtrrY   r   r   r   r   r   r   nan)r;   valuescdfs      r<   test_chndtrzTestCephes.test_chndtr   s   V]1Qq))#...
 999999999:::999999999666666666666666666
   mF111a4L&A,qqq!tEEVAAAqD\6666FM"&"&!<<cBBBFM!Q77===rvq!4455666q"&!4455666q!RV445566666r?   c                 N    t          t          j        ddd          d           d S Nr   rT   r   )r   r8   	chndtridfr:   s    r<   test_chndtridfzTestCephes.test_chndtridf   '    V%a!,,S11111r?   c                 N    t          t          j        ddd          d           d S r   )r   r8   	chndtrincr:   s    r<   test_chndtrinczTestCephes.test_chndtrinc   r   r?   c                 N    t          t          j        ddd          d           d S Nr   rT   r   )r   r8   chndtrixr:   s    r<   test_chndtrixzTestCephes.test_chndtrix   &    V_Qq++C00000r?   c                 J    t          t          j        d          d           d S r   )r   r8   cosdgr:   s    r<   
test_cosdgzTestCephes.test_cosdg        V\!__S)))))r?   c                 J    t          t          j        d          d           d S r   )r   r8   cosm1r:   s    r<   
test_cosm1zTestCephes.test_cosm1   r   r?   c                 J    t          t          j        d          d           d S N-   r   )r   r8   cotdgr:   s    r<   
test_cotdgzTestCephes.test_cotdg   s"    FL,,S11111r?   c                     t          t          j        d          d           t          t          j        d          d           d S )Nr   r   gGz?gf?)r   r8   dawsnr   r:   s    r<   
test_dawsnzTestCephes.test_dawsn   s;    V\!__S)))T**,?@@@@@r?   c                    g d}t          j        dt           j        z  dz                                 t           j                  }t          t          j        ||          dd           t          j        dt           j        z  dz                                 t           j                  }t          t          j        ||          dd           t          j        dt           j        z  d	z                                 t           j                  }t          t          j        ||          dd           t          t           d
          rft          j        dt           j        z  dz                                 t           j
                  }t          t          j        ||          dd           g d}t          j        dt           j        z  dz                                 t           j                  }t          t          j        ||          dd           t          j        dt           j        z  dt           j        z  dt           j        z            }g d}t          t          j        |d          |d           d S )N)rT   r      rF   g-C6
?r   rH   decimal&.>rv   V瞯<float128r|      )rF   rD            皙?)gg?gsOB?gsaL?g
7I^ʿr   )rY   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GM!U33S!DDDDHQruWt^$$++BJ77GM!U33S"EEEEHQruWu_%%,,RZ88GM!U33S"EEEE2z"" 	J255))00==Aa 7 7bIIIIHQruWt^$$++BJ77GM!V44dBGGGG Ic"%iRUCI66@ @ @GM!Q//KKKKKKr?   c                     t          j        d          }t          j        g d          }t          t	          j        |d d t           j        f         |          j        |j        |j        fk               d S )Nr   )rT   r   rH   )	rY   r   r   r   r!   r  newaxisshapesize)r;   r  rb   s      r<   test_diric_broadcastingz"TestCephes.test_diric_broadcasting  sb    IaLLHYYYa2:.228QVQV<LLMMMMMr?   c                 J    t          t          j        d          d           d S r   )r   r8   r"   r:   s    r<   test_ellipezTestCephes.test_ellipe  "    V]1%%c*****r?   c                 L    t          t          j        dd          d           d S r   )r   r8   	ellipeincr:   s    r<   test_ellipeinczTestCephes.test_ellipeinc  %    V%a**3/////r?   c                 0    t          j        dd           d S Nr   rT   )r8   ellipjr:   s    r<   test_ellipjzTestCephes.test_ellipj"  s    ar?   c                 P    t          t          d          t          dz             d S )Nr   rF   )r   r#   r   r:   s    r<   test_ellipkzTestCephes.test_ellipk%  s"    q		2a4(((((r?   c                 L    t          t          j        dd          d           d S r   )r   r8   	ellipkincr:   s    r<   test_ellipkinczTestCephes.test_ellipkinc(  r&  r?   c                 J    t          t          j        d          d           d S r   r   r8   erfr:   s    r<   test_erfzTestCephes.test_erf+  s     VZ]]C(((((r?   c                 z    d}t          t          j        |          t          j        |           z   d           d S )Ng#8x@r   r1  r;   r  s     r<   test_erf_symmetryzTestCephes.test_erf_symmetry.  s4    VZ]]VZ^^3S99999r?   c                 J    t          t          j        d          d           d S r   )r   r8   erfcr:   s    r<   	test_erfczTestCephes.test_erfc2  s     V[^^S)))))r?   c                 J    t          t          j        d          d           d S )NrF   r   )r   r8   exp10r:   s    r<   
test_exp10zTestCephes.test_exp105  s     FLOOE22222r?   c                 J    t          t          j        d          d           d S )NrF         @)r   r8   exp2r:   s    r<   	test_exp2zTestCephes.test_exp28  r   r?   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   rI   )r   r8   expm1rY   r   r   r:   s    r<   
test_expm1zTestCephes.test_expm1;  sz    V\!__S)))V\"&))26222V\26'**B///V\"&))2622222r?   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   rT   rF   rD   r   rI   )r8   rB  r   complexrY   r   r   )r;   rB  s     r<   test_expm1_complexzTestCephes.test_expm1_complexA  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Mr?   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      ri                 ?)y=Cw?yC7gg)gF<Ug?yQ<D*?yg:><sKy>񸣼$	Um>ly;Vl <@r   ri   )	rY   r   r   r
   r8   rB  r   imagr   )r;   r   r  zexpectedfounds         r<   test_expm1_complex_hardz"TestCephes.test_expm1_complex_hardT  s     H///00VBF1II1H 8 J J J K K Q&uz8=!DDD&uz8="EEEEEr?   c                     t          t          j        ddd          d           t          t          j        ddd          dd	           d S )
NrT   r   r   ư>r   
   g2?r|   rM   )r   r8   fdtrr   r:   s    r<   	test_fdtrzTestCephes.test_fdtri  sW    V[Aq))3///D!R002D"	$ 	$ 	$ 	$ 	$ 	$r?   c                     t          t          j        ddd          d           t          t          j        ddd          dd	           d S )
NrT   r   r   rF   rK  g    _BgDIXl?r|   rM   )r   r8   fdtrcr   r:   s    r<   
test_fdtrczTestCephes.test_fdtrco  sY    V\!Q**C000 	QT224G"	$ 	$ 	$ 	$ 	$ 	$r?   c                     t          t          j        ddddg          t          ddg          d           d}t          t          j        d	d|          d
d           d S )NrT   gV-?gx&1?g
}?g<zO'?rU  rM   g׀?rK  r   r|   )r   r8   fdtrir   )r;   ps     r<   
test_fdtrizTestCephes.test_fdtriv  ss    QE5>::y*566T	C 	C 	C 	C %S!Q//??????r?   zReturns nan on i686.c                 N    t          t          j        ddd          d           d S )NrT   r   )r   r8   r]  r:   s    r<   test_fdtri_mysterious_failurez(TestCephes.test_fdtri_mysterious_failure~  s&    Q3//33333r?   c                 N    t          t          j        ddd          d           d S r   )r   r8   fdtridfdr:   s    r<   test_fdtridfdzTestCephes.test_fdtridfd  r   r?   c                 J    t          t          j        d          d           d S Nr   r   r   )r   r8   fresnelr:   s    r<   test_fresnelzTestCephes.test_fresnel  s"    V^A&&y11111r?   c                 J    t          t          j        d          d           d S Nr         8@)r   r8   gammar:   s    r<   
test_gammazTestCephes.test_gamma  s     V\!__T*****r?   c                 L    t          t          j        dd          d           d S )Nr   rT   r   )r   r8   gammainccinvr:   s    r<   test_gammainccinvzTestCephes.test_gammainccinv  s%    V(1--c22222r?   c                 .    t          j        d           d S )NrV  )r8   gammalnr:   s    r<   test_gammalnzTestCephes.test_gammaln  s    rr?   c                     t          j        g dt           j                  }t          t	          j        |          t          j        t	          j        |                               d S )N)      gffffffrT   g@)rY   r   r  r   r8   gammasgnsignrgamma)r;   valss     r<   test_gammasgnzTestCephes.test_gammasgn  sP    x000"*==6?400"'&-:M:M2N2NOOOOOr?   c                 N    t          t          j        ddd          d           d S r   )r   r8   gdtrr:   s    r<   	test_gdtrzTestCephes.test_gdtr  &    V[1Q'',,,,,r?   c                 b    t          t          j        ddt          j                  d           d S r   )r   r8   r~  rY   r   r:   s    r<   test_gdtr_infzTestCephes.test_gdtr_inf  s(    V[1RV,,S11111r?   c                 N    t          t          j        ddd          d           d S r   )r   r8   gdtrcr:   s    r<   
test_gdtrczTestCephes.test_gdtrc  &    V\!Aa((-----r?   c                 N    t          t          j        ddd          d           d S r   )r   r8   gdtriar:   s    r<   test_gdtriazTestCephes.test_gdtria  r   r?   c                 2    t          j        ddd           d S NrT   r   )r8   gdtribr:   s    r<   test_gdtribzTestCephes.test_gdtrib  s    a!r?   c                 2    t          j        ddd           d S NrT   rK  )r8   gdtrixr:   s    r<   test_gdtrixzTestCephes.test_gdtrix  s    a"r?   c                 0    t          j        dd           d S rn   )r8   hankel1r:   s    r<   test_hankel1zTestCephes.test_hankel1      qr?   c                 0    t          j        dd           d S rn   )r8   hankel1er:   s    r<   test_hankel1ezTestCephes.test_hankel1e      !r?   c                 0    t          j        dd           d S rn   )r8   hankel2r:   s    r<   test_hankel2zTestCephes.test_hankel2  r  r?   c                 0    t          j        dd           d S rn   )r8   hankel2er:   s    r<   test_hankel2ezTestCephes.test_hankel2e  r  r?   c                     t          t          j        ddd          t          d                     t          t          j        ddd          d           t          j        ddd           d S )NrT   r   r   rD   g㈮?)r   r8   hyp1f1r   r:   s    r<   test_hyp1f1zTestCephes.test_hyp1f1  s_    FM!Aa00#c((;;;FM!Ab113JKKKa!r?   c                 P    t          t          j        dddd          d           d S r   )r   r8   hyp2f1r:   s    r<   test_hyp2f1zTestCephes.test_hyp2f1  (    V]1Qq++C00000r?   c                 J    t          t          j        d          d           d S r   )r   r8   i0r:   s    r<   test_i0zTestCephes.test_i0       VYq\\#&&&&&r?   c                 J    t          t          j        d          d           d S r   )r   r8   i0er:   s    r<   test_i0ezTestCephes.test_i0e  r   r?   c                 J    t          t          j        d          d           d S r   )r   r8   i1r:   s    r<   test_i1zTestCephes.test_i1  r  r?   c                 J    t          t          j        d          d           d S r   )r   r8   i1er:   s    r<   test_i1ezTestCephes.test_i1e  r   r?   c                 .    t          j        d           d S rn   )r8   it2i0k0r:   s    r<   test_it2i0k0zTestCephes.test_it2i0k0      qr?   c                 .    t          j        d           d S rn   )r8   it2j0y0r:   s    r<   test_it2j0y0zTestCephes.test_it2j0y0  r  r?   c                 .    t          j        d           d S rn   )r8   
it2struve0r:   s    r<   test_it2struve0zTestCephes.test_it2struve0  s    !r?   c                 .    t          j        d           d S rn   )r8   itairyr:   s    r<   test_itairyzTestCephes.test_itairy      ar?   c                 J    t          t          j        d          d           d S rf  )r   r8   iti0k0r:   s    r<   test_iti0k0zTestCephes.test_iti0k0  "    V]1%%i00000r?   c                 J    t          t          j        d          d           d S rf  )r   r8   itj0y0r:   s    r<   test_itj0y0zTestCephes.test_itj0y0  r  r?   c                 J    t          t          j        d          d           d S r   )r   r8   itmodstruve0r:   s    r<   test_itmodstruve0zTestCephes.test_itmodstruve0  s#    V(++C00000r?   c                 J    t          t          j        d          d           d S r   )r   r8   	itstruve0r:   s    r<   test_itstruve0zTestCephes.test_itstruve0  s#    V%a((-----r?   c                 L    t          t          j        dd          d           d S r   )r   r8   ivr:   s    r<   test_ivzTestCephes.test_iv  "    VYq^^C(((((r?   c                 L    t          t          j        dd          d           d S r   )r   r8   iver:   s    r<   test_ivezTestCephes.test_ive  "    VZ!__S)))))r?   c                 J    t          t          j        d          d           d S r   )r   r8   j0r:   s    r<   test_j0zTestCephes.test_j0  r  r?   c                 J    t          t          j        d          d           d S r   )r   r8   j1r:   s    r<   test_j1zTestCephes.test_j1  r  r?   c                 L    t          t          j        dd          d           d S r   )r   r8   jnr:   s    r<   test_jnzTestCephes.test_jn  r  r?   c                 L    t          t          j        dd          d           d S r   )r   r8   jvr:   s    r<   test_jvzTestCephes.test_jv  r  r?   c                 L    t          t          j        dd          d           d S r   )r   r8   jver:   s    r<   test_jvezTestCephes.test_jve  r  r?   c                 .    t          j        d           d S NrF   )r8   k0r:   s    r<   test_k0zTestCephes.test_k0      	!r?   c                 .    t          j        d           d S r  )r8   k0er:   s    r<   test_k0ezTestCephes.test_k0e      
1r?   c                 .    t          j        d           d S r  )r8   k1r:   s    r<   test_k1zTestCephes.test_k1  r  r?   c                 .    t          j        d           d S r  )r8   k1er:   s    r<   test_k1ezTestCephes.test_k1e  r  r?   c                 .    t          j        d           d S r  )r8   keir:   s    r<   test_keizTestCephes.test_kei  r  r?   c                 J    t          t          j        d          d           d S r   )r   r8   keipr:   s    r<   	test_keipzTestCephes.test_keip  r   r?   c                 .    t          j        d           d S r  )r8   kerr:   s    r<   test_kerzTestCephes.test_ker  r  r?   c                 .    t          j        d           d S r  )r8   kerpr:   s    r<   	test_kerpzTestCephes.test_kerp
  r>   r?   c                 .    t          j        d           d S r  )r8   kelvinr:   s    r<   test_kelvinzTestCephes.test_kelvin  r  r?   c                 0    t          j        dd           d S rn   )r8   knr:   s    r<   test_knzTestCephes.test_kn      	!Ar?   c                     t          t          j        d          d           t          t	          j        t          j        t          j                                       d S r   )r   r8   kolmogir   rY   r   r   r:   s    r<   test_kolmogizTestCephes.test_kolmogi  sF    V^A&&s+++//0011111r?   c                 J    t          t          j        d          d           d S r   )r   r8   
kolmogorovr:   s    r<   test_kolmogorovzTestCephes.test_kolmogorov  s#    V&q))3/////r?   c                 J    t          t          j        d          d           d S )Nr          )r   r8   _kolmogpr:   s    r<   test_kolmogpzTestCephes.test_kolmogp  s"    V_Q''.....r?   c                 J    t          t          j        d          d           d S r   )r   r8   _kolmogcr:   s    r<   test_kolmogczTestCephes.test_kolmogc  s"    V_Q''-----r?   c                     t          t          j        d          d           t          t	          j        t          j        t          j                                       d S r   )r   r8   	_kolmogcir   rY   r   r   r:   s    r<   test_kolmogcizTestCephes.test_kolmogci   sH    V%a((#...)"&112233333r?   c                 0    t          j        dd           d S rn   )r8   kvr:   s    r<   test_kvzTestCephes.test_kv$  r  r?   c                 0    t          j        dd           d S rn   )r8   kver:   s    r<   test_kvezTestCephes.test_kve'      
1Qr?   c                 8   t           j        }t           |d          d           t           |d          t          j                    t           |d          t          j                   t           |t          j                  t          j                   d S )Nr   r   rI   )r8   log1pr   rY   r   r   )r;   r"  s     r<   
test_log1pzTestCephes.test_log1p*  sy    UU1XXs###UU2YY(((UU2YY'''UU26]]BF+++++r?   c           	      F   t           j        }t          }t           |d          d           t           | |dd                     |t          j         d                     t                      5 }|                    t          d           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 )	NrE  rI   r   z%invalid value encountered in multiplyrT   rF   r   rD   )r8   r"  rF  r   rY   r   r    filterRuntimeWarningr   r   r   )r;   r"  csups       r<   test_log1p_complexzTestCephes.test_log1p_complex1  sg   UU6]]F+++UU11R88__aamm444   	FCJJ~'NOOO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   3NPPPc                 N    t          t          j        ddd          d           d S )Nr   rT   r   )r   r8   lpmvr:   s    r<   	test_lpmvzTestCephes.test_lpmvD  r  r?   c                 L    t          t          j        dd          d           d S r   )r   r8   	mathieu_ar:   s    r<   test_mathieu_azTestCephes.test_mathieu_aG  r&  r?   c                 L    t          t          j        dd          d           d S r   )r   r8   	mathieu_br:   s    r<   test_mathieu_bzTestCephes.test_mathieu_bJ  r&  r?   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 )NrT   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?rT   r   rF      r   rD            ?)rY   r   r
   mqrP  s      r<   	ce_smallqz.TestCephes.test_mathieu_cem.<locals>.ce_smallqQ  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Ur?   d   rV  rh|?+=rN   rX   )	r   r8   mathieu_cemrY   rw   r   r   rj   r   )r;   r=  r;  r<  s       r<   test_mathieu_cemzTestCephes.test_mathieu_cemM  s    V'!A..y999 
	V 	V 
	V IaE!R[b"---.*1QQQtV9aQQQiGGJ!	!AAAdF)QtAAAvY>>"	, 	, 	, 	, 	, 	,r?   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 )NrT   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 )Nr6  rT   r7  r   rF   rD   r8  )rY   r   r	   r:  s      r<   	se_smallqz.TestCephes.test_mathieu_sem.<locals>.se_smallqj  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Ur?   r>  r?  r@  rV  rA  rB  rC  )	r   r8   mathieu_semrY   rw   r   r   rj   r   )r;   rI  r;  r<  s       r<   test_mathieu_semzTestCephes.test_mathieu_semf  s    V'!A..y999 

	V 
	V 

	V IaE!R[b"---.*1QQQtV9aQQQiGGJ!	!AAAdF)QtAAAvY>>"	, 	, 	, 	, 	, 	,r?   c                 N    t          t          j        ddd          d           d S NrT   r   rg  )r   r8   mathieu_modcem1r:   s    r<   test_mathieu_modcem1zTestCephes.test_mathieu_modcem1|  '    V+Aa229=====r?   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 )
NrT   r   rD   r!  rF   rV  rH   rV   rM   )	r8   mathieu_modcem2rY   r   r   rj   linspacerN  r   r;   r;  r<  rP  y1fry2s          r<   test_mathieu_modcem2zTestCephes.test_mathieu_modcem2  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++++++r?   c                 N    t          t          j        ddd          d           d S rM  )r   r8   mathieu_modsem1r:   s    r<   test_mathieu_modsem1zTestCephes.test_mathieu_modsem1  rP  r?   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 )
NrT   rD   r!  rF   rV  r   rH   rV   rM   )	r8   mathieu_modsem2rY   r   r   rj   rS  rZ  r   rT  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++++++r?   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   r8   rD  rY   r   rJ  rN  rZ  rR  r]  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Or?   c                     t          d          D ]H}t          j        ddd          }t          |d         dd           t          |d	         d
d           Id S )N<   rF   r>  rI   r   g.dS?rV   rM   rT   gGc?-C6?)rp   r8   r]  r   )r;   rc   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r?   c                 .    t          j        d           d S r7   )r8   modfresnelmr:   s    r<   test_modfresnelmzTestCephes.test_modfresnelm      1r?   c                 .    t          j        d           d S r7   )r8   modfresnelpr:   s    r<   test_modfresnelpzTestCephes.test_modfresnelp  rk  r?   c                 L    t          t          j        dd          d           d S r   )r   r8   	modstruver:   s    r<   test_modstruvezTestCephes.test_modstruve  r&  r?   c                 N    t          t          j        ddd          d           d S r   )r   r8   nbdtrr:   s    r<   
test_nbdtrzTestCephes.test_nbdtr  r  r?   c                 N    t          t          j        ddd          d           d S r   )r   r8   nbdtrcr:   s    r<   test_nbdtrczTestCephes.test_nbdtrc  r   r?   c                 N    t          t          j        ddd          d           d S r   )r   r8   nbdtrir:   s    r<   test_nbdtrizTestCephes.test_nbdtri  r   r?   c                 2    t          j        ddd           d S )NrT   rG   r   )r8   nbdtrikr:   s    r<   test_nbdtrikzTestCephes.test_nbdtrik  s    qBr?   c                 N    t          t          j        ddd          d           d S r   )r   r8   nbdtrinr:   s    r<   test_nbdtrinzTestCephes.test_nbdtrin  r   r?   c                 P    t          t          j        dddd          d           d S r   )r   r8   ncfdtrr:   s    r<   test_ncfdtrzTestCephes.test_ncfdtr  r  r?   c                     t          t          j        dddd          d           g d}t          j        ddd|          }t	          t          j        ddd|          |           d S )NrT   r   r   )r   rT   ra  rF   r   ra  )r   r8   ncfdtrir  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8r?   c                     g d}t          j        d|dd          }t          t          j        d|dd          |           d S )NrT   rF   r   rF   r9  rv   )r8   r  r   
ncfdtridfd)r;   dfdr^  s      r<   test_ncfdtridfdzTestCephes.test_ncfdtridfd  sG    iiM!S$++)!Qb993?????r?   c                     g d}t          j        |ddd          }t          t          j        |ddd          |d           d S )N)rK  rT   rF   r   g     @rF   r9  rv   gh㈵>rM   )r8   r  r   
ncfdtridfn)r;   dfnr^  s      r<   test_ncfdtridfnzTestCephes.test_ncfdtridfn  sN    !!!M#q$++)!Qb993TJJJJJJr?   c                     g d}t          j        dd|d          }t          t          j        dd|d          |           d S )N)r   ra  r   rF   r   rv   )r8   r  r   	ncfdtrinc)r;   ncr^  s      r<   test_ncfdtrinczTestCephes.test_ncfdtrinc  sG    __M!QB''(Aq"55r:::::r?   c           	      H   t          t          j        ddd          d           t          t          j        ddd          d           t          t          j        t          j        dd          dd	           t          t	          j        t          j        d
t          j        d                               t          t          j        d
dt          j                  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 )NrT   r   r   	   i   r   r   r   r   r   r   )	r   r8   nctdtrr   rY   r   r   r   r   r:   s    r<   test_nctdtrzTestCephes.test_nctdtr  s&   V]1Qq))#...V]1eR00#666FM"&"b993BBBr2637788999FM"b"&992>>>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8r?   c                 2    t          j        ddd           d S )NrT   r   r   )r8   	nctdtridfr:   s    r<   test_nctdtridfzTestCephes.test_nctdtridf  s    3q!!!!!r?   c                 2    t          j        ddd           d S r  )r8   	nctdtrincr:   s    r<   test_nctdtrinczTestCephes.test_nctdtrinc  s    1Qr?   c                 2    t          j        ddd           d S )NrK  r  r   )r8   nctdtritr:   s    r<   test_nctdtritzTestCephes.test_nctdtrit  s    3r"""""r?   c                 N    t          t          j        ddd          d           d S )Nr   rT   r   )r   r8   nrdtrimnr:   s    r<   test_nrdtrimnzTestCephes.test_nrdtrimn  s&    FOC!44S99999r?   c                 T    t          t          j        ddd          ddd           d S )Nr   r   r   rW   )r   r8   nrdtrisdr:   s    r<   test_nrdtrisdzTestCephes.test_nrdtrisd  s:    C44ca	) 	) 	) 	) 	) 	)r?   c                 4    t          j        dddd           d S r  )r8   obl_ang1r:   s    r<   test_obl_ang1zTestCephes.test_obl_ang1       !Aa     r?   c                     t          j        ddddd          }t          |d         d           t          |d         d           d S )NrT   r   r   r   )r8   obl_ang1_cvr   )r;   results     r<   test_obl_ang1_cvzTestCephes.test_obl_ang1_cv  sH    #Aa!A..F1Ic***F1Ic*****r?   c                 N    t          t          j        ddd          d           d S NrT   r   r   )r   r8   obl_cvr:   s    r<   test_obl_cvzTestCephes.test_obl_cv  r   r?   c                 4    t          j        dddd           d S r  )r8   obl_rad1r:   s    r<   test_obl_rad1zTestCephes.test_obl_rad1  r  r?   c                 6    t          j        ddddd           d S r  )r8   obl_rad1_cvr:   s    r<   test_obl_rad1_cvzTestCephes.test_obl_rad1_cv  !    1Qq1%%%%%r?   c                 4    t          j        dddd           d S r  )r8   obl_rad2r:   s    r<   test_obl_rad2zTestCephes.test_obl_rad2  r  r?   c                 6    t          j        ddddd           d S r  )r8   obl_rad2_cvr:   s    r<   test_obl_rad2_cvzTestCephes.test_obl_rad2_cv  r  r?   c                 L    t          t          j        dd          d           d S )NrT   r   rG  )r   r8   pbdvr:   s    r<   	test_pbdvzTestCephes.test_pbdv  s$    V[1%%i00000r?   c                 0    t          j        dd           d S r  )r8   pbvvr:   s    r<   	test_pbvvzTestCephes.test_pbvv      Aar?   c                 0    t          j        dd           d S r  )r8   pbwar:   s    r<   	test_pbwazTestCephes.test_pbwa  r  r?   c                     t          j        dd          }t          |t          j        d                     t          j        g dd          }t          |g d           d S )Nr   rT   rI   r   rT   rF   )rT   rT   rT   )r8   pdtrr   rY   r   r   r;   vals     r<   	test_pdtrzTestCephes.test_pdtr   sZ    k!QC,,,k)))Q''3			*****r?   c                     t          j        dd          }t          |dt          j        d          z
             t          j        g dd          }t          |g d           d S )Nr   rT   rI   r  r   )r   r   r   )r8   pdtrcr   rY   r   r   r  s     r<   
test_pdtrczTestCephes.test_pdtrc'  s^    l1a  CRVBZZ000l999c**3			*****r?   c                     t                      5 }|                    t          d           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&  r8   pdtri)r;   r(  s     r<   
test_pdtrizTestCephes.test_pdtri.  s       	"CJJ~'VWWWLS!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   1AAAc                     t          j        dd          }t          t          j        |dz   d          d           t          j        dgdgdggg d          }t	          |t          j        d                     d S )Nr   rT   r   r9  ffffff?)r   #B;rU  )r   r   )r8   pdtrikr   	gammainccr   rY   r   r;   rc   s     r<   test_pdtrikzTestCephes.test_pdtrik3  sy    M#q!!F,QUA66<<<MA3/1A1A1ABB1bhv../////r?   c                 4    t          j        dddd           d S r  )r8   pro_ang1r:   s    r<   test_pro_ang1zTestCephes.test_pro_ang1:  r  r?   c           	      l    t          t          j        ddddd          t          d                     d S )NrT   r   r4  )r   r8   pro_ang1_cvr   r:   s    r<   test_pro_ang1_cvzTestCephes.test_pro_ang1_cv=  s>    !&"4Qq1Q"?"?"'	"2"2	4 	4 	4 	4 	4r?   c                 N    t          t          j        ddd          d           d S r  )r   r8   pro_cvr:   s    r<   test_pro_cvzTestCephes.test_pro_cvA  r   r?   c                 4    t          j        dddd           d S r  )r8   pro_rad1r:   s    r<   test_pro_rad1zTestCephes.test_pro_rad1D  s    !Ac"""""r?   c                 6    t          j        ddddd           d S r  )r8   pro_rad1_cvr:   s    r<   test_pro_rad1_cvzTestCephes.test_pro_rad1_cvG  r  r?   c                 4    t          j        dddd           d S r  )r8   pro_rad2r:   s    r<   test_pro_rad2zTestCephes.test_pro_rad2J  r  r?   c                 6    t          j        ddddd           d S r  )r8   pro_rad2_cvr:   s    r<   test_pro_rad2_cvzTestCephes.test_pro_rad2_cvM  r  r?   c                 .    t          j        d           d S rn   )r8   psir:   s    r<   test_psizTestCephes.test_psiP  r  r?   c                 N    t          t          j        ddd          d           d S r7   )r   r8   radianr:   s    r<   test_radianzTestCephes.test_radianS  s&    V]1Qq))!,,,,,r?   c                 J    t          t          j        d          d           d S r   )r   r8   rz  r:   s    r<   test_rgammazTestCephes.test_rgammaV  r"  r?   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@r   333333      g@r>  gg            @rw  )r   r8   roundr:   s    r<   
test_roundzTestCephes.test_roundY  s    V\#&&s+++V\$''---V\#&&s+++V\$''---V\#&&s+++V\$''-----r?   c                 .    t          j        d           d S rn   )r8   shichir:   s    r<   test_shichizTestCephes.test_shichia  r  r?   c                    t          j        d           t          j        t          j                  \  }}t	          |t          j        dz             t	          |d           t          j        t          j                   \  }}t	          |t          j         dz             t          t          j        |          d           d S )NrT   r   r   z cosine integral(-inf) is not nan)r8   sicirY   r   r   r   r   r   )r;   sr'  s      r<   	test_sicizTestCephes.test_sicid  s    A{26""1Arus{+++Aq!!!{BF7##1Av|,,,?@@@@@r?   c                 J    t          t          j        d          d           d S NZ   r   )r   r8   sindgr:   s    r<   
test_sindgzTestCephes.test_sindgo  "    V\"%%c*****r?   c                     t          t          j        dd          d           t          t	          j        t          j        dt          j                                       d S )NrT   rK  ?)r   r8   smirnovr   rY   r   r   r:   s    r<   test_smirnovzTestCephes.test_smirnovr  sJ    V^Ab))#..."&112233333r?   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 )	NrT   rK  rI   rF         ?      r   g      ȿ)r   r8   	_smirnovpr   rY   r   r   r:   s    r<   test_smirnovpzTestCephes.test_smirnovpv  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6r?   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
             t	          j        dddd          }t          t          j        d	|          dt          j	        d	|          z
             d S )
NrT   rK  r   rM  Tendpointr   r   rD   )
r   r8   	_smirnovcr   rY   r   r   rS  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F,Q44aq#8N8N6NOOO[Aq4000F,Q33Qv~a7L7L5LMMMMMr?   c           	      Z   t          t          j        dt          j        dd                    d           t          t          j        dt          j        dd                    d           t	          t          j        t          j        dt
          j                                       d S NrT   rG   333333?)r   r8   r  smirnovir   rY   r   r   r:   s    r<   test_smirnovizTestCephes.test_smirnovi  s~    FN1V_Qs-C-CDDSIIIFN1V_Qs-C-CDDSIII26223344444r?   c           	      Z   t          t          j        dt          j        dd                    d           t          t          j        dt          j        dd                    d           t	          t          j        t          j        dt
          j                                       d S r!  )r   r8   r  
_smirnovcir   rY   r   r   r:   s    r<   test_smirnovcizTestCephes.test_smirnovci  s    F,Qv/@3/G/GHHMMMF,Qv/@3/G/GHHMMM*1RV445566666r?   c                 J    t          t          j        d          d           d S r   )r   r8   spencer:   s    r<   test_spencezTestCephes.test_spence  r"  r?   c                     t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           d S )NrT   r   r   r  rF   gMoF?)r   r8   stdtrr   r:   s    r<   
test_stdtrzTestCephes.test_stdtr  s\    V\!A&&s+++FL1--t444FL1--~>>>>>r?   c                 0    t          j        dd           d S )Nffffff?rT   )r8   stdtridfr:   s    r<   test_stdtridfzTestCephes.test_stdtridf  s    Ar?   c                 0    t          j        dd           d S )NrT   r/  )r8   stdtritr:   s    r<   test_stdtritzTestCephes.test_stdtrit  s    qr?   c                 L    t          t          j        dd          d           d S r   )r   r8   struver:   s    r<   test_struvezTestCephes.test_struve  r   r?   c                 J    t          t          j        d          d           d S r   )r   r8   tandgr:   s    r<   
test_tandgzTestCephes.test_tandg  r  r?   c                 L    t          t          j        dd          d           d S r   )r   r8   tklmbdar:   s    r<   test_tklmbdazTestCephes.test_tklmbda  s$    FN1Q//44444r?   c                 .    t          j        d           d S rn   )r8   y0r:   s    r<   test_y0zTestCephes.test_y0  r  r?   c                 .    t          j        d           d S rn   )r8   rU  r:   s    r<   test_y1zTestCephes.test_y1  r  r?   c                 0    t          j        dd           d S rn   )r8   ynr:   s    r<   test_ynzTestCephes.test_yn  r  r?   c                 0    t          j        dd           d S rn   )r8   yvr:   s    r<   test_yvzTestCephes.test_yv  r  r?   c                 0    t          j        dd           d S rn   )r8   yver:   s    r<   test_yvezTestCephes.test_yve  r  r?   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"  r   r  r   g      "g      "@g4׵/Yg8EGr?r  gffffff@ig>@r   g|Pk?rM  rT   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<rL   rM   )rF  r2   r8   wofz)r;   rP  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8r?   N)__name__
__module____qualname__r=   rB   rf   rk   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/  r3  r6  r9  r<  r@  rC  rG  r   markxfailrS  rX  r[  r_  ra  rd  ri  rn  rq  rt  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  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  rE  rK  rO  rX  r[  r^  rb  rg  rj  rn  rq  rt  rw  rz  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r$  r'  r*  r-  r1  r4  r7  r:  r=  r@  rB  rE  rH  rK  rR   r?   r<   r5   r5   5   sL           2 2 2.2 2 2* * *.G G G,/ / /0 0 00 0 0/ / /  ( ( () ) )( ( () ) )3 3 3  
  
0 0 00 0 00 0 0, , ,- - -- - -. . .7 7 7<2 2 22 2 21 1 1* * ** * *2 2 2A A AL L L2N N N
+ + +0 0 0  ) ) )0 0 0) ) ): : :* * *3 3 3) ) )3 3 3N N N& [MNNF F ONF($ $ $$ $ $@ @ @ [4554 4 6541 1 12 2 2+ + +3 3 3  P P P- - -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&- - -0 0 00 0 0, , ,2, , ,,> > >, , , > > >, , ,	P 	P 	PG G G    0 0 0. . ./ / // / /     0 0 01 1 19 9 9@ @ @
K K K
; ; ;

9 
9 
9" " "     # # #: : :) ) )! ! !+ + +
/ / /! ! !& & &! ! !& & &1 1 1    + + ++ + +" " "
0 0 0! ! !4 4 4/ / /# # #& & &! ! !& & &  - - -+ + +. . .  	A 	A 	A+ + +4 4 47 7 7N N N5 5 5
7 7 7
+ + +? ? ?
    - - -+ + +5 5 5          *9 *9 *9 *9 *9r?   r5   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                 >   t          j        d          }t          |t          g d          d           t          j        d          }t          |t          g d          d           t          j        d          }t          |t          g d          d           d S )NGz?)g*?gTk'kPĿge+?gyCyt?r7  g=
ףp=?)g'$'?geοgL?g
HVV?g
ףp=
׿)gl@D|?gV~׭ͿgU?g3{ɔ?)r!   r9   r   r   r5  s     r<   r=   zTestAiry.test_airy  s     L!@@@AA	
 	
 	

 L!???@@	
 	
 	

 L!@@@AA	
 	
 	
 	
 	
r?   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 S )Nr   rD   rF   gN贁N{?rJ   )	r!   rA   r9   rp   r   r   absr   r   )r;   abb1rb   s        r<   rB   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!!Bq)))))r?   c                 ,   t          j        d          }t          ddg          t          ddg          t          ddg          t          dd	g          f}t          ||d
           t          j        d          }t          |d         t          g d          d           t          |d         t          g d          d           t          |d         t          g d          d           t          |d         t          g d          d           d S )NrF   glgoe2+
g(0[g X*JgUfݿg˰zU`?g4c1=C?gCuTrD   r   r   )g&g(.2+
gRg}`g%́rM  rT   )g7;1[ge*JgVwgL g<3rV  )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 	""S+++a  !"Q% /C /C /C )D )D EG		H 	H 	H 	""Q% /C /C /C )D )D EG		H 	H 	H 	""Q% /C /C /C )D )D EG		H 	H 	H 	""Q% /B /B /B )C )C DF		G 	G 	G 	G 	Gr?   c           	          t          j        d          }t          |t          dg          t          dg          t          dg          t          dg          fd           d S )NrT   gcqg!xLgMSt$?g ~:p?rD   )r!   ai_zerosr   r   )r;   ais     r<   test_ai_zeroszTestAiry.test_ai_zeros#  si    a  !"e[M&:&:%*K=%9%9%*F8__%*F8__&6 78	9 	9 	9 	9 	9r?   rF   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 )NP  rT   r9  rV   rM   r   rW   rJ   )guqgqHkZg4g9Ζ%gB~gL")gLgQO	gMQnGg3:g)}g )r!   rh  r9   r^  r   )r;   rP  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_big*  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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 )Nrl  rT   r9  rV   rM   r   rW   rJ   )gx&gg-2+
gRgg`gu%́g{ )g K;1[g*JgVwg<w gd
3g/{
")r!   rc  r9   r^  r   )r;   rP  rm  bi_zpxbip_zxrr  bi_zbip_zbi_zpbip_zpbi_envelopebip_envelopes               r<   test_bi_zeros_bigzTestAiry.test_bi_zeros_bigC  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r?   N)rS  rT  rU  r=   rB   rf  rj  r   rV  	fail_slowrw  r  rX  r?   r<   rZ  rZ    s        
 
 
,* * *G G GB9 9 9 [1G G G0 [1G G G G Gr?   rZ  c                       e Zd Zd ZdS )TestAssocLaguerrec                     t          j        dd          }t          j        ddd          }t          | |d          d           t          j        ddd          }t          | |d          d           d S )NrM  rT   r  r7  )r!   genlaguerreassoc_laguerrer   )r;   a1a2s      r<   test_assoc_laguerrez%TestAssocLaguerre.test_assoc_laguerre^  sv     A&&#Br!,,!"RRVVA...#Ab++!"RRUU1-----r?   N)rS  rT  rU  r  rX  r?   r<   r  r  ]  s#        . . . . .r?   r  c                       e Zd Zd ZdS )TestBesselpolyc                     d S NrX  r:   s    r<   r   zTestBesselpoly.test_besselpolyg      r?   N)rS  rT  rU  r   rX  r?   r<   r  r  f  s#            r?   r  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                 P    t          j        d          }t          |dd           d S )NrF   gT?r   )r!   r   r   )r;   mbeis     r<   r   zTestKelvin.test_beil  s(    {1~~D"4Q77777r?   c                 P    t          j        d          }t          |dd           d S )NrF   gD,X?r   )r!   r   r   )r;   mbeips     r<   r   zTestKelvin.test_beipp  (    QE"5a88888r?   c                 P    t          j        d          }t          |dd           d S )NrF   gPA4?r   )r!   r   r   )r;   mbers     r<   r   zTestKelvin.test_bert  s(    {1~~D!4Q77777r?   c                 P    t          j        d          }t          |dd           d S )NrF   gii߿r   )r!   r   r   )r;   mberps     r<   r   zTestKelvin.test_berpx  (    QE"6q99999r?   c                 n    t          j        d          }t          |t          g d          d           d S )Nr   g&jj@g+"@g(rw+@gU2@g`<6@rD   )r!   	bei_zerosr   r   )r;   rd  s     r<   test_bei_zeroszTestKelvin.test_bei_zeros|  sP    q!!!"U ,6 ,6 ,6 &7 &7 89		: 	: 	: 	: 	:r?   c                 n    t          j        d          }t          |t          g d          d           d S )Nr   )gyWo.@g╲ݏ @gנ{)@gK11@gWc"5@r7  )r!   
beip_zerosr   r   )r;   bips     r<   test_beip_zeroszTestKelvin.test_beip_zeros  s\     ##!#e -C -C -C 'D 'D EF		G 	G 	G 	G 	Gr?   c                 n    t          j        d          }t          |t          g d          d           d S )Nr   g\@g6ُ@gӟHY'@g>"D0@ggaO;4@rD   )r!   	ber_zerosr   r   )r;   r   s     r<   test_ber_zeroszTestKelvin.test_ber_zeros  sP    ""!#e -7 -7 -7 '8 '8 9:		; 	; 	; 	; 	;r?   c                 n    t          j        d          }t          |t          g d          d           d S )Nr   g '@gs%@gF ^-@gvۅj3@gB7@rD   )r!   
berp_zerosr   r   )r;   brps     r<   test_berp_zeroszTestKelvin.test_berp_zeros  sP     ##!#e -7 -7 -7 '8 '8 9:		; 	; 	; 	; 	;r?   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 S )NrF   rN  r7  )r!   r  r   r   r   r  r  r   r   r   r  )r;   mkelvs     r<   r  zTestKelvin.test_kelvin  s    q!!!%Q'+a..:K)K)0Q'+a..:K)K)0a7<??2;M)M)0a7<??2;M)M)O PQ	R 	R 	R 	R 	Rr?   c                 P    t          j        d          }t          |dd           d S )NrF   g>ɿr   )r!   r  r   )r;   mkeis     r<   r  zTestKelvin.test_kei  s(    {1~~D!5a88888r?   c                 P    t          j        d          }t          |dd           d S )NrF   gr@d"?r   )r!   r  r   )r;   mkeips     r<   r  zTestKelvin.test_keip  r  r?   c                 P    t          j        d          }t          |dd           d S )NrF   gܙUr   )r!   r  r   )r;   mkers     r<   r  zTestKelvin.test_ker  s(    {1~~D!6q99999r?   c                 P    t          j        d          }t          |dd           d S )NrF   g^.n3Jr   )r!   r   r   )r;   mkerps     r<   r  zTestKelvin.test_kerp  r  r?   c                 n    t          j        d          }t          |t          g d          d           d S )Nr   gE>Q@gB= @gPN)@gm91@g
%5@rD   )r!   	kei_zerosr   r   )r;   r  s     r<   test_kei_zeroszTestKelvin.test_kei_zeros  sP    ""!#e -8 -8 -8 '9 '9 :;		< 	< 	< 	< 	<r?   c                 n    t          j        d          }t          |t          g d          d           d S )Nr   gWf,@g?"@gFZ*o+@gOpN2@gEa6@rD   )r!   
keip_zerosr   r   )r;   r  s     r<   test_keip_zeroszTestKelvin.test_keip_zeros  P    !!$$!$u .: .: .: (; (; <=		> 	> 	> 	> 	>r?   c                 D   t          j        d          }|\  }}}}}}}}	t          |t          g d          d           t          |t          g d          d           t          |t          g d          d           t          |t          g d          d           t          |t          g d          d           t          |t          g d          d           t          |t          g d	          d           t          |	t          g d
          d           d S )Nr   r  rD   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%%693T$tE%e!$u .9 .9 .9 (: (: ;<		= 	= 	=
 	"$u .9 .9 .9 (: (: ;<		= 	= 	=
 	"$u .9 .9 .9 (: (: ;<		= 	= 	=
 	"$u .9 .9 .9 (: (: ;<		= 	= 	=
 	"% /: /: /: ); ); <=		> 	> 	>
 	"% /: /: /: ); ); <=	> 	> 	> 	"% /: /: /: ); ); <=		> 	> 	>
 	"% /: /: /: ); ); <=		> 	> 	> 	> 	>r?   c                 n    t          j        d          }t          |t          g d          d           d S )Nr   )r  r  r  r  gD;q3@rD   )r!   	ker_zerosr   r   )r;   r  s     r<   test_ker_zeroszTestKelvin.test_ker_zeros  sP    ""!#e -9 -9 -9 ': ': ;<		= 	= 	= 	= 	=r?   c                 n    t          j        d          }t          |t          g d          d           d S )Nr   r  rD   )r!   
kerp_zerosr   r   )r;   r   s     r<   test_kerp_zeroszTestKelvin.test_kerp_zeros  r  r?   N)rS  rT  rU  r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  rX  r?   r<   r  r  k  s)       8 8 89 9 98 8 8: : :: : :G G G; ; ;; ; ;R R R9 9 99 9 9: : :: : :< < <> > >,> ,> ,>\= = => > > > >r?   r  c                       e Zd Zd ZdS )TestBernoullic                 n    t          j        d          }t          |t          g d          d           d S )Nr   )r   r  g-!lV?r   g镲r   rD   )r!   	bernoullir   r   )r;   brns     r<   test_bernoullizTestBernoulli.test_bernoulli  sP    ""!#e -5 -5 -5 '6 '6
 78	9 	9 	9 	9 	9r?   N)rS  rT  rU  r  rX  r?   r<   r  r    s#        9 9 9 9 9r?   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 )NrT   r   33333YN~h?   g6.8@rL   r   rC  rF   rD   rJ   rM   )r   r!   betar   rm  )r;   betbetgs      r<   	test_betazTestBeta.test_beta  s    W\!Q''---VV44gmF6K6KLLLVS113E"	, 	, 	, 	, l1a  a  q!1!117=3C3CCT......r?   c                 n    t          t          j        t          j        dd                               d S )NrI   rF   )r   rY   isinfr!   r  r:   s    r<   test_beta_infzTestBeta.test_beta_inf  s,    b!,,--.....r?   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 )NrT   r   r  r  r     gIs	@rB  r   rC  rF   rD   rL   rM   )r   r!   betalnr   rs  r   r^  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//////r?   N)rS  rT  rU  __doc__r  r  r  rX  r?   r<   r  r    sK         / / // / /	0 	0 	0 	0 	0r?   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        g          ej                            dg d          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   r9  rT   rT   )rY   r   r   r!   betainc
betaincinvbetainccbetainccinvr5  s     r<   
test_a1_b1zTestBetaInc.test_a1_b12  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9r?   z
a, b, x, p))rF   rD   g@w?r   )r  g     `e@rV   g*?)r  r  g"Yx;r9  )g   `1?g    ئAg\aY4g    ?)rD   i g-߇)?g;?c                     t          j        |||          }t          ||d           t          j        |||          }t          ||d           d S )Nr  rM   g-a=)r!   r  r   r  r;   r_  r`  r  r^  p1x1s          r<   test_betainc_betaincinvz#TestBetaInc.test_betainc_betaincinvI  s[     _Q1%%AE****1a((AE******r?   ))      @r   r9  g     ?)      @g     *@      ?g&?)      ?r  g333333?gFoE?)r        2@rU  gg2$Z?)r  r  gZd;?g6)r  rl  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+<rM   gV瞯=)r!   r  r   r  r  s          r<   test_betaincc_betainccinvz%TestBetaInc.test_betaincc_betainccinv^  s\     aA&&AE**** Aq))AE******r?   za, b, y, ref))cj,@r  ghHISOa gڭ Y;)g      ,@g      -@g둤g}c]춫;)r         .@gUv \U,gS^%:)r   g      ?gMoigKB;)r>  g    i@g1$-g\_cp:c                 V    t          j        |||          }t          ||d           d S )NrB  rM   )r!   r  r   )r;   r_  r`  r   refr  s         r<   test_betaincinv_tiny_yz"TestBetaInc.test_betaincinv_tiny_yp  s3    2 q!Q''3U++++++r?   funcargs))r  rF   r   )r   rF   r   )ra         r   )ra  r   r   )ra  r   333333ӿ)ra  r   皙?c                     t          j        d          5  t          j        t           j        d          5  t          j        |  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  r   )r!   errstater   r   SpecialFunctionErrorr  )r;   r  r  s      r<   test_betainc_domain_errorsz&TestBetaInc.test_betainc_domain_errors  s     W--- 	' 	'w;8LLL ' '&&' ' ' ' ' ' ' ' ' ' ' ' ' ' '	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's4   !A*AA*A	A*A	A**A.1A.N)rS  rT  rU  r  r  r   rV  parametrizer  r  r  r!   r  r  r  r  r  rX  r?   r<   r  r  -  sy        : : :. [	6 	6 	6
7 
7+ +
7 
7+ [\
< 
< 
<= =+ += =+ [	7 	7 	7 , , ,& [Vgow7I&-&68K&M N N[V &I &I &I J J' 'J JN N
' ' 'r?   r  c                   8    e Zd Zd Zd Z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 )NrV  r   rD         ^@g     @j@Texactx   )r  
repetition   c                 <    g | ]}t          j        d |d          S )ri   Tr  )r!   comb).0rc   s     r<   
<listcomp>z/TestCombinatorics.test_comb.<locals>.<listcomp>  s)    LLLQb!4888LLLr?   rN  ri   r  rX   rT   l   hU7`S?Q r>  2   )
r   r!   r#  r   rp   listrY   iinforo   max)r;   iirQ  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<<<<<<r?   c                     d}d}t          j        |          }t          j        |          }t          j        ||d          }t          j        ||d          }||k    sJ d S )NF   rP   Tr  )rY   int64r!   r#  )r;   rb   rc   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$///r?   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 )NrF   r   Tr  r   rI   FrF   rI   rF   rV  r   r   rI   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Xr?   c                     d}t          j        |          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  rD   Tr  )r   r   r!   r#  )r;   msgs     r<   test_comb_exact_non_int_depz-TestCombinatorics.test_comb_exact_non_int_dep  s    ##... 	- 	-Lat,,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   =AAc                     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           d S )	NrV  r   rD        @g     @Tr  i  )r   r!   permr   r   r:   s    r<   	test_permzTestCombinatorics.test_perm  sm    b"X1v66uFFFGLQ//666W\"at444c:::::r?   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 )NrF   r   Tr  r   rI   Fr6  r7  )r   r   r   r>  )r   r!   r?  r   r:   s    r<   test_perm_zerosz!TestCombinatorics.test_perm_zeros  r9  r?   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        d	          5  t          j        d
dd           d d d            n# 1 swxY w Y   t          j        d	          5  t          j        ddd           d d d            n# 1 swxY w Y   t          j        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   rT   rF   rD   r   Tr  zNon-integergffffff@rJ   gffffffr   g333333      @)r   r   
ValueErrorr!   r?  r   r:   s    r<   test_perm_ivzTestCombinatorics.test_perm_iv  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
 #-888 	- 	-Lat,,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-#-888 	. 	.Lq----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.#-888 	. 	.LD----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.
 ]:];;; 	/ 	/Lc....	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/sY   AAA$BBB(CCC,DDD6EE"EN)
rS  rT  rU  r,  r4  r8  r<  r@  rB  rF  rX  r?   r<   r  r    s        = = =     Y Y Y- - -
; ; ;
Y Y Y/ / / / /r?   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                 R    t          j        d          }d}t          ||           d S )N   r   )r!   r   r   )r;   cbcbrls      r<   r   zTestTrigonometric.test_cbrt  s,    \"Bt$$$$$r?   c                 T    t          j        d          }d}t          ||d           d S )Ngfffff;@g鎖C@r7  )r!   r   r   )r;   cb1cbrl1s      r<   test_cbrtmorezTestTrigonometric.test_cbrtmore  s.    l4  Ca(((((r?   c                 ~    t          j        d          }t          t          dz            }t	          ||d           d S )Nr  r   r7  r!   r   r
   r   r   )r;   cdgcdgrls      r<   r   zTestTrigonometric.test_cosdg  s8    mBBsFCa(((((r?   c                 ~    t          j        d          }t          t          dz            }t	          ||d           d S NrP   rD  r7  rR  )r;   cdgmcdgmrls      r<   test_cosdgmorez TestTrigonometric.test_cosdgmore  s8    }R  RVD*****r?   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 S )Nr   rL  rV  rT   r7  )r!   r   r   r
   r   )r;   cscsrls      r<   r   zTestTrigonometric.test_cosm1  sv    mAw}R00r"u1E1EFAqR3r"u::a<0!"T!,,,,,r?   c                     t          j        d          }t          t          dz            dz  }t	          ||d           d S )NrP   rD  rI   r7  r!   r  r   r   r   )r;   ctctrls      r<   r  zTestTrigonometric.test_cotdg  s=    ]22c6{{R BtA&&&&&r?   c                     t          j        d          }t          t          dz            dz  }t	          ||d           d S )Nr   r>  rI   r7  r^  )r;   ct1ctrl1s      r<   test_cotdgmorez TestTrigonometric.test_cotdgmore  s=    mBBsFb!Ca(((((r?   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           d S )Nr   r      r  r  r   i   y   i  i;  i  )r   r!   r  r:   s    r<   test_specialpointsz$TestTrigonometric.test_specialpoints   st   GM"--sB777GM#..b999GM"--sB777GM#..R888GM#..b999GM$//b999GM#..R888GM$//r:::GM#..R888GM$//b999GM#..b999GM$//b999GM#..R88888r?   c                     t          t          j        dg          d           t          t          j        d          d           d S )Nr   rT   r   r   )r   r!   sincr   r:   s    r<   	test_sinczTestTrigonometric.test_sinc  s>    7<,,a000W\#&&,,,,,r?   c                 N    t          j        d          }t          |d           d S r  )r!   r  r   )r;   sns     r<   r  zTestTrigonometric.test_sindg  s'    ]2Rr?   c                     t          j        d          }t          t          dz            }t	          ||d           t          j        d          }t          t          dz            }t	          ||d           d S )NrP   rD  r7  r   r>  )r!   r  r	   r   r   )r;   snmsnmrlsnm1snmrl1s        r<   test_sindgmorez TestTrigonometric.test_sindgmore  h    mBBsFCa(((}R  RVD*****r?   N)rS  rT  rU  r   rP  r   rY  r   r  rd  rn  rq  r  ry  rX  r?   r<   rH  rH    s        % % %
) ) )
) ) )
+ + +
- - -
' ' '
) ) )
9 9 9- - -
  + + + + +r?   rH  c                        e Zd Zd Zd Zd ZdS )	TestTandgc                 ~    t          j        d          }t          t          dz            }t	          ||d           d S rV  r!   r9  r   r   r   )r;   tntnrls      r<   r:  zTestTandg.test_tandg#  s8    ]22c6{{BtA&&&&&r?   c                     t          j        d          }t          t          dz            }t	          ||d           t          j        d          }t          t          dz            }t	          ||d           d S )Nr   r>  r7  rd  r   r~  )r;   tnmtnmrltnm1tnmrl1s        r<   test_tandgmorezTestTandg.test_tandgmore(  rz  r?   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           d S )Nr   r   rf  r   r   rg  r  rh  ri  r6  iLrj  rk  rl  rm  )r   r!   r9  r:   s    r<   rn  zTestTandg.test_specialpoints0  s<   GM!,,c2666GM"--sB777GM#..b999GM#..b999GM$//b999GM#..R888GM$//b999GM#..R888GM$//r:::GM#..b999GM$//b99999r?   N)rS  rT  rU  r:  r  rn  rX  r?   r<   r|  r|  !  sA        ' ' '
+ + +: : : : :r?   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)  rY   r   r:   s    r<   test_ellipj_nanzTestEllip.test_ellipj_nan?  s    sBF#####r?   c                     t          j        dd          }t          d          t          d          ddg}t	          ||d           d S )Nr  r   r      )r!   r)  r	   r
   r   )r;   elrels      r<   r*  zTestEllip.test_ellipjC  sE    ^C""3xxCT*!"S,,,,,r?   c                 \   t          j        d          }t          |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э?rM  r   r   rF   rI   gN?)
r!   r#   r   r   r$   rY   r   r   r   r   )r;   elks     r<   r,  zTestEllip.test_ellipkH  s    nR  C 1"555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++-?@@@@@r?   c                    t          j        t          dz  d          }t          j        d          }t	          ||d           dt          z  dz  }dt          z  dz  }t          |          dz  }t          j        ||          }t	          |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 )NrF   r  rv   ri   r6  r   gfoKh?r7  r   r   r   r   gt?rT   rG   rB  rM   6<R!?r  gfON?)r!   r.  r   r#   r   r	   r   rY   r   r   r   )r;   elkincr  alphaphir;  s         r<   r/  zTestEllip.test_ellipkincS  s   "2a4++nS!!F3r***2c	eCiJJM"3q))F:a000 	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Lr?   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   rV  rT   gV^8j?g,j6Ƅ@rF   )	rY   	nextafterrp   appendr!   r.  r   	full_liker   r;   mbadr  r;  mvalsjr  f1s           r<   test_ellipkinc_2zTestEllip.test_ellipkinc_2p  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Sr?   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<rK  rF   Fr  rT   rO  rM   )rY   rj   rS  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<<<<<r?   c                 ^   t          j        d          }t          |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?r7  r   rF   r   r  g?eg@)	r!   r"   r   r   r   rY   r   r   r   )r;   eles     r<   r!  zTestEllip.test_ellipe  s    nR  C 21555W^C(("Q$///W^C((#...W^RVG,,bf555W^BF++RV444W^A&&///s++-?@@@@@r?   c                    t          j        t          dz  d          }t          j        d          }t	          ||d           dt          z  dz  dt          z  dz  }}t          |          dz  }t          j        ||          }t	          |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 )NrF   r  rf  4   r6  #   g'?r7  r   r   r   r   r  r  gL@)r!   r$  r   r"   r   r	   r   rY   r   r   r   )r;   eleincr  r  r  r;  s         r<   r%  zTestEllip.test_ellipeinc  s   "2a4++nS!!F3r***U3Yr"uSysJJM"3q))FJ222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Kr?   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   rV  rT   g%?rF   gXo
@rD   )	rY   r  rp   r  r!   r$  r   r  r   r  s           r<   test_ellipeinc_2zTestEllip.test_ellipeinc_2  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Sr?   N)rS  rT  rU  r  r*  r,  r/  r  r  r!  r%  r  rX  r?   r<   r  r  >  s        $ $ $- - -
	A 	A 	AM M M:T T T = = =*	A 	A 	AL L L4T T T T Tr?   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 )NrT   r   r   r9  g      @r   rN               r  r  y
c?
cy=B?CGֿr   y檠f?P9lb?)
r   r%   r   r   rF  r   rY   r   r   	enumerater;   r  expected_resultsrt   arrs        r<   test_elliprczTestEllipCarlson.test_elliprc  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+>????	@ 	@r?   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 )NrT   r   rF   r   g`C+?r   r   rI   )r   r   r   r   r   r>  rN  r  r   r   rN  r  )r               ?rN  )y             r  r  )gfe_?gi+"?gP$M?ytgFU?7?@yR<8*y{62?z)r   r&   r   rY   r  rF  r   r   r  tinyr   r  r  s        r<   test_elliprdzTestEllipCarlson.test_elliprd  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+>????	@ 	@r?   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 )NrT   r   rF   gPO?r   rI   )r   r   r   )rN  r  r   )r   r   r   r  rN  r   r  r  )r  rN        ?      )geQO?ʞu5J?r  yp\y?kg2ΰ?gHwд?y|pF?-6Fj)	r   r'   r   rY   r  r   rF  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+>????	@ 	@r?   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 )NrT   r   r   )r   r  r  r  r  r  )r  r  rN  )r   g8d`?r>  gL+?g}^?y旮0?ʋW?yjN?^?gt?)	r   r(   rY   r  r   rF  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+>????	@ 	@r?   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 )NrT   r   r   rI   )r   r   r   r   )r   r   r>  r   )r   r   r>  r  )rN  r  r   r   )r              r   r   )rN  r  r   r  )r  r  r   y            ?)r   r   r>  r  )r   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+>????	@ 	@r?   zInsufficient accuracy on 32-bitrH  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  rC  g   ,@g    x=g   @e:g   `ݽ>g(HR)A)r   r)   r:   s    r<   test_elliprj_hardz"TestEllipCarlson.test_elliprj_hardE  s     5 6 3 13 3 ;"	0 	0 	0 	0 	 2 5 4 57 7 <"	0 	0 	0 	0 	0 	0r?   N)rS  rT  rU  r  r  r  r  r  r  r   rV  rW  r  rX  r?   r<   r  r    s         @ @ @(@ @ @0@ @ @2@ @ @*@ @ @6 [?@@0 0 A@0 0 0r?   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   r   r   rI   r   )rY   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r?   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;   r;  s     r<   test_kz)TestEllipLegendreCarlsonIdentities.test_kg  s7     Oq		72r!tR#8#899999r?   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
        r   r   r   N)	r   r   r  r   rY   r  r   r$   r'   )r;   r  m1s      r<   test_km1z+TestEllipLegendreCarlsonIdentities.test_km1n  s]     V}}!BrBGDMM>2222gb"b&9&9:::::r?   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)
        r   r   r   N)r  r   r"   r(   r  s     r<   test_ez)TestEllipLegendreCarlsonIdentities.test_ey  s<     Oq		2gb"Q$&;&;#;<<<<<r?   N)rS  rT  rU  r  r  r  r  r  rX  r?   r<   r  r  U  sZ         

8 
8 
8: : :	; 	; 	;= = = = =r?   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                 P    t          j        d          }t          |dd           d S )Nr9  g);T?r7  )r!   r2  r   )r;   ers     r<   r3  zTestErf.test_erf  s)    [B|A.....r?   c                 r    t          j        d          }t          g d          }t          ||d           d S )Nr   )yTcJ5?=W?yo@n@y'ʷ@g	@y"[

@,y]+@yld&@-;'j'>@rD   )r!   	erf_zerosr   r   )r;   erzerzrs      r<   test_erf_zeroszTestErf.test_erf_zeros  sJ    "" - - - . .
 	"#d1-----r?   r   c                    t           j                            d           d}t           j                            d|          dt           j                            dd|          z  dz
  z  }t           j                            d|          dt           j                            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 )NrO   r`  g{Gz?rF   r   rT   rN  ignoreallrC  )	rY   r_   r`   paretorandintr  r   isfiniter2   )r;   r  
other_funcrN   rX   rb   r  r   rP  rQ  w_realmasks               r<   _check_variant_funczTestErf._check_variant_func  s   
	tIT1%%29+<+<Q1+E+E)E)IJIT1%%29+<+<Q1+E+E)E)IJ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 rn   r8   r2  rP  s    r<   <lambda>z.TestErf.test_erfc_consistent.<locals>.<lambda>  s    a&*Q--' r?   r|   rB  rC  )r  r8   r8  r:   s    r<   test_erfc_consistentzTestErf.test_erfc_consistent  s:      K''	 	! 	 	 	 	 	r?   c                 L    |                      t          j        d d           d S )Nc                 Z    t          j        | | z            t          j        |           z  S r  )rY   r   r8   r8  r  s    r<   r  z/TestErf.test_erfcx_consistent.<locals>.<lambda>  s    bfQqSkkFKNN2 r?   r|   rM   )r  r8   erfcxr:   s    r<   test_erfcx_consistentzTestErf.test_erfcx_consistent  s7      L22 	! 	 	 	 	 	r?   c                 L    |                      t          j        d d           d S )Nc                 6    dt          j        d| z            z  S )Nr  rN  r  r  s    r<   r  z.TestErf.test_erfi_consistent.<locals>.<lambda>  s    cFJr!t,,, r?   r|   rM   )r  r8   erfir:   s    r<   test_erfi_consistentzTestErf.test_erfi_consistent  s7      K,, 	! 	 	 	 	 	r?   c                 L    |                      t          j        d d           d S )Nc                     t          t                    dz  t          j        |  | z            z  t	          j        |           z  S r  )r   r   rY   r   r8   r  r  s    r<   r  z/TestErf.test_dawsn_consistent.<locals>.<lambda>  s0    d2hhqj261"Q$<</&+a..@ r?   r|   rM   )r  r8   r  r:   s    r<   test_dawsn_consistentzTestErf.test_dawsn_consistent  s7      L@@ 	! 	 	 	 	 	r?   c                     t           j        t           j         t           j        g}t           j        ddg}t          t	          j        |          |d           d S )NrI   rT   r  rM   )rY   r   r   r   r!   r2  r;   r{  rQ  s      r<   test_erf_nan_infzTestErf.test_erf_nan_inf  sH    (FB?D))8%@@@@@@r?   c                     t           j        t           j         t           j        g}t           j        ddg}t          t	          j        |          |d           d S )NrF   r   r  rM   )rY   r   r   r   r!   r8  r  s      r<   test_erfc_nan_infzTestErf.test_erfc_nan_inf  sH    (FAq>T**H5AAAAAAr?   c                     t           j        t           j         t           j        g}t           j        t           j        dg}t          t	          j        |          |d           d S )Nr   r  rM   )rY   r   r   r   r!   r  r  s      r<   test_erfcx_nan_infzTestErf.test_erfcx_nan_inf  sK    (FBFA&d++XEBBBBBBr?   c                     t           j        t           j         t           j        g}t           j        t           j         t           j        g}t          t	          j        |          |d           d S )Nr  rM   )rY   r   r   r   r!   r  r  s      r<   test_erfi_nan_infzTestErf.test_erfi_nan_inf  sO    (FRVGRV,T**H5AAAAAAr?   c                     t           j        t           j         t           j        g}t           j        ddg}t          t	          j        |          |d           d S )Nr  r   r  rM   )rY   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Br?   c                     t           j        t           j         t           j        g}t           j        t           j        dz  z   ddg}t          t	          j        |          |d           d S )NrN  rE  r  rM   )rY   r   r   r   r!   rP  r  s      r<   test_wofz_nan_infzTestErf.test_wofz_nan_inf  sT    (FRVc\)66:T**H5AAAAAAr?   N)r   )rS  rT  rU  r3  r  r  r  r  r  r  r	  r  r  r  r  r  rX  r?   r<   r  r    s        / / /. . .E E E E.        A A A
B B B
C C C
B B B
C C C
B B B B Br?   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 S )Nr   rT   rF   r  rM   )rT   r   rI   r  )rT   rT   r   =   ii  iY  i=) il   Q~ l   10[l   $8gC
 l   2l   v}Ju: )r  dr  r  r  r   rf  )r!   eulerr   r   rp   rq   rY   r  r   r*  r   )
r;   eu0eu1eu2eu24	mathworldcorrectrc   errerrmaxs
             r<   
test_eulerzTestEuler.test_euler  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	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	FC,,,,,s   %D66D:=D:N)rS  rT  rU  r"  rX  r?   r<   r  r    s#        - - - - -r?   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 )NrF   rD   )r!   r?  r   r;   exexrls      r<   r@  zTestExp.test_exp2  s*    \!__Rr?   c                 T    t          j        d          }d}t          ||d           d S )Nr  g;f@r7  )r!   r?  r   r;   exmexmrls      r<   test_exp2morezTestExp.test_exp2more  s.    l3Ca(((((r?   c                 R    t          j        d          }d}t          ||           d S )NrF   r>  )r!   r;  r   r&  s      r<   r<  zTestExp.test_exp10  s,    ]1Bt$$$$$r?   c                 T    t          j        d          }d}t          ||d           d S )Nr  gYs@r7  )r!   r;  r   r*  s      r<   test_exp10morezTestExp.test_exp10more  s.    mC  Ca(((((r?   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 S )NrF   r   rD   rT   r7  r!   rB  r   r   r&  s      r<   rC  zTestExp.test_expm1  sn    mAw}Q//a0@0@AAqQ#a&&(+!"T!,,,,,r?   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 S )NrF    @皙@rT   r7  r2  )r;   ex1exrl1s      r<   test_expm1morezTestExp.test_expm1more  sn    }Qc 2 27=3E3EFQ#c((1*SXXaZ0!#eA.....r?   N)	rS  rT  rU  r@  r-  r<  r0  rC  r8  rX  r?   r<   r$  r$    sn          
) ) )
% % %
) ) )
- - -
/ / / / /r?   r$  c                      e Zd Zej                            dddg          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ddg          ej                            d	e	j
        d
 e	j        d          gg d          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ddd                    d             Zej                            d e edd                     e eddd                    z             d             Zd Zej                            de	j        e	j        e	j        e g          ej                            dddg          ej                            d edd                    ej                            d	g dgd ge	j
        ge	j
        dggg d!          d"                                                 Z!ej                            dddg          ej                            ddd d#e	j
        d
gg d$          d%                         Z"ej                            d eddd&                    d'             Z#ej                            d e edd                     e eddd&                    z             d(             Z$ej                            de	j        e	j        e	j        e g          ej                            dddg          ej                            d edd                    ej                            d	g dge	j
        ge	j
        dggg d)          d*                                                 Z%ej                            dddg          ej                            ddd d#e	j
        d
gg d$          d+                         Z&ej                            d, edd                    ej                            d ed-d.d/                    d0                         Z'ej                            d, e edd                    dd.gz             ej                            d e edd                     e edd1d&                    z             d2                         Z(ej                            de	j        e	j        e	j        e g          ej                            dddg          ej                            d edd                    ej                            d	g dge	j
        ge	j
        dggg d)          d3                                                 Z)ej                            dg d4          ej                            d, edd                    ej                            ddd d#e	j
        d
gg d$          d5                                     Z*ej                            d,dd e	j
        d6g          d7             Z+ej                            dddg          ej                            d, edd8                    d9                         Z,d: Z-d
S );TestFactorialFunctionsr  TFc                    t          j        t          j        d|                    sJ t          j        t          j        d|                    sJ t          j        t          j        dd|                    sJ d S )NrT   r  r   )rY   isscalarr!   	factorial
factorial2
factorialk)r;   r  s     r<   "test_factorialx_scalar_return_typez9TestFactorialFunctions.test_factorialx_scalar_return_type  s|    {7,Qe<<<====={7-au===>>>>>{7-a%@@@AAAAAAAr?   rb   )rI   r!  c                     t          t          j        ||          d           t          t          j        ||          d           t          t          j        |d|          d           d S )Nr  r   r   )r   r!   r=  r>  r?  )r;   r  rb   s      r<   test_factorialx_negativez/TestFactorialFunctions.test_factorialx_negative#  sl     	W&q666:::W'777;;;W'1E:::A>>>>>r?   c                     |rt           nt          } |t          j        g d|          g d            |t          j        g d|          g d            |t          j        g dd|          g d           d S )N)rv  r   rT   r  )r   r   rT   rT   r   )r   r   r!   r=  r>  r?  )r;   r  assert_funcs      r<   test_factorialx_negative_arrayz5TestFactorialFunctions.test_factorialx_negative_array*  s    ,1F((G%nnnEBBB LL	" 	" 	"G&~~~UCCC LL	" 	" 	"G&~~~qFFF LL	" 	" 	" 	" 	"r?   contentNnat)NaNNoneNaT)idsc                    t          j        ||          t          j        u sJ t          j        ||          t          j        u sJ t          j        |d|          t          j        u sJ |t          j        urKt          j        t          d          5  t          j        |g|           d d d            n# 1 swxY w Y   n~|rKt          j        t          d          5  t          j        |g|           d d d            n# 1 swxY w Y   n1t          j	        t          j        |g|          d                   sJ t          j        t          d          5  t          j        |g|           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 )	Nr  r   zUnsupported datatype.*r   factorial with `exact=Tr.*r   zfactorial2 does not support.*zfactorialk does not support.*)
r!   r=  rY   r   r>  r?  r   r   rE  r   )r;   rH  r  s      r<   test_factorialx_nanz*TestFactorialFunctions.test_factorialx_nan5  s   
  666"&@@@@!'77726AAAA!'1E:::bfDDDD"&  z1IJJJ : :!7)59999: : : : : : : : : : : : : : : 	Jz1MNNN : :!7)59999: : : : : : : : : : : : : : : 8G-wiuEEEaHIIIII]:-LMMM 	7 	7y6666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7]:-LMMM 	: 	:y!59999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:sH   B;;B?B?$DDD FFF*GGGlevelsrT   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 )NrT   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   rT   rX  r  rc   _nest_mes     r<   rU  zDTestFactorialFunctions.test_factorialx_array_shape.<locals>._nest_meQ  s-     AvvxA!,,,r?   c                     t          j         |          t                    }t          |                     t           j                   |j        t           j                             d S )Nrc   dtype)rY   r   objectr   r  r  )resnucleusr   rU  rQ  s      r<   _checkzBTestFactorialFunctions.test_factorialx_array_shape.<locals>._check^  sZ    (88Gv666fEEEC CJJrz22JCJrz4J4JKKKKKr?   r   r  rW  r  rv   Tr  rV  r   r  rF   rT   )rY   r   mathr=  r!   r>  r?  )r;   rQ  r  r]  rb   exp_nucleusrU  s    `    @r<   test_factorialx_array_shapez2TestFactorialFunctions.test_factorialx_array_shapeN  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Er?   rY  dimr   c                    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   )rY  ndminr  rv   rV  r  r  rT   rd  rF   r   )rY   r   r   r!   r=  r>  r?  )r;   rb  rY  r  rb   r   s         r<   test_factorialx_array_dimensionz6TestFactorialFunctions.test_factorialx_array_dimensionn  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 	5r?   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 )NrT   c                 4    |dk    r| S  | g|dz
            S r(  rX  rT  s     r<   rU  zCTestFactorialFunctions.test_factorialx_array_like.<locals>._nest_me  s)    AvvxQqS)))r?   r   rW  r  rv   rV  r  r  re  rF   r   r^  )r   r   r!   r=  rY   r   r>  r?  )r;   rg  r  rb   r`  rF  rU  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	; 	; 	; 	; 	;r?   rP   r6  rV  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 )Nwin32t0=r  Tr  FrM   )sysplatformr   rq   r!   r=  r  r;   rb   rN   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r?      c                    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          |          t          j        |gd          d         |           d S )NTr   rl  rm  r  FrM   )r_  r=  r   r!   rn  ro  r   rq   )r;   rb   r  rN   s       r<   test_factorial_int_referencez3TestFactorialFunctions.test_factorial_int_reference  s     .##7G$5a$>$>???7G$5qc4$@$@$CDDD//uuUg(9!U(C(C!	# 	# 	# 	#g(91#u(E(Ea(H!	# 	# 	# 	# 	# 	#r?   c                     d } |dd            |dd            |dd            |dd	            |d
d            |dd            |dd            |dd            |dd           d S )Nc                    t          t          j        |           |           t          t          j        | g          d         |           t          j        d          5  t          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 )Nr   Non-integer values.*r   Tr  rO  )r   r!   r=  r   r   r   rE  )rb   rQ  s     r<   r]  zETestFactorialFunctions.test_factorial_float_reference.<locals>._check  sn   G-a00(;;;G-qc2215x@@@'.DEEE L L 1!4 @ @ @(KKKL L L L L L L L L L L L L L L z1MNNN 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8CC!$C!r   gr?g(\?gc?g333333@g4s@g333333&@gމOAgfffff@@g	²Gg     K@gC$JOglS@g }WgX@gX>%`g\CSe@gG=rX  )r;   r]  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8r?   r  )[][1]z[1.1][NaN][NaN, 1]c                 (   |t           j        k    r-t          d |D                       rt          j        d           |dk    st          |          dk    r|n|d         }t          j        |||          }d }|st          j        ||          }nt          j	        |j
        t           j                  snt          j	        |j
        t           j                  sJt          j        t          d          5  t          j        ||           d d d            n# 1 swxY w Y   n|rnt          j	        |j
        t           j                  sJt          j        t          d	          5  t          j        ||           d d d            n# 1 swxY w Y   nt          j        ||          }d
 }|a|j        r|                                n|}|j        rt          j        ||          ng }	t          j        |	||          }
 |||
           d S d S )Nc              3   >   K   | ]}t          j        |          V  d S r  rY   r   r$  r  s     r<   	<genexpr>zKTestFactorialFunctions.test_factorial_array_corner_cases.<locals>.<genexpr>  *      $B$BQRXa[[$B$B$B$B$B$Br?   impossible combinationr   rT   rd  rY  r  Unsupported datatype*r   zfactorial with `exact=.*c                     t          |           t          |          k    s*J dt          |            dt          |                       t          | |           d S )Nztypes not equal: z, )typer   r  r   s     r<   assert_really_equalzUTestFactorialFunctions.test_factorial_array_corner_cases.<locals>.assert_really_equal  sZ    77d1gg%%%'O477'O'Od1gg'O'O%%%Ar?   )rY   r/  anyr   skiplenr   r!   r=  
issubdtyperY  integerfloatingr   rE  ndimr^   r  )r;   rH  rb  r  rY  rb   r  r  n_flatr  rQ  s              r<   !test_factorial_array_corner_casesz8TestFactorialFunctions.test_factorial_array_corner_cases  s    BH$B$B'$B$B$B!B!BK0111!AggW):):''HWCu555 	7&q666FF-44 		7]17BK88		7z1HIII 2 2!!511112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 	72="*== 	7z1KLLL 2 2!!511112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 &q666F	 	 	 "#&/QWWYYYaF<=FJ'#F%8888C x3e<<<H11111 s$   7DD!D'F

FFy       @       @)1z1.1z2+2jrJ  rK  c                    |f|t           j        u sXt          j        t          |          t           j                  s,t          j        t          |          t           j                  rt          j        t          |          t           j                  rT|rR|t           j        urDt          j        d          5  t          j	        ||          }d d d            n# 1 swxY w Y   nt          j	        ||          }|t           j        u s|t           j        nt          j	        |          }t          ||           d S t          j        t          d          5  t          j	        ||           d d d            d S # 1 swxY w Y   d S )Nrw  r   r  r  )rY   r   r  r  r  r  r   r   r!   r=  r   r   rE  r;   rb   r  r  r   s        r<   "test_factorial_scalar_corner_casesz9TestFactorialFunctions.test_factorial_scalar_corner_cases  s    Ibfd1ggrz(J(J=a"+66 % d1ggr{33 ; ;+2HIII ? ?$.q>>>F? ? ? ? ? ? ? ? ? ? ? ? ? ? ? !*1E:::KK19"&&':KA:N:NC%%%%%z1HIII 2 2!!511112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2s$   :CC!$C!F  FFrM  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 )Nrl  g+=r  Tr  FrM   )rn  ro  r   rq   r!   r>  r  rp  s      r<   test_factorial2_accuracyz/TestFactorialFunctions.test_factorial2_accuracy	  s    
 //uuUg0$???@@*1E:::	G 	G 	G 	G*A3d;;;BB5II*A3e<<<4	I 	I 	I 	I 	I 	Ir?   c           
         t          j        t          j        t	          t          |dd                    d          }t          |t          j        |d                     t          |t          j        |gd          d                    t          t          |          t          j        |d                     t          t          |          t          j        |gd          d                    d S )Nr   r!  rT   TF)	functoolsreduceoperatormulr(  rp   r   r!   r>  r   rq   )r;   rb   r  s      r<   test_factorial2_int_referencez4TestFactorialFunctions.test_factorial2_int_reference	  s     "8<eAq"oo1F1FJJ7G$6q$$?$?@@@7G$6sD$A$A!$DEEEg(:1e(D(DEEEg(:A3(F(Fq(IJJJJJr?   )ry  rz  r{  r|  c                 >   |t           j        k    r-t          d |D                       rt          j        d           |dk    st          |          dk    r|n|d         }t          j        |||          }t          j        |j        t           j	                  s|s6t          j        ||          }|s|st          nt          } |||           d S t          j        t          d          5  t          j        |d	           d d d            d S # 1 swxY w Y   d S )
Nc              3   >   K   | ]}t          j        |          V  d S r  r  r  s     r<   r  zLTestFactorialFunctions.test_factorial2_array_corner_cases.<locals>.<genexpr>$	  r  r?   r  r   rT   r  r  factorial2 does not*r   r   )rY   r/  r  r   r  r  r   r  rY  r  r!   r>  r   r   r   rE  )r;   rH  rb  r  rY  rb   r  r  s           r<   "test_factorial2_array_corner_casesz9TestFactorialFunctions.test_factorial2_array_corner_cases	  sb    BH$B$B'$B$B$B!B!BK0111!AggW):):''HWCu555="*-- 		)g 		)'777F $)NN<<DDOOOOOz1GHHH ) )"1a((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s   /DDDc                    |:|t           j        u s,t          j        t          |          t           j                  rXt          j        ||          }|t           j        u s|t           j        nt          j        |          }t          ||           d S t          j
        t          d          5  t          j        ||           d d d            d S # 1 swxY w Y   d S )Nr  r  r   )rY   r   r  r  r  r!   r>  r=  r   r   r   rE  r  s        r<   #test_factorial2_scalar_corner_casesz:TestFactorialFunctions.test_factorial2_scalar_corner_cases4	  s
    9RVr}T!WWbj'I'I'777FKK19"&&':KA:N:NC%%%%%z1GHHH 3 3"1E22223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3s   0CCCrc   r  ri   ic           	      <   t          t          t          j        ||d                    t          j        ||d                     t          t          j        |g|d                              t                    t          j        |g|d                     d S )NTrc   r  F)r   rq   r!   r?  r  )r;   rb   rc   s      r<   test_factorialk_accuracyz/TestFactorialFunctions.test_factorialk_accuracyA	  s     	g0atDDDEE*1???	A 	A 	A*A3!4@@@GGNN*A3!5AAA	C 	C 	C 	C 	Cr?   r>  c           
         t          j        t          j        t	          t          |d|                     d          }t          |t          j        ||d                     t          |t          j        |g|d          d                    t          t          |          t          j        ||d                     t          t          |          t          j        |g|d          d                    d S )Nr   rT   TF)r  r  r  r  r(  rp   r   r!   r?  r   rq   )r;   rb   rc   r  s       r<   test_factorialk_int_referencez4TestFactorialFunctions.test_factorialk_int_referenceO	  s     "8<eAq1"oo1F1FJJ7G$6q!T$B$BCCC7G$6sAt$D$DQ$GHHHg(:1a(G(GHHHg(:A35(I(I!(LMMMMMr?   c                 @   |t           j        k    r-t          d |D                       rt          j        d           |dk    st          |          dk    r|n|d         }t          j        |||r|nt           j                  }t          j        |j	        t           j
                  s|s't          t          j        |d|          |           d S t          j        t          d	          5  t          j        |d|           d d d            d S # 1 swxY w Y   d S )
Nc              3   >   K   | ]}t          j        |          V  d S r  r  r  s     r<   r  zLTestFactorialFunctions.test_factorialk_array_corner_cases.<locals>.<genexpr>g	  r  r?   r  r   rT   r  r   r  factorialk does not*r   )rY   r/  r  r   r  r  r   r  r  rY  r  r   r!   r?  r   rE  )r;   rH  rb  r  rY  rb   s         r<   "test_factorialk_array_corner_casesz9TestFactorialFunctions.test_factorialk_array_corner_cases_	  s]    BH$B$B'$B$B$B!B!BK0111!AggW):):''HWC/Muu2:NNN="*-- 	6g 	6+Aq>>>BBBBBz1GHHH 6 6"1au55556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6s   .DDD)TFNc                    |:|t           j        u s,t          j        t          |          t           j                  r|Et          j        d          5  t          j        |||          }d d d            n# 1 swxY w Y   nt          j        |||          }|t           j        u p|d u }|rt           j        nd}t          ||           d S t          j
        t          d          5  t                      5 }|                    t          d           t          j        |||           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 )Nzfactorialk will default.*r   r  rT   r  zfactorialk will default)rY   r   r  r  r  r   r   r!   r?  r   r   rE  r    r%  DeprecationWarning)r;   rb   rc   r  r  nan_condrQ  r(  s           r<   #test_factorialk_scalar_corner_casesz:TestFactorialFunctions.test_factorialk_scalar_corner_casess	  s   
 9RVr}T!WWbj'I'I}+2MNNN E E$/QeDDDFE E E E E E E E E E E E E E E !+A%@@@BF{/a4iH!)0rvvqH*****z1GHHH < <&(( <CJJ13LMMM&qAU;;;;< < < < < < < < < < < < < < << < < < < < < < < < < < < < < < < <sH   A88A<?A<*E93D8,E8D<	<E?D<	 EEEr  c                     t          j        t          d          5  t          j        d|           d d d            d S # 1 swxY w Y   d S )Nzk must be a positive integer*r   rT   )r   r   rE  r!   r?  r  s     r<   test_factorialk_raises_kz/TestFactorialFunctions.test_factorialk_raises_k	  s    ]:-LMMM 	% 	%q!$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   ?AAr8  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  rT   )r/   keysrY   r   r0   r   r!   r?  rY  r-   r/  r)  int32r*  rZ  getr  )r;   rc   r  kwrb   rY  s         r<   test_factorialk_dtypez,TestFactorialFunctions.test_factorialk_dtype	  s    u%% 	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Br?   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 )
NrT   rF   r   rJ   Fr  zfactorial with `exact=True.*r   T)	rY   r   r   r   r!   r=  r   r   rE  )r;   r  rQ  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).rS  rT  rU  r   rV  r  r@  rC  rG  rY   r   
datetime64rP  rp   ra  ro   int8int16r  r/  uint8uint16uint32uint64rf  rj  rq  r(  rt  rx  r  
complex128rZ  r  r  r  r  r  r  r  r  r  r  r  r  r  rX  r?   r<   r:  r:    s	       [WtUm44B B 54B
 [S,,,//[WtUm44? ? 54 0/?
 [WtUm44" " 54" [WtUm44[Y}r}U7K7K(L!7!7!7  9 9: :9 9 54:, [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;$ [S%%C"4"455	H 	H 65	H [S!T%%2,,//$$uuRb7I7I2J2JJL L
# 
#L L
#9 9 9. [Wrx')}f'> ? ?[WtUm44[UEE!QKK00[Y 1#urvhD!L!L!L  N N!2 !2N N 10 54? ?!2F [WtUm44[S1c6264"@!D!D!D  F F2 2F F 542" [S%%C"4"455	I 	I 65	I [S!T%%2,,//$$uuRb7I7I2J2JJL L
K 
KL L
K [Wrx')}f'> ? ?[WtUm44[UEE!QKK00[YaS26(RVQK(H!C!C!C  E E) )E E 10 54? ?)" [WtUm44[S1c6264"@!D!D!D  F F3 3F F 543 [S%%1++.. [S%%R"5"566C C 76 /.C [S$$uuQ{{"3"3r2h">??[S!T%%2,,//$$uuRb7I7I2J2JJL LN NL L @?N [Wrx')}f'> ? ?[WtUm44[UEE!QKK00[YaS26(RVQK(H!C!C!C  E E6 6E E 10 54? ?6 [W&9&9&9::[S%%1++..[S1c6264"@!D!D!D  F F< <F F /. ;:<& [S1c263"788% % 98% [WtUm44[S%%2,,//C C 0/ 54C(- - - - -r?   r:  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/?!ۿ)rD  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 S )Nr7  )r   r!   rh  r   )r;   rP  r  r'  frss        r<   test_fresnel_valueszTestFresnel.test_fresnel_values	  s>    @ GOA&&''!#uaV}}a88888r?   c                 `   t          j        d          \  }}t          |t          g d          d           t          |t          g d          d           t          j        |          d         }t          j        |          d         }t          |dd           t          |dd           d S )Nr   )y @X9v?y^I@48E?y=
ףp@+?y@eX?yO@Ǻ?r   )y.1?ǘ?yʡE6@:#J{/?yq-
@y&1?yh o@߾3?yW2q@qh?r   rT   rf  )r!   fresnel_zerosr   r   rh  )r;   szoczovals1vals2s        r<   test_fresnel_zeroszTestFresnel.test_fresnel_zeros	  s    (++S!#"' ): ): ): #; #; <=	> 	> 	> 	"#"' ): ): ): #; #; <=	> 	> 	> $$Q'$$Q'!%"---!%"-----r?   c                 ~    t          j        d          \  }}t          j        d          }t          ||d           d S )NrJ   r8  )r!   r  fresnelc_zerosr   )r;   r  r  frcs       r<   test_fresnelc_zeroszTestFresnel.test_fresnelc_zeros	  >    (++S$Q''!#c"-----r?   c                 ~    t          j        d          \  }}t          j        d          }t          ||d           d S )Nr   r8  )r!   r  fresnels_zerosr   )r;   r  r  r  s       r<   test_fresnels_zeroszTestFresnel.test_fresnels_zeros	  r  r?   N)rS  rT  rU  r   rV  r  rY   r   r  r  r  r  rX  r?   r<   r  r  	  s        [Y7=	

	
 	&,)/*	c
&$;)  >9 9? >9. . .&. . .
. . . . .r?   r  c                   X    e Zd Zd Zd Zd Zed             Zed             Zd Z	d Z
dS )		TestGammac                 N    t          j        d          }t          |d           d S rk  )r!   rm  r   )r;   gams     r<   rn  zTestGamma.test_gamma	  s'    mASr?   c                     t          j        d          }t          t          j        d                    }t	          ||d           d S )Nr   r7  )r!   rs  r   rm  r   )r;   gamlnlngams      r<   rt  zTestGamma.test_gammaln	  s@    ""GM!$$%%E%*****r?   c                 |    t          j        dd          }t          j        dd          }t          ||d           d S )Nr   r7  )r!   rp  gammaincinvr   )r;   gccinvgcinvs      r<   rq  zTestGamma.test_gammainccinv	  s>    %b,,#Br**F5+++++r?   c                 f   t          j        dd          }t          j        d|          }t          |dd           t          j        dd          }t          j        dd          }t          d|d           t          |dd           t          j        dd          }t          d	|d           d S )
NrG   rT   rV  g?g`	\;r  r'  gmb<g      &@)r!   r  gammaincr   r;   r   r  s      r<   test_gammaincinvzTestGamma.test_gammaincinv 
  s    2&&R""Ac!$$$R&&$:;;D!R0000A5rBBBB$JKKD!R000000r?   c                     dt          j        dd          dt          j        dd          dg}|D ]>}t          j        d|          }t          j        d|          }t          ||d           ?d S )	Nr9  r   gCs?rT   g^F    ?rG   r|   rM   )rY   r  r!   r  r  r   )r;   ptsxpr   r  s        r<   test_975zTestGamma.test_975
  s    
 |D!$$l|D!$$l4  	/ 	/B#B++A a((AAr.....	/ 	/r?   c                 ~    t          j        d          }dt          j        d          z  }t          ||d           d S )Nr7  rT   )r!   rz  rm  r   )r;   rgamrlgams      r<   r  zTestGamma.test_rgamma
  s=    ~a  '-"""Dq)))))r?   c                     t          t          j        t          j        d                               t          t          j        d          d           d S )NrI   r   )r   rY   r  r!   rm  r   rz  r:   s    r<   test_infinityzTestGamma.test_infinity
  sD    r**++,,,W^B''+++++r?   N)rS  rT  rU  rn  rt  rq  r1   r  r  r  r  rX  r?   r<   r  r  	  s          + + +
, , ,
 	1 	1 	1 
/ 
/ 
/* * *
, , , , ,r?   r  c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )

TestHankelc                 v    t          t          j        dd          t          j        dd           d           d S NrA  rF   r   rf  )r   r!   r  r:   s    r<   
test_negv1zTestHankel.test_negv1%
  5    GOBq11GOAa4H4H3H"MMMMMr?   c                     t          j        dd          }t          j        dd          t          j        dd          dz  z   }t	          ||d           d S NrT   rK  rN  r7  )r!   r  r  rG  r   )r;   hank1hankrls      r<   r  zTestHankel.test_hankel1(
  sR    "%%*Qr""WZ"%5%5b%88E&+++++r?   c                 v    t          t          j        dd          t          j        dd           d           d S r  )r   r!   r  r:   s    r<   test_negv1ezTestHankel.test_negv1e-
  7    G,R22W5Ea5J5J4JBOOOOOr?   c                     t          j        dd          }t          j        dd          t          d          z  }t	          ||d           d S )NrT   rK  y       r7  )r!   r  r  r   r   )r;   hank1ehankrles      r<   r  zTestHankel.test_hankel1e0
  sH    !!B''/!B''D		1F71-----r?   c                 v    t          t          j        dd          t          j        dd           d           d S r  )r   r!   r  r:   s    r<   
test_negv2zTestHankel.test_negv25
  r  r?   c                     t          j        dd          }t          j        dd          t          j        dd          dz  z
  }t	          ||d           d S r  )r!   r  r  rG  r   )r;   hank2hankrl2s      r<   r  zTestHankel.test_hankel28
  sR    "%%:a##gj2&6&6r&99E'!,,,,,r?   c                 v    t          t          j        dd          t          j        dd           d           d S r  )r   r!   r  r:   s    r<   
test_neg2ezTestHankel.test_neg2e=
  r   r?   c                 |    t          j        dd          }t          j        dd          }t          ||d           d S )NrT   rK  r7  )r!   r  r   )r;   hank2ehankrl2es      r<   test_hankl2ezTestHankel.test_hankl2e@
  s>    !!B''#Ab))F8A.....r?   N)rS  rT  rU  r  r  r  r  r  r  r
  r  rX  r?   r<   r  r  #
  s        N N N, , ,
P P P. . .
N N N- - -
P P P/ / / / /r?   r  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 S r  )r!   h1vpjvpyvpr   )r;   h1h1reals      r<   	test_h1vpzTestHyper.test_h1vpG
  R    \!B+a##gk!B&7&7&::Bva(((((r?   c                     t          j        dd          }t          j        dd          t          j        dd          dz  z
  }t	          ||d           d S r  )r!   h2vpr  r  r   )r;   h2h2reals      r<   	test_h2vpzTestHyper.test_h2vpL
  r  r?   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|   rM   r   r   r  r   )g      rI   r   rT   ra  )g̷?g3|t-Ք?r   go?g{h?rE  r   ra  r  )r   rT   r   )r   gc?r  rF   r   rT   )
r   r!   hyp0f1rY   r   r  rF  vstackassert_raisesrE  )r;   r  rQ  r  x2s        r<   test_hyp0f1zTestHyper.test_hyp0f1Q
  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 	3r?   c                 P    t          j        dd          }t          |d           d S )N皙?      ?      ?y;EG?uM?)r!   r!  r   )r;   r[  s     r<   test_hyp0f1_gh5764zTestHyper.test_hyp0f1_gh5764k
  s,     nS,//C!LMMMMMr?   c                    t          j        ddd          }t          |dd           t          g g dg dg dg dg d	g d
g dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg d g d!g d"g d#g d$g d%g d&g d'g d(g d)g d*g d+g d,g d-g d.g d/g d0g d1g d2g d3g d4g d5g d6g d7g d8g d9g d:g d;g d<g d=g d>g d?g d@g dAg dBg dCg dDg dEg dFg dGg dHg dIg dJg dKg dLg dMg dNg dOg dPg dQg dRg dSg dTg dUg dVg dWg dXg dYg dZg d[g d\g d]g d^g d_g d`g dag dbg dcg ddg deg dfg dgg dh          }|D ]C\  }}}}t          j        |||          }t	          t          ||z
            |z  dik                Dd S )jNrK  rL  g?rH   )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 ?re  )r!   r  r   r   r   r^  )r;   hyp1ref_datar_  r`  r'  rQ  r  s           r<   r  zTestHyper.test_hyp1f1r
  s,   ~bB''D"4Q777  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:;;;;	< 	<r?   c                     t          j        ddd          }t          j        ddd          }t          ||d           d S )Nr   ra  g7B.g|:B.r8  r!   r  r   )r;   r+  hyp2s      r<   test_hyp1f1_gh2957zTestHyper.test_hyp1f1_gh2957
  s@    ~c388~c388D$+++++r?   c                 T    t          j        ddd          }t          |dd           d S )Nr   ra  ig<`?r8  r.  )r;   hyps     r<   test_hyp1f1_gh2282zTestHyper.test_hyp1f1_gh2282
  s.    nS#u--C!5r:::::r?   c                 V   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 ]8\  }\  }}}}}t	          j	        ||||          }t          ||dd&|z  '           9d S )(Nr   rT   ra  |Gz?r  g?g|Gzr   r  rF   r  r'  )r   r   ra  r5  gYi2?rA  r   g433333?rD   r7  r   rI   r  r   g      ?r         @g      gUUUUUUտg  @gUUUUUU?g)ra  r  r         $gEciH!@)r!  r   rT   r  gzG?)rF   rA  rT   r  gy&1|)r  r   rT   r  g"nN%@?)rF   rE  rT   r  g!J)rV  |      %@r\  gzS;)rV  r8  g      %r\  g[B.VP<test #%derr_msg)r   r   r	   r
   r!   rm  r   r   r  r  r   )	r;   r   rt   r_  r`  r'  r  rf  cvs	            r<   r  zTestHyper.test_hyp2f1
  sf    !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 	B 	BA1aA1a++BAq*q.AAAAA	B 	Br?   c                 j   t          j        ddd          }t          |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 S )NrT   rK  r>  g D?rH   )rL  r"  333333?g)ra  g	@rM  g	r   rF   r8  )	r!   hyperur   r   r   r	   r  rm  r   )r;   val1r_  r`  rP  hypuhprls          r<   test_hyperuzTestHyper.test_hyperu  s-   ~aC((D1---   !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 	"$tB/////r?   c                 P    t          t          j        ddd          dd           d S )NrT   ra  g3333334@g(¨?r8  )r   r!   r@  r:   s    r<   test_hyperu_gh2287zTestHyper.test_hyperu_gh2287   s3    GN1c4880"	6 	6 	6 	6 	6r?   N)rS  rT  rU  r  r  r%  r)  r  r0  r3  r  rD  rF  rX  r?   r<   r  r  F
  s        ) ) )
) ) )
3 3 34N N Nr< r< r<h, , ,
; ; ;"B "B "BH0 0 06 6 6 6 6r?   r  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 S )Nr  gbɃ?gΝJ ֿr7  )r   r!   r  r   )r;   it0s     r<   r  zTestBessel.test_itj0y0&  sM    GN2&&''!&(<=>>	
 	
 	
 	
 	
r?   c                     t          t          j        d                    }t          |t          ddg          d           d S )Nr  gbqTtt?g/]ooۿr7  )r   r!   r  r   )r;   it2s     r<   r  zTestBessel.test_it2j0y0.  sM    GOB''((!(*>?@@	
 	
 	
 	
 	
r?   c                 r    t          t          j        dd          t          j        dd                     d S Nr   rF   rA  )r   r!   r  r:   s    r<   test_negv_ivzTestBessel.test_negv_iv6  s.    WZ!__gjA&6&677777r?   c                 z    t          j        d          }t          j        dd          }t          ||d           d S NrK  r   r7  )r!   r  r  r   r;   ozozrs      r<   r  zTestBessel.test_j09  8    Z^^j2Bs1%%%%%r?   c                 z    t          j        d          }t          j        dd          }t          ||d           d S NrK  rT   r7  )r!   r  r  r   r;   o1o1rs      r<   r  zTestBessel.test_j1>  rU  r?   c                 R    t          j        dd          }t          |dd           d S )NrT   r  ;x?r7  )r!   r  r   )r;   jnnrs     r<   r  zTestBessel.test_jnC  s,    z!BD!5a88888r?   c                 v    t          t          j        dd          t          j        dd           d           d S r  )r   r!   r  r:   s    r<   test_negv_jvzTestBessel.test_negv_jvG  3    GJr!,,wz!A.>CCCCCr?   c                     g dg dg dg dg dg}t          |          D ]4\  }\  }}}t          j        ||          }t          ||dd|z             5d S )	N)r   rK  g
Ye?)UUUUUU?:0yE>g˿+>)rb  rV   g)%->)g@rV   g5c)!9)rb  r>  g%,Ϳr7  r:  r;  )r  r!   r  r   )r;   r   rt   rf  r  r   ycs          r<   r  zTestBessel.test_jvJ  s    ///555666666222	 &f-- 	B 	BLAy1aAq!!BAq*q.AAAAA	B 	Br?   c                 v    t          t          j        dd          t          j        dd           d           d S r  )r   r!   r  r:   s    r<   test_negv_jvezTestBessel.test_negv_jveU  5    GK1--Aa0@0@/@"EEEEEr?   c                    t          j        dd          }t          |dd           t          j        dd          }d}t          j        d|          t	          t          |j                             z  }t          ||d           d S )NrT   r  r\  r7  ?      ?)r!   r  r   r  r   r^  rO  )r;   jvexpjvexp1rP  jvexprs        r<   r  zTestBessel.test_jveX  sz    Ab!!E"6q999Qu%%Aac!&kk\!2!22F6!,,,,,r?   c                    t          j        dd          }t          j        dd          }t          |t          g d          d           t          |t          g d          d           t          j        dd          }t	          |t          g d          d	
           t          j        dd          }t	          |t          g d          d	
           d S )Nr   r   rT   )go@.=@gzj,[@glN!@g5/ D'@gh>-@rD   gW@g0@gQX$@g*@g8*5{x0@rS   )gEk[@g~Cju]@gYrʝ^@g, `@gf	`@rL   rM   -  )gts@g&ǭr3t@gWt@g,$Y&u@gu@)r!   jn_zerosr   r   r   )r;   jn0jn1jn102jn301s        r<   test_jn_zeroszTestBessel.test_jn_zeros`  sF   q##q##!#e -= -= -= '> '> ?@		A 	A 	A
 	"#e -8 -8 -8 '9 '9 :;		< 	< 	<  Q''u &> &> &>  ?  ? FK		L 	L 	L 	L  Q''u &> &> &>  ?  ? FK		L 	L 	L 	L 	L 	Lr?   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   rh   i  g;@rL   rM   i  g8v@i+  gׂMm@rV  gxi@g	,@gи{>@i  r   )gUDX@g!@g*HS@gz5 @g@2;@rc  )r!   rp  r   r   )r;   rq  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r?   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|z            d S )Nc                 H     | dz
  |           | dz   |          z
  dz  S )NrT   rF   rX  )rb   r  r  s     r<   jnpz(TestBessel.test_jnjnp_zeros.<locals>.jnp  s/    Bqs1II1Q3q		)1,,r?   rT   rP   r   rU  r&  zInvalid t return for nt=%d)r!   r  rp   jnjnp_zeroszipr   AssertionError)r;   r|  ntrP  rb   r;  tzznnttr  s             @r<   test_jnjnp_zeroszTestBessel.test_jnjnp_zeros  s    Z	- 	- 	- 	- 	-2,, 	L 	LB ,R00JAq!Q!!Qll L L
B77#BBr2JJ=====1WW#CCBKK>>>>>()E)JKKKL	L 	Lr?   c                     t          j        dd          }t          |t          g d          d           t          j        dd          }t	          t          j        d|          dd           d S )	NrT   r   g(yu?gOXeS@ga!@gxi'@g'Nw(-@rD     r   r  r&  )r!   	jnp_zerosr   r   r   r  )r;   r|  s     r<   test_jnp_zeroszTestBessel.test_jnp_zeros  s    !$$!#u .: .: .: (; (; <=		> 	> 	>
 A&&C--qu======r?   c           
          t          j        dd          }t          |t          g d          t          g d          t          g d          t          g d          fd           d S )NrT   r   rn  r  )"@g+@g-9(1!@gȘ'@g>tA}-@)g0v@gjt@gH.?$@g}"O*@gGŧp0@)r!   
jnyn_zerosr   r   )r;   jnzs     r<   test_jnyn_zeroszTestBessel.test_jnyn_zeros  s     1%%!#u .: .: .: (; (;
 (- .: .: .: (; (;
 (- .: .: .: (; (;
 (- .: .: .: (; (;'<& =>'	? 	? 	? 	? 	?r?   c                     t          j        dd          }t          j        dd          t          j        dd          z
  dz  }t          ||d           d S )NrF   rT   r   rV  )r!   r  r  r   )r;   jvprimjv0s      r<   test_jvpzTestBessel.test_jvp  sN    Qq!!z!Awz!A.1F3r*****r?   c                 z    t          j        d          }t          j        dd          }t          ||d           d S rQ  )r!   r  r  r   )r;   ozkozkrs      r<   r  zTestBessel.test_k0  8    jnnz!BCQ'''''r?   c                 z    t          j        d          }t          j        dd          }t          ||d           d S rQ  )r!   r  r  r   )r;   ozkeozkers      r<   r  zTestBessel.test_k0e  8    {2Ab!!Dq)))))r?   c                 z    t          j        d          }t          j        dd          }t          ||d           d S rW  )r!   r  r  r   )r;   o1ko1krs      r<   r  zTestBessel.test_k1  r  r?   c                 z    t          j        d          }t          j        dd          }t          ||d           d S rW  )r!   r  r  r   )r;   o1keo1kers      r<   r  zTestBessel.test_k1e  r  r?   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           t	          |j        t          ||z   dz   ||z
  g          dz  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           ||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 S )Nr   rT   r   rF   r   r  r   rD   r   rJ   r8  r7  g      H@)rY   r_   r!   jacobir   r'  r   )
r;   r_  r`  P0P1P2P3cpp2cp3cs
             r<   test_jacobizTestBessel.test_jacobi  sr   bi   1$bi   1$^Aa""^Aa""^Aa""^Aa""!"$s2...!"$uac!eAaC['9'9#'=bAAAs1uqs1uoq!A#a%y!A#1Q31>!uRU1RU7]2a5A;r!u#45!"$uSzz#~b999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!"$uSzz$r:::::r?   c                 R    t          j        dd          }t          |dd           d S )Nr   r  _2?r7  )r!   r  r   )r;   kn1s     r<   r  zTestBessel.test_kn  s,    j2C 2155555r?   c                 r    t          t          j        dd          t          j        dd                     d S Nr   r5  r  r   r!   r  r:   s    r<   test_negv_kvzTestBessel.test_negv_kv  s0    WZS))7:dC+@+@AAAAAr?   c                 R    t          j        dd          }t          |dd           d S )Nr   r  r  rV  r!   r  r   )r;   kv0s     r<   test_kv0zTestBessel.test_kv0  s,    j2C!3R88888r?   c                 R    t          j        dd          }t          |dd           d S )NrT   r  gKދ@rV  r  )r;   kv1s     r<   test_kv1zTestBessel.test_kv1  ,    j3C!2B77777r?   c                 R    t          j        dd          }t          |dd           d S )NrF   r  g)lHH@rV  r  )r;   kv2s     r<   test_kv2zTestBessel.test_kv2  r  r?   c                 L    t          t          j        dd          d           d S )N    rT   g.Ք"H)r   r!   r  r:   s    r<   test_kn_largeorderzTestBessel.test_kn_largeorder  s%    
2q))+ABBBBBr?   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((!,,,,,r?   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Cr?   c                 6   t          j        dd          }t          j        dd          t          d          z  }t	          ||d           d}t          j        d|          }t          j        d|          t          |          z  }t	          ||d           d S )Nr   r  r7  ri  )r!   r  r  r   r   )r;   kve1r  rP  kve2r  s         r<   r  zTestBessel.test_kve  s    {1R  j2s2ww&DQ'''{1Qj1ooc!ff$DQ'''''r?   c                 ~    d}t          t          j        d|           t          j        d|d          d           d S )Nr5  rT   r   rb   rV  )r   r!   r  kvp)r;   rP  s     r<   test_kvp_v0n1zTestBessel.test_kvp_v0n1  s=    WZ!__,gk!A.C.C.CRHHHHHr?   c                     d}d}t          j        |dz   |           ||z  t          j        ||          z  z   }t          j        ||d          }t          ||d           d S )Nr   r5  rT   r  rV  r!   r  r  r   r;   rf  rP  xcr  s        r<   test_kvp_n1zTestBessel.test_kvp_n1  sj    j1Q!A#gj1oo"55K!q!!!B2&&&&&r?   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 S )Nr   r5  rF   rT   r  rV  r  r  s        r<   test_kvp_n2zTestBessel.test_kvp_n2  s    d1a4ik1a4'*Qq//1GJqs14E4Ea4GGK1"""B2&&&&&r?   c                 z    t          j        d          }t          j        dd          }t          ||d           d S rQ  )r!   r?  rD  r   rR  s      r<   r@  zTestBessel.test_y0   rU  r?   c                 z    t          j        d          }t          j        dd          }t          ||d           d S rW  )r!   rU  rD  r   rX  s      r<   rB  zTestBessel.test_y1%  rU  r?   c                 l   t          j        d          \  }}t          j        dd          \  }}t          ||f         }t          ||f         }t          t	          t          j        d|                    dd           t          t	          t          j        d|          |z
            dd           d S )NrF   rT   rF  r   rM  )r!   y0_zerosr   r   r^  rG  )r;   yoypozozpor  allvals          r<   test_y0_zeroszTestBessel.test_y0_zeros*  s    !!$$3!!A...3BiCG!#gjS&9&9":":3rBBB!#gj3&7&7&>"?"?BGGGGGr?   c                     t          j        d          }t          |t          dg          t          dg          fd           d S )NrT   r  gѮBO?r   )r!   y1_zerosr   r   )r;   rU  s     r<   test_y1_zeroszTestBessel.test_y1_zeros2  sC    a  !"eWI&6&6ugY7G7G%HKKKKKr?   c                     t          j        dd          }t          |t          dg          t          dg          fd           d S )NrT   r  yL
F%u?!rh?y;OnгY?r   )r!   	y1p_zerosr   r   )r;   y1ps     r<   test_y1p_zeroszTestBessel.test_y1p_zeros6  sV    !,,,!M?##UO+<%=%=>	
 	
 	
 	
 	
r?   c                     t          j        dd          }t          |t          ddg          d           t          j        dd          }t	          |g dd	           d S )
NrD   rF   g3@g(A&"@r   r  )g]E.+"|@gH(|@gff|}@g&b`~@gHO_~@r  rM   )r!   yn_zerosr   r   r   )r;   ans     r<   test_yn_zeroszTestBessel.test_yn_zeros>  s|    a""!"UGW+=%>%>qAAAc!$$ 4 4 4
 #	% 	% 	% 	% 	% 	%r?   c                 X   t          j        dd          }t          |t          ddg          d           t          j        dd          }t	          t          j        d|          dd	           t          j        d
d          }t	          t          j        d
|          dd	           d S )Nr   rF   gQhվ@gzN@rJ   +   r   r  r&  r  r
  )r!   	ynp_zerosr   r   r   r  r;   aos     r<   test_ynp_zeroszTestBessel.test_ynp_zerosI  s    q##!"UJ
+C%D%DQGGGr!$$B++QU;;;;s1%%C,,ad;;;;;;r?   c                 z    t          j        dd          }t          t          j        d|          dd           d S )Nr  r   r   rB  r&  )r!   r  r   r  r  s     r<   test_ynp_zeros_large_orderz%TestBessel.test_ynp_zeros_large_orderQ  s;    s1%%C,,ae<<<<<<r?   c                 R    t          j        dd          }t          |dd           d S NrT   r  5,1
r7  )r!   rD  r   )r;   yn2ns     r<   rE  zTestBessel.test_ynU  s,    z!BD!4Q77777r?   c                 V    t          j        dd          }|t          j         k    sJ d S )NrR   rT   )r8   rD  rY   r   )r;   observeds     r<   test_yn_gh_20405zTestBessel.test_yn_gh_20405Y  s.    9S!$$BF7""""""r?   c                 v    t          t          j        dd          t          j        dd           d           d S r  )r   r!   rG  r:   s    r<   test_negv_yvzTestBessel.test_negv_yv^  r`  r?   c                 R    t          j        dd          }t          |dd           d S r  )r!   rG  r   )r;   yv2s     r<   rH  zTestBessel.test_yva  s,    j2C 3A66666r?   c                 v    t          t          j        dd          t          j        dd           d           d S r  )r   r!   rJ  r:   s    r<   test_negv_yvezTestBessel.test_negv_yvee  rg  r?   c                     t          j        dd          }t          |dd           t          j        dd          t	          d          z  }t          j        dd          }t          ||d           d S )NrT   r  r  r7  ri  rI   )r!   rJ  r   rG  r   )r;   yve2yve2ryve22s       r<   rK  zTestBessel.test_yveh  sk    {1R  D!4Q777
1U##CGG+Ae$$E%*****r?   c                     t          j        dd          t          j        dd          z
  dz  }t          j        dd          }t          ||d           d S )NrT   r  r   r   rF   rV  )r!   rG  r  r   )r;   yvpryvp1s      r<   test_yvpzTestBessel.test_yvpo  sR    
1R  7:a#3#33S8{1R  !$tB/////r?   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        4r7  r  r  r   r   {G(@r  ro  )ir  rI   r   r        i@g     y@g     Ă@g@  i'  Nr   ird  r   )	itertoolsproductr   )r;   rf  rP  s      r<   _cephes_vs_amos_pointsz!TestBessel._cephes_vs_amos_pointst  s       KJJ  $Q********* $S6#r??%:SEBBBBBBBBBBBr?   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 )NrE  u <7~r   )r<  rN   rX   )	r  ro   rY   r  r   r^  r   rO  r   )r;   r  f2rN   rX   r  rf  rP  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; ; ; ;	; 	;r?   ppc64lezfails on ppc64lerH  c                 `    |                      t          j        t          j        dd           d S )NrV   u5% rC  )r  r!   r  r  r:   s    r<   test_jv_cephes_vs_amosz!TestBessel.test_jv_cephes_vs_amos  +     	!!'*gju6!RRRRRr?   c                 `    |                      t          j        t          j        dd           d S )Nr  r  rC  r  r!   rG  rD  r:   s    r<   test_yv_cephes_vs_amosz!TestBessel.test_yv_cephes_vs_amos  r  r?   c                 h    d }|                      t          j        t          j        dd|           d S )Nc                 (    t          |           dk    S )Nr'  )r^  )rf  rP  s     r<   skipperzDTestBessel.test_yv_cephes_vs_amos_only_small_orders.<locals>.skipper  s    q66B;r?   r  r  )rN   rX   r  r  )r;   r!  s     r<   (test_yv_cephes_vs_amos_only_small_ordersz3TestBessel.test_yv_cephes_vs_amos_only_small_orders  sG    	 	 	!!'*gju6'. 	" 	0 	0 	0 	0 	0r?   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>r  rC  )rY   r  r  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 rT   r   rI   rF   r  r  r7  r   r  r  rE  r  gYngH׊>)rY   r_   r`   r  r  r  r/  r  r!   r  r   r^  r   argmaxr   )	r;   Nrf  r  imskr  r  dcrc   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
  r  rC  )r  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Qr?   c                     t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           d S )	Nr   rD   gP?ro  r  g~Omʒ?gY8E@@gKSn)r   r!   r  r:   s    r<   test_ticket_623zTestBessel.test_ticket_623  s_    
1a((*=>>>
3--/ABBB
3	224GHHHHHr?   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 BesselsrI   rT   gl)ܿr!  gPj?gk?g%E*2ig敋?gw--`?gÉB?gW?r  g޴?gz|?a?gpx%?y      ?              ?      ?yYD?`{1wy6x?B]#Ӯ?y ?b>?y.}9d?8kؿy      ?333333?r  y333333?      ?rN  N)r   r!   r  rG  r  r  r  r   rJ  r  r  r  r  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(=(=%==	
 	
 	
 	
 	
r?   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   rI   rT   r   rF   rD   N)r   r   r!   r  r  rG  r  r  r  rJ  r  rA   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Kr?   c                     t          t          j        dd          t          j        k               t          t          j        dd          t          j        k               d S )Nra  r   )r   r!   r  rY   r   r  r:   s    r<   test_gh_7909zTestBessel.test_gh_7909  sJ    
3""bf,---C##rv-.....r?   c                     t          t          j        dd          d           t          t          j        dd          d           dS )zReal-valued Bessel I overflowrT   i  g~rQ   i`  g ?los~Nr   r!   r  r:   s    r<   test_ticket_503zTestBessel.test_ticket_503  sB    
1c**,ABBB
4..0EFFFFFr?   c                 L    t          t          j        dd          d           d S )Nr  rT   r1  r9  r:   s    r<   test_iv_hyperg_poleszTestBessel.test_iv_hyperg_poles  s%    
4++->?????r?      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   rF   r   rT   rI   rV  )r   r  r   r   r!   rs  r   r   r   r^  r*  r   epssumr;   rf  rP  rb   rc   rr   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|r?   c                     dD ]@}|                      d|          \  }}t          t          j        |          |||           Ad S )Nr   r   r
  r   rX   r<  )rC  r   r!   r  r;   rP  valuer   s       r<   test_i0_serieszTestBessel.test_i0_series#  X    ! 	G 	GA1--JE3GJqMM5sAFFFFF	G 	Gr?   c                     dD ]@}|                      d|          \  }}t          t          j        |          |||           Ad S )NrE  rT   rF  )rC  r   r!   r  rG  s       r<   test_i1_serieszTestBessel.test_i1_series(  rJ  r?   c           	          dD ]H}dD ]C}|                      ||          \  }}t          t          j        ||          ||||f           DId S )N)r  r7  r  r   r   r  r  )r   r   r
  y             @rF  )rC  r   r!   r  r;   rf  rP  rH  r   s        r<   test_iv_serieszTestBessel.test_iv_series-  sw    7 	S 	SA, S S!^^Aq11
s
1a 0 0%cAq6RRRRRS	S 	Sr?   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 ]C\  }\  }}t          j        |          t          |           z  }t	          ||dd|z             Dd S )Nr   r   rV   rK  g0oO?r   g!?grb?r  gpH?r   gC~?r   ggo?r7  r:  r;  )r  r!   r  r   r   r;   r   rt   r  rf  r=  s         r<   r  zTestBessel.test_i03  s    *#,%%%%%& #6** 	B 	BIAv1AaR(BAq*q.AAAAA	B 	Br?   c                 z    t          j        d          }t          j        dd          }t          ||d           d S rQ  )r!   r  r  r   )r;   oizeoizers      r<   r  zTestBessel.test_i0eA  r  r?   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 ]C\  }\  }}t          j        |          t          |           z  }t	          ||dd|z             Dd S )Nr   rV   gj|=rK  gȕ![1?r   g;͘?r   gRΜ?r   g|?r   g}f?r7  r:  r;  )r  r!   r  r   r   rQ  s         r<   r  zTestBessel.test_i1F  s    *01%%%%& #6** 	B 	BIAv1AaR(BAq*q.AAAAA	B 	Br?   c                 z    t          j        d          }t          j        dd          }t          ||d           d S rW  )r!   r  r  r   )r;   oi1eoi1ers      r<   r  zTestBessel.test_i1eS  r  r?   c                     t          t          j        d                    }t          |t          ddg          d           d S )Nr   gїJB?@g*u?)r   r!   r  r   )r;   iti0s     r<   r  zTestBessel.test_iti0k0X  sM    W^A&&''!%'9:;;	
 	
 	
 	
 	
r?   c                 n    t          j        d          }t          |t          ddg          d           d S )NrK  gݳɄ|T?gVƥ
@rJ   )r!   r  r   r   )r;   it2ks     r<   r  zTestBessel.test_it2i0k0`  sE    r""!(*<=>>	
 	
 	
 	
 	
r?   c                 r    t          j        dd          t          d          z  }t          |dd           d S )Nr   rK  皙gv M?rV  )r!   r  r   r   )r;   iv1s     r<   r  zTestBessel.test_ivh  s7    j2s3xx'C 3B77777r?   c                 r    t          t          j        dd          t          j        dd                     d S rN  )r   r!   r  r:   s    r<   test_negv_ivezTestBessel.test_negv_ivel  s0    W[1%%w{2a'8'899999r?   c                     t          j        dd          }t          j        dd          t          d          z  }t	          ||d           d S )Nr   rK  r^  rV  )r!   r  r  r   r   )r;   ive1r_  s      r<   r  zTestBessel.test_iveo  sG    {1R  j2s3xx'DR(((((r?   c                 t    t          t          j        dd          t          j        dd          d           d S )NrT   rF   r   rV  )r   r!   r  ivpr:   s    r<   	test_ivp0zTestBessel.test_ivp0t  s0    GJqOOW[1-=-=rBBBBBr?   c                     t          j        dd          t          j        dd          z   dz  }t          j        dd          }t          ||d           d S )Nr   rF   rT   rV  )r!   r  re  r   r  s      r<   test_ivpzTestBessel.test_ivpw  sN    Z!__wz!A.1K!Aa#####r?   )r  r   N)r=  )VrS  rT  rU  r  r  rO  r  r  r  r_  r  rf  r  ru  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r@  rB  r  r  r  r  r  r  rE  r  r  rH  r  rK  r  r  r  r   rV  rW  ro  machiner  r  r"  r$  slowr+  r-  r/  r3  r5  r7  r:  r<  rC  rI  rL  rO  r  r  r  r  r  r  r  ra  r  rf  rh  rX  r?   r<   rH  rH  %  s       
 
 

 
 
8 8 8& & &
& & &
9 9 9D D D	B 	B 	BF F F- - -L L L8G G G$L L L> > >? ? ?.+ + +
( ( (
* * *
( ( (
* * *
; ; ;$6 6 6B B B9 9 98 8 88 8 8C C C- - -D D D( ( (I I I' ' '' ' '& & &
& & &
H H HL L L
 
 
	% 	% 	%< < <= = =8 8 8# # #
D D D7 7 7F F F+ + +0 0 0

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B B B* * *
B B B* * *

 
 

 
 
8 8 8: : :) ) )
C C C$ $ $ $ $r?   rH  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           t          |j        ddgd           t          |j        t	          g d	          d
z  d           t          |j        t	          g d          dz  d           t          |j        t	          g d          dz  d           t          |j        t	          g d          dz  d           d S )Nr   rT   rF   r   rD   r   r  rI   )rT   rv  rF   r   )rI   r  irJ   rD  )rT   iH   ir  rl  )rI   r  i8iX  ir  r  )r!   laguerrer   r'  r   )r;   lag0lag1lag2lag3lag4lag5s          r<   test_laguerrezTestLaguerre.test_laguerre~  s/   """"""""""""!$&!R000!$&"Q333!$&xxx)<R@@@!$&|||)<)<S)@DDD!$&/@/@/@)A)A$)FrJJJ!$&/H/H/H)I)I%)OPRSSSSSr?   c                 X   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             t          |j        t          dd|dz   z  d|dz   z  |dz   z  |dz   |dz   z  |dz   z  g          dz             d S )Nr   r  r   rT   rF   r   rI   r!  r   r   rA  rD  )rY   r_   r!   r  r   r'  r   r   )r;   rc   rp  rq  rr  rs  s         r<   test_genlaguerrezTestLaguerre.test_genlaguerre  s@   bi   3&"1Q''"1Q''"1Q''"1Q''TVaS!!!TVb!a%[)))F1R1Xqtadm,--c1	
 	
 	
 	F2a1gb!A#h!nacAaC[!A#->?@@D	
 	
 	
 	
 	
r?   N)rS  rT  rU  rv  rx  rX  r?   r<   rl  rl  }  s5        T T T
 
 
 
 
r?   rl  c                       e Zd Zd Zej                            dg d          ej                            dg d          ej                            dg d          d                                     Zd	S )
TestLegendrec                    t          j        d          }t          j        d          }t          j        d          }t          j        d          }t          j        d          }t          j        d          }t          |j        dg           t          |j        ddg           t	          |j        t          g d          dz  d	
           t	          |j        t          g d          dz             t	          |j        t          g d          dz             t	          |j        t          g d          dz             d S )Nr   rT   rF   r   rD   r   )r   r   rI   r   r  r  )r   r   rA  r   )r  r   r?  r   r   r   )?   r   ir   rv   r   )r!   legendrer   r'  r   r   )r;   leg0leg1leg2leg3leg4leg5s          r<   test_legendrezTestLegendre.test_legendre  s$   """"""""""""TVaS!!!TVaU###DFE(((OOC$7DDDDDFE***$5$5c$9:::DFE...$9$9#$=>>>DFE*;*;*;$<$<S$@AAAAAr?   rb   )rT   rF   r   rD   r   zr)g?g{ɚ)@gue#gbLd?g7f?zi)go^#@g"1?g7ܘ~ @g^26g6n"c                     t          j        |||dz  z             }t          j        d|||dz  z             }t          |d         |d         d                    t          |d         |d         d                    d S )NrN  r   rT   )r!   lpnclpmnr   )r;   rb   r  r  reslpnresclpmns         r<   test_lpn_against_clpmnz#TestLegendre.test_lpn_against_clpmn  sv     QRU
++=Ar"R%x00q	8A;q>222q	8A;q>22222r?   N)rS  rT  rU  r  r   rV  r  r  rX  r?   r<   rz  rz    s        B B B [S///22[T $: $: $: ; ;[T $0 $0 $0 1 13 31 1; ; 32
3 3 3r?   rz  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 S )NrT   rK  r   rF   r!  r   r7  )r!   lmbdar   r  r  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
 	"#d1-----r?   N)rS  rT  rU  r  rX  r?   r<   r  r    s#        . . . . .r?   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 S )NrV  rM  r8  r  r7  r!   r"  r   r   )r;   l1pl1prls      r<   r#  zTestLog1p.test_log1p  sb    }R  '-"3"3W]25F5FGR#b''3r77+!#eA.....r?   c                     t          j        d          t          j        d          t          j        d          f}t          d          t          d          t          d          f}t          ||d           d S )NrT   r  r?  rF   r4  r5  r7  r  )r;   l1pml1pmrls      r<   test_log1pmorezTestLog1p.test_log1pmore  sb    a  '-"4"4gmC6H6HIa&&S#c((+!$va00000r?   N)rS  rT  rU  r#  r  rX  r?   r<   r  r    s2        / / /
1 1 1 1 1r?   r  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ej                            dej        ej        g          ej                            dg d          ej                            dddg          ej                            dddg          ej                            dg d          d                                                             Zej                            dej        g          ej                            dg d          ej                            dddg          ej                            dg d          d                                                 Zej                            dej        ej        g          ej                            dg d          ej                            dg d          d                                     ZdS )TestLegendreFunctionsc                    d}t          j        dd|d          }t          |t          d|dd|z  |z  dz
  z  gdt	          ||z  dz
            d|z  t	          ||z  dz
            z  gddd||z  dz
  z  gg          t          ddd|z  gd|t	          ||z  dz
            z  dd|z  |z  dz
  z  t	          ||z  dz
            z  gddd|z  gg          fd	           d S )
Ny      ?333333?rF   r   r   r   rT   r   rJ   rH   )r!   r  r   r   r   )r;   rP  clps      r<   
test_clpmnz TestLegendreFunctions.test_clpmn  s!   mAq!Q''!#FAsAaCE!G}5"D1QKK1T!A#a%[[A"FAqs1uI68 9 9 FFAaC0"Ad1Q3q5kkM1ac!eAg;tAaCE{{3JK"FAaC02 3 34 	 	 	 	 	r?   c                 p   d}d}d}d}t          j        |||d|z  z   d          d         ||f         }t          j        |||d|z  z
  d          d         ||f         }t          t          ||g          t          t          j        |||          t          j        |||          g          d           d S )	NrV   rT   r   r   rN  rF   r   rH   )r!   r  r   r   r+  r;   r?  r;  rb   r  clp_plus	clp_minuss          r<   test_clpmn_close_to_real_2z0TestLegendreFunctions.test_clpmn_close_to_real_2  s    =AqCx33A6q!t<M!Q"S&!44Q71=	!%9(=">">"'aA)>)>)0aA)>)>)@ #A #A"#	% 	% 	% 	% 	%r?   c                    d}d}d}d}t          j        |||d|z  z   d          d         ||f         }t          j        |||d|z  z
  d          d         ||f         }t          t          ||g          t          t          j        |||          t          j        d|z  t
          j        z            z  t          j        |||          t          j        d|z  t
          j        z            z  g          d	           d S )
NrV   rT   r   r   rN  r   y                           ?rH   )r!   r  r   r   r+  rY   r   r   r  s          r<   test_clpmn_close_to_real_3z0TestLegendreFunctions.test_clpmn_close_to_real_3  s   =AqCx33A6q!t<M!Q"S&!44Q71=	!%9(=">">"'aA)>)>rveAgbem?T?T)T)0aA)>)>rvd1fRUl?S?S)S)U #V #V"#	% 	% 	% 	% 	%r?   c                     d}d}d}d}dD ]e}t          t          j        |||d|z  z   |          d         ||f         t          j        |||d|z  z
  |          d         ||f         d           fd S )Nr  rT   rN  rF   r   r   rJ   )r   r!   r  )r;   r?  r;  rb   r  r  s         r<   test_clpmn_across_unit_circlez3TestLegendreFunctions.test_clpmn_across_unit_circle  s     	M 	MDaAbfHd C CA Fq!t L#M!Q"S&$??B1a4H!M M M M	M 	Mr?   c                    dD ]}t          d          D ]}t          d|          D ]}t          j        |||          }t          t	          j        |d         ddd f                                                              t          j        |||          }t          t	          j        |d         ddd f                                                              Ȍd S )N)rT   rI   rD   rT   )rp   r!   r  r   rY   r  r  lpmn)r;   rP  rb   r;  lps        r<   test_infzTestLegendreFunctions.test_inf  s     	9 	9A1XX 9 9q! 9 9A q!Q//BBHRU1QRR4[115577888 aA..BBHRU1QRR4[1155778888	99	9 	9r?   c                 "   g d}d}d}dD ]}|D ]~}dD ]y}t          j        |||d|z  z   |          d         t          j        |||d|z  z
  |          d         z
  |z  }t          t          j        ||||          d         |d	
           zd S )N)r(  y            ?y            y      ?      r2  r  r  r  rF   r   r  )r   y        MbP?r   r   rT   re  rM   )r!   r  r   )r;   zvalsr;  rb   r  rP  happrox_derivatives           r<   test_deriv_clpmnz&TestLegendreFunctions.test_deriv_clpmn  s    + + + 	/ 	/D / /& / /A)0q!Qs1uWd)K)KA)N+2=AqQw+M+Ma+P*QRS)T%#GM!Q4$@$@$C$5)-/ / / / ///	/ 	/r?   c                     t          j        ddd          }t          |t          g dg          t          g dg          fd           d S )Nr   rF   r   r   r         r   r   ra  rD   )r!   r  r   r   r;   r  s     r<   	test_lpmnzTestLegendreFunctions.test_lpmn  s    \!Ab!!!"e .@ .@ .@ -A 'B 'B ', .? .? .? -@ 'A 'A&B
 CD	E 	E 	E 	E 	Er?   c                     t          j        dd          }t          |t          g d          t          g d          fd           d S )NrF   r   r  r  rD   )r!   r  r   r   )r;   lpnfs     r<   test_lpnzTestLegendreFunctions.test_lpn  s    {1R  !$ /B /B /B )C )C ', -? -? -? '@ '@(A
 BC	D 	D 	D 	D 	Dr?   c                 v   t          j        ddd          }t          |dd           t          j        ddd          }t          |dd           t          j        d	
          5  t          j        ddd          }d d d            n# 1 swxY w Y   t          |dk    pt          j        |                     d S )Nr   rF   r   r  rH   (   r   gI?r  r  rI   )r!   r+  r   rY   r  r   r   r  s     r<   r,  zTestLegendreFunctions.test_lpmv(  s    \!Ab!!Bva(((\!Bt$$B1!444 [X&&& 	* 	*bD))B	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*a'28B<<(((((s   $BBBc                     t          j        ddd          }t          j        dd          }t          |d         d         |d         d           t          |d         d         |d         d           d S )Nr   rF   r   rD   rT   )r!   lqmnlqnr   )r;   lqmnflqfs      r<   	test_lqmnzTestLegendreFunctions.test_lqmn4  sh    Qq$$k!B!%(1+c!fQ777!%(1+c!fQ77777r?   c                     d}d}||z
  ||z   fD ]?}t          j        dd|          d         d         }d||z  dz
  z  }t          ||           @dS )znalgorithm for real arguments changes at 1.0001
           test against analytical result for m=2, n=1
        gqh ?h㈵>rF   rT   r   )rI   rI   N)r!   r  r   )r;   x0deltar  lqrQ  s         r<   test_lqmn_gt1z#TestLegendreFunctions.test_lqmn_gt1:  su     U(BuH% 	. 	.AaA&&q)&1B!A#a%yHH----	. 	.r?   c                    t          j        ddd          \  }}t          |j        d           t          |j        d           t          j        ddd          \  }}t          |j        d           t          |j        d           d S )NrD   r  )r   r   r   )r   rT   )r!   r  r   r  )r;   r_  r`  s      r<   test_lqmn_shapez%TestLegendreFunctions.test_lqmn_shapeE  s~    |Aq#&&1QWf%%%QWf%%%|Aq#&&1QWf%%%QWf%%%%%r?   c                     t          j        dd          }t          |t          g d          t          g d          fd           d S )NrF   r   )gk+ݓ?g=yX5gW2)g|a2U?g~jt?gڊerD   )r!   r  r   r   )r;   r  s     r<   test_lqnzTestLegendreFunctions.test_lqnN  sb    k!B!#u-G-G-G'H'H',-E-E-E'F'F'HHI	K 	K 	K 	K 	Kr?   functionrb   )rT   rF   rD   r7     r  	z_complexFT	z_inexactinput_shape)rX  r^  rF   rF   rT   rT   rF   rF   rF   rF   rF   rT   )rF   rF   rF   c                 2   t           j                            d          }|r|                    dd|          }n|                    dd|          }|rd|z  d|z  z   } |||          \  }}	|j        |dz   f|z   k    sJ |	j        |dz   f|z   k    sJ d	S )
z Tests for correct output shapes.rO   rA  r   r&  rI   rT   rN  r  NrY   r_   default_rngintegersuniformr  )
r;   r  rb   r  r  r  rngrP  P_zP_d_zs
             r<   test_array_inputs_lxnz+TestLegendreFunctions.test_array_inputs_lxnS  s     i##D)) 	5R55AAB44A 	"Q!AXa^^
UyQUI33333{q1ui+5555555r?   zm,n)r{   r  )rT   rD   )r   r7  )rM  r  )r  r  )rX  r^  r  r  r  r  r  c                 *   t           j                            d          }|r|                    dd|          }n|                    dd|          } ||||          \  }}	|j        |dz   |dz   f|z   k    sJ |	j        |dz   |dz   f|z   k    sJ dS )+Tests for correct output shapes and dtypes.rO   rA  r   r&  rI   rT   Nr  )
r;   r  r;  rb   r  r  r  rP  r  r  s
             r<   test_array_inputs_lxmnz,TestLegendreFunctions.test_array_inputs_lxmnl  s     i##D)) 	5R55AAB44AXaA&&
UyQUAEN[88888{q1ua!en{:::::::r?   c                 
   t           j                            d          }|                    dd|          }d|z  d|z  z   } ||||          \  }}|j        |dz   |dz   f|z   k    sJ |j        |dz   |dz   f|z   k    sJ dS )r  rO   rI   rT   r&  rN  r  N)rY   r_   r  r  r  )	r;   r  r;  rb   r  r  rP  r  r  s	            r<   test_array_inputs_clxmnz-TestLegendreFunctions.test_array_inputs_clxmn  s     i##D))KKAKK00FTAXXaA&&
UyQUAEN[88888{q1ua!en{:::::::r?   N)rS  rT  rU  r  r  r  r  r  r  r  r  r,  r  r  r  r  r   rV  r  r!   r  r  r  r  r  r  r  rX  r?   r<   r  r    s       
 
 

% 
% 
%
% 
% 
%M M M9 9 9/ / /E E ED D D
) 
) 
)8 8 8	. 	. 	.& & &K K K
 [Z'+w{)CDD[S"6"6"677[[5$-88[[5$-88[	
 	
 	
 6 6  98 98 87 ED6 [Z',88[<<<  [[5$-88[ 
 
 
 

; 
;  98	  98
; [Z'-)FGG[<<<  [ 
 
 
 
; ; 	  HG; ; ;r?   r  c                        e Zd Zd Zd Zd ZdS )TestMathieuc                     d S r  rX  r:   s    r<   r/  zTestMathieu.test_mathieu_a  r  r?   c                 0    t          j        dd           d S )NrF   r   )r!   r+   r:   s    r<   test_mathieu_even_coefz"TestMathieu.test_mathieu_even_coef  s    !!A&&&&&r?   c                     d S r  rX  r:   s    r<   test_mathieu_odd_coefz!TestMathieu.test_mathieu_odd_coef  s    r?   N)rS  rT  rU  r/  r  r  rX  r?   r<   r  r    sA          ' ' '    r?   r  c                       e Zd Zd Zd ZdS )TestFresnelIntegralc                     d S r  rX  r:   s    r<   rn  z$TestFresnelIntegral.test_modfresnelp  r  r?   c                     d S r  rX  r:   s    r<   rj  z$TestFresnelIntegral.test_modfresnelm  r  r?   N)rS  rT  rU  rn  rj  rX  r?   r<   r  r    s2              r?   r  c                       e Zd Zd ZdS )TestOblCvSeqc                 r    t          j        ddd          }t          |t          g d          d           d S )Nr   r   rT   )g~T~Oֿgt_J?gm{@g@j'&@r   )r!   
obl_cv_seqr   r   )r;   obls     r<   test_obl_cv_seqzTestOblCvSeq.test_obl_cv_seq  sT     1Q''!#e -9 -9 -9 ': ': ;<	= 	= 	= 	= 	=r?   N)rS  rT  rU  r  rX  r?   r<   r  r    s#        = = = = =r?   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 S )NrT   rK  gQ?gx$(~?gx$(~g(\?rD   )r!   pbdn_seqr   r   )r;   pbs     r<   test_pbdn_seqz#TestParabolicCylinder.test_pbdn_seq  si    a##!"eV.4-6 '7 '7&+W-3-5 '6 '6&7 89	: 	: 	: 	: 	:r?   c                     t          j        dd           dt          j        dd          d         z  t          j        dd          d         z
   d S )NrT   r  rK  r   )r!   r  r:   s    r<   r  zTestParabolicCylinder.test_pbdv  sL    Qra##A&&a););A)>>>>>r?   c                     t          j        dd          }t          j        dd          }t          |t	          |d                   t	          |d                   fd           d S )NrT   rK  r   rD   )r!   r  pbdv_seqr   r   )r;   pbnpbvs      r<   test_pbdv_seqz#TestParabolicCylinder.test_pbdv_seq  sW    q$$q$$!#tCF||DQLL&A!DDDDDr?   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  rV  r   rF   r   r   r   rB  rC  gGz$@gq=
ףp4@gHQ9r|   rM   g(\#gQ@gkS a>)rY   rS  r   r   r!   rm  r   r  )r;   etarP  s      r<   test_pbdv_pointsz&TestParabolicCylinder.test_pbdv_points  s    k#r1%%AJrwru~~%gmBr#vI&>&>>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Wr?   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 Nrv  rD   r7  r  rV  r   r  r   r   rT   rU  rC  )rY   rS  r!   r  r^  r   r;   r  r  r^  r?  dps         r<   test_pbdv_gradientz(TestParabolicCylinder.test_pbdv_gradient      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7r?   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  )rY   rS  r!   r  r^  r   r  s         r<   test_pbvv_gradientz(TestParabolicCylinder.test_pbvv_gradient  r  r?   c                     t          j        dd          \  }}t          |t          j        g d                     t          |t          j        g d                     d S )NrF   r   )g:4@g1{н?g7,%n?)gX@g=<'?gʠ?)r!   pbvv_seqr   rY   r   )r;   res1res2s      r<   test_pbvv_seqz#TestParabolicCylinder.test_pbvv_seq  s    %a++
dbh (< (< (< = = 	> 	> 	> 	bh (; (; (; < < 	= 	= 	= 	= 	=r?   N)
rS  rT  rU  r   r  r  r	  r  r  r  rX  r?   r<   r  r    s        : : :? ? ?E E E
X X X8 8 88 8 8= = = = =r?   r  c                       e Zd Zd ZdS )TestPolygammac           	         t          j        dd          }t          j        dd          }t          |dd           t          |dd           g d}t          t          j        d|          t          j        |                     g d	}g d
}g d}t          t          j        ||          |           t	          j        |gdz            }t          t          j        |t	          j        |gdz                      |           t          t          j        t	          j        |gdz            |          |           d S )NrF   rT   r   gX];rV  gOV,@@)rF   r   g  8Br   r  r   )g2}jg.M?g}2;ο)r!   	polygammar   r  rY   r"  )r;   poly2poly3r  rb   rQ  s         r<   test_polygammazTestPolygamma.test_polygamma  sC   !!A&&!!A&&E-333E,r222 NNG-a33W[^^DDD IIOO* * *G-a33X>>>9hZ\**G-aA3q51A1ABB$	& 	& 	&G-biA.>.>BB$	& 	& 	& 	& 	&r?   N)rS  rT  rU  r  rX  r?   r<   r  r    s#        & & & & &r?   r  c                       e Zd Zd ZdS )TestProCvSeqc                 r    t          j        ddd          }t          |t          g d          d           d S )Nr   r   rT   )g"~j?g6?Ң@g)u8F"@g2g)@r   )r!   
pro_cv_seqr   r   )r;   prols     r<   test_pro_cv_seqzTestProCvSeq.test_pro_cv_seq
  sT    !!Aa((!$u .: .: .: (; (; <=	> 	> 	> 	> 	>r?   N)rS  rT  rU  r#  rX  r?   r<   r  r  	  s#        > > > > >r?   r  c                       e Zd Zd ZdS )TestPsic                 P    t          j        d          }t          |dd           d S )NrT   goxr7  )r!   r  r   )r;   pss     r<   r  zTestPsi.test_psi  s(    [^^B3A66666r?   N)rS  rT  rU  r  rX  r?   r<   r%  r%    s#        7 7 7 7 7r?   r%  c                       e Zd Zd Zd ZdS )
TestRadianc                 d    t          j        ddd          }t          |t          dz  d           d S )Nr  r   r   r   r!   r  r   r   )r;   rads     r<   r  zTestRadian.test_radian  s1    nR!$$C3q)))))r?   c                 j    t          j        ddd          }t          |t          dz  dz   d           d S )Nr  rT   rd  rF   gC?r   r+  )r;   rad1s     r<   test_radianmorezTestRadian.test_radianmore  s7    ~b2&&DA&;!;A>>>>>r?   N)rS  rT  rU  r  r/  rX  r?   r<   r)  r)    s2        * * *? ? ? ? ?r?   r)  c                       e Zd Zd Zd ZdS )TestRiccatic                 .   d\  }}t          j        ||f          }t          |          D ]E}t          j        ||          }t          j        ||d          }||z  |d|f<   ||z  |z   |d|f<   Ft          |t          j        ||          d           d S N)rF   r  T)
derivativer   rT   r7  )rY   emptyrp   r!   spherical_jnr   
riccati_jn)r;   r(  r  Srb   r  jps          r<   test_riccati_jnzTestRiccati.test_riccati_jn#      1HaVq 	 	A$Q**A%at<<<BqSAacFrTAXAacFF!!W%71%=%=qAAAAAr?   c                 .   d\  }}t          j        ||f          }t          |          D ]E}t          j        ||          }t          j        ||d          }||z  |d|f<   ||z  |z   |d|f<   Ft          |t          j        ||          d           d S r3  )rY   r5  rp   r!   spherical_ynr   
riccati_yn)r;   r(  r  Crb   r   yps          r<   test_riccati_ynzTestRiccati.test_riccati_yn-  r;  r?   N)rS  rT  rU  r:  rA  rX  r?   r<   r1  r1  "  s:        B B BB B B B Br?   r1  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$@r9  g333333%@)rV  rV  rV  rM  )r(  mapro   r!   r  r   )r;   rndrndrls      r<   r  zTestRound.test_round9  st    3sW]400$]400$]400$]4002 3 3 4 4 3u%%%%%r?   N)rS  rT  rU  r  rX  r?   r<   rC  rC  8  s#        & & & & &r?   rC  c            	      &   t           j        } t          j        }t          j        }t          j        }t          j        }t          j        }t           | dddd          d ||          z             t           | ddd|dz            d |dd	|z  z            z   ||dz            d	z  z             t           | ddd|dz            d |dd	|z  z            z             t           | dd||dz            d |d
d	|z  z            z   |dd	|z  dz  z             z   ||d	z            d	z  z             t           | dd|dz  |dz            d |dd	|z  z            z   |dd	|z  dz  dz  z             z   ||dz            d	z  z  d ||dz            d	z  z  dz
  z             t           | dd|dz  |dz            d |dd	|z  z            z   |dd|z  dz  dz  z             z   ||dz            dz  z             d S )Nr   r   r!  rF   r   rD   r9  r	  r   rv   rN  r>  r   r   r   g      @rT   r   rD  g      ?g     A@)	r!   sph_harmrY   r   r   r   r	   r
   r   )shr   r   r   r	   r
   s         r<   test_sph_harmrK  H  s    
	B	B
&C7D
&C
&Cbb1QqkkttBxx<  bbAbA..S"R%[!!!C1II?   bbAbA..S"R%[!!!# # #bb1R1ooRBZ   3qBrz??3r"u::r>*+ + + bb1RU2b51144BrE
###3qBr"}3r"u::r> ss2b5zz2~a!" " "
 bb1RU2b511DDbe%%%3qBr"}!c"R%jj"n-. . . . .r?   c                  J   t          j        t           j                  } t          t	          j        dddd          j        |            t          t	          j        dgddd          j        |            t          t	          j        ddgdd          j        |            t          t	          j        dddgd          j        |            t          t	          j        ddddg          j        |            t          t	          j        dgdgdgdg          j        |            d S r7   )rY   rY  r  r   r!   rI  )dts    r<   "test_sph_harm_ufunc_loop_selectionrN  e  s   	"-	 	 B!!Q1--3R888!1#q!Q//5r:::!!aS!Q//5r:::!!QQ//5r:::!!QA3//5r:::!1#sQC!55;R@@@@@r?   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   rI   r   rF   rT   ra  )	r   r!   rm  r^  r*  r   r   r?  r@  rA  s          r<   _serieszTestStruve._seriesq  s    1aLL!Gr!tqs1uQw''ae(<(<<W]1Q3s7=S=SS!ffjjllU6]]..2uuww|r?   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  rI   r   rT   r  r  r  )rT   rV  r  rN  rP   r   rC  N)rR  r   r!   r6  rN  s        r<   test_vs_serieszTestStruve.test_vs_seriesx  s    B 	W 	WA( W W!\\!Q//
sq! 4 4e!#NNNQRTUPVVVVW	W 	Wr?   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 )NrT  rN  g;cv=?r  rM   gQ g< j?rc  r  r=  g?r|   g       igzz?r  i)   r8  r	  rM  gffffffrI   g333333$)r   r!   r6  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1r?   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!   r6  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 	9r?   N)r>  )rS  rT  rU  rR  rU  rX  rZ  rX  r?   r<   rP  rP  p  sX           W W W2 2 29 9 9 9 9r?   rP  c                  L    t          t          j        dd          d           d S )Nr"  r   gdX	
?)r   r!   r   rX  r?   r<   test_chi2_smalldfr\    s%    c!,,.?@@@@@r?   c                  `    t          t          j        dt          j                  d           d S )Nr/  r   )r   r!   r   rY   r   rX  r?   r<   test_ch2_infr^    s&    s26**C00000r?   c                  L    t          t          j        dd          d           d S )Nr"  r   yj_?)r   r!   r   rX  r?   r<   test_chi2c_smalldfra    s%    s1--/BCCCCCr?   c                  L    t          t          j        dd          d           d S )Nr"  r`  r   )r   r!   r   rX  r?   r<   test_chi2_inv_smalldfrc    s%    s+>??CCCCCr?   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 )'NrL   rT   rF   gDSYC?rM   gQ_?g?@g>;,
i}@r   )rT   r   r   g=O?rI   r!  r  rJ   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   c   rV  )r   r!   agmrY   r   r   r  r*  r   r   r   )rN   agm13agm15agm35agm12fis         r<   test_agm_simplerl    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3r?   c            	      b   t                      5 } |                     t          d           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  rT   rL  g?rF   gffffff@)r    r%  r&  r   r!   expnrv  rs  ry  r  r  rD  r  r#  )r(  s    r<   test_legacyro    s   			 
K

>#RSSS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(+H(c                  R    t          t          j        t          j        dd           d S )NrT   y        .B}T)r#  r!   r  r  rX  r?   r<   test_error_raisingrq    s!    '.
AuEEEEEr?   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   )rY   r  r   r   r  s     r<   xfuncztest_xlogy.<locals>.xfunc  s    [*** 	# 	#Avvbhqkkv	# 	# 	# 	# 	# 	# 	# 	# {		# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#   A"A""A&)A&r   r   r   r   r   rX  )r   rN  )rT   rN  rT   rL   rC  )
rY   r   r   r   rq   r   rw   r2   r!   xlogy)rv  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Dr?   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 rt  )rY   r  r   r"  r  s     r<   rv  ztest_xlog1py.<locals>.xfunc	  s    [*** 	' 	'Avvbhqkkv	' 	' 	' 	' 	' 	' 	' 	' 28A;;		' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'rw  rx  r   ry  )rT   gKH9rX  rT   rL   rC  )	rY   r   r   r   rq   rw   r2   r!   xlog1py)rv  r{  r}  s      r<   test_xlog1pyr    s    ' ' ' 
UQK!RVj!(-
/ 
/ 
/B	e		R!Wb1g	.	.Bgor2EFFFFFFr?   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 r7   )rY   r   r!   rz  )r  s    r<   rv  ztest_entr.<locals>.xfunc  s)    q55F7NM!Q''''r?   r   r   r   rI   rT   rX  otypesrL   rC  )rY   r   r  r  r  r   rq   rw   r  r2   r!   entr)rv  r   signsr  sgnrf  rP  rQ  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Ar?   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 r7   )rY   r   isposinfr!   rz  r  s     r<   rv  ztest_kl_div.<locals>.xfunc'  s~    q55AEEa1ffa6M[^^ 	1r{1~~ 	16M!VVH=AaC((1,q00r?   r   r   r   rI   rT   rX  r  r   rL   rC  )r  r  r  rY   r   rq   rw   r  r2   r!   kl_div
rv  r   r  r  sgnavasgnbvbrP  rQ  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Cr?   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 r7   )r!   rz  rY   r   r  s     r<   rv  ztest_rel_entr.<locals>.xfunc=  sF    q55QUU=AaC(((!VVQ16Mr?   r  rI   rT   rX  r  r   rL   rC  )r  r  r  rY   r   rq   rw   r  r2   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Er?   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 )NrI   ra  rF   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   )rY   r   r^  squarer  rB  s     r<   rv  ztest_huber.<locals>.xfuncS  sT    1996MVAYY1%%BF1IIe344r?   rV  r  r   rT   rL   rC  )r   r!   huberrY   r   r   r  r_   randnrw   r  r2   rv  rP  rQ  s      r<   
test_huberr  N  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Br?   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   rF   rT   )rY   r   r   r  s     r<   rv  z test_pseudo_huber.<locals>.xfunca  sQ    1996M 	> 	>1!8rwqAeGa<'7881<==r?   rV  rF   r   r   r  rT   rL   rC  )
rY   r   r_   r  tolistrw   r  r2   r!   pseudo_huberr  s      r<   test_pseudo_huberr  `  s    > > > 	Q''..00QHsAh3GGHHA0UBJ<000111Q3111Q3@@Ag*Aqu5IIIIIIr?   c                  `    d} d}t          j        | |          }d}t          ||d           d S )Nr   gC]r2<gs.-De8rL   rM   )r!   r  r   )r  rB  r   rQ  s       r<   test_pseudo_huber_small_rr  n  s@    EAUA&&A &HAxe,,,,,,r?   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   rQ   )r   warnsr&  r*   r+   rX  r?   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 )'TestStirling2rT   r   )r   rT   rT   )r   rT   r   rT   )r   rT   rH   rJ   rT   )r   rT   rv   r  rV  rT   )r   rT      r  A   rv   rT   )r   rT   r|  ro  i^     rN  rT   )	r   rT      i  i    i
     rT   )
r   rT      i  iZ  i'  iV
  i  $   rT   )r   rT   rz   r$  i9  i  i+Y    i  r   rT   zis_exact, comp, kwargsTFrN   r|   c           	          t          dt          | j                            D ]I}t          t          |dz                       }| j        |         } ||t	          |g||          fi | Jd S )NrT   r  )rp   r  tabler(  r,   )r;   is_exactcompkwargsrb   k_valuesrows          r<   test_table_caseszTestStirling2.test_table_cases  s    
 q#dj//** 	J 	JAE!A#JJ''H*Q-CDiXX>>>II&IIII	J 	Jr?   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  rD   rF   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Ar?   c                      |t          dd|          dfi |  |t          dd|          dfi |  |t          dd|          dfi | d S )NrI   r  r   rF   r,   r  s       r<   test_negative_integerz#TestStirling2.test_negative_integer  s     	Yr2X...<<V<<<Yr1H---q;;F;;;Yq"H---q;;F;;;;;r?   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 )NrV  r   rD   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%-/ / / 	 	 	 	 	r?   rL   c                 R    g d}g d}g d} |t          |||          |fi | d S )N)r   rT   r   r  r  r  r  )rI   r   r   r   r7  rV  rV  )r!  r   rF   r   r   rH   r   r  r  r;   r  r  r  r  rb   rc   s          r<   test_mixed_valueszTestStirling2.test_mixed_values  sT     .--$$$"""Yq!8,,,c<<V<<<<<r?   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  rF   c                 X    g | ]&}t          j        |d z  z
  dz
  |z
            d z  'S r  )r_  r#  )r$  rc   rb   s     r<   r%  z5TestStirling2.test_correct_parity.<locals>.<listcomp>  s;    ???TYqAF|a'Q//!3???r?   N)rY   r   r   r,   )r;   Krb   s     @r<   test_correct_parityz!TestStirling2.test_correct_parity  sb    
 BIcNN1a$'''!+????Q???	
 	
 	
 	
 	
r?   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  rP   rE   rD   Tr  l	   D,"SBXp!N l   wY)H_1e_*   r     )r   r   r,   )r;   r  rb   rc   s       r<   test_big_numberszTestStirling2.test_big_numbers  s    ~'89::HG9Q666<<<<<<:< = =HH9Q666<<<<<<<r?   r(  r6  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  )r   r   	TypeErrorr,   )r;   r(  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 )NrD   rT   rD   rD   rD   rD   rX  rT   rF   r   rD   r  )r   r  rZ  r   r   r  r   r,   )r;   r  r  rb   rc   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 )NrD   rT   r  rX  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9r?   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)rT   rv   r  rV  )rT   rH   rJ   rT   )r   r   r   r   r  r  r  rD   )r   rT   rF   r   rD   r   c                     g | ]}g d S ))r   rT   rH   rJ   rT   r   rX  )r$  rr  s     r<   r%  zDTestStirling2.test_broadcasting_arrays_correctly.<locals>.<listcomp>  s    <<<a)))<<<r?   r   F)r   r,   rp   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9r?   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   rT   Tr  Fr  )r(  rp   r,   rY   r*  r^  )r;   r  rb   	k_entriesdenomrr   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 	6r?   N)rS  rT  rU  r  r   rV  r  r   r   r  r  r  r  r  r  r  rY   r   r  r  r  r  r  rX  r?   r<   r  r    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 6r?   r  )~r  r  r  ro  rn  numpyrY   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r#  numpy.testingr   r   r   r   r   r   r   r   r    scipyr!   scipy.special._ufuncs_ufuncsr8   scipy.specialr"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   scipy._lib._utilr-   r.   scipy.special._basicr/   r0   scipy.special._testutilsr1   r2   r3   r_  r5   rZ  r  r  r  r  r  r  r  rH  r|  r  r  r  r  r  r$  r:  r  r  r  r  rH  rl  rz  r  r  r  r  r  r  r  r  r  r%  r)  r1  rC  rK  rN  rP  r\  r^  ra  rc  rl  ro  rq  r  r  r  r  r  r  r  r  r  r  rX  r?   r<   <module>r     s
  (           



                                                 * * * * * *                     
       & & & & & & & & & 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 . . . . . . . .       ! ! ! ! ! ! ! ! ! ! i9 i9 i9 i9 i9 i9 i9 i9XyG yG yG yG yG yG yG yGx. . . . . . . .       
V> V> V> V> V> V> V> V>r9 9 9 9 9 9 9 90 0 0 0 0 0 0 0<g' g' g' g' g' g' g' g'TB/ B/ B/ B/ B/ B/ B/ B/JB+ B+ B+ B+ B+ B+ B+ B+J: : : : : : : ::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/ / / / / / / /@N- N- N- N- N- N- N- N-bA. A. A. A. A. A. A. A.H/, /, /, /, /, /, /, /,d /  /  /  /  /  /  /  /F\6 \6 \6 \6 \6 \6 \6 \6~U	$ U	$ U	$ U	$ U	$ U	$ U	$ U	$p
 
 
 
 
 
 
 
D3 3 3 3 3 3 3 36. . . . . . . .	1 	1 	1 	1 	1 	1 	1 	1F; F; F; F; F; F; F; F;R              = = = = = = = =4= 4= 4= 4= 4= 4= 4= 4=n& & & & & & & &2> > > > > > > >7 7 7 7 7 7 7 7? ? ? ? ? ? ? ?B B B B B B B B,& & & & & & & & . . .:A A A#9 #9 #9 #9 #9 #9 #9 #9LA A A1 1 1D D DD D D:4 :4 :4zK K K F F FE E E"G G GB B B D D D,F F F$C C C$J J J
- 
- 
-& & &[6 [6 [6 [6 [6 [6 [6 [6 [6 [6r?   