
     h:3                       d dl Z d dlZd dlZd dlZd dlmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZ d dlZd dlmZ d dlmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$ d dl%m&Z& d dl'm&c m(Z) d dl*m+Z+m,Z,m-Z- d dl*m.Z.m/Z/m0Z0m1Z1m2Z2 d dl*m3Z3m4Z4 d d	l5m6Z6m7Z7m8Z8 d dl9Z9 G d
 d          Z: G d d          Z; G d d          Z< G d d          Z= G d d          Z> G d d          Z? G d d          Z@ G d d          ZA G d d          ZB G d d          ZC G d d          ZD G d  d!eE          ZF G d" d#eE          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 d0 d1          ZN G d2 d3          ZO G d4 d5          ZP G d6 d7          ZQ G d8 d9          ZR G d: d;          ZS G d< d=          ZT G d> d?          ZU G d@ dA          ZV G dB dC          ZW G dD dE          ZX G dF dG          ZY G dH dI          ZZ G dJ dK          Z[ G dL dM          Z\ G dN dO          Z] G dP dQ          Z^ G dR dS          Z_dT Z`dU Za G dV dW          ZbdX ZcdY ZddZ Zed[ Zfd\ Zgd] Zhe6d^             Zid_ Zjd` Zkda Zldb Zmdc Zndd Zode Zpdf Zqdg ZrdS )h    N)arrayisnanr_arangefinfopisincostanexplogzerossqrtasarrayinf
nan_to_numrealarctanfloat_)raises)	assert_equalassert_almost_equalassert_array_equalassert_array_almost_equalassert_approx_equalassert_assert_allcloseassert_array_almost_equal_nulpsuppress_warnings)special)ellipeellipkellipkm1)elliprcelliprdelliprfelliprgelliprj)mathieu_odd_coefmathieu_even_coef)with_special_errorsassert_func_equalFuncDatac                       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 Z3d2 Z4d3 Z5d4 Z6e7j8        9                    d56          d7             Z:d8 Z;d9 Z<d: Z=e7j8        9                    d;6          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 Zd Zd Zd Zd Zd ZdS )
TestCephesc                 .    t          j        d           d S Nr   )cephesairyselfs    Z/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/scipy/special/tests/test_basic.py	test_airyzTestCephes.test_airy0       A    c                 .    t          j        d           d S r1   )r2   airyer4   s    r6   
test_airyezTestCephes.test_airye3   s    Qr9   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
@r@   )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           ?绽|=atolrH   )npr   broadcast_arraysreshapeTr,   r2   binomravelrandomseedr   r   rand)r5   nknkrknowns        r6   
test_binomzTestCephes.test_binom6   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 	2r9   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 )NrI   rN   ,     r   rM   r@   rC   rO   rP   rQ   )rS   rY   rZ   r   logspacer   r   rT   rU   rV   r,   r2   rW   )r5   r\   r]   r^   s       r6   test_binom_2zTestCephes.test_binom_2M   s    
	tE"+ab))*IaXb)!AAAdF)QtAAAvY??  2q 	 	&, ,r!!!A#w111Q390EFF$5	2 	2 	2 	2 	2 	2r9   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          |          }t          d          }t          d          }t          d|dz             D ]}||| z   |z
  z  }||z  }t          ||z            S NrN   )intrangefloat)r\   r]   numdenis        r6   	binom_intz.TestCephes.test_binom_exact.<locals>.binom_int[   sv    AAAAa&&Ca&&C1ac]]  q1uqy qS>>!r9   rI   rN      r   r@   rC   rQ   )rS   	vectorizerY   rZ   r   r   rT   rU   rV   r,   r2   rW   )r5   ro   r\   r]   r^   s        r6   test_binom_exactzTestCephes.test_binom_exactZ   s   		" 	" 
	" 		tIaIaXb)!AAAdF)QtAAAvY??  2q 	111Q32aaac7"#&,#)BqqqsGR!W55 q	* 	* 	* 	* 	* 	*r9   c                     g d}t          j        |          }t          t          j        |ddd                                           d S )N))rK   rL   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  i  g*I y)i   i   gI)i  i  gW@N)i  i  g5y)r   rN   r@   -q=rG   )rS   r   r-   r2   rW   check)r5   datasets     r6   test_binom_nooverflow_8346z%TestCephes.test_binom_nooverflow_8346q   sQ    
 
 
" *W%%w>>>DDFFFFFr9   c                 N    t          t          j        ddd          d           d S )NrN         ?      ?)r   r2   bdtrr4   s    r6   	test_bdtrzTestCephes.test_bdtr   s&    V[1S))#.....r9   c                 N    t          t          j        ddd          d           d S NrN      ry   )r   r2   bdtrir4   s    r6   
test_bdtrizTestCephes.test_bdtri   &    V\!Ac**3/////r9   c                 N    t          t          j        ddd          d           d S r~   )r   r2   bdtrcr4   s    r6   
test_bdtrczTestCephes.test_bdtrc   r   r9   c                 N    t          t          j        ddd          d           d S NrN   r         @)r   r2   bdtrinr4   s    r6   test_bdtrinzTestCephes.test_bdtrin   &    V]1Qq))#.....r9   c                 2    t          j        ddd           d S r~   )r2   bdtrikr4   s    r6   test_bdtrikzTestCephes.test_bdtrik   s    a#r9   c                 J    t          t          j        d          d           d S Nr           )r   r2   beir4   s    r6   test_beizTestCephes.test_bei        VZ]]3'''''r9   c                 J    t          t          j        d          d           d S r   )r   r2   beipr4   s    r6   	test_beipzTestCephes.test_beip        V[^^C(((((r9   c                 J    t          t          j        d          d           d S Nr   rz   )r   r2   berr4   s    r6   test_berzTestCephes.test_ber   r   r9   c                 J    t          t          j        d          d           d S r   )r   r2   berpr4   s    r6   	test_berpzTestCephes.test_berp   r   r9   c                 N    t          t          j        ddd          d           d S r   )r   r2   
besselpolyr4   s    r6   test_besselpolyzTestCephes.test_besselpoly   s'    V&q1--c22222r9   c                    t          t          j        dd          d           t          t          j        dd          t          j        d                     t          t          j        dd          ddd	
           d S )NrN   rz   33333YN~h?   g6.8@rF   r   rH   rR   )r   r2   betar   gammar4   s    r6   	test_betazTestCephes.test_beta   s{    V[1%%c***FF33V\&5I5IJJJFC002D"	, 	, 	, 	, 	, 	,r9   c                     t          t          j        ddd          d           t          t          j        ddd          d           d S )NrN   rz   r   r   rP   g*?)r   r2   betaincr   r4   s    r6   test_betainczTestCephes.test_betainc   sE    V^Aa**3///vsE::<OPPPPPr9   c                    t          t          j        dd          d           t          t          j        dd          t          j        d                     t          t          j        dd          ddd	
           d S )NrN   r   r   r   r      gIs	@+=r   r   )r   r2   betalnr   gammalnr4   s    r6   test_betalnzTestCephes.test_betaln   s{    V]1Q'',,,ff55v~f7M7MNNNfc224F"	, 	, 	, 	, 	, 	,r9   c                     t          t          j        ddd          d           t          t          j        ddd          ddd	           d S )
NrN   rz   r   r         ?g"
Yx;gAfc=r   r   )r   r2   
betaincinvr   r4   s    r6   test_betaincinvzTestCephes.test_betaincinv   s`    V&q1--c222)&#t<<.U	D 	D 	D 	D 	D 	Dr9   c                 n    t          t          j        t          j        dd                               d S )NrC   r@   )r   rS   isinfr    r   r4   s    r6   test_beta_infzTestCephes.test_beta_inf   s,    b!,,--.....r9   c                 N    t          t          j        ddd          d           d S NrN   rz   )r   r2   btdtrr4   s    r6   
test_btdtrzTestCephes.test_btdtr   &    V\!Aa((-----r9   c                 N    t          t          j        ddd          d           d S r   )r   r2   btdtrir4   s    r6   test_btdtrizTestCephes.test_btdtri   r   r9   c                 N    t          t          j        ddd          d           d S NrN   r   )r   r2   btdtriar4   s    r6   test_btdtriazTestCephes.test_btdtria   &    V^Aa**3/////r9   c                 N    t          t          j        ddd          d           d S r   )r   r2   btdtribr4   s    r6   test_btdtribzTestCephes.test_btdtrib   r   r9   c                 J    t          t          j        d          d           d S r   )r   r2   cbrtr4   s    r6   	test_cbrtzTestCephes.test_cbrt   s     FKNN3/////r9   c                 L    t          t          j        dd          d           d S NrN   r   r   )r   r2   chdtrr4   s    r6   
test_chdtrzTestCephes.test_chdtr   s$    V\!A&&s+++++r9   c                 L    t          t          j        dd          d           d S NrN   r   rz   )r   r2   chdtrcr4   s    r6   test_chdtrczTestCephes.test_chdtrc   $    V]1Q'',,,,,r9   c                 L    t          t          j        dd          d           d S NrN   r   )r   r2   chdtrir4   s    r6   test_chdtrizTestCephes.test_chdtri   r   r9   c                 L    t          t          j        dd          d           d S )Nr   r   )r   r2   chdtrivr4   s    r6   test_chdtrivzTestCephes.test_chdtriv   s$    V^Aa((-----r9   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   rN   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   rz   gp!P?)g     u@g     r@      $@g j
?)      Y@      +@r   g]?)g     @r   r   g4ۙ?)g     b@r   r   g?)g      d@r   r   rz   r@   r   rt   rG   r      )r   r2   chndtrrS   r   r   r   r   r   r   nan)r5   valuescdfs      r6   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6r9   c                 N    t          t          j        ddd          d           d S Nr   rN   r   )r   r2   	chndtridfr4   s    r6   test_chndtridfzTestCephes.test_chndtridf   '    V%a!,,S11111r9   c                 N    t          t          j        ddd          d           d S r   )r   r2   	chndtrincr4   s    r6   test_chndtrinczTestCephes.test_chndtrinc   r   r9   c                 N    t          t          j        ddd          d           d S Nr   rN   r   )r   r2   chndtrixr4   s    r6   test_chndtrixzTestCephes.test_chndtrix   &    V_Qq++C00000r9   c                 J    t          t          j        d          d           d S r   )r   r2   cosdgr4   s    r6   
test_cosdgzTestCephes.test_cosdg        V\!__S)))))r9   c                 J    t          t          j        d          d           d S r   )r   r2   cosm1r4   s    r6   
test_cosm1zTestCephes.test_cosm1  r  r9   c                 J    t          t          j        d          d           d S N-   rz   )r   r2   cotdgr4   s    r6   
test_cotdgzTestCephes.test_cotdg  s"    FL,,S11111r9   c                     t          t          j        d          d           t          t          j        d          d           d S )Nr   r   gGz?gf?)r   r2   dawsnr   r4   s    r6   
test_dawsnzTestCephes.test_dawsn  s;    V\!__S)))T**,?@@@@@r9   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)rN   r      r@   g-C6
?rz   rB   decimal&.>rp   V瞯<float128rt      )r@   r>            皙?)gg?gsOB?gsaL?g
7I^ʿr   )rS   r   r   astypefloat32r   r    diricfloat64hasattrr  r   )r5   n_oddxn_evenoctave_results        r6   
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Kr9   c                     t          j        d          }t          j        g d          }t          t	          j        |d d t           j        f         |          j        |j        |j        fk               d S )Nr   )rN   r   rB   )	rS   r   r   r   r    r  newaxisshapesize)r5   r!  r\   s      r6   test_diric_broadcastingz"TestCephes.test_diric_broadcasting%  sb    IaLLHYYYa2:.228QVQV<LLMMMMMr9   c                 J    t          t          j        d          d           d S r   )r   r2   r!   r4   s    r6   test_ellipezTestCephes.test_ellipe*  "    V]1%%c*****r9   c                 L    t          t          j        dd          d           d S r   )r   r2   	ellipeincr4   s    r6   test_ellipeinczTestCephes.test_ellipeinc-  %    V%a**3/////r9   c                 0    t          j        dd           d S )Nr   rN   )r2   ellipjr4   s    r6   test_ellipjzTestCephes.test_ellipj0  s    ar9   c                 P    t          t          d          t          dz             d S )Nr   r@   )r   r"   r   r4   s    r6   test_ellipkzTestCephes.test_ellipk3  s"    q		2a4(((((r9   c                 L    t          t          j        dd          d           d S r   )r   r2   	ellipkincr4   s    r6   test_ellipkinczTestCephes.test_ellipkinc6  r0  r9   c                 J    t          t          j        d          d           d S r   r   r2   erfr4   s    r6   test_erfzTestCephes.test_erf9  s     VZ]]C(((((r9   c                 z    d}t          t          j        |          t          j        |           z   d           d S )Ng#8x@r   r:  r5   r!  s     r6   test_erf_symmetryzTestCephes.test_erf_symmetry<  s4    VZ]]VZ^^3S99999r9   c                 J    t          t          j        d          d           d S r   )r   r2   erfcr4   s    r6   	test_erfczTestCephes.test_erfc@  s     V[^^S)))))r9   c                 J    t          t          j        d          d           d S )Nr@   r   )r   r2   exp10r4   s    r6   
test_exp10zTestCephes.test_exp10C  s     FLOOE22222r9   c                 J    t          t          j        d          d           d S )Nr@         @)r   r2   exp2r4   s    r6   	test_exp2zTestCephes.test_exp2F  r   r9   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   rC   )r   r2   expm1rS   r   r   r4   s    r6   
test_expm1zTestCephes.test_expm1I  sz    V\!__S)))V\"&))26222V\26'**B///V\"&))2622222r9   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   rN   r@   r>   r   rC   )r2   rK  r   complexrS   r   r   )r5   rK  s     r6   test_expm1_complexzTestCephes.test_expm1_complexO  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Mr9   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      rc                 ?)y=Cw?yC7gg)gF<Ug?yQ<D*?yg:><sKy>񸣼$	Um>ly;Vl <@r   rc   )	rS   r   r   r
   r2   rK  r   imagr   )r5   yr!  zexpectedfounds         r6   test_expm1_complex_hardz"TestCephes.test_expm1_complex_hardb  s     H///00VBF1II1H 8 J J J K K Q&uz8=!DDD&uz8="EEEEEr9   c                     t          t          j        ddd          d           t          t          j        ddd          dd	           d S )
NrN   r   r   ư>r   
   g2?rt   rG   )r   r2   fdtrr   r4   s    r6   	test_fdtrzTestCephes.test_fdtrw  sW    V[Aq))3///D!R002D"	$ 	$ 	$ 	$ 	$ 	$r9   c                     t          t          j        ddd          d           t          t          j        ddd          dd	           d S )
NrN   r   rz   r@   rT  g    _BgDIXl?rt   rG   )r   r2   fdtrcr   r4   s    r6   
test_fdtrczTestCephes.test_fdtrc}  sY    V\!Q**C000 	QT224G"	$ 	$ 	$ 	$ 	$ 	$r9   c                     t          t          j        ddddg          t          ddg          d           d}t          t          j        d	d|          d
d           d S )NrN   gV-?gx&1?g
}?g<zO'?r_  rG   g׀?rT  r   rt   )r   r2   fdtrir   )r5   ps     r6   
test_fdtrizTestCephes.test_fdtri  ss    QE5>::y*566T	C 	C 	C 	C %S!Q//??????r9   zReturns nan on i686.c                 N    t          t          j        ddd          d           d S )NrN   ry   )r   r2   rg  r4   s    r6   test_fdtri_mysterious_failurez(TestCephes.test_fdtri_mysterious_failure  s&    Q3//33333r9   c                 N    t          t          j        ddd          d           d S r   )r   r2   fdtridfdr4   s    r6   test_fdtridfdzTestCephes.test_fdtridfd  r   r9   c                 J    t          t          j        d          d           d S Nr   r   r   )r   r2   fresnelr4   s    r6   test_fresnelzTestCephes.test_fresnel  s"    V^A&&y11111r9   c                 J    t          t          j        d          d           d S Nr         8@)r   r2   r   r4   s    r6   
test_gammazTestCephes.test_gamma  s     V\!__T*****r9   c                 L    t          t          j        dd          d           d S )Nr   rN   r   )r   r2   gammainccinvr4   s    r6   test_gammainccinvzTestCephes.test_gammainccinv  s%    V(1--c22222r9   c                 .    t          j        d           d S )Nr`  )r2   r   r4   s    r6   test_gammalnzTestCephes.test_gammaln  s    rr9   c                     t          j        g dt           j                  }t          t	          j        |          t          j        t	          j        |                               d S )N)      gffffffrN   g@)rS   r   r  r   r2   gammasgnsignrgamma)r5   valss     r6   test_gammasgnzTestCephes.test_gammasgn  sP    x000"*==6?400"'&-:M:M2N2NOOOOOr9   c                 N    t          t          j        ddd          d           d S r   )r   r2   gdtrr4   s    r6   	test_gdtrzTestCephes.test_gdtr  &    V[1Q'',,,,,r9   c                 b    t          t          j        ddt          j                  d           d S r   )r   r2   r  rS   r   r4   s    r6   test_gdtr_infzTestCephes.test_gdtr_inf  s(    V[1RV,,S11111r9   c                 N    t          t          j        ddd          d           d S r   )r   r2   gdtrcr4   s    r6   
test_gdtrczTestCephes.test_gdtrc  r   r9   c                 N    t          t          j        ddd          d           d S r   )r   r2   gdtriar4   s    r6   test_gdtriazTestCephes.test_gdtria  r   r9   c                 2    t          j        ddd           d S NrN   r   )r2   gdtribr4   s    r6   test_gdtribzTestCephes.test_gdtrib  s    a!r9   c                 2    t          j        ddd           d S NrN   rT  )r2   gdtrixr4   s    r6   test_gdtrixzTestCephes.test_gdtrix  s    a"r9   c                 0    t          j        dd           d S rh   )r2   hankel1r4   s    r6   test_hankel1zTestCephes.test_hankel1      qr9   c                 0    t          j        dd           d S rh   )r2   hankel1er4   s    r6   test_hankel1ezTestCephes.test_hankel1e      !r9   c                 0    t          j        dd           d S rh   )r2   hankel2r4   s    r6   test_hankel2zTestCephes.test_hankel2  r  r9   c                 0    t          j        dd           d S rh   )r2   hankel2er4   s    r6   test_hankel2ezTestCephes.test_hankel2e  r  r9   c                     t          t          j        ddd          t          d                     t          t          j        ddd          d           t          j        ddd           d S )NrN   rz   r   r>   g㈮?)r   r2   hyp1f1r   r4   s    r6   test_hyp1f1zTestCephes.test_hyp1f1  s_    FM!Aa00#c((;;;FM!Ab113JKKKa!r9   c                 P    t          t          j        dddd          d           d S r   )r   r2   hyp2f1r4   s    r6   test_hyp2f1zTestCephes.test_hyp2f1  (    V]1Qq++C00000r9   c                 J    t          t          j        d          d           d S r   )r   r2   i0r4   s    r6   test_i0zTestCephes.test_i0       VYq\\#&&&&&r9   c                 J    t          t          j        d          d           d S r   )r   r2   i0er4   s    r6   test_i0ezTestCephes.test_i0e  r   r9   c                 J    t          t          j        d          d           d S r   )r   r2   i1r4   s    r6   test_i1zTestCephes.test_i1  r  r9   c                 J    t          t          j        d          d           d S r   )r   r2   i1er4   s    r6   test_i1ezTestCephes.test_i1e  r   r9   c                 .    t          j        d           d S rh   )r2   it2i0k0r4   s    r6   test_it2i0k0zTestCephes.test_it2i0k0      qr9   c                 .    t          j        d           d S rh   )r2   it2j0y0r4   s    r6   test_it2j0y0zTestCephes.test_it2j0y0  r  r9   c                 .    t          j        d           d S rh   )r2   
it2struve0r4   s    r6   test_it2struve0zTestCephes.test_it2struve0  s    !r9   c                 .    t          j        d           d S rh   )r2   itairyr4   s    r6   test_itairyzTestCephes.test_itairy      ar9   c                 J    t          t          j        d          d           d S rp  )r   r2   iti0k0r4   s    r6   test_iti0k0zTestCephes.test_iti0k0  "    V]1%%i00000r9   c                 J    t          t          j        d          d           d S rp  )r   r2   itj0y0r4   s    r6   test_itj0y0zTestCephes.test_itj0y0  r  r9   c                 J    t          t          j        d          d           d S r   )r   r2   itmodstruve0r4   s    r6   test_itmodstruve0zTestCephes.test_itmodstruve0  s#    V(++C00000r9   c                 J    t          t          j        d          d           d S r   )r   r2   	itstruve0r4   s    r6   test_itstruve0zTestCephes.test_itstruve0  s#    V%a((-----r9   c                 L    t          t          j        dd          d           d S r   )r   r2   ivr4   s    r6   test_ivzTestCephes.test_iv  "    VYq^^C(((((r9   c                 L    t          t          j        dd          d           d S r   )r   r2   iver4   s    r6   
_check_ivezTestCephes._check_ive  "    VZ!__S)))))r9   c                 J    t          t          j        d          d           d S r   )r   r2   j0r4   s    r6   test_j0zTestCephes.test_j0  r  r9   c                 J    t          t          j        d          d           d S r   )r   r2   j1r4   s    r6   test_j1zTestCephes.test_j1  r  r9   c                 L    t          t          j        dd          d           d S r   )r   r2   jnr4   s    r6   test_jnzTestCephes.test_jn  r  r9   c                 L    t          t          j        dd          d           d S r   )r   r2   jvr4   s    r6   test_jvzTestCephes.test_jv  r  r9   c                 L    t          t          j        dd          d           d S r   )r   r2   jver4   s    r6   
_check_jvezTestCephes._check_jve   r  r9   c                 .    t          j        d           d S Nr@   )r2   k0r4   s    r6   test_k0zTestCephes.test_k0      	!r9   c                 .    t          j        d           d S r  )r2   k0er4   s    r6   test_k0ezTestCephes.test_k0e      
1r9   c                 .    t          j        d           d S r  )r2   k1r4   s    r6   test_k1zTestCephes.test_k1	  r  r9   c                 .    t          j        d           d S r  )r2   k1er4   s    r6   test_k1ezTestCephes.test_k1e  r  r9   c                 .    t          j        d           d S r  )r2   keir4   s    r6   test_keizTestCephes.test_kei  r  r9   c                 J    t          t          j        d          d           d S r   )r   r2   keipr4   s    r6   	test_keipzTestCephes.test_keip  r   r9   c                 .    t          j        d           d S r  )r2   kerr4   s    r6   test_kerzTestCephes.test_ker  r  r9   c                 .    t          j        d           d S r  )r2   kerpr4   s    r6   	test_kerpzTestCephes.test_kerp  r8   r9   c                 .    t          j        d           d S r  )r2   kelvinr4   s    r6   _check_kelvinzTestCephes._check_kelvin  r  r9   c                 0    t          j        dd           d S rh   )r2   knr4   s    r6   test_knzTestCephes.test_kn      	!Ar9   c                     t          t          j        d          d           t          t	          j        t          j        t          j                                       d S r   )r   r2   kolmogir   rS   r   r   r4   s    r6   test_kolmogizTestCephes.test_kolmogi!  sF    V^A&&s+++//0011111r9   c                 J    t          t          j        d          d           d S r   )r   r2   
kolmogorovr4   s    r6   test_kolmogorovzTestCephes.test_kolmogorov%  s#    V&q))3/////r9   c                 J    t          t          j        d          d           d S )Nr          )r   r2   _kolmogpr4   s    r6   test_kolmogpzTestCephes.test_kolmogp(  s"    V_Q''.....r9   c                 J    t          t          j        d          d           d S r   )r   r2   _kolmogcr4   s    r6   test_kolmogczTestCephes.test_kolmogc+  s"    V_Q''-----r9   c                     t          t          j        d          d           t          t	          j        t          j        t          j                                       d S r   )r   r2   	_kolmogcir   rS   r   r   r4   s    r6   test_kolmogcizTestCephes.test_kolmogci.  sH    V%a((#...)"&112233333r9   c                 0    t          j        dd           d S rh   )r2   kvr4   s    r6   	_check_kvzTestCephes._check_kv2  r  r9   c                 0    t          j        dd           d S rh   )r2   kver4   s    r6   
_check_kvezTestCephes._check_kve5      
1Qr9   c                 8   t           j        }t           |d          d           t           |d          t          j                    t           |d          t          j                   t           |t          j                  t          j                   d S )Nr   r   rC   )r2   log1pr   rS   r   r   )r5   r)  s     r6   
test_log1pzTestCephes.test_log1p8  sy    UU1XXs###UU2YY(((UU2YY'''UU26]]BF+++++r9   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 )	NrN  rC   r   z%invalid value encountered in multiplyrN   r@   r   r>   )r2   r)  rO  r   rS   r   r   filterRuntimeWarningr   r   r   )r5   r)  csups       r6   test_log1p_complexzTestCephes.test_log1p_complex?  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   rN   rz   )r   r2   lpmvr4   s    r6   	test_lpmvzTestCephes.test_lpmvR  r  r9   c                 L    t          t          j        dd          d           d S r   )r   r2   	mathieu_ar4   s    r6   test_mathieu_azTestCephes.test_mathieu_aU  r0  r9   c                 L    t          t          j        dd          d           d S r   )r   r2   	mathieu_br4   s    r6   test_mathieu_bzTestCephes.test_mathieu_bX  r0  r9   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 )NrN   r   rz   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?rN   ry   r@      r   r>      r   )rS   r   r
   mqrZ  s      r6   	ce_smallqz.TestCephes.test_mathieu_cem.<locals>.ce_smallq_  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Ur9   d   r`  rh|?r   r   )	r   r2   mathieu_cemrS   rq   r   r   rd   r   )r5   rC  rA  rB  s       r6   test_mathieu_cemzTestCephes.test_mathieu_cem[  s    V'!A..y999 
		V 		V 
		V IaE!R[b"---.*1QQQtV9aQQQiGGJ!	!AAAdF)QtAAAvY>>"	, 	, 	, 	, 	, 	,r9   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 )NrN   r   r   rz   c                    |t           j        dz  z  }| dk    r(t          |          |dz  t          d|z            z  z
  S | dk    r+t          d|z            |t          d|z            z  dz  z
  S t          | |z            |t          | dz   |z            d| dz   z  z  t          | dz
  |z            d| dz
  z  z  z
  z  z
  S )Nr=  rN   r>  r   r@   r>   r?  )rS   r   r	   r@  s      r6   	se_smallqz.TestCephes.test_mathieu_sem.<locals>.se_smallqt  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Ur9   rD  rE  rF  r`  rG  r   r   )	r   r2   mathieu_semrS   rq   r   r   rd   r   )r5   rM  rA  rB  s       r6   test_mathieu_semzTestCephes.test_mathieu_semp  s    V'!A..y999 
	V 	V 
	V IaE!R[b"---.*1QQQtV9aQQQiGGJ!	!AAAdF)QtAAAvY>>"	, 	, 	, 	, 	, 	,r9   c                 N    t          t          j        ddd          d           d S NrN   r   rq  )r   r2   mathieu_modcem1r4   s    r6   test_mathieu_modcem1zTestCephes.test_mathieu_modcem1  '    V+Aa229=====r9   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 )
NrN   r   r>   r(  r@   r`  rB   rP   rG   )	r2   mathieu_modcem2rS   r   r   rd   linspacerR  r   r5   rA  rB  rZ  y1fry2s          r6   test_mathieu_modcem2zTestCephes.test_mathieu_modcem2  s0   q1%%% IaOOAAAd4K(E"+b!R(()$qqq+6K1a  d111-#Aq1"--a0$Q1--a0063I!QPQ3R3RST3UU$Q1--a001R48NqRSUV8W8WXY8Z3ZZBU++++++r9   c                 N    t          t          j        ddd          d           d S rQ  )r   r2   mathieu_modsem1r4   s    r6   test_mathieu_modsem1zTestCephes.test_mathieu_modsem1  rT  r9   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 )
NrN   r>   r(  r@   r`  r   rB   rP   rG   )	r2   mathieu_modsem2rS   r   r   rd   rW  r^  r   rX  s          r6   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#Aq!,,Q/!B$v7MaQRTU7V7VWX7Y2YYBU++++++r9   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   r2   rH  rS   r   rN  rR  r^  rV  ra  r4   s    r6   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Or9   c                     t          d          D ]H}t          j        ddd          }t          |d         dd           t          |d	         d
d           Id S )N<   r@   rD  rC   r   g.dS?rP   rG   rN   gGc?-C6?)rj   r2   ra  r   )r5   r]   vs      r6   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r9   c                 .    t          j        d           d S r1   )r2   modfresnelmr4   s    r6   test_modfresnelmzTestCephes.test_modfresnelm      1r9   c                 .    t          j        d           d S r1   )r2   modfresnelpr4   s    r6   test_modfresnelpzTestCephes.test_modfresnelp  ro  r9   c                 L    t          t          j        dd          d           d S r   )r   r2   	modstruver4   s    r6   _check_modstruvezTestCephes._check_modstruve  r0  r9   c                 N    t          t          j        ddd          d           d S r   )r   r2   nbdtrr4   s    r6   
test_nbdtrzTestCephes.test_nbdtr  r   r9   c                 N    t          t          j        ddd          d           d S r   )r   r2   nbdtrcr4   s    r6   test_nbdtrczTestCephes.test_nbdtrc  r   r9   c                 N    t          t          j        ddd          d           d S r   )r   r2   nbdtrir4   s    r6   test_nbdtrizTestCephes.test_nbdtri  r   r9   c                 2    t          j        ddd           d S )NrN   rA   ry   )r2   nbdtrikr4   s    r6   __check_nbdtrikzTestCephes.__check_nbdtrik  s    qBr9   c                 N    t          t          j        ddd          d           d S r   )r   r2   nbdtrinr4   s    r6   test_nbdtrinzTestCephes.test_nbdtrin  r   r9   c                 P    t          t          j        dddd          d           d S r   )r   r2   ncfdtrr4   s    r6   test_ncfdtrzTestCephes.test_ncfdtr  r  r9   c                     t          t          j        dddd          d           g d}t          j        ddd|          }t	          t          j        ddd|          |           d S )NrN   r   r   )ry   rN   re  r@   r   re  )r   r2   ncfdtrir  r   )r5   frh  s      r6   test_ncfdtrizTestCephes.test_ncfdtri  sf    V^Aq!Q//555MMM!QQ''q!S!44a88888r9   c                     g d}t          j        d|dd          }t          t          j        d|dd          |           d S )N)rN   r@   r   r@   r   rp   )r2   r  r   
ncfdtridfd)r5   dfdrh  s      r6   test_ncfdtridfdzTestCephes.test_ncfdtridfd  sG    iiM!S$++)!Qb993?????r9   c                     g d}t          j        |ddd          }t          t          j        |ddd          |d           d S )N)rT  rN   r@   r   g     @r@   r   rp   gh㈵>rG   )r2   r  r   
ncfdtridfn)r5   dfnrh  s      r6   test_ncfdtridfnzTestCephes.test_ncfdtridfn  sN    !!!M#q$++)!Qb993TJJJJJJr9   c                     g d}t          j        dd|d          }t          t          j        dd|d          |           d S )N)ry   re  r   r@   r   rp   )r2   r  r   	ncfdtrinc)r5   ncrh  s      r6   test_ncfdtrinczTestCephes.test_ncfdtrinc  sG    __M!QB''(Aq"55r:::::r9   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 )NrN   r   ry   	   i   r
  r   rz   r   r   r   )	r   r2   nctdtrr   rS   r   r   r   r   r4   s    r6   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8r9   c                 2    t          j        ddd           d S )NrN   ry   r   )r2   	nctdtridfr4   s    r6   __check_nctdtridfzTestCephes.__check_nctdtridf  s    3q!!!!!r9   c                 2    t          j        ddd           d S r  )r2   	nctdtrincr4   s    r6   test_nctdtrinczTestCephes.test_nctdtrinc  s    1Qr9   c                 2    t          j        ddd           d S )NrT  r  ry   )r2   nctdtritr4   s    r6   test_nctdtritzTestCephes.test_nctdtrit  s    3r"""""r9   c                 N    t          t          j        ddd          d           d S )Nry   rN   rz   )r   r2   nrdtrimnr4   s    r6   test_nrdtrimnzTestCephes.test_nrdtrimn  s&    FOC!44S99999r9   c                 T    t          t          j        ddd          ddd           d S )Nry   r   r   rQ   )r   r2   nrdtrisdr4   s    r6   test_nrdtrisdzTestCephes.test_nrdtrisd  s:    C44ca	) 	) 	) 	) 	) 	)r9   c                 4    t          j        dddd           d S r  )r2   obl_ang1r4   s    r6   test_obl_ang1zTestCephes.test_obl_ang1      !Aa     r9   c                     t          j        ddddd          }t          |d         d           t          |d         d           d S )NrN   r   rz   r   )r2   obl_ang1_cvr   )r5   results     r6   test_obl_ang1_cvzTestCephes.test_obl_ang1_cv  sH    #Aa!A..F1Ic***F1Ic*****r9   c                 N    t          t          j        ddd          d           d S NrN   r   r   )r   r2   obl_cvr4   s    r6   _check_obl_cvzTestCephes._check_obl_cv  r   r9   c                 4    t          j        dddd           d S r  )r2   obl_rad1r4   s    r6   test_obl_rad1zTestCephes.test_obl_rad1  r  r9   c                 6    t          j        ddddd           d S r  )r2   obl_rad1_cvr4   s    r6   test_obl_rad1_cvzTestCephes.test_obl_rad1_cv  !    1Qq1%%%%%r9   c                 4    t          j        dddd           d S r  )r2   obl_rad2r4   s    r6   test_obl_rad2zTestCephes.test_obl_rad2  r  r9   c                 6    t          j        ddddd           d S r  )r2   obl_rad2_cvr4   s    r6   test_obl_rad2_cvzTestCephes.test_obl_rad2_cv  r  r9   c                 L    t          t          j        dd          d           d S )NrN   r   rK  )r   r2   pbdvr4   s    r6   	test_pbdvzTestCephes.test_pbdv  s$    V[1%%i00000r9   c                 0    t          j        dd           d S r  )r2   pbvvr4   s    r6   	test_pbvvzTestCephes.test_pbvv      Aar9   c                 0    t          j        dd           d S r  )r2   pbwar4   s    r6   	test_pbwazTestCephes.test_pbwa"  r  r9   c                     t          j        dd          }t          |t          j        d                     t          j        g dd          }t          |g d           d S )Nr   rN   rC   r   rN   r@   )rN   rN   rN   )r2   pdtrr   rS   r   r   r5   vals     r6   	test_pdtrzTestCephes.test_pdtr%  sZ    k!QC,,,k)))Q''3			*****r9   c                     t          j        dd          }t          |dt          j        d          z
             t          j        g dd          }t          |g d           d S )Nr   rN   rC   r  r   )r   r   r   )r2   pdtrcr   rS   r   r   r  s     r6   
test_pdtrczTestCephes.test_pdtrc,  s^    l1a  CRVBZZ000l999c**3			*****r9   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 integerry   )r   r,  r-  r2   pdtri)r5   r/  s     r6   
test_pdtrizTestCephes.test_pdtri3  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 )Nry   rN   r   r   ffffff?)r   #B;r_  )r   r   )r2   pdtrikr   	gammainccr   rS   r   )r5   r]   s     r6   test_pdtrikzTestCephes.test_pdtrik8  sy    M#q!!F,QUA66<<<MA3/1A1A1ABB1bhv../////r9   c                 4    t          j        dddd           d S r  )r2   pro_ang1r4   s    r6   test_pro_ang1zTestCephes.test_pro_ang1?  r  r9   c           	      l    t          t          j        ddddd          t          d                     d S )NrN   r   r;  )r   r2   pro_ang1_cvr   r4   s    r6   test_pro_ang1_cvzTestCephes.test_pro_ang1_cvB  s>    !&"4Qq1Q"?"?"'	"2"2	4 	4 	4 	4 	4r9   c                 N    t          t          j        ddd          d           d S r  )r   r2   pro_cvr4   s    r6   _check_pro_cvzTestCephes._check_pro_cvF  r   r9   c                 4    t          j        dddd           d S r  )r2   pro_rad1r4   s    r6   test_pro_rad1zTestCephes.test_pro_rad1I  s    !Ac"""""r9   c                 6    t          j        ddddd           d S r  )r2   pro_rad1_cvr4   s    r6   test_pro_rad1_cvzTestCephes.test_pro_rad1_cvL  r  r9   c                 4    t          j        dddd           d S r  )r2   pro_rad2r4   s    r6   test_pro_rad2zTestCephes.test_pro_rad2O  r  r9   c                 6    t          j        ddddd           d S r  )r2   pro_rad2_cvr4   s    r6   test_pro_rad2_cvzTestCephes.test_pro_rad2_cvR  r  r9   c                 .    t          j        d           d S rh   )r2   psir4   s    r6   test_psizTestCephes.test_psiU  r  r9   c                 N    t          t          j        ddd          d           d S r1   )r   r2   radianr4   s    r6   test_radianzTestCephes.test_radianX  s&    V]1Qq))!,,,,,r9   c                 J    t          t          j        d          d           d S r   )r   r2   r  r4   s    r6   test_rgammazTestCephes.test_rgamma[  r,  r9   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@rG  gg            @r  )r   r2   roundr4   s    r6   
test_roundzTestCephes.test_round^  s    V\#&&s+++V\$''---V\#&&s+++V\$''---V\#&&s+++V\$''-----r9   c                 .    t          j        d           d S rh   )r2   shichir4   s    r6   test_shichizTestCephes.test_shichif  r  r9   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 )NrN   ry   r   z cosine integral(-inf) is not nan)r2   sicirS   r   r   r   r   r   )r5   sr.  s      r6   	test_sicizTestCephes.test_sicii  s    A{26""1Arus{+++Aq!!!{BF7##1Av|,,,?@@@@@r9   c                 J    t          t          j        d          d           d S NZ   rz   )r   r2   sindgr4   s    r6   
test_sindgzTestCephes.test_sindgt  "    V\"%%c*****r9   c                     t          t          j        dd          d           t          t	          j        t          j        dt          j                                       d S )NrN   rT  ?)r   r2   smirnovr   rS   r   r   r4   s    r6   test_smirnovzTestCephes.test_smirnovw  sJ    V^Ab))#..."&112233333r9   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 )	NrN   rT  rC   r@         ?      r   g      ȿ)r   r2   	_smirnovpr   rS   r   r   r4   s    r6   test_smirnovpzTestCephes.test_smirnovp{  s    V%a,,b111V%a..0@AAAV%a..0@AAA)!RV445566666r9   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 )
NrN   rT  r   rV  Tendpointr   r   r>   )
r   r2   	_smirnovcr   rS   r   r   rW  r   r  )r5   x10x4s      r6   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Mr9   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 NrN   rA   333333?)r   r2   r  smirnovir   rS   r   r   r4   s    r6   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4r9   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   r2   r  
_smirnovcir   rS   r   r   r4   s    r6   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6r9   c                 J    t          t          j        d          d           d S r   )r   r2   spencer4   s    r6   test_spencezTestCephes.test_spence  r,  r9   c                     t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           d S )NrN   r   ry   r  r@   gMoF?)r   r2   stdtrr   r4   s    r6   
test_stdtrzTestCephes.test_stdtr  s\    V\!A&&s+++FL1--t444FL1--~>>>>>r9   c                 0    t          j        dd           d S )Nffffff?rN   )r2   stdtridfr4   s    r6   test_stdtridfzTestCephes.test_stdtridf  s    Ar9   c                 0    t          j        dd           d S )NrN   r1  )r2   stdtritr4   s    r6   test_stdtritzTestCephes.test_stdtrit  s    qr9   c                 L    t          t          j        dd          d           d S r   )r   r2   struver4   s    r6   test_struvezTestCephes.test_struve  r   r9   c                 J    t          t          j        d          d           d S r	  )r   r2   tandgr4   s    r6   
test_tandgzTestCephes.test_tandg  r  r9   c                 L    t          t          j        dd          d           d S r   )r   r2   tklmbdar4   s    r6   test_tklmbdazTestCephes.test_tklmbda  s$    FN1Q//44444r9   c                 .    t          j        d           d S rh   )r2   y0r4   s    r6   test_y0zTestCephes.test_y0  r  r9   c                 .    t          j        d           d S rh   )r2   rY  r4   s    r6   test_y1zTestCephes.test_y1  r  r9   c                 0    t          j        dd           d S rh   )r2   ynr4   s    r6   test_ynzTestCephes.test_yn  r  r9   c                 0    t          j        dd           d S rh   )r2   yvr4   s    r6   test_yvzTestCephes.test_yv  r  r9   c                 0    t          j        dd           d S rh   )r2   yver4   s    r6   
_check_yvezTestCephes._check_yve  r&  r9   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  rz   g      "g      "@g4׵/Yg8EGr?r  gffffff@ig>@r   g|Pk?rV  rN   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<rF   rG   )rO  r,   r2   wofz)r5   rZ  ws      r6   	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8r9   N)__name__
__module____qualname__r7   r<   r`   re   rr   rw   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r$  r)  r+  r/  r3  r5  r8  r<  r?  rB  rE  rI  rL  rP  pytestmarkxfailr]  rb  re  ri  rk  rn  rs  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  r"  r%  r*  r0  r3  r6  r9  rI  rO  rS  r\  r_  rb  rf  rk  rn  rr  ru  rx  r{  r~  _TestCephes__check_nbdtrikr  r  r  r  r  r  r  _TestCephes__check_nctdtridfr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r&  r)  r,  r/  r3  r6  r9  r<  r?  rB  rD  rG  rJ  rM  rT   r9   r6   r/   r/   /   s           2 2 2.2 2 2* * *.G G G,/ / /0 0 00 0 0/ / /  ( ( () ) )( ( () ) )3 3 3, , ,Q Q Q, , ,D D D
/ / /. . ./ / /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, , ,*, , ,&> > >, , ,> > >, , ,	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 *9r9   r/   c                   2    e Zd Zd Zd Zd Zd Zd Z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?r>  g=
ףp=?)g'$'?geοgL?g
HVV?g
ףp=
׿)gl@D|?gV~׭ͿgU?g3{ɔ?)r    r3   r   r   r>  s     r6   r7   zTestAiry.test_airy  s     L!!E*X*X*X$Y$YZ[\\\L!!E*W*W*W$X$XYZ[[[L!!E*X*X*X$Y$YZ[\\\\\r9   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   r>   r@   gN贁N{?rD   )	r    r;   r3   rj   r   r   absr   r   )r5   abb1r\   s        r6   r<   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)))))r9   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 )Nr@   glgoe2+
g(0[g X*JgUfݿg˰zU`?g4c1=C?gCuTr>   r   r   )g&g(.2+
gRg}`g%́rV  rN   )g7;1[ge*JgVwgL g<3r`  )gNݿg3%IQ`?gZyΌ׿gʀ11^?g33tտr   )gqM0=C?g7uTg\G`?gp⍞vg$.m?)r    bi_zerosr   r   )r5   bibias      r6   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r9   c           	          t          j        d          }t          |t          dg          t          dg          t          dg          t          dg          fd           d S )NrN   gcqg!xLgMSt$?g ~:p?r>   )r    ai_zerosr   r   )r5   ais     r6   test_ai_zeroszTestAiry.test_ai_zeros  si    a  !"e[M&:&:%*K=%9%9%*F8__%*F8__&6 78	9 	9 	9 	9 	9r9   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  rN   r   rP   rG   r   rQ   rD   )guqgqHkZg4g9Ζ%gB~gL")gLgQO	gMQnGg3:g)}g )r    rm  r3   rc  r   )r5   rZ  zpai_zpxaip_zxai_zaip_z_ai_zpaip_zpai_envelopeaip_envelopes               r6   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r9   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 )Nrq  rN   r   rP   rG   r   rQ   rD   )gx&gg-2+
gRgg`gu%́g{ )g K;1[g*JgVwg<w gd
3g/{
")r    rh  r3   rc  r   )r5   rZ  rr  bi_zpxbip_zxrw  bi_zbip_zbi_zpbip_zpbi_envelopebip_envelopes               r6   test_bi_zeros_bigzTestAiry.test_bi_zeros_big;  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r9   N)	rU  rV  rW  r7   r<   rk  ro  r|  r  r]  r9   r6   r_  r_    s}        ] ] ]* * *G G GB9 9 9G G G0G G G G Gr9   r_  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 )NrV  rN   r  r>  )r    genlaguerreassoc_laguerrer   )r5   a1a2s      r6   test_assoc_laguerrez%TestAssocLaguerre.test_assoc_laguerreU  sv     A&&#Br!,,!"RRVVA...#Ab++!"RRUU1-----r9   N)rU  rV  rW  r  r]  r9   r6   r  r  T  s#        . . . . .r9   r  c                       e Zd Zd ZdS )TestBesselpolyc                     d S Nr]  r4   s    r6   r   zTestBesselpoly.test_besselpoly^      r9   N)rU  rV  rW  r   r]  r9   r6   r  r  ]  s#            r9   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 )Nr@   gT?r   )r    r   r   )r5   mbeis     r6   r   zTestKelvin.test_beic  s(    {1~~D"4Q77777r9   c                 P    t          j        d          }t          |dd           d S )Nr@   gD,X?r   )r    r   r   )r5   mbeips     r6   r   zTestKelvin.test_beipg  (    QE"5a88888r9   c                 P    t          j        d          }t          |dd           d S )Nr@   gPA4?r   )r    r   r   )r5   mbers     r6   r   zTestKelvin.test_berk  s(    {1~~D!4Q77777r9   c                 P    t          j        d          }t          |dd           d S )Nr@   gii߿r   )r    r   r   )r5   mberps     r6   r   zTestKelvin.test_berpo  (    QE"6q99999r9   c                 n    t          j        d          }t          |t          g d          d           d S )Nr   g&jj@g+"@g(rw+@gU2@g`<6@r>   )r    	bei_zerosr   r   )r5   ri  s     r6   test_bei_zeroszTestKelvin.test_bei_zeross  sP    q!!!"U ,6 ,6 ,6 &7 &7 89		: 	: 	: 	: 	:r9   c                 n    t          j        d          }t          |t          g d          d           d S )Nr   )gyWo.@g╲ݏ @gנ{)@gK11@gWc"5@r>  )r    
beip_zerosr   r   )r5   bips     r6   test_beip_zeroszTestKelvin.test_beip_zeros|  s\     ##!#e -C -C -C 'D 'D EF		G 	G 	G 	G 	Gr9   c                 n    t          j        d          }t          |t          g d          d           d S )Nr   g\@g6ُ@gӟHY'@g>"D0@ggaO;4@r>   )r    	ber_zerosr   r   )r5   r   s     r6   test_ber_zeroszTestKelvin.test_ber_zeros  sP    ""!#e -7 -7 -7 '8 '8 9:		; 	; 	; 	; 	;r9   c                 n    t          j        d          }t          |t          g d          d           d S )Nr   g '@gs%@gF ^-@gvۅj3@gB7@r>   )r    
berp_zerosr   r   )r5   brps     r6   test_berp_zeroszTestKelvin.test_berp_zeros  sP     ##!#e -7 -7 -7 '8 '8 9:		; 	; 	; 	; 	;r9   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 )Nr@   rW  r>  )r    r
  r   r   r   r  r  r   r   r  r  )r5   mkelvs     r6   test_kelvinz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r9   c                 P    t          j        d          }t          |dd           d S )Nr@   g>ɿr   )r    r  r   )r5   mkeis     r6   r  zTestKelvin.test_kei  s(    {1~~D!5a88888r9   c                 P    t          j        d          }t          |dd           d S )Nr@   gr@d"?r   )r    r  r   )r5   mkeips     r6   r  zTestKelvin.test_keip  r  r9   c                 P    t          j        d          }t          |dd           d S )Nr@   gܙUr   )r    r  r   )r5   mkers     r6   r  zTestKelvin.test_ker  s(    {1~~D!6q99999r9   c                 P    t          j        d          }t          |dd           d S )Nr@   g^.n3Jr   )r    r  r   )r5   mkerps     r6   r  zTestKelvin.test_kerp  r  r9   c                 n    t          j        d          }t          |t          g d          d           d S )Nr   gE>Q@gB= @gPN)@gm91@g
%5@r>   )r    	kei_zerosr   r   )r5   r  s     r6   test_kei_zeroszTestKelvin.test_kei_zeros  sP    ""!#e -8 -8 -8 '9 '9 :;		< 	< 	< 	< 	<r9   c                 n    t          j        d          }t          |t          g d          d           d S )Nr   gWf,@g?"@gFZ*o+@gOpN2@gEa6@r>   )r    
keip_zerosr   r   )r5   r  s     r6   test_keip_zeroszTestKelvin.test_keip_zeros  P    !!$$!$u .: .: .: (; (; <=		> 	> 	> 	> 	>r9   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  r>   r  )#?Q5U@q89 %@ol`.@gO0q3@r  r  )gum.@gݏ @gs{)@g䠄11@gN(D!5@gS@g89@@g^C'@g1ZG0@g+ڇ4@r  )r    kelvin_zerosr   r   )
r5   tmpberzbeizkerzkeizberpzbeipzkerpzkeipzs
             r6   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 (: (: ;<		= 	= 	=
 	"% /: /: /: ); ); <=		> 	> 	>
 	"% /: /: /: ); ); <=	> 	> 	> 	"% /: /: /: ); ); <=		> 	> 	>
 	"% /: /: /: ); ); <=		> 	> 	> 	> 	>r9   c                 n    t          j        d          }t          |t          g d          d           d S )Nr   )r  r  r  r  gD;q3@r>   )r    	ker_zerosr   r   )r5   r  s     r6   test_ker_zeroszTestKelvin.test_ker_zeros  sP    ""!#e -9 -9 -9 ': ': ;<		= 	= 	= 	= 	=r9   c                 n    t          j        d          }t          |t          g d          d           d S )Nr   r  r>   )r    
kerp_zerosr   r   )r5   r  s     r6   test_kerp_zeroszTestKelvin.test_kerp_zeros  r  r9   N)rU  rV  rW  r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r]  r9   r6   r  r  b  s)       8 8 89 9 98 8 8: : :: : :G G G; ; ;; ; ;R R R9 9 99 9 9: : :: : :< < <> > >,> ,> ,>\= = => > > > >r9   r  c                       e Zd Zd ZdS )TestBernoullic                 n    t          j        d          }t          |t          g d          d           d S )Nr   )rz   r  g-!lV?r   g镲r   r>   )r    	bernoullir   r   )r5   brns     r6   test_bernoullizTestBernoulli.test_bernoulli  sP    ""!#e -5 -5 -5 '6 '6
 78	9 	9 	9 	9 	9r9   N)rU  rV  rW  r  r]  r9   r6   r  r    s#        9 9 9 9 9r9   r  c                   &    e Zd Zd Zd Zd Zd ZdS )TestBetac                     t          j        dd          }t          j        d          t          j        d          z  t          j        d          z  }t          ||d           d S )Nr@   r>   rD   r>  )r    r   r   r   )r5   betbetgs      r6   r   zTestBeta.test_beta  sX    l1Qa  q!1!117=3C3CCCQ'''''r9   c                     t          j        dd          }t          t          t          j        dd                              }t          ||d           d S )Nr@   r>   r>  )r    r   r   rc  r   r   )r5   betlnr  s      r6   r   zTestBeta.test_betaln  sL    q###gl1Q''(())E#a(((((r9   c                 T    t          j        ddd          }t          |dd           d S )NrN   r  r>  )r    r   r   )r5   btincs     r6   r   zTestBeta.test_betainc  s-    !B''E#a(((((r9   c                     t          j        ddd          }t          j        dd|          }t          |dd           d S )Nr@   r>   ry   r   )r    r   r   r   )r5   rY  comps      r6   r   zTestBeta.test_betaincinv  sA    q2&&q1%%DA&&&&&r9   N)rU  rV  rW  r   r   r   r   r]  r9   r6   r  r    sP        ( ( (
) ) )
) ) )' ' ' ' 'r9   r  c                   J   e Zd Zd Zej                            dddg          ej                            dddg          ej                            dddg          ej                            d	d
dg          d                                                 Zd Zd Z	d Z
d ZdS )TestCombinatoricsc                    t          t          j        ddgddg          ddg           t          t          j        dd          d           t	          t          j        ddd          d           t	          t          j        dddd	          d
           t          d t          d          D             t          j        dt          t          d                              d           t          j	        t                    j        dz   }t	          t          j        ||dz
  d          |           d}t          j        ddd          |k    sJ d S )Nr`  r   r>         ^@g     @j@Texactx   )r  
repetition   c                 <    g | ]}t          j        d |d          S )rc   Tr  )r    comb).0r]   s     r6   
<listcomp>z/TestCombinatorics.test_comb.<locals>.<listcomp>"  s)    LLLQb!4888LLLr9   rP  rc   r  rR   rN   l   hU7`S?Q rD  2   )r   r    r  r   r   r   rj   listrS   iinfori   max)r5   iir[  s      r6   	test_combzTestCombinatorics.test_comb  sB   !',Bx!Q"@"@4,OOOGLQ//666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<<<<<<r9   r  TFlegacyr]   r  r   N      @r>   c                    |rs|t          |          k    s|t          |          k    rMt          j        t          d          5  t	          j        ||d||          }d d d            n# 1 swxY w Y   nt	          j        ||d||          }|rG|r't          ||z   dz
            t          |          }}d}nt          |          t          |          }}t	          j        ||||          }t          ||           d S )Nz1Non-integer arguments are currently being cast tomatchT)r  r  r  rN   F)r  r  )ri   rX  warnsDeprecationWarningr    r  r   )r5   r  r]   r  r  r  r[  s          r6   test_comb_legacyz"TestCombinatorics.test_comb_legacy+  sZ     		9qCFF{{a3q66kk"J   = = !a$v1;= = =	= = = = = = = = = = = = = = = \!Qd6-79 9 9F 		& & 1q519~~s1vv1"

1vvs1vv1<1V
KKKVX&&&&&s   A**A.1A.c                     d}d}t          j        |          }t          j        |          }t          j        ||d          }t          j        ||d          }||k    sJ d S )NF   rJ   Tr  )rS   int64r    r  )r5   r\   r]   np_nnp_kres_npres_pys          r6   test_comb_with_np_int64z)TestCombinatorics.test_comb_with_np_int64I  si    x{{x{{dD555a$///r9   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 )Nr@   r   Tr  r   rC   Fr@   rC   r@   r`  r   r   rC   r   )r   r   r   r  )r   r    r  r   r4   s    r6   test_comb_zerosz!TestCombinatorics.test_comb_zerosR      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!',~~~}}}"M"M"""	$ 	$ 	$ 	$ 	$r9   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 )	Nr`  r   r>        @g     @Tr  i  )r   r    permr   r   r4   s    r6   	test_permzTestCombinatorics.test_permZ  sm    !',Bx!Q"@"@4-PPPGLQ//666W\"at444c:::::r9   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 )Nr@   r   Tr  r   rC   Fr  r  )r   r   r   r  )r   r    r  r   r4   s    r6   test_perm_zerosz!TestCombinatorics.test_perm_zeros_  r  r9   N)rU  rV  rW  r   rX  rY  parametrizer	  r  r  r  r  r]  r9   r6   r  r    s        = = = [\D%=99[Xe}55[S3(++[S3(++' ' ,+ ,+ 65 :9'4     $ $ $; ; ;
$ $ $ $ $r9   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   )r5   cbcbrls      r6   r   zTestTrigonometric.test_cbrti  s,    \"Bt$$$$$r9   c                 T    t          j        d          }d}t          ||d           d S )Ngfffff;@g鎖C@r>  )r    r   r   )r5   cb1cbrl1s      r6   test_cbrtmorezTestTrigonometric.test_cbrtmoren  s.    l4  Ca(((((r9   c                 ~    t          j        d          }t          t          dz            }t	          ||d           d S )Nr  r   r>  r    r  r
   r   r   )r5   cdgcdgrls      r6   r  zTestTrigonometric.test_cosdgs  s8    mBBsFCa(((((r9   c                 ~    t          j        d          }t          t          dz            }t	          ||d           d S NrJ         @r>  r)  )r5   cdgmcdgmrls      r6   test_cosdgmorez TestTrigonometric.test_cosdgmorex  s8    }R  RVD*****r9   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   rU  r`  rN   r>  )r    r  r   r
   r   )r5   cscsrls      r6   r  zTestTrigonometric.test_cosm1}  sv    mAw}R00r"u1E1EFAqR3r"u::a<0!"T!,,,,,r9   c                     t          j        d          }t          t          dz            dz  }t	          ||d           d S )NrJ   r.  rC   r>  r    r  r   r   r   )r5   ctctrls      r6   r  zTestTrigonometric.test_cotdg  s=    ]22c6{{R BtA&&&&&r9   c                     t          j        d          }t          t          dz            dz  }t	          ||d           d S )Nr
  rG  rC   r>  r6  )r5   ct1ctrl1s      r6   test_cotdgmorez TestTrigonometric.test_cotdgmore  s=    mBBsFb!Ca(((((r9   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
  rz      r  r  r   i   y   i  i;  i  )r   r    r  r4   s    r6   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8r9   c                     t          t          j        dg          d           t          t          j        d          d           d S )Nr   rN   r   rz   )r   r    sincr   r4   s    r6   	test_sinczTestTrigonometric.test_sinc  s>    7<,,a000W\#&&,,,,,r9   c                 N    t          j        d          }t          |d           d S r  )r    r  r   )r5   sns     r6   r  zTestTrigonometric.test_sindg  s'    ]2Rr9   c                     t          j        d          }t          t          dz            }t	          ||d           t          j        d          }t          t          dz            }t	          ||d           d S )NrJ   r.  r>  r
  rG  )r    r  r	   r   r   )r5   snmsnmrlsnm1snmrl1s        r6   test_sindgmorez TestTrigonometric.test_sindgmore  h    mBBsFCa(((}R  RVD*****r9   N)rU  rV  rW  r   r'  r  r1  r  r  r<  rF  rI  r  rQ  r]  r9   r6   r  r  h  s        % % %
) ) )
) ) )
+ + +
- - -
' ' '
) ) )
9 9 9- - -
  + + + + +r9   r  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 r-  r    r;  r   r   r   )r5   tntnrls      r6   r<  zTestTandg.test_tandg  s8    ]22c6{{BtA&&&&&r9   c                     t          j        d          }t          t          dz            }t	          ||d           t          j        d          }t          t          dz            }t	          ||d           d S )Nr
  rG  r>  rh  r   rV  )r5   tnmtnmrltnm1tnmrl1s        r6   test_tandgmorezTestTandg.test_tandgmore  rR  r9   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   r>  r
  rz   r?  r  r@  rA  r=  iLrB  rC  rD  rE  )r   r    r;  r4   s    r6   rF  zTestTandg.test_specialpoints  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9r9   N)rU  rV  rW  r<  r^  rF  r]  r9   r6   rT  rT    sA        ' ' '
+ + +: : : : :r9   rT  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.ry   N)r    r2  rS   r   r4   s    r6   test_ellipj_nanzTestEllip.test_ellipj_nan  s    sBF#####r9   c                     t          j        dd          }t          d          t          d          ddg}t	          ||d           d S )Nr  r   rz      )r    r2  r	   r
   r   )r5   elrels      r6   r3  zTestEllip.test_ellipj  sE    ^C""3xxCT*!"S,,,,,r9   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э?rV  r   rz   r@   rC   gN?)
r    r"   r   r   r#   rS   r   r   r   r   )r5   elks     r6   r5  zTestEllip.test_ellipk  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++-?@@@@@r9   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 )Nr@   r  rp   rc   r=  r
  gfoKh?r>  r   rz   r   ry   gt?rN   rA   r   rG   6<R!?ri  gfON?)r    r7  r   r"   r   r	   r   rS   r   r   r   )r5   elkincrj  alphaphirA  s         r6   r8  zTestEllip.test_ellipkinc  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Lr9   c                    d}d}t          j        |d          }g }t          d          D ],}|                    |           t          j        |d          }-t	          j        ||          }t          |t          j        |d          d           t	          j        |t          z   |          }t          |t          j        |d          d           d S )	N    ?Pag?r   r`  rN   gV^8j?g,j6Ƅ@r@   )	rS   	nextafterrj   appendr    r7  r   	full_liker   r5   mbadro  rA  mvalsjr  f1s           r6   test_ellipkinc_2zTestEllip.test_ellipkinc_2  s     # Lq!!r 	# 	#ALLOOOQ""AAc5))&q",q:L*M*MqQQQsRx//&r2<<N+O+OQRSSSSSr9   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<rT  r@   Fr  rN   rQ  rG   )rS   rd   rW  r   r   r    r7  arcsinhr   r   r   )r5   xlogxlinxlin2s       r6   test_ellipkinc_singularz!TestEllip.test_ellipkinc_singular  s   {4b)){5#r**CArE:::)$22BJrvd||4L4LSWXXXX)$22BJrvd||4L4LSWXXXX)%33RZu5N5NUYZZZZW&ruQw22BF;;;)4%33RZu5N5NUYZZZZ)4%33RZu5N5NUYZZZZ)5&!44bj6P6PW[\\\\W&vax33RV<<<<<r9   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?r>  r   r@   rz   ri  g?eg@)	r    r!   r   r   r   rS   r   r   r   )r5   eles     r6   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++-?@@@@@r9   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 )Nr@   r  r>  4   r=  #   g'?r>  r   rz   r   ry   rl  ri  gL@)r    r.  r   r!   r   r	   r   rS   r   r   r   )r5   eleincr  rn  ro  rA  s         r6   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Kr9   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 )
Nrq  rr  r   r`  rN   g%?r@   gXo
@r>   )	rS   rs  rj   rt  r    r.  r   ru  r   rv  s           r6   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Sr9   N)rU  rV  rW  rc  r3  r5  r8  r{  r  r+  r/  r  r]  r9   r6   ra  ra    s        $ $ $- - -
	A 	A 	AM M M:T T T = = =	A 	A 	AL L L4T T T T Tr9   ra  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 )NrN   r   r   r   g      @r   rW                      r  y
c?
cy=B?CGֿr   y檠f?P9lb?)
r   r$   r   r   rO  r   rS   r   r   	enumerater5   argsexpected_resultsrn   arrs        r6   test_elliprczTestEllipCarlson.test_elliprcV  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+>????	@ 	@r9   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 )NrN   r   r@   r   g`C+?r   r   rC   )r   r   rz   r   r   rG  rW  r  r   r   rW  r  )r               ?rW  )y             r  r  )gfe_?gi+"?gP$M?ytgFU?7?@yR<8*y{62?z)r   r%   r   rS   r   rO  r   r   doubletinyr   r  r  s        r6   test_elliprdzTestEllipCarlson.test_elliprdj  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BHRY$7$7$<#<s#BCCDDDDD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+>????	@ 	@r9   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 )NrN   r   r@   gPO?r   rC   )rz   r   r   )rW  r  r   )ry   rz   r   r  rW  r   r  r  )r  rW        ?      )geQO?ʞu5J?r  yp\y?kg2ΰ?gHwд?y|pF?-6Fj)	r   r&   r   rS   r   r   rO  r   r  r  s        r6   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+>????	@ 	@r9   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 )NrN   r   ry   )r         0@r  r  r  r  )r  r  rW  )r   g8d`?rG  gL+?g}^?y旮0?ʋW?yjN?^?gt?)	r   r'   rS   r   r   rO  r   r   r  r  s        r6   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+>????	@ 	@r9   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 )NrN   r   r   rC   )r   rz   r   r   )r   r   rG  r   )r   r   rG  r  )rW  r  r   r   )r              rz   r   )rW  r  r   r  )r  r  rz   y            ?)r   r   rG  r  )r   r   rG        )	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        r6   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+>????	@ 	@r9   zInsufficient accuracy on 32-bitrQ  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|>g+<r  r   g   ,@g    x=g   @e:g   `ݽ>g(HR)A)r   r(   r4   s    r6   test_elliprj_hardz"TestEllipCarlson.test_elliprj_hard  s     5 6 3 13 3 ;"	0 	0 	0 	0 	 2 5 4 57 7 <"	0 	0 	0 	0 	0 	0r9   N)rU  rV  rW  __doc__r  r  r  r  r  rX  rY  rZ  r  r]  r9   r6   r  r  Q  s         @ @ @(@ @ @0@ @ @2@ @ @*@ @ @6 [?@@0 0 A@0 0 0r9   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  rz   r   r   rC   r   )rS   r   m_n1_1r   r   minmax_neglog2
very_neg_mconcatenate
ms_up_to_1r4   s    r6   setup_classz.TestEllipLegendreCarlsonIdentities.setup_class  s    iR..V}}(F2+-7DL=+A+A,BCE+.%0 %0 !0 0 .4<.*./*.+*7 8 8r9   c                 r    | j         }t          t          |          t          dd|z
  d                     dS )z5Test identity:
        K(m) = R_F(0, 1-m, 1)
        r   rz   N)r  r   r"   r&   r5   rA  s     r6   test_kz)TestEllipLegendreCarlsonIdentities.test_k  s7     Oq		72r!tR#8#899999r9   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   rz   N)	r   r   r  r   rS   r  r   r#   r&   )r5   r  m1s      r6   test_km1z+TestEllipLegendreCarlsonIdentities.test_km1  s]     V}}!BrBGDMM>2222gb"b&9&9:::::r9   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   rz   N)r  r   r!   r'   r  s     r6   test_ez)TestEllipLegendreCarlsonIdentities.test_e  s<     Oq		2gb"Q$&;&;#;<<<<<r9   N)rU  rV  rW  r  r  r  r  r  r]  r9   r6   r  r    sZ         

8 
8 
8: : :	; 	; 	;= = = = =r9   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 )Nr   g);T?r>  )r    r;  r   )r5   ers     r6   r<  zTestErf.test_erf  s)    [B|A.....r9   c                 r    t          j        d          }t          g d          }t          ||d           d S )Nr   )yTcJ5?=W?yo@n@y'ʷ@g	@y"[

@,y]+@yld&@-;'j'>@r>   )r    	erf_zerosr   r   )r5   erzerzrs      r6   test_erf_zeroszTestErf.test_erf_zeros  sJ    "" - - - . .
 	"#d1-----r9   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 )NrI   rd  g{Gz?r@   r   rN   rW  ignoreallr   )	rS   rY   rZ   paretorandinterrstater   isfiniter,   )r5   func
other_funcrH   rR   r\   r!  rY  rZ  rS  w_realmasks               r6   _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 rh   r2   r;  rZ  s    r6   <lambda>z.TestErf.test_erfc_consistent.<locals>.<lambda>/  s    a&*Q--' r9   rt   r   r   )r  r2   rA  r4   s    r6   test_erfc_consistentzTestErf.test_erfc_consistent,  s:      K''	 	! 	 	 	 	 	r9   c                 L    |                      t          j        d d           d S )Nc                 Z    t          j        | | z            t          j        |           z  S r  )rS   r   r2   rA  r  s    r6   r  z/TestErf.test_erfcx_consistent.<locals>.<lambda>7  s    bfQqSkkFKNN2 r9   rt   rG   )r  r2   erfcxr4   s    r6   test_erfcx_consistentzTestErf.test_erfcx_consistent4  s7      L22 	! 	 	 	 	 	r9   c                 L    |                      t          j        d d           d S )Nc                 6    dt          j        d| z            z  S )Nr  rW  r  r  s    r6   r  z.TestErf.test_erfi_consistent.<locals>.<lambda>>  s    cFJr!t,,, r9   rt   rG   )r  r2   erfir4   s    r6   test_erfi_consistentzTestErf.test_erfi_consistent;  s7      K,, 	! 	 	 	 	 	r9   c                 L    |                      t          j        d d           d S )Nc                     t          t                    dz  t          j        |  | z            z  t	          j        |           z  S r  )r   r   rS   r   r2   r  r  s    r6   r  z/TestErf.test_dawsn_consistent.<locals>.<lambda>E  s0    d2hhqj261"Q$<</&+a..@ r9   rt   rG   )r  r2   r  r4   s    r6   test_dawsn_consistentzTestErf.test_dawsn_consistentB  s7      L@@ 	! 	 	 	 	 	r9   c                     t           j        t           j         t           j        g}t           j        ddg}t          t	          j        |          |d           d S )NrC   rN   r  rG   )rS   r   r   r   r    r;  r5   r  r[  s      r6   test_erf_nan_infzTestErf.test_erf_nan_infI  sH    (FB?D))8%@@@@@@r9   c                     t           j        t           j         t           j        g}t           j        ddg}t          t	          j        |          |d           d S )Nr@   r   r  rG   )rS   r   r   r   r    rA  r  s      r6   test_erfc_nan_infzTestErf.test_erfc_nan_infN  sH    (FAq>T**H5AAAAAAr9   c                     t           j        t           j         t           j        g}t           j        t           j        dg}t          t	          j        |          |d           d S )Nr   r  rG   )rS   r   r   r   r    r  r  s      r6   test_erfcx_nan_infzTestErf.test_erfcx_nan_infS  sK    (FBFA&d++XEBBBBBBr9   c                     t           j        t           j         t           j        g}t           j        t           j         t           j        g}t          t	          j        |          |d           d S )Nr  rG   )rS   r   r   r   r    r  r  s      r6   test_erfi_nan_infzTestErf.test_erfi_nan_infX  sO    (FRVGRV,T**H5AAAAAAr9   c                     t           j        t           j         t           j        g}t           j        ddg}t          t	          j        |          |d           d S )Nr  r   r  rG   )rS   r   r   r   r    r  r  s      r6   test_dawsn_nan_infzTestErf.test_dawsn_nan_inf]  sI    (FD#&d++XEBBBBBBr9   c                     t           j        t           j         t           j        g}t           j        t           j        dz  z   ddg}t          t	          j        |          |d           d S )NrW  rN  r  rG   )rS   r   r   r   r    rR  r  s      r6   test_wofz_nan_infzTestErf.test_wofz_nan_infb  sT    (FRVc\)66:T**H5AAAAAAr9   N)r   )rU  rV  rW  r<  r  r  r  r  r  r  r  r  r  r  r  r  r]  r9   r6   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r9   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   rN   r@   r  rG   )rN   r   rC   r  )rN   rN   r   =   ii  iY  i=) il   Q~ l   10[l   $8gC
 l   2l   v}Ju: )r  dre  r  r  r   r>  )r    eulerr   r   rj   rk   rS   r  r   r  r   )
r5   eu0eu1eu2eu24	mathworldcorrectr]   errerrmaxs
             r6   
test_eulerzTestEuler.test_euleri  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)rU  rV  rW  r  r]  r9   r6   r  r  h  s#        - - - - -r9   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 )Nr@   r>   )r    rH  r   r5   exexrls      r6   rI  zTestExp.test_exp2  s*    \!__Rr9   c                 T    t          j        d          }d}t          ||d           d S )N      @g;f@r>  )r    rH  r   r5   exmexmrls      r6   test_exp2morezTestExp.test_exp2more  s.    l3Ca(((((r9   c                 R    t          j        d          }d}t          ||           d S )Nr@   rD  )r    rD  r   r  s      r6   rE  zTestExp.test_exp10  s,    ]1Bt$$$$$r9   c                 T    t          j        d          }d}t          ||d           d S )Nr	  gYs@r>  )r    rD  r   r
  s      r6   test_exp10morezTestExp.test_exp10more  s.    mC  Ca(((((r9   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 )Nr@   r   r>   rN   r>  r    rK  r   r   r  s      r6   rL  zTestExp.test_expm1  sn    mAw}Q//a0@0@AAqQ#a&&(+!"T!,,,,,r9   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 )Nr@    @皙@rN   r>  r  )r5   ex1exrl1s      r6   test_expm1morezTestExp.test_expm1more  sn    }Qc 2 27=3E3EFQ#c((1*SXXaZ0!#eA.....r9   N)	rU  rV  rW  rI  r  rE  r  rL  r  r]  r9   r6   r  r    sn          
) ) )
% % %
) ) )
- - -
/ / / / /r9   r  c            	          e Zd Zd Zej                            ddd ej        d          df ej        d          dfg          d             Z	d	 Z
d
 Zej                            dej        dfej        df ej        ej        g          df ej        ej        g          dfg          d             Zej                            ej        dk    d          d             ZdS )TestFactorialFunctionsc           	         t          t          j        d          d           t          t          j        d          d           t          t          j        d          d           t          g dt          j        g dd                     t          t          j        dd	gd
d	gg          ddgddgg           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        g dd          g d           t          t          j        dd	gd
d	ggd          ddgddgg           t          t          j        t	          j        dd          d          t          j        t	          j        dd          d                     t          t          j        t	          j        dd          d          t          j        t	          j        dd          d                     t          t          j        t	          j        dd          d          t          j        t	          j        dd          d                     dD ]L}t          dt          j        d|                     t          g dt          j        g d|                     Mt          dd          D ]9}t          j        |          }t          |t          j        |d                     t          |t          j        |gd          d                    t          t          |          t          j        |d                     t          t          |          t          j        |gd          d                    t          t          j        |d          t          j        |d                     t          t          j        |gd          t          j        |gd                     ;d S )Nr   rN   r@   )r.  rv  r  )r   r>   r   Fr  r   r   r>   r  rD   r  Trp       Xn)rB   r>   rp   r`  )i  r  r  i _7    )TF)rN   r@   r   r   )rN   r@   r~  )r   r    	factorialr   rS   r   r   rj   mathr   rk   )r5   r  r\   r  s       r6   test_factorialz%TestFactorialFunctions.test_factorial  sT   !'"3A"6"6:::!'"3A"6"6:::!'"3A"6"6:::!///")"3IIIU"K"K"K	M 	M 	M!'"3aVaV4D"E"E$'8b!W"5	7 	7 	7 	W&q555q999W&q555q999W&q555q999W&q555s;;;W&r666FFF 	W&~~~TBBB777	9 	9 	9 	W&AA'7>>AhQ(	* 	* 	* 	W&ryR'8'8$??&ryR'8'8%@@	B 	B 	B 	W&ryR'8'8$??&ryR'8'8%@@	B 	B 	B 	W&ryQ'7'7>>&ryQ'7'7??	A 	A 	A # 	I 	IEq'"3B">">???|||&0GGI I I I q" 	> 	>AnQ''Gw(9!T(B(BCCCw(91#t(D(DQ(GHHHE'NNG,=a,G,GHHHE'NNG,=qc5,I,I!,LMMM w0D99&0E::< < < w0!d;;&0!e<<> > > >	> 	>r9   zx, exact)rN   T)rN   FrN   TFc                 Z    t          j        t          j        ||                    sJ d S Nr  )rS   isscalarr    r   )r5   r!  r  s      r6   test_factorial_0d_return_typez4TestFactorialFunctions.test_factorial_0d_return_type  s0     {7,Qe<<<=======r9   c                     t          g dt          j        g dd                     t          t          j        dd          d           d S )N)g     @Z@g      x@g     @)rB   r>  r  Fr  rB   Ti   )r   r    
factorial2r   r4   s    r6   test_factorial2z&TestFactorialFunctions.test_factorial2  s]    !"4"4"4")"4YYYe"L"L"L	N 	N 	NW'666<<<<<r9   c                     t          t          j        ddd          d           t          t          j        ddd          d           d S )Nr   rN   Tr  r  r   r`  )r   r    
factorialkr4   s    r6   test_factorialkz&TestFactorialFunctions.test_factorialk  sL    W'1D9993???W'1D9992>>>>>r9   c                 t    t          j        ||          }t          t          j        |                     d S r$  )r    r   r   rS   r   )r5   r!  r  r  s       r6   test_nan_inputsz&TestFactorialFunctions.test_nan_inputs  s7     "1E222  !!!!!r9   )r   r`  z*Python 3.10+ math.factorial() requires intrQ  c           
      (   t          j        t           j        dddt           j        g          }t                      5 }|                    t
          d           t          j        |d          }t          t          j        t           j        dddt           j        g          |           t          j        |d          }t          t          j        t           j        dddt           j        g          |           d d d            d S # 1 swxY w Y   d S )	NrN   r@   r   z-Using factorial\(\) with floats is deprecatedTr  rD   F)	rS   r   r   r   r,  r  r    r   r   )r5   r!  r/  r  s       r6   test_mixed_nan_inputsz,TestFactorialFunctions.test_mixed_nan_inputs  s4    HbfaArv.//   	FCJJ)+\]]]&q555F261aBF";<<fEEE&q666F261aBF";<<fEEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	Fs   B>DDDN)rU  rV  rW  r"  rX  rY  r  rS   r   r&  r*  r-  r   r/  skipifsysversion_infor1  r]  r9   r6   r  r    sg       8> 8> 8>t [Z	!d	!e	*  > > >= = =
? ? ? [Z			26(		T"	26(		U#	*  " " " [(G3K  M MF FM MF F Fr9   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)ry   gN?ց[?)y      ?        r7  r8  )y       ?yn<ӿj<Cy)BR;߿ux7Q?)y      yھ|}-2?y/?!ۿ)r.  GM?pBR?)y      @        r9  r:  )y              @y       GMܿy        pBR?)y              gGMܿgpBR߿)y             y        GM?y       pBR߿ry   r  c                     t          t          j        |                    }t          |t          ||g          d           d S )Nr>  )r   r    rr  r   )r5   rZ  r
  r.  frss        r6   test_fresnel_valueszTestFresnel.test_fresnel_values
  s>    @ GOA&&''!#uaV}}a88888r9   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   rN   r>  )r    fresnel_zerosr   r   rr  )r5   szoczovals1vals2s        r6   test_fresnel_zeroszTestFresnel.test_fresnel_zeros/  s    (++S!#"' ): ): ): #; #; <=	> 	> 	> 	"#"' ): ): ): #; #; <=	> 	> 	> $$Q'$$Q'!%"---!%"-----r9   c                 ~    t          j        d          \  }}t          j        d          }t          ||d           d S )NrD   r?  )r    r?  fresnelc_zerosr   )r5   r@  rA  frcs       r6   test_fresnelc_zeroszTestFresnel.test_fresnelc_zerosB  >    (++S$Q''!#c"-----r9   c                 ~    t          j        d          \  }}t          j        d          }t          ||d           d S )Nr   r?  )r    r?  fresnels_zerosr   )r5   r@  rA  r<  s       r6   test_fresnels_zeroszTestFresnel.test_fresnels_zerosG  rI  r9   N)rU  rV  rW  rX  rY  r  rS   r   r=  rD  rH  rL  r]  r9   r6   r6  r6  	  s        [Y7=	

	
 	&,)/*	c
&$;)  >9 9? >9. . .&. . .
. . . . .r9   r6  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 ru  )r    r   r   )r5   gams     r6   rw  zTestGamma.test_gammaN  s'    mASr9   c                     t          j        d          }t          t          j        d                    }t	          ||d           d S )Nr   r>  )r    r   r   r   r   )r5   gamlnlngams      r6   r|  zTestGamma.test_gammalnR  s@    ""GM!$$%%E%*****r9   c                 |    t          j        dd          }t          j        dd          }t          ||d           d S )Nry   r>  )r    ry  gammaincinvr   )r5   gccinvgcinvs      r6   rz  zTestGamma.test_gammainccinvW  s>    %b,,#Br**F5+++++r9   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 )
NrA   rN   r`  g?g`	\;r  r  gmb<g      &@)r    rU  gammaincr   r5   rY  r!  s      r6   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0r9   c                     dt          j        dd          dt          j        dd          dg}|D ]>}t          j        d|          }t          j        d|          }t          ||d           ?d S )	Nr   r   gCs?rN   g^F    ?rA   rt   rG   )rS   rs  r    rU  rY  r   )r5   ptsxprY  r!  s        r6   test_975zTestGamma.test_975h  s    
 |D!$$l|D!$$l4  	/ 	/B#B++A a((AAr.....	/ 	/r9   c                 ~    t          j        d          }dt          j        d          z  }t          ||d           d S )Nr>  rN   )r    r  r   r   )r5   rgamrlgams      r6   r  zTestGamma.test_rgammau  s=    ~a  '-"""Dq)))))r9   c                     t          t          j        t          j        d                               t          t          j        d          d           d S )NrC   r   )r   rS   r   r    r   r   r  r4   s    r6   test_infinityzTestGamma.test_infinityz  sD    r**++,,,W^B''+++++r9   N)rU  rV  rW  rw  r|  rz  r+   r[  r_  r  rd  r]  r9   r6   rN  rN  M  s          + + +
, , ,
 	1 	1 	1 
/ 
/ 
/* * *
, , , , ,r9   rN  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 Nr  r@   r   r>  )r   r    r  r4   s    r6   
test_negv1zTestHankel.test_negv1  5    GOBq11GOAa4H4H3H"MMMMMr9   c                     t          j        dd          }t          j        dd          t          j        dd          dz  z   }t	          ||d           d S NrN   rT  rW  r>  )r    r  r  rI  r   )r5   hank1hankrls      r6   r  zTestHankel.test_hankel1  sR    "%%*Qr""WZ"%5%5b%88E&+++++r9   c                 v    t          t          j        dd          t          j        dd           d           d S rh  )r   r    r  r4   s    r6   test_negv1ezTestHankel.test_negv1e  7    G,R22W5Ea5J5J4JBOOOOOr9   c                     t          j        dd          }t          j        dd          t          d          z  }t	          ||d           d S )NrN   rT  y       r>  )r    r  r  r   r   )r5   hank1ehankrles      r6   r  zTestHankel.test_hankel1e  sH    !!B''/!B''D		1F71-----r9   c                 v    t          t          j        dd          t          j        dd           d           d S rh  )r   r    r  r4   s    r6   
test_negv2zTestHankel.test_negv2  rj  r9   c                     t          j        dd          }t          j        dd          t          j        dd          dz  z
  }t	          ||d           d S rl  )r    r  r  rI  r   )r5   hank2hankrl2s      r6   r  zTestHankel.test_hankel2  sR    "%%:a##gj2&6&6r&99E'!,,,,,r9   c                 v    t          t          j        dd          t          j        dd           d           d S rh  )r   r    r  r4   s    r6   
test_neg2ezTestHankel.test_neg2e  rq  r9   c                 |    t          j        dd          }t          j        dd          }t          ||d           d S )NrN   rT  r>  )r    r  r   )r5   hank2ehankrl2es      r6   test_hankl2ezTestHankel.test_hankl2e  s>    !!B''#Ab))F8A.....r9   N)rU  rV  rW  ri  r  rp  r  rv  r  r{  r  r]  r9   r6   rf  rf    s        N N N, , ,
P P P. . .
N N N- - -
P P P/ / / / /r9   rf  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 rl  )r    h1vpjvpyvpr   )r5   h1h1reals      r6   	test_h1vpzTestHyper.test_h1vp  R    \!B+a##gk!B&7&7&::Bva(((((r9   c                     t          j        dd          }t          j        dd          t          j        dd          dz  z
  }t	          ||d           d S rl  )r    h2vpr  r  r   )r5   h2h2reals      r6   	test_h2vpzTestHyper.test_h2vp  r  r9   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	  ry   Qvo?rt   rG   r   rz   r  r   )g      rC   r   rN   re  )g̷?g3|t-Ք?rz   go?g{h?rN  ry   re  r	  )r   rN   ry   )rz   gc?r  r@   r   rN   )
r   r    hyp0f1rS   r   r  rO  	row_stackassert_raises
ValueError)r5   r!  r[  x1x2s        r6   test_hyp0f1zTestHyper.test_hyp0f1  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N2<q112662<
Q77eDDDDj'.lB4!8,,q!f	6 	6 	6 	6 	6r9   c                 P    t          j        dd          }t          |d           d S )N皙?      ?      ?y;EG?uM?)r    r  r   )r5   ress     r6   test_hyp0f1_gh5764zTestHyper.test_hyp0f1_gh5764  s,     nS,//C!LMMMMMr9   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 )jNrT  rU  g?rB   )g{*= g˱a)g5=gvX@)g)AI@gDAhg$Pj)g~٭@)g,qUp,g@=&?gX 3@gZ@)g\@g88*@g\ֳ!=@g   ƞA)gAZ;gOFA'gxŝO<g_Dc D)g^g@g V*E7g4)3@g7-XtD)gΧU(@g2Tj8g$@g  LhB)ge;@gJgogr@g `屫B)g5'.@gqZ=g7߈Y.g8w)gB,@g"^#@grT[	R3@g  B)gYgN],*@g*!j,g1@)g#r @gq{874*gWs%o.@gMdD)g8|.2@g*!,g?I(#@gJ
r .)gu8g#=)@g*'1g)ψvA)g%0N:@gUx1@gx@gr),c@)g:M8@gGb+=@g3ҜV/@gX9ҙim@)g"dxz@gqKgv7##@g  >B)g kx-gD8L+8@g܈2g72LU@)gtd@Q4h6@g%@}gr3b @gu߯ѡ)g򋷺?g"p$`E2@gY|T3g\D?)gV-(+@g$[3@g;/@gEQwв@)g[fgLL4gQV@g0#.@)g;@g/?jvgx.<N&@g^I)g+9gX[?gbZSH%@g5/)@)g}RgŢ	@g},*@g6@g1w-@)gRA(g_@g5A} :=g   FA)gQz5@gq.#gTq&gc ?)gφ%#gZV@
g%@0@g   Syd)gB۽ܟ%@g*>8gV@'g	ʦ)g/H:gn@S g)bǙ9@g  9)gT쁹3!gD gkLFr%@g3333`4A)g:k
g\=)'gi,k9gbx?)giXwg-CwU5@g'jin9gX5@)gb@gTy4#/@g]pH=gIw?)g63@g2XxM:@g~?^0gW1?)g37g R{@gicx.4?gmm?)gv܏%7@g9Ma%=g}ygGr##@)gG8-xы.@gǂ@ghb(@g  A)gw1@gq2@gO],@g0ɷ-X@)g2@g́y#<@gͣx?g]?)g];˄f$@g1}0g_9g8ڃ@)g:!ω1g)q(@gg2gv%)A)gYN:+gn	Ȱ-?g>gZd|I.A)gr/K@g\}L9@g*gΙ?)gQq5V@g?)@g'@0@glۭ`@)gVn:gRQ0gT&g QC)gR4 8gi+gK @g{G)gtiq+g(O?3g	1=@g  8cB)g|>oϘg\!<@g"?4V?g%c\q?)g gpfP!gAO:@g,\)g=R8@g%;gz3@g~0G)g.CVl@ge< .@g9@gkq1A)g=~$gpR7@g 77g,ǆ@)g^g{)gRA2@g  dL)gf=4,R@gyO-g#ޕ~8@g)g|ݩ%P4g:<9@gKzs4g$(~O4@)g2y3@g1$6g&TpxA6gG!JA)gf^XH
^;@g7r:@g`,/@gi{dA)gihx@g!B8(@g7j*@gh@)glmF<gpO4@g`2"@g-)gnV3!2@g.mq1g!Z{.@grOE)gs`m@gzAUguC=V#@g  \)gPL-(@g,9$"9g6u7@geRF)gw8gv=5@gjRW+g(\-@)gyg~=@g4MVgwz:@)g^0g+7%g-@j81g5ׂ,j)gj4gz0g-</;gݽ]
D)gN43@g}W6@gLUS!9gɍF>)g Q4@g=}gȮ5@g]nhgF)gV9g9gf9,#gF|}fv?)g=^ee;@gy}2g'T> g#o@)g+5g;gN8Cg8@g   bkA)gSx+26@g@gI0gSMC)gT*0@g`<6gWy5@gǟRj)gӰk
g/:?gJLHR"@gxu-)gKu@g6gt8_x7@gd;=')g+:;@gBͤ10@g";gK$?)gp @g dg	=@g=6` F)gTbR.g9:g3@gUfgRbKZ@)g!g%P73;g]?gr	y?)g)Yv2gȹq@g/3g   A)g?j/|g7:@g#~oݽ?g8pE?)gPj/gS"X)gYgt0N?)ggo&	xT7@g-hT@#@g.;%r?)g'_@gɖ@7g:Kڞ$@g [B)gk5ں9gѼ:gk%tp;@g  .<^)gf:OI&gO/g#01|2gf`Y)gqv~@guFd9@gz+S7gF1/$?)gx3g~[6:g;s9@gKw*1@)gP@gv;K,gҬd&<@g!s)gֈ`|.gOwx=@g+MK<gUU@)gکI@g©jG1g4g؃66@g(4ν4E)gS>?gD-lgSL,c<gԉE4?)gd?A g3$)glx^?gs>|T?)g(%@g:ĉ$@g~^gv2gJHF&?)g}r":@g3\z;@go)@g+hA)g@')"gVv/@guQU-gfy2yt@)gM6y%$g/;R#@g):@gw%",6Կ)g%x'g$6g5gu$9?)glkC9g<tF8gp?g ?ri  )r    r  r   r   r   rc  )r5   hyp1ref_datard  re  r.  r[  r  s           r6   r  zTestHyper.test_hyp1f1  s   ~bB''D"4Q777  c^]]] c^\\\c^[[[c^ [ZZc^ ^]]	c^
 \[[c^ \[[c^ \[[c^ ^]]c^ [ZZc^ ]\\c^ \[[c^ ]\\c^ ]\\c^ [ZZc^ [ZZc^  \[[!c^" ]\\#c^$ ]\\%c^& \[['c^( [ZZ)c^* ]\\+c^, ]\\-c^. \[[/c^0 [ZZ1c^2 ]\\3c^4 ]\\5c^6 ^]]7c^8 ^]]9c^: ^]];c^< ]\\=c^> ^]]?c^@ ]\\Ac^B \[[Cc^D \[[Ec^F \[[Gc^H ]\\Ic^J [ZZKc^L [ZZMc^N [ZZOc^P ]\\Qc^R ]\\Sc^T ]\\Uc^V \[[Wc^X [ZZYc^Z _^^[c^\ ^]]]c^^ ]\\_c^` \[[ac^b ^]]cc^d \[[ec^f [ZZgc^h ]\\ic^j ^]]kc^l ]\\mc^n ]\\oc^p ]\\qc^r [ZZsc^t [ZZuc^v ]\\wc^x \[[yc^z ]\\{c^| \[[}c^~ ]\\c^@ ]\\Ac^B _^^Cc^D ^]]Ec^F \[[Gc^H \[[Ic^J ^]]Kc^L ]\\Mc^N ]\\Oc^P ]\\Qc^R ]\\Sc^T ]\\Uc^V ]\\Wc^X \[[Yc^Z \[[[c^\ ]\\]c^^ ]\\_c^` ]\\ac^b \[[cc^d ^]]ec^f \[[gc^h \[[ic^j ^]]kc^l _^^mc^n \[[oc^p ]\\qc^r ]\\sc^t ]\\uc^v \[[wc^x ]\\yc^z ]\\{c^| \[[}c^~ [ZZc^@ ]\\Ac^B ]\\Cc^D ^]]Ec^F ]\\Gc^ c_ c_J ' 	< 	<NAa(^Aa**FC6)**83d:;;;;	< 	<r9   c                     t          j        ddd          }t          j        ddd          }t          ||d           d S )Nry   re  g7B.g|:B.r?  r    r  r   )r5   r  hyp2s      r6   test_hyp1f1_gh2957zTestHyper.test_hyp1f1_gh2957@	  s@    ~c388~c388D$+++++r9   c                 T    t          j        ddd          }t          |dd           d S )Nry   re  ig<`?r?  r  )r5   hyps     r6   test_hyp1f1_gh2282zTestHyper.test_hyp1f1_gh2282E	  s.    nS#u--C!5r:::::r9   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 )(Nry   rN   re  |Gz?r	  g?g|Gzr   r  r@   r  r  )r   r  re  r  gYi2?r  r   g433333?r>   r>  r   rC   g      ?r   g      ?r   r  g      gUUUUUUտg  @gUUUUUU?g)re  r  rz         $gEciH!@)r(  r   rN   r  gzG?)r@   r  rN   r  gy&1|)r  r   rN   r  g"nN%@?)r@   r  rN   r  g!J)r`  |      %@ra  gzS;)r`  r  g      %ra  g[B.VP<test #%derr_msg)r   r   r	   r
   r    r   r   r   r  r  r   )	r5   r   rn   rd  re  r.  r!  rj  cvs	            r6   r  zTestHyper.test_hyp2f1I	  sp   3O0D0D(DE3s);<aCE

!23B B Bq#s3xx{CLL9aAw}Q//e0D0DDW]SVEWEWWX_XefiXjXjjkaGDHH$4mE**%++2=+C+C%DDKMR[D\D\%] ^aGDHH$4mE**%++2=+C+C%DDKMR[D\D\%] ^eWe^GM$<O<O-OmG,,.--4]4-@-@.AAHxAXAX.Y Z A@@%%%&&&,,,,,,MN/2 #,F"3"3 	B 	BA1aA1a++BAq*q.AAAAA	B 	Br9   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 )NrN   rT  rD  g D?rB   )rU  r$  333333?g)re  g	@rO  g	ry   r@   r?  )	r    hyperur   r   r   r	   r  r   r   )r5   val1rd  re  rZ  hypuhprls          r6   test_hyperuzTestHyper.test_hyperuh	  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/////r9   c                 P    t          t          j        ddd          dd           d S )NrN   re  g3333334@g(¨?r?  )r   r    r  r4   s    r6   test_hyperu_gh2287zTestHyper.test_hyperu_gh2287u	  s3    GN1c4880"	6 	6 	6 	6 	6r9   N)rU  rV  rW  r  r  r  r  r  r  r  r  r  r  r]  r9   r6   r  r    s        ) ) )
) ) )
6 6 64N N Np< p< p<d, , ,
; ; ;B B B>0 0 06 6 6 6 6r9   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 Z2dTd4Z3e4j5        6                     e7j8                    d5k    d67          d8             Z9e4j5        6                     e7j8                    d5k    d67          d9             Z:d: Z;d; Z<e4j5        j=        d<             Z>d= Z?d> Z@d? ZAd@ ZBdA ZCdB ZDdC ZEdUdEZFdF ZGdG ZHdH ZIdI ZJdJ ZKdK ZLdL ZMdM ZNdN ZOdO ZPdP ZQdQ ZRdR ZSdS ZTd3S )V
TestBesselc                     t          t          j        d                    }t          |t          ddg          d           d S )Nr  gbɃ?gΝJ ֿr>  )r   r    r  r   )r5   it0s     r6   r  zTestBessel.test_itj0y0{	  sA    GN2&&''!#e-@BV,W&X&XYZ[[[[[r9   c                     t          t          j        d                    }t          |t          ddg          d           d S )Nr  gbqTtt?g/]ooۿr>  )r   r    r  r   )r5   it2s     r6   r  zTestBessel.test_it2j0y0	  sA    GOB''((!#e-BDX,Y&Z&Z[\]]]]]r9   c                 r    t          t          j        dd          t          j        dd                     d S Nr   r@   r  )r   r    r  r4   s    r6   test_negv_ivzTestBessel.test_negv_iv	  s.    WZ!__gjA&6&677777r9   c                 z    t          j        d          }t          j        dd          }t          ||d           d S NrT  r   r>  )r    r  r  r   r5   ozozrs      r6   r  zTestBessel.test_j0	  8    Z^^j2Bs1%%%%%r9   c                 z    t          j        d          }t          j        dd          }t          ||d           d S NrT  rN   r>  )r    r  r  r   r5   o1o1rs      r6   r  zTestBessel.test_j1	  r  r9   c                 R    t          j        dd          }t          |dd           d S )NrN   r  ;x?r>  )r    r  r   )r5   jnnrs     r6   r  zTestBessel.test_jn	  s,    z!BD!5a88888r9   c                 v    t          t          j        dd          t          j        dd           d           d S rh  )r   r    r  r4   s    r6   test_negv_jvzTestBessel.test_negv_jv	  3    GJr!,,wz!A.>CCCCCr9   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   rT  g
Ye?)UUUUUU?:0yE>g˿+>)r  rP   g)%->)g@rP   g5c)!9)r  rG  g%,Ϳr>  r  r  )r  r    r  r   )r5   r   rn   rj  r!  rY  ycs          r6   r  zTestBessel.test_jv	  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r9   c                 v    t          t          j        dd          t          j        dd           d           d S rh  )r   r    r  r4   s    r6   test_negv_jvezTestBessel.test_negv_jve	  5    GK1--Aa0@0@/@"EEEEEr9   c                    t          j        dd          }t          |dd           t          j        dd          }d}t          j        d|          t	          t          |j                             z  }t          ||d           d S )NrN   r  r  r>  ?      ?)r    r  r   r  r   rc  rX  )r5   jvexpjvexp1rZ  jvexprs        r6   test_jvezTestBessel.test_jve	  sz    Ab!!E"6q999Qu%%Aac!&kk\!2!22F6!,,,,,r9   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   rN   )go@.=@gzj,[@glN!@g5/ D'@gh>-@r>   gW@g0@gQX$@g*@g8*5{x0@rM   )gEk[@g~Cju]@gYrʝ^@g, `@gf	`@rF   rG   -  )gts@g&ǭr3t@gWt@g,$Y&u@gu@)r    jn_zerosr   r   r   )r5   jn0jn1jn102jn301s        r6   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r9   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   rb   i  g;@rF   rG   i  g8v@i+  gׂMm@r`  gxi@g	,@gи{>@i  r   )gUDX@g!@g*HS@gz5 @g@2;@r  )r    r  r   r   )r5   r  jn10jn3010s       r6   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r9   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 )NrN   r@   r]  )r\   r!  r  s     r6   jnpz(TestBessel.test_jnjnp_zeros.<locals>.jnp	  s/    Bqs1II1Q3q		)1,,r9   rN   rJ   r   r_  r  zInvalid t return for nt=%d)r    r  rj   jnjnp_zeroszipr   AssertionError)r5   r  ntrZ  r\   rA  tzznnttr  s             @r6   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r9   c                     t          j        dd          }t          |t          g d          d           t          j        dd          }t	          t          j        d|          dd           d S )	NrN   r   g(yu?gOXeS@ga!@gxi'@g'Nw(-@r>     r   r  r  )r    	jnp_zerosr   r   r   r  )r5   r  s     r6   test_jnp_zeroszTestBessel.test_jnp_zeros	  s    !$$!#u .: .: .: (; (; <=		> 	> 	>
 A&&C--qu======r9   c           
          t          j        dd          }t          |t          g d          t          g d          t          g d          t          g d          fd           d S )NrN   r   r  r  )"@g+@g-9(1!@gȘ'@g>tA}-@)g0v@gjt@gH.?$@g}"O*@gGŧp0@)r    
jnyn_zerosr   r   )r5   jnzs     r6   test_jnyn_zeroszTestBessel.test_jnyn_zeros	  s     1%%!#u .: .: .: (; (;
 (- .: .: .: (; (;
 (- .: .: .: (; (;
 (- .: .: .: (; (;'<& =>'	? 	? 	? 	? 	?r9   c                     t          j        dd          }t          j        dd          t          j        dd          z
  dz  }t          ||d           d S )Nr@   rN   r   r`  )r    r  r  r   )r5   jvprimjv0s      r6   test_jvpzTestBessel.test_jvp
  sN    Qq!!z!Awz!A.1F3r*****r9   c                 z    t          j        d          }t          j        dd          }t          ||d           d S r  )r    r  r!  r   )r5   ozkozkrs      r6   r  zTestBessel.test_k0
  8    jnnz!BCQ'''''r9   c                 z    t          j        d          }t          j        dd          }t          ||d           d S r  )r    r  r$  r   )r5   ozkeozkers      r6   r  zTestBessel.test_k0e
  8    {2Ab!!Dq)))))r9   c                 z    t          j        d          }t          j        dd          }t          ||d           d S r  )r    r  r!  r   )r5   o1ko1krs      r6   r  zTestBessel.test_k1
  r  r9   c                 z    t          j        d          }t          j        dd          }t          ||d           d S r  )r    r  r$  r   )r5   o1keo1kers      r6   r  zTestBessel.test_k1e
  r  r9   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   rN   r   r@   r   re  r   r>   r   rD   r?  r>  g      H@)rS   rY   r    jacobir   r.  r   )
r5   rd  re  P0P1P2P3cpp2cp3cs
             r6   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:::::r9   c                 R    t          j        dd          }t          |dd           d S )Nr   r  _2?r>  )r    r  r   )r5   kn1s     r6   r  zTestBessel.test_kn6
  s,    j2C 2155555r9   c                 r    t          t          j        dd          t          j        dd                     d S Nr   r  r  r   r    r!  r4   s    r6   test_negv_kvzTestBessel.test_negv_kv:
  s0    WZS))7:dC+@+@AAAAAr9   c                 R    t          j        dd          }t          |dd           d S )Nr   r  r!  r`  r    r!  r   )r5   kv0s     r6   test_kv0zTestBessel.test_kv0=
  s,    j2C!3R88888r9   c                 R    t          j        dd          }t          |dd           d S )NrN   r  gKދ@r`  r(  )r5   kv1s     r6   test_kv1zTestBessel.test_kv1A
  ,    j3C!2B77777r9   c                 R    t          j        dd          }t          |dd           d S )Nr@   r  g)lHH@r`  r(  )r5   kv2s     r6   test_kv2zTestBessel.test_kv2E
  r.  r9   c                 L    t          t          j        dd          d           d S )N    rN   g.Ք"H)r   r    r  r4   s    r6   test_kn_largeorderzTestBessel.test_kn_largeorderI
  s%    
2q))+ABBBBBr9   c                 L    t          t          j        dd          d           d S )Nr   g =`XCr%  r4   s    r6   test_kv_largeargzTestBessel.test_kv_largeargL
  s$    WZ4((!,,,,,r9   c                 r    t          t          j        dd          t          j        dd                     d S r$  )r   r    r$  r4   s    r6   test_negv_kvezTestBessel.test_negv_kveO
  s0    W[c**GKc,B,BCCCCCr9   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  r>  r  )r    r$  r!  r   r   )r5   kve1r,  rZ  kve2r0  s         r6   test_kvezTestBessel.test_kveR
  s    {1R  j2s2ww&DQ'''{1Qj1ooc!ff$DQ'''''r9   c                 ~    d}t          t          j        d|           t          j        d|d          d           d S )Nr  rN   r   r\   r`  )r   r    r!  kvp)r5   rZ  s     r6   test_kvp_v0n1zTestBessel.test_kvp_v0n1[
  s=    WZ!__,gk!A.C.C.CRHHHHHr9   c                     d}d}t          j        |dz   |           ||z  t          j        ||          z  z   }t          j        ||d          }t          ||d           d S )Nr   r  rN   r>  r`  r    r!  r?  r   r5   rj  rZ  xcr!  s        r6   test_kvp_n1zTestBessel.test_kvp_n1_
  sj    j1Q!A#gj1oo"55K!q!!!B2&&&&&r9   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   r  r@   rN   r>  r`  rB  rC  s        r6   test_kvp_n2zTestBessel.test_kvp_n2f
  s    d1a4ik1a4'*Qq//1GJqs14E4Ea4GGK1"""B2&&&&&r9   c                 z    t          j        d          }t          j        dd          }t          ||d           d S r  )r    rA  rF  r   r  s      r6   rB  zTestBessel.test_y0m
  r  r9   c                 z    t          j        d          }t          j        dd          }t          ||d           d S r  )r    rY  rF  r   r  s      r6   rD  zTestBessel.test_y1r
  r  r9   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 )Nr@   rN   rO  r   rV  )r    y0_zerosr   r   rc  rI  )r5   yoypozozpor  allvals          r6   test_y0_zeroszTestBessel.test_y0_zerosw
  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Gr9   c                     t          j        d          }t          |t          dg          t          dg          fd           d S )NrN   r   gѮBO?r   )r    y1_zerosr   r   )r5   rY  s     r6   test_y1_zeroszTestBessel.test_y1_zeros
  sC    a  !"eWI&6&6ugY7G7G%HKKKKKr9   c                     t          j        dd          }t          |t          dg          t          dg          fd           d S )NrN   rK  yL
F%u?!rh?y;OnгY?r   )r    	y1p_zerosr   r   )r5   y1ps     r6   test_y1p_zeroszTestBessel.test_y1p_zeros
  sJ    !,,,!#um_'='=uoEV?W?W&XYZ[[[[[r9   c                     t          j        dd          }t          |t          ddg          d           t          j        dd          }t	          |g dd	           d S )
Nr>   r@   g3@g(A&"@r   r  )g]E.+"|@gH(|@gff|}@g&b`~@gHO_~@r  rG   )r    yn_zerosr   r   r   )r5   ans     r6   test_yn_zeroszTestBessel.test_yn_zeros
  s    a""!"UGW+=%>%>qAAAc!$$ 5 5 5;@	B 	B 	B 	B 	B 	Br9   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   r@   gQhվ@gzN@rD   +   r   r  r  r  r  )r    	ynp_zerosr   r   r   r  r5   aos     r6   test_ynp_zeroszTestBessel.test_ynp_zeros
  s    q##!"UJ
+C%D%DQGGGr!$$B++QU;;;;s1%%C,,ad;;;;;;r9   c                 z    t          j        dd          }t          t          j        d|          dd           d S )Nr  r   r   r   r  )r    r`  r   r  ra  s     r6   test_ynp_zeros_large_orderz%TestBessel.test_ynp_zeros_large_order
  s;    s1%%C,,ae<<<<<<r9   c                 R    t          j        dd          }t          |dd           d S NrN   r  5,1
r>  )r    rF  r   )r5   yn2ns     r6   rG  zTestBessel.test_yn
  s,    z!BD!4Q77777r9   c                 v    t          t          j        dd          t          j        dd           d           d S rh  )r   r    rI  r4   s    r6   test_negv_yvzTestBessel.test_negv_yv
  r  r9   c                 R    t          j        dd          }t          |dd           d S rg  )r    rI  r   )r5   yv2s     r6   rJ  zTestBessel.test_yv
  s,    j2C 3A66666r9   c                 v    t          t          j        dd          t          j        dd           d           d S rh  )r   r    rL  r4   s    r6   test_negv_yvezTestBessel.test_negv_yve
  r  r9   c                     t          j        dd          }t          |dd           t          j        dd          t	          d          z  }t          j        dd          }t          ||d           d S )NrN   r  rh  r>  r  rC   )r    rL  r   rI  r   )r5   yve2yve2ryve22s       r6   test_yvezTestBessel.test_yve
  sk    {1R  D!4Q777
1U##CGG+Ae$$E%*****r9   c                     t          j        dd          t          j        dd          z
  dz  }t          j        dd          }t          ||d           d S )NrN   r  r   r   r@   r`  )r    rI  r  r   )r5   yvpryvp1s      r6   test_yvpzTestBessel.test_yvp
  sR    
1R  7:a#3#33S8{1R  !$tB/////r9   c              #      K   g d}g d}t          j        ||          E d{V  t          j        dt          dd          z   dg          E d{V  dS )z>Yield points at which to compare Cephes implementation to AMOS)ir         4r  r  r  r   rz   {G(@r  r  )iri  rC   rz   r        i@g     y@g     Ă@g@  i'  Nry   irh  r  )	itertoolsproductr   )r5   rj  rZ  s      r6   _cephes_vs_amos_pointsz!TestBessel._cephes_vs_amos_points
  s       KJJ  $Q********* $S6#r??%:SEBBBBBBBBBBBr9   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 )NrN  u <7~r   )r  rH   rR   )	r  ri   rS   r   r   rc  r   rX  r   )r5   rz  f2rH   rR   skiprj  rZ  c1c2c3s              r6   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; ; ; ;	; 	;r9   ppc64lezfails on ppc64lerQ  c                 `    |                      t          j        t          j        dd           d S )NrP   u5% r   )r  r    r  r  r4   s    r6   test_jv_cephes_vs_amosz!TestBessel.test_jv_cephes_vs_amos
  +     	!!'*gju6!RRRRRr9   c                 `    |                      t          j        t          j        dd           d S )Nr  r  r   r  r    rI  rF  r4   s    r6   test_yv_cephes_vs_amosz!TestBessel.test_yv_cephes_vs_amos
  r  r9   c                 h    d }|                      t          j        t          j        dd|           d S )Nc                 (    t          |           dk    S )Nr  )rc  )rj  rZ  s     r6   r  zETestBessel.test_yv_cephes_vs_amos_only_small_orders.<locals>.<lambda>
  s    A r9   r  r  )rH   rR   r  r  )r5   skippers     r6   (test_yv_cephes_vs_amos_only_small_ordersz3TestBessel.test_yv_cephes_vs_amos_only_small_orders
  s4    ,,!!'*gju6X_!`````r9   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  r   )rS   r  r  r    r  r4   s    r6   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                    ||<   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 rN   ry   rC   r@   )r(  r  r>  r   r  r  rN  r  gYngH׊>)rS   rY   rZ   r  r  r  ri   r  r    r  r   rc  r   argmaxr   )	r5   r  rj  r!  imskr  r  dcr]   s	            r6    test_iv_cephes_vs_amos_mass_testz+TestBessel.test_iv_cephes_vs_amos_mass_test
  s<   
	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 	1qtQqT7:adAaD+A+A7:aPQdTUVWTXY[T[C\C\]^^^^^s   	CGG"Gc                     |                      t          j        t          j        dd           |                      t          j        t          j        dd           d S )Nr  r  r   )r  r    r!  r  r4   s    r6   test_kv_cephes_vs_amosz!TestBessel.test_kv_cephes_vs_amos
  sJ    !!'*gjt&!QQQ!!'*gjt&!QQQQQr9   c                     t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           d S )	Nr   r>   gP?r  r~  g~Omʒ?gY8E@@gKSn)r   r    r  r4   s    r6   test_ticket_623zTestBessel.test_ticket_623  s_    
1a((*=>>>
3--/ABBB
3	224GHHHHHr9   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 BesselsrC   rN   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?g333333ӿy333333?      ?rW  N)r   r    r  rI  r  r!  r  r   rL  r  r$  r  r  r4   s    r6   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d33WZd5K5KbQXQ[\`aeQfQfNf5fgggd33WZd5K5KbQXQ[\`aeQfQfNf5fgggggr9   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 domainsry   rC   rN   r   r@   r>   N)r   r   r    r  r  rI  r!  r  r  rL  r$  r;   r  anyr4   s    r6   test_ticket_854zTestBessel.test_ticket_8544  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Kr9   c                     t          t          j        dd          t          j        k               t          t          j        dd          t          j        k               d S )Nre  r   )r   r    r!  rS   r   r$  r4   s    r6   test_gh_7909zTestBessel.test_gh_7909E  sJ    
3""bf,---C##rv-.....r9   c                     t          t          j        dd          d           t          t          j        dd          d           dS )zReal-valued Bessel I overflowrN   i  g~rK   i`  g ?los~Nr   r    r  r4   s    r6   test_ticket_503zTestBessel.test_ticket_503I  sB    
1c**,ABBB
4..0EFFFFFr9   c                 L    t          t          j        dd          d           d S )Nr  rN   r  r  r4   s    r6   test_iv_hyperg_poleszTestBessel.test_iv_hyperg_polesN  s%    
4++->?????r9      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   r@   ry   rN   rC   r`  )r   r  r   r   r    r   r   r   r   rc  r  r   epssumr5   rj  rZ  r\   r]   rr  s          r6   	iv_serieszTestBessel.iv_seriesQ  s    1aLL''qsUC1II! 4 44wqs1u7M7MM%((FF!ffjjllU6]]..2S2ZZ]Buuww|r9   c                     dD ]@}|                      d|          \  }}t          t          j        |          |||           Ad S )Nrz   r   r}  r   rR   r  )r  r   r    r  r5   rZ  valuer  s       r6   test_i0_serieszTestBessel.test_i0_seriesY  X    ! 	G 	GA1--JE3GJqMM5sAFFFFF	G 	Gr9   c                     dD ]@}|                      d|          \  }}t          t          j        |          |||           Ad S )Nr  rN   r  )r  r   r    r  r  s       r6   test_i1_serieszTestBessel.test_i1_series^  r  r9   c           	          dD ]H}dD ]C}|                      ||          \  }}t          t          j        ||          ||||f           DId S )N)rz  r  r  r   rz   r{  r  )rz   r   r}  y             @r  )r  r   r    r  r5   rj  rZ  r  r  s        r6   test_iv_serieszTestBessel.test_iv_seriesc  sw    7 	S 	SA, S S!^^Aq11
s
1a 0 0%cAq6RRRRRS	S 	Sr9   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   rz   rP   rT  g0oO?ry   g!?grb?r	  gpH?r   gC~?r   ggo?r>  r  r  )r  r    r  r   r   r5   r   rn   r!  rj  r  s         r6   r  zTestBessel.test_i0i  s    *#,%%%%%& #6** 	B 	BIAv1AaR(BAq*q.AAAAA	B 	Br9   c                 z    t          j        d          }t          j        dd          }t          ||d           d S r  )r    r  r  r   )r5   oizeoizers      r6   r  zTestBessel.test_i0ew  r  r9   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   rP   gj|=rT  gȕ![1?ry   g;͘?rz   gRΜ?r   g|?r   g}f?r>  r  r  )r  r    r  r   r   r  s         r6   r  zTestBessel.test_i1|  s    *01%%%%& #6** 	B 	BIAv1AaR(BAq*q.AAAAA	B 	Br9   c                 z    t          j        d          }t          j        dd          }t          ||d           d S r  )r    r  r  r   )r5   oi1eoi1ers      r6   r  zTestBessel.test_i1e  r  r9   c                     t          t          j        d                    }t          |t          ddg          d           d S )Nr   gїJB?@g*u?)r   r    r  r   )r5   iti0s     r6   r  zTestBessel.test_iti0k0  sA    W^A&&''!$u.@BT-U'V'VWXYYYYYr9   c                 n    t          j        d          }t          |t          ddg          d           d S )NrT  gݳɄ|T?gVƥ
@rD   )r    r  r   r   )r5   it2ks     r6   r  zTestBessel.test_it2i0k0  s9    r""!$u.CEW-X'Y'YZ[\\\\\r9   c                 r    t          j        dd          t          d          z  }t          |dd           d S )Nr   rT  皙gv M?r`  )r    r  r   r   )r5   iv1s     r6   r  zTestBessel.test_iv  s7    j2s3xx'C 3B77777r9   c                 r    t          t          j        dd          t          j        dd                     d S r  )r   r    r  r4   s    r6   test_negv_ivezTestBessel.test_negv_ive  s0    W[1%%w{2a'8'899999r9   c                     t          j        dd          }t          j        dd          t          d          z  }t	          ||d           d S )Nr   rT  r  r`  )r    r  r  r   r   )r5   ive1r  s      r6   test_ivezTestBessel.test_ive  sG    {1R  j2s3xx'DR(((((r9   c                 t    t          t          j        dd          t          j        dd          d           d S )NrN   r@   r   r`  )r   r    r  ivpr4   s    r6   	test_ivp0zTestBessel.test_ivp0  s0    GJqOOW[1-=-=rBBBBBr9   c                     t          j        dd          t          j        dd          z   dz  }t          j        dd          }t          ||d           d S )Nr   r@   rN   r`  )r    r  r  r   rZ  s      r6   test_ivpzTestBessel.test_ivp  sN    Z!__wz!A.1K!Aa#####r9   )r  r   N)r  )UrU  rV  rW  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r&  r*  r-  r1  r4  r6  r8  r<  r@  rE  rG  rB  rD  rR  rU  rY  r]  rc  re  rG  rk  rJ  ro  rt  rx  r  r  rX  rY  rZ  platformmachiner  r  r  r  slowr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r]  r9   r6   r  r  z	  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\ \ \B B B< < <= = =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a a aV V V [_ _ _8R R RI I I
*h *h *hXL L L"/ / /G G G
@ @ @   G G G
G G G
S S SB B B* * *
B B B* * *
Z Z Z] ] ]8 8 8: : :) ) )
C C C$ $ $ $ $r9   r  c                       e Zd Zd Zd ZdS )TestLaguerrec                    t          j        d          }t          j        d          }t          j        d          }t          j        d          }t          j        d          }t          j        d          }t          |j        dgd           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   rN   r@   r   r>   r   re  rC   )rN   r~  r@   r   )rC   r  irD   r.  )rN   iH   ir  rv  )rC   r  i8iX  ir  r  )r    laguerrer   r.  r   )r5   lag0lag1lag2lag3lag4lag5s          r6   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Sr9   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   rN   r@   r   rC   r(  rz   r   r  r.  )rS   rY   r    r  r   r.  r   r   )r5   r]   r  r  r  r  s         r6   test_genlaguerrezTestLaguerre.test_genlaguerre  s.   bi   3&"1Q''"1Q''"1Q''"1Q''TVQC   TVR!H%%%DF5!B!HadQrT])C#D#DS#HIIIDF5"Q!WR1Xqs^QqS1Q3KQRSTQTDU)V#W#WX[#[\\\\\r9   N)rU  rV  rW  r  r  r]  r9   r6   r  r    s:        T T T	] 	] 	] 	] 	]r9   r  c                       e Zd Z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   rN   r@   r   r>   r   )r   r   rC   r   re  r  )r   r   r  r   )r  r   rE  r   r   r   )?   r   ir   rp   r   )r    legendrer   r.  r   r   )r5   leg0leg1leg2leg3leg4leg5s          r6   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Ar9   N)rU  rV  rW  r  r]  r9   r6   r  r    s(        B B B B Br9   r  c                       e Zd Zd ZdS )
TestLambdac           
      ~   t          j        dd          }t          t          j        dd          dt          j        dd          z  dz  g          t          t          j        dd          dt          j        dd          z  dz  dt          j        dd          z  dz  z   g          f}t          ||d           d S )NrN   rT  r   r@   r(  r   r>  )r    lmbdar   r  r  r  r   )r5   lamlamrs      r6   
test_lmbdazTestLambda.test_lmbda  s    mAb!!wz!B''7:a+;+;);B)>?@@w{1R(("WZ"-=-=*=c*AAgkRSTVFWFWDWXZDZ*Z[\\^!#d1-----r9   N)rU  rV  rW  r   r]  r9   r6   r  r    s#        . . . . .r9   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 )Nr`  rV  r?  re  r>  r    r)  r   r   )r5   l1pl1prls      r6   r*  zTestLog1p.test_log1p  sb    }R  '-"3"3W]25F5FGR#b''3r77+!#eA.....r9   c                     t          j        d          t          j        d          t          j        d          f}t          d          t          d          t          d          f}t          ||d           d S )NrN   皙?r  r@   r  r  r>  r  )r5   l1pml1pmrls      r6   test_log1pmorezTestLog1p.test_log1pmore  sb    a  '-"4"4gmC6H6HIa&&S#c((+!$va00000r9   N)rU  rV  rW  r*  r  r]  r9   r6   r  r    s2        / / /
1 1 1 1 1r9   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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?r@   r   rz   ry   rN   r   rD   rB   )r    clpmnr   r   r   )r5   rZ  clps      r6   
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 	 	 	 	 	r9   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 )	NrP   rN   r   ry   rW  r@   r   rB   )r    r  r   r   r2  r5   r  rA  r\   r!  clp_plus	clp_minuss          r6   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"#	% 	% 	% 	% 	%r9   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 )
NrP   rN   r   ry   rW  r   y             y              ?rB   )r    r  r   r   r2  rS   r   r   r  s          r6   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"#	% 	% 	% 	% 	%r9   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 )NHz>rN   rW  r@   r   r   rD   )r   r    r  )r5   r  rA  r\   r!  types         r6   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r9   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)rN   rC   r>   rN   )rj   r    r  r   rS   r   r  lpmn)r5   rZ  r\   rA  lps        r6   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 	9r9   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      ?      r  r  r  r  r@   r   r  )r   y        MbP?ry   r   rN   ri  rG   )r    r  r   )r5   zvalsrA  r\   r  rZ  happrox_derivatives           r6   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)-/ / / / ///	/ 	/r9   c                     t          j        ddd          }t          |t          g dg          t          g dg          fd           d S )Nr   r@   ry   rz   ry         r   rz   re  r>   )r    r  r   r   r5   r   s     r6   	test_lpmnzTestLegendreFunctions.test_lpmn1  s    \!Ab!!!"e .@ .@ .@ -A 'B 'B ', .? .? .? -@ 'A 'A&B
 CD	E 	E 	E 	E 	Er9   c                     t          j        dd          }t          |t          g d          t          g d          fd           d S )Nr@   ry   r(  r*  r>   )r    lpnr   r   )r5   lpnfs     r6   test_lpnzTestLegendreFunctions.test_lpn:  s    {1R  !$ /B /B /B )C )C ', -? -? -? '@ '@(A
 BC	D 	D 	D 	D 	Dr9   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   r@   ry   r)  rB   (   r   gI?r  r  rC   )r    r2  r   rS   r  r   r   r+  s     r6   r3  zTestLegendreFunctions.test_lpmvC  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   r@   ry   r>   rN   )r    lqmnlqnr   )r5   lqmnflqfs      r6   	test_lqmnzTestLegendreFunctions.test_lqmnO  sh    Qq$$k!B!%(1+c!fQ777!%(1+c!fQ77777r9   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 ?gh㈵>r@   rN   r   )rC   rC   N)r    r4  r   )r5   x0deltar!  lqr[  s         r6   test_lqmn_gt1z#TestLegendreFunctions.test_lqmn_gt1U  su     U(BuH% 	. 	.AaA&&q)&1B!A#a%yHH----	. 	.r9   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 )Nr>   r  )r   r   r   )r   rN   )r    r4  r   r'  )r5   rd  re  s      r6   test_lqmn_shapez%TestLegendreFunctions.test_lqmn_shape`  s~    |Aq#&&1QWf%%%QWf%%%|Aq#&&1QWf%%%QWf%%%%%r9   c                     t          j        dd          }t          |t          g d          t          g d          fd           d S )Nr@   ry   )gk+ݓ?g=yX5gW2)g|a2U?g~jt?gڊer>   )r    r5  r   r   )r5   r7  s     r6   test_lqnzTestLegendreFunctions.test_lqni  sb    k!B!#u-G-G-G'H'H',-E-E-E'F'F'HHI	K 	K 	K 	K 	Kr9   N)rU  rV  rW  r  r  r  r  r!  r&  r,  r0  r3  r8  r=  r?  rA  r]  r9   r6   r  r    s        
 
 

% 
% 
%
% 
% 
%M M M9 9 9/ / /E E ED D D
) 
) 
)8 8 8	. 	. 	.& & &K K K K Kr9   r  c                        e Zd Zd Zd Zd ZdS )TestMathieuc                     d S r  r]  r4   s    r6   r6  zTestMathieu.test_mathieu_aq  r  r9   c                 0    t          j        dd           d S )Nr@   r   )r    r*   r4   s    r6   test_mathieu_even_coefz"TestMathieu.test_mathieu_even_coeft  s    !!A&&&&&r9   c                     d S r  r]  r4   s    r6   test_mathieu_odd_coefz!TestMathieu.test_mathieu_odd_coefx  s    r9   N)rU  rV  rW  r6  rF  rH  r]  r9   r6   rC  rC  o  sA          ' ' '    r9   rC  c                       e Zd Zd Zd ZdS )TestFresnelIntegralc                     d S r  r]  r4   s    r6   rr  z$TestFresnelIntegral.test_modfresnelp  r  r9   c                     d S r  r]  r4   s    r6   rn  z$TestFresnelIntegral.test_modfresnelm  r  r9   N)rU  rV  rW  rr  rn  r]  r9   r6   rJ  rJ  }  s2              r9   rJ  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   rN   )g~T~Oֿgt_J?gm{@g@j'&@r   )r    
obl_cv_seqr   r   )r5   obls     r6   test_obl_cv_seqzTestOblCvSeq.test_obl_cv_seq  sT     1Q''!#e -9 -9 -9 ': ': ;<	= 	= 	= 	= 	=r9   N)rU  rV  rW  rR  r]  r9   r6   rN  rN    s#        = = = = =r9   rN  c                   2    e 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 )NrN   rT  gQ?gx$(~?gx$(~g(\?r>   )r    pbdn_seqr   r   )r5   pbs     r6   test_pbdn_seqz#TestParabolicCylinder.test_pbdn_seq  si    a##!"eV.4-6 '7 '7&+W-3-5 '6 '6&7 89	: 	: 	: 	: 	:r9   c                     t          j        dd           dt          j        dd          d         z  t          j        dd          d         z
   d S )NrN   r  rT  r   )r    r  r4   s    r6   r  zTestParabolicCylinder.test_pbdv  sL    Qra##A&&a););A)>>>>>r9   c                     t          j        dd          }t          j        dd          }t          |t	          |d                   t	          |d                   fd           d S )NrN   rT  r   r>   )r    rV  pbdv_seqr   r   )r5   pbnpbvs      r6   test_pbdv_seqz#TestParabolicCylinder.test_pbdv_seq  sW    q$$q$$!#tCF||DQLL&A!DDDDDr9   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 )Nri  r`  r   r@   ry   r   r   r   r   gGz$@gq=
ףp4@gHQ9rt   rG   g(\#gQ@gkS a>)rS   rW  r   r   r    r   r   r  )r5   etarZ  s      r6   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Wr9   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 Nr~  r>   r>  ri  r`  r   r  r   r   rN   r_  r   )rS   rW  r    r  rc  r   r5   r!  r`  rh  r  dps         r6   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7r9   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 rc  )rS   rW  r    r  rc  r   rd  s         r6   test_pbvv_gradientz(TestParabolicCylinder.test_pbvv_gradient  rg  r9   N)	rU  rV  rW  rX  r  r^  ra  rf  ri  r]  r9   r6   rT  rT    st        : : :? ? ?E E E
X X X8 8 88 8 8 8 8r9   rT  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 )Nr@   rN   r   gX];r`  gOV,@@)r@   r   g  8Br   r  r  )g2}jg.M?g}2;ο)r    	polygammar   r  rS   r  )r5   poly2poly3r!  r\   r[  s         r6   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>>><
1--G-aqc!e1D1DEE$	& 	& 	&G-blA3q5.A.A1EE$	& 	& 	& 	& 	&r9   N)rU  rV  rW  rp  r]  r9   r6   rk  rk    s#        & & & & &r9   rk  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   rN   )g"~j?g6?Ң@g)u8F"@g2g)@r   )r    
pro_cv_seqr   r   )r5   prols     r6   test_pro_cv_seqzTestProCvSeq.test_pro_cv_seq  sT    !!Aa((!$u .: .: .: (; (; <=	> 	> 	> 	> 	>r9   N)rU  rV  rW  rv  r]  r9   r6   rr  rr    s#        > > > > >r9   rr  c                       e Zd Zd ZdS )TestPsic                 P    t          j        d          }t          |dd           d S )NrN   goxr>  )r    r  r   )r5   pss     r6   r  zTestPsi.test_psi  s(    [^^B3A66666r9   N)rU  rV  rW  r  r]  r9   r6   rx  rx    s#        7 7 7 7 7r9   rx  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   )r5   rads     r6   r  zTestRadian.test_radian  s1    nR!$$C3q)))))r9   c                 j    t          j        ddd          }t          |t          dz  dz   d           d S )Nr  rN   rh  r@   gC?r   r~  )r5   rad1s     r6   test_radianmorezTestRadian.test_radianmore  s7    ~b2&&DA&;!;A>>>>>r9   N)rU  rV  rW  r  r  r]  r9   r6   r|  r|    s2        * * *? ? ? ? ?r9   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)r@   r  T)
derivativer   rN   r>  )rS   emptyrj   r    spherical_jnr   
riccati_jn)r5   r  r!  Sr\   ry  jps          r6   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Ar9   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 r  )rS   r  rj   r    spherical_ynr   
riccati_yn)r5   r  r!  Cr\   rY  yps          r6   test_riccati_ynzTestRiccati.test_riccati_yn  r  r9   N)rU  rV  rW  r  r  r]  r9   r6   r  r    s:        B B BB B B B Br9   r  c                       e Zd Zd ZdS )	TestRoundc                    t          t          t          t          j        d          t          j        d          t          j        d          t          j        d          f                    }d}t          ||           d S )Ng333333$@g$@r  g333333%@)r`  r`  r`  rV  )r  mapri   r    r  r   )r5   rndrndrls      r6   r  zTestRound.test_round  sk    3sGM$//d0C0CGMRVDWDWX_XefjXkXklmmnn 3u%%%%%r9   N)rU  rV  rW  r  r]  r9   r6   r  r    s#        	& 	& 	& 	& 	&r9   r  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   ry   r(  r@   r   r>   r   g      .@r   rp   rW  rG  r   g      ?r   g      @rN   r   r.  g      ?g     A@)	r    sph_harmrS   r   r   r   r	   r
   r   )shr   r   r   r	   r
   s         r6   test_sph_harmr    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-. . . . .r9   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 r1   )rS   dtype
complex128r   r    r  )dts    r6   "test_sph_harm_ufunc_loop_selectionr  /  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@@@@@r9   c                   (    e Zd ZddZd Zd Zd ZdS )
TestStruverD  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   rC   ry   r@   rN   re  )	r   r    r   rc  r  r   r   r  r  r  s          r6   _serieszTestStruve._series;  s    1aLL!Gr!tqs1uQw''ae(<(<<W]1Q3s7=S=SS!ffjjllU6]]..2uuww|r9   c                     dD ]J}dD ]E}|                      ||          \  }}t          t          j        ||          |d|          ||ff FKdS )z-Check Struve function versus its power series)
iri  (\r   rC   r   rN   r  r{     )rN   r`  r  rP  rJ   r   r   N)r  r   r    r8  r  s        r6   test_vs_serieszTestStruve.test_vs_seriesB  s    B 	W 	WA( W W!\\!Q//
sq! 4 4e!#NNNQRTUPVVVVW	W 	Wr9   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 )Nr  rP  g;cv=?r  rG   gQ g< j?r  r  r  g?rt   g       igzz?r  i)   r?  r|  rV  gffffffrC   g333333$)r   r    r8  r   r   r   r4   s    r6   test_some_valueszTestStruve.test_some_valuesI  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1r9   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    r8  r4   s    r6   test_regression_679zTestStruve.test_regression_679V  s    tY77i9X9XYYYtY77i9X9XYYYtY77i9X9XYYYYYr9   N)rD  )rU  rV  rW  r  r  r  r  r]  r9   r6   r  r  :  s]           W W W2 2 2Z Z Z Z Zr9   r  c                  L    t          t          j        dd          d           d S )Nr$  r   gdX	
?)r   r    r   r]  r9   r6   test_chi2_smalldfr  ]  s%    c!,,.?@@@@@r9   c                  `    t          t          j        dt          j                  d           d S )Nr1  rz   )r   r    r   rS   r   r]  r9   r6   test_ch2_infr  a  s&    s26**C00000r9   c                  L    t          t          j        dd          d           d S )Nr$  r   yj_?)r   r    r   r]  r9   r6   test_chi2c_smalldfr  e  s%    s1--/BCCCCCr9   c                  L    t          t          j        dd          d           d S )Nr$  r  r   )r   r    r   r]  r9   r6   test_chi2_inv_smalldfr  i  s%    s+>??CCCCCr9   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 )'NrF   rN   r@   gDSYC?rG   gQ_?g?@g>;,
i}@r   )rN   r   r   g=O?rC   r(  r  rD   gXs*@re  g   V4oAgO1eAgꌠ9Y>)FgEg^ 9^;gd-?gP.5_gsTNNeg6dgu?j/ g]XC}KdgѧRg"!x{{ rz   g][#!Rr  gٍS1gN_ r   c   r`  )r   r    agmrS   r   r   r  r  r   r   r   )rH   agm13agm15agm35agm12fis         r6   test_agm_simpler  m  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3r9   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  rN   rU  g?r@   gffffff@)r   r,  r-  r   r    expnrz  rw  r}  r  r  rF  r  r%  )r/  s    r6   test_legacyr    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 )NrN   y        .B}T)r  r    SpecialFunctionErrorr  r]  r9   r6   test_error_raisingr    s!    '.
AuEEEEEr9   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   )rS   r  r   r   r!  rY  s     r6   xfuncztest_xlogy.<locals>.xfunc  s    [*** 	# 	#Avvbhqkkv	# 	# 	# 	# 	# 	# 	# 	# {		# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#   A"A""A&)A&r   r   r   rz   r   r  )r   rW  )rN   rW  rN   rF   r   )
rS   r   r   r   rk   r   rq   r,   r    xlogy)r  z1z2w1w2s        r6   
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Dr9   c                     d } t          j        ddt           j        fdt           j        fddgt                    } t          j        |           |d d df         |d d df                   }t          t          j        ||dd	           d S )
Nc                     t          j        d          5  | dk    r"t          j        |          s| cd d d            S | t          j        |          z  cd d d            S # 1 swxY w Y   d S r  )rS   r  r   r)  r  s     r6   r  ztest_xlog1py.<locals>.xfunc  s    [*** 	' 	'Avvbhqkkv	' 	' 	' 	' 	' 	' 	' 	' 28A;;		' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'r  r  r   r  )rN   gKH9r  rN   rF   r   )	rS   r   r   r   rk   rq   r,   r    xlog1py)r  r  r  s      r6   test_xlog1pyr    s    ' ' ' 
UQK!RVj!(-
/ 
/ 
/B	e		R!Wb1g	.	.Bgor2EFFFFFFr9   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 r1   )rS   r   r    r  )r!  s    r6   r  ztest_entr.<locals>.xfunc  s)    q55F7NM!Q''''r9   r   ry   rz   rC   rN   r  otypesrF   r   )rS   r   r  r  rt  r   rk   rq   r  r,   r    entr)r  r   signsr  sgnrj  rZ  rS  s           r6   	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Ar9   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 r1   )rS   r   isposinfr    r  r  s     r6   r  ztest_kl_div.<locals>.xfunc  s~    q55AEEa1ffa6M[^^ 	1r{1~~ 	16M!VVH=AaC((1,q00r9   r   ry   rz   rC   rN   r  r  r   rF   r   )r  r  rt  rS   r   rk   rq   r  r,   r    kl_div
r  r   r  r  sgnavasgnbvbrZ  rS  s
             r6   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Cr9   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 r1   )r    r  rS   r   r  s     r6   r  ztest_rel_entr.<locals>.xfunc  sF    q55QUU=AaC(((!VVQ16Mr9   r  rC   rN   r  r  r   rF   r   )r  r  rt  rS   r   rk   rq   r  r,   r    rel_entrr  s
             r6   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Er9   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 )NrC   re  r@   ry   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   ry   )rS   r   rc  squarer;  r  s     r6   r  ztest_huber.<locals>.xfunc  sT    1996MVAYY1%%BF1IIe344r9   r`  r  r   rN   rF   r   )r   r    huberrS   r   r   r  rY   randnrq   r  r,   r  rZ  rS  s      r6   
test_huberr    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Br9   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   r@   rN   )rS   r   r   r  s     r6   r  z test_pseudo_huber.<locals>.xfunc(  sQ    1996M 	> 	>1!8rwqAeGa<'7881<==r9   r`  r@   r   ry   r  rN   rF   r   )
rS   r   rY   r  tolistrq   r  r,   r    pseudo_huberr  s      r6   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Ir9   c                  `    d} d}t          j        | |          }d}t          ||d           d S )Nrz   gC]r2<gs.-De8rF   rG   )r    r  r   )r;  r  rY  r[  s       r6   test_pseudo_huber_small_rr  5  s@    EAUA&&A &HAxe,,,,,,r9   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  rK   )rX  r  r-  r)   r*   r]  r9   r6   test_runtime_warningr  B  s   	n>
@ 
@ 
@ % %t$$$% % % % % % % % % % % % % % % 
n>
@ 
@ 
@ & &$%%%& & & & & & & & & & & & & & & & & &s   9= =A==BB)sr  r  r3  numpyrS   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   rX  r   r  numpy.testingr   r   r   r   r   r   r   r   r   scipyr    scipy.special._ufuncs_ufuncsr2   scipy.specialr!   r"   r#   r$   r%   r&   r'   r(   r)   r*   scipy.special._testutilsr+   r,   r-   r!  r/   r_  r  r  r  r  r  r  r  rT  ra  objectr  r  r  r  r  r  r6  rN  rf  r  r  r  r  r  r  r  rC  rJ  rN  rT  rk  rr  rx  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r]  r9   r6   <module>r     s
  (      



    J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J J  * * * * * *                     
       & & & & & & & & & 2 2 2 2 2 2 2 2 2 2 E E E E E E E E E E E E E E = = = = = = = =! ! ! ! ! ! ! ! ! ! t9 t9 t9 t9 t9 t9 t9 t9nkG kG kG kG kG kG kG kG\. . . . . . . .       
V> V> V> V> V> V> V> V>r9 9 9 9 9 9 9 9' ' ' ' ' ' ' '*J$ J$ J$ J$ J$ J$ J$ J$ZB+ B+ B+ B+ B+ B+ B+ B+J: : : : : : : ::DT DT DT DT DT DT DT DTNG0 G0 G0 G0 G0v G0 G0 G0T)= )= )= )= )= )= )= )=V_B _B _B _B _B _B _B _BD- - - - - - - -2/ / / / / / / /@eF eF eF eF eF eF eF eFPA. A. A. A. A. A. A. A.H/, /, /, /, /, /, /, /,d /  /  /  /  /  /  /  /FU6 U6 U6 U6 U6 U6 U6 U6pn$ n$ n$ n$ n$ n$ n$ n$b] ] ] ] ] ] ] ]8B B B B B B B B . . . . . . . .	1 	1 	1 	1 	1 	1 	1 	1AK AK AK AK AK AK AK AKH              = = = = = = = =+8 +8 +8 +8 +8 +8 +8 +8\& & & & & & & &2> > > > > > > >7 7 7 7 7 7 7 7? ? ? ? ? ? ? ?B B B B B B B B,
& 
& 
& 
& 
& 
& 
& 
&. . .:A A A Z  Z  Z  Z  Z  Z  Z  ZF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
- 
- 
-& & & & &r9   