
    gezl                       d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ 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,m0Z0m1Z1m2Z2m3Z3m4Z4 d dl,m5Z5m6Z6 d d	l7m8Z8m9Z9 d d
l:m;Z;m<Z<m=Z= d dl>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          ZE G d d          ZF G d d          ZG G d d          ZH G d d           ZI G d! d"          ZJ G d# d$          ZK G d% d&          ZL G d' d(          ZM G d) d*          ZN G d+ d,          ZO G d- d.          ZP G d/ d0          ZQ G d1 d2          ZR G d3 d4          ZS G d5 d6          ZT G d7 d8          ZU G d9 d:          ZV G d; d<          ZW G d= d>          ZX G d? d@          ZY G dA dB          ZZ G dC dD          Z[ G dE dF          Z\ G dG dH          Z] G dI dJ          Z^ G dK dL          Z_ G dM dN          Z` G dO dP          Za G dQ dR          Zb G dS dT          ZcdU ZddV Ze G dW dX          ZfdY ZgdZ Zhd[ Zid\ Zjd] Zkd^ Zle;d_             Zmd` Znda Zodb Zpdc Zqdd Zrde Zsdf Ztdg Zudh ZvdS )i    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)_FACTORIALK_LIMITS_64BITS_FACTORIALK_LIMITS_32BITS)with_special_errorsassert_func_equalFuncDatac                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0d/ 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    >lib/python3.11/site-packages/scipy/special/tests/test_basic.py	test_airyzTestCephes.test_airy4       A    c                 .    t          j        d           d S r3   )r4   airyer6   s    r8   
test_airyezTestCephes.test_airye7   s    Qr;   c           	         t          j        g d          }t          j        g d          }t          j        t          j        |d d d f         |d d d f                                                 dd          j        }t          j        g dg dg dg dg          }t          t          j        |                                |d	
           t           j	        
                    d           t           j        t          j        dd          dt           j	                            d          z  dz
  f         }t          j        dd          }t          j        t          j        |d d d f         |d d d f                                                 dd          j        }t          t          j        t          j        |d d df         |d d df         dz            |dd           d S )N)gL7A`?   g@   )   皙?   gffffff
@rB   )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           ?绽|=atolrJ   )npr   broadcast_arraysreshapeTr.   r4   binomravelrandomseedr   r   rand)r7   nknkrknowns        r8   
test_binomzTestCephes.test_binom:   s   H((())H%%%&&Xb)!AAAdF)QtAAAvY??  2q 	 # # ##Q#Q#QFFF@@@B C C 	&,GGGG 		tE")B##T")..*<*<%<s%BBCIaXb)!AAAdF)QtAAAvY??  2q 	 	&, ,r!!!A#w111Q390EFF$5	2 	2 	2 	2 	2 	2r;   c           	         t           j                            d           t           j        t          j        ddd                   }t          j        dd          }t          j        t          j        |d d d f         |d d d f                                                 dd          j	        }t          t          j        t          j        |d d df         |d d df         d	z            |d
d
           d S )NrK   rP   ,     r   rO   rB   rE   rQ   rR   rS   )rU   r[   r\   r   logspacer   r   rV   rW   rX   r.   r4   rY   )r7   r^   r_   r`   s       r8   test_binom_2zTestCephes.test_binom_2Q   s    
	tE"+ab))*IaXb)!AAAdF)QtAAAvY??  2q 	 	&, ,r!!!A#w111Q390EFF$5	2 	2 	2 	2 	2 	2r;   c           	      "   t           j        d             }t           j                            d           t          j        dd          }t          j        dd          }t          j        t          j        |d d d f         |d d d f                                                 dd          j        }||d d df         |d d df         k             }t          t          j         ||d d df         |d d df                   |dd           d S )	Nc                     t          |           } t          |          }t          d          }t          d          }t          d|dz             D ]}||| z   |z
  z  }||z  }t          ||z            S NrP   )intrangefloat)r^   r_   numdenis        r8   	binom_intz.TestCephes.test_binom_exact.<locals>.binom_int_   sv    AAAAa&&Ca&&C1ac]]  q1uqy qS>>!r;   rK   rP      r   rB   rE   rS   )rU   	vectorizer[   r\   r   r   rV   rW   rX   r.   r4   rY   )r7   rq   r^   r_   r`   s        r8   test_binom_exactzTestCephes.test_binom_exact^   s   		" 	" 
	" 		tIaIaXb)!AAAdF)QtAAAvY??  2q 	111Q32aaac7"#&,#)BqqqsGR!W55 q	* 	* 	* 	* 	* 	*r;   c                     g d}t          j        |          }t          t          j        |ddd                                           d S )N))rM   rN   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   rP   rB   -q=rI   )rU   r   r/   r4   rY   check)r7   datasets     r8   test_binom_nooverflow_8346z%TestCephes.test_binom_nooverflow_8346u   sQ    
 
 
" *W%%w>>>DDFFFFFr;   c                 N    t          t          j        ddd          d           d S )NrP         ?      ?)r   r4   bdtrr6   s    r8   	test_bdtrzTestCephes.test_bdtr   s&    V[1S))#.....r;   c                 N    t          t          j        ddd          d           d S NrP      r{   )r   r4   bdtrir6   s    r8   
test_bdtrizTestCephes.test_bdtri   &    V\!Ac**3/////r;   c                 N    t          t          j        ddd          d           d S r   )r   r4   bdtrcr6   s    r8   
test_bdtrczTestCephes.test_bdtrc   r   r;   c                 N    t          t          j        ddd          d           d S NrP   r         @)r   r4   bdtrinr6   s    r8   test_bdtrinzTestCephes.test_bdtrin   &    V]1Qq))#.....r;   c                 2    t          j        ddd           d S r   )r4   bdtrikr6   s    r8   test_bdtrikzTestCephes.test_bdtrik   s    a#r;   c                 J    t          t          j        d          d           d S Nr           )r   r4   beir6   s    r8   test_beizTestCephes.test_bei        VZ]]3'''''r;   c                 J    t          t          j        d          d           d S r   )r   r4   beipr6   s    r8   	test_beipzTestCephes.test_beip        V[^^C(((((r;   c                 J    t          t          j        d          d           d S Nr   r|   )r   r4   berr6   s    r8   test_berzTestCephes.test_ber   r   r;   c                 J    t          t          j        d          d           d S r   )r   r4   berpr6   s    r8   	test_berpzTestCephes.test_berp   r   r;   c                 N    t          t          j        ddd          d           d S r   )r   r4   
besselpolyr6   s    r8   test_besselpolyzTestCephes.test_besselpoly   s'    V&q1--c22222r;   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 )NrP   r|   33333YN~h?   g6.8@rH   r   rJ   rT   )r   r4   betar   gammar6   s    r8   	test_betazTestCephes.test_beta   s{    V[1%%c***FF33V\&5I5IJJJFC002D"	, 	, 	, 	, 	, 	,r;   c                     t          t          j        ddd          d           t          t          j        ddd          d           d S )NrP   r|   r   r   rR   g*?)r   r4   betaincr   r6   s    r8   test_betainczTestCephes.test_betainc   sE    V^Aa**3///vsE::<OPPPPPr;   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 )NrP   r   r   r   r      gIs	@+=r   r   )r   r4   betalnr   gammalnr6   s    r8   test_betalnzTestCephes.test_betaln   s{    V]1Q'',,,ff55v~f7M7MNNNfc224F"	, 	, 	, 	, 	, 	,r;   c                     t          t          j        ddd          d           t          t          j        ddd          ddd	           d S )
NrP   r|   r   r         ?g"
Yx;gAfc=r   r   )r   r4   
betaincinvr   r6   s    r8   test_betaincinvzTestCephes.test_betaincinv   s`    V&q1--c222)&#t<<.U	D 	D 	D 	D 	D 	Dr;   c                 n    t          t          j        t          j        dd                               d S )NrE   rB   )r   rU   isinfr    r   r6   s    r8   test_beta_infzTestCephes.test_beta_inf   s,    b!,,--.....r;   c                 N    t          t          j        ddd          d           d S NrP   r|   )r   r4   btdtrr6   s    r8   
test_btdtrzTestCephes.test_btdtr   &    V\!Aa((-----r;   c                 N    t          t          j        ddd          d           d S r   )r   r4   btdtrir6   s    r8   test_btdtrizTestCephes.test_btdtri   r   r;   c                 N    t          t          j        ddd          d           d S NrP   r   )r   r4   btdtriar6   s    r8   test_btdtriazTestCephes.test_btdtria   &    V^Aa**3/////r;   c                 N    t          t          j        ddd          d           d S r   )r   r4   btdtribr6   s    r8   test_btdtribzTestCephes.test_btdtrib   r   r;   c                 J    t          t          j        d          d           d S r   )r   r4   cbrtr6   s    r8   	test_cbrtzTestCephes.test_cbrt   s     FKNN3/////r;   c                 L    t          t          j        dd          d           d S NrP   r   r   )r   r4   chdtrr6   s    r8   
test_chdtrzTestCephes.test_chdtr   s$    V\!A&&s+++++r;   c                 L    t          t          j        dd          d           d S NrP   r   r|   )r   r4   chdtrcr6   s    r8   test_chdtrczTestCephes.test_chdtrc   $    V]1Q'',,,,,r;   c                 L    t          t          j        dd          d           d S NrP   r   )r   r4   chdtrir6   s    r8   test_chdtrizTestCephes.test_chdtri   r   r;   c                 L    t          t          j        dd          d           d S )Nr   r   )r   r4   chdtrivr6   s    r8   test_chdtrivzTestCephes.test_chdtriv   s$    V^Aa((-----r;   c                    t          t          j        ddd          d           t          j        g dg dg dg dg dg d	g d
g dg dg dg dg dg dg          }t          j        |d d df         |d d df         |d d df                   }t          ||d d df         d           t          t          j        t          j        t          j        d          d           t          t          j        ddt          j                  d           t          t          j	        t          j        t          j
        dd                               t          t          j	        t          j        dt          j
        d                               t          t          j	        t          j        ddt          j
                                       d S )Nr   rP   r   )      9@      4@  gL94)r          @   g7Fh9)MbP?r         D@ggåc;){Gz?r   r   g	;)r          @k   g8x@x>)g     6@r   r   gg1\>>)r   r   r   g`>)      @r   r|   gp!P?)g     u@g     r@      $@g j
?)      Y@      +@r   g]?)g     @r   r   g4ۙ?)g     b@r   r   g?)g      d@r   r   r|   rB   r   rv   rI   r      )r   r4   chndtrrU   r   r   r   r   r   r   nan)r7   valuescdfs      r8   test_chndtrzTestCephes.test_chndtr   s   V]1Qq))#...
 999999999:::999999999666666666666666666
   mF111a4L&A,qqq!tEEVAAAqD\6666FM"&"&!<<cBBBFM!Q77===rvq!4455666q"&!4455666q!RV445566666r;   c                 N    t          t          j        ddd          d           d S Nr   rP   r   )r   r4   	chndtridfr6   s    r8   test_chndtridfzTestCephes.test_chndtridf   '    V%a!,,S11111r;   c                 N    t          t          j        ddd          d           d S r   )r   r4   	chndtrincr6   s    r8   test_chndtrinczTestCephes.test_chndtrinc   r   r;   c                 N    t          t          j        ddd          d           d S Nr   rP   r   )r   r4   chndtrixr6   s    r8   test_chndtrixzTestCephes.test_chndtrix   &    V_Qq++C00000r;   c                 J    t          t          j        d          d           d S r   )r   r4   cosdgr6   s    r8   
test_cosdgzTestCephes.test_cosdg       V\!__S)))))r;   c                 J    t          t          j        d          d           d S r   )r   r4   cosm1r6   s    r8   
test_cosm1zTestCephes.test_cosm1  r  r;   c                 J    t          t          j        d          d           d S N-   r|   )r   r4   cotdgr6   s    r8   
test_cotdgzTestCephes.test_cotdg	  s"    FL,,S11111r;   c                     t          t          j        d          d           t          t          j        d          d           d S )Nr   r   gGz?gf?)r   r4   dawsnr   r6   s    r8   
test_dawsnzTestCephes.test_dawsn  s;    V\!__S)))T**,?@@@@@r;   c                    g d}t          j        dt           j        z  dz                                 t           j                  }t          t          j        ||          dd           t          j        dt           j        z  dz                                 t           j                  }t          t          j        ||          dd           t          j        dt           j        z  d	z                                 t           j                  }t          t          j        ||          dd           t          t           d
          rft          j        dt           j        z  dz                                 t           j
                  }t          t          j        ||          dd           g d}t          j        dt           j        z  dz                                 t           j                  }t          t          j        ||          dd           t          j        dt           j        z  dt           j        z  dt           j        z            }g d}t          t          j        |d          |d           d S )N)rP   r      rB   g-C6
?r|   rD   decimal&.>rr   V瞯<float128rv      )rB   r@            皙?)gg?gsOB?gsaL?g
7I^ʿr   )rU   r   r   astypefloat32r   r    diricfloat64hasattrr  r   )r7   n_oddxn_evenoctave_results        r8   
test_diriczTestCephes.test_diric  s    

HQruWt^$$++BJ77GM!U33S!DDDDHQruWt^$$++BJ77GM!U33S"EEEEHQruWu_%%,,RZ88GM!U33S"EEEE2z"" 	J255))00==Aa 7 7bIIIIHQruWt^$$++BJ77GM!V44dBGGGG Ic"%iRUCI66@ @ @GM!Q//KKKKKKr;   c                     t          j        d          }t          j        g d          }t          t	          j        |d d t           j        f         |          j        |j        |j        fk               d S )Nr   )rP   r   rD   )	rU   r   r   r   r    r  newaxisshapesize)r7   r#  r^   s      r8   test_diric_broadcastingz"TestCephes.test_diric_broadcasting)  sb    IaLLHYYYa2:.228QVQV<LLMMMMMr;   c                 J    t          t          j        d          d           d S r   )r   r4   r!   r6   s    r8   test_ellipezTestCephes.test_ellipe.  "    V]1%%c*****r;   c                 L    t          t          j        dd          d           d S r   )r   r4   	ellipeincr6   s    r8   test_ellipeinczTestCephes.test_ellipeinc1  %    V%a**3/////r;   c                 0    t          j        dd           d S Nr   rP   )r4   ellipjr6   s    r8   test_ellipjzTestCephes.test_ellipj4  s    ar;   c                 P    t          t          d          t          dz             d S )Nr   rB   )r   r"   r   r6   s    r8   test_ellipkzTestCephes.test_ellipk7  s"    q		2a4(((((r;   c                 L    t          t          j        dd          d           d S r   )r   r4   	ellipkincr6   s    r8   test_ellipkinczTestCephes.test_ellipkinc:  r2  r;   c                 J    t          t          j        d          d           d S r   r   r4   erfr6   s    r8   test_erfzTestCephes.test_erf=  s     VZ]]C(((((r;   c                 z    d}t          t          j        |          t          j        |           z   d           d S )Ng#8x@r   r=  r7   r#  s     r8   test_erf_symmetryzTestCephes.test_erf_symmetry@  s4    VZ]]VZ^^3S99999r;   c                 J    t          t          j        d          d           d S r   )r   r4   erfcr6   s    r8   	test_erfczTestCephes.test_erfcD  s     V[^^S)))))r;   c                 J    t          t          j        d          d           d S )NrB   r   )r   r4   exp10r6   s    r8   
test_exp10zTestCephes.test_exp10G  s     FLOOE22222r;   c                 J    t          t          j        d          d           d S )NrB         @)r   r4   exp2r6   s    r8   	test_exp2zTestCephes.test_exp2J  r   r;   c                 |   t          t          j        d          d           t          t          j        t          j                  t          j                   t          t          j        t          j                   d           t          t          j        t          j                  t          j                   d S )Nr   r   rE   )r   r4   expm1rU   r   r   r6   s    r8   
test_expm1zTestCephes.test_expm1M  sz    V\!__S)))V\"&))26222V\26'**B///V\"&))2622222r;   c                 
   t           j        }t           |d          d           t           |t          t          j        d                    t          t          j        d                     t           |t          t          j        d                    t          t          j        t          j                             t           |t          t          j        d                    t          t          j         t          j                             t           |t          t          j        d                    t          t          j         t          j                              t           |t          t          j        d                    t          t          j        t          j                              t           |t          dt          j                            t          t          j        t          j                             t           |t          dt          j                            t          t          j        t          j                             t           |t          t          j        t          j                            t          t          j        t          j                             t           |t          t          j         t          j                            t          dd                     t           |t          t          j         t          j                            t          dd                     t           |t          t          j        t          j                            t          t          j        t          j                             t           |t          dt          j                            t          t          j        t          j                             t           |t          dt          j                            t          t          j        t          j                             t           |t          t          j        d                    t          t          j        t          j                             t           |t          t          j        t          j                            t          t          j        t          j                             d S )N                r   rP   rB   r@   r   rE   )r4   rN  r   complexrU   r   r   )r7   rN  s     r8   test_expm1_complexzTestCephes.test_expm1_complexS  s;   UU6]]F+++UU7261--..0B0BCCCUU7261--..0G0GHHHUU7261--..0H0HIIIUU7261--.."&0I0IJJJUU7261--..0H0HIIIUU71bf--..0G0GHHHUU71bf--..0G0GHHHUU726262233WRVRV5L5LMMMUU7BF7BF3344gb!nnEEEUU7BF7BF3344gb!nnEEEUU726262233WRVRV5L5LMMMUU71bf--..0G0GHHHUU71bf--..0G0GHHHUU7261--..0G0GHHHUU726262233WRVRV5L5LMMMMMr;   z-The real part of expm1(z) bad at these pointsreasonc                 P   t          j        g d          }t          j        t          j        |                     }|d|z  z   }t          j        g d          }t	          j        |          }t          |j        |j        d           t          |j        |j        d           d S )N)皙?r  333333?r      re                 ?)y=Cw?yC7gg)gF<Ug?yQ<D*?yg:><sKy>񸣼$	Um>ly;Vl <@r   re   )	rU   r   r   r
   r4   rN  r   imagr   )r7   yr#  zexpectedfounds         r8   test_expm1_complex_hardz"TestCephes.test_expm1_complex_hardf  s     H///00VBF1II1H 8 J J J K K Q&uz8=!DDD&uz8="EEEEEr;   c                     t          t          j        ddd          d           t          t          j        ddd          dd	           d S )
NrP   r   r   ư>r   
   g2?rv   rI   )r   r4   fdtrr   r6   s    r8   	test_fdtrzTestCephes.test_fdtr{  sW    V[Aq))3///D!R002D"	$ 	$ 	$ 	$ 	$ 	$r;   c                     t          t          j        ddd          d           t          t          j        ddd          dd	           d S )
NrP   r   r|   rB   rW  g    _BgDIXl?rv   rI   )r   r4   fdtrcr   r6   s    r8   
test_fdtrczTestCephes.test_fdtrc  sY    V\!Q**C000 	QT224G"	$ 	$ 	$ 	$ 	$ 	$r;   c                     t          t          j        ddddg          t          ddg          d           d}t          t          j        d	d|          d
d           d S )NrP   gV-?gx&1?g
}?g<zO'?rb  rI   g׀?rW  r   rv   )r   r4   fdtrir   )r7   ps     r8   
test_fdtrizTestCephes.test_fdtri  ss    QE5>::y*566T	C 	C 	C 	C %S!Q//??????r;   zReturns nan on i686.c                 N    t          t          j        ddd          d           d S )NrP   r{   )r   r4   rj  r6   s    r8   test_fdtri_mysterious_failurez(TestCephes.test_fdtri_mysterious_failure  s&    Q3//33333r;   c                 N    t          t          j        ddd          d           d S r   )r   r4   fdtridfdr6   s    r8   test_fdtridfdzTestCephes.test_fdtridfd  r  r;   c                 J    t          t          j        d          d           d S Nr   r   r   )r   r4   fresnelr6   s    r8   test_fresnelzTestCephes.test_fresnel  s"    V^A&&y11111r;   c                 J    t          t          j        d          d           d S Nr         8@)r   r4   r   r6   s    r8   
test_gammazTestCephes.test_gamma  s     V\!__T*****r;   c                 L    t          t          j        dd          d           d S )Nr   rP   r   )r   r4   gammainccinvr6   s    r8   test_gammainccinvzTestCephes.test_gammainccinv  s%    V(1--c22222r;   c                 .    t          j        d           d S )Nrc  )r4   r   r6   s    r8   test_gammalnzTestCephes.test_gammaln  s    rr;   c                     t          j        g dt           j                  }t          t	          j        |          t          j        t	          j        |                               d S )N)      gffffffrP   g@)rU   r   r   r   r4   gammasgnsignrgamma)r7   valss     r8   test_gammasgnzTestCephes.test_gammasgn  sP    x000"*==6?400"'&-:M:M2N2NOOOOOr;   c                 N    t          t          j        ddd          d           d S r   )r   r4   gdtrr6   s    r8   	test_gdtrzTestCephes.test_gdtr  &    V[1Q'',,,,,r;   c                 b    t          t          j        ddt          j                  d           d S r   )r   r4   r  rU   r   r6   s    r8   test_gdtr_infzTestCephes.test_gdtr_inf  s(    V[1RV,,S11111r;   c                 N    t          t          j        ddd          d           d S r   )r   r4   gdtrcr6   s    r8   
test_gdtrczTestCephes.test_gdtrc  r   r;   c                 N    t          t          j        ddd          d           d S r   )r   r4   gdtriar6   s    r8   test_gdtriazTestCephes.test_gdtria  r   r;   c                 2    t          j        ddd           d S NrP   r   )r4   gdtribr6   s    r8   test_gdtribzTestCephes.test_gdtrib  s    a!r;   c                 2    t          j        ddd           d S NrP   rW  )r4   gdtrixr6   s    r8   test_gdtrixzTestCephes.test_gdtrix  s    a"r;   c                 0    t          j        dd           d S rj   )r4   hankel1r6   s    r8   test_hankel1zTestCephes.test_hankel1      qr;   c                 0    t          j        dd           d S rj   )r4   hankel1er6   s    r8   test_hankel1ezTestCephes.test_hankel1e      !r;   c                 0    t          j        dd           d S rj   )r4   hankel2r6   s    r8   test_hankel2zTestCephes.test_hankel2  r  r;   c                 0    t          j        dd           d S rj   )r4   hankel2er6   s    r8   test_hankel2ezTestCephes.test_hankel2e  r  r;   c                     t          t          j        ddd          t          d                     t          t          j        ddd          d           t          j        ddd           d S )NrP   r|   r   r@   g㈮?)r   r4   hyp1f1r   r6   s    r8   test_hyp1f1zTestCephes.test_hyp1f1  s_    FM!Aa00#c((;;;FM!Ab113JKKKa!r;   c                 P    t          t          j        dddd          d           d S r   )r   r4   hyp2f1r6   s    r8   test_hyp2f1zTestCephes.test_hyp2f1  (    V]1Qq++C00000r;   c                 J    t          t          j        d          d           d S r   )r   r4   i0r6   s    r8   test_i0zTestCephes.test_i0       VYq\\#&&&&&r;   c                 J    t          t          j        d          d           d S r   )r   r4   i0er6   s    r8   test_i0ezTestCephes.test_i0e  r   r;   c                 J    t          t          j        d          d           d S r   )r   r4   i1r6   s    r8   test_i1zTestCephes.test_i1  r  r;   c                 J    t          t          j        d          d           d S r   )r   r4   i1er6   s    r8   test_i1ezTestCephes.test_i1e  r   r;   c                 .    t          j        d           d S rj   )r4   it2i0k0r6   s    r8   test_it2i0k0zTestCephes.test_it2i0k0      qr;   c                 .    t          j        d           d S rj   )r4   it2j0y0r6   s    r8   test_it2j0y0zTestCephes.test_it2j0y0  r  r;   c                 .    t          j        d           d S rj   )r4   
it2struve0r6   s    r8   test_it2struve0zTestCephes.test_it2struve0  s    !r;   c                 .    t          j        d           d S rj   )r4   itairyr6   s    r8   test_itairyzTestCephes.test_itairy      ar;   c                 J    t          t          j        d          d           d S rs  )r   r4   iti0k0r6   s    r8   test_iti0k0zTestCephes.test_iti0k0  "    V]1%%i00000r;   c                 J    t          t          j        d          d           d S rs  )r   r4   itj0y0r6   s    r8   test_itj0y0zTestCephes.test_itj0y0  r  r;   c                 J    t          t          j        d          d           d S r   )r   r4   itmodstruve0r6   s    r8   test_itmodstruve0zTestCephes.test_itmodstruve0  s#    V(++C00000r;   c                 J    t          t          j        d          d           d S r   )r   r4   	itstruve0r6   s    r8   test_itstruve0zTestCephes.test_itstruve0  s#    V%a((-----r;   c                 L    t          t          j        dd          d           d S r   )r   r4   ivr6   s    r8   test_ivzTestCephes.test_iv  "    VYq^^C(((((r;   c                 L    t          t          j        dd          d           d S r   )r   r4   iver6   s    r8   test_ivezTestCephes.test_ive  "    VZ!__S)))))r;   c                 J    t          t          j        d          d           d S r   )r   r4   j0r6   s    r8   test_j0zTestCephes.test_j0  r  r;   c                 J    t          t          j        d          d           d S r   )r   r4   j1r6   s    r8   test_j1zTestCephes.test_j1  r  r;   c                 L    t          t          j        dd          d           d S r   )r   r4   jnr6   s    r8   test_jnzTestCephes.test_jn  r  r;   c                 L    t          t          j        dd          d           d S r   )r   r4   jvr6   s    r8   test_jvzTestCephes.test_jv  r  r;   c                 L    t          t          j        dd          d           d S r   )r   r4   jver6   s    r8   test_jvezTestCephes.test_jve  r  r;   c                 .    t          j        d           d S NrB   )r4   k0r6   s    r8   test_k0zTestCephes.test_k0      	!r;   c                 .    t          j        d           d S r  )r4   k0er6   s    r8   test_k0ezTestCephes.test_k0e
      
1r;   c                 .    t          j        d           d S r  )r4   k1r6   s    r8   test_k1zTestCephes.test_k1  r  r;   c                 .    t          j        d           d S r  )r4   k1er6   s    r8   test_k1ezTestCephes.test_k1e  r  r;   c                 .    t          j        d           d S r  )r4   keir6   s    r8   test_keizTestCephes.test_kei  r  r;   c                 J    t          t          j        d          d           d S r   )r   r4   keipr6   s    r8   	test_keipzTestCephes.test_keip  r   r;   c                 .    t          j        d           d S r  )r4   kerr6   s    r8   test_kerzTestCephes.test_ker  r  r;   c                 .    t          j        d           d S r  )r4   kerpr6   s    r8   	test_kerpzTestCephes.test_kerp  r:   r;   c                 .    t          j        d           d S r  )r4   kelvinr6   s    r8   test_kelvinzTestCephes.test_kelvin  r  r;   c                 0    t          j        dd           d S rj   )r4   knr6   s    r8   test_knzTestCephes.test_kn"      	!Ar;   c                     t          t          j        d          d           t          t	          j        t          j        t          j                                       d S r   )r   r4   kolmogir   rU   r   r   r6   s    r8   test_kolmogizTestCephes.test_kolmogi%  sF    V^A&&s+++//0011111r;   c                 J    t          t          j        d          d           d S r   )r   r4   
kolmogorovr6   s    r8   test_kolmogorovzTestCephes.test_kolmogorov)  s#    V&q))3/////r;   c                 J    t          t          j        d          d           d S )Nr          )r   r4   _kolmogpr6   s    r8   test_kolmogpzTestCephes.test_kolmogp,  s"    V_Q''.....r;   c                 J    t          t          j        d          d           d S r   )r   r4   _kolmogcr6   s    r8   test_kolmogczTestCephes.test_kolmogc/  s"    V_Q''-----r;   c                     t          t          j        d          d           t          t	          j        t          j        t          j                                       d S r   )r   r4   	_kolmogcir   rU   r   r   r6   s    r8   test_kolmogcizTestCephes.test_kolmogci2  sH    V%a((#...)"&112233333r;   c                 0    t          j        dd           d S rj   )r4   kvr6   s    r8   test_kvzTestCephes.test_kv6  r  r;   c                 0    t          j        dd           d S rj   )r4   kver6   s    r8   test_kvezTestCephes.test_kve9      
1Qr;   c                 8   t           j        }t           |d          d           t           |d          t          j                    t           |d          t          j                   t           |t          j                  t          j                   d S )Nr   r   rE   )r4   log1pr   rU   r   r   )r7   r,  s     r8   
test_log1pzTestCephes.test_log1p<  sy    UU1XXs###UU2YY(((UU2YY'''UU26]]BF+++++r;   c           	      F   t           j        }t          }t           |d          d           t           | |dd                     |t          j         d                     t                      5 }|                    t          d           t           | |dt          j                             |t          j        t          j
        dz                       t           | |dt          j                             |t          j        t          j                             t           | |t          j         d                     |t          j        t          j
                             t           | |t          j        d                     |t          j        d                     t           | |t          j         t          j                             |t          j        dt          j
        z  dz                       t           | |t          j        t          j                             |t          j        t          j
        dz                       t           | |t          j        t          j                             |t          j        t          j                             t           | |t          j         t          j                             |t          j        t          j                             t           | |t          j        t          j                             |t          j        t          j                             t           | |t          j        d                     |t          j        t          j                             t           | |t          j        t          j                             |t          j        t          j                             d d d            d S # 1 swxY w Y   d S )	NrQ  rE   r   z%invalid value encountered in multiplyrP   rB   r   r@   )r4   r,  rR  r   rU   r   r   filterRuntimeWarningr   r   r   )r7   r,  csups       r8   test_log1p_complexzTestCephes.test_log1p_complexC  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   rP   r|   )r   r4   lpmvr6   s    r8   	test_lpmvzTestCephes.test_lpmvV  r  r;   c                 L    t          t          j        dd          d           d S r   )r   r4   	mathieu_ar6   s    r8   test_mathieu_azTestCephes.test_mathieu_aY  r2  r;   c                 L    t          t          j        dd          d           d S r   )r   r4   	mathieu_br6   s    r8   test_mathieu_bzTestCephes.test_mathieu_b\  r2  r;   c           
         t          t          j        ddd          d           t          j        d             }t          j        dd          }t          j        dt          j        ddd          f         }t          t          j        |d d d f         |d d d f         d	          d          ||d d d f         |d d d f         d	          d
d           d S )NrP   r   r|   r   c                    |t           j        dz  z  }| dk    rddd|z  t          d|z            z  z
  z  S | dk    r(t          |          |dz  t          d|z            z  z
  S | dk    r.t          d|z            |t          d	|z            d
z  dz
  z  z
  S t          | |z            |t          | dz   |z            d	| dz   z  z  t          | dz
  |z            d	| dz
  z  z  z
  z  z
  S )N   r   g;f?rP   r{   rB      r   r@      r   )rU   r   r
   mqr]  s      r8   	ce_smallqz.TestCephes.test_mathieu_cem.<locals>.ce_smallqc  s    sNAAvv A1S1XX$566a1vv!c!A#hh..a1Q3xx!S1XXb[3%6"7771Q3xx!S!A#q\\1ac7%;c1Q3'llAqQRsG>T%T"UUUr;   d   rc  rh|?r   r   )	r   r4   mathieu_cemrU   rs   r   r   rf   r   )r7   rF  rD  rE  s       r8   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>>"	, 	, 	, 	, 	, 	,r;   c           
         t          t          j        ddd          d           t          j        d             }t          j        dd          }t          j        dt          j        ddd          f         }t          t          j        |d d d f         |d d d f         d	          d          ||d d d f         |d d d f         d	          d
d           d S )NrP   r   r   r|   c                    |t           j        dz  z  }| dk    r(t          |          |dz  t          d|z            z  z
  S | dk    r+t          d|z            |t          d|z            z  dz  z
  S t          | |z            |t          | dz   |z            d| dz   z  z  t          | dz
  |z            d| dz
  z  z  z
  z  z
  S )Nr@  rP   rA  r   rB   r@   rB  )rU   r   r	   rC  s      r8   	se_smallqz.TestCephes.test_mathieu_sem.<locals>.se_smallqx  s    sNAAvv1vv!c!A#hh..a1Q3xx!C!HH*R-//1Q3xx!S!A#q\\1ac7%;c1Q3'llAqQRsG>T%T"UUUr;   rG  rH  rI  rc  rJ  r   r   )	r   r4   mathieu_semrU   rs   r   r   rf   r   )r7   rP  rD  rE  s       r8   test_mathieu_semzTestCephes.test_mathieu_semt  s    V'!A..y999 
	V 	V 
	V IaE!R[b"---.*1QQQtV9aQQQiGGJ!	!AAAdF)QtAAAvY>>"	, 	, 	, 	, 	, 	,r;   c                 N    t          t          j        ddd          d           d S NrP   r   rt  )r   r4   mathieu_modcem1r6   s    r8   test_mathieu_modcem1zTestCephes.test_mathieu_modcem1  '    V+Aa229=====r;   c                 h   t          j        ddd           t          j        dd          d d d d f         }t          j        t          j        ddd                   d d d d f         }t          j        ddd          d d d d f         }t          j        |||           d         }t          j        ||d          d          t          j        ||d          d         z  }t          j        |||          d          d|z  t          j        |||          d         z  z
  }t          ||d	           d S )
NrP   r   r@   r+  rB   rc  rD   rR   rI   )	r4   mathieu_modcem2rU   r   r   rf   linspacerU  r   r7   rD  rE  r]  y1fry2s          r8   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++++++r;   c                 N    t          t          j        ddd          d           d S rT  )r   r4   mathieu_modsem1r6   s    r8   test_mathieu_modsem1zTestCephes.test_mathieu_modsem1  rW  r;   c                 d   t          j        ddd           t          j        dd          d d d d f         }t          j        t          j        ddd                   d d d d f         }t          j        ddd          d d d d f         }t          j        |||           d         }t          j        ||d          d         t          j        ||d          d         z  }t          j        |||          d         d|z  t          j        |||          d         z  z
  }t          ||d	           d S )
NrP   r@   r+  rB   rc  r   rD   rR   rI   )	r4   mathieu_modsem2rU   r   r   rf   rZ  ra  r   r[  s          r8   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++++++r;   c                    t          t          j        ddd          t          j        t          j        f           t          t          j        ddd          t          j        t          j        f           t          t          j        ddd          t          j        t          j        f           t          t          j        ddd          t          j        t          j        f           t          t          j        ddd          t          j        t          j        f           t          t          j        ddd          t          j        t          j        f           t          t          j        ddd          t          j        t          j        f           t          t          j	        ddd          t          j        t          j        f           d S )N'  r   g?      ?)
r   r4   rK  rU   r   rQ  rU  ra  rY  rd  r6   s    r8   test_mathieu_overflowz TestCephes.test_mathieu_overflow  sH   V'q#668HIIIV'q#668HIIIV'sC882626:JKKKV'sC882626:JKKKV+E3<<rvrv>NOOOV+E3<<rvrv>NOOOV+E3<<rvrv>NOOOV+E3<<rvrv>NOOOOOr;   c                     t          d          D ]H}t          j        ddd          }t          |d         dd           t          |d	         d
d           Id S )N<   rB   rG  rE   r   g.dS?rR   rI   rP   gGc?-C6?)rl   r4   rd  r   )r7   r_   vs      r8   test_mathieu_ticket_1847z#TestCephes.test_mathieu_ticket_1847  sr     r 	G 	GA&q#r22AAaD":GGGGAaD":FFFFF		G 	Gr;   c                 .    t          j        d           d S r3   )r4   modfresnelmr6   s    r8   test_modfresnelmzTestCephes.test_modfresnelm      1r;   c                 .    t          j        d           d S r3   )r4   modfresnelpr6   s    r8   test_modfresnelpzTestCephes.test_modfresnelp  rr  r;   c                 L    t          t          j        dd          d           d S r   )r   r4   	modstruver6   s    r8   test_modstruvezTestCephes.test_modstruve  r2  r;   c                 N    t          t          j        ddd          d           d S r   )r   r4   nbdtrr6   s    r8   
test_nbdtrzTestCephes.test_nbdtr  r   r;   c                 N    t          t          j        ddd          d           d S r   )r   r4   nbdtrcr6   s    r8   test_nbdtrczTestCephes.test_nbdtrc  r   r;   c                 N    t          t          j        ddd          d           d S r   )r   r4   nbdtrir6   s    r8   test_nbdtrizTestCephes.test_nbdtri  r   r;   c                 2    t          j        ddd           d S )NrP   rC   r{   )r4   nbdtrikr6   s    r8   test_nbdtrikzTestCephes.test_nbdtrik  s    qBr;   c                 N    t          t          j        ddd          d           d S r   )r   r4   nbdtrinr6   s    r8   test_nbdtrinzTestCephes.test_nbdtrin  r   r;   c                 P    t          t          j        dddd          d           d S r   )r   r4   ncfdtrr6   s    r8   test_ncfdtrzTestCephes.test_ncfdtr  r  r;   c                     t          t          j        dddd          d           g d}t          j        ddd|          }t	          t          j        ddd|          |           d S )NrP   r   r   )r{   rP   rh  rB   r   rh  )r   r4   ncfdtrir  r   )r7   frk  s      r8   test_ncfdtrizTestCephes.test_ncfdtri  sf    V^Aq!Q//555MMM!QQ''q!S!44a88888r;   c                     g d}t          j        d|dd          }t          t          j        d|dd          |           d S )NrP   rB   r   rB   r   rr   )r4   r  r   
ncfdtridfd)r7   dfdrk  s      r8   test_ncfdtridfdzTestCephes.test_ncfdtridfd  sG    iiM!S$++)!Qb993?????r;   c                     g d}t          j        |ddd          }t          t          j        |ddd          |d           d S )N)rW  rP   rB   r   g     @rB   r   rr   gh㈵>rI   )r4   r  r   
ncfdtridfn)r7   dfnrk  s      r8   test_ncfdtridfnzTestCephes.test_ncfdtridfn  sN    !!!M#q$++)!Qb993TJJJJJJr;   c                     g d}t          j        dd|d          }t          t          j        dd|d          |           d S )N)r{   rh  r   rB   r   rr   )r4   r  r   	ncfdtrinc)r7   ncrk  s      r8   test_ncfdtrinczTestCephes.test_ncfdtrinc  sG    __M!QB''(Aq"55r:::::r;   c           	      H   t          t          j        ddd          d           t          t          j        ddd          d           t          t          j        t          j        dd          dd	           t          t	          j        t          j        d
t          j        d                               t          t          j        d
dt          j                  d           t          t	          j        t          j        t          j        dd                               t          t	          j        t          j        d
t          j        d                               t          t	          j        t          j        d
dt          j                                       d S )NrP   r   r{   	   i   r  r   r|   r   r   r   )	r   r4   nctdtrr   rU   r   r   r   r   r6   s    r8   test_nctdtrzTestCephes.test_nctdtr  s&   V]1Qq))#...V]1eR00#666FM"&"b993BBBr2637788999FM"b"&992>>>rvr26677888r2626677888r2rv667788888r;   c                 2    t          j        ddd           d S )NrP   r{   r   )r4   	nctdtridfr6   s    r8   test_nctdtridfzTestCephes.test_nctdtridf  s    3q!!!!!r;   c                 2    t          j        ddd           d S r  )r4   	nctdtrincr6   s    r8   test_nctdtrinczTestCephes.test_nctdtrinc  s    1Qr;   c                 2    t          j        ddd           d S )NrW  r  r{   )r4   nctdtritr6   s    r8   test_nctdtritzTestCephes.test_nctdtrit  s    3r"""""r;   c                 N    t          t          j        ddd          d           d S )Nr{   rP   r|   )r   r4   nrdtrimnr6   s    r8   test_nrdtrimnzTestCephes.test_nrdtrimn  s&    FOC!44S99999r;   c                 T    t          t          j        ddd          ddd           d S )Nr{   r   r   rS   )r   r4   nrdtrisdr6   s    r8   test_nrdtrisdzTestCephes.test_nrdtrisd  s:    C44ca	) 	) 	) 	) 	) 	)r;   c                 4    t          j        dddd           d S r  )r4   obl_ang1r6   s    r8   test_obl_ang1zTestCephes.test_obl_ang1	      !Aa     r;   c                     t          j        ddddd          }t          |d         d           t          |d         d           d S )NrP   r   r|   r   )r4   obl_ang1_cvr   )r7   results     r8   test_obl_ang1_cvzTestCephes.test_obl_ang1_cv  sH    #Aa!A..F1Ic***F1Ic*****r;   c                 N    t          t          j        ddd          d           d S NrP   r   r   )r   r4   obl_cvr6   s    r8   test_obl_cvzTestCephes.test_obl_cv  r   r;   c                 4    t          j        dddd           d S r  )r4   obl_rad1r6   s    r8   test_obl_rad1zTestCephes.test_obl_rad1  r  r;   c                 6    t          j        ddddd           d S r  )r4   obl_rad1_cvr6   s    r8   test_obl_rad1_cvzTestCephes.test_obl_rad1_cv  !    1Qq1%%%%%r;   c                 4    t          j        dddd           d S r  )r4   obl_rad2r6   s    r8   test_obl_rad2zTestCephes.test_obl_rad2  r  r;   c                 6    t          j        ddddd           d S r  )r4   obl_rad2_cvr6   s    r8   test_obl_rad2_cvzTestCephes.test_obl_rad2_cv  r  r;   c                 L    t          t          j        dd          d           d S )NrP   r   rN  )r   r4   pbdvr6   s    r8   	test_pbdvzTestCephes.test_pbdv   s$    V[1%%i00000r;   c                 0    t          j        dd           d S r  )r4   pbvvr6   s    r8   	test_pbvvzTestCephes.test_pbvv#      Aar;   c                 0    t          j        dd           d S r  )r4   pbwar6   s    r8   	test_pbwazTestCephes.test_pbwa&  r  r;   c                     t          j        dd          }t          |t          j        d                     t          j        g dd          }t          |g d           d S )Nr   rP   rE   r   rP   rB   )rP   rP   rP   )r4   pdtrr   rU   r   r   r7   vals     r8   	test_pdtrzTestCephes.test_pdtr)  sZ    k!QC,,,k)))Q''3			*****r;   c                     t          j        dd          }t          |dt          j        d          z
             t          j        g dd          }t          |g d           d S )Nr   rP   rE   r  r   )r   r   r   )r4   pdtrcr   rU   r   r   r  s     r8   
test_pdtrczTestCephes.test_pdtrc0  s^    l1a  CRVBZZ000l999c**3			*****r;   c                     t                      5 }|                    t          d           t          j        dd           d d d            d S # 1 swxY w Y   d S )N-floating point number truncated to an integerr{   )r   r/  r0  r4   pdtri)r7   r2  s     r8   
test_pdtrizTestCephes.test_pdtri7  s       	"CJJ~'VWWWLS!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   1AAAc                     t          j        dd          }t          t          j        |dz   d          d           t          j        dgdgdggg d          }t	          |t          j        d                     d S )Nr{   rP   r   r   ffffff?)r   #B;rb  )r   r   )r4   pdtrikr   	gammainccr   rU   r   r7   r_   s     r8   test_pdtrikzTestCephes.test_pdtrik<  sy    M#q!!F,QUA66<<<MA3/1A1A1ABB1bhv../////r;   c                 4    t          j        dddd           d S r  )r4   pro_ang1r6   s    r8   test_pro_ang1zTestCephes.test_pro_ang1C  r  r;   c           	      l    t          t          j        ddddd          t          d                     d S )NrP   r   r>  )r   r4   pro_ang1_cvr   r6   s    r8   test_pro_ang1_cvzTestCephes.test_pro_ang1_cvF  s>    !&"4Qq1Q"?"?"'	"2"2	4 	4 	4 	4 	4r;   c                 N    t          t          j        ddd          d           d S r  )r   r4   pro_cvr6   s    r8   test_pro_cvzTestCephes.test_pro_cvJ  r   r;   c                 4    t          j        dddd           d S r  )r4   pro_rad1r6   s    r8   test_pro_rad1zTestCephes.test_pro_rad1M  s    !Ac"""""r;   c                 6    t          j        ddddd           d S r  )r4   pro_rad1_cvr6   s    r8   test_pro_rad1_cvzTestCephes.test_pro_rad1_cvP  r  r;   c                 4    t          j        dddd           d S r  )r4   pro_rad2r6   s    r8   test_pro_rad2zTestCephes.test_pro_rad2S  r  r;   c                 6    t          j        ddddd           d S r  )r4   pro_rad2_cvr6   s    r8   test_pro_rad2_cvzTestCephes.test_pro_rad2_cvV  r  r;   c                 .    t          j        d           d S rj   )r4   psir6   s    r8   test_psizTestCephes.test_psiY  r  r;   c                 N    t          t          j        ddd          d           d S r3   )r   r4   radianr6   s    r8   test_radianzTestCephes.test_radian\  s&    V]1Qq))!,,,,,r;   c                 J    t          t          j        d          d           d S r   )r   r4   r  r6   s    r8   test_rgammazTestCephes.test_rgamma_  r.  r;   c                    t          t          j        d          d           t          t          j        d          d           t          t          j        d          d           t          t          j        d          d           t          t          j        d	          d           t          t          j        d
          d           d S )N333333@r   333333      g@rJ  gg            @r  )r   r4   roundr6   s    r8   
test_roundzTestCephes.test_roundb  s    V\#&&s+++V\$''---V\#&&s+++V\$''---V\#&&s+++V\$''-----r;   c                 .    t          j        d           d S rj   )r4   shichir6   s    r8   test_shichizTestCephes.test_shichij  r  r;   c                    t          j        d           t          j        t          j                  \  }}t	          |t          j        dz             t	          |d           t          j        t          j                   \  }}t	          |t          j         dz             t          t          j        |          d           d S )NrP   r{   r   z cosine integral(-inf) is not nan)r4   sicirU   r   r   r   r   r   )r7   sr1  s      r8   	test_sicizTestCephes.test_sicim  s    A{26""1Arus{+++Aq!!!{BF7##1Av|,,,?@@@@@r;   c                 J    t          t          j        d          d           d S NZ   r|   )r   r4   sindgr6   s    r8   
test_sindgzTestCephes.test_sindgx  "    V\"%%c*****r;   c                     t          t          j        dd          d           t          t	          j        t          j        dt          j                                       d S )NrP   rW  ?)r   r4   smirnovr   rU   r   r   r6   s    r8   test_smirnovzTestCephes.test_smirnov{  sJ    V^Ab))#..."&112233333r;   c                 T   t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t	          j        t          j        dt          j                                       d S )	NrP   rW  rE   rB         ?      r   g      ȿ)r   r4   	_smirnovpr   rU   r   r   r6   s    r8   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6r;   c                    t          t          j        dd          d           t          t	          j        t          j        dt          j                                       t	          j        dddd          }t          t          j        d|          dt          j	        d|          z
             t	          j        dddd          }t          t          j        d	|          dt          j	        d	|          z
             d S )
NrP   rW  r   rY  Tendpointr   r   r@   )
r   r4   	_smirnovcr   rU   r   r   rZ  r   r  )r7   x10x4s      r8   test_smirnovczTestCephes.test_smirnovc  s    V%a++C000)!BF3344555k!QT222F,Q44aq#8N8N6NOOO[Aq4000F,Q33Qv~a7L7L5LMMMMMr;   c           	      Z   t          t          j        dt          j        dd                    d           t          t          j        dt          j        dd                    d           t	          t          j        t          j        dt
          j                                       d S NrP   rC   333333?)r   r4   r  smirnovir   rU   r   r   r6   s    r8   test_smirnovizTestCephes.test_smirnovi  s~    FN1V_Qs-C-CDDSIIIFN1V_Qs-C-CDDSIII26223344444r;   c           	      Z   t          t          j        dt          j        dd                    d           t          t          j        dt          j        dd                    d           t	          t          j        t          j        dt
          j                                       d S r(  )r   r4   r#  
_smirnovcir   rU   r   r   r6   s    r8   test_smirnovcizTestCephes.test_smirnovci  s    F,Qv/@3/G/GHHMMMF,Qv/@3/G/GHHMMM*1RV445566666r;   c                 J    t          t          j        d          d           d S r   )r   r4   spencer6   s    r8   test_spencezTestCephes.test_spence  r.  r;   c                     t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           d S )NrP   r   r{   r  rB   gMoF?)r   r4   stdtrr   r6   s    r8   
test_stdtrzTestCephes.test_stdtr  s\    V\!A&&s+++FL1--t444FL1--~>>>>>r;   c                 0    t          j        dd           d S )Nffffff?rP   )r4   stdtridfr6   s    r8   test_stdtridfzTestCephes.test_stdtridf  s    Ar;   c                 0    t          j        dd           d S )NrP   r6  )r4   stdtritr6   s    r8   test_stdtritzTestCephes.test_stdtrit  s    qr;   c                 L    t          t          j        dd          d           d S r   )r   r4   struver6   s    r8   test_struvezTestCephes.test_struve  r   r;   c                 J    t          t          j        d          d           d S r  )r   r4   tandgr6   s    r8   
test_tandgzTestCephes.test_tandg  r  r;   c                 L    t          t          j        dd          d           d S r   )r   r4   tklmbdar6   s    r8   test_tklmbdazTestCephes.test_tklmbda  s$    FN1Q//44444r;   c                 .    t          j        d           d S rj   )r4   y0r6   s    r8   test_y0zTestCephes.test_y0  r  r;   c                 .    t          j        d           d S rj   )r4   r\  r6   s    r8   test_y1zTestCephes.test_y1  r  r;   c                 0    t          j        dd           d S rj   )r4   ynr6   s    r8   test_ynzTestCephes.test_yn  r  r;   c                 0    t          j        dd           d S rj   )r4   yvr6   s    r8   test_yvzTestCephes.test_yv  r  r;   c                 0    t          j        dd           d S rj   )r4   yver6   s    r8   test_yvezTestCephes.test_yve  r)  r;   c                    t          dd          t          dd          t          dd          t          dd          t          dd	          t          dd
          t          dd          t          dd          t          dd          t          dd          t          dd          t          dd          t          dd          t          dd          t          dd          t          dd          g}t          dd          t          dd           t          d!d"          t          d#d$          t          d%d&          t          d'd(          t          d)d*          t          d+d,          t          d-d.          t          d/d          t          d0d1          t          d2d3          t          d4d5          t          d6d7          t          d8d9          t          d:d:          g}t          t          j        ||d;<           d S )=Ng@g+п皙ٿr   r)  r   r  r|   g      "g      "@g4׵/Yg8EGr?r  gffffff@ig>@r   g|Pk?rY  rP   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<rH   rI   )rR  r.   r4   wofz)r7   r]  ws      r8   	test_wofzzTestCephes.test_wofz  s;   U8$$gd2&6&6BS__gc#..B%f--ws3/?/?SG 4 4R]]GCOOWQs^^R__gc#..T0B0B FFH HGIK KGHJ JHIK KFFH HGIK KDGI IHIK KHIK KJ HGI IHGI IFFH HFFH HFFH HFFH H?!
D 	&+q!%888888r;   N)__name__
__module____qualname__r9   r>   rb   rg   rt   ry   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r	  r  r  r&  r+  r-  r1  r6  r8  r;  r?  rB  rE  rH  rL  rO  rS  pytestmarkxfailr`  re  rh  rl  rn  rq  rv  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(  r-  r3  r6  r9  r<  rL  rR  rV  r_  rb  re  ri  rn  rq  ru  rx  r{  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r	  r  r  r  r  r  r&  r+  r.  r1  r4  r8  r;  r>  rA  rD  rG  rI  rL  rO  rR  rY   r;   r8   r1   r1   3   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 *9r;   r1   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?rA  g=
ףp=?)g'$'?geοgL?g
HVV?g
ףp=
׿)gl@D|?gV~׭ͿgU?g3{ɔ?)r    r5   r   r   rA  s     r8   r9   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[\\\\\r;   c                    t          j        d          }t          j        d          }d gdz  }t          d          D ]-}||         t	          dt          d          z            z  ||<   .t          dd          D ]H}||         t	          t          t          dt          d          z                                 z  ||<   It          ||d           d S )Nr   r@   rB   gN贁N{?rF   )	r    r=   r5   rl   r   r   absr   r   )r7   abb1r^   s        r8   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)))))r;   c                 ,   t          j        d          }t          ddg          t          ddg          t          ddg          t          dd	g          f}t          ||d
           t          j        d          }t          |d         t          g d          d           t          |d         t          g d          d           t          |d         t          g d          d           t          |d         t          g d          d           d S )NrB   glgoe2+
g(0[g X*JgUfݿg˰zU`?g4c1=C?gCuTr@   r   r   )g&g(.2+
gRg}`g%́rY  rP   )g7;1[ge*JgVwgL g<3rc  )gNݿg3%IQ`?gZyΌ׿gʀ11^?g33tտr   )gqM0=C?g7uTg\G`?gp⍞vg$.m?)r    bi_zerosr   r   )r7   bibias      r8   test_bi_zeroszTestAiry.test_bi_zeros  s   a  k:.//k;/00k:.//j+.//1 	""S+++a  !"Q% /C /C /C )D )D EG		H 	H 	H 	""Q% /C /C /C )D )D EG		H 	H 	H 	""Q% /C /C /C )D )D EG		H 	H 	H 	""Q% /B /B /B )C )C DF		G 	G 	G 	G 	Gr;   c           	          t          j        d          }t          |t          dg          t          dg          t          dg          t          dg          fd           d S )NrP   gcqg!xLgMSt$?g ~:p?r@   )r    ai_zerosr   r   )r7   ais     r8   test_ai_zeroszTestAiry.test_ai_zeros   si    a  !"e[M&:&:%*K=%9%9%*F8__%*F8__&6 78	9 	9 	9 	9 	9r;   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  rP   r   rR   rI   r   rS   rF   )guqgqHkZg4g9Ζ%gB~gL")gLgQO	gMQnGg3:g)}g )r    rp  r5   rf  r   )r7   r]  zpai_zpxaip_zxai_zaip_z_ai_zpaip_zpai_envelopeaip_envelopes               r8   test_ai_zeros_bigzTestAiry.test_ai_zeros_big'  sP    ' 0 7 72vv#LOOeQ%l2..vq!A&2ww 	E2222E2222 	[(!%a@@@@|+QUCCCC 	"1": : :@E	G 	G 	G 	G 	2A2: : :@E	G 	G 	G 	G 	G 	Gr;   c                    t          j        d          \  }}}}t          j        |          \  }}}}t          j        |          \  }}}}	dt          |          dz  z  }
t          |          dz  }t	          ||d           t	          ||d           t	          ||
z  ddd           t	          |	|z  ddd           t	          |d d         g d	d           t	          |d d         g d
d           d S )Nrt  rP   r   rR   rI   r   rS   rF   )gx&gg-2+
gRgg`gu%́g{ )g K;1[g*JgVwg<w gd
3g/{
")r    rk  r5   rf  r   )r7   r]  ru  bi_zpxbip_zxrz  bi_zbip_zbi_zpbip_zpbi_envelopebip_envelopes               r8   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r;   N)	rZ  r[  r\  r9   r>   rn  rr  r  r  r`  r;   r8   rb  rb    s}        ] ] ]* * *G G GB9 9 9G G G0G G G G Gr;   rb  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 )NrY  rP   r  rA  )r    genlaguerreassoc_laguerrer   )r7   a1a2s      r8   test_assoc_laguerrez%TestAssocLaguerre.test_assoc_laguerreY  sv     A&&#Br!,,!"RRVVA...#Ab++!"RRUU1-----r;   N)rZ  r[  r\  r  r`  r;   r8   r  r  X  s#        . . . . .r;   r  c                       e Zd Zd ZdS )TestBesselpolyc                     d S Nr`  r6   s    r8   r   zTestBesselpoly.test_besselpolyb      r;   N)rZ  r[  r\  r   r`  r;   r8   r  r  a  s#            r;   r  c                   z    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd ZdS )
TestKelvinc                 P    t          j        d          }t          |dd           d S )NrB   gT?r   )r    r   r   )r7   mbeis     r8   r   zTestKelvin.test_beig  s(    {1~~D"4Q77777r;   c                 P    t          j        d          }t          |dd           d S )NrB   gD,X?r   )r    r   r   )r7   mbeips     r8   r   zTestKelvin.test_beipk  (    QE"5a88888r;   c                 P    t          j        d          }t          |dd           d S )NrB   gPA4?r   )r    r   r   )r7   mbers     r8   r   zTestKelvin.test_bero  s(    {1~~D!4Q77777r;   c                 P    t          j        d          }t          |dd           d S )NrB   gii߿r   )r    r   r   )r7   mberps     r8   r   zTestKelvin.test_berps  (    QE"6q99999r;   c                 n    t          j        d          }t          |t          g d          d           d S )Nr   g&jj@g+"@g(rw+@gU2@g`<6@r@   )r    	bei_zerosr   r   )r7   rl  s     r8   test_bei_zeroszTestKelvin.test_bei_zerosw  sP    q!!!"U ,6 ,6 ,6 &7 &7 89		: 	: 	: 	: 	:r;   c                 n    t          j        d          }t          |t          g d          d           d S )Nr   )gyWo.@g╲ݏ @gנ{)@gK11@gWc"5@rA  )r    
beip_zerosr   r   )r7   bips     r8   test_beip_zeroszTestKelvin.test_beip_zeros  s\     ##!#e -C -C -C 'D 'D EF		G 	G 	G 	G 	Gr;   c                 n    t          j        d          }t          |t          g d          d           d S )Nr   g\@g6ُ@gӟHY'@g>"D0@ggaO;4@r@   )r    	ber_zerosr   r   )r7   r   s     r8   test_ber_zeroszTestKelvin.test_ber_zeros  sP    ""!#e -7 -7 -7 '8 '8 9:		; 	; 	; 	; 	;r;   c                 n    t          j        d          }t          |t          g d          d           d S )Nr   g '@gs%@gF ^-@gvۅj3@gB7@r@   )r    
berp_zerosr   r   )r7   brps     r8   test_berp_zeroszTestKelvin.test_berp_zeros  sP     ##!#e -7 -7 -7 '8 '8 9:		; 	; 	; 	; 	;r;   c           
         t          j        d          }t          |t          j        d          t          j        d          dz  z   t          j        d          t          j        d          dz  z   t          j        d          t          j        d          dz  z   t          j	        d          t          j
        d          dz  z   fd           d S )NrB   rZ  rA  )r    r  r   r   r   r  r  r   r   r
  r  )r7   mkelvs     r8   r  zTestKelvin.test_kelvin  s    q!!!%Q'+a..:K)K)0Q'+a..:K)K)0a7<??2;M)M)0a7<??2;M)M)O PQ	R 	R 	R 	R 	Rr;   c                 P    t          j        d          }t          |dd           d S )NrB   g>ɿr   )r    r  r   )r7   mkeis     r8   r  zTestKelvin.test_kei  s(    {1~~D!5a88888r;   c                 P    t          j        d          }t          |dd           d S )NrB   gr@d"?r   )r    r  r   )r7   mkeips     r8   r  zTestKelvin.test_keip  r  r;   c                 P    t          j        d          }t          |dd           d S )NrB   gܙUr   )r    r  r   )r7   mkers     r8   r  zTestKelvin.test_ker  s(    {1~~D!6q99999r;   c                 P    t          j        d          }t          |dd           d S )NrB   g^.n3Jr   )r    r
  r   )r7   mkerps     r8   r  zTestKelvin.test_kerp  r  r;   c                 n    t          j        d          }t          |t          g d          d           d S )Nr   gE>Q@gB= @gPN)@gm91@g
%5@r@   )r    	kei_zerosr   r   )r7   r  s     r8   test_kei_zeroszTestKelvin.test_kei_zeros  sP    ""!#e -8 -8 -8 '9 '9 :;		< 	< 	< 	< 	<r;   c                 n    t          j        d          }t          |t          g d          d           d S )Nr   gWf,@g?"@gFZ*o+@gOpN2@gEa6@r@   )r    
keip_zerosr   r   )r7   r  s     r8   test_keip_zeroszTestKelvin.test_keip_zeros  P    !!$$!$u .: .: .: (; (; <=		> 	> 	> 	> 	>r;   c                 D   t          j        d          }|\  }}}}}}}}	t          |t          g d          d           t          |t          g d          d           t          |t          g d          d           t          |t          g d          d           t          |t          g d          d           t          |t          g d          d           t          |t          g d	          d           t          |	t          g d
          d           d S )Nr   r  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   )
r7   tmpberzbeizkerzkeizberpzbeipzkerpzkeipzs
             r8   test_kelvin_zeroszTestKelvin.test_kelvin_zeros  s   "1%%693T$tE%e!$u .9 .9 .9 (: (: ;<		= 	= 	=
 	"$u .9 .9 .9 (: (: ;<		= 	= 	=
 	"$u .9 .9 .9 (: (: ;<		= 	= 	=
 	"$u .9 .9 .9 (: (: ;<		= 	= 	=
 	"% /: /: /: ); ); <=		> 	> 	>
 	"% /: /: /: ); ); <=	> 	> 	> 	"% /: /: /: ); ); <=		> 	> 	>
 	"% /: /: /: ); ); <=		> 	> 	> 	> 	>r;   c                 n    t          j        d          }t          |t          g d          d           d S )Nr   )r  r  r  r  gD;q3@r@   )r    	ker_zerosr   r   )r7   r  s     r8   test_ker_zeroszTestKelvin.test_ker_zeros  sP    ""!#e -9 -9 -9 ': ': ;<		= 	= 	= 	= 	=r;   c                 n    t          j        d          }t          |t          g d          d           d S )Nr   r  r@   )r    
kerp_zerosr   r   )r7   r
  s     r8   test_kerp_zeroszTestKelvin.test_kerp_zeros  r  r;   N)rZ  r[  r\  r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r`  r;   r8   r  r  f  s)       8 8 89 9 98 8 8: : :: : :G G G; ; ;; ; ;R R R9 9 99 9 9: : :: : :< < <> > >,> ,> ,>\= = => > > > >r;   r  c                       e Zd Zd ZdS )TestBernoullic                 n    t          j        d          }t          |t          g d          d           d S )Nr   )r|   r  g-!lV?r   g镲r   r@   )r    	bernoullir   r   )r7   brns     r8   test_bernoullizTestBernoulli.test_bernoulli   sP    ""!#e -5 -5 -5 '6 '6
 78	9 	9 	9 	9 	9r;   N)rZ  r[  r\  r  r`  r;   r8   r  r    s#        9 9 9 9 9r;   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 )NrB   r@   rF   rA  )r    r   r   r   )r7   betbetgs      r8   r   zTestBeta.test_beta  sX    l1Qa  q!1!117=3C3CCCQ'''''r;   c                     t          j        dd          }t          t          t          j        dd                              }t          ||d           d S )NrB   r@   rA  )r    r   r   rf  r   r   )r7   betlnr  s      r8   r   zTestBeta.test_betaln  sL    q###gl1Q''(())E#a(((((r;   c                 T    t          j        ddd          }t          |dd           d S )NrP   r  rA  )r    r   r   )r7   btincs     r8   r   zTestBeta.test_betainc  s-    !B''E#a(((((r;   c                     t          j        ddd          }t          j        dd|          }t          |dd           d S )NrB   r@   r{   r   )r    r   r   r   )r7   r\  comps      r8   r   zTestBeta.test_betaincinv  sA    q2&&q1%%DA&&&&&r;   N)rZ  r[  r\  r   r   r   r   r`  r;   r8   r  r  
  sP        ( ( (
) ) )
) ) )' ' ' ' 'r;   r  c                   J   e Zd Zd Zej                            dddg          ej                            dg d          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 )Nrc  r   r@         ^@g     @j@Texactx   )r  
repetition   c                 <    g | ]}t          j        d |d          S )re   Tr  )r    comb).0r_   s     r8   
<listcomp>z/TestCombinatorics.test_comb.<locals>.<listcomp>&  s)    LLLQb!4888LLLr;   rU  re   r  rT   rP   l   hU7`S?Q rG  2   )r   r    r  r   r   r   rl   listrU   iinfork   max)r7   iir^  s      r8   	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<<<<<<r;   r  TFlegacy)TFNr_   r  r   N      @r@   c                 <   |Mt          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                      5 }||                    t                     t          j        ||||          }d d d            n# 1 swxY w Y   t          ||           d S )Nz$Using 'legacy' keyword is deprecatedmatchT)r  r  r  rP   F)r  r  )	r]  warnsDeprecationWarningr    r  rk   r   r/  r   )r7   r  r_   r  r  r  r2  r^  s           r8   test_comb_legacyz"TestCombinatorics.test_comb_legacy/  s    "=   = = !a$v1;= = =	= = = = = = = = = = = = = = = \!Qd6-79 9 9F 		& & 1q519~~s1vv1"

1vvs1vv1   	PC!

-...|AqJOOOH	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	VX&&&&&s#   AAA 5DDDc                     d}d}t          j        |          }t          j        |          }t          j        ||d          }t          j        ||d          }||k    sJ d S )NF   rL   Tr  )rU   int64r    r  )r7   r^   r_   np_nnp_kres_npres_pys          r8   test_comb_with_np_int64z)TestCombinatorics.test_comb_with_np_int64P  si    x{{x{{dD555a$///r;   c                    t          t          j        ddd          d           t          t          j        ddd          d           t          t          j        ddd          d           t          t          j        ddd          d           t          t          j        g dg d	          g d
           d S )NrB   r   Tr  r   rE   FrB   rE   rB   rc  r   r   rE   r   )r   r   r   r  )r   r    r  r   r6   s    r8   test_comb_zerosz!TestCombinatorics.test_comb_zerosY      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"""	$ 	$ 	$ 	$ 	$r;   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 )	Nrc  r   r@        @g     @Tr  i  )r   r    permr   r   r6   s    r8   	test_permzTestCombinatorics.test_perma  sm    !',Bx!Q"@"@4-PPPGLQ//666W\"at444c:::::r;   c                    t          t          j        ddd          d           t          t          j        ddd          d           t          t          j        ddd          d           t          t          j        ddd          d           t          t          j        g dg d	          g d
           d S )NrB   r   Tr  r   rE   Fr  r  )r   r   r   r  )r   r    r  r   r6   s    r8   test_perm_zerosz!TestCombinatorics.test_perm_zerosf  r  r;   N)rZ  r[  r\  r  r]  r^  parametrizer  r  r  r  r  r`  r;   r8   r  r    s        = = = [\D%=99[X':':':;;[S3(++[S3(++' ' ,+ ,+ <; :9':     $ $ $; ; ;
$ $ $ $ $r;   r  c                   P    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd ZdS )TestTrigonometricc                 R    t          j        d          }d}t          ||           d S )N   r   )r    r   r   )r7   cbcbrls      r8   r   zTestTrigonometric.test_cbrtp  s,    \"Bt$$$$$r;   c                 T    t          j        d          }d}t          ||d           d S )Ngfffff;@g鎖C@rA  )r    r   r   )r7   cb1cbrl1s      r8   test_cbrtmorezTestTrigonometric.test_cbrtmoreu  s.    l4  Ca(((((r;   c                 ~    t          j        d          }t          t          dz            }t	          ||d           d S )Nr  r   rA  r    r  r
   r   r   )r7   cdgcdgrls      r8   r  zTestTrigonometric.test_cosdgz  s8    mBBsFCa(((((r;   c                 ~    t          j        d          }t          t          dz            }t	          ||d           d S NrL         @rA  r+  )r7   cdgmcdgmrls      r8   test_cosdgmorez TestTrigonometric.test_cosdgmore  s8    }R  RVD*****r;   c                 (   t          j        d          t          j        d          t          j        t          dz            f}t          d          dz
  t          d          dz
  t          t          dz            dz
  f}t	          ||d           d S )Nr   rX  rc  rP   rA  )r    r  r   r
   r   )r7   cscsrls      r8   r	  zTestTrigonometric.test_cosm1  sv    mAw}R00r"u1E1EFAqR3r"u::a<0!"T!,,,,,r;   c                     t          j        d          }t          t          dz            dz  }t	          ||d           d S )NrL   r0  rE   rA  r    r  r   r   r   )r7   ctctrls      r8   r  zTestTrigonometric.test_cotdg  s=    ]22c6{{R BtA&&&&&r;   c                     t          j        d          }t          t          dz            dz  }t	          ||d           d S )Nr  rJ  rE   rA  r8  )r7   ct1ctrl1s      r8   test_cotdgmorez TestTrigonometric.test_cotdgmore  s=    mBBsFb!Ca(((((r;   c                    t          t          j        d          dd           t          t          j        d          dd           t          t          j        d          dd           t          t          j        d          dd           t          t          j        d	          dd           t          t          j        d
          dd           t          t          j        d          dd           t          t          j        d          dd           t          t          j        d          dd           t          t          j        d          dd           t          t          j        d          dd           t          t          j        d          dd           t          t          j        d          dd           d S )Nr  r|      r  r  r   i   y   i  i;  i  )r   r    r  r6   s    r8   test_specialpointsz$TestTrigonometric.test_specialpoints  st   GM"--sB777GM#..b999GM"--sB777GM#..R888GM#..b999GM$//b999GM#..R888GM$//r:::GM#..R888GM$//b999GM#..b999GM$//b999GM#..R88888r;   c                     t          t          j        dg          d           t          t          j        d          d           d S )Nr   rP   r   r|   )r   r    sincr   r6   s    r8   	test_sinczTestTrigonometric.test_sinc  s>    7<,,a000W\#&&,,,,,r;   c                 N    t          j        d          }t          |d           d S r  )r    r  r   )r7   sns     r8   r  zTestTrigonometric.test_sindg  s'    ]2Rr;   c                     t          j        d          }t          t          dz            }t	          ||d           t          j        d          }t          t          dz            }t	          ||d           d S )NrL   r0  rA  r  rJ  )r    r  r	   r   r   )r7   snmsnmrlsnm1snmrl1s        r8   test_sindgmorez TestTrigonometric.test_sindgmore  h    mBBsFCa(((}R  RVD*****r;   N)rZ  r[  r\  r   r)  r  r3  r	  r  r>  rH  rK  r  rS  r`  r;   r8   r!  r!  o  s        % % %
) ) )
) ) )
+ + +
- - -
' ' '
) ) )
9 9 9- - -
  + + + + +r;   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   )r7   tntnrls      r8   rA  zTestTandg.test_tandg  s8    ]22c6{{BtA&&&&&r;   c                     t          j        d          }t          t          dz            }t	          ||d           t          j        d          }t          t          dz            }t	          ||d           d S )Nr  rJ  rA  rk  r   rX  )r7   tnmtnmrltnm1tnmrl1s        r8   test_tandgmorezTestTandg.test_tandgmore  rT  r;   c                    t          t          j        d          dd           t          t          j        d          dd           t          t          j        d          dd           t          t          j        d          dd           t          t          j        d	          dd           t          t          j        d
          dd           t          t          j        d          dd           t          t          j        d          dd           t          t          j        d          dd           t          t          j        d          dd           t          t          j        d          dd           d S )Nr   r   r@  r  r|   rA  r  rB  rC  r@  iLrD  rE  rF  rG  )r   r    r@  r6   s    r8   rH  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9r;   N)rZ  r[  r\  rA  r`  rH  r`  r;   r8   rV  rV    sA        ' ' '
+ + +: : : : :r;   rV  c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )	TestEllipc                 D    t          j        dt          j                   dS )zRegression test for #912.r{   N)r    r5  rU   r   r6   s    r8   test_ellipj_nanzTestEllip.test_ellipj_nan  s    sBF#####r;   c                     t          j        dd          }t          d          t          d          ddg}t	          ||d           d S )Nr  r   r|      )r    r5  r	   r
   r   )r7   elrels      r8   r6  zTestEllip.test_ellipj  sE    ^C""3xxCT*!"S,,,,,r;   c                 \   t          j        d          }t          |dd           t          t          j        d          t
          j                   t          t          j        d          t          dz             t          t          j        t
          j                  d           t          t          j        t
          j                  t
          j                   t          t          j        d          t
          j                   t          t          j        d          d	           d S )
Nr  g;{yэ?rY  r   r|   rB   rE   gN?)
r    r"   r   r   r#   rU   r   r   r   r   )r7   elks     r8   r8  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++-?@@@@@r;   c                    t          j        t          dz  d          }t          j        d          }t	          ||d           dt          z  dz  }dt          z  dz  }t          |          dz  }t          j        ||          }t	          |dd           t          t          j        t          dz  d	          t          dz             t          t          j        t          dz  d
          t          j                   t          t          j        t          dz  t          j                   d	           t          t          j        t          dz  t          j	                  t          j	                   t          t          j        t          dz  d          t          j	                   t          t          j        dd          d	           t          t          j        t          j        d          t          j                   t          t          j        t          j         d          t          j                    t          t          j        t          j        t          j                  t          j	                   t          t          j        t          j        t          j                   t          j	                   t          t          j        t          j         t          j                   t          j	                   t          t          j        t          j         t          j                  t          j	                   t          t          j        t          j	        d          t          j	                   t          t          j        t          j	        t          j	                  t          j	                   t          t          j        dd          dd           t          t          j        dd          d           d S )NrB   r  rr   re   r@  r  gfoKh?rA  r   r|   r   r{   gt?rP   rC   r   rI   6<R!?rk  gfON?)r    r:  r   r"   r   r	   r   rU   r   r   r   )r7   elkincrl  alphaphirD  s         r8   r;  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Lr;   c                    d}d}t          j        |d          }g }t          d          D ],}|                    |           t          j        |d          }-t	          j        ||          }t          |t          j        |d          d           t	          j        |t          z   |          }t          |t          j        |d          d           d S )	N    ?Pag?r   rc  rP   gV^8j?g,j6Ƅ@rB   )	rU   	nextafterrl   appendr    r:  r   	full_liker   r7   mbadrq  rD  mvalsjr  f1s           r8   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Sr;   c                     t          j        ddd          }t          j        ddd          }t          j        dt          dz  dd          }t	          t          j        |d	          t          j        t          j        |                    d
           t	          t          j        |d	          t          j        t          j        |                    d
           t	          t          j        |d	          t          j        t          j        |                    d
           t          t          j        t           j        dz  d	          t           j
                   t	          t          j        | d	          t          j        t          j        |                     d
           t	          t          j        | d	          t          j        t          j        |                     d
           t	          t          j        | d	          t          j        t          j        |                     d
           t          t          j        t           j         dz  d	          t           j
                   d S )Niir  gFFg<rW  rB   Fr!  rP   rV  rI   )rU   rf   rZ  r   r   r    r:  arcsinhr   r   r   )r7   xlogxlinxlin2s       r8   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<<<<<r;   c                 ^   t          j        d          }t          |dd           t          t          j        d          t          dz             t          t          j        d          d           t          t          j        t
          j                   t
          j                   t          t          j        t
          j                  t
          j                   t          t          j        d          t
          j                   t          t          j        d          d           d S )	Nr  gl?rA  r   rB   r|   rk  g?eg@)	r    r!   r   r   r   rU   r   r   r   )r7   eles     r8   r-  zTestEllip.test_ellipe"  s    nR  C 21555W^C(("Q$///W^C((#...W^RVG,,bf555W^BF++RV444W^A&&///s++-?@@@@@r;   c                    t          j        t          dz  d          }t          j        d          }t	          ||d           dt          z  dz  dt          z  dz  }}t          |          dz  }t          j        ||          }t	          |dd           t          t          j        t          dz  d	          t          dz             t          t          j        t          dz  d
          d
           t          t          j        t          dz  t          j                   t          j                   t          t          j        t          dz  t          j	                  t          j	                   t          t          j        t          dz  d          t          j	                   t          t          j        dd          d	           t          t          j        t          j        d          t          j                   t          t          j        t          j         d          t          j                    t          t          j        t          j        t          j                   t          j                   t          t          j        t          j         t          j                   t          j                    t          t          j        t          j        t          j                  t          j	                   t          t          j        t          j         t          j                  t          j	                   t          t          j        t          j	        d          t          j	                   t          t          j        t          j	        t          j	                  t          j	                   t          t          j        dd          d           d S )NrB   r  r@  4   r@  #   g'?rA  r   r|   r   r{   rn  rk  gL@)r    r0  r   r!   r   r	   r   rU   r   r   r   )r7   eleincr  rp  rq  rD  s         r8   r1  zTestEllip.test_ellipeinc-  s   "2a4++nS!!F3r***U3Yr"uSysJJM"3q))FJ222W&r!tS112a4888W&r!tS113777W&r!tbfW55rv>>>W&r!tRV44bf===W&r!tQ//888W&q#..444W&rvs33RV<<<W&w44rvg>>>W&rvw77@@@W&w8826'BBBW&rvrv66???W&w77@@@W&rvs33RV<<<W&rvrv66???)&#668JKKKKKr;   c                    d}d}t          j        |d          }g }t          d          D ],}|                    |           t          j        |d          }-t	          j        ||          }t          |t          j        |d          d           t	          j        |t          z   |          }t          |t          j        |d          d	           d S )
Nrs  rt  r   rc  rP   g%?rB   gXo
@r@   )	rU   ru  rl   rv  r    r0  r   rw  r   rx  s           r8   test_ellipeinc_2zTestEllip.test_ellipeinc_2G  s     # Lq!!r 	# 	#ALLOOOQ""AAc5))&q",q:M*N*NPQRRRsRx//&r2<<N+O+OQRSSSSSr;   N)rZ  r[  r\  re  r6  r8  r;  r}  r  r-  r1  r  r`  r;   r8   rc  rc    s        $ $ $- - -
	A 	A 	AM M M:T T T = = =	A 	A 	AL L L4T T T T Tr;   rc  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 )NrP   r   r   r   g      @r   rZ                      r  y
c?
cy=B?CGֿr   y檠f?P9lb?)
r   r$   r   r   rR  r   rU   r   r   	enumerater7   argsexpected_resultsrp   arrs        r8   test_elliprczTestEllipCarlson.test_elliprc]  s7   1q)))q##%%%%WQ]]#####q'!S//**c1111sDkSkDkdmTlTl$ % % !"%"$&++">"C"$&++"3"D"F G G  oo 	@ 	@FAsGSM+;A+>????	@ 	@r;   c           
         t          t          ddd          d           t          t          ddd          dz  d           t          ddt                    dk    sJ t          j        t          ddd                    sJ t          j        t          ddt          dd                              sJ t          j        t          ddt          dd                              sJ t          t          ddt          j        t          j                  j	         dz                      sJ t          t          ddt          dd                              sJ t          g d	g d
g dg dg dg dg          }t          g d          }t          |          D ]"\  }}t          t          | ||                    #d S )NrP   r   rB   r   g`C+?r   r   rE   )r   r   r|   r   r   rJ  rZ  r  r   r   rZ  r  )r               ?rZ  )y             r  r  )gfe_?gi+"?gP$M?ytgFU?7?@yR<8*y{62?z)r   r%   r   rU   r   rR  r   r   doubletinyr   r  r  s        r8   test_elliprdzTestEllipCarlson.test_elliprdq  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+>????	@ 	@r;   c           
         t          t          ddd          d           t          t          ddd          d           t          dt          d          dk    sJ t          j        t          ddd                    sJ t          t          ddd                    sJ t          t          t                    dd          dk    sJ t          t          ddt          t           d                              sJ t          g dg dg d	g d
g dg dg dg          }t          g d          }t          |          D ]"\  }}t          t          | ||                    #d S )NrP   r   rB   gPO?r   rE   )r|   r   r   )rZ  r  r   )r{   r|   r   r  rZ  r   r  r  )r  rZ        ?      )geQO?ʞu5J?r  yp\y?kg2ΰ?gHwд?y|pF?-6Fj)	r   r&   r   rU   r   r   rR  r   r  r  s        r8   test_elliprfzTestEllipCarlson.test_elliprf  s   1a((!,,,1a((*@AAAq#q!!S((((x1a(()))))WQ2&&'''''ws||Q**c1111WQ7C4#3#34455555ooo(((%oo,,,%oo(((1113 4 4 ! "F "F "F G G  oo 	@ 	@FAsGSM+;A+>????	@ 	@r;   c           	      f   t          t          ddd          d           t          t          ddd          d           t          t          ddd          d           t          j        t          dt          d                    sJ t          j        t          t          t                    dd                    sJ t          g dg dg dg dg dg d	g          }t          t          j        d
ddddg          }t          |          D ]"\  }}t          t          | ||                    #d S )NrP   r   r{   )r         0@r  r  r  r  )r  r  rZ  )r   g8d`?rJ  gL+?g}^?y旮0?ʋW?yjN?^?gt?)	r   r'   rU   r   r   rR  r   r   r  r  s        r8   test_elliprgzTestEllipCarlson.test_elliprg  sX   1a((!,,,1a((#...1a((!,,,x3**+++++xa3344444'''%oo(((,,,...(((* + + !"%"1"2"D"D"1"3 4 4  oo 	@ 	@FAsGSM+;A+>????	@ 	@r;   c                    t          t          dddd          d           t          ddt          d          dk    sJ t          t          dddd                    sJ t          t          dddd                    sJ t          dddt                    dk    sJ t	          g dg dg dg dg d	g d
g dg dg dg	          }t	          g d          }t          |          D ]"\  }}t          t          | ||                    #d S )NrP   r   r   rE   )r   r|   r   r   )r   r   rJ  r   )r   r   rJ  r  )rZ  r  r   r   )r              r|   r   )rZ  r  r   r  )r  r  r|   y            ?)r   r   rJ  r  )r   r   rJ        )	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        r8   test_elliprjzTestEllipCarlson.test_elliprj  sn   1a++Q///q!S!$$++++WQ1a(()))))WRAq))*****q!Q$$++++******000---666222<<<++++++- . . ! "5 "5 "5 6 6  oo 	@ 	@FAsGSM+;A+>????	@ 	@r;   zInsufficient accuracy on 32-bitrT  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(   r6   s    r8   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 	0r;   N)rZ  r[  r\  __doc__r  r  r  r  r  r]  r^  r_  r  r`  r;   r8   r  r  X  s         @ @ @(@ @ @0@ @ @2@ @ @*@ @ @6 [?@@0 0 A@0 0 0r;   r  c                   *    e Zd ZdZd Zd Zd Zd ZdS )"TestEllipLegendreCarlsonIdentitieszTest identities expressing the Legendre elliptic integrals in terms
    of Carlson's symmetric integrals.  These identities can be found
    in the DLMF https://dlmf.nist.gov/19.25#i .
    c                 >   t          j        ddd          | _        t          t                    j        | _        ddt          dt          j        | j                   z   dd          z  z  | _        t          j	        | j        g| j        | j        f          | _
        d S )Nr  r|   r   r   rE   r   )rU   r   m_n1_1r   r   minmax_neglog2
very_neg_mconcatenate
ms_up_to_1r6   s    r8   setup_classz.TestEllipLegendreCarlsonIdentities.setup_class  s    iR..V}}(F2+-7DL=+A+A,BCE+.%0 %0 !0 0 .4<.*./*.+*7 8 8r;   c                 r    | j         }t          t          |          t          dd|z
  d                     dS )z5Test identity:
        K(m) = R_F(0, 1-m, 1)
        r   r|   N)r  r   r"   r&   r7   rD  s     r8   test_kz)TestEllipLegendreCarlsonIdentities.test_k  s7     Oq		72r!tR#8#899999r;   c                     t          t                    j        }|dt          dt	          j        |                     z  z  }t          t          |          t          d|d                     dS )z\Test identity:
        K(m) = R_F(0, 1-m, 1)
        But with the ellipkm1 function
        r   r   r|   N)	r   r   r  r   rU   r  r   r#   r&   )r7   r  m1s      r8   test_km1z+TestEllipLegendreCarlsonIdentities.test_km1  s]     V}}!BrBGDMM>2222gb"b&9&9:::::r;   c           	      x    | j         }t          t          |          dt          dd|z
  d          z             dS )z9Test identity:
        E(m) = 2*R_G(0, 1-k^2, 1)
        r   r   r|   N)r  r   r!   r'   r  s     r8   test_ez)TestEllipLegendreCarlsonIdentities.test_e  s<     Oq		2gb"Q$&;&;#;<<<<<r;   N)rZ  r[  r\  r  r  r  r  r  r`  r;   r8   r  r    sZ         

8 
8 
8: : :	; 	; 	;= = = = =r;   r  c                   ^    e Zd Zd Zd ZddZd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd ZdS )TestErfc                 P    t          j        d          }t          |dd           d S )Nr   g);T?rA  )r    r>  r   )r7   ers     r8   r?  zTestErf.test_erf  s)    [B|A.....r;   c                 r    t          j        d          }t          g d          }t          ||d           d S )Nr   )yTcJ5?=W?yo@n@y'ʷ@g	@y"[

@,y]+@yld&@-;'j'>@r@   )r    	erf_zerosr   r   )r7   erzerzrs      r8   test_erf_zeroszTestErf.test_erf_zeros  sJ    "" - - - . .
 	"#d1-----r;   r   c                    t           j                            d           d}t           j                            d|          dt           j                            dd|          z  dz
  z  }t           j                            d|          dt           j                            dd|          z  dz
  z  }|d|z  z   }t          j        d	          5   ||          }	 ||          j        }
t          j        |	          }|	|         }	||         }t          j        |
          }|
|         }
||         }t          ||	|||
           t          ||
|||
           d d d            d S # 1 swxY w Y   d S )NrK   rg  g{Gz?rB   r   rP   rZ  ignoreallr   )	rU   r[   r\   paretorandinterrstater   isfiniter.   )r7   func
other_funcrJ   rT   r^   r#  r\  r]  rX  w_realmasks               r8   _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 rj   r4   r>  r]  s    r8   <lambda>z.TestErf.test_erfc_consistent.<locals>.<lambda>6  s    a&*Q--' r;   rv   r   r   )r  r4   rD  r6   s    r8   test_erfc_consistentzTestErf.test_erfc_consistent3  s:      K''	 	! 	 	 	 	 	r;   c                 L    |                      t          j        d d           d S )Nc                 Z    t          j        | | z            t          j        |           z  S r  )rU   r   r4   rD  r  s    r8   r  z/TestErf.test_erfcx_consistent.<locals>.<lambda>>  s    bfQqSkkFKNN2 r;   rv   rI   )r  r4   erfcxr6   s    r8   test_erfcx_consistentzTestErf.test_erfcx_consistent;  s7      L22 	! 	 	 	 	 	r;   c                 L    |                      t          j        d d           d S )Nc                 6    dt          j        d| z            z  S )Nr  rZ  r  r  s    r8   r  z.TestErf.test_erfi_consistent.<locals>.<lambda>E  s    cFJr!t,,, r;   rv   rI   )r  r4   erfir6   s    r8   test_erfi_consistentzTestErf.test_erfi_consistentB  s7      K,, 	! 	 	 	 	 	r;   c                 L    |                      t          j        d d           d S )Nc                     t          t                    dz  t          j        |  | z            z  t	          j        |           z  S r  )r   r   rU   r   r4   r  r  s    r8   r  z/TestErf.test_dawsn_consistent.<locals>.<lambda>L  s0    d2hhqj261"Q$<</&+a..@ r;   rv   rI   )r  r4   r  r6   s    r8   test_dawsn_consistentzTestErf.test_dawsn_consistentI  s7      L@@ 	! 	 	 	 	 	r;   c                     t           j        t           j         t           j        g}t           j        ddg}t          t	          j        |          |d           d S )NrE   rP   r  rI   )rU   r   r   r   r    r>  r7   r  r^  s      r8   test_erf_nan_infzTestErf.test_erf_nan_infP  sH    (FB?D))8%@@@@@@r;   c                     t           j        t           j         t           j        g}t           j        ddg}t          t	          j        |          |d           d S )NrB   r   r  rI   )rU   r   r   r   r    rD  r  s      r8   test_erfc_nan_infzTestErf.test_erfc_nan_infU  sH    (FAq>T**H5AAAAAAr;   c                     t           j        t           j         t           j        g}t           j        t           j        dg}t          t	          j        |          |d           d S )Nr   r  rI   )rU   r   r   r   r    r  r  s      r8   test_erfcx_nan_infzTestErf.test_erfcx_nan_infZ  sK    (FBFA&d++XEBBBBBBr;   c                     t           j        t           j         t           j        g}t           j        t           j         t           j        g}t          t	          j        |          |d           d S )Nr  rI   )rU   r   r   r   r    r  r  s      r8   test_erfi_nan_infzTestErf.test_erfi_nan_inf_  sO    (FRVGRV,T**H5AAAAAAr;   c                     t           j        t           j         t           j        g}t           j        ddg}t          t	          j        |          |d           d S )Nr  r   r  rI   )rU   r   r   r   r    r  r  s      r8   test_dawsn_nan_infzTestErf.test_dawsn_nan_infd  sI    (FD#&d++XEBBBBBBr;   c                     t           j        t           j         t           j        g}t           j        t           j        dz  z   ddg}t          t	          j        |          |d           d S )NrZ  rQ  r  rI   )rU   r   r   r   r    rW  r  s      r8   test_wofz_nan_infzTestErf.test_wofz_nan_infi  sT    (FRVc\)66:T**H5AAAAAAr;   N)r   )rZ  r[  r\  r?  r  r  r  r  r  r  r  r  r  r  r  r  r`  r;   r8   r  r    s        / / /. . .E E E E.        A A A
B B B
C C C
B B B
C C C
B B B B Br;   r  c                       e Zd Zd ZdS )	TestEulerc                    t          j        d          }t          j        d          }t          j        d          }t          |dgd           t          |ddgd           t          |g dd           t          j        d          }g d}t          d	d
          }t	          dd          D ]?}|dz  rt          ||                    |d|z  <   $t          ||                   |d|z  <   @t          j        d          5  t          ||z
  |z            }t          |          }	d d d            n# 1 swxY w Y   t          |	dd           d S )Nr   rP   rB   r  rI   )rP   r   rE   r  )rP   rP   r   =   ii  iY  i=) il   Q~ l   10[l   $8gC
 l   2l   v}Ju: )r  drg  r  r  r   r@  )r    eulerr   r   rl   rm   rU   r  r   r   r   )
r7   eu0eu1eu2eu24	mathworldcorrectr_   errerrmaxs
             r8   
test_eulerzTestEuler.test_eulerp  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)rZ  r[  r\  r  r`  r;   r8   r  r  o  s#        - - - - -r;   r  c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestExpc                 R    t          j        d          }d}t          ||           d S )NrB   r@   )r    rK  r   r7   exexrls      r8   rL  zTestExp.test_exp2  s*    \!__Rr;   c                 T    t          j        d          }d}t          ||d           d S )N      @g;f@rA  )r    rK  r   r7   exmexmrls      r8   test_exp2morezTestExp.test_exp2more  s.    l3Ca(((((r;   c                 R    t          j        d          }d}t          ||           d S )NrB   rG  )r    rG  r   r  s      r8   rH  zTestExp.test_exp10  s,    ]1Bt$$$$$r;   c                 T    t          j        d          }d}t          ||d           d S )Nr  gYs@rA  )r    rG  r   r  s      r8   test_exp10morezTestExp.test_exp10more  s.    mC  Ca(((((r;   c                    t          j        d          t          j        d          t          j        d          f}t          d          dz
  t          d          dz
  t          d          dz
  f}t          ||d           d S )NrB   r   r@   rP   rA  r    rN  r   r   r  s      r8   rO  zTestExp.test_expm1  sn    mAw}Q//a0@0@AAqQ#a&&(+!"T!,,,,,r;   c                    t          j        d          t          j        d          t          j        d          f}t          d          dz
  t          d          dz
  t          d          dz
  f}t          ||d           d S )NrB    @皙@rP   rA  r  )r7   ex1exrl1s      r8   test_expm1morezTestExp.test_expm1more  sn    }Qc 2 27=3E3EFQ#c((1*SXXaZ0!#eA.....r;   N)	rZ  r[  r\  rL  r  rH  r  rO  r  r`  r;   r8   r  r    sn          
) ) )
% % %
) ) )
- - -
/ / / / /r;   r  c                   d   e Zd Zej                            dddg          d             Zej                            dg d          ej                            dddg          d                         Zej                            dddg          d             Zej                            dddg          ej                            d	e	j
        d
 e	j        d          gg d          d                         Zej                            d edd                    ej                            dddg          d                         Zej                            dddg          ej                            d edd                    d                         Zej                            dddg          ej                            d edd                    d                         Zej                            d eddd                    d             Zej                            d e edd                     e eddd                    z             d             Zej                            dddg          d             Zej                            de	j        e	j        e	j        eg          ej                            dddg          ej                            d edd                    ej                            d	g dgd ge	j
        ge	j
        dggg d!          d"                                                 Zej                            dddg          ej                            ddd d#e	j
        d
gg d$          d%                         Zej                            d eddd&                    d'             Zej                            d e edd                     e eddd&                    z             d(             Zej                            de	j        e	j        e	j        eg          ej                            dddg          ej                            d edd                    ej                            d	g dge	j
        ge	j
        dggg d)          d*                                                 Zej                            dddg          ej                            ddd d#e	j
        d
gg d$          d+                         Zej                            d, e edd                    dd-gz             ej                            d e edd                     e edd.d&                    z             d/                         Zej                            de	j        e	j        e	j        eg          ej                            d edd                    ej                            d	g dge	j
        ge	j
        dggg d)          d0                                     Z ej                            dddg          ej                            d, edd                    ej                            ddd d#e	j
        d
gg d$          d1                                     Z!ej                            d,dd e	j
        d2g          d3             Z"ej                            d, edd4                    d5             Z#d6 Z$d
S )7TestFactorialFunctionsr  TFc                    t          j        t          j        d|                    sJ t          j        t          j        d|                    sJ t          j        t          j        ddd                    sJ d S )NrP   r  r   T)rU   isscalarr    	factorial
factorial2
factorialk)r7   r  s     r8   "test_factorialx_scalar_return_typez9TestFactorialFunctions.test_factorialx_scalar_return_type  s|    {7,Qe<<<====={7-au===>>>>>{7-a$???@@@@@@@r;   r^   )rE   r+  c                     t          t          j        ||          d           t          t          j        ||          d           t          t          j        |dd          d           d S )Nr  r   r   T)r   r    r  r   r!  )r7   r  r^   s      r8   test_factorialx_negativez/TestFactorialFunctions.test_factorialx_negative  sl     	W&q666:::W'777;;;W'1D9991=====r;   c                     |rt           nt          } |t          j        g d|          g d            |t          j        g d|          g d            |t          j        g ddd          g d           d S )N)r  r   rP   r  )r   r   rP   rP   r   T)r   r   r    r  r   r!  )r7   r  assert_funcs      r8   test_factorialx_negative_arrayz5TestFactorialFunctions.test_factorialx_negative_array  s    ,1F((G%nnnEBBB LL	" 	" 	"G&~~~UCCC LL	" 	" 	"G&~~~qEEE LL	" 	" 	" 	" 	"r;   contentNnat)NaNNoneNaT)idsc                    t          j        ||          t          j        u sJ t          j        ||          t          j        u sJ t          j        |dd          t          j        u sJ |t          j        urKt          j        t          d          5  t          j        |g|           d d d            n# 1 swxY w Y   n|rft          j	        t          d          5  t          j        t          j        |g|          d                   sJ 	 d d d            n# 1 swxY w Y   n1t          j        t          j        |g|          d                   sJ t          j        t          d          5  t          j        |g|           d d d            n# 1 swxY w Y   t          j        t          d	          5  t          j        |gdd           d d d            d S # 1 swxY w Y   d S )
Nr  r   TzUnsupported datatype.*r  Non-integer array.*r   zfactorial2 does not support.*zfactorialk does not support.*)r    r  rU   r   r   r!  r]  r   
ValueErrorr	  r
  r   )r7   r*  r  s      r8   test_factorialx_nanz*TestFactorialFunctions.test_factorialx_nan  s   
  666"&@@@@!'77726AAAA!'1D999RVCCCC"&  z1IJJJ : :!7)59999: : : : : : : : : : : : : : : 	J08MNNN N Nx 17)5 I I I! LMMMMMMN N N N N N N N N N N N N N N 8G-wiuEEEaHIIIII]:-LMMM 	7 	7y6666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7]:-LMMM 	9 	9y!48888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9sH   B;;B?B?$2D##D'*D';FF#&F#G++G/2G/levelsrP   r   c                    dfd	fd}t          j         ddg                    }dt          j        d          gdt	          j        dd	
          gdt	          j        dd          gd} |t	          j        ||
          |d                     |t	          j        ||
          |d                     |t	          j        |dd	
          |d                    d S )NrP   c                 6    |dk    r| S  | | g|dz
            S )z
            Double x and nest it k times

            For example:
            >>> _nest_me([3, 4], 2)
            [[[3, 4], [3, 4]], [[3, 4], [3, 4]]]
            r   rP   r`  r#  r_   _nest_mes     r8   r8  zDTestFactorialFunctions.test_factorialx_array_shape.<locals>._nest_me  s-     AvvxA!,,,r;   c                     t          j         |          t                    }t          |                     t           j                   |j        t           j                             d S )Nr_   dtype)rU   r   objectr   r  r   )resnucleusr   r8  r4  s      r8   _checkzBTestFactorialFunctions.test_factorialx_array_shape.<locals>._check  sZ    (88Gv666fEEEC CJJrz22JCJrz4J4JKKKKKr;   r   r  r:  r  rr   Tr  rc  r   r  rB   rP   )rU   r   mathr  r    r   r!  )r7   r4  r  r@  r^   exp_nucleusr8  s    `    @r8   test_factorialx_array_shapez2TestFactorialFunctions.test_factorialx_array_shape  s1   	- 	- 	- 	- 	- 	-	L 	L 	L 	L 	L 	L HXXq"g00011r 2 23w1"DAAABw1"a889; ;
 	w %000+a.AAAw!!5111;q>BBBw!!Qd333[^DDDDDr;   dimr   c                    t          j        d|          }dddd}t          t          j        ||          t          j        |d         |                     t          t          j        ||          t          j        |d	         |                     t          t          j        |d
d          t          j        |d
         |                     d S )Nr   ndminr  rr   rc  r  r  rP   rB   r   T)rU   r   r   r    r  r   r!  )r7   rE  r  r^   r   s        r8   test_factorialx_array_dimensionz6TestFactorialFunctions.test_factorialx_array_dimension  s     HQc""""$$)!5999Qs333	5 	5 	5*1E:::Qs333	5 	5 	5*1at<<<Qs333	5 	5 	5 	5 	5r;   levelc                    dfd	 dg|dz
            }dddd}|rt           nt          } |t          j        ||	          t	          j        |d         |
                      |t          j        ||	          t	          j        |d         |
                      |t          j        |dd	          t	          j        |d         |
                     d S )NrP   c                 4    |dk    r| S  | g|dz
            S r4  r`  r7  s     r8   r8  zCTestFactorialFunctions.test_factorialx_array_like.<locals>._nest_me
  s)    AvvxQqS)))r;   r   r:  r  rr   rc  r  r  rG  rB   r   TrA  )r   r   r    r  rU   r   r   r!  )r7   rJ  r  r^   rC  r(  r8  s         @r8   test_factorialx_array_likez1TestFactorialFunctions.test_factorialx_array_like  s   	* 	* 	* 	* 	* 	* HaSE!G$$$",,,1F((G%au555H[^5999	; 	; 	;G&q666H[^5999	; 	; 	;G&q!4888H[^5999	; 	; 	; 	; 	;r;   rL   r@  rc  c                 d   t           j        dk    rdnd}t          t          t	          j        |d                    t	          j        |d          |           t          t	          j        |gd                              t                    t	          j        |gd          |           d S )Nwin32t0=r  Tr  FrI   )sysplatformr   rm   r    r  r  r7   r^   rJ   s      r8   test_factorial_accuracyz.TestFactorialFunctions.test_factorial_accuracy  s    
 //uuUg/>>>??)!5999	F 	F 	F 	F)1#T:::AA%HH)1#U;;;$	H 	H 	H 	H 	H 	Hr;      c                    t          j        |          }t          |t          j        |d                     t          |t          j        |gd          d                    t          j        dk    rdnd}t          t          |          t          j        |d          |           t          t          |          t          j        |gd          d         |           d S )NTr   rO  rP  r  FrI   )rB  r  r   r    rQ  rR  r   rm   )r7   r^   r   rJ   s       r8   test_factorial_int_referencez3TestFactorialFunctions.test_factorial_int_reference'  s     .##7G$5a$>$>???7G$5qc4$@$@$CDDD//uuUg(9!U(C(C!	# 	# 	# 	#g(91#u(E(Ea(H!	# 	# 	# 	# 	# 	#r;   c                     fd} |dd            |dd            |dd            |dd	            |d
d            |dd            |dd            |dd            |dd           d S )Nc                     t          t          j        |           |           t          t          j        | g          d         |           d S )Nr  r   )r   r    r  )r^   r^  r  s     r8   r@  zETestFactorialFunctions.test_factorial_float_reference.<locals>._check7  sK    G-au===xHHHG-qc2215x@@@@@r;   r   gr?g(\?gc?g333333@g4s@g333333&@gމOAgfffff@@g	²Gg     K@gC$JOglS@g }WgX@gX>%`g\CSe@gG=r`  )r7   r  r@  s    ` r8   test_factorial_float_referencez5TestFactorialFunctions.test_factorial_float_reference5  s    	A 	A 	A 	A 	A 	t2333t2333t2333t2333t6777t6777t7888t7888x788888r;   r<  皙?)[][1]z[1.1][NaN][NaN, 1]c                    |t           j        k    r-t          d |D                       rt          j        d           |dk    st          |          dk    r|n|d         }t          j        |||          }d }|st          j        ||          }n3t          j	        |j
        t           j                  sot          j	        |j
        t           j                  sKt          j        t          d          5  t          j        ||           d d d            n# 1 swxY w Y   n|rt          j	        |j
        t           j                  s|j        rt          j        |t          j        |                    |t          j        |                                        t           j                            rt          j        t(          d	          5  t          j        ||          }t          j        t          j        |                    rt           j        nt           j        }d d d            n# 1 swxY w Y   n|rnt          j	        |j
        t           j                  sJt          j        t          d
          5  t          j        ||           d d d            n# 1 swxY w Y   nt          j        ||          }d }|t/                      5 }|                    t(                     |j        r|                                n|}	|j        rt          j        |	|          ng }
d d d            n# 1 swxY w Y   t          j        |
||          } |||           d S d S )Nc              3   >   K   | ]}t          j        |          V  d S r  rU   r   r  r#  s     r8   	<genexpr>zKTestFactorialFunctions.test_factorial_array_corner_cases.<locals>.<genexpr>R  *      $B$BQRXa[[$B$B$B$B$B$Br;   impossible combinationr   rP   rH  r<  r  Unsupported datatype*r  r1  zfactorial with exact=.*c                     t          |           t          |          k    s*J dt          |            dt          |                       t          | |           d S )Nztypes not equal: z, )typer   r#  r\  s     r8   assert_really_equalzUTestFactorialFunctions.test_factorial_array_corner_cases.<locals>.assert_really_equaln  sZ    77d1gg%%%'O477'O'Od1gg'O'O%%%Ar;   )rU   r  anyr]  skiplenr   r    r  
issubdtyper<  integerfloatingr   r2  r*  allcloser   r  r	  r
  r   int_r   r/  ndimrZ   )r7   r*  rE  r  r<  r^   r  rl  r2  n_flatrr^  s               r8   !test_factorial_array_corner_casesz8TestFactorialFunctions.test_factorial_array_corner_casesI  s6    BH$B$B'$B$B$B!B!BK0111!AggW):):''HWCu555 	7&q666FF-44 	7]17BK88	7z1HIII 2 2!!511112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 	7BM!'2:>> 	716 	7k!RXa[[L/1bhqkk\?+A+A"(+K+KLL	7 08MNNN F F *1E:::%'VBHQKK%8%8E		bgF F F F F F F F F F F F F F F  	72="*== 	7z1JKKK 2 2!!511112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 &q666F	 	 	  #$$ M

-...&'f3!>?fLG%fE::::"	M M M M M M M M M M M M M M M
 xE:::H11111 sJ   7DD!DAH55H9<H9J%%J),J)AL==MMy       @       @)1z1.1z2+2jr,  r-  c                    |f|t           j        u sXt          j        t          |          t           j                  s,t          j        t          |          t           j                  rXt          j        ||          }|t           j        u s|t           j        nt          j        |          }t          ||           d S t          j
        t          d          5  t          j        ||           d d d            d S # 1 swxY w Y   d S )Nr  rh  r  )rU   r   rp  rj  rq  rr  r    r  r   r]  r   r2  r7   r^   r  r  r   s        r8   "test_factorial_scalar_corner_casesz9TestFactorialFunctions.test_factorial_scalar_corner_cases}  s(    Ibfd1ggrz(J(J=a"+66 % &q666FKK19"&&':KA:N:NC%%%%%z1HIII 2 2!!511112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2s   D  DDrY  c                 d   t           j        dk    rdnd}t          t          t	          j        |d                    t	          j        |d          |           t          t	          j        |gd                              t                    t	          j        |gd          |           d S )NrO  g+=r  Tr  FrI   )rQ  rR  r   rm   r    r   r  rS  s      r8   test_factorial2_accuracyz/TestFactorialFunctions.test_factorial2_accuracy  s    
 //uuUg0$???@@*1E:::	G 	G 	G 	G*A3d;;;BB5II*A3e<<<4	I 	I 	I 	I 	I 	Ir;   c           
         t          j        t          j        t	          t          |dd                    d          }t          |t          j        |d                     t          |t          j        |gd          d                    t          t          |          t          j        |d                     t          t          |          t          j        |gd          d                    d S )Nr   r+  rP   TF)	functoolsreduceoperatormulr  rl   r   r    r   r   rm   )r7   r^   r   s      r8   test_factorial2_int_referencez4TestFactorialFunctions.test_factorial2_int_reference  s     "8<eAq"oo1F1FJJ7G$6q$$?$?@@@7G$6sD$A$A!$DEEEg(:1e(D(DEEEg(:A3(F(Fq(IJJJJJr;   )r\  r]  r^  r_  c                 >   |t           j        k    r-t          d |D                       rt          j        d           |dk    st          |          dk    r|n|d         }t          j        |||          }t          j        |j        t           j	                  s|s6t          j        ||          }|s|st          nt          } |||           d S t          j        t          d          5  t          j        |d	           d d d            d S # 1 swxY w Y   d S )
Nc              3   >   K   | ]}t          j        |          V  d S r  rb  rc  s     r8   rd  zLTestFactorialFunctions.test_factorial2_array_corner_cases.<locals>.<genexpr>  re  r;   rf  r   rP   rg  r  factorial2 does not*r  r   )rU   r  rm  r]  rn  ro  r   rp  r<  rq  r    r   r   r   r   r2  )r7   r*  rE  r  r<  r^   r  r  s           r8   "test_factorial2_array_corner_casesz9TestFactorialFunctions.test_factorial2_array_corner_cases  sb    BH$B$B'$B$B$B!B!BK0111!AggW):):''HWCu555="*-- 		)g 		)'777F $)NN<<DDOOOOOz1GHHH ) )"1a((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s   /DDDc                    |:|t           j        u s,t          j        t          |          t           j                  rXt          j        ||          }|t           j        u s|t           j        nt          j        |          }t          ||           d S t          j
        t          d          5  t          j        ||           d d d            d S # 1 swxY w Y   d S )Nr  r  r  )rU   r   rp  rj  rq  r    r   r  r   r]  r   r2  r{  s        r8   #test_factorial2_scalar_corner_casesz:TestFactorialFunctions.test_factorial2_scalar_corner_cases  s
    9RVr}T!WWbj'I'I'777FKK19"&&':KA:N:NC%%%%%z1GHHH 3 3"1E22223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3s   0CCCr_   re   rG  c           
         t          j        t          j        t	          t          |d|                     d          }t          |t          j        ||d                     t          |t          j        |g|d          d                    d S )Nr   rP   T)	r  r  r  r  r  rl   r   r    r!  )r7   r^   r_   r   s       r8   test_factorialk_int_referencez4TestFactorialFunctions.test_factorialk_int_reference  sy     "8<eAq1"oo1F1FJJ7G$6q!T$B$BCCC7G$6sAt$D$DQ$GHHHHHr;   c                    |t           j        k    r-t          d |D                       rt          j        d           |dk    st          |          dk    r|n|d         }t          j        |||          }t          j        |j        t           j	                  s|s%t          t          j        |d          |           d S t          j        t          d          5  t          j        |d           d d d            d S # 1 swxY w Y   d S )	Nc              3   >   K   | ]}t          j        |          V  d S r  rb  rc  s     r8   rd  zLTestFactorialFunctions.test_factorialk_array_corner_cases.<locals>.<genexpr>  re  r;   rf  r   rP   rg  r   factorialk does not*r  )rU   r  rm  r]  rn  ro  r   rp  r<  rq  r   r    r!  r   r2  )r7   r*  rE  r<  r^   s        r8   "test_factorialk_array_corner_casesz9TestFactorialFunctions.test_factorialk_array_corner_cases  sH    BH$B$B'$B$B$B!B!BK0111!AggW):):''HWCu555="*-- 	)g 	)+Aq11155555z1GHHH ) )"1a((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s   DDDc                 j   |sKt          j        t                    5  t          j        |||           d d d            d S # 1 swxY w Y   d S |:|t
          j        u s,t          j        t          |          t
          j	                  r^t          j
        ||          }|t
          j        u p|d u }|rt
          j        nt          j        ||          }t          ||           d S t          j        t          d          5  t          j        |||           d d d            d S # 1 swxY w Y   d S )N)r_   r  r  r:  r  r  )r]  r   NotImplementedErrorr    r!  rU   r   rp  rj  rq  r   r   r2  )r7   r^   r_   r  r  nan_condr^  s          r8   #test_factorialk_scalar_corner_casesz:TestFactorialFunctions.test_factorialk_scalar_corner_cases  s   
  	8233 8 8"177778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8Y!rv++tAww
)K)K+'777FBF{/a4iH!)Irvvw/A!q/I/I/IH*****z1GHHH 8 8"177778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8s#   AAAD((D,/D,ry  c                     t          j        t          d          5  t          j        d|           d d d            d S # 1 swxY w Y   d S )Nzk must be a positive integer*r  rP   )r]  r   r2  r    r!  r  s     r8   test_factorialk_raises_kz/TestFactorialFunctions.test_factorialk_raises_k	  s    ]:-LMMM 	% 	%q!$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   ?AArB  c                    |t          j                    v rt          j        t          |         g          }t          t          j        ||          j        t          j	                   t          t          j        |dz   |          j        t          j
                   t          j        |dz   |          t          j        t          j                  j        k    sJ t          j        t           |         g          }t          t          j        ||          j        t          j
                   t          t          j        |dz   |          j        t                     t          j        |dz   |          t          j        t          j
                  j        k    sJ d S t          t          j        t          j        dg          |          j        t                     d S rj   )r+   keysrU   r   r,   r   r    r!  r<  rt  r  r  int32r   r=  )r7   r_   r^   s      r8   test_factorialk_dtypez,TestFactorialFunctions.test_factorialk_dtype	  so   ).00003A6788A+Aq117AAA+AE155;RXFFF%a!eQ//"(282D2D2HHHHH3A6788A+Aq117BBB+AE155;VDDD%a!eQ//"(282D2D2HHHHHHH +BHaSMM1==CVLLLLLr;   c                    t          j        t           j        dddt           j        g          }t          j        t           j        dddt           j        g          }t          t	          j        |d          |           t          j        t          d          5  t          t	          j        |d	          |           d d d            d S # 1 swxY w Y   d S )
NrP   rB   r   rF   Fr  r1  r  T)	rU   r   r   r   r    r  r]  r	  r
  )r7   r#  r^  s      r8   test_factorial_mixed_nan_inputsz6TestFactorialFunctions.test_factorial_mixed_nan_inputs	  s   HbfaArv.//8RVQ1bf566W&q666AAA\,4JKKK 	E 	E*1D9998DDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	Es   %CCC)%rZ  r[  r\  r]  r^  r  r"  r%  r)  rU   r   
datetime64r3  rl   rD  rI  rM  rT  r  rW  rZ  r  r   
complex128r=  rx  r|  r~  r  r  r  r  r  r  r  r  r  r`  r;   r8   r  r    s       [WtUm44A A 54A
 [S,,,//[WtUm44> > 54 0/>
 [WtUm44" " 54" [WtUm44[Y}r}U7K7K(L!7!7!7  9 99 99 9 549. [XuuQ{{33[WtUm44E E 54 43E< [WtUm44[UEE!QKK005 5 10 545 [WtUm44[WeeAqkk22; ; 32 54;$ [S%%C"4"455	H 	H 65	H [S!T%%2,,//$$uuRb7I7I2J2JJL L
# 
#L L
# [WtUm449 9 549& [Wrx')}f'> ? ?[WtUm44[UEE!QKK00[Y 1#urvhD!L!L!L  N N*2 *2N N 10 54? ?*2X [WtUm44[S1c6264"@!D!D!D  F F	2 	2F F 54	2 [S%%C"4"455	I 	I 65	I [S!T%%2,,//$$uuRb7I7I2J2JJL L
K 
KL L
K [Wrx')}f'> ? ?[WtUm44[UEE!QKK00[YaS26(RVQK(H!C!C!C  E E) )E E 10 54? ?)" [WtUm44[S1c6264"@!D!D!D  F F3 3F F 543 [S$$uuQ{{"3"3r2h">??[S!T%%2,,//$$uuRb7I7I2J2JJL LI IL L @?I [Wrx')}f'> ? ?[UEE!QKK00[YaS26(RVQK(H!C!C!C  E E) )E E 10? ?) [WtUm44[S%%1++..[S1c6264"@!D!D!D  F F8 8F F /. 548 [S1c263"788% % 98% [S%%2,,//M M 0/M E E E E Er;   r  c                       e Zd Zej                            ddddddddd	d
ej        ddfej         ddfg          d             Zd Z	d Z
d ZdS )TestFresnelzz, s, c)r{   gN?ց[?)y      ?        r  r  )y       ?yn<ӿj<Cy)BR;߿ux7Q?)y      yھ|}-2?y/?!ۿ)r0  GM?pBR?)y      @        r  r  )y              @y       GMܿy        pBR?)y              gGMܿgpBR߿)y             y        GM?y       pBR߿r{   r  c                     t          t          j        |                    }t          |t          ||g          d           d S )NrA  )r   r    ru  r   )r7   r]  r  r1  frss        r8   test_fresnel_valueszTestFresnel.test_fresnel_values 	  s>    @ GOA&&''!#uaV}}a88888r;   c                 `   t          j        d          \  }}t          |t          g d          d           t          |t          g d          d           t          j        |          d         }t          j        |          d         }t          |dd           t          |dd           d S )Nr   )y @X9v?y^I@48E?y=
ףp@+?y@eX?yO@Ǻ?r   )y.1?ǘ?yʡE6@:#J{/?yq-
@y&1?yh o@߾3?yW2q@qh?r   rP   r@  )r    fresnel_zerosr   r   ru  )r7   szoczovals1vals2s        r8   test_fresnel_zeroszTestFresnel.test_fresnel_zerosE	  s    (++S!#"' ): ): ): #; #; <=	> 	> 	> 	"#"' ): ): ): #; #; <=	> 	> 	> $$Q'$$Q'!%"---!%"-----r;   c                 ~    t          j        d          \  }}t          j        d          }t          ||d           d S )NrF   rB  )r    r  fresnelc_zerosr   )r7   r  r  frcs       r8   test_fresnelc_zeroszTestFresnel.test_fresnelc_zerosX	  >    (++S$Q''!#c"-----r;   c                 ~    t          j        d          \  }}t          j        d          }t          ||d           d S )Nr   rB  )r    r  fresnels_zerosr   )r7   r  r  r  s       r8   test_fresnels_zeroszTestFresnel.test_fresnels_zeros]	  r  r;   N)rZ  r[  r\  r]  r^  r  rU   r   r  r  r  r  r`  r;   r8   r  r  	  s        [Y7=	

	
 	&,)/*	c
&$;)  >9 9? >9. . .&. . .
. . . . .r;   r  c                   X    e Zd Zd Zd Zd Zed             Zed             Zd Z	d Z
dS )		TestGammac                 N    t          j        d          }t          |d           d S rx  )r    r   r   )r7   gams     r8   rz  zTestGamma.test_gammad	  s'    mASr;   c                     t          j        d          }t          t          j        d                    }t	          ||d           d S )Nr   rA  )r    r   r   r   r   )r7   gamlnlngams      r8   r  zTestGamma.test_gammalnh	  s@    ""GM!$$%%E%*****r;   c                 |    t          j        dd          }t          j        dd          }t          ||d           d S )Nr{   rA  )r    r|  gammaincinvr   )r7   gccinvgcinvs      r8   r}  zTestGamma.test_gammainccinvm	  s>    %b,,#Br**F5+++++r;   c                 f   t          j        dd          }t          j        d|          }t          |dd           t          j        dd          }t          j        dd          }t          d|d           t          |dd           t          j        dd          }t          d	|d           d S )
NrC   rP   rc  g?g`	\;r  r  gmb<g      &@)r    r  gammaincr   r7   r\  r#  s      r8   test_gammaincinvzTestGamma.test_gammaincinvr	  s    2&&R""Ac!$$$R&&$:;;D!R0000A5rBBBB$JKKD!R000000r;   c                     dt          j        dd          dt          j        dd          dg}|D ]>}t          j        d|          }t          j        d|          }t          ||d           ?d S )	Nr   r   gCs?rP   g^F    ?rC   rv   rI   )rU   ru  r    r  r  r   )r7   ptsxpr\  r#  s        r8   test_975zTestGamma.test_975~	  s    
 |D!$$l|D!$$l4  	/ 	/B#B++A a((AAr.....	/ 	/r;   c                 ~    t          j        d          }dt          j        d          z  }t          ||d           d S )NrA  rP   )r    r  r   r   )r7   rgamrlgams      r8   r  zTestGamma.test_rgamma	  s=    ~a  '-"""Dq)))))r;   c                     t          t          j        t          j        d                               t          t          j        d          d           d S )NrE   r   )r   rU   r   r    r   r   r  r6   s    r8   test_infinityzTestGamma.test_infinity	  sD    r**++,,,W^B''+++++r;   N)rZ  r[  r\  rz  r  r}  r-   r  r  r  r  r`  r;   r8   r  r  c	  s          + + +
, , ,
 	1 	1 	1 
/ 
/ 
/* * *
, , , , ,r;   r  c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )

TestHankelc                 v    t          t          j        dd          t          j        dd           d           d S Nr#  rB   r   r@  )r   r    r  r6   s    r8   
test_negv1zTestHankel.test_negv1	  5    GOBq11GOAa4H4H3H"MMMMMr;   c                     t          j        dd          }t          j        dd          t          j        dd          dz  z   }t	          ||d           d S NrP   rW  rZ  rA  )r    r  r  rN  r   )r7   hank1hankrls      r8   r  zTestHankel.test_hankel1	  sR    "%%*Qr""WZ"%5%5b%88E&+++++r;   c                 v    t          t          j        dd          t          j        dd           d           d S r  )r   r    r  r6   s    r8   test_negv1ezTestHankel.test_negv1e	  7    G,R22W5Ea5J5J4JBOOOOOr;   c                     t          j        dd          }t          j        dd          t          d          z  }t	          ||d           d S )NrP   rW  y       rA  )r    r  r  r   r   )r7   hank1ehankrles      r8   r  zTestHankel.test_hankel1e	  sH    !!B''/!B''D		1F71-----r;   c                 v    t          t          j        dd          t          j        dd           d           d S r  )r   r    r  r6   s    r8   
test_negv2zTestHankel.test_negv2	  r  r;   c                     t          j        dd          }t          j        dd          t          j        dd          dz  z
  }t	          ||d           d S r  )r    r  r  rN  r   )r7   hank2hankrl2s      r8   r  zTestHankel.test_hankel2	  sR    "%%:a##gj2&6&6r&99E'!,,,,,r;   c                 v    t          t          j        dd          t          j        dd           d           d S r  )r   r    r  r6   s    r8   
test_neg2ezTestHankel.test_neg2e	  r  r;   c                 |    t          j        dd          }t          j        dd          }t          ||d           d S )NrP   rW  rA  )r    r  r   )r7   hank2ehankrl2es      r8   test_hankl2ezTestHankel.test_hankl2e	  s>    !!B''#Ab))F8A.....r;   N)rZ  r[  r\  r  r  r  r  r  r  r  r  r`  r;   r8   r  r  	  s        N N N, , ,
P P P. . .
N N N- - -
P P P/ / / / /r;   r  c                   J    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )	TestHyperc                     t          j        dd          }t          j        dd          t          j        dd          dz  z   }t	          ||d           d S r  )r    h1vpjvpyvpr   )r7   h1h1reals      r8   	test_h1vpzTestHyper.test_h1vp	  R    \!B+a##gk!B&7&7&::Bva(((((r;   c                     t          j        dd          }t          j        dd          t          j        dd          dz  z
  }t	          ||d           d S r  )r    h2vpr  r  r   )r7   h2h2reals      r8   	test_h2vpzTestHyper.test_h2vp	  r  r;   c                 B   t          t          j        dd          dd           t          t          j        dd          dd           t          j        d	g d
          }t          j        g d          }t          ||d           t          j        d	t          j        g d
          dz             }t          ||                    t                    d           g d}g d}t          j        ||          }g d}t          ||d           t          j        t          j        |gdz            |          }t          |t          j        |gdz            d           t          t          t          j        t          j        |gdz            ddg           d S )Nr  r{   Qvo?rv   rI   r   r|   r  r   )g      rE   r   rP   rh  )g̷?g3|t-Ք?r|   go?g{h?rQ  r{   rh  r  )r   rP   r{   )r|   gc?r  rB   r   rP   )
r   r    hyp0f1rU   r   r  rR  	row_stackassert_raisesr2  )r7   r#  r^  x1x2s        r8   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 	6r;   c                 P    t          j        dd          }t          |d           d S )N皙?      ?      ?y;EG?uM?)r    r  r   )r7   r>  s     r8   test_hyp0f1_gh5764zTestHyper.test_hyp0f1_gh5764	  s,     nS,//C!LMMMMMr;   c                    t          j        ddd          }t          |dd           t          g g dg dg dg dg d	g d
g dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg d g d!g d"g d#g d$g d%g d&g d'g d(g d)g d*g d+g d,g d-g d.g d/g d0g d1g d2g d3g d4g d5g d6g d7g d8g d9g d:g d;g d<g d=g d>g d?g d@g dAg dBg dCg dDg dEg dFg dGg dHg dIg dJg dKg dLg dMg dNg dOg dPg dQg dRg dSg dTg dUg dVg dWg dXg dYg dZg d[g d\g d]g d^g d_g d`g dag dbg dcg ddg deg dfg dgg dh          }|D ]C\  }}}}t          j        |||          }t	          t          ||z
            |z  dik                Dd S )jNrW  rX  g?rD   )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 ?rl  )r    r  r   r   r   rf  )r7   hyp1ref_datarg  rh  r1  r^  r  s           r8   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:;;;;	< 	<r;   c                     t          j        ddd          }t          j        ddd          }t          ||d           d S )Nr{   rh  g7B.g|:B.rB  r    r  r   )r7   r  hyp2s      r8   test_hyp1f1_gh2957zTestHyper.test_hyp1f1_gh2957V
  s@    ~c388~c388D$+++++r;   c                 T    t          j        ddd          }t          |dd           d S )Nr{   rh  ig<`?rB  r
  )r7   hyps     r8   test_hyp1f1_gh2282zTestHyper.test_hyp1f1_gh2282[
  s.    nS#u--C!5r:::::r;   c                 V   dddddt          d          z  gdddddt          d	          z  gddd
d	dt          d          z  gg ddddt          d	          d
z  t          d          gddddt	          j        d          t	          j        d          z  t	          j        d          z  t	          j        d          z  gdd
d
ddt          t                    z  t	          j        d
          z  t	          j        d          z  t	          j        d          z  gdd
dddt          t                    z  t	          j        d          z  t	          j        d          z  t	          j        d          z  gdddddt	          j        d          z  t	          j        d          z  t	          j        d          z  t	          j        d          z  gg dg d g d!g d"g d#d$d%g}t          |          D ]8\  }\  }}}}}t	          j	        ||||          }t          ||dd&|z  '           9d S )(Nr{   rP   rh  |Gz?r  g?g|Gzr   r  rB   r  r  )r   r  rh  r  gYi2?r#  r   g433333?r@   rA  r   rE   g      ?r   g      ?r   r  g      gUUUUUUտg  @gUUUUUU?g)rh  r  r|         $gEciH!@)r+  r   rP   r  gzG?)rB   r#  rP   r  gy&1|)r  r   rP   r  g"nN%@?)rB   r'  rP   r  g!J)rc  |      %@rd  gzS;)rc  r  g      %rd  g[B.VP<test #%derr_msg)r   r   r	   r
   r    r   r   r   r  r  r   )	r7   r   rp   rg  rh  r1  r#  rm  cvs	            r8   r  zTestHyper.test_hyp2f1_
  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r;   c                 j   t          j        ddd          }t          |dd           g dg d}}t          |          t          |          }}d}t          j        |||          }t          t          t          |z            z  t          j        |||          t          j        d|z   |z
            t          j        |          z  z  |d|z
  z  t          j        d|z   |z
  d	|z
  |          z  t          j        |          t          j        d	|z
            z  z  z
  z  }t          ||d
           d S )NrP   rW  rG  g D?rD   )rX  r)  333333?g)rh  g	@rT  g	r{   rB   rB  )	r    hyperur   r   r   r	   r  r   r   )r7   val1rg  rh  r]  hypuhprls          r8   test_hyperuzTestHyper.test_hyperu~
  s-   ~aC((D1---   !4!4!4!ajj'!**!~a!$$3r!t99w~a!44 'ac!e 4 4W]15E5E E G 1Q3xqs1uQqS(C(CC")-"2"27=13E3E"E G G H 	"$tB/////r;   c                 P    t          t          j        ddd          dd           d S )NrP   rh  g3333334@g(¨?rB  )r   r    r  r6   s    r8   test_hyperu_gh2287zTestHyper.test_hyperu_gh2287
  s3    GN1c4880"	6 	6 	6 	6 	6r;   N)rZ  r[  r\  r  r  r  r  r  r  r  r  r  r!  r`  r;   r8   r  r  	  s        ) ) )
) ) )
6 6 64N N Np< p< p<d, , ,
; ; ;B B B>0 0 06 6 6 6 6r;   r  c                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0d/ Z1d0 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 ֿrA  )r   r    r  r   )r7   it0s     r8   r  zTestBessel.test_itj0y0
  sA    GN2&&''!#e-@BV,W&X&XYZ[[[[[r;   c                     t          t          j        d                    }t          |t          ddg          d           d S )Nr  gbqTtt?g/]ooۿrA  )r   r    r  r   )r7   it2s     r8   r  zTestBessel.test_it2j0y0
  sA    GOB''((!#e-BDX,Y&Z&Z[\]]]]]r;   c                 r    t          t          j        dd          t          j        dd                     d S Nr   rB   r#  )r   r    r  r6   s    r8   test_negv_ivzTestBessel.test_negv_iv
  s.    WZ!__gjA&6&677777r;   c                 z    t          j        d          }t          j        dd          }t          ||d           d S NrW  r   rA  )r    r  r  r   r7   ozozrs      r8   r  zTestBessel.test_j0
  8    Z^^j2Bs1%%%%%r;   c                 z    t          j        d          }t          j        dd          }t          ||d           d S NrW  rP   rA  )r    r  r  r   r7   o1o1rs      r8   r  zTestBessel.test_j1
  r0  r;   c                 R    t          j        dd          }t          |dd           d S )NrP   r  ;x?rA  )r    r  r   )r7   jnnrs     r8   r  zTestBessel.test_jn
  s,    z!BD!5a88888r;   c                 v    t          t          j        dd          t          j        dd           d           d S r  )r   r    r  r6   s    r8   test_negv_jvzTestBessel.test_negv_jv
  3    GJr!,,wz!A.>CCCCCr;   c                     g dg dg dg dg dg}t          |          D ]4\  }\  }}}t          j        ||          }t          ||dd|z             5d S )	N)r   rW  g
Ye?)UUUUUU?:0yE>g˿+>)r=  rR   g)%->)g@rR   g5c)!9)r=  rJ  g%,ͿrA  r  r  )r  r    r  r   )r7   r   rp   rm  r#  r\  ycs          r8   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r;   c                 v    t          t          j        dd          t          j        dd           d           d S r  )r   r    r  r6   s    r8   test_negv_jvezTestBessel.test_negv_jve
  5    GK1--Aa0@0@/@"EEEEEr;   c                    t          j        dd          }t          |dd           t          j        dd          }d}t          j        d|          t	          t          |j                             z  }t          ||d           d S )NrP   r  r7  rA  ?      ?)r    r  r   r  r   rf  r[  )r7   jvexpjvexp1r]  jvexprs        r8   r  zTestBessel.test_jve
  sz    Ab!!E"6q999Qu%%Aac!&kk\!2!22F6!,,,,,r;   c                    t          j        dd          }t          j        dd          }t          |t          g d          d           t          |t          g d          d           t          j        dd          }t	          |t          g d          d	
           t          j        dd          }t	          |t          g d          d	
           d S )Nr   r   rP   )go@.=@gzj,[@glN!@g5/ D'@gh>-@r@   gW@g0@gQX$@g*@g8*5{x0@rO   )gEk[@g~Cju]@gYrʝ^@g, `@gf	`@rH   rI   -  )gts@g&ǭr3t@gWt@g,$Y&u@gu@)r    jn_zerosr   r   r   )r7   jn0jn1jn102jn301s        r8   test_jn_zeroszTestBessel.test_jn_zeros
  sF   q##q##!#e -= -= -= '> '> ?@		A 	A 	A
 	"#e -8 -8 -8 '9 '9 :;		< 	< 	<  Q''u &> &> &>  ?  ? FK		L 	L 	L 	L  Q''u &> &> &>  ?  ? FK		L 	L 	L 	L 	L 	Lr;   c                    t          j        dd          }t          |d         dd           t          |d         dd           t          |d	         d
d           t          j        dd          }t          |d         dd           t          |d         dd           t          |d	         dd           t          j        dd          }t          |t          g d          d           d S )Nr   rd   i  g;@rH   rI   i  g8v@i+  gׂMm@rc  gxi@g	,@gи{>@i  r   )gUDX@g!@g*HS@gz5 @g@2;@r>  )r    rK  r   r   )r7   rL  jn10jn3010s       r8   test_jn_zeros_slowzTestBessel.test_jn_zeros_slow
  s   q#&&E
$9FFFFE
$9FFFFE
$9FFFFC((U%:GGGGU%:GGGGU%:GGGG!$q)) ': ': ': !; !; BF		G 	G 	G 	G 	G 	Gr;   c                 `  
 t           j        

fd}t          dd          D ]}t          j        |          \  }}}}t	          |||          D ]]\  }}}	|	dk    rt           
||          dd           )|	dk    rt           |||          dd           Lt          d|z            d S )Nc                 H     | dz
  |           | dz   |          z
  dz  S )NrP   rB   r`  )r^   r#  r  s     r8   jnpz(TestBessel.test_jnjnp_zeros.<locals>.jnp
  s/    Bqs1II1Q3q		)1,,r;   rP   rL   r   rb  r  zInvalid t return for nt=%d)r    r  rl   jnjnp_zeroszipr   AssertionError)r7   rW  ntr]  r^   rD  tzznnttr  s             @r8   test_jnjnp_zeroszTestBessel.test_jnjnp_zeros
  s    Z	- 	- 	- 	- 	-2,, 	L 	LB ,R00JAq!Q!!Qll L L
B77#BBr2JJ=====1WW#CCBKK>>>>>()E)JKKKL	L 	Lr;   c                     t          j        dd          }t          |t          g d          d           t          j        dd          }t	          t          j        d|          dd           d S )	NrP   r   g(yu?gOXeS@ga!@gxi'@g'Nw(-@r@     r   r  r  )r    	jnp_zerosr   r   r   r  )r7   rW  s     r8   test_jnp_zeroszTestBessel.test_jnp_zeros   s    !$$!#u .: .: .: (; (; <=		> 	> 	>
 A&&C--qu======r;   c           
          t          j        dd          }t          |t          g d          t          g d          t          g d          t          g d          fd           d S )NrP   r   rI  rb  )"@g+@g-9(1!@gȘ'@g>tA}-@)g0v@gjt@gH.?$@g}"O*@gGŧp0@)r    
jnyn_zerosr   r   )r7   jnzs     r8   test_jnyn_zeroszTestBessel.test_jnyn_zeros
  s     1%%!#u .: .: .: (; (;
 (- .: .: .: (; (;
 (- .: .: .: (; (;
 (- .: .: .: (; (;'<& =>'	? 	? 	? 	? 	?r;   c                     t          j        dd          }t          j        dd          t          j        dd          z
  dz  }t          ||d           d S )NrB   rP   r   rc  )r    r  r  r   )r7   jvprimjv0s      r8   test_jvpzTestBessel.test_jvp!  sN    Qq!!z!Awz!A.1F3r*****r;   c                 z    t          j        d          }t          j        dd          }t          ||d           d S r,  )r    r  r$  r   )r7   ozkozkrs      r8   r  zTestBessel.test_k0&  8    jnnz!BCQ'''''r;   c                 z    t          j        d          }t          j        dd          }t          ||d           d S r,  )r    r  r'  r   )r7   ozkeozkers      r8   r  zTestBessel.test_k0e+  8    {2Ab!!Dq)))))r;   c                 z    t          j        d          }t          j        dd          }t          ||d           d S r2  )r    r  r$  r   )r7   o1ko1krs      r8   r  zTestBessel.test_k10  rr  r;   c                 z    t          j        d          }t          j        dd          }t          ||d           d S r2  )r    r  r'  r   )r7   o1keo1kers      r8   r  zTestBessel.test_k1e5  rv  r;   c                    dt           j                                        z  dz
  }dt           j                                        z  dz
  }t          j        d||          }t          j        d||          }t          j        d||          }t          j        d||          }t	          |j        dgd           t	          |j        t          ||z   dz   ||z
  g          dz  d           ||z   dz   ||z   dz   z  d||z   dz   z  |dz   z  d|dz   z  |dz   z  g}|d         |d         d|d         z  z
  |d         |d         z
  |d         z   g}t	          |j        t          |          d	z  d           ||z   dz   ||z   dz   z  ||z   d
z   z  d
||z   dz   z  ||z   dz   z  |dz   z  d||z   dz   z  |dz   z  |dz   z  d|dz   z  |dz   z  |dz   z  g}|d         |d         d|d         z  z
  |d         d|d         z  z
  d|d         z  z   |d         |d         z
  |d         z   |d         z
  g}	t	          |j        t          |	          dz  d           d S )Nr   rP   r   rB   r   rg  r   r@   r   rF   rB  rA  g      H@)rU   r[   r    jacobir   r1  r   )
r7   rg  rh  P0P1P2P3cpp2cp3cs
             r8   test_jacobizTestBessel.test_jacobi:  sr   bi   1$bi   1$^Aa""^Aa""^Aa""^Aa""!"$s2...!"$uac!eAaC['9'9#'=bAAAs1uqs1uoq!A#a%y!A#1Q31>!uRU1RU7]2a5A;r!u#45!"$uSzz#~b999s1uqs1uoqs1u%a1Qi1Q&71&=!A#a%j!A#!$Q!Wac]AaC%8:!uRU1RU7]2a52a5=2a5#8Ar!uRU9J2a59PQ!"$uSzz$r:::::r;   c                 R    t          j        dd          }t          |dd           d S )Nr   r  _2?rA  )r    r  r   )r7   kn1s     r8   r  zTestBessel.test_knL  s,    j2C 2155555r;   c                 r    t          t          j        dd          t          j        dd                     d S Nr   r  r  r   r    r$  r6   s    r8   test_negv_kvzTestBessel.test_negv_kvP  s0    WZS))7:dC+@+@AAAAAr;   c                 R    t          j        dd          }t          |dd           d S )Nr   r  r  rc  r    r$  r   )r7   kv0s     r8   test_kv0zTestBessel.test_kv0S  s,    j2C!3R88888r;   c                 R    t          j        dd          }t          |dd           d S )NrP   r  gKދ@rc  r  )r7   kv1s     r8   test_kv1zTestBessel.test_kv1W  ,    j3C!2B77777r;   c                 R    t          j        dd          }t          |dd           d S )NrB   r  g)lHH@rc  r  )r7   kv2s     r8   test_kv2zTestBessel.test_kv2[  r  r;   c                 L    t          t          j        dd          d           d S )N    rP   g.Ք"H)r   r    r  r6   s    r8   test_kn_largeorderzTestBessel.test_kn_largeorder_  s%    
2q))+ABBBBBr;   c                 L    t          t          j        dd          d           d S )Nr   g =`XCr  r6   s    r8   test_kv_largeargzTestBessel.test_kv_largeargb  s$    WZ4((!,,,,,r;   c                 r    t          t          j        dd          t          j        dd                     d S r  )r   r    r'  r6   s    r8   test_negv_kvezTestBessel.test_negv_kvee  s0    W[c**GKc,B,BCCCCCr;   c                 6   t          j        dd          }t          j        dd          t          d          z  }t	          ||d           d}t          j        d|          }t          j        d|          t          |          z  }t	          ||d           d S )Nr   r  rA  rD  )r    r'  r$  r   r   )r7   kve1r  r]  kve2r  s         r8   r(  zTestBessel.test_kveh  s    {1R  j2s2ww&DQ'''{1Qj1ooc!ff$DQ'''''r;   c                 ~    d}t          t          j        d|           t          j        d|d          d           d S )Nr  rP   r   r^   rc  )r   r    r$  kvp)r7   r]  s     r8   test_kvp_v0n1zTestBessel.test_kvp_v0n1q  s=    WZ!__,gk!A.C.C.CRHHHHHr;   c                     d}d}t          j        |dz   |           ||z  t          j        ||          z  z   }t          j        ||d          }t          ||d           d S )Nr   r  rP   r  rc  r    r$  r  r   r7   rm  r]  xcr#  s        r8   test_kvp_n1zTestBessel.test_kvp_n1u  sj    j1Q!A#gj1oo"55K!q!!!B2&&&&&r;   c                     d}d}|dz  |dz  z   |z
  |dz  z  t          j        ||          z  t          j        |dz   |          |z  z   }t          j        ||d          }t          ||d           d S )Nr   r  rB   rP   r  rc  r  r  s        r8   test_kvp_n2zTestBessel.test_kvp_n2|  s    d1a4ik1a4'*Qq//1GJqs14E4Ea4GGK1"""B2&&&&&r;   c                 z    t          j        d          }t          j        dd          }t          ||d           d S r,  )r    rF  rK  r   r-  s      r8   rG  zTestBessel.test_y0  r0  r;   c                 z    t          j        d          }t          j        dd          }t          ||d           d S r2  )r    r\  rK  r   r3  s      r8   rI  zTestBessel.test_y1  r0  r;   c                 l   t          j        d          \  }}t          j        dd          \  }}t          ||f         }t          ||f         }t          t	          t          j        d|                    dd           t          t	          t          j        d|          |z
            dd           d S )NrB   rP   rR  r   rY  )r    y0_zerosr   r   rf  rN  )r7   yoypozozpor  allvals          r8   test_y0_zeroszTestBessel.test_y0_zeros  s    !!$$3!!A...3BiCG!#gjS&9&9":":3rBBB!#gj3&7&7&>"?"?BGGGGGr;   c                     t          j        d          }t          |t          dg          t          dg          fd           d S )NrP   rg  gѮBO?r   )r    y1_zerosr   r   )r7   r\  s     r8   test_y1_zeroszTestBessel.test_y1_zeros  sC    a  !"eWI&6&6ugY7G7G%HKKKKKr;   c                     t          j        dd          }t          |t          dg          t          dg          fd           d S )NrP   r  yL
F%u?!rh?y;OnгY?r   )r    	y1p_zerosr   r   )r7   y1ps     r8   test_y1p_zeroszTestBessel.test_y1p_zeros  sJ    !,,,!#um_'='=uoEV?W?W&XYZ[[[[[r;   c                     t          j        dd          }t          |t          ddg          d           t          j        dd          }t	          |g dd	           d S )
Nr@   rB   g3@g(A&"@r   rc  )g]E.+"|@gH(|@gff|}@g&b`~@gHO_~@r  rI   )r    yn_zerosr   r   r   )r7   ans     r8   test_yn_zeroszTestBessel.test_yn_zeros  s    a""!"UGW+=%>%>qAAAc!$$ 5 5 5;@	B 	B 	B 	B 	B 	Br;   c                 X   t          j        dd          }t          |t          ddg          d           t          j        dd          }t	          t          j        d|          dd	           t          j        d
d          }t	          t          j        d
|          dd	           d S )Nr   rB   gQhվ@gzN@rF   +   r   r  r  rc  r  )r    	ynp_zerosr   r   r   r  r7   aos     r8   test_ynp_zeroszTestBessel.test_ynp_zeros  s    q##!"UJ
+C%D%DQGGGr!$$B++QU;;;;s1%%C,,ad;;;;;;r;   c                 z    t          j        dd          }t          t          j        d|          dd           d S )Nrc  r   r   r   r  )r    r  r   r  r  s     r8   test_ynp_zeros_large_orderz%TestBessel.test_ynp_zeros_large_order  s;    s1%%C,,ae<<<<<<r;   c                 R    t          j        dd          }t          |dd           d S NrP   r  5,1
rA  )r    rK  r   )r7   yn2ns     r8   rL  zTestBessel.test_yn  s,    z!BD!4Q77777r;   c                 v    t          t          j        dd          t          j        dd           d           d S r  )r   r    rN  r6   s    r8   test_negv_yvzTestBessel.test_negv_yv  r;  r;   c                 R    t          j        dd          }t          |dd           d S r  )r    rN  r   )r7   yv2s     r8   rO  zTestBessel.test_yv  s,    j2C 3A66666r;   c                 v    t          t          j        dd          t          j        dd           d           d S r  )r   r    rQ  r6   s    r8   test_negv_yvezTestBessel.test_negv_yve  rB  r;   c                     t          j        dd          }t          |dd           t          j        dd          t	          d          z  }t          j        dd          }t          ||d           d S )NrP   r  r  rA  rD  rE   )r    rQ  r   rN  r   )r7   yve2yve2ryve22s       r8   rR  zTestBessel.test_yve  sk    {1R  D!4Q777
1U##CGG+Ae$$E%*****r;   c                     t          j        dd          t          j        dd          z
  dz  }t          j        dd          }t          ||d           d S )NrP   r  r   r   rB   rc  )r    rN  r  r   )r7   yvpryvp1s      r8   test_yvpzTestBessel.test_yvp  sR    
1R  7:a#3#33S8{1R  !$tB/////r;   c              #      K   g d}g d}t          j        ||          E d{V  t          j        dt          dd          z   dg          E d{V  dS )z>Yield points at which to compare Cephes implementation to AMOS)ir         4r  r  r  r   r|   {G(@r  rJ  )irk  rE   r|   r        i@g     y@g     Ă@g@  i'  Nr{   irk  r  )	itertoolsproductr   )r7   rm  r]  s      r8   _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Br;   dy=r   Nc                    |                                  D ]\  }}| |||          r |||           |||dz              |t          |          |          }
}	}t          j        |          r)t	          t          j        |	          dk    ||f           t          j        |          rt	          |	j        dk    ||f           t          ||	||f||           |t          |          k    rt          |
|	||f||           d S )NrQ  u <7~r   )r  rJ   rT   )	r  rk   rU   r   r   rf  r   r[  r   )r7   r|  f2rJ   rT   rn  rm  r]  c1c2c3s              r8   check_cephes_vs_amoszTestBessel.check_cephes_vs_amos  s,   //11 	; 	;DAqDDAJJAq22a"::rr#a&&!}}BBx|| ;r

e+aV4444" ;1q!f----BATMMMMA;;#BQF*.T; ; ; ;	; 	;r;   ppc64lezfails on ppc64lerT  c                 `    |                      t          j        t          j        dd           d S )NrR   u5% r   )r  r    r  r  r6   s    r8   test_jv_cephes_vs_amosz!TestBessel.test_jv_cephes_vs_amos  +     	!!'*gju6!RRRRRr;   c                 `    |                      t          j        t          j        dd           d S )Nr  r  r   r  r    rN  rK  r6   s    r8   test_yv_cephes_vs_amosz!TestBessel.test_yv_cephes_vs_amos  r  r;   c                 h    d }|                      t          j        t          j        dd|           d S )Nc                 (    t          |           dk    S )Nr  )rf  )rm  r]  s     r8   skipperzDTestBessel.test_yv_cephes_vs_amos_only_small_orders.<locals>.skipper  s    q66B;r;   r  r  )rJ   rT   rn  r  )r7   r  s     r8   (test_yv_cephes_vs_amos_only_small_ordersz3TestBessel.test_yv_cephes_vs_amos_only_small_orders  s;    	 	 	!!'*gju6X_!`````r;   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   )rU   r  r  r    r  r6   s    r8   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 rP   r{   rE   rB   )r*  r  rA  r   r  r  rQ  r  gYngH׊>)rU   r[   r\   r  r  r  rk   r  r    r  r   rf  r   argmaxr   )	r7   r  rm  r#  imskr  r  dcr_   s	            r8    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  r6   s    r8   test_kv_cephes_vs_amosz!TestBessel.test_kv_cephes_vs_amos  sJ    !!'*gjt&!QQQ!!'*gjt&!QQQQQr;   c                     t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           d S )	Nr   r@   gP?rJ  r  g~Omʒ?gY8E@@gKSn)r   r    r  r6   s    r8   test_ticket_623zTestBessel.test_ticket_623  s_    
1a((*=>>>
3--/ABBB
3	224GHHHHHr;   c           	         t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d	           t          t          j        dd          d
           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d	           t          t          j        dd          d
           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          t          j        dd          t          d          z             t          t          j        dd          t          j        dd          t          d          z             t          t          j	        dd          t          j        dd          t          d          z             t          t          j
        dd          t          j        dd          t          d          z             t          t          j        dd          t          j        dd          dt          j        dd          z  z              t          t          j        dd          t          j        dd          dt          j        dd          z  z
             dS )zNegative-order BesselsrE   rP   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?      ?rZ  N)r   r    r  rN  r  r$  r  r   rQ  r  r'  r  r  r6   s    r8   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gr;   c                    t          t          t          j        dd                               t          t          t          j        dd                               t          t          t          j        dd                               t          t          t          j        dd                               t          t          t          j        dd                               t          t          t          j        dd                               t          t          t          j        dd                               t          t          t          j        dd                               t          t          t          j	        dd                               t          t          t          j	        dd                               t          t          t          j
        dd                               t          t          t          j
        dd                               t          t          t          j        d          dd                                                   t          j        d                     t          t          t          j        d          dd                                                    t          j        d                     dS )zReal-valued Bessel domainsr{   rE   rP   r   rB   r@   N)r   r   r    r  r  rN  r$  r  r  rQ  r'  r=   r  rm  r6   s    r8   test_ticket_854zTestBessel.test_ticket_854K  s%   gjb))**+++gjb))**+++gjb))**+++gjB''(()))gjb))**+++gjB''(()))gk#r**++,,,gk#r**++,,,gk#r**++,,,gk!R(())***gk#r**++,,,gk!R(())***gmB''!,--1133W]25F5FGGGE'-++AaC01155777r9J9JKKKKKr;   c                     t          t          j        dd          t          j        k               t          t          j        dd          t          j        k               d S )Nrh  r   )r   r    r$  rU   r   r'  r6   s    r8   test_gh_7909zTestBessel.test_gh_7909\  sJ    
3""bf,---C##rv-.....r;   c                     t          t          j        dd          d           t          t          j        dd          d           dS )zReal-valued Bessel I overflowrP   i  g~rM   i`  g ?los~Nr   r    r  r6   s    r8   test_ticket_503zTestBessel.test_ticket_503`  sB    
1c**,ABBB
4..0EFFFFFr;   c                 L    t          t          j        dd          d           d S )Nr  rP   r  r  r6   s    r8   test_iv_hyperg_poleszTestBessel.test_iv_hyperg_polese  s%    
4++->?????r;      c                    t          d|                              t                    }|d|z  z   t          d|z            z  t	          j        |dz             z
  t	          j        ||z   dz             z
  }t          |t          |          <   t          |          }t          |          
                                t          t                    j        z  |z  t          |d                   dz  z   }|                                |fS )Nr   rB   r{   rP   rE   rc  )r   r  r   r   r    r   r   r   r   rf  r   r   epssumr7   rm  r]  r^   r_   rw  r  s          r8   	iv_serieszTestBessel.iv_seriesh  s    1aLL''qsUC1II! 4 44wqs1u7M7MM%((FF!ffjjllU6]]..2S2ZZ]Buuww|r;   c                     dD ]@}|                      d|          \  }}t          t          j        |          |||           Ad S )Nr|   r   r  r   rT   r  )r  r   r    r  r7   r]  valuer  s       r8   test_i0_serieszTestBessel.test_i0_seriesp  X    ! 	G 	GA1--JE3GJqMM5sAFFFFF	G 	Gr;   c                     dD ]@}|                      d|          \  }}t          t          j        |          |||           Ad S )Nr  rP   r  )r  r   r    r  r  s       r8   test_i1_serieszTestBessel.test_i1_seriesu  r  r;   c           	          dD ]H}dD ]C}|                      ||          \  }}t          t          j        ||          ||||f           DId S )N)r  r  r  r   r|   r  r  )r|   r   r  y             @r  )r  r   r    r  r7   rm  r]  r  r  s        r8   test_iv_serieszTestBessel.test_iv_seriesz  sw    7 	S 	SA, S S!^^Aq11
s
1a 0 0%cAq6RRRRRS	S 	Sr;   c           	          ddgddgddgddgddgd	d
gddgddgg}t          |          D ]C\  }\  }}t          j        |          t          |           z  }t	          ||dd|z             Dd S )Nr   r|   rR   rW  g0oO?r{   g!?grb?r  gpH?r   gC~?r   ggo?rA  r  r  )r  r    r  r   r   r7   r   rp   r#  rm  r  s         r8   r  zTestBessel.test_i0  s    *#,%%%%%& #6** 	B 	BIAv1AaR(BAq*q.AAAAA	B 	Br;   c                 z    t          j        d          }t          j        dd          }t          ||d           d S r,  )r    r  r  r   )r7   oizeoizers      r8   r  zTestBessel.test_i0e  rv  r;   c                     ddgddgddgddgdd	gd
dgddgg}t          |          D ]C\  }\  }}t          j        |          t          |           z  }t	          ||dd|z             Dd S )Nr   rR   gj|=rW  gȕ![1?r{   g;͘?r|   gRΜ?r   g|?r   g}f?rA  r  r  )r  r    r  r   r   r&  s         r8   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r;   c                 z    t          j        d          }t          j        dd          }t          ||d           d S r2  )r    r  r  r   )r7   oi1eoi1ers      r8   r  zTestBessel.test_i1e  rv  r;   c                     t          t          j        d                    }t          |t          ddg          d           d S )Nr   gїJB?@g*u?)r   r    r  r   )r7   iti0s     r8   r  zTestBessel.test_iti0k0  sA    W^A&&''!$u.@BT-U'V'VWXYYYYYr;   c                 n    t          j        d          }t          |t          ddg          d           d S )NrW  gݳɄ|T?gVƥ
@rF   )r    r  r   r   )r7   it2ks     r8   r  zTestBessel.test_it2i0k0  s9    r""!$u.CEW-X'Y'YZ[\\\\\r;   c                 r    t          j        dd          t          d          z  }t          |dd           d S )Nr   rW  皙gv M?rc  )r    r  r   r   )r7   iv1s     r8   r  zTestBessel.test_iv  s7    j2s3xx'C 3B77777r;   c                 r    t          t          j        dd          t          j        dd                     d S r)  )r   r    r  r6   s    r8   test_negv_ivezTestBessel.test_negv_ive  s0    W[1%%w{2a'8'899999r;   c                     t          j        dd          }t          j        dd          t          d          z  }t	          ||d           d S )Nr   rW  r3  rc  )r    r  r  r   r   )r7   ive1r4  s      r8   r  zTestBessel.test_ive  sG    {1R  j2s3xx'DR(((((r;   c                 t    t          t          j        dd          t          j        dd          d           d S )NrP   rB   r   rc  )r   r    r  ivpr6   s    r8   	test_ivp0zTestBessel.test_ivp0  s0    GJqOOW[1-=-=rBBBBBr;   c                     t          j        dd          t          j        dd          z   dz  }t          j        dd          }t          ||d           d S )Nr   rB   rP   rc  )r    r  r:  r   r  s      r8   test_ivpzTestBessel.test_ivp  sN    Z!__wz!A.1K!Aa#####r;   )r  r   N)r  )UrZ  r[  r\  r  r  r*  r  r  r  r:  r  rA  r  rP  rT  r`  re  rj  rn  r  r  r  r  r  r  r  r  r  r  r  r  r  r(  r  r  r  rG  rI  r  r  r  r  r  r  rL  r  rO  r  rR  r  r  r  r]  r^  r_  rR  machiner  r  r  r  slowr  r  r  r	  r  r  r  r  r  r  r!  r$  r  r  r  r  r  r  r  r6  r  r;  r=  r`  r;   r8   r#  r#  
  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$ $ $ $ $r;   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   rP   rB   r   r@   r   rg  rE   )rP   r  rB   r   )rE   r  irF   r0  )rP   iH   ir  ry  )rE   r  i8iX  ir  r  )r    laguerrer   r1  r   )r7   lag0lag1lag2lag3lag4lag5s          r8   test_laguerrezTestLaguerre.test_laguerre  s/   """"""""""""!$&!R000!$&"Q333!$&xxx)<R@@@!$&|||)<)<S)@DDD!$&/@/@/@)A)A$)FrJJJ!$&/H/H/H)I)I%)OPRSSSSSr;   c                 X   dt           j                                        z  dz
  }t          j        d|          }t          j        d|          }t          j        d|          }t          j        d|          }t	          |j        dg           t	          |j        d|dz   g           t          |j        t          dd|dz   z  |d	z   |d
z   z  g          d
z             t          |j        t          dd|dz   z  d|dz   z  |dz   z  |dz   |dz   z  |dz   z  g          dz             d S )Nr   r  r   rP   rB   r   rE   r+  r|   r   r#  r0  )rU   r[   r    r  r   r1  r   r   )r7   r_   rE  rF  rG  rH  s         r8   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[#[\\\\\r;   N)rZ  r[  r\  rK  rM  r`  r;   r8   rA  rA    s:        T T T	] 	] 	] 	] 	]r;   rA  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   rP   rB   r   r@   r   )r   r   rE   r   rg  r  )r   r   r#  r   )r  r   rH  r   r   r   )?   r   ir   rr   r   )r    legendrer   r1  r   r   )r7   leg0leg1leg2leg3leg4leg5s          r8   test_legendrezTestLegendre.test_legendre  s$   """"""""""""TVaS!!!TVaU###DFE(((OOC$7DDDDDFE***$5$5c$9:::DFE...$9$9#$=>>>DFE*;*;*;$<$<S$@AAAAAr;   N)rZ  r[  r\  rY  r`  r;   r8   rO  rO    s(        B B B B Br;   rO  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 )NrP   rW  r   rB   r+  r   rA  )r    lmbdar   r  r  r  r   )r7   lamlamrs      r8   
test_lmbdazTestLambda.test_lmbda  s    mAb!!wz!B''7:a+;+;);B)>?@@w{1R(("WZ"-=-=*=c*AAgkRSTVFWFWDWXZDZ*Z[\\^!#d1-----r;   N)rZ  r[  r\  r`  r`  r;   r8   r[  r[    s#        . . . . .r;   r[  c                       e Zd Zd Zd ZdS )	TestLog1pc                     t          j        d          t          j        d          t          j        d          f}t          d          t          d          t          d          f}t          ||d           d S )Nrc  rY  rB  rg  rA  r    r,  r   r   )r7   l1pl1prls      r8   r-  zTestLog1p.test_log1p  sb    }R  '-"3"3W]25F5FGR#b''3r77+!#eA.....r;   c                     t          j        d          t          j        d          t          j        d          f}t          d          t          d          t          d          f}t          ||d           d S )NrP   r[  r  rB   r  r  rA  rd  )r7   l1pml1pmrls      r8   test_log1pmorezTestLog1p.test_log1pmore  sb    a  '-"4"4gmC6H6HIa&&S#c((+!$va00000r;   N)rZ  r[  r\  r-  rj  r`  r;   r8   rb  rb    s2        / / /
1 1 1 1 1r;   rb  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?rB   r   r|   r{   rP   r   rF   rD   )r    clpmnr   r   r   )r7   r]  clps      r8   
test_clpmnz TestLegendreFunctions.test_clpmn  s!   mAq!Q''!#FAsAaCE!G}5"D1QKK1T!A#a%[[A"FAqs1uI68 9 9 FFAaC0"Ad1Q3q5kkM1ac!eAg;tAaCE{{3JK"FAaC02 3 34 	 	 	 	 	r;   c                 p   d}d}d}d}t          j        |||d|z  z   d          d         ||f         }t          j        |||d|z  z
  d          d         ||f         }t          t          ||g          t          t          j        |||          t          j        |||          g          d           d S )	NrR   rP   r   r{   rZ  rB   r   rD   )r    rn  r   r   r5  r7   r  rD  r^   r#  clp_plus	clp_minuss          r8   test_clpmn_close_to_real_2z0TestLegendreFunctions.test_clpmn_close_to_real_2  s    =AqCx33A6q!t<M!Q"S&!44Q71=	!%9(=">">"'aA)>)>)0aA)>)>)@ #A #A"#	% 	% 	% 	% 	%r;   c                    d}d}d}d}t          j        |||d|z  z   d          d         ||f         }t          j        |||d|z  z
  d          d         ||f         }t          t          ||g          t          t          j        |||          t          j        d|z  t
          j        z            z  t          j        |||          t          j        d|z  t
          j        z            z  g          d	           d S )
NrR   rP   r   r{   rZ  r   y             y              ?rD   )r    rn  r   r   r5  rU   r   r   rr  s          r8   test_clpmn_close_to_real_3z0TestLegendreFunctions.test_clpmn_close_to_real_3  s   =AqCx33A6q!t<M!Q"S&!44Q71=	!%9(=">">"'aA)>)>rveAgbem?T?T)T)0aA)>)>rvd1fRUl?S?S)S)U #V #V"#	% 	% 	% 	% 	%r;   c                     d}d}d}d}dD ]e}t          t          j        |||d|z  z   |          d         ||f         t          j        |||d|z  z
  |          d         ||f         d           fd S )NHz>rP   rZ  rB   r   r   rF   )r   r    rn  )r7   r  rD  r^   r#  rj  s         r8   test_clpmn_across_unit_circlez3TestLegendreFunctions.test_clpmn_across_unit_circle'  s     	M 	MDaAbfHd C CA Fq!t L#M!Q"S&$??B1a4H!M M M M	M 	Mr;   c                    dD ]}t          d          D ]}t          d|          D ]}t          j        |||          }t          t	          j        |d         ddd f                                                              t          j        |||          }t          t	          j        |d         ddd f                                                              Ȍd S )N)rP   rE   r@   rP   )rl   r    rn  r   rU   r   r  lpmn)r7   r]  r^   rD  lps        r8   test_infzTestLegendreFunctions.test_inf0  s     	9 	9A1XX 9 9q! 9 9A q!Q//BBHRU1QRR4[115577888 aA..BBHRU1QRR4[1155778888	99	9 	9r;   c                 "   g d}d}d}dD ]}|D ]~}dD ]y}t          j        |||d|z  z   |          d         t          j        |||d|z  z
  |          d         z
  |z  }t          t          j        ||||          d         |d	
           zd S )N)r  y            ?y            y      ?      r  r  r  r  rB   r   rz  )r   y        MbP?r{   r   rP   rl  rI   )r    rn  r   )r7   zvalsrD  r^   rj  r]  happrox_derivatives           r8   test_deriv_clpmnz&TestLegendreFunctions.test_deriv_clpmn9  s    + + + 	/ 	/D / /& / /A)0q!Qs1uWd)K)KA)N+2=AqQw+M+Ma+P*QRS)T%#GM!Q4$@$@$C$5)-/ / / / ///	/ 	/r;   c                     t          j        ddd          }t          |t          g dg          t          g dg          fd           d S )Nr   rB   r{   r|   r{         r   r|   rh  r@   )r    r}  r   r   r7   r~  s     r8   	test_lpmnzTestLegendreFunctions.test_lpmnH  s    \!Ab!!!"e .@ .@ .@ -A 'B 'B ', .? .? .? -@ 'A 'A&B
 CD	E 	E 	E 	E 	Er;   c                     t          j        dd          }t          |t          g d          t          g d          fd           d S )NrB   r{   r  r  r@   )r    lpnr   r   )r7   lpnfs     r8   test_lpnzTestLegendreFunctions.test_lpnQ  s    {1R  !$ /B /B /B )C )C ', -? -? -? '@ '@(A
 BC	D 	D 	D 	D 	Dr;   c                 v   t          j        ddd          }t          |dd           t          j        ddd          }t          |dd           t          j        d	
          5  t          j        ddd          }d d d            n# 1 swxY w Y   t          |dk    pt          j        |                     d S )Nr   rB   r{   r  rD   (   r   gI?r  r  rE   )r    r5  r   rU   r  r   r   r  s     r8   r6  zTestLegendreFunctions.test_lpmvZ  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   rB   r{   r@   rP   )r    lqmnlqnr   )r7   lqmnflqfs      r8   	test_lqmnzTestLegendreFunctions.test_lqmnf  sh    Qq$$k!B!%(1+c!fQ777!%(1+c!fQ77777r;   c                     d}d}||z
  ||z   fD ]?}t          j        dd|          d         d         }d||z  dz
  z  }t          ||           @dS )znalgorithm for real arguments changes at 1.0001
           test against analytical result for m=2, n=1
        gqh ?gh㈵>rB   rP   r   )rE   rE   N)r    r  r   )r7   x0deltar#  lqr^  s         r8   test_lqmn_gt1z#TestLegendreFunctions.test_lqmn_gt1l  su     U(BuH% 	. 	.AaA&&q)&1B!A#a%yHH----	. 	.r;   c                    t          j        ddd          \  }}t          |j        d           t          |j        d           t          j        ddd          \  }}t          |j        d           t          |j        d           d S )Nr@   r[  )r   r   r   )r   rP   )r    r  r   r)  )r7   rg  rh  s      r8   test_lqmn_shapez%TestLegendreFunctions.test_lqmn_shapew  s~    |Aq#&&1QWf%%%QWf%%%|Aq#&&1QWf%%%QWf%%%%%r;   c                     t          j        dd          }t          |t          g d          t          g d          fd           d S )NrB   r{   )gk+ݓ?g=yX5gW2)g|a2U?g~jt?gڊer@   )r    r  r   r   )r7   r  s     r8   test_lqnzTestLegendreFunctions.test_lqn  sb    k!B!#u-G-G-G'H'H',-E-E-E'F'F'HHI	K 	K 	K 	K 	Kr;   N)rZ  r[  r\  rp  ru  rw  r{  r  r  r  r  r6  r  r  r  r  r`  r;   r8   rl  rl    s        
 
 

% 
% 
%
% 
% 
%M M M9 9 9/ / /E E ED D D
) 
) 
)8 8 8	. 	. 	.& & &K K K K Kr;   rl  c                        e Zd Zd Zd Zd ZdS )TestMathieuc                     d S r  r`  r6   s    r8   r9  zTestMathieu.test_mathieu_a  r  r;   c                 0    t          j        dd           d S )NrB   r   )r    r*   r6   s    r8   test_mathieu_even_coefz"TestMathieu.test_mathieu_even_coef  s    !!A&&&&&r;   c                     d S r  r`  r6   s    r8   test_mathieu_odd_coefz!TestMathieu.test_mathieu_odd_coef  s    r;   N)rZ  r[  r\  r9  r  r  r`  r;   r8   r  r    sA          ' ' '    r;   r  c                       e Zd Zd Zd ZdS )TestFresnelIntegralc                     d S r  r`  r6   s    r8   ru  z$TestFresnelIntegral.test_modfresnelp  r  r;   c                     d S r  r`  r6   s    r8   rq  z$TestFresnelIntegral.test_modfresnelm  r  r;   N)rZ  r[  r\  ru  rq  r`  r;   r8   r  r    s2              r;   r  c                       e Zd Zd ZdS )TestOblCvSeqc                 r    t          j        ddd          }t          |t          g d          d           d S )Nr   r   rP   )g~T~Oֿgt_J?gm{@g@j'&@r   )r    
obl_cv_seqr   r   )r7   obls     r8   test_obl_cv_seqzTestOblCvSeq.test_obl_cv_seq  sT     1Q''!#e -9 -9 -9 ': ': ;<	= 	= 	= 	= 	=r;   N)rZ  r[  r\  r  r`  r;   r8   r  r    s#        = = = = =r;   r  c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestParabolicCylinderc                     t          j        dd          }t          |t          ddg          t          ddg          fd           d S )NrP   rW  gQ?gx$(~?gx$(~g(\?r@   )r    pbdn_seqr   r   )r7   pbs     r8   test_pbdn_seqz#TestParabolicCylinder.test_pbdn_seq  si    a##!"eV.4-6 '7 '7&+W-3-5 '6 '6&7 89	: 	: 	: 	: 	:r;   c                     t          j        dd           dt          j        dd          d         z  t          j        dd          d         z
   d S )NrP   r  rW  r   )r    r  r6   s    r8   r  zTestParabolicCylinder.test_pbdv  sL    Qra##A&&a););A)>>>>>r;   c                     t          j        dd          }t          j        dd          }t          |t	          |d                   t	          |d                   fd           d S )NrP   rW  r   r@   )r    r  pbdv_seqr   r   )r7   pbnpbvs      r8   test_pbdv_seqz#TestParabolicCylinder.test_pbdv_seq  sW    q$$q$$!#tCF||DQLL&A!DDDDDr;   c                    t          j        ddd          }d|dz  z  t          j        t           j                  z  t	          j        dd|z  z
            z  }t          t	          j        |d          d         |dd	           t          t	          j        d
d          d         dd           t          t	          j        dd          d         dd           d S )Nrk  rc  r   rB   r{   r   r   r   r   gGz$@gq=
ףp4@gHQ9rv   rI   g(\#gQ@gkS a>)rU   rZ  r   r   r    r   r   r  )r7   etar]  s      r8   test_pbdv_pointsz&TestParabolicCylinder.test_pbdv_points  s    k#r1%%AJrwru~~%gmBr#vI&>&>>S"--a0!%eLLLL 	UE22157JQVWWWWUD11!46JQVWWWWWWr;   c                    t          j        ddd          d d d f         }t          j        ddd          d d d f         }t          j        ||          }ddt	          |          z  z   }t          j        |||z             d         t          j        |||z
            d         z
  |z  d	z  }t          |d
         |dd           d S Nr  r@   rA  rk  rc  r   ry  r   r   rP   rb  r   )rU   rZ  r    r  rf  r   r7   r#  r  rk  r  dps         r8   test_pbdv_gradientz(TestParabolicCylinder.test_pbdv_gradient      KAq!!!!!D&)k#r1%%d111f-La  T#a&&[ l3C((+gl3C.H.H.KKsRUWW!bt$777777r;   c                    t          j        ddd          d d d f         }t          j        ddd          d d d f         }t          j        ||          }ddt	          |          z  z   }t          j        |||z             d         t          j        |||z
            d         z
  |z  d	z  }t          |d
         |dd           d S r  )rU   rZ  r    r  rf  r   r  s         r8   test_pbvv_gradientz(TestParabolicCylinder.test_pbvv_gradient  r  r;   N)	rZ  r[  r\  r  r  r  r  r  r  r`  r;   r8   r  r    st        : : :? ? ?E E E
X X X8 8 88 8 8 8 8r;   r  c                       e Zd Zd ZdS )TestPolygammac           	         t          j        dd          }t          j        dd          }t          |dd           t          |dd           g d}t          t          j        d|          t          j        |                     g d	}g d
}g d}t          t          j        ||          |           t	          j        |gdz            }t          t          j        |t	          j        |gdz                      |           t          t          j        t	          j        |gdz            |          |           d S )NrB   rP   r   gX];rc  gOV,@@)rB   r   g  8Br   r  r  )g2}jg.M?g}2;ο)r    	polygammar   r  rU   r  )r7   poly2poly3r#  r^   r^  s         r8   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$	& 	& 	& 	& 	&r;   N)rZ  r[  r\  r  r`  r;   r8   r  r    s#        & & & & &r;   r  c                       e Zd Zd ZdS )TestProCvSeqc                 r    t          j        ddd          }t          |t          g d          d           d S )Nr   r   rP   )g"~j?g6?Ң@g)u8F"@g2g)@r   )r    
pro_cv_seqr   r   )r7   prols     r8   test_pro_cv_seqzTestProCvSeq.test_pro_cv_seq  sT    !!Aa((!$u .: .: .: (; (; <=	> 	> 	> 	> 	>r;   N)rZ  r[  r\  r  r`  r;   r8   r  r    s#        > > > > >r;   r  c                       e Zd Zd ZdS )TestPsic                 P    t          j        d          }t          |dd           d S )NrP   goxrA  )r    r  r   )r7   pss     r8   r  zTestPsi.test_psi  s(    [^^B3A66666r;   N)rZ  r[  r\  r  r`  r;   r8   r  r    s#        7 7 7 7 7r;   r  c                       e Zd Zd Zd ZdS )
TestRadianc                 d    t          j        ddd          }t          |t          dz  d           d S )Nr  r   r   r   r    r  r   r   )r7   rads     r8   r   zTestRadian.test_radian  s1    nR!$$C3q)))))r;   c                 j    t          j        ddd          }t          |t          dz  dz   d           d S )Nr  rP   rk  rB   gC?r   r  )r7   rad1s     r8   test_radianmorezTestRadian.test_radianmore  s7    ~b2&&DA&;!;A>>>>>r;   N)rZ  r[  r\  r   r  r`  r;   r8   r  r    s2        * * *? ? ? ? ?r;   r  c                       e Zd Zd Zd ZdS )TestRiccatic                 .   d\  }}t          j        ||f          }t          |          D ]E}t          j        ||          }t          j        ||d          }||z  |d|f<   ||z  |z   |d|f<   Ft          |t          j        ||          d           d S N)rB   r  T)
derivativer   rP   rA  )rU   emptyrl   r    spherical_jnr   
riccati_jn)r7   r  r#  Sr^   r{  jps          r8   test_riccati_jnzTestRiccati.test_riccati_jn      1HaVq 	 	A$Q**A%at<<<BqSAacFrTAXAacFF!!W%71%=%=qAAAAAr;   c                 .   d\  }}t          j        ||f          }t          |          D ]E}t          j        ||          }t          j        ||d          }||z  |d|f<   ||z  |z   |d|f<   Ft          |t          j        ||          d           d S r  )rU   r  rl   r    spherical_ynr   
riccati_yn)r7   r  r#  Cr^   r\  yps          r8   test_riccati_ynzTestRiccati.test_riccati_yn  r  r;   N)rZ  r[  r\  r  r  r`  r;   r8   r  r    s:        B B BB B B B Br;   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%@)rc  rc  rc  rY  )r  maprk   r    r  r   )r7   rndrndrls      r8   r	  zTestRound.test_round  sk    3sGM$//d0C0CGMRVDWDWX_XefjXkXklmmnn 3u%%%%%r;   N)rZ  r[  r\  r	  r`  r;   r8   r  r    s#        	& 	& 	& 	& 	&r;   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   r{   r+  rB   r   r@   r   g      .@r   rr   rZ  rJ  r   g      ?r   g      @rP   r   r0  g      ?g     A@)	r    sph_harmrU   r   r   r   r	   r
   r   )shr   r   r   r	   r
   s         r8   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-. . . . .r;   c                  J   t          j        t           j                  } t          t	          j        dddd          j        |            t          t	          j        dgddd          j        |            t          t	          j        ddgdd          j        |            t          t	          j        dddgd          j        |            t          t	          j        ddddg          j        |            t          t	          j        dgdgdgdg          j        |            d S r3   )rU   r<  r  r   r    r  )dts    r8   "test_sph_harm_ufunc_loop_selectionr  F  s   	"-	 	 B!!Q1--3R888!1#q!Q//5r:::!!aS!Q//5r:::!!QQ//5r:::!!QA3//5r:::!1#sQC!55;R@@@@@r;   c                   (    e Zd ZddZd Zd Zd ZdS )
TestStruverG  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   rE   r{   rB   rP   rh  )	r   r    r   rf  r   r   r   r  r  r  s          r8   _serieszTestStruve._seriesR  s    1aLL!Gr!tqs1uQw''ae(<(<<W]1Q3s7=S=SS!ffjjllU6]]..2uuww|r;   c                     dD ]J}dD ]E}|                      ||          \  }}t          t          j        ||          |d|          ||ff FKdS )z-Check Struve function versus its power series)
irk  (\r  rE   r   rP   r  r     )rP   rc  r  rU  rL   r   r   N)r  r   r    r=  r#  s        r8   test_vs_serieszTestStruve.test_vs_seriesY  s    B 	W 	WA( W W!\\!Q//
sq! 4 4e!#NNNQRTUPVVVVW	W 	Wr;   c                    t          t          j        dd          dd           t          t          j        dd          dd           t          t          j        d	d
          dd           t          t          j        dd          dd           t          t          j        dd          t          j        dd                      t          t          j        dd          t          j        dd                      t          t          j        dd          t          j        dd          
            t          t          j        dd          t          j        dd          
            t	          t          t          j        dd                               t	          t          t          j        dd                               d S )Nr  rU  g;cv=?ry  rI   gQ g< j?r>  r  r  g?rv   g       igzz?r  i)   rB  r  rY  gffffffrE   g333333$)r   r    r=  r   r   r   r6   s    r8   test_some_valueszTestStruve.test_some_values`  s|   ub11?NNNNub11?NNNNtS11?OOOOtS11?OOOOW^C--sB0G0G/GHHHW^C--sB0G0G/GHHHW^C--sB0G0G/GHHHW^C--sB0G0G/GHHHgnT2..//000gnUB//0011111r;   c                 J   t          t          j        dd          t          j        dd                     t          t          j        dd          t          j        dd                     t          t          j        dd          t          j        dd                     dS )zRegression test for #679r  g3@g*   4@r  g333333N)r   r    r=  r6   s    r8   test_regression_679zTestStruve.test_regression_679m  s    tY77i9X9XYYYtY77i9X9XYYYtY77i9X9XYYYYYr;   N)rG  )rZ  r[  r\  r  r  r
  r  r`  r;   r8   r  r  Q  s]           W W W2 2 2Z Z Z Z Zr;   r  c                  L    t          t          j        dd          d           d S )Nr)  r   gdX	
?)r   r    r   r`  r;   r8   test_chi2_smalldfr  t  s%    c!,,.?@@@@@r;   c                  `    t          t          j        dt          j                  d           d S )Nr6  r|   )r   r    r   rU   r   r`  r;   r8   test_ch2_infr  x  s&    s26**C00000r;   c                  L    t          t          j        dd          d           d S )Nr)  r   yj_?)r   r    r   r`  r;   r8   test_chi2c_smalldfr  |  s%    s1--/BCCCCCr;   c                  L    t          t          j        dd          d           d S )Nr)  r  r   )r   r    r   r`  r;   r8   test_chi2_inv_smalldfr    s%    s+>??CCCCCr;   c            	      n   d} t          dt          j        dt          j        d                    z  d|            d}d}d}t          t          j        dgd	ggg d
          d||g|d	|gg|            d}t          t          j        dd          ||            t          t          j        dd          ||            t          t          j        dd          | |            t          t          j        dd          d|            t          t          j        dd          d|            t          t          j        dd          d|            t          t          j        dd          d|            t          t          j        dd          d|            t          t          j        dd          d|            t          t          j        dd          d|            t          j        d          }t          t          j        |j        |j                  d |            t          t          j        d!|j        z  |j                  d"|            t          t          j        |j        d	|j        z            d#|            t          t          j        d$d$          d$           t          t          j        d%d$          d$           t          t          j        dd&          t          j	                   t          t          j        d$t          j
                  t          j	                   t          t          j        t          j
        d$          t          j	                   t          t          j        d$t          j
                   t          j	                   t          t          j        t          j
         d$          t          j	                   t          t          j        t          j
        t          j
                   t          j	                   t          t          j        t          j
         t          j
                  t          j	                   t          t          j        dt          j	                  t          j	                   t          t          j        t          j	        d          t          j	                   t          t          j        dt          j
                  t          j
                   t          t          j        t          j
        d          t          j
                   t          t          j        dt          j
                   t          j
                    t          t          j        t          j
         d          t          j
                    d S )'NrH   rP   rB   gDSYC?rI   gQ_?g?@g>;,
i}@r   )rP   r   r   g=O?rE   r+  r  rF   gXs*@rg  g   V4oAgO1eAgꌠ9Y>)FgEg^ 9^;gd-?gP.5_gsTNNeg6dgu?j/ g]XC}KdgѧRg"!x{{ r|   g][#!Rr  gٍS1gN_ r   c   rc  )r   r    agmrU   r   r   r  r   r   r   r   )rJ   agm13agm15agm35agm12fis         r8   test_agm_simpler    s   D Agk!RWQZZ0002F   
 EEEGK!qc
III66&Q&(.24 4 4 4 EGK1%%u48888GK1%%u48888GKB''%d;;;;GKA&&(:FFFFGKK002D   GKa((*?dKKKKGKq))+?dKKKKGKu--/E   GKv..0G   GK//1H   	#BGK002I   GKRVRV446L   GK27335L    Q""A&&&R##Q'''R$$bf---Q''000RVQ''000Q(("&111bfWa(("&111RVbfW--rv666bfWbf--rv666Q''000RVR(("&111Q''000RVQ''000R"&))BF7333bfWb))BF733333r;   c            	      b   t                      5 } |                     t          d           t          t	          j        dd          t	          j        dd                     t          t	          j        ddd          t	          j        ddd                     t          t	          j        ddd          t	          j        ddd                     t          t	          j        ddd          t	          j        ddd                     t          t	          j	        dd          t	          j	        dd                     t          t	          j
        dd          t	          j
        dd                     t          t	          j        dd          t	          j        dd                     t          t	          j        dd          t	          j        dd                     t          t	          j        dd          t	          j        dd                     d d d            d S # 1 swxY w Y   d S )Nr  rP   rX  g?rB   gffffff@)r   r/  r0  r   r    expnr}  rz  r  r  r  rK  r  r*  )r2  s    r8   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 )NrP   y        .B}T)r  r    SpecialFunctionErrorr  r`  r;   r8   test_error_raisingr$    s!    '.
AuEEEEEr;   c                     d } t          j        ddt           j        fdt           j        fdgt                    }t           j        |ddgf         } t          j        |           |d d df         |d d df                   }t          t          j	        ||d	d	
            t          j        |           |d d df         |d d df                   }t          t          j	        ||d	d	
           d S )Nc                     t          j        d          5  | dk    r"t          j        |          s| cd d d            S | t          j        |          z  cd d d            S # 1 swxY w Y   d S Nr  )invalidr   )rU   r  r   r   rk  s     r8   xfuncztest_xlogy.<locals>.xfunc  s    [*** 	# 	#Avvbhqkkv	# 	# 	# 	# 	# 	# 	# 	# {		# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#   A"A""A&)A&r   r   r   r|   r   r;  )r   rZ  )rP   rZ  rP   rH   r   )
rU   r   r   r   rm   r   rs   r.   r    xlogy)r)  z1z2w1w2s        r8   
test_xlogyr2    s    # # # 
UQK!RVjA	O	O	OB	rGW%%	&B	e		R!Wb1g	.	.BgmR%eDDDD	e		R!Wb1g	.	.BgmR%eDDDDDDr;   c                     d } t          j        ddt           j        fdt           j        fddgt                    } t          j        |           |d d df         |d d df                   }t          t          j        ||dd	           d S )
Nc                     t          j        d          5  | dk    r"t          j        |          s| cd d d            S | t          j        |          z  cd d d            S # 1 swxY w Y   d S r'  )rU   r  r   r,  rk  s     r8   r)  ztest_xlog1py.<locals>.xfunc  s    [*** 	' 	'Avvbhqkkv	' 	' 	' 	' 	' 	' 	' 	' 28A;;		' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'r*  r+  r   r,  )rP   gKH9r;  rP   rH   r   )	rU   r   r   r   rm   rs   r.   r    xlog1py)r)  r.  r0  s      r8   test_xlog1pyr6    s    ' ' ' 
UQK!RVj!(-
/ 
/ 
/B	e		R!Wb1g	.	.Bgor2EFFFFFFr;   c                  d   d } dddt           j        f}ddg}g }t          j        ||          D ]\  }}|                    ||z             t          j        |t                    } t          j        | t           j        g          |          }t          t          j        ||d	d	
           d S )Nc                 T    | dk     rt           j         S t          j        | |            S r3   )rU   r   r    r-  )r#  s    r8   r)  ztest_entr.<locals>.xfunc  s)    q55F7NM!Q''''r;   r   r{   r|   rE   rP   r;  otypesrH   r   )rU   r   r  r  rv  r   rm   rs   r   r.   r    entr)r)  r   signsr  sgnrm  r]  rX  s           r8   	test_entrr>    s    ( ( (
 c26"FGE
C#E622  Q

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

DGT"W%&&&&
E"""A0UBJ<000111Q3111Q3@@AgnaUCCCCCCr;   c                     d } d}ddg}g }t          j        ||||          D ]$\  }}}}|                    ||z  ||z  f           %t          j        |t
                    } t          j        | t          j        g          |d d df         |d d df                   }	t          t          j
        |	|dd	           d S )
Nc                 ~    | dk    r|dk    rt          j        | | |z            S | dk    r|dk    rdS t          j        S r3   )r    r-  rU   r   rk  s     r8   r)  ztest_rel_entr.<locals>.xfunc  sF    q55QUU=AaC(((!VVQ16Mr;   rB  rE   rP   r;  r9  r   rH   r   )r  r  rv  rU   r   rm   rs   r   r.   r    rel_entrrD  s
             r8   test_rel_entrrM    s       FGE
C'/vufMM ' 'b$

DGT"W%&&&&
E"""A0UBJ<000111Q3111Q3@@Ag&15uEEEEEEr;   c                     t          t          j        dd          t          j                   t          t          j        dd          dt          j        d          z             t          t          j        dd          d           d } t          j                            dd          } t          j	        | t          j
        g	          |d d d
f         |d d df                   }t          t          j        ||dd           d S )NrE   rh  rB   r{   r  r   c                     | dk     rt           j        S t          j        |          | k     rdt          j        |          z  S | t          j        |          d| z  z
  z  S )Nr   r{   )rU   r   rf  squarer  rw  s     r8   r)  ztest_huber.<locals>.xfunc1  sT    1996MVAYY1%%BF1IIe344r;   rc  r9  r   rP   rH   r   )r   r    huberrU   r   r   rP  r[   randnrs   r   r.   r)  r]  rX  s      r8   
test_huberrU  ,  s    r3''000GM!S))33+?@@@GM!S))+>???5 5 5 		AA0UBJ<000111Q3111Q3@@AgmQEBBBBBBr;   c                  `   d } t          j        t           j                            dd                                          ddgddggz             } t          j        | t           j        g          |d d df         |d d df                   }t          t          j	        ||dd	           d S )
Nc                 ~    | dk     rt           j        S | r|sdS | dz  t          j        d|| z  dz  z             dz
  z  S )Nr   rB   rP   )rU   r   r   rQ  s     r8   r)  z test_pseudo_huber.<locals>.xfunc?  sQ    1996M 	> 	>1!8rwqAeGa<'7881<==r;   rc  rB   r   r{   r9  rP   rH   r   )
rU   r   r[   rS  tolistrs   r   r.   r    pseudo_huberrT  s      r8   test_pseudo_huberrZ  >  s    > > > 	Q''..00QHsAh3GGHHA0UBJ<000111Q3111Q3@@Ag*Aqu5IIIIIIr;   c                  `    d} d}t          j        | |          }d}t          ||d           d S )Nr|   gC]r2<gs.-De8rH   rI   )r    rY  r   )r  rw  r\  r^  s       r8   test_pseudo_huber_small_rr\  L  s@    EAUA&&A &HAxe,,,,,,r;   c                     t          j        t          d          5  t          dd           d d d            n# 1 swxY w Y   t          j        t          d          5  t	          dd           d d d            d S # 1 swxY w Y   d S )NzToo many predicted coefficientsr  rM   )r]  r	  r0  r)   r*   r`  r;   r8   test_runtime_warningr^  Y  s   	n>
@ 
@ 
@ % %t$$$% % % % % % % % % % % % % % % 
n>
@ 
@ 
@ & &$%%%& & & & & & & & & & & & & & & & & &s   9= =A==BB)wr  r  r  rR  rQ  numpyrU   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r]  r   r  numpy.testingr   r   r   r   r   r   r   r   r   scipyr    scipy.special._ufuncs_ufuncsr4   scipy.specialr!   r"   r#   r$   r%   r&   r'   r(   r)   r*   scipy.special._basicr+   r,   scipy.special._testutilsr-   r.   r/   rB  r1   rb  r  r  r  r  r  r  r!  rV  rc  r  r  r  r  r  r  r  r  r  r  r#  rA  rO  r[  rb  rl  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r$  r2  r6  r>  rI  rM  rU  rZ  r\  r^  r`  r;   r8   <module>rg     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' ' ' ' ' ' ' '*M$ M$ M$ M$ M$ M$ M$ M$`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0 G0 G0 G0T)= )= )= )= )= )= )= )=V_B _B _B _B _B _B _B _BD- - - - - - - -2/ / / / / / / /@tE tE tE tE tE tE tE tEn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o$ o$ o$ o$ o$ o$ o$ o$d] ] ] ] ] ] ] ]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
- 
- 
-& & & & &r;   