
    ^Mh~                       d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlZd dlmZ d dlmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z' d dl(m)Z) d dl*m)c m+Z, d dl-m.Z.m/Z/m0Z0 d dl-m1Z1m2Z2m3Z3m4Z4m5Z5 d dl-m6Z6 d d	l-m7Z7m8Z8m9Z9 d d
l-m:Z:m;Z;m<Z< d dl=m>Z>m?Z? d dl@mAZAmBZBmCZC d dlDmEZEmFZFmGZG d dlHmIZImJZJmKZK d dlLZLej        dk    s ejM                    d          dk    rejN        nejO        ZP G d d          ZQ G d d          ZR G d d          ZS G d d          ZT G d d          ZU G d d          ZV G d d          ZW G d d           ZX G d! d"          ZY G d# d$          ZZ G d% d&          Z[ G d' d(          Z\ G d) d*          Z] G d+ d,          Z^ G d- d.          Z_ G d/ d0          Z` G d1 d2          Zadwd3Zb G d4 d5          Zc G d6 d7          Zd G d8 d9          Ze G d: d;          Zf G d< d=          Zg G d> d?          Zh G d@ dA          Zi G dB dC          Zj G dD dE          Zk G dF dG          Zl G dH dI          Zm G dJ dK          Zn G dL dM          Zo G dN dO          Zp G dP dQ          Zq G dR dS          Zr G dT dU          Zs G dV dW          Zt G dX dY          Zu G dZ d[          Zvd\ Zwd] Zx G d^ d_          Zyd` Zzda Z{db Z|dc Z}dd Z~de Zej        df             ZeIdg             Zdh Zdi Zdj Zdk Zdl Zdm Zdn Zdo Zdp Zdq Zej        j        dr             Z G ds dt          Z G du dv          ZdS )x    N)arrayisnanr_arangefinfopisincostanexplogzerossqrtasarrayinf
nan_to_numrealarctandoublearray_equal)raises)	assert_equalassert_almost_equalassert_array_equalassert_array_almost_equalassert_approx_equalassert_assert_allcloseassert_array_almost_equal_nulpsuppress_warnings)special)ellipeellipkellipkm1)elliprcelliprdelliprfelliprgelliprj)softplus)mathieu_odd_coefmathieu_even_coef	stirling2)lpnlpmnclpmn)np_longnp_ulong)xp_assert_closexp_assert_equalSCIPY_ARRAY_API)_FACTORIALK_LIMITS_64BITS_FACTORIALK_LIMITS_32BITS_is_subdtype)with_special_errorsassert_func_equalFuncDatawin3232bitc                      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/e0j1        2                    d./          d0             Z3d1 Z4d2 Z5d3 Z6e0j1        2                    d4/          d5             Z7d6 Z8d7 Z9d8 Z:d9 Z;d: Z<d; Z=d< Z>d= Z?d> Z@d? ZAd@ ZBdA ZCdB ZDdC ZEdD ZFdE ZGdF ZHdG ZIdH ZJdI ZKdJ ZLdK ZMdL ZNdM ZOdN ZPdO ZQdP ZRdQ ZSdR ZTdS ZUdT ZVdU ZWdV ZXdW ZYdX ZZdY Z[dZ Z\d[ Z]d\ Z^d] Z_d^ Z`d_ Zad` Zbda Zcdb Zddc Zedd Zfde Zgdf Zhdg Zidh Zjdi Zkdj Zldk Zmdl Zndm Zodn Zpdo Zqdp Zrdq Zsdr Ztds Zudt Zvdu Zwdv Zxdw Zydx Zzdy Z{dz Z|d{ Z}d| Z~d} Zd~ Zd Zd Zd Zd Ze0j1        2                    d/          d             Ze0j1        2                    d/          d             Ze0j1        2                    d/          d             Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )
TestCephesc                 .    t          j        d           d S Nr   )cephesairyselfs    ^/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/special/tests/test_basic.py	test_airyzTestCephes.test_airy@       A    c                 .    t          j        d           d S rA   )rB   airyerD   s    rF   
test_airyezTestCephes.test_airyeC   s    QrI   c           	         t          j        g d          }t          j        g d          }t          j        t          j        |d d d f         |d d d f                                                 dd          j        }t          j        g dg dg dg dg          }t          t          j        |                                |d	
           t           j	        
                    d          }t           j        t          j        dd          d|                    d          z  dz
  f         }t          j        dd          }t          j        t          j        |d d d f         |d d d f                                                 dd          j        }t          t          j        t          j        |d d df         |d d df         dz            |dd           d S )N)gL7A`?   g@   )   皙?   gffffff
@rP   )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           ?绽|=atolrX   )npr   broadcast_arraysreshapeTr:   rB   binomravelrandomRandomStater   r   rand)rE   nknkrknownrngs         rF   
test_binomzTestCephes.test_binomF   s   H((())H%%%&&Xb)!AAAdF)QtAAAvY??  2q 	 # # ##Q#Q#QFFF@@@B C C 	&,GGGG i##D))E")B##T#((2,,%6%<<=IaXb)!AAAdF)QtAAAvY??  2q 	 	&, ,r!!!A#w111Q390EFF$5	2 	2 	2 	2 	2 	2rI   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 )NrY   r^   ,     r   r]   rP   rS   r_   r`   ra   )rc   ri   seedr   logspacer   r   rd   re   rf   r:   rB   rg   )rE   rl   rm   rn   s       rF   test_binom_2zTestCephes.test_binom_2]   s    
	tE"+ab))*IaXb)!AAAdF)QtAAAvY??  2q 	 	&, ,r!!!A#w111Q390EFF$5	2 	2 	2 	2 	2 	2rI   c           	      "   t           j        d             }t           j                            d           t          j        dd          }t          j        dd          }t          j        t          j        |d d d f         |d d d f                                                 dd          j        }||d d df         |d d df         k             }t          t          j         ||d d df         |d d df                   |dd           d S )	Nc                     t          |           } t          |          }d}d}t          d|dz             D ]}||| z   |z
  z  }||z  }t          ||z            S Nr^   )intrangefloat)rl   rm   numdenis        rF   	binom_intz.TestCephes.test_binom_exact.<locals>.binom_intk   sj    AAAACC1ac]]  q1uqy qS>>!rI   rY   r^      r   rP   rS   ra   )rc   	vectorizeri   ru   r   r   rd   re   rf   r:   rB   rg   )rE   r   rl   rm   rn   s        rF   test_binom_exactzTestCephes.test_binom_exactj   s   		" 	" 
	" 		tIaIaXb)!AAAdF)QtAAAvY??  2q 	111Q32aaac7"#&,#)BqqqsGR!W55 q	* 	* 	* 	* 	* 	*rI   c                     g d}t          j        |          }t          t          j        |ddd                                           d S )N))r[   r\   gwP~)i  i  gii9~)i  i  gyhY~)i  i  gpvy~)i  i  gzN~)i  i  gGTɳ~)i  i  g@jH~)i  i  gF:aYͦ~)i  i  gɸV)i  i  g
{9)i  i  gyVxY)i    g*I y)i   i   gI)i  i  gW@N)i  i  g5y)r   r^   rP   -q=rW   )rc   r   r;   rB   rg   check)rE   datasets     rF   test_binom_nooverflow_8346z%TestCephes.test_binom_nooverflow_8346   sQ    
 
 
" *W%%w>>>DDFFFFFrI   c                 N    t          t          j        ddd          d           d S )Nr^         ?      ?)r   rB   bdtrrD   s    rF   	test_bdtrzTestCephes.test_bdtr   s&    V[1S))#.....rI   c                 N    t          t          j        ddd          d           d S Nr^      r   )r   rB   bdtrirD   s    rF   
test_bdtrizTestCephes.test_bdtri   &    V\!Ac**3/////rI   c                 N    t          t          j        ddd          d           d S r   )r   rB   bdtrcrD   s    rF   
test_bdtrczTestCephes.test_bdtrc   r   rI   c                 N    t          t          j        ddd          d           d S Nr^   r         @)r   rB   bdtrinrD   s    rF   test_bdtrinzTestCephes.test_bdtrin   &    V]1Qq))#.....rI   c                 2    t          j        ddd           d S r   )rB   bdtrikrD   s    rF   test_bdtrikzTestCephes.test_bdtrik   s    a#rI   c                 J    t          t          j        d          d           d S Nr           )r   rB   beirD   s    rF   test_beizTestCephes.test_bei        VZ]]3'''''rI   c                 J    t          t          j        d          d           d S r   )r   rB   beiprD   s    rF   	test_beipzTestCephes.test_beip        V[^^C(((((rI   c                 J    t          t          j        d          d           d S Nr   r   )r   rB   berrD   s    rF   test_berzTestCephes.test_ber   r   rI   c                 J    t          t          j        d          d           d S r   )r   rB   berprD   s    rF   	test_berpzTestCephes.test_berp   r   rI   c                 N    t          t          j        ddd          d           d S r   )r   rB   
besselpolyrD   s    rF   test_besselpolyzTestCephes.test_besselpoly   s'    V&q1--c22222rI   c                 N    t          t          j        ddd          d           d S Nr^   r   )r   rB   btdtriarD   s    rF   test_btdtriazTestCephes.test_btdtria   &    V^Aa**3/////rI   c                 N    t          t          j        ddd          d           d S r   )r   rB   btdtribrD   s    rF   test_btdtribzTestCephes.test_btdtrib   r   rI   c                 J    t          t          j        d          d           d S Nr^   r   )r   rB   cbrtrD   s    rF   	test_cbrtzTestCephes.test_cbrt   s     FKNN3/////rI   c                 L    t          t          j        dd          d           d S Nr^   r   r   )r   rB   chdtrrD   s    rF   
test_chdtrzTestCephes.test_chdtr   s$    V\!A&&s+++++rI   c                 L    t          t          j        dd          d           d S Nr^   r   r   )r   rB   chdtrcrD   s    rF   test_chdtrczTestCephes.test_chdtrc   $    V]1Q'',,,,,rI   c                 L    t          t          j        dd          d           d S Nr^   r   )r   rB   chdtrirD   s    rF   test_chdtrizTestCephes.test_chdtri   r   rI   c                 L    t          t          j        dd          d           d S )Nr   r   )r   rB   chdtrivrD   s    rF   test_chdtrivzTestCephes.test_chdtriv   s$    V^Aa((-----rI   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   r^   r   )      9@      4@  gL94)r          @   g7Fh9)gMbP?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   rP   r   r   rW   r      )r   rB   chndtrrc   r   r   r   r   r   r   nan)rE   valuescdfs      rF   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6rI   c                 N    t          t          j        ddd          d           d S Nr   r^   r   )r   rB   	chndtridfrD   s    rF   test_chndtridfzTestCephes.test_chndtridf   '    V%a!,,S11111rI   c                 N    t          t          j        ddd          d           d S r   )r   rB   	chndtrincrD   s    rF   test_chndtrinczTestCephes.test_chndtrinc   r   rI   c                 N    t          t          j        ddd          d           d S Nr   r^   r   )r   rB   chndtrixrD   s    rF   test_chndtrixzTestCephes.test_chndtrix   &    V_Qq++C00000rI   c                 J    t          t          j        d          d           d S r   )r   rB   cosdgrD   s    rF   
test_cosdgzTestCephes.test_cosdg        V\!__S)))))rI   c                 J    t          t          j        d          d           d S r   )r   rB   cosm1rD   s    rF   
test_cosm1zTestCephes.test_cosm1   r   rI   c                 J    t          t          j        d          d           d S N-   r   )r   rB   cotdgrD   s    rF   
test_cotdgzTestCephes.test_cotdg   s"    FL,,S11111rI   c                     t          t          j        d          d           t          t          j        d          d           d S )Nr   r   gGz?gf?)r   rB   dawsnr   rD   s    rF   
test_dawsnzTestCephes.test_dawsn   s;    V\!__S)))T**,?@@@@@rI   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)r^   r      rP   g-C6
?r   rR   decimal&.>r   V瞯<float128r      )rP   rN            皙?)gg?gsOB?gsaL?g
7I^ʿr   )rc   r   r   astypefloat32r   r!   diricfloat64hasattrr  r   )rE   n_oddxn_evenoctave_results        rF   
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KrI   c                     t          j        d          }t          j        g d          }t          t	          j        |d d t           j        f         |          j        |j        |j        fk               d S )Nr   )r^   r   rR   )	rc   r   r   r   r!   r  newaxisshapesize)rE   r  rl   s      rF   test_diric_broadcastingz"TestCephes.test_diric_broadcasting  sb    IaLLHYYYa2:.228QVQV<LLMMMMMrI   c                 J    t          t          j        d          d           d S r   )r   rB   r"   rD   s    rF   test_ellipezTestCephes.test_ellipe  "    V]1%%c*****rI   c                 L    t          t          j        dd          d           d S r   )r   rB   	ellipeincrD   s    rF   test_ellipeinczTestCephes.test_ellipeinc  %    V%a**3/////rI   c                 0    t          j        dd           d S Nr   r^   )rB   ellipjrD   s    rF   test_ellipjzTestCephes.test_ellipj"  s    arI   c                 P    t          t          d          t          dz             d S )Nr   rP   )r   r#   r   rD   s    rF   test_ellipkzTestCephes.test_ellipk%  s"    q		2a4(((((rI   c                 L    t          t          j        dd          d           d S r   )r   rB   	ellipkincrD   s    rF   test_ellipkinczTestCephes.test_ellipkinc(  r"  rI   c                 J    t          t          j        d          d           d S r   r   rB   erfrD   s    rF   test_erfzTestCephes.test_erf+  s     VZ]]C(((((rI   c                 z    d}t          t          j        |          t          j        |           z   d           d S )Ng#8x@r   r-  rE   r  s     rF   test_erf_symmetryzTestCephes.test_erf_symmetry.  s4    VZ]]VZ^^3S99999rI   c                 J    t          t          j        d          d           d S r   )r   rB   erfcrD   s    rF   	test_erfczTestCephes.test_erfc2  s     V[^^S)))))rI   c                 J    t          t          j        d          d           d S )NrP   r   )r   rB   exp10rD   s    rF   
test_exp10zTestCephes.test_exp105  s     FLOOE22222rI   c                 J    t          t          j        d          d           d S )NrP         @)r   rB   exp2rD   s    rF   	test_exp2zTestCephes.test_exp28  r   rI   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   rS   )r   rB   expm1rc   r   r   rD   s    rF   
test_expm1zTestCephes.test_expm1;  sz    V\!__S)))V\"&))26222V\26'**B///V\"&))2622222rI   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   r^   rP   rN   r   rS   )rB   r>  r   complexrc   r   r   )rE   r>  s     rF   test_expm1_complexzTestCephes.test_expm1_complexA  s;   UU6]]F+++UU7261--..0B0BCCCUU7261--..0G0GHHHUU7261--..0H0HIIIUU7261--.."&0I0IJJJUU7261--..0H0HIIIUU71bf--..0G0GHHHUU71bf--..0G0GHHHUU726262233WRVRV5L5LMMMUU7BF7BF3344gb!nnEEEUU7BF7BF3344gb!nnEEEUU726262233WRVRV5L5LMMMUU71bf--..0G0GHHHUU71bf--..0G0GHHHUU7261--..0G0GHHHUU726262233WRVRV5L5LMMMMMrI   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      rt                 ?)y=Cw?yC7gg)gF<Ug?yQ<D*?yg:><sKy>񸣼$	Um>ly;Vl <@r   rt   )	rc   r   r   r
   rB   r>  r   imagr   )rE   yr  zexpectedfounds         rF   test_expm1_complex_hardz"TestCephes.test_expm1_complex_hardT  s     H///00VBF1II1H 8 J J J K K Q&uz8=!DDD&uz8="EEEEErI   c                     t          t          j        ddd          d           t          t          j        ddd          dd	           d S )
Nr^   r   r   ư>r   
   g2?r   rW   )r   rB   fdtrr   rD   s    rF   	test_fdtrzTestCephes.test_fdtri  sW    V[Aq))3///D!R002D"	$ 	$ 	$ 	$ 	$ 	$rI   c                     t          t          j        ddd          d           t          t          j        ddd          dd	           d S )
Nr^   r   r   rP   rG  g    _BgDIXl?r   rW   )r   rB   fdtrcr   rD   s    rF   
test_fdtrczTestCephes.test_fdtrco  sY    V\!Q**C000 	QT224G"	$ 	$ 	$ 	$ 	$ 	$rI   c                     t          t          j        ddddg          t          ddg          d           d}t          t          j        d	d|          d
d           d S )Nr^   gV-?gx&1?g
}?g<zO'?rR  rW   g׀?rG  r   r   )r   rB   fdtrir   )rE   ps     rF   
test_fdtrizTestCephes.test_fdtriv  ss    QE5>::y*566T	C 	C 	C 	C %S!Q//??????rI   zReturns nan on i686.c                 N    t          t          j        ddd          d           d S )Nr^   r   )r   rB   rZ  rD   s    rF   test_fdtri_mysterious_failurez(TestCephes.test_fdtri_mysterious_failure~  s&    Q3//33333rI   c                 N    t          t          j        ddd          d           d S r   )r   rB   fdtridfdrD   s    rF   test_fdtridfdzTestCephes.test_fdtridfd  r   rI   c                 J    t          t          j        d          d           d S Nr   r   r   )r   rB   fresnelrD   s    rF   test_fresnelzTestCephes.test_fresnel  s"    V^A&&y11111rI   c                 J    t          t          j        d          d           d S Nr         8@)r   rB   gammarD   s    rF   
test_gammazTestCephes.test_gamma  s     V\!__T*****rI   c                 L    t          t          j        dd          d           d S )Nr   r^   r   )r   rB   gammainccinvrD   s    rF   test_gammainccinvzTestCephes.test_gammainccinv  s%    V(1--c22222rI   c                 .    t          j        d           d S )NrS  )rB   gammalnrD   s    rF   test_gammalnzTestCephes.test_gammaln  s    rrI   c                 <   t          j        t           j         dddddddt           j        g	t           j                  }t          j        t           j        t           j        dd	d	ddddg	t           j                  }t          t          j        |          |           d S )
N      gffffff       r   r^   g@r   r  )rc   r   r   r  r   r   rB   gammasgn)rE   vals	references      rF   test_gammasgnzTestCephes.test_gammasgn  s    xfWb$dCC@"*
 
 HVRVS$c3SA2:
 
	 	6?400)<<<<<rI   c                 N    t          t          j        ddd          d           d S r   )r   rB   gdtrrD   s    rF   	test_gdtrzTestCephes.test_gdtr  &    V[1Q'',,,,,rI   c                 b    t          t          j        ddt          j                  d           d S r   )r   rB   r{  rc   r   rD   s    rF   test_gdtr_infzTestCephes.test_gdtr_inf  s(    V[1RV,,S11111rI   c                 N    t          t          j        ddd          d           d S r   )r   rB   gdtrcrD   s    rF   
test_gdtrczTestCephes.test_gdtrc  &    V\!Aa((-----rI   c                 N    t          t          j        ddd          d           d S r   )r   rB   gdtriarD   s    rF   test_gdtriazTestCephes.test_gdtria  r   rI   c                 2    t          j        ddd           d S Nr^   r   )rB   gdtribrD   s    rF   test_gdtribzTestCephes.test_gdtrib  s    a!rI   c                 2    t          j        ddd           d S Nr^   rG  )rB   gdtrixrD   s    rF   test_gdtrixzTestCephes.test_gdtrix  s    a"rI   c                 0    t          j        dd           d S rz   )rB   hankel1rD   s    rF   test_hankel1zTestCephes.test_hankel1      qrI   c                 0    t          j        dd           d S rz   )rB   hankel1erD   s    rF   test_hankel1ezTestCephes.test_hankel1e      !rI   c                 0    t          j        dd           d S rz   )rB   hankel2rD   s    rF   test_hankel2zTestCephes.test_hankel2  r  rI   c                 0    t          j        dd           d S rz   )rB   hankel2erD   s    rF   test_hankel2ezTestCephes.test_hankel2e  r  rI   c                     t          t          j        ddd          t          d                     t          t          j        ddd          d           t          j        ddd           d S )Nr^   r   r   rN   g㈮?)r   rB   hyp1f1r   rD   s    rF   test_hyp1f1zTestCephes.test_hyp1f1  s_    FM!Aa00#c((;;;FM!Ab113JKKKa!rI   c                 P    t          t          j        dddd          d           d S r   )r   rB   hyp2f1rD   s    rF   test_hyp2f1zTestCephes.test_hyp2f1  (    V]1Qq++C00000rI   c                 J    t          t          j        d          d           d S r   )r   rB   i0rD   s    rF   test_i0zTestCephes.test_i0       VYq\\#&&&&&rI   c                 J    t          t          j        d          d           d S r   )r   rB   i0erD   s    rF   test_i0ezTestCephes.test_i0e  r   rI   c                 J    t          t          j        d          d           d S r   )r   rB   i1rD   s    rF   test_i1zTestCephes.test_i1  r  rI   c                 J    t          t          j        d          d           d S r   )r   rB   i1erD   s    rF   test_i1ezTestCephes.test_i1e  r   rI   c                 .    t          j        d           d S rz   )rB   it2i0k0rD   s    rF   test_it2i0k0zTestCephes.test_it2i0k0      qrI   c                 .    t          j        d           d S rz   )rB   it2j0y0rD   s    rF   test_it2j0y0zTestCephes.test_it2j0y0  r  rI   c                 .    t          j        d           d S rz   )rB   
it2struve0rD   s    rF   test_it2struve0zTestCephes.test_it2struve0  s    !rI   c                 .    t          j        d           d S rz   )rB   itairyrD   s    rF   test_itairyzTestCephes.test_itairy      arI   c                 J    t          t          j        d          d           d S rc  )r   rB   iti0k0rD   s    rF   test_iti0k0zTestCephes.test_iti0k0  "    V]1%%i00000rI   c                 J    t          t          j        d          d           d S rc  )r   rB   itj0y0rD   s    rF   test_itj0y0zTestCephes.test_itj0y0  r  rI   c                 J    t          t          j        d          d           d S r   )r   rB   itmodstruve0rD   s    rF   test_itmodstruve0zTestCephes.test_itmodstruve0  s#    V(++C00000rI   c                 J    t          t          j        d          d           d S r   )r   rB   	itstruve0rD   s    rF   test_itstruve0zTestCephes.test_itstruve0  s#    V%a((-----rI   c                 L    t          t          j        dd          d           d S r   )r   rB   ivrD   s    rF   test_ivzTestCephes.test_iv  "    VYq^^C(((((rI   c                 L    t          t          j        dd          d           d S r   )r   rB   iverD   s    rF   test_ivezTestCephes.test_ive  "    VZ!__S)))))rI   c                 J    t          t          j        d          d           d S r   )r   rB   j0rD   s    rF   test_j0zTestCephes.test_j0  r  rI   c                 J    t          t          j        d          d           d S r   )r   rB   j1rD   s    rF   test_j1zTestCephes.test_j1  r  rI   c                 L    t          t          j        dd          d           d S r   )r   rB   jnrD   s    rF   test_jnzTestCephes.test_jn  r  rI   c                 L    t          t          j        dd          d           d S r   )r   rB   jvrD   s    rF   test_jvzTestCephes.test_jv  r  rI   c                 L    t          t          j        dd          d           d S r   )r   rB   jverD   s    rF   test_jvezTestCephes.test_jve  r  rI   c                 .    t          j        d           d S NrP   )rB   k0rD   s    rF   test_k0zTestCephes.test_k0      	!rI   c                 .    t          j        d           d S r  )rB   k0erD   s    rF   test_k0ezTestCephes.test_k0e      
1rI   c                 .    t          j        d           d S r  )rB   k1rD   s    rF   test_k1zTestCephes.test_k1   r  rI   c                 .    t          j        d           d S r  )rB   k1erD   s    rF   test_k1ezTestCephes.test_k1e  r  rI   c                 .    t          j        d           d S r  )rB   keirD   s    rF   test_keizTestCephes.test_kei  r  rI   c                 J    t          t          j        d          d           d S r   )r   rB   keiprD   s    rF   	test_keipzTestCephes.test_keip	  r   rI   c                 .    t          j        d           d S r  )rB   kerrD   s    rF   test_kerzTestCephes.test_ker  r  rI   c                 .    t          j        d           d S r  )rB   kerprD   s    rF   	test_kerpzTestCephes.test_kerp  rH   rI   c                 .    t          j        d           d S r  )rB   kelvinrD   s    rF   test_kelvinzTestCephes.test_kelvin  r  rI   c                 0    t          j        dd           d S rz   )rB   knrD   s    rF   test_knzTestCephes.test_kn      	!ArI   c                     t          t          j        d          d           t          t	          j        t          j        t          j                                       d S r   )r   rB   kolmogir   rc   r   r   rD   s    rF   test_kolmogizTestCephes.test_kolmogi  sF    V^A&&s+++//0011111rI   c                 J    t          t          j        d          d           d S r   )r   rB   
kolmogorovrD   s    rF   test_kolmogorovzTestCephes.test_kolmogorov  s#    V&q))3/////rI   c                 J    t          t          j        d          d           d S )Nr   ru  )r   rB   _kolmogprD   s    rF   test_kolmogpzTestCephes.test_kolmogp  s"    V_Q''.....rI   c                 J    t          t          j        d          d           d S r   )r   rB   _kolmogcrD   s    rF   test_kolmogczTestCephes.test_kolmogc"  s"    V_Q''-----rI   c                     t          t          j        d          d           t          t	          j        t          j        t          j                                       d S r   )r   rB   	_kolmogcir   rc   r   r   rD   s    rF   test_kolmogcizTestCephes.test_kolmogci%  sH    V%a((#...)"&112233333rI   c                 0    t          j        dd           d S rz   )rB   kvrD   s    rF   test_kvzTestCephes.test_kv)  r  rI   c                 0    t          j        dd           d S rz   )rB   kverD   s    rF   test_kvezTestCephes.test_kve,      
1QrI   c                 8   t           j        }t           |d          d           t           |d          t          j                    t           |d          t          j                   t           |t          j                  t          j                   d S )Nr   r   rS   )rB   log1pr   rc   r   r   )rE   r  s     rF   
test_log1pzTestCephes.test_log1p/  sy    UU1XXs###UU2YY(((UU2YY'''UU26]]BF+++++rI   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 )	NrA  rS   r   z%invalid value encountered in multiplyr^   rP   r   rN   )rB   r  rB  r   rc   r   r    filterRuntimeWarningr   r   r   )rE   r  csups       rF   test_log1p_complexzTestCephes.test_log1p_complex6  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   r^   r   )r   rB   lpmvrD   s    rF   	test_lpmvzTestCephes.test_lpmvI  r}  rI   c                 L    t          t          j        dd          d           d S r   )r   rB   	mathieu_arD   s    rF   test_mathieu_azTestCephes.test_mathieu_aL  r"  rI   c                 L    t          t          j        dd          d           d S r   )r   rB   	mathieu_brD   s    rF   test_mathieu_bzTestCephes.test_mathieu_bO  r"  rI   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 )Nr^   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?r^   r   rP      r   rN            ?)rc   r   r
   mqrM  s      rF   	ce_smallqz.TestCephes.test_mathieu_cem.<locals>.ce_smallqV  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UrI   d   rS  rh|?+=rX   rb   )	r   rB   mathieu_cemrc   r   r   r   rv   r   )rE   r9  r7  r8  s       rF   test_mathieu_cemzTestCephes.test_mathieu_cemR  s    V'!A..y999 
	V 	V 
	V IaE!R[b"---.*1QQQtV9aQQQiGGJ!	!AAAdF)QtAAAvY>>"	, 	, 	, 	, 	, 	,rI   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 )Nr^   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 )Nr2  r^   r3  r   rP   rN   r4  )rc   r   r	   r6  s      rF   	se_smallqz.TestCephes.test_mathieu_sem.<locals>.se_smallqo  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UrI   r:  r;  r<  rS  r=  r>  r?  )	r   rB   mathieu_semrc   r   r   r   rv   r   )rE   rE  r7  r8  s       rF   test_mathieu_semzTestCephes.test_mathieu_semk  s    V'!A..y999 

	V 
	V 

	V IaE!R[b"---.*1QQQtV9aQQQiGGJ!	!AAAdF)QtAAAvY>>"	, 	, 	, 	, 	, 	,rI   c                 N    t          t          j        ddd          d           d S Nr^   r   rd  )r   rB   mathieu_modcem1rD   s    rF   test_mathieu_modcem1zTestCephes.test_mathieu_modcem1  '    V+Aa229=====rI   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 )
Nr^   r   rN   r  rP   rS  rR   r`   rW   )	rB   mathieu_modcem2rc   r   r   rv   linspacerJ  r   rE   r7  r8  rM  y1fry2s          rF   test_mathieu_modcem2zTestCephes.test_mathieu_modcem2  s2   q1%%% IaOOAAAd4K(E"+b!R(()$qqq+6K1a  d111-#Aq1"--a0$Q1--a0063I!QPQ3R3RST3UU%aA..q11"V+Aq!44Q778 	BU++++++rI   c                 N    t          t          j        ddd          d           d S rI  )r   rB   mathieu_modsem1rD   s    rF   test_mathieu_modsem1zTestCephes.test_mathieu_modsem1  rL  rI   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 )
Nr^   rN   r  rP   rS  r   rR   r`   rW   )	rB   mathieu_modsem2rc   r   r   rv   rO  rV  r   rP  s          rF   test_mathieu_modsem2zTestCephes.test_mathieu_modsem2  s)   q1%%% IaOOAAAd4K(E"+b!R(()$qqq+6K1a  d111-#Aq1"--a0#Aq!,,Q/&2HAq2Q2QRS2TT$Q1--a0"V+Aq!44Q778BU++++++rI   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   rB   r@  rc   r   rF  rJ  rV  rN  rY  rD   s    rF   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OrI   c                     t          d          D ]H}t          j        ddd          }t          |d         dd           t          |d	         d
d           Id S )N<   rP   r:  rS   r   g.dS?r`   rW   r^   gGc?-C6?)r|   rB   rY  r   )rE   rm   vs      rF   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rI   c                 .    t          j        d           d S rA   )rB   modfresnelmrD   s    rF   test_modfresnelmzTestCephes.test_modfresnelm      1rI   c                 .    t          j        d           d S rA   )rB   modfresnelprD   s    rF   test_modfresnelpzTestCephes.test_modfresnelp  rg  rI   c                 L    t          t          j        dd          d           d S r   )r   rB   	modstruverD   s    rF   test_modstruvezTestCephes.test_modstruve  r"  rI   c                 N    t          t          j        ddd          d           d S r   )r   rB   nbdtrrD   s    rF   
test_nbdtrzTestCephes.test_nbdtr  r  rI   c                 N    t          t          j        ddd          d           d S r   )r   rB   nbdtrcrD   s    rF   test_nbdtrczTestCephes.test_nbdtrc  r   rI   c                 N    t          t          j        ddd          d           d S r   )r   rB   nbdtrirD   s    rF   test_nbdtrizTestCephes.test_nbdtri  r   rI   c                 2    t          j        ddd           d S )Nr^   rQ   r   )rB   nbdtrikrD   s    rF   test_nbdtrikzTestCephes.test_nbdtrik  s    qBrI   c                 N    t          t          j        ddd          d           d S r   )r   rB   nbdtrinrD   s    rF   test_nbdtrinzTestCephes.test_nbdtrin  r   rI   c                 P    t          t          j        dddd          d           d S r   )r   rB   ncfdtrrD   s    rF   test_ncfdtrzTestCephes.test_ncfdtr  r  rI   c                     t          t          j        dddd          d           g d}t          j        ddd|          }t	          t          j        ddd|          |           d S )Nr^   r   r   )r   r^   r]  rP   r   r]  )r   rB   ncfdtrir~  r   )rE   fr[  s      rF   test_ncfdtrizTestCephes.test_ncfdtri  sf    V^Aq!Q//555MMM!QQ''q!S!44a88888rI   zpncfdtr uses a Boost math implementation but ncfdtridfdinverts the less accurate cdflib implementation of ncfdtr.c                     g d}t          j        d|dd          }t          t          j        d|dd          |           d S )Nr^   rP   r   rP   r5  r   )rB   r~  r   
ncfdtridfd)rE   dfdr[  s      rF   test_ncfdtridfdzTestCephes.test_ncfdtridfd  sI     iiM!S$++)!Qb993?????rI   zpncfdtr uses a Boost math implementation but ncfdtridfninverts the less accurate cdflib implementation of ncfdtr.c                     g d}t          j        |ddd          }t          t          j        |ddd          |d           d S )N)rG  r^   rP   r   g     @rP   r5  r   gh㈵>rW   )rB   r~  r   
ncfdtridfn)rE   dfnr[  s      rF   test_ncfdtridfnzTestCephes.test_ncfdtridfn  sP     "!!M#q$++)!Qb993TJJJJJJrI   zoncfdtr uses a Boost math implementation but ncfdtrincinverts the less accurate cdflib implementation of ncfdtr.c                     g d}t          j        dd|d          }t          t          j        dd|d          |           d S )N)r   r]  r   rP   r   r   )rB   r~  r   	ncfdtrinc)rE   ncr[  s      rF   test_ncfdtrinczTestCephes.test_ncfdtrinc  sI     __M!QB''(Aq"55r:::::rI   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 )Nr^   r   r   	   i   r   r   r   r   r   r   )	r   rB   nctdtrr   rc   r   r   r   r   rD   s    rF   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8rI   c                 2    t          j        ddd           d S )Nr^   r   r   )rB   	nctdtridfrD   s    rF   test_nctdtridfzTestCephes.test_nctdtridf  s    3q!!!!!rI   c                 2    t          j        ddd           d S r  )rB   	nctdtrincrD   s    rF   test_nctdtrinczTestCephes.test_nctdtrinc
  s    1QrI   c                 2    t          j        ddd           d S )NrG  r  r   )rB   nctdtritrD   s    rF   test_nctdtritzTestCephes.test_nctdtrit  s    3r"""""rI   c                 N    t          t          j        ddd          d           d S )Nr   r^   r   )r   rB   nrdtrimnrD   s    rF   test_nrdtrimnzTestCephes.test_nrdtrimn  s&    FOC!44S99999rI   c                 T    t          t          j        ddd          ddd           d S )Nr   r   r   ra   )r   rB   nrdtrisdrD   s    rF   test_nrdtrisdzTestCephes.test_nrdtrisd  s:    C44ca	) 	) 	) 	) 	) 	)rI   c                 4    t          j        dddd           d S r  )rB   obl_ang1rD   s    rF   test_obl_ang1zTestCephes.test_obl_ang1      !Aa     rI   c                     t          j        ddddd          }t          |d         d           t          |d         d           d S )Nr^   r   r   r   )rB   obl_ang1_cvr   )rE   results     rF   test_obl_ang1_cvzTestCephes.test_obl_ang1_cv  sH    #Aa!A..F1Ic***F1Ic*****rI   c                 N    t          t          j        ddd          d           d S Nr^   r   r   )r   rB   obl_cvrD   s    rF   test_obl_cvzTestCephes.test_obl_cv  r   rI   c                 4    t          j        dddd           d S r  )rB   obl_rad1rD   s    rF   test_obl_rad1zTestCephes.test_obl_rad1"  r  rI   c                 6    t          j        ddddd           d S r  )rB   obl_rad1_cvrD   s    rF   test_obl_rad1_cvzTestCephes.test_obl_rad1_cv%  !    1Qq1%%%%%rI   c                 4    t          j        dddd           d S r  )rB   obl_rad2rD   s    rF   test_obl_rad2zTestCephes.test_obl_rad2(  r  rI   c                 6    t          j        ddddd           d S r  )rB   obl_rad2_cvrD   s    rF   test_obl_rad2_cvzTestCephes.test_obl_rad2_cv+  r  rI   c                 L    t          t          j        dd          d           d S )Nr^   r   rC  )r   rB   pbdvrD   s    rF   	test_pbdvzTestCephes.test_pbdv.  s$    V[1%%i00000rI   c                 0    t          j        dd           d S r  )rB   pbvvrD   s    rF   	test_pbvvzTestCephes.test_pbvv1      AarI   c                 0    t          j        dd           d S r  )rB   pbwarD   s    rF   	test_pbwazTestCephes.test_pbwa4  r  rI   c                     t          j        dd          }t          |t          j        d                     t          j        g dd          }t          |g d           d S )Nr   r^   rS   r   r^   rP   )r^   r^   r^   )rB   pdtrr   rc   r   r   rE   vals     rF   	test_pdtrzTestCephes.test_pdtr7  sZ    k!QC,,,k)))Q''3			*****rI   c                     t          j        dd          }t          |dt          j        d          z
             t          j        g dd          }t          |g d           d S )Nr   r^   rS   r  r   )r   r   r   )rB   pdtrcr   rc   r   r   r  s     rF   
test_pdtrczTestCephes.test_pdtrc>  s^    l1a  CRVBZZ000l999c**3			*****rI   c                     t                      5 }|                    t          d           t          j        dd           d d d            d S # 1 swxY w Y   d S )N-floating point number truncated to an integerr   )r    r!  r"  rB   pdtri)rE   r$  s     rF   
test_pdtrizTestCephes.test_pdtriE  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   r^   r   r5  ffffff?)r   #B;rR  )r   r   )rB   pdtrikr   	gammainccr   rc   r   )rE   rm   s     rF   test_pdtrikzTestCephes.test_pdtrikJ  sy    M#q!!F,QUA66<<<MA3/1A1A1ABB1bhv../////rI   c                 4    t          j        dddd           d S r  )rB   pro_ang1rD   s    rF   test_pro_ang1zTestCephes.test_pro_ang1Q  r  rI   c           	      l    t          t          j        ddddd          t          d                     d S )Nr^   r   r0  )r   rB   pro_ang1_cvr   rD   s    rF   test_pro_ang1_cvzTestCephes.test_pro_ang1_cvT  s>    !&"4Qq1Q"?"?"'	"2"2	4 	4 	4 	4 	4rI   c                 N    t          t          j        ddd          d           d S r  )r   rB   pro_cvrD   s    rF   test_pro_cvzTestCephes.test_pro_cvX  r   rI   c                 4    t          j        dddd           d S r  )rB   pro_rad1rD   s    rF   test_pro_rad1zTestCephes.test_pro_rad1[  s    !Ac"""""rI   c                 6    t          j        ddddd           d S r  )rB   pro_rad1_cvrD   s    rF   test_pro_rad1_cvzTestCephes.test_pro_rad1_cv^  r  rI   c                 4    t          j        dddd           d S r  )rB   pro_rad2rD   s    rF   test_pro_rad2zTestCephes.test_pro_rad2a  r  rI   c                 6    t          j        ddddd           d S r  )rB   pro_rad2_cvrD   s    rF   test_pro_rad2_cvzTestCephes.test_pro_rad2_cvd  r  rI   c                 .    t          j        d           d S rz   )rB   psirD   s    rF   test_psizTestCephes.test_psig  r  rI   c                 N    t          t          j        ddd          d           d S rA   )r   rB   radianrD   s    rF   test_radianzTestCephes.test_radianj  s&    V]1Qq))!,,,,,rI   c                 J    t          t          j        d          d           d S r   )r   rB   rgammarD   s    rF   test_rgammazTestCephes.test_rgammam  r  rI   c                    t          t          j        d          d           t          t          j        d          d           t          t          j        d          d           t          t          j        d          d           t          t          j        d	          d           t          t          j        d
          d           d S )N333333@r   333333      g@r:  gg            @rt  )r   rB   roundrD   s    rF   
test_roundzTestCephes.test_roundp  s    V\#&&s+++V\$''---V\#&&s+++V\$''---V\#&&s+++V\$''-----rI   c                 .    t          j        d           d S rz   )rB   shichirD   s    rF   test_shichizTestCephes.test_shichix  r  rI   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 )Nr^   r   r   z cosine integral(-inf) is not nan)rB   sicirc   r   r   r   r   r   )rE   sr#  s      rF   	test_sicizTestCephes.test_sici{  s    A{26""1Arus{+++Aq!!!{BF7##1Av|,,,?@@@@@rI   c                 J    t          t          j        d          d           d S NZ   r   )r   rB   sindgrD   s    rF   
test_sindgzTestCephes.test_sindg  "    V\"%%c*****rI   c                     t          t          j        dd          d           t          t	          j        t          j        dt          j                                       d S )Nr^   rG  ?)r   rB   smirnovr   rc   r   r   rD   s    rF   test_smirnovzTestCephes.test_smirnov  sJ    V^Ab))#..."&112233333rI   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 )	Nr^   rG  rS   rP         ?      r   g      ȿ)r   rB   	_smirnovpr   rc   r   r   rD   s    rF   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6rI   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 )
Nr^   rG  r   rI  Tendpointr   r   rN   )
r   rB   	_smirnovcr   rc   r   r   rO  r   r  )rE   x10x4s      rF   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MrI   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 Nr^   rQ   333333?)r   rB   r  smirnovir   rc   r   r   rD   s    rF   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4rI   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   rB   r  
_smirnovcir   rc   r   r   rD   s    rF   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6rI   c                 J    t          t          j        d          d           d S r   )r   rB   spencerD   s    rF   test_spencezTestCephes.test_spence  r  rI   c                     t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           d S )Nr^   r   r   r  rP   gMoF?)r   rB   stdtrr   rD   s    rF   
test_stdtrzTestCephes.test_stdtr  s\    V\!A&&s+++FL1--t444FL1--~>>>>>rI   c                 0    t          j        dd           d S )Nffffff?r^   )rB   stdtridfrD   s    rF   test_stdtridfzTestCephes.test_stdtridf  s    ArI   c                 0    t          j        dd           d S )Nr^   r+  )rB   stdtritrD   s    rF   test_stdtritzTestCephes.test_stdtrit  s    qrI   c                 L    t          t          j        dd          d           d S r   )r   rB   struverD   s    rF   test_struvezTestCephes.test_struve  r   rI   c                 J    t          t          j        d          d           d S r   )r   rB   tandgrD   s    rF   
test_tandgzTestCephes.test_tandg  r  rI   c                 L    t          t          j        dd          d           d S r   )r   rB   tklmbdarD   s    rF   test_tklmbdazTestCephes.test_tklmbda  s$    FN1Q//44444rI   c                 .    t          j        d           d S rz   )rB   y0rD   s    rF   test_y0zTestCephes.test_y0  r  rI   c                 .    t          j        d           d S rz   )rB   rQ  rD   s    rF   test_y1zTestCephes.test_y1  r  rI   c                 0    t          j        dd           d S rz   )rB   ynrD   s    rF   test_ynzTestCephes.test_yn  r  rI   c                 0    t          j        dd           d S rz   )rB   yvrD   s    rF   test_yvzTestCephes.test_yv  r  rI   c                 0    t          j        dd           d S rz   )rB   yverD   s    rF   test_yvezTestCephes.test_yve  r  rI   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?rI  r^   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<rV   rW   )rB  r:   rB   wofz)rE   rM  ws      rF   	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8rI   N)__name__
__module____qualname__rG   rL   rq   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r!  r&  r(  r+  r/  r2  r5  r8  r<  r?  rC  pytestmarkxfailrP  rU  rX  r\  r^  ra  rf  rk  rn  rq  ry  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r%  r(  r+  r.  rA  rG  rK  rT  rW  rZ  r^  rc  rf  rj  rm  rp  rs  rv  ry  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r   r#  r&  r)  r-  r0  r3  r6  r9  r<  r>  rA  rD  rG  rN   rI   rF   r?   r?   ?   s           2 2 2.2 2 2* * *.G G G,/ / /0 0 00 0 0/ / /  ( ( () ) )( ( () ) )3 3 30 0 00 0 00 0 0, , ,- - -- - -. . .7 7 7<2 2 22 2 21 1 1* * ** * *2 2 2A A AL L L2N N N
+ + +0 0 0  ) ) )0 0 0) ) ): : :* * *3 3 3) ) )3 3 3N N N& [MNNF F ONF($ $ $$ $ $@ @ @ [4554 4 6541 1 12 2 2+ + +3 3 3  = = =- - -2 2 2. . ./ / /              
1 1 1' ' '( ( (' ' '( ( (        1 1 11 1 11 1 1. . .) ) )* * *' ' '' ' ') ) )) ) )* * *          ) ) )        2 2 20 0 0/ / /. . .4 4 4    , , ,F F F&- - -0 0 00 0 0, , ,2, , ,,> > >, , , > > >, , ,	P 	P 	PG G G    0 0 0. . ./ / // / /     0 0 01 1 19 9 9 [I   @ @ @
 [I   K K K
 [I   ; ; ;

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 *9rI   r?   c                       e Zd Zd Zd Zd Zd Zej        	                    d          d             Z
ej        	                    d          d             ZdS )	TestAiryc                 >   t          j        d          }t          |t          g d          d           t          j        d          }t          |t          g d          d           t          j        d          }t          |t          g d          d           d S )NGz?)g*?gTk'kPĿge+?gyCyt?r3  g=
ףp=?)g'$'?geοgL?g
HVV?g
ףp=
׿)gl@D|?gV~׭ͿgU?g3{ɔ?)r!   rC   r   r   r1  s     rF   rG   zTestAiry.test_airy  s     L!@@@AA	
 	
 	

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

 L!@@@AA	
 	
 	
 	
 	
rI   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   rN   rP   gN贁N{?rT   )	r!   rK   rC   r|   r   r   absr   r   )rE   abb1rl   s        rF   rL   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)))))rI   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 )NrP   glgoe2+
g(0[g X*JgUfݿg˰zU`?g4c1=C?gCuTrN   r   r   )g&g(.2+
gRg}`g%́rI  r^   )g7;1[ge*JgVwgL g<3rS  )gNݿg3%IQ`?gZyΌ׿gʀ11^?g33tտr   )gqM0=C?g7uTg\G`?gp⍞vg$.m?)r!   bi_zerosr   r   )rE   bibias      rF   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rI   c           	          t          j        d          }t          |t          dg          t          dg          t          dg          t          dg          fd           d S )Nr^   gcqg!xLgMSt$?g ~:p?rN   )r!   ai_zerosr   r   )rE   ais     rF   test_ai_zeroszTestAiry.test_ai_zeros:  si    a  !"e[M&:&:%*K=%9%9%*F8__%*F8__&6 78	9 	9 	9 	9 	9rI   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 )NP  r^   r5  r`   rW   r   ra   rT   )guqgqHkZg4g9Ζ%gB~gL")gLgQO	gMQnGg3:g)}g )r!   re  rC   r[  r   )rE   rM  zpai_zpxaip_zxai_zaip_z_ai_zpaip_zpai_envelopeaip_envelopes               rF   test_ai_zeros_bigzTestAiry.test_ai_zeros_bigA  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rI   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 )Nri  r^   r5  r`   rW   r   ra   rT   )gx&gg-2+
gRgg`gu%́g{ )g K;1[g*JgVwg<w gd
3g/{
")r!   r`  rC   r[  r   )rE   rM  rj  bi_zpxbip_zxro  bi_zbip_zbi_zpbip_zpbi_envelopebip_envelopes               rF   test_bi_zeros_bigzTestAiry.test_bi_zeros_bigZ  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rI   N)rO  rP  rQ  rG   rL   rc  rg  rR  rS  	fail_slowrt  r~  rU  rI   rF   rW  rW    s        
 
 
,* * *G G GB9 9 9 [1G G G0 [1G G G G GrI   rW  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 )NrI  r^   r  r3  )r!   genlaguerreassoc_laguerrer   )rE   a1a2s      rF   test_assoc_laguerrez%TestAssocLaguerre.test_assoc_laguerreu  sv     A&&#Br!,,!"RRVVA...#Ab++!"RRUU1-----rI   N)rO  rP  rQ  r  rU  rI   rF   r  r  t  s#        . . . . .rI   r  c                       e Zd Zd ZdS )TestBesselpolyc                     d S NrU  rD   s    rF   r   zTestBesselpoly.test_besselpoly~      rI   N)rO  rP  rQ  r   rU  rI   rF   r  r  }  s#            rI   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 )NrP   gT?r   )r!   r   r   )rE   mbeis     rF   r   zTestKelvin.test_bei  s(    {1~~D"4Q77777rI   c                 P    t          j        d          }t          |dd           d S )NrP   gD,X?r   )r!   r   r   )rE   mbeips     rF   r   zTestKelvin.test_beip  (    QE"5a88888rI   c                 P    t          j        d          }t          |dd           d S )NrP   gPA4?r   )r!   r   r   )rE   mbers     rF   r   zTestKelvin.test_ber  s(    {1~~D!4Q77777rI   c                 P    t          j        d          }t          |dd           d S )NrP   gii߿r   )r!   r   r   )rE   mberps     rF   r   zTestKelvin.test_berp  (    QE"6q99999rI   c                 n    t          j        d          }t          |t          g d          d           d S )Nr   g&jj@g+"@g(rw+@gU2@g`<6@rN   )r!   	bei_zerosr   r   )rE   ra  s     rF   test_bei_zeroszTestKelvin.test_bei_zeros  sP    q!!!"U ,6 ,6 ,6 &7 &7 89		: 	: 	: 	: 	:rI   c                 n    t          j        d          }t          |t          g d          d           d S )Nr   )gyWo.@g╲ݏ @gנ{)@gK11@gWc"5@r3  )r!   
beip_zerosr   r   )rE   bips     rF   test_beip_zeroszTestKelvin.test_beip_zeros  s\     ##!#e -C -C -C 'D 'D EF		G 	G 	G 	G 	GrI   c                 n    t          j        d          }t          |t          g d          d           d S )Nr   g\@g6ُ@gӟHY'@g>"D0@ggaO;4@rN   )r!   	ber_zerosr   r   )rE   r   s     rF   test_ber_zeroszTestKelvin.test_ber_zeros  sP    ""!#e -7 -7 -7 '8 '8 9:		; 	; 	; 	; 	;rI   c                 n    t          j        d          }t          |t          g d          d           d S )Nr   g '@gs%@gF ^-@gvۅj3@gB7@rN   )r!   
berp_zerosr   r   )rE   brps     rF   test_berp_zeroszTestKelvin.test_berp_zeros  sP     ##!#e -7 -7 -7 '8 '8 9:		; 	; 	; 	; 	;rI   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 )NrP   rJ  r3  )r!   r   r   r   r   r  r  r   r   r  r  )rE   mkelvs     rF   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rI   c                 P    t          j        d          }t          |dd           d S )NrP   g>ɿr   )r!   r  r   )rE   mkeis     rF   r  zTestKelvin.test_kei  s(    {1~~D!5a88888rI   c                 P    t          j        d          }t          |dd           d S )NrP   gr@d"?r   )r!   r  r   )rE   mkeips     rF   r  zTestKelvin.test_keip  r  rI   c                 P    t          j        d          }t          |dd           d S )NrP   gܙUr   )r!   r  r   )rE   mkers     rF   r  zTestKelvin.test_ker  s(    {1~~D!6q99999rI   c                 P    t          j        d          }t          |dd           d S )NrP   g^.n3Jr   )r!   r  r   )rE   mkerps     rF   r  zTestKelvin.test_kerp  r  rI   c                 n    t          j        d          }t          |t          g d          d           d S )Nr   gE>Q@gB= @gPN)@gm91@g
%5@rN   )r!   	kei_zerosr   r   )rE   r  s     rF   test_kei_zeroszTestKelvin.test_kei_zeros  sP    ""!#e -8 -8 -8 '9 '9 :;		< 	< 	< 	< 	<rI   c                 n    t          j        d          }t          |t          g d          d           d S )Nr   gWf,@g?"@gFZ*o+@gOpN2@gEa6@rN   )r!   
keip_zerosr   r   )rE   r  s     rF   test_keip_zeroszTestKelvin.test_keip_zeros  P    !!$$!$u .: .: .: (; (; <=		> 	> 	> 	> 	>rI   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  rN   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   )
rE   tmpberzbeizkerzkeizberpzbeipzkerpzkeipzs
             rF   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 (: (: ;<		= 	= 	=
 	"% /: /: /: ); ); <=		> 	> 	>
 	"% /: /: /: ); ); <=	> 	> 	> 	"% /: /: /: ); ); <=		> 	> 	>
 	"% /: /: /: ); ); <=		> 	> 	> 	> 	>rI   c                 n    t          j        d          }t          |t          g d          d           d S )Nr   )r  r  r  r  gD;q3@rN   )r!   	ker_zerosr   r   )rE   r  s     rF   test_ker_zeroszTestKelvin.test_ker_zeros
  sP    ""!#e -9 -9 -9 ': ': ;<		= 	= 	= 	= 	=rI   c                 n    t          j        d          }t          |t          g d          d           d S )Nr   r  rN   )r!   
kerp_zerosr   r   )rE   r  s     rF   test_kerp_zeroszTestKelvin.test_kerp_zeros  r  rI   N)rO  rP  rQ  r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  rU  rI   rF   r  r    s)       8 8 89 9 98 8 8: : :: : :G G G; ; ;; ; ;R R R9 9 99 9 9: : :: : :< < <> > >,> ,> ,>\= = => > > > >rI   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   rN   )r!   	bernoullir   r   )rE   brns     rF   test_bernoullizTestBernoulli.test_bernoulli  sP    ""!#e -5 -5 -5 '6 '6
 78	9 	9 	9 	9 	9rI   N)rO  rP  rQ  r  rU  rI   rF   r  r    s#        9 9 9 9 9rI   r  c                   $    e Zd ZdZd Zd Zd ZdS )TestBetaz
    Test beta and betaln.
    c                    t          t          j        dd          d           t          t          j        dd          t          j        d                     t          t          j        dd          ddd	
           t          j        dd          }t          j        d          t          j        d          z  t          j        d          z  }t          ||d           d S )Nr^   r   33333YN~h?   g6.8@rV   r   r?  rP   rN   rT   rW   )r   r!   betar   rj  )rE   betbetgs      rF   	test_betazTestBeta.test_beta+  s    W\!Q''---VV44gmF6K6KLLLVS113E"	, 	, 	, 	, l1a  a  q!1!117=3C3CCT......rI   c                 n    t          t          j        t          j        dd                               d S )NrS   rP   )r   rc   isinfr!   r  rD   s    rF   test_beta_infzTestBeta.test_beta_inf5  s,    b!,,--.....rI   c                    t          t          j        dd          d           t          t          j        dd          t          j        d                     t          t          j        dd          ddd	
           t          j        dd          }t          t          t          j        dd                              }t          ||d           d S )Nr^   r   r  r  r     gIs	@r>  r   r?  rP   rN   rV   rW   )r   r!   betalnr   rp  r   r[  r  )rE   betlnr  s      rF   test_betalnzTestBeta.test_betaln8  s    W^Aq))3///vv66//	1 	1 	1vs335G"	, 	, 	, 	, q!$$#gl1a(())**s//////rI   N)rO  rP  rQ  __doc__r  r  r  rU  rI   rF   r  r  &  sK         / / // / /	0 	0 	0 	0 	0rI   r  c                      e Zd ZdZd Zej                            dg d          d             Zej                            dg d          d             Z	ej                            dg d	          d
             Z
ej                            dej        ej        ej        ej        g          ej                            dg d          d                         Zej                            dej        ej        g          d             ZdS )TestBetaIncz?
    Tests for betainc, betaincinv, betaincc, betainccinv.
    c                 ^   t          j        g d          }t          t          j        dd|          |           t          t          j        dd|          |           t          t          j        dd|          d|z
             t          t          j        dd|          d|z
             d S )N)r   r5  r^   r^   )rc   r   r   r!   betainc
betaincinvbetainccbetainccinvr1  s     rF   
test_a1_b1zTestBetaInc.test_a1_b1I  s    H\\\""W_Q1--q111W'1a00!444W%aA..A666W(Aq111q599999rI   z
a, b, x, p))rP   rN   g@w?r   )r  g     `e@r`   g*?)r  r  g"Yx;r5  )g   `1?g    ئAg\aY4g    ?)rN   i g-߇)?g;?c                     t          j        |||          }t          ||d           t          j        |||          }t          ||d           d S )Nr  rW   g-a=)r!   r  r   r  rE   r\  r]  r  r[  p1x1s          rF   test_betainc_betaincinvz#TestBetaInc.test_betainc_betaincinv`  s[     _Q1%%AE****1a((AE******rI   ))      @r   r5  g     ?)      @g     *@      ?g&?)      ?r  g333333?gFoE?)r        2@rR  gg2$Z?)r  r  gZd;?g6)r  ri  r  g`<)      0@r  g?g<dEA>)g?g7Ê@g/3J?Hz>c                     t          j        |||          }t          ||d           t          j        |||          }t          ||d           d S )N+<rW   gV瞯=)r!   r  r   r  r  s          rF   test_betaincc_betainccinvz%TestBetaInc.test_betaincc_betainccinvu  s\     aA&&AE**** Aq))AE******rI   za, b, y, ref))cj,@r  ghHISOa gڭ Y;)g      ,@g      -@g둤g}c]춫;)r        .@gUv \U,gS^%:)r   g      ?gMoigKB;)r:  g    i@g1$-g\_cp:c                 V    t          j        |||          }t          ||d           d S )Nr>  rW   )r!   r  r   )rE   r\  r]  rL  refr  s         rF   test_betaincinv_tiny_yz"TestBetaInc.test_betaincinv_tiny_y  s3    2 q!Q''3U++++++rI   funcargs))r  rP   r   )r   rP   r   )r]         r   )r]  r   r   )r]  r   333333ӿ)r]  r   皙?c                     t          j        d          5  t          j        t           j        d          5  t          j        |  d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nraise)domainr  match)r!   errstaterR  r   SpecialFunctionErrorr  )rE   r
  r  s      rF   test_betainc_domain_errorsz&TestBetaInc.test_betainc_domain_errors  s     W--- 	' 	'w;8LLL ' '&&' ' ' ' ' ' ' ' ' ' ' ' ' ' '	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's4   !A*AA*A	A*A	A**A.1A.dtypec                     t          j        dg|          }t          j        dg|          }t          j        |||          }t	          ||dt          j        |          j        z             d S )Nr   r  r   rS  rW   )rc   r   r!   r  r   r   eps)rE   r  r\  r  r  s        rF   test_gh21426zTestBetaInc.test_gh21426  so     HbT'''HcU%(((#Aq!,,RXe__-@(@AAAAAArI   N)rO  rP  rQ  r  r  rR  rS  parametrizer  r  r	  r!   r  r  r  r  r  rc   r  r  r  rU  rI   rF   r  r  D  s        : : :. [	6 	6 	6
7 
7+ +
7 
7+ [\
< 
< 
<= =+ += =+ [	7 	7 	7 , , ,& [Vgow7I&-&68K&M N N[V &I &I &I J J' 'J JN N
'
 [Wrz2:&>??B B @?B B BrI   r  c                       e Zd Zd Zd Zd Zej        j        d             Z	d Z
d Zej        j        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 )NrS  r   rN         ^@g     @j@Texactx   )r"  
repetition   c                 <    g | ]}t          j        d |d          S )rt   Tr!  )r!   comb).0rm   s     rF   
<listcomp>z/TestCombinatorics.test_comb.<locals>.<listcomp>  s)    LLLQb!4888LLLrI   rJ  rt   r  rb   r^   l   hU7`S?Q r:  2   )
r   r!   r'  r   r|   listrc   iinfor{   max)rE   iirN  s      rF   	test_combzTestCombinatorics.test_comb  sB   b"X1v66tEEER++T222W\"at444c:::W\"atEEEsKKKLL%))LLLReBii99	G 	G 	G 	G Xc]]"W\"bd$777<<<1|C4000H<<<<<<rI   c                     d}d}t          j        |          }t          j        |          }t          j        ||d          }t          j        ||d          }||k    sJ d S )NF   rZ   Tr!  )rc   int64r!   r'  )rE   rl   rm   np_nnp_kres_npres_pys          rF   test_comb_with_np_int64z)TestCombinatorics.test_comb_with_np_int64  si    x{{x{{dD555a$///rI   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 )NrP   r   Tr!  r   rS   FrP   rS   rP   rS  r   r   rS   r   )r   r   r   r   )r   r!   r'  r   rD   s    rF   test_comb_zerosz!TestCombinatorics.test_comb_zeros      W\!Qd333Q777W\"at444a888W\!Rt444a888W\!Ru555q999^^^]]]CCEWEWEWXXXXXrI   c                     d}t          j        |          5  t          j        ddd           d d d            d S # 1 swxY w Y   d S )Nz`exact=True`r  r  rN   Tr!  )rR  deprecated_callr!   r'  )rE   msgs     rF   test_comb_exact_non_int_depz-TestCombinatorics.test_comb_exact_non_int_dep  s    ##... 	- 	-Lat,,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-   =AAc                     t          t          j        ddgddg          ddg           t          t          j        dd          d           t	          t          j        ddd          d           d S )	NrS  r   rN        @g     @Tr!  i  )r   r!   permr   r   rD   s    rF   	test_permzTestCombinatorics.test_perm  sm    b"X1v66uFFFGLQ//666W\"at444c:::::rI   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 )NrP   r   Tr!  r   rS   Fr:  r;  )r   r   r   rD  )r   r!   rE  r   rD   s    rF   test_perm_zerosz!TestCombinatorics.test_perm_zeros  r=  rI   c                    t          j        t          d          5  t          j        ddgddgd           d d d            n# 1 swxY w Y   t          j        d	          5  t          j        d
dd           d d d            n# 1 swxY w Y   t          j        d	          5  t          j        ddd           d d d            n# 1 swxY w Y   t          j        d	          5  t          j        ddd           d d d            n# 1 swxY w Y   t          j        t          d	          5  t          j        dd
d           d d d            d S # 1 swxY w Y   d S )Nzscalar integersr  r^   rP   rN   r   Tr!  zNon-integergffffff@rT   gffffffr   g333333      @)rR  r   
ValueErrorr!   rE  r?  rD   s    rF   test_perm_ivzTestCombinatorics.test_perm_iv  s    ]:->??? 	5 	5L!Q!Qt4444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5
 #-888 	- 	-Lat,,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-#-888 	. 	.Lq----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.#-888 	. 	.LD----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.
 ]:];;; 	/ 	/Lc....	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/sY   AAA$BBB(CCC,DDD6EE"EN)rO  rP  rQ  r0  r8  r<  rR  rS  thread_unsaferA  rF  rH  rL  rU  rI   rF   r  r    s        = = =     Y Y Y [- - -
; ; ;
Y Y Y [/ / / / /rI   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   )rE   cbcbrls      rF   r   zTestTrigonometric.test_cbrt  s,    \"Bt$$$$$rI   c                 T    t          j        d          }d}t          ||d           d S )Ngfffff;@g鎖C@r3  )r!   r   r   )rE   cb1cbrl1s      rF   test_cbrtmorezTestTrigonometric.test_cbrtmore  s.    l4  Ca(((((rI   c                 ~    t          j        d          }t          t          dz            }t	          ||d           d S )Nr  r   r3  r!   r   r
   r   r   )rE   cdgcdgrls      rF   r   zTestTrigonometric.test_cosdg  s8    mBBsFCa(((((rI   c                 ~    t          j        d          }t          t          dz            }t	          ||d           d S NrZ   rJ  r3  rY  )rE   cdgmcdgmrls      rF   test_cosdgmorez TestTrigonometric.test_cosdgmore  s8    }R  RVD*****rI   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   rH  rS  r^   r3  )r!   r   r   r
   r   )rE   cscsrls      rF   r   zTestTrigonometric.test_cosm1  sv    mAw}R00r"u1E1EFAqR3r"u::a<0!"T!,,,,,rI   c                     t          j        d          }t          t          dz            dz  }t	          ||d           d S )NrZ   rJ  rS   r3  r!   r   r   r   r   )rE   ctctrls      rF   r   zTestTrigonometric.test_cotdg  s=    ]22c6{{R BtA&&&&&rI   c                     t          j        d          }t          t          dz            dz  }t	          ||d           d S )Nr   r:  rS   r3  re  )rE   ct1ctrl1s      rF   test_cotdgmorez TestTrigonometric.test_cotdgmore  s=    mBBsFb!Ca(((((rI   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   rD   s    rF   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8rI   c                     t          t          j        dg          d           t          t          j        d          d           d S )Nr   r^   r   r   )r   r!   sincr   rD   s    rF   	test_sinczTestTrigonometric.test_sinc0  s>    7<,,a000W\#&&,,,,,rI   c                 N    t          j        d          }t          |d           d S r  )r!   r	  r   )rE   sns     rF   r
  zTestTrigonometric.test_sindg5  s'    ]2RrI   c                     t          j        d          }t          t          dz            }t	          ||d           t          j        d          }t          t          dz            }t	          ||d           d S )NrZ   rJ  r3  r   r:  )r!   r	  r	   r   r   )rE   snmsnmrlsnm1snmrl1s        rF   test_sindgmorez TestTrigonometric.test_sindgmore9  h    mBBsFCa(((}R  RVD*****rI   N)rO  rP  rQ  r   rW  r   r`  r   r   rk  ru  rx  r
  r  rU  rI   rF   rO  rO    s        % % %
) ) )
) ) )
+ + +
- - -
' ' '
) ) )
9 9 9- - -
  + + + + +rI   rO  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!   r5  r   r   r   )rE   tntnrls      rF   r6  zTestTandg.test_tandgD  s8    ]22c6{{BtA&&&&&rI   c                     t          j        d          }t          t          dz            }t	          ||d           t          j        d          }t          t          dz            }t	          ||d           d S )Nr   r:  r3  r`  r   r  )rE   tnmtnmrltnm1tnmrl1s        rF   test_tandgmorezTestTandg.test_tandgmoreI  r  rI   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   rm  r   r   rn  r  ro  rp  r2  iLrq  rr  rs  rt  )r   r!   r5  rD   s    rF   ru  zTestTandg.test_specialpointsQ  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9rI   N)rO  rP  rQ  r6  r  ru  rU  rI   rF   r  r  B  sA        ' ' '
+ + +: : : : :rI   r  c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )	TestEllipc                 D    t          j        dt          j                   dS )zRegression test for #912.r   N)r!   r%  rc   r   rD   s    rF   test_ellipj_nanzTestEllip.test_ellipj_nan`  s    sBF#####rI   c                     t          j        dd          }t          d          t          d          ddg}t	          ||d           d S )Nr  r   r      )r!   r%  r	   r
   r   )rE   elrels      rF   r&  zTestEllip.test_ellipjd  sE    ^C""3xxCT*!"S,,,,,rI   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э?rI  r   r   rP   rS   gN?)
r!   r#   r   r   r$   rc   r   r   r   r   )rE   elks     rF   r(  zTestEllip.test_ellipki  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++-?@@@@@rI   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 )NrP   r  r   rt   r2  r   gfoKh?r3  r   r   r   r   gt?r^   rQ   r>  rW   6<R!?r  gfON?)r!   r*  r   r#   r   r	   r   rc   r   r   r   )rE   elkincr  alphaphir7  s         rF   r+  zTestEllip.test_ellipkinct  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LrI   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   rS  r^   gV^8j?g,j6Ƅ@rP   )	rc   	nextafterr|   appendr!   r*  r   	full_liker   rE   mbadr  r7  mvalsjr  f1s           rF   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SrI   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<rG  rP   Fr  r^   rK  rW   )rc   rv   rO  r   r   r!   r*  arcsinhr   r   r   )rE   xlogxlinxlin2s       rF   test_ellipkinc_singularz!TestEllip.test_ellipkinc_singular  s   {4b)){5#r**CArE:::)$22BJrvd||4L4L!	# 	# 	# 	#)$22BJrvd||4L4L!	# 	# 	# 	#)%33RZu5N5N!	# 	# 	# 	#W&ruQw22BF;;;)4%33RZu5N5N!	# 	# 	# 	#)4%33RZu5N5N!	# 	# 	# 	#)5&!44bj6P6P!	# 	# 	# 	#W&vax33RV<<<<<rI   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?r3  r   rP   r   r  g?eg@)	r!   r"   r   r   r   rc   r   r   r   )rE   eles     rF   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++-?@@@@@rI   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 )NrP   r  rm  4   r2  #   g'?r3  r   r   r   r   r  r  gL@)r!   r   r   r"   r   r	   r   rc   r   r   r   )rE   eleincr  r  r  r7  s         rF   r!  zTestEllip.test_ellipeinc  s   "2a4++nS!!F3r***U3Yr"uSysJJM"3q))FJ222W&r!tS112a4888W&r!tS113777W&r!tbfW55rv>>>W&r!tRV44bf===W&r!tQ//888W&q#..444W&rvs33RV<<<W&w44rvg>>>W&rvw77@@@W&w8826'BBBW&rvrv66???W&w77@@@W&rvs33RV<<<W&rvrv66???)&#668JKKKKKrI   c                    d}d}t          j        |d          }g }t          d          D ],}|                    |           t          j        |d          }-t	          j        ||          }t          |t          j        |d          d           t	          j        |t          z   |          }t          |t          j        |d          d	           d S )
Nr  r  r   rS  r^   g%?rP   gXo
@rN   )	rc   r  r|   r  r!   r   r   r  r   r  s           rF   test_ellipeinc_2zTestEllip.test_ellipeinc_2  s     # Lq!!r 	# 	#ALLOOOQ""AAc5))&q",q:M*N*NPQRRRsRx//&r2<<N+O+OQRSSSSSrI   N)rO  rP  rQ  r  r&  r(  r+  r  r  r  r!  r  rU  rI   rF   r  r  _  s        $ $ $- - -
	A 	A 	AM M M:T T T = = =*	A 	A 	AL L L4T T T T TrI   r  c                   x    e Zd ZdZd Zd Zd Zd Zd Ze	j
                            d          d	             Zd
S )TestEllipCarlsonzTest for Carlson elliptic integrals ellipr[cdfgj].
    The special values used in these tests can be found in Sec. 3 of Carlson
    (1994), https://arxiv.org/abs/math/9409227
    c           	      :   t          t          dd          d           t          dt                    dk    sJ t          t          dd                    sJ t          dt	          dt                              dk    sJ t          ddgddgddgddgdd	gdd
gg          }t          t          j        t          j        d          ddt          j        d          dz  dg          }t          |          D ]"\  }}t          t          | ||                    #d S )Nr^   r   r   r5  g      @r   rJ               r  r  y
c?
cy=B?CGֿr   y檠f?P9lb?)
r   r%   r   r   rB  r   rc   r   r   	enumeraterE   r  expected_resultsr   arrs        rF   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+>????	@ 	@rI   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 )Nr^   r   rP   r   g`C+?r   r   rS   )r   r   r   r   r   r:  rJ  r  r   r   rJ  r  )r               ?rJ  )y             r  r  )gfe_?gi+"?gP$M?ytgFU?7?@yR<8*y{62?z)r   r&   r   rc   r  rB  r   r   r  tinyr   r  r  s        rF   test_elliprdzTestEllipCarlson.test_elliprd  s   1a((!,,,1a((3.0FGGGq!S!!S((((x1a(()))))x1gamm4455555x1gamm4455555WQBHRZ$8$8$=#=#CDDEEEEEWQ72q>>2233333ooo%oo((((((,,,3335 6 6 ! "D "D "D E E  oo 	@ 	@FAsGSM+;A+>????	@ 	@rI   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 )Nr^   r   rP   gPO?r   rS   )r   r   r   )rJ  r  r   )r   r   r   r  rJ  r   r  r  )r  rJ        ?      )geQO?ʞu5J?r  yp\y?kg2ΰ?gHwд?y|pF?-6Fj)	r   r'   r   rc   r  r   rB  r   r  r  s        rF   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+>????	@ 	@rI   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 )Nr^   r   r   )r   r   r   r  r  r  )r  r  rJ  )r   g8d`?r:  gL+?g}^?y旮0?ʋW?yjN?^?gt?)	r   r(   rc   r  r   rB  r   r   r  r  s        rF   test_elliprgzTestEllipCarlson.test_elliprg6  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+>????	@ 	@rI   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 )Nr^   r   r   rS   )r   r   r   r   )r   r   r:  r   )r   r   r:  r  )rJ  r  r   r   )r              r   r   )rJ  r  r   r  )r  r  r   y            ?)r   r   r:  r  )r   r   r:        )	g @?gviM?ym?\Isؿg'4Ob?go0 ?yW7?xfOA?ybv㿘ܶ.gHQ?gjߡB7E)r   r)   r   r   r   r  r  s        rF   test_elliprjzTestEllipCarlson.test_elliprjK  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+>????	@ 	@rI   zInsufficient accuracy on 32-bitrD  c                     t          t          dddd          ddd           t          t          d	d
dd          ddd           d S )Ng   gq>g   `W:g    HBg   @ۘ?gRy|>r  r  r?  g   ,@g    x=g   @e:g   `ݽ>g(HR)A)r   r)   rD   s    rF   test_elliprj_hardz"TestEllipCarlson.test_elliprj_hardf  s     5 6 3 13 3 ;"	0 	0 	0 	0 	 2 5 4 57 7 <"	0 	0 	0 	0 	0 	0rI   N)rO  rP  rQ  r  r  r  r  r  r  rR  rS  rT  r  rU  rI   rF   r  r    s         @ @ @(@ @ @0@ @ @2@ @ @*@ @ @6 [?@@0 0 A@0 0 0rI   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   rS   r   )rc   r   m_n1_1r   r   minmax_neglog2
very_neg_mconcatenate
ms_up_to_1rD   s    rF   setup_classz.TestEllipLegendreCarlsonIdentities.setup_class|  s    iR..V}}(F2+-7DL=+A+A,BCE+.%0 %0 !0 0 .4<.*./*.+*7 8 8rI   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'   rE   r7  s     rF   test_kz)TestEllipLegendreCarlsonIdentities.test_k  s7     Oq		72r!tR#8#899999rI   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   rc   r  r   r$   r'   )rE   r  m1s      rF   test_km1z+TestEllipLegendreCarlsonIdentities.test_km1  s]     V}}!BrBGDMM>2222gb"b&9&9:::::rI   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     rF   test_ez)TestEllipLegendreCarlsonIdentities.test_e  s<     Oq		2gb"Q$&;&;#;<<<<<rI   N)rO  rP  rQ  r  r  r  r  r  rU  rI   rF   r  r  v  sZ         

8 
8 
8: : :	; 	; 	;= = = = =rI   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 )Nr5  g);T?r3  )r!   r.  r   )rE   ers     rF   r/  zTestErf.test_erf  s)    [B|A.....rI   c                 r    t          j        d          }t          g d          }t          ||d           d S )Nr   )yTcJ5?=W?yo@n@y'ʷ@g	@y"[

@,y]+@yld&@-;'j'>@rN   )r!   	erf_zerosr   r   )rE   erzerzrs      rF   test_erf_zeroszTestErf.test_erf_zeros  sJ    "" - - - . .
 	"#d1-----rI   r   c                    t           j                            d          }d}|                    d|          d|                    dd|          z  dz
  z  }|                    d|          d|                    dd|          z  dz
  z  }|d|z  z   }	t          j        d	          5   ||	          }
 ||          j        }t          j        |
          }|
|         }
|	|         }	t          j        |          }||         }||         }t          ||
|	||
           t          |||||
           d d d            d S # 1 swxY w Y   d S )NrY   r\  g{Gz?rP   r   r^   rJ  ignoreallr?  )	rc   ri   rj   paretorandintr  r   isfiniter:   )rE   r
  
other_funcrX   rb   rp   rl   r  rL  rM  rM  w_realmasks                rF   _check_variant_funczTestErf._check_variant_func  s   i##D))JJtQ1S[[Aq%9%9#9A#=>JJtQ1S[[Aq%9%9#9A#=>1H[X&&& 	E 	E
1AZ]]'F;q>>D$A$A;v&&DD\F$A dAqt$????dFADtDDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	Es   'BE  EEc                 N    |                      t          j        d dd           d S )Nc                 0    dt          j        |           z
  S rz   rB   r.  rM  s    rF   <lambda>z.TestErf.test_erfc_consistent.<locals>.<lambda>  s    a&*Q--' rI   r   r>  r?  )r  rB   r4  rD   s    rF   test_erfc_consistentzTestErf.test_erfc_consistent  s:      K''	 	! 	 	 	 	 	rI   c                 L    |                      t          j        d d           d S )Nc                 Z    t          j        | | z            t          j        |           z  S r  )rc   r   rB   r4  r   s    rF   r  z/TestErf.test_erfcx_consistent.<locals>.<lambda>  s    bfQqSkkFKNN2 rI   r   rW   )r  rB   erfcxrD   s    rF   test_erfcx_consistentzTestErf.test_erfcx_consistent  s7      L22 	! 	 	 	 	 	rI   c                 L    |                      t          j        d d           d S )Nc                 6    dt          j        d| z            z  S )Nr  rJ  r  r   s    rF   r  z.TestErf.test_erfi_consistent.<locals>.<lambda>  s    cFJr!t,,, rI   r   rW   )r  rB   erfirD   s    rF   test_erfi_consistentzTestErf.test_erfi_consistent  s7      K,, 	! 	 	 	 	 	rI   c                 L    |                      t          j        d d           d S )Nc                     t          t                    dz  t          j        |  | z            z  t	          j        |           z  S r  )r   r   rc   r   rB   r	  r   s    rF   r  z/TestErf.test_dawsn_consistent.<locals>.<lambda>  s0    d2hhqj261"Q$<</&+a..@ rI   r   rW   )r  rB   r   rD   s    rF   test_dawsn_consistentzTestErf.test_dawsn_consistent  s7      L@@ 	! 	 	 	 	 	rI   c                     t           j        t           j         t           j        g}t           j        ddg}t          t	          j        |          |d           d S )NrS   r^   r  rW   )rc   r   r   r   r!   r.  rE   rw  rN  s      rF   test_erf_nan_infzTestErf.test_erf_nan_inf  sH    (FB?D))8%@@@@@@rI   c                     t           j        t           j         t           j        g}t           j        ddg}t          t	          j        |          |d           d S )NrP   r   r  rW   )rc   r   r   r   r!   r4  r  s      rF   test_erfc_nan_infzTestErf.test_erfc_nan_inf  sH    (FAq>T**H5AAAAAArI   c                     t           j        t           j         t           j        g}t           j        t           j        dg}t          t	          j        |          |d           d S )Nr   r  rW   )rc   r   r   r   r!   r  r  s      rF   test_erfcx_nan_infzTestErf.test_erfcx_nan_inf  sK    (FBFA&d++XEBBBBBBrI   c                     t           j        t           j         t           j        g}t           j        t           j         t           j        g}t          t	          j        |          |d           d S )Nr  rW   )rc   r   r   r   r!   r	  r  s      rF   test_erfi_nan_infzTestErf.test_erfi_nan_inf  sO    (FRVGRV,T**H5AAAAAArI   c                     t           j        t           j         t           j        g}t           j        ddg}t          t	          j        |          |d           d S )Nru  r   r  rW   )rc   r   r   r   r!   r   r  s      rF   test_dawsn_nan_infzTestErf.test_dawsn_nan_inf  sI    (FD#&d++XEBBBBBBrI   c                     t           j        t           j         t           j        g}t           j        t           j        dz  z   ddg}t          t	          j        |          |d           d S )NrJ  rA  r  rW   )rc   r   r   r   r!   rL  r  s      rF   test_wofz_nan_infzTestErf.test_wofz_nan_inf  sT    (FRVc\)66:T**H5AAAAAArI   N)r   )rO  rP  rQ  r/  r  r  r  r  r
  r  r  r  r  r  r  r  rU  rI   rF   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rI   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   r^   rP   r  rW   )r^   r   rS   r
  )r^   r^   r   =   ii  iY  i=) il   Q~ l   10[l   $8gC
 l   2l   v}Ju: )r  dr  r  r  r   rm  )r!   eulerr   r   r|   r}   rc   r  r   r.  r   )
rE   eu0eu1eu2eu24	mathworldcorrectrm   errerrmaxs
             rF   
test_eulerzTestEuler.test_euler  s   mAmAmAaSu----aV%0000ZZZe4444}R  + + +	 c""q 	3 	3AA 3 %il 3 33!$Yq\22![X&&& 	 	d7lG344CXXF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	FC,,,,,s   %D66D:=D:N)rO  rP  rQ  r)  rU  rI   rF   r  r    s#        - - - - -rI   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 )NrP   rN   )r!   r;  r   rE   exexrls      rF   r<  zTestExp.test_exp2  s*    \!__RrI   c                 T    t          j        d          }d}t          ||d           d S )Nr  g;f@r3  )r!   r;  r   rE   exmexmrls      rF   test_exp2morezTestExp.test_exp2more#  s.    l3Ca(((((rI   c                 R    t          j        d          }d}t          ||           d S )NrP   r:  )r!   r7  r   r-  s      rF   r8  zTestExp.test_exp10(  s,    ]1Bt$$$$$rI   c                 T    t          j        d          }d}t          ||d           d S )Nr  gYs@r3  )r!   r7  r   r1  s      rF   test_exp10morezTestExp.test_exp10more-  s.    mC  Ca(((((rI   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 )NrP   r   rN   r^   r3  r!   r>  r   r   r-  s      rF   r?  zTestExp.test_expm12  sn    mAw}Q//a0@0@AAqQ#a&&(+!"T!,,,,,rI   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 )NrP    @皙@r^   r3  r9  )rE   ex1exrl1s      rF   test_expm1morezTestExp.test_expm1more7  sn    }Qc 2 27=3E3EFQ#c((1*SXXaZ0!#eA.....rI   N)	rO  rP  rQ  r<  r4  r8  r7  r?  r?  rU  rI   rF   r+  r+    sn          
) ) )
% % %
) ) )
- - -
/ / / / /rI   r+  c                    fd}d }t          |           t          |          u s*J dt          |            dt          |                       t          | t          j                  rl| j        |j        k    sJ  || |           t          |                                 |                                          D ]\  }}t          ||           dS t          j        |           rLt          j        |          r8t          t          |           d          r ||           o ||           dS  dS  || |           dS )a  
    Sharper assertion function that is stricter about matching types, not just values

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

    We still want to be able to allow a relative tolerance for the values though.
    The main logic comparison logic is handled by the xp_assert_* functions.
    c                 T    t          | |           d S t          | |           d S )NrW   )r4   r3   )r  rL  rX   s     rF   assert_funcz(assert_really_equal.<locals>.assert_funcI  s7    !%1?1ad3S3S3S3S3S3SrI   c                 n    t          j        | j                  rt          j        | j                  sJ d S r  )rc   r   r   rK  r  s    rF   assert_complex_nanz/assert_really_equal.<locals>.assert_complex_nanL  s1    x4BHQV$4$444444rI   ztypes not equal: z, rW   r#  N)
type
isinstancerc   ndarrayr  ziprh   assert_really_equalr   r8   )r  rL  rX   rB  rE  elem_xelem_ys     `    rF   rJ  rJ  =  s   T T T T T5 5 5 77d1ggG477GGd1ggGG !RZ   w!'!!!!Aq!!''))QWWYY77 	; 	;NFFT:::::	; 	;	! ! d1ggs)C)C 17"4"4Q"7"7"7"7"7777 	AqrI   c                   h   e Zd Zd Zej                            dg d          d             Zej                            dg d          ej                            ddd	g          d
                         Zej                            ddd	g          d             Z	ej                            dg d          d             Z
ej                            dddg          ej                            dg d          d                         Zej                            ddd	g          ej                            dddg          ej                            dej         ej        d          ej        ej        dz  z    ej        d          ej        ej        dz   ej         ej         dz   d ej        d          g
g d          ej                            dej        ej        ej        g          d                                                 Zej                            ddd ej        d!g          d"             Zej                            d# ed$d%                    ej                            ddd	g          d&                         Zej                            ddd	g          ej                            d'deej        ej        ej        ej        ej        ej         ej!        ej"        g
          ej                            d( edd%                    d)                                     Z#ej                            ddd	g          ej                            d* ed$d%                    d+                         Z$ej                            d'ej        ej         ej!        ej"        g          ej                            dg d          d,                         Z%ej                            d ed-d.d/                    d0             Z&ej                            d e' edd1                     e' ed-d.d/                    z             d2             Z(d3 Z)d4 Z*ej                            d'ej        ej        ej        e+g          ej                            dddg          ej                            ddd	g          ej                            d( edd%                    ej                            d5g d$gd gej        gej        ej        dz  z   gej        d$ggg d6          d7                                                             Z,ej                            dddg          ej                            ddd	g          ej                            dd$d d8ej        ej        ej        dz  z   dgg d9          d:                                     Z-ej                            d ed-d.d;                    d<             Z.ej                            d e' edd1                     e' ed-d.d;                    z             d=             Z/d> Z0ej                            d'ej        ej        ej        e+g          ej                            dddg          ej                            ddd	g          ej                            d( edd%                    ej                            d5g d$gd gej        gej        ej        dz  z   gej        d$ggg d6          d?                                                             Z1ej                            dddg          ej                            ddd	g          ej                            dd$d d8ej        ej        ej        dz  z   dgg d9          d@                                     Z2ej                            dA ed$d%                    ej                            d edBdCdD                    dE                         Z3ej                            dA e' ed$d%                    d/dCgz             ej                            d e' edd1                     e' ed1dFd;                    z             dG                         Z4dH Z5ej                            d'ej        ej        ej        e+g          ej                            dddg          ej                            ddd	g          ej                            d( edd%                    ej                            d5g d$gd gej        gej        ej        dz  z   gej        d$ggg d6          dI                                                             Z6ej                            dddg          ej                            ddd	g          ej                            dA ed$d%                    ej                            dd$d d8ej        ej        ej        dz  z   dgg d9          dJ                                                 Z7ej                            ddd	g          ej                            dg d          ej                            dAdKdLddMdd ej        g          dN                                     Z8ej                            ddd	g          ej                            dg d          ej                            dAd! ej        d          gd!dOg          dP                                     Z9ej                            dg d          ej                            dA ed$dQ                    dR                         Z:dS Z;dS )TTestFactorialFunctionsc                 @   |rt          j        ||d          S |dk    rt          j        ||          nd}t          j        |||z
  |z            t          j        ||z  dz             z  t          j        ||z  dz             z  }|t          j        |d          z  S )NTrm   r"  zeror^   )r!   
factorialkrc   modpowerrj  r  maximum)rE   rl   rm   r"  extendrrw  s          rF   factorialk_refz%TestFactorialFunctions.factorialk_refb  s     	:%a1D9999"f,,BF1aLLL!xAE19%%acAg(>(>>PQRSPSVWPWAXAXXbjA&&&&rI   zexact,extend))TrQ  )FrQ  )FrB  c                     ||d}t          j        t          j        di |          sJ t          j        t          j        di |          sJ t          j        t          j        dddi|          sJ d S )Nr"  rV  r^   rm   r   r^   )rc   isscalarr!   	factorial
factorial2rR  )rE   r"  rV  kws       rF   "test_factorialx_scalar_return_typez9TestFactorialFunctions.test_factorialx_scalar_return_typek  s     //{7,55"5566666{7-6626677777{7-;;1;;;<<<<<<<rI   rl   )rS   r  r"  TFc                     d|i}t          t          j        |fi |d           t          t          j        |fi |d           t          t          j        |fddi|d           d S )Nr"  r   rm   r   )r   r!   r]  r^  rR  )rE   r"  rl   r_  s       rF   $test_factorialx_negative_extend_zeroz;TestFactorialFunctions.test_factorialx_negative_extend_zeros  s     uW&q//B//333W'00R00!444W'55Q5"55q99999rI   c                 @   d|i}d}g d}t          j        g d|rt          nt           j                  }t	          t          j        |fi |||           t	          t          j        |fi |||           t	          t          j        |fddi|||           d S )	Nr"  r  )rs  r   r^   )r   r   r^   r^   r  rW   rm   r   )	rc   r   
native_intr  rJ  r!   r]  r^  rR  )rE   r"  r_  rX   rl   rN  s         rF   *test_factorialx_negative_extend_zero_arrayzATestFactorialFunctions.test_factorialx_negative_extend_zero_array{  s    uNN8LLLe0S

TTTG-a66266tLLLLG.q77B77MMMMG.q<<A<<<hTRRRRRRrI   gggffffff
c                 H   ddi}dddd}ddd	d}d
ddd}d}t          t          j        |fi |||         |           t          t          j        |fi |||         |           t          t          j        |fddi|||         |           t          t          j        |gfi |d         ||         |           t          t          j        |gfi |d         ||         |           t          t          j        |gfddi|d         ||         |           d S )NrV  rB  gRc/a_%g:\Oag@g*BZ'rh  go	08G)?goNb]gMxcQgNy?g=u?g7K [n<rW   rm   r   r   )r   r!   r]  r^  rR  )rE   rl   r_  exp_1exp_2exp_krX   s          rF   'test_factorialx_negative_extend_complexz>TestFactorialFunctions.test_factorialx_negative_extend_complex  s   	"-..0 0 .-.0 0 /--/ / )!22r22E!H4HHHH*13333U1XDIIII*1888R88%(NNNN)1#4444Q7qMMMM*A355"55a8%(NNNN*A3::!:r::1=uQxdSSSSSSrI   rK  r   rA  n_outerc                 X    ddifd} |||z               |d|z  |z              d S )NrV  rB  c                 .   t          t          |           d          }t          j        d          }|rt          j        d          nt          j        d          }t          t          j        | fi |           t          t          j        | dz  fi |           t          t          j	        | dz  fddi|           d}t          t          j	        | |z  fd|i|           t          t          j        | gfi d         |           t          t          j        | dz  gfi d         |           t          t          j	        | dz  gfddid         |           t          t          j	        | |z  gfd|id         |           d S )	Nr#  nan+nanjr   rP   r   rm   y      ?       r   )
r8   rF  rc   
complex128r  rJ  r!   r]  r^  rR  )rl   
complexifycomplex_nanr   r#  r_  s        rF   _checkzTTestFactorialFunctions.test_factorialx_negative_extend_complex_poles.<locals>._check  s   %d1ggs33J-
33K/9P"-
+++rz%?P?PC 1! : :r : :C@@@ 21q5 ? ?B ? ?EEE 21q5 D DA D D DcJJJA 21q5 D DA D D DkRRR 11# < < < <Q ?EEE 2AE7 A Ab A A! DcJJJ 2AE7 F Fa F2 F Fq I3OOO 2AE7 F Fa F2 F Fq I;WWWWWrI   i rU  )rE   ro  rK  rv  r_  s       @rF   -test_factorialx_negative_extend_complex_poleszDTestFactorialFunctions.test_factorialx_negative_extend_complex_poles  sc     	"	X 	X 	X 	X 	X( 	w~w 4'(((((rI   boxedrV  rQ  rB  r   rJ  rr  Nnat)
NaNznp.float64('nan')	NaN+i*NaNznp.complex128('nan+nanj')r   zinf+0iz-infz-inf+0iNoneNaT)ids
factorialxc                    d|d}|t           j        k    rd|d<   |rg dndddt          d           g}|t           j        k    rdnddg}t	          t          |          |          sDt          j        t          d	
          5   ||r|gn|fi | d d d            d S # 1 swxY w Y   d S t	          t          |          |          rJ|dk    rDt          j        t          d
          5   ||r|gn|fi | d d d            d S # 1 swxY w Y   d S |dk    ot	          t          |          d          }|rt          j	        d          nt          j
        d          }	t	          t          |          d          rLt          j        |          r8t          j
        |dk    rdnd          }
|dk    rt          j
        d          n|
}	|r ||gfi |d         n ||fi |}t          ||	           d S )NFrZ  r   rm   r   r  r#  r   r  r#  Unsupported data type.*r  rB  In order to use non-integer.*rr  r   rQ  r   r   )r!   rR  rF  r]  r8   rR  r   rK  rc   rs  r  r  rJ  )rE   r  rl   rV  rx  r_  permissible_typestypes_need_complex_extrt  rN  neg_inf_resultr  s               rF   test_factorialx_inf_nanz.TestFactorialFunctions.test_factorialx_inf_nan  s   & //+++BsG 05UOOOO3S$t**:U(2g6G(G(GcSVZDGG%677 	2z1JKKK 6 6
%.A33Q55"5556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6$q''#9:: 	2v?R?Rz1PQQQ 6 6
%.A33Q55"5556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 !I-M<Q3M3MJ 5?Ur}Z000BJuDUDUHDGGS)) Lbhqkk L!#&F2B2BAA!O!O12Q2:e,,,^16OZZ**r**1--JJq<O<OB<O<OF11111s$   BB"%B")DD	D	r  stringc                    t          j        t          d          5  t          j        d|           d d d            n# 1 swxY w Y   t          j        t          d          5  t          j        d|           d d d            n# 1 swxY w Y   t          j        t          d          5  t          j        ddd|           d d d            d S # 1 swxY w Y   d S )Nzargument `extend` must be.*r  r^   )rV  r   Trm   r"  rV  )rR  r   rK  r!   r]  r^  rR  )rE   rV  s     rF   test_factorialx_raises_extendz4TestFactorialFunctions.test_factorialx_raises_extend  s   ]:-JKKK 	0 	0a////	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0]:-JKKK 	1 	1q0000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1]:-JKKK 	B 	BqAT&AAAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	Bs3   ?AA%BBB.CCClevelsr^   r   c                    dfd	fd}t          j         ddg                    }dt          j        d          gdt	          j        dd	
          gdt	          j        ddd	
          gd} |t	          j        ||
          |d                     |t	          j        ||
          |d                     |t	          j        |d|
          |d                    d S )Nr^   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   r^   rU  r  rm   _nest_mes     rF   r  zDTestFactorialFunctions.test_factorialx_array_shape.<locals>._nest_me  s-     AvvxA!,,,rI   c                     t          j         |          t                    }t          |                     t           j                   |j        t           j                             d S )Nrm   r  )rc   r   objectr   r  r  )resnucleusr   r  r  s      rF   rv  zBTestFactorialFunctions.test_factorialx_array_shape.<locals>._check	  sZ    (88Gv666fEEEC CJJrz22JCJrz4J4JKKKKKrI   r   r  r  r#  r   Tr!  rS  r   r  rP   r[  )rc   r   mathr]  r!   r^  rR  )rE   r  r"  rv  rl   exp_nucleusr  s    `    @rF   test_factorialx_array_shapez2TestFactorialFunctions.test_factorialx_array_shape  s8   	- 	- 	- 	- 	- 	-	L 	L 	L 	L 	L 	L HXXq"g00011r 2 23w1"DAAABw1"atDDDEG G
 	w %000+a.AAAw!!5111;q>BBBw!!Qe444k!nEEEEErI   r  dimc                    t          j        d||          }dddd}t          t          j        ||          t          j        |d         |	                     t          t          j        ||          t          j        |d
         |	                     t          t          j        |d|          t          j        |d         |	                     d S )Nr   )r  ndminr#  r   rS  r  r!  r^   r  rP   r   )rc   r   r   r!   r]  r^  rR  )rE   r  r  r"  rl   r   s         rF   test_factorialx_array_dimensionz6TestFactorialFunctions.test_factorialx_array_dimension	  s     HQe3///"$$)!5999Qs333	5 	5 	5*1E:::Qs333	5 	5 	5*1au===Qs333	5 	5 	5 	5 	5rI   levelc                    dfd	 dg|dz
            }dddd}|rt           nt          } |t          j        ||	          t	          j        |d         |
                      |t          j        ||	          t	          j        |d         |
                      |t          j        |d|	          t	          j        |d         |
                     d S )Nr^   c                 4    |dk    r| S  | g|dz
            S r$  rU  r  s     rF   r  zCTestFactorialFunctions.test_factorialx_array_like.<locals>._nest_me$	  s)    AvvxQqS)))rI   r   r  r#  r   rS  r  r!  r  rP   r   r[  )r   r   r!   r]  rc   r   r^  rR  )rE   r  r"  rl   r  rB  r  s         @rF   test_factorialx_array_likez1TestFactorialFunctions.test_factorialx_array_like!	  s   	* 	* 	* 	* 	* 	* HaSE!G$$$",,,1F((G%au555H[^5999	; 	; 	;G&q666H[^5999	; 	; 	;G&q!5999H[^5999	; 	; 	; 	; 	;rI   c                    ||d|rt           nt          fd} | |d                      | |d                      |t          j        d|                      |t          j        ddg|                     d S )NrZ  c                    t          | t          j                  r|                     t          j                  nt          j        |           } t          j        | fi t          j        |fi             t          j        | fi t          j        |fi             t          j        | fddit          j        |fddi           d S )Nrm   r   )	rG  rc   rH  r  r3  r!   r]  r^  rR  )rl   n_refrB  r_  s     rF   rv  z;TestFactorialFunctions.test_factorialx_uint.<locals>._check;	  s    *4Q
*C*CTAHHRX&&&RSEK)!22r22G4Ee4R4Rr4R4RSSSK*13333W5G5T5TQS5T5TUUUK*1888R88*5<<A<<<> > > > >rI   r   r^   r  )r   r   rc   r   )rE   r"  rV  r  rv  rB  r_  s        @@rF   test_factorialx_uintz+TestFactorialFunctions.test_factorialx_uint4	  s    
 //,1F((	> 	> 	> 	> 	> 	> 	uuQxxuuQxxrx'''(((rxAe,,,-----rI   rZ   r2  rS  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 )Nr<   t0=r  Tr!  FrW   )sysplatformr   r}   r!   r]  r  rE   rl   rX   s      rF   test_factorial_accuracyz.TestFactorialFunctions.test_factorial_accuracyG	  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rI      c                 X   t          j        |          }t          |t          j        |d                     t          |t          j        |gd          d                    t          j        dk    rdnd}t          |          }t          |t          j        |d          |           t          |t          j        |gd          d         |           dd	d
}t          |t          j        |fi ||           t          |t          j        |gfi |d         |           d S )NTr!  r   r<   +6=r  FrW   rB  rZ  )r  r]  r   r!   r  r  r}   r   rE   rl   r&  rX   r_  s        rF   test_factorial_int_referencez3TestFactorialFunctions.test_factorial_int_referenceS	  s7    .##7G$5at$D$D$DEEE7G$5qc$F$F$Fq$IJJJ//uuU..!21E!B!B!BNNNN!2A3e!D!D!DQ!GdSSSS 	22!21!;!;!;!;$GGGG!2A3!=!="!=!=a!@tLLLLLLrI   c                     d } |dd            |dd            |dd            |dd	            |d
d            |dd            |dd            |dd            |dd           d S )Nc                    t           j        dk    rdnd}t          t          j        |           ||           t          t          j        | g          d         ||           t          j        t          d          5  t          j        | d	           d d d            n# 1 swxY w Y   t          j        t          d          5  t          j        | gd	           d d d            d S # 1 swxY w Y   d S )
Nr<   r  r  rW   r   `exact=True` only supports.*r  Tr!  )r  r  r   r!   r]  rR  r   rK  )rl   rN  rX   s      rF   rv  zETestFactorialFunctions.test_factorial_float_reference.<locals>._checkg	  sq   LG3355DG-a00(FFFFG-qc2215xdKKKKz1OPPP 1 1!!400001 1 1 1 1 1 1 1 1 1 1 1 1 1 1z1OPPP 3 3!1#T22223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3s$   ?B""B&)B&C--C14C1r   gr?g(\?gc?g333333@g4s@g333333&@gމOAfffff@@g	²Gg     K@gC$JOglS@g }WgX@gX>%`g\CSe@gG=rU  rE   rv  s     rF   test_factorial_float_referencez5TestFactorialFunctions.test_factorial_float_referencef	  s    	3 	3 	3 	t2333t2333t2333t2333t6777t6777t7888t7888x788888rI   c                     d } |dd            |dd            |dd            |d	d
            |dd           d S )Nc                     t           j        dk    rdnd}ddd}t          t          j        | fi |||           t          t          j        | gfi |d         ||           d S )	Nr<   rj  V瞯<FrB  rZ  rW   r   )r  r  r   r!   r]  rl   rN  rX   r_  s       rF   rv  zGTestFactorialFunctions.test_factorial_complex_reference.<locals>._check~	  s    LG3355D I66BG-a66266tLLLLG-qc88R88;XDQQQQQQrI   r  gkﴑ[?rN                ykﴑ[?               @       @yB}ۿ?gH.gK	!@y      -C6?yI{xQrU  r  s     rF    test_factorial_complex_referencez7TestFactorialFunctions.test_factorial_complex_reference}	  s    	R 	R 	R 	t34444y#=>>>>v QRRRRw!56666|&STTTTTTrI   content)z[]z[1]z[1.1]z[NaN]z[NaN+i*NaN]z[NaN, 1]c                    |t           u rt          rt          j        d           |t          j        u r-t          d |D                       rt          j        d           |t          j        k    r-t          d |D                       rt          j        d           ||d|dk    st          |          dk    r|n|d         }t	          j	        |||          }d }|d	k    rI|rGt          j
        t          d
          5  t          j        |fi  d d d            n# 1 swxY w Y   n-t          |j        g d          sFt          j
        t          d          5  t          j        |fi  d d d            n# 1 swxY w Y   nt          |j        d          rL|d	k    rFt          j
        t          d          5  t          j        |fi  d d d            n# 1 swxY w Y   no|r[t          |j        d          sFt          j
        t          d          5  t          j        |fi  d d d            n# 1 swxY w Y   nt          j        |fi }|fd|                                D             }t          |          dk    r|d         n|}|j        r>|d	k    ot          |j        d          }	|	rt          j        n|rt&          nt          j        }t	          j	        |||          }
t)          ||
d           d S d S )Nz+object arrays unsupported in array API modec              3   d   K   | ]+}t          j        |          p|t          |          k    V  ,d S r  rc   r   r{   r(  r  s     rF   	<genexpr>zKTestFactorialFunctions.test_factorial_array_corner_cases.<locals>.<genexpr>	  9      $S$SaRXa[[%AQ#a&&[$S$S$S$S$S$SrI   impossible combinationc              3   P   K   | ]!}t          t          |          d           V  "dS r#  Nr8   rF  r  s     rF   r  zKTestFactorialFunctions.test_factorial_array_corner_cases.<locals>.<genexpr>	  2      &S&Sa|DGGS'A'A&S&S&S&S&S&SrI   rZ  r   r^   r  r  rB  Incompatible options:.*r  r  r  r#  r  r   r  c                 4    g | ]}t          j        |fi S rU  )r!   r]  r(  r  r_  s     rF   r)  zLTestFactorialFunctions.test_factorial_array_corner_cases.<locals>.<listcomp>	  s,    AAA!7$Q--"--AAArI   r  rW   )r  r5   rR  skiprc   r3  anyr  lenr   r   rK  r!   r]  r8   r  rh   r  rs  rf  rJ  rE   r  r  r"  rV  r  rl   r  r  cxrN  r_  s              @rF   !test_factorial_array_corner_casesz8TestFactorialFunctions.test_factorial_array_corner_cases	  s1    F???KEFFFBH$S$S7$S$S$S!S!SK0111BJ3&S&S7&S&S&S#S#SK0111//!AggW):):''HWCu555Y5z1JKKK + +!!**r***+ + + + + + + + + + + + + + +ag77 
	0z1JKKK + +!!**r***+ + + + + + + + + + + + + + +!'3'' 	0Fi,?,?z1PQQQ + +!!**r***+ + + + + + + + + + + + + + + 	0<55 	0z1OPPP + +!!**r***+ + + + + + + + + + + + + + + &q//B//FAAAAqwwyyAAACHHMM#a&&sC v W	)I|AGS/I/I)+V2U**2:x3e<<<Hu====== sH   D!!D%(D% E??FFG  G$'G$H==IIr  )1z1.1z2+2jrz  r{  r|  c           	         ||d}|dk    rJ|rHt          j        t          d          5  t          j        |fi | d d d            d S # 1 swxY w Y   d S t          t          |          dddt          d           g          sHt          j        t          d          5  t          j        |fi | d d d            d S # 1 swxY w Y   d S t          t          |          d          rN|dk    rHt          j        t          d	          5  t          j        |fi | d d d            d S # 1 swxY w Y   d S |t          j        |          ro|dk    ot          t          |          d          }|rt          j	        d
          nt          j
        d          }t          t          j        |fi ||           d S |ret          t          |          d          rHt          j        t          d          5  t          j        |fi | d d d            d S # 1 swxY w Y   d S t          t          j        |fi |t          j        |dz                        d S )NrZ  rB  r  r  r   r  r#  r  r  rr  r   r  r^   )rR  r   rK  r!   r]  r8   rF  rc   r   rs  r  rJ  r   rj  rE   rl   r"  rV  r_  rt  rN  s          rF   "test_factorial_scalar_corner_casesz9TestFactorialFunctions.test_factorial_scalar_corner_cases	  s   
 //Y5z1JKKK + +!!**r***+ + + + + + + + + + + + + + + + + +d1ggS#tDzz'BCC 	Kz1JKKK + +!!**r***+ + + + + + + + + + + + + + + + + +$q''3'' 	KFi,?,?z1PQQQ + +!!**r***+ + + + + + + + + + + + + + + + + +Y"(1++Y I-M<Q3M3MJ4>Ur}Z000BJuDUDUH 1! : :r : :HEEEEE 	K|DGGS11 	Kz1OPPP + +!!**r***+ + + + + + + + + + + + + + + + + + *13333W]1q55I5IJJJJJsG   A		AAB??CC
D**D.1D.6HHHrI  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 )Nr<   +=r  Tr!  FrW   )r  r  r   r}   r!   r^  r  r  s      rF   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rI   c           
         t          j        t          j        t	          t          |dd                    d          }t          |t          j        |d                     t          |t          j        |gd          d                    t          j
        dk    rdnd}t          |          }t          |t          j        |d	          |
           t          |t          j        |gd	          d         |
           d	dd}|dz  dk    rMt          |t          j        |fi ||
           t          |t          j        |gfi |d         |
           d S d S )Nr   r  r^   Tr!  r<   r  r  FrW   rB  rZ  rP   )	functoolsreduceoperatormulr,  r|   r   r!   r^  r  r  r}   r   r  s        rF   test_factorial2_int_referencez4TestFactorialFunctions.test_factorial2_int_reference	  sd    "8<eAq"oo1F1FJJ7G$6q$E$E$EFFF7G$6s$$G$G$G$JKKK//uuU..!3AU!C!C!C$OOOO!3QCu!E!E!Ea!HtTTTT 	22q5A::GW%7%@%@R%@%@tLLLLGW%7%B%Br%B%B1%EDQQQQQQ :rI   c                    d } |dd            |dt          j        d          t          j        dt          j        z            z              |dt          j        d          t          j        dt          j        z            z              |dd            |d	d
            |dd            |dd            |dd           d S )Nc                     d}ddd}t          t          j        | fi |||           t          t          j        | gfi |d         ||           d S )Nr  FrB  rZ  rW   r   )r   r!   r^  r  s       rF   rv  zHTestFactorialFunctions.test_factorial2_complex_reference.<locals>._check
  sq    D I66BG.q77B77MMMMG.s99b99!<hTRRRRRRrI   r   r  rN   rP   rt   r  g^D]?JO?r  y^D]?JO?        y      @      @y&0!:?gSt$gtQ*@y       -C6?yqj?x*)r!   r^  r  r   r   r  s     rF   !test_factorial2_complex_referencez8TestFactorialFunctions.test_factorial2_complex_reference
  s	   	S 	S 	S 	q1q7-a0049Q[3I3IIJJJJrG.r22TYq47{5K5KKLLLLt45555y#>????v OPPPPw!67777|&UVVVVVVrI   c                    |t           j        k    r-t          d |D                       rt          j        d           |t           j        k    r-t          d |D                       rt          j        d           ||d|dk    st          |          dk    r|n|d         }t          j        |||          }d }|dk    rH|rFt          j        t          d	
          5  t          j        |fi  d d d            n# 1 swxY w Y   nt          |j        g d          sFt          j        t          d
          5  t          j        |fi  d d d            n# 1 swxY w Y   nut          |j        ddg          rL|dk    rFt          j        t          d
          5  t          j        |fi  d d d            n# 1 swxY w Y   nt          j        |fi }|fd|                                D             }t          |          dk    r|d         n|}|j        r>|dk    ot          |j        d          }	|	rt           j        n|rt"          nt           j        }t          j        |||          }
t%          ||
d           d S d S )Nc              3   d   K   | ]+}t          j        |          p|t          |          k    V  ,d S r  r  r  s     rF   r  zLTestFactorialFunctions.test_factorial2_array_corner_cases.<locals>.<genexpr>$
  r  rI   r  c              3   P   K   | ]!}t          t          |          d           V  "dS r  r  r  s     rF   r  zLTestFactorialFunctions.test_factorial2_array_corner_cases.<locals>.<genexpr>&
  r  rI   rZ  r   r^   r  rB  r  r  r  r  r  r#  r  c                 4    g | ]}t          j        |fi S rU  )r!   r^  r  s     rF   r)  zMTestFactorialFunctions.test_factorial2_array_corner_cases.<locals>.<listcomp>=
  ,    BBB17%a..2..BBBrI   r  rW   )rc   r3  r  rR  r  r  r  r   r   rK  r!   r^  r8   r  rh   r  rs  rf  rJ  r  s              @rF   "test_factorial2_array_corner_casesz9TestFactorialFunctions.test_factorial2_array_corner_cases
  sw    BH$S$S7$S$S$S!S!SK0111BJ3&S&S7&S&S&S#S#SK0111//!AggW):):''HWCu555Y5z1JKKK , ,"1+++++, , , , , , , , , , , , , , ,ag77 	1z1JKKK , ,"1+++++, , , , , , , , , , , , , , ,!'C:.. 	16Y3F3Fz1PQQQ , ,"1+++++, , , , , , , , , , , , , , , '00R00FBBBB		BBBCHHMM#a&&sC v W	)I|AGS/I/I)+V2U**2:x3e<<<Hu====== s6    C??DD=EE #E  F??GGc           	         ||d}|dk    rJ|rHt          j        t          d          5  t          j        |fi | d d d            d S # 1 swxY w Y   d S t          t          |          dddt          d           g          sHt          j        t          d          5  t          j        |fi | d d d            d S # 1 swxY w Y   d S t          t          |          ddg          rN|dk    rHt          j        t          d	          5  t          j        |fi | d d d            d S # 1 swxY w Y   d S |t          j        |          ro|dk    ot          t          |          d          }|rt          j	        d
          nt          j
        d          }t          t          j        |fi ||           d S  | j        |fddi|}t          t          j        |fi ||d           d S )NrZ  rB  r  r  r   r  r#  r  r  rr  r   rm   rP   r  rW   )rR  r   rK  r!   r^  r8   rF  rc   r   rs  r  rJ  rX  r  s          rF   #test_factorial2_scalar_corner_casesz:TestFactorialFunctions.test_factorial2_scalar_corner_casesH
  s   
 //Y5z1JKKK , ,"1+++++, , , , , , , , , , , , , , , , , ,d1ggS#tDzz'BCC 	Sz1JKKK , ,"1+++++, , , , , , , , , , , , , , , , , ,$q''C:.. 
	S6Y3F3Fz1PQQQ , ,"1+++++, , , , , , , , , , , , , , , , , ,Y"(1++Y I-M<Q3M3MJ4>Ur}Z000BJuDUDUH 21 ; ; ; ;XFFFFF*t*1888R88H 21 ; ; ; ;XERRRRRRs5   A		AAB??CCD,,D03D0rm   r  rt   ic           	      l   t           j        dk    rdnd}t          t          t	          j        ||d                    t	          j        ||d          |           t          t	          j        |g|d                              t                    t	          j        |g|d          |           d S )Nr<   r  r  TrP  FrW   )r  r  r   r}   r!   rR  r  )rE   rl   rm   rX   s       rF   test_factorialk_accuracyz/TestFactorialFunctions.test_factorialk_accuracy`
  s     //uuUg0atDDDEE*1???d	L 	L 	L 	L*A3!4@@@GGNN*A3!5AAA	N 	N 	N 	N 	N 	NrI   r:  c           
         t          j        t          j        t	          t          |d|                     d          }t          |t          j        ||d                     t          |t          j        |g|d          d                    t          j
        dk    rdnd}t          |          }t          |t          j        ||d          |	           t          |t          j        |g|d          d         |	           |dd
d}||z  dk    rOd}t          |t          j        |fi ||	           t          |t          j        |gfi |d         |	           d S d S )Nr   r^   Tr!  r<   gt =r>  FrW   rB  r  r  )r  r  r  r  r,  r|   r   r!   rR  r  r  r}   r   )rE   rl   rm   r&  rX   r_  s         rF   test_factorialk_int_referencez4TestFactorialFunctions.test_factorialk_int_referenceo
  sv    "8<eAq1"oo1F1FJJ7G$6q!4$H$H$HIII7G$6sAT$J$J$J1$MNNN//uuU..!3Aq!F!F!FTRRRR!3QC%!H!H!H!KRVWWWW u	::q5A::DGW%7%@%@R%@%@tLLLLGW%7%B%Br%B%B1%EDQQQQQQ :rI   c           	         d } |ddt          j        ddd                      |ddd            |d	dd
            |ddd            |ddd            |ddd            |ddd            |ddd            |ddd            |ddd            |ddd            |ddd            |ddd            |ddd             |d!dd"           d S )#Nc                     d}|ddd}t          t          j        | fi |||           t          t          j        | gfi |d         ||           d S )Nr>  FrB  r  rW   r   )r   r!   rR  )rl   rm   r   rX   r_  s        rF   rv  zHTestFactorialFunctions.test_factorialk_complex_reference.<locals>._check
  ss    D5I>>BG.q77B774HHHHG.s99b99!<cMMMMMMrI   rN   r   TrP  )rl   rm   r   r   gD!)@g      @gNq53@r  gG`@rI  g     @y             @y            @y      @      @yRsU#[@y      @      y?M,a?y@/n?'?r  gyL_ǚZ?r  yyL_ǚZ?        g333333@gffffffyNV?*V7?g333333y)kh]bg):giߑT@y      -C6?y(5E?WTr!   rR  r  s     rF   !test_factorialk_complex_referencez8TestFactorialFunctions.test_factorialk_complex_reference
  s   	N 	N 	N 	aW/QdCCCDDDDa0111123333c23333s''''W55551"RSSSSf"QRRRR6'VWWWW 67777a%@AAAA"RSSSS#UVVVVA#89999(VWWWWWWrI   c                    |t           j        k    r-t          d |D                       rt          j        d           |t           j        k    r-t          d |D                       rt          j        d           d||d|dk    st          |          dk    r|n|d         }t          j        |||          }d }|d	k    rH|rFt          j        t          d
          5  t          j        |fi  d d d            n# 1 swxY w Y   nt          |j        g d          sFt          j        t          d          5  t          j        |fi  d d d            n# 1 swxY w Y   nut          |j        ddg          rL|d	k    rFt          j        t          d          5  t          j        |fi  d d d            n# 1 swxY w Y   nt          j        |fi }|fd|                                D             }t          |          dk    r|d         n|}|j        r>|d	k    ot          |j        d          }	|	rt           j        n|rt"          nt           j        }t          j        |||          }
t%          ||
d           d S d S )Nc              3   d   K   | ]+}t          j        |          p|t          |          k    V  ,d S r  r  r  s     rF   r  zLTestFactorialFunctions.test_factorialk_array_corner_cases.<locals>.<genexpr>
  r  rI   r  c              3   P   K   | ]!}t          t          |          d           V  "dS r  r  r  s     rF   r  zLTestFactorialFunctions.test_factorialk_array_corner_cases.<locals>.<genexpr>
  r  rI   r   r  r   r^   r  rB  r  r  r  r  r  r#  r  c                 4    g | ]}t          j        |fi S rU  r  r  s     rF   r)  zMTestFactorialFunctions.test_factorialk_array_corner_cases.<locals>.<listcomp>
  r  rI   r  rW   )rc   r3  r  rR  r  r  r  r   r   rK  r!   rR  r8   r  rh   r  rs  rf  rJ  r  s              @rF   "test_factorialk_array_corner_casesz9TestFactorialFunctions.test_factorialk_array_corner_cases
  sy    BH$S$S7$S$S$S!S!SK0111BJ3&S&S7&S&S&S#S#SK0111u77!AggW):):''HWCu555Y5z1JKKK , ,"1+++++, , , , , , , , , , , , , , ,ag77 	1z1JKKK , ,"1+++++, , , , , , , , , , , , , , ,!'C:.. 	16Y3F3Fz1PQQQ , ,"1+++++, , , , , , , , , , , , , , , '00R00FBBBB		BBBCHHMM#a&&sC v W	)I|AGS/I/I)+V2U**2:x3e<<<Hu====== s6   !D  DD>EE!$E!!G  GGc           	         |||d}|dk    rJ|rHt          j        t          d          5  t          j        |fi | d d d            d S # 1 swxY w Y   d S t          t          |          dddt          d           g          sHt          j        t          d          5  t          j        |fi | d d d            d S # 1 swxY w Y   d S t          t          |          ddg          rN|dk    rHt          j        t          d	          5  t          j        |fi | d d d            d S # 1 swxY w Y   d S |t          j        |          ro|dk    ot          t          |          d          }|rt          j	        d
          nt          j
        d          }t          t          j        |fi ||           d S  | j        |fi |}t          t          j        |fi ||d           d S )Nr  rB  r  r  r   r  r#  r  r  rr  r   r  rW   )rR  r   rK  r!   rR  r8   rF  rc   r   rs  r  rJ  rX  )rE   rl   rm   r"  rV  r_  rt  rN  s           rF   #test_factorialk_scalar_corner_casesz:TestFactorialFunctions.test_factorialk_scalar_corner_cases
  s    u77Y5z1JKKK , ,"1+++++, , , , , , , , , , , , , , , , , ,d1ggS#tDzz'BCC 	Sz1JKKK , ,"1+++++, , , , , , , , , , , , , , , , , ,$q''C:.. 
	S6Y3F3Fz1PQQQ , ,"1+++++, , , , , , , , , , , , , , , , , ,Y"(1++Y I-M<Q3M3MJ4>Ur}Z000BJuDUDUH 21 ; ; ; ;XFFFFF*t*13333H 21 ; ; ; ;XERRRRRRs5   A

AA C  CCD--D14D1rS   r  r   c                    |rdgnd}|||d}|dk    rod}t          t          |          d          r|dk     rd}t          j        t          |          5  t          j        |fi | d d d            d S # 1 swxY w Y   d S |dk    rHt          j        t          d	          5  t          j        |fi | d d d            d S # 1 swxY w Y   d S t          j        |fi | d S )
Nr^   r  rQ  r  r   zFor `extend='zero'`.*r  r   zParameter k cannot be zero!)r8   rF  rR  r   rK  r!   rR  )rE   rm   r"  rV  rx  rl   r_  r@  s           rF    test_factorialk_raises_k_complexz7TestFactorialFunctions.test_factorialk_raises_k_complex
  s   
 QCCau77V1CDGGS)) .q1uu-z555 , ,"1+++++, , , , , , , , , , , , , , , , , ,!VVz1NOOO , ,"1+++++, , , , , , , , , , , , , , , , , , q''B'''''s$   A66A:=A:$CCCr}  c                     |rdgnd}|||d}t          j        t          d          5  t          j        |fi | d d d            d S # 1 swxY w Y   d S )Nr^   r  r  r  )rR  r   rK  r!   rR  )rE   rm   r"  rV  rx  rl   r_  s          rF   test_factorialk_raises_k_otherz5TestFactorialFunctions.test_factorialk_raises_k_other  s     QCCau77]:-FGGG 	( 	(q''B'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   A		AAr4  c                    |||d}|r|t          j                    v rrt          j        t          |         g          }t          t          j        |fi |j        t                     t          t          j        |dz   fi |j        t          j
                   t          j        |dz   fi |t          j        t          j                  j        k    sJ t          j        t           |         g          }t          t          j        |fi |j        t          j
                   t          t          j        |dz   fi |j        t                     t          j        |dz   fi |t          j        t          j
                  j        k    sJ d S t          j        t          j        |d          g          }|rt          nt          j        }t          t          j        |fi |j        |           d S )Nr  r^   )r6   keysrc   r   r7   r   r!   rR  r  r1   r3  r-  int32r.  r  getr  )rE   rm   r"  rV  r_  rl   r  s          rF   test_factorialk_dtypez,TestFactorialFunctions.test_factorialk_dtype  s    u77 	CQ38::::3A6788A+A4444:GDDD+AE88R88>III%a!e22r22RXbh5G5G5KKKKK3A6788A+A4444:BHEEE+AE88R88>GGG%a!e22r22RXbh5G5G5KKKKKKK371==>??A $3FFE+A4444:EBBBBBrI   c                    t          j        t           j        dddt           j        g          }t          j        t           j        dddt           j        g          }t          t	          j        |d          |           t          j        t          d          5  t	          j        |d	           d d d            d S # 1 swxY w Y   d S )
Nr^   rP   r   rT   Fr!  r  r  T)	rc   r   r   r   r!   r]  rR  r   rK  rE   r  rN  s      rF   test_factorial_mixed_nan_inputsz6TestFactorialFunctions.test_factorial_mixed_nan_inputs)  s    HbfaArv.//8RVQ1bf566W&q666AAA]:-KLLL 	- 	-at,,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   B>>CC)<rO  rP  rQ  rX  rR  rS  r  r`  rc  rg  rn  rw  rc   r   r  rs  r   
datetime64r!   r]  r^  rR  r  r  r|   r  r{   int8int16r  r3  uint8uint16uint32uint64r  r  r  r  r,  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rU  rI   rF   rN  rN  a  sC       ' ' ' [^RRRT T= =T T= [S,,,//[WtUm44: : 54 0/: [WtUm44S S 54S [S"4"4"455T T 65T& [VaW--[Y55) ) 65 .-)4 [WtUm44[X	':;;[FJBJu%%rvr	'9=2=;T;TFBFRK"&26'B,mbmE>R>R	

 
 
  
 
 [		G.0BC 2 2	 
 
 <; 54"2B [X3'ABBB B CBB [XuuQ{{33[WtUm44F F 54 43F< [WtUm44[Wc27BHbh
")RY	'   [UEE!QKK005 5 10	  545 [WtUm44[WeeAqkk22; ; 32 54;" [WrxBIry&QRR[^RRRT T. .T T SR.  [S%%C"4"455	H 	H 65	H [S!T%%2,,//$$uuRb7I7I2J2JJL LM ML LM"9 9 9.U U U  [Wrx')}f'> ? ?[X	':;;[WtUm44[UEE!QKK00[	aS3%"&BFRVb[$8#9BFA;GFFF   
)> )>  10 54 <;? ?)>V [X	':;;[WtUm44[S1c62626BF2I;Mt"T!Q!Q!Q  S SK KS S 54 <;K. [S%%C"4"455	I 	I 65	I [S!T%%2,,//$$uuRb7I7I2J2JJL LR RL LR,W W W* [Wrx')}f'> ? ?[X	':;;[WtUm44[UEE!QKK00[	aS3%"&BFRVb[$8#9BFA;GFFF   
$> $>  10 54 <;? ?$>L [X	':;;[WtUm44[S1c62626BF2I;Mt"T!Q!Q!Q  S SS SS S 54 <;S( [S%%1++.. [S%%R"5"566	N 	N 76 /.	N [S$$uuQ{{"3"3r2h">??[S!T%%2,,//$$uuRb7I7I2J2JJL LR RL L @?R0X X X< [Wrx')}f'> ? ?[X	':;;[WtUm44[UEE!QKK00[	aS3%"&BFRVb[$8#9BFA;GFFF   
$> $>  10 54 <;? ?$>L [X	':;;[WtUm44[S%%1++..[S1c62626BF2I;Mt"T!Q!Q!Q  S SS SS S /. 54 <;
S( [WtUm44[^RRRT T[S2tQVS"&"IJJ( ( KJT T 54(  [WtUm44[^RRRT T [S8]R]5-A-A"B"*E!2  4 4( (4 4T T 54( [^RRRT T[S%%2,,//C C 0/T TC(- - - - -rI   rN  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/?!ۿ)rJ  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 )Nr3  )r   r!   re  r   )rE   rM  r  r#  frss        rF   test_fresnel_valueszTestFresnel.test_fresnel_values2  s>    @ GOA&&''!#uaV}}a88888rI   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   r^   rm  )r!   fresnel_zerosr   r   re  )rE   szoczovals1vals2s        rF   test_fresnel_zeroszTestFresnel.test_fresnel_zerosW  s    (++S!#"' ): ): ): #; #; <=	> 	> 	> 	"#"' ): ): ): #; #; <=	> 	> 	> $$Q'$$Q'!%"---!%"-----rI   c                 ~    t          j        d          \  }}t          j        d          }t          ||d           d S )NrT   r4  )r!   r  fresnelc_zerosr   )rE   r  r  frcs       rF   test_fresnelc_zeroszTestFresnel.test_fresnelc_zerosj  >    (++S$Q''!#c"-----rI   c                 ~    t          j        d          \  }}t          j        d          }t          ||d           d S )Nr   r4  )r!   r  fresnels_zerosr   )rE   r  r  r  s       rF   test_fresnels_zeroszTestFresnel.test_fresnels_zeroso  r#  rI   N)rO  rP  rQ  rR  rS  r  rc   r   r  r  r"  r&  rU  rI   rF   r  r  1  s        [Y7=	

	
 	&,)/*	c
&$;)  >9 9? >9. . .&. . .
. . . . .rI   r  c                      e Zd Zd Zd Zd Zed             Zed             Zd Z	d Z
ej                            dej         ej        gej        ej        gfd	d
gej         ej        gf edd           ej        dej                  f eddd           ej        dej                  fdgej        gfg          d             ZdS )	TestGammac                 N    t          j        d          }t          |d           d S rh  )r!   rj  r   )rE   gams     rF   rk  zTestGamma.test_gammav  s'    mASrI   c                     t          j        d          }t          t          j        d                    }t	          ||d           d S )Nr   r3  )r!   rp  r   rj  r   )rE   gamlnlngams      rF   rq  zTestGamma.test_gammalnz  s@    ""GM!$$%%E%*****rI   c                 |    t          j        dd          }t          j        dd          }t          ||d           d S )Nr   r3  )r!   rm  gammaincinvr   )rE   gccinvgcinvs      rF   rn  zTestGamma.test_gammainccinv  s>    %b,,#Br**F5+++++rI   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 )
NrQ   r^   rS  g?g`	\;r  r+  gmb<g      &@)r!   r/  gammaincr   rE   rL  r  s      rF   test_gammaincinvzTestGamma.test_gammaincinv  s    2&&R""Ac!$$$R&&$:;;D!R0000A5rBBBB$JKKD!R000000rI   c                     dt          j        dd          dt          j        dd          dg}|D ]>}t          j        d|          }t          j        d|          }t          ||d           ?d S )	Nr5  r   gCs?r^   g^F    ?rQ   r   rW   )rc   r  r!   r/  r3  r   )rE   ptsxprL  r  s        rF   test_975zTestGamma.test_975  s    
 |D!$$l|D!$$l4  	/ 	/B#B++A a((AAr.....	/ 	/rI   c                 ~    t          j        d          }dt          j        d          z  }t          ||d           d S )Nr3  r^   )r!   r  rj  r   )rE   rgamrlgams      rF   r  zTestGamma.test_rgamma  s=    ~a  '-"""Dq)))))rI   c                 J    t          t          j        d          d           d S )NrS   r   )r   r!   r  rD   s    rF   test_infinityzTestGamma.test_infinity  s"    W^B''+++++rI   z
x,expectedru  r   ir       i c   rI  gP²Zdbc                 J    t          t          j        |          |           d S r  )r   r!   rj  r  s      rF   
test_poleszTestGamma.test_poles  s$      	7=++X66666rI   N)rO  rP  rQ  rk  rq  rn  r9   r5  r9  r  r>  rR  rS  r  rc   r   r   r|   fullrB  rU  rI   rF   r(  r(  u  s[         + + +
, , ,
 	1 	1 	1 
/ 
/ 
/* * *
, , , [ vgrv 01C[BF7BF+,U3]]GBGB//0U5#r""GBGB$7$78$%x0	
 7 7 7 7 7rI   r(  c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )
TestHankelc                 v    t          t          j        dd          t          j        dd           d           d S Nra  rP   r   rm  )r   r!   r  rD   s    rF   
test_negv1zTestHankel.test_negv1  5    GOBq11GOAa4H4H3H"MMMMMrI   c                     t          j        dd          }t          j        dd          t          j        dd          dz  z   }t	          ||d           d S Nr^   rG  rJ  r3  )r!   r  r  rC  r   )rE   hank1hankrls      rF   r  zTestHankel.test_hankel1  sR    "%%*Qr""WZ"%5%5b%88E&+++++rI   c                 v    t          t          j        dd          t          j        dd           d           d S rG  )r   r!   r  rD   s    rF   test_negv1ezTestHankel.test_negv1e  7    G,R22W5Ea5J5J4JBOOOOOrI   c                     t          j        dd          }t          j        dd          t          d          z  }t	          ||d           d S )Nr^   rG  y       r3  )r!   r  r  r   r   )rE   hank1ehankrles      rF   r  zTestHankel.test_hankel1e  sH    !!B''/!B''D		1F71-----rI   c                 v    t          t          j        dd          t          j        dd           d           d S rG  )r   r!   r  rD   s    rF   
test_negv2zTestHankel.test_negv2  rI  rI   c                     t          j        dd          }t          j        dd          t          j        dd          dz  z
  }t	          ||d           d S rK  )r!   r  r  rC  r   )rE   hank2hankrl2s      rF   r  zTestHankel.test_hankel2  sR    "%%:a##gj2&6&6r&99E'!,,,,,rI   c                 v    t          t          j        dd          t          j        dd           d           d S rG  )r   r!   r  rD   s    rF   
test_neg2ezTestHankel.test_neg2e  rP  rI   c                 |    t          j        dd          }t          j        dd          }t          ||d           d S )Nr^   rG  r3  )r!   r  r   )rE   hank2ehankrl2es      rF   test_hankl2ezTestHankel.test_hankl2e  s>    !!B''#Ab))F8A.....rI   c                     t          j        dd          }t          j        |j                  sJ t          j        |j                  sJ d S rA   )r!   r  rc   r   r   isposinfrK  rE   r  s     rF   test_hankel2_gh4517zTestHankel.test_hankel2_gh4517  sI    oa##x!!!!!{38$$$$$$$rI   N)rO  rP  rQ  rH  r  rO  r  rU  r  rZ  r^  rb  rU  rI   rF   rE  rE    s        N N N, , ,
P P P. . .
N N N- - -
P P P/ / /
% % % % %rI   rE  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 rK  )r!   h1vpjvpyvpr   )rE   h1h1reals      rF   	test_h1vpzTestHyper.test_h1vp  R    \!B+a##gk!B&7&7&::Bva(((((rI   c                     t          j        dd          }t          j        dd          t          j        dd          dz  z
  }t	          ||d           d S rK  )r!   h2vprg  rh  r   )rE   h2h2reals      rF   	test_h2vpzTestHyper.test_h2vp  rl  rI   c                 B   t          t          j        dd          dd           t          t          j        dd          dd           t          j        d	g d
          }t          j        g d          }t          ||d           t          j        d	t          j        g d
          dz             }t          ||                    t                    d           g d}g d}t          j        ||          }g d}t          ||d           t          j        t          j        |gdz            |          }t          |t          j        |gdz            d           t          t          t          j        t          j        |gdz            ddg           d S )Nr  r   Qvo?r   rW   r   r   r  r   )g      rS   r   r^   r]  )g̷?g3|t-Ք?r   go?g{h?rA  r   r]  r  )r   r^   r   )r   gc?rs  rP   r   r^   )
r   r!   hyp0f1rc   r   r  rB  vstackassert_raisesrK  )rE   r  rN  r  x2s        rF   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N29bTAX..3329hZ!^445AAAAj'.iq))Aq6	3 	3 	3 	3 	3rI   c                 P    t          j        dd          }t          |d           d S )N皙?y      ?      ?y;EG?uM?)r!   ru  r   ra  s     rF   test_hyp0f1_gh5764zTestHyper.test_hyp0f1_gh5764  s,     nS,//C!LMMMMMrI   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 )jNrG  rH  g?rR   )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 ?ra  )r!   r  r   r   r   r[  )rE   hyp1ref_datar\  r]  r#  rN  r  s           rF   r  zTestHyper.test_hyp1f1  s,   ~bB''D"4Q777  e
OOOe
NNNe
 NMMe
 MLL	e

 POOe
 NMMe
 NMMe
 NMMe
 POOe
 MLLe
 ONNe
 NMMe
 ONNe
 ONNe
 MLLe
  MLL!e
" NMM#e
$ ONN%e
& ONN'e
( NMM)e
* MLL+e
, ONN-e
. ONN/e
0 NMM1e
2 MLL3e
4 ONN5e
6 ONN7e
8 POO9e
: POO;e
< POO=e
> ONN?e
@ POOAe
B ONNCe
D NMMEe
F NMMGe
H NMMIe
J ONNKe
L MLLMe
N MLLOe
P MLLQe
R ONNSe
T ONNUe
V ONNWe
X NMMYe
Z MLL[e
\ QPP]e
^ POO_e
` ONNae
b NMMce
d POOee
f NMMge
h MLLie
j ONNke
l POOme
n ONNoe
p ONNqe
r ONNse
t MLLue
v MLLwe
x ONNye
z NMM{e
| ONN}e
~ NMMe
@ ONNAe
B ONNCe
D QPPEe
F POOGe
H NMMIe
J NMMKe
L POOMe
N ONNOe
P ONNQe
R ONNSe
T ONNUe
V ONNWe
X ONNYe
Z NMM[e
\ NMM]e
^ ONN_e
` ONNae
b ONNce
d NMMee
f POOge
h NMMie
j NMMke
l POOme
n QPPoe
p NMMqe
r ONNse
t ONNue
v ONNwe
x NMMye
z ONN{e
| ONN}e
~ NMMe
@ MLLAe
B ONNCe
D ONNEe
F POOGe
H ONNIe
 e eN ' 	< 	<NAa(^Aa**FC6)**83d:;;;;	< 	<rI   c                     t          j        ddd          }t          j        ddd          }t          ||d           d S )Nr   r]  g7B.g|:B.r4  r!   r  r   )rE   r~  hyp2s      rF   test_hyp1f1_gh2957zTestHyper.test_hyp1f1_gh2957  s@    ~c388~c388D$+++++rI   c                 T    t          j        ddd          }t          |dd           d S )Nr   r]  ig<`?r4  r  )rE   hyps     rF   test_hyp1f1_gh2282zTestHyper.test_hyp1f1_gh2282  s.    nS#u--C!5r:::::rI   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   r^   r]  |Gz?r  g?g|Gzr   r  rP   r  r{  )r   r  r]  r  gYi2?ra  r   g433333?rN   r3  r   rS   r  r   g      ?r         @g      gUUUUUUտg  @gUUUUUU?g)r]  r  r         $gEciH!@)r  r   r^   r  gzG?)rP   ra  r^   r  gy&1|)r  r   r^   r  g"nN%@?)rP   re  r^   r  g!J)rS  |      %@rY  gzS;)rS  r  g      %rY  g[B.VP<test #%derr_msg)r   r   r	   r
   r!   rj  r   r   r  r  r   )	rE   r   r   r\  r]  r#  r  rb  cvs	            rF   r  zTestHyper.test_hyp2f1  sf    !S&'#o*>*>">?!S'6&++#561c6#e**,-MMMCS1c'll31a]1e 4 44}S!!"$+M#$6$678 5"T"XXe 4 44}Y''(*1-	*B*BCD 5"T"XXe 4 44}Y''(*1-	*B*BCD wGM$///'-2H2HH}T""#%,]8%<%<=>
 ;::   &&&&&&GH9
< #,F"3"3 	B 	BA1aA1a++BAq*q.AAAAA	B 	BrI   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 )Nr^   rG  r:  g D?rR   )rH  r  333333?g)r]  g	@rI  g	r   rP   r4  )	r!   hyperur   r   r   r	   r  rj  r   )rE   val1r\  r]  rM  hypuhprls          rF   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/////rI   c                 P    t          t          j        ddd          dd           d S )Nr^   r]  g3333334@g(¨?r4  )r   r!   r  rD   s    rF   test_hyperu_gh2287zTestHyper.test_hyperu_gh2287  s3    GN1c4880"	6 	6 	6 	6 	6rI   N)rO  rP  rQ  rk  rq  ry  r|  r  r  r  r  r  r  rU  rI   rF   rd  rd    s        ) ) )
) ) )
3 3 34N N Nr< r< r<h, , ,
; ; ;"B "B "BH0 0 06 6 6 6 6rI   rd  c                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0d/ Z1d0 Z2d1 Z3dUd5Z4e5j6        7                     e8j9                    d6k    d78          d9             Z:e5j6        7                     e8j9                    d6k    d78          d:             Z;d; Z<d< Z=e5j6        j>        d=             Z?d> Z@d? ZAd@ ZBdA ZCdB ZDdC ZEdD ZFdVdFZGdG ZHdH ZIdI ZJdJ ZKdK ZLdL ZMdM ZNdN ZOdO ZPdP ZQdQ ZRdR ZSdS ZTdT ZUd4S )W
TestBesselc                     t          t          j        d                    }t          |t          ddg          d           d S )Nr  gbɃ?gΝJ ֿr3  )r   r!   r  r   )rE   it0s     rF   r  zTestBessel.test_itj0y0  sM    GN2&&''!&(<=>>	
 	
 	
 	
 	
rI   c                     t          t          j        d                    }t          |t          ddg          d           d S )Nr  gbqTtt?g/]ooۿr3  )r   r!   r  r   )rE   it2s     rF   r  zTestBessel.test_it2j0y0  sM    GOB''((!(*>?@@	
 	
 	
 	
 	
rI   c                 r    t          t          j        dd          t          j        dd                     d S Nr   rP   ra  )r   r!   r  rD   s    rF   test_negv_ivzTestBessel.test_negv_iv  s.    WZ!__gjA&6&677777rI   c                 z    t          j        d          }t          j        dd          }t          ||d           d S NrG  r   r3  )r!   r  r  r   rE   ozozrs      rF   r  zTestBessel.test_j0  8    Z^^j2Bs1%%%%%rI   c                 z    t          j        d          }t          j        dd          }t          ||d           d S NrG  r^   r3  )r!   r  r  r   rE   o1o1rs      rF   r  zTestBessel.test_j1  r  rI   c                 R    t          j        dd          }t          |dd           d S )Nr^   r  ;x?r3  )r!   r  r   )rE   jnnrs     rF   r  zTestBessel.test_jn  s,    z!BD!5a88888rI   c                 v    t          t          j        dd          t          j        dd           d           d S rG  )r   r!   r  rD   s    rF   test_negv_jvzTestBessel.test_negv_jv  3    GJr!,,wz!A.>CCCCCrI   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   rG  g
Ye?)UUUUUU?:0yE>g˿+>)r  r`   g)%->)g@r`   g5c)!9)r  r:  g%,Ϳr3  r  r  )r  r!   r  r   )rE   r   r   rb  r  rL  ycs          rF   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rI   c                 v    t          t          j        dd          t          j        dd           d           d S rG  )r   r!   r  rD   s    rF   test_negv_jvezTestBessel.test_negv_jve  5    GK1--Aa0@0@/@"EEEEErI   c                    t          j        dd          }t          |dd           t          j        dd          }d}t          j        d|          t	          t          |j                             z  }t          ||d           d S )Nr^   r  r  r3  ?      ?)r!   r  r   r  r   r[  rK  )rE   jvexpjvexp1rM  jvexprs        rF   r  zTestBessel.test_jve  sz    Ab!!E"6q999Qu%%Aac!&kk\!2!22F6!,,,,,rI   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   r^   )go@.=@gzj,[@glN!@g5/ D'@gh>-@rN   gW@g0@gQX$@g*@g8*5{x0@r]   )gEk[@g~Cju]@gYrʝ^@g, `@gf	`@rV   rW   -  )gts@g&ǭr3t@gWt@g,$Y&u@gu@)r!   jn_zerosr   r   r   )rE   jn0jn1jn102jn301s        rF   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rI   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   rs   i  g;@rV   rW   i  g8v@i+  gׂMm@rS  gxi@g	,@gи{>@i  r   )gUDX@g!@g*HS@gz5 @g@2;@r  )r!   r  r   r   )rE   r  jn10jn3010s       rF   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rI   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 )Nr^   rP   rU  )rl   r  r  s     rF   jnpz(TestBessel.test_jnjnp_zeros.<locals>.jnp,  s/    Bqs1II1Q3q		)1,,rI   r^   rZ   r   rR  r*  zInvalid t return for nt=%d)r!   r  r|   jnjnp_zerosrI  r   AssertionError)rE   r  ntrM  rl   r7  tzznnttr  s             @rF   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rI   c                     t          j        dd          }t          |t          g d          d           t          j        dd          }t	          t          j        d|          dd           d S )	Nr^   r   g(yu?gOXeS@ga!@gxi'@g'Nw(-@rN     r   r  r*  )r!   	jnp_zerosr   r   r   rg  )rE   r  s     rF   test_jnp_zeroszTestBessel.test_jnp_zeros8  s    !$$!#u .: .: .: (; (; <=		> 	> 	>
 A&&C--qu======rI   c           
          t          j        dd          }t          |t          g d          t          g d          t          g d          t          g d          fd           d S )Nr^   r   r  r  )"@g+@g-9(1!@gȘ'@g>tA}-@)g0v@gjt@gH.?$@g}"O*@gGŧp0@)r!   
jnyn_zerosr   r   )rE   jnzs     rF   test_jnyn_zeroszTestBessel.test_jnyn_zerosB  s     1%%!#u .: .: .: (; (;
 (- .: .: .: (; (;
 (- .: .: .: (; (;
 (- .: .: .: (; (;'<& =>'	? 	? 	? 	? 	?rI   c                     t          j        dd          }t          j        dd          t          j        dd          z
  dz  }t          ||d           d S )NrP   r^   r   rS  )r!   rg  r  r   )rE   jvprimjv0s      rF   test_jvpzTestBessel.test_jvpY  sN    Qq!!z!Awz!A.1F3r*****rI   c                 z    t          j        d          }t          j        dd          }t          ||d           d S r  )r!   r  r  r   )rE   ozkozkrs      rF   r  zTestBessel.test_k0^  8    jnnz!BCQ'''''rI   c                 z    t          j        d          }t          j        dd          }t          ||d           d S r  )r!   r  r  r   )rE   ozkeozkers      rF   r  zTestBessel.test_k0ec  8    {2Ab!!Dq)))))rI   c                 z    t          j        d          }t          j        dd          }t          ||d           d S r  )r!   r  r  r   )rE   o1ko1krs      rF   r  zTestBessel.test_k1h  r  rI   c                 z    t          j        d          }t          j        dd          }t          ||d           d S r  )r!   r  r  r   )rE   o1keo1kers      rF   r  zTestBessel.test_k1em  r  rI   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   r^   r   rP   r   r  r   rN   r   rT   r4  r3  g      H@)rc   ri   r!   jacobir   r#  r   )
rE   r\  r]  P0P1P2P3cpp2cp3cs
             rF   test_jacobizTestBessel.test_jacobir  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:::::rI   c                 R    t          j        dd          }t          |dd           d S )Nr   r  _2?r3  )r!   r  r   )rE   kn1s     rF   r  zTestBessel.test_kn  s,    j2C 2155555rI   c                 r    t          t          j        dd          t          j        dd                     d S Nr   r<  r  r   r!   r  rD   s    rF   test_negv_kvzTestBessel.test_negv_kv  s0    WZS))7:dC+@+@AAAAArI   c                 R    t          j        dd          }t          |dd           d S )Nr   r  r  rS  r!   r  r   )rE   kv0s     rF   test_kv0zTestBessel.test_kv0  s,    j2C!3R88888rI   c                 R    t          j        dd          }t          |dd           d S )Nr^   r  gKދ@rS  r  )rE   kv1s     rF   test_kv1zTestBessel.test_kv1  ,    j3C!2B77777rI   c                 R    t          j        dd          }t          |dd           d S )NrP   r  g)lHH@rS  r  )rE   kv2s     rF   test_kv2zTestBessel.test_kv2  r  rI   c                 L    t          t          j        dd          d           d S )Nr?  r^   g.Ք"H)r   r!   r  rD   s    rF   test_kn_largeorderzTestBessel.test_kn_largeorder  s%    
2q))+ABBBBBrI   c                 L    t          t          j        dd          d           d S )Nr   g =`XCr  rD   s    rF   test_kv_largeargzTestBessel.test_kv_largearg  s$    WZ4((!,,,,,rI   c                 r    t          t          j        dd          t          j        dd                     d S r  )r   r!   r  rD   s    rF   test_negv_kvezTestBessel.test_negv_kve  s0    W[c**GKc,B,BCCCCCrI   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  r3  r  )r!   r  r  r   r   )rE   kve1r
  rM  kve2r  s         rF   r  zTestBessel.test_kve  s    {1R  j2s2ww&DQ'''{1Qj1ooc!ff$DQ'''''rI   c                 ~    d}t          t          j        d|           t          j        d|d          d           d S )Nr<  r^   r   rl   rS  )r   r!   r  kvp)rE   rM  s     rF   test_kvp_v0n1zTestBessel.test_kvp_v0n1  s=    WZ!__,gk!A.C.C.CRHHHHHrI   c                     d}d}t          j        |dz   |           ||z  t          j        ||          z  z   }t          j        ||d          }t          ||d           d S )Nr   r<  r^   r  rS  r!   r  r  r   rE   rb  rM  xcr  s        rF   test_kvp_n1zTestBessel.test_kvp_n1  sj    j1Q!A#gj1oo"55K!q!!!B2&&&&&rI   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<  rP   r^   r  rS  r  r  s        rF   test_kvp_n2zTestBessel.test_kvp_n2  s    d1a4ik1a4'*Qq//1GJqs14E4Ea4GGK1"""B2&&&&&rI   c                 z    t          j        d          }t          j        dd          }t          ||d           d S r  )r!   r;  r@  r   r  s      rF   r<  zTestBessel.test_y0  r  rI   c                 z    t          j        d          }t          j        dd          }t          ||d           d S r  )r!   rQ  r@  r   r  s      rF   r>  zTestBessel.test_y1  r  rI   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 )NrP   r^   rB  r   rI  )r!   y0_zerosr   r   r[  rC  )rE   yoypozozpor  allvals          rF   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GrI   c                     t          j        d          }t          |t          dg          t          dg          fd           d S )Nr^   r  gѮBO?r   )r!   y1_zerosr   r   )rE   rQ  s     rF   test_y1_zeroszTestBessel.test_y1_zeros  sC    a  !"eWI&6&6ugY7G7G%HKKKKKrI   c                     t          j        dd          }t          |t          dg          t          dg          fd           d S )Nr^   r'  yL
F%u?!rh?y;OnгY?r   )r!   	y1p_zerosr   r   )rE   y1ps     rF   test_y1p_zeroszTestBessel.test_y1p_zeros  sV    !,,,!M?##UO+<%=%=>	
 	
 	
 	
 	
rI   c                     t          j        dd          }t          |t          ddg          d           t          j        dd          }t	          |g dd	           d S )
NrN   rP   g3@g(A&"@r   r  )g]E.+"|@gH(|@gff|}@g&b`~@gHO_~@r  rW   )r!   yn_zerosr   r   r   )rE   ans     rF   test_yn_zeroszTestBessel.test_yn_zeros  s|    a""!"UGW+=%>%>qAAAc!$$ 4 4 4
 #	% 	% 	% 	% 	% 	%rI   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   rP   gQhվ@gzN@rT   +   r   r  r*  r  r  )r!   	ynp_zerosr   r   r   rh  rE   aos     rF   test_ynp_zeroszTestBessel.test_ynp_zeros  s    q##!"UJ
+C%D%DQGGGr!$$B++QU;;;;s1%%C,,ad;;;;;;rI   c                 z    t          j        dd          }t          t          j        d|          dd           d S )Nr  r   r   r>  r*  )r!   r<  r   rh  r=  s     rF   test_ynp_zeros_large_orderz%TestBessel.test_ynp_zeros_large_order  s;    s1%%C,,ae<<<<<<rI   c                 R    t          j        dd          }t          |dd           d S Nr^   r  5,1
r3  )r!   r@  r   )rE   yn2ns     rF   rA  zTestBessel.test_yn  s,    z!BD!4Q77777rI   c                 V    t          j        dd          }|t          j         k    sJ d S )Nr\   r^   )rB   r@  rc   r   )rE   observeds     rF   test_yn_gh_20405zTestBessel.test_yn_gh_20405  s.    9S!$$BF7""""""rI   c                 v    t          t          j        dd          t          j        dd           d           d S rG  )r   r!   rC  rD   s    rF   test_negv_yvzTestBessel.test_negv_yv  r  rI   c                 R    t          j        dd          }t          |dd           d S rC  )r!   rC  r   )rE   yv2s     rF   rD  zTestBessel.test_yv  s,    j2C 3A66666rI   c                 v    t          t          j        dd          t          j        dd           d           d S rG  )r   r!   rF  rD   s    rF   test_negv_yvezTestBessel.test_negv_yve   r  rI   c                     t          j        dd          }t          |dd           t          j        dd          t	          d          z  }t          j        dd          }t          ||d           d S )Nr^   r  rD  r3  r  rS   )r!   rF  r   rC  r   )rE   yve2yve2ryve22s       rF   rG  zTestBessel.test_yve  sk    {1R  D!4Q777
1U##CGG+Ae$$E%*****rI   c                     t          j        dd          t          j        dd          z
  dz  }t          j        dd          }t          ||d           d S )Nr^   r  r   r   rP   rS  )r!   rC  rh  r   )rE   yvpryvp1s      rF   test_yvpzTestBessel.test_yvp
  sR    
1R  7:a#3#33S8{1R  !$tB/////rI   c              #      K   g d}g d}t          j        ||          E d{V  t          j        dt          dd          z   dg          E d{V  dS )z>Yield points at which to compare Cephes implementation to AMOS)ir        4r  r  r  r   r   {G(@r   r  )ir  rS   r   r        i@g     y@g     Ă@g@  i'  Nr   ir`  r  )	itertoolsproductr   )rE   rb  rM  s      rF   _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BrI   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 )NrA  u <7~r   )r  rX   rb   )	r_  r{   rc   r  r   r[  r   rK  r   )rE   r  f2rX   rb   r  rb  rM  c1c2c3s              rF   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; ; ; ;	; 	;rI   ppc64lezfails on ppc64lerD  c                 `    |                      t          j        t          j        dd           d S )Nr`   u5% r?  )rg  r!   r  r  rD   s    rF   test_jv_cephes_vs_amosz!TestBessel.test_jv_cephes_vs_amos*  +     	!!'*gju6!RRRRRrI   c                 `    |                      t          j        t          j        dd           d S )Nr`  rj  r?  rg  r!   rC  r@  rD   s    rF   test_yv_cephes_vs_amosz!TestBessel.test_yv_cephes_vs_amos/  rl  rI   c                 h    d }|                      t          j        t          j        dd|           d S )Nc                 (    t          |           dk    S )Nr+  )r[  )rb  rM  s     rF   skipperzDTestBessel.test_yv_cephes_vs_amos_only_small_orders.<locals>.skipper5  s    q66B;rI   r`  rj  )rX   rb   r  rn  )rE   rr  s     rF   (test_yv_cephes_vs_amos_only_small_ordersz3TestBessel.test_yv_cephes_vs_amos_only_small_orders4  sG    	 	 	!!'*gju6'. 	" 	0 	0 	0 	0 	0rI   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>rj  r?  )rc   r  rg  r!   r  rD   s    rF   test_iv_cephes_vs_amosz!TestBessel.test_iv_cephes_vs_amos:  s    [X&&& 	V 	V%%gj'*4f%UUU	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	Vs   .AAAc                    d}t           j                            d           t           j                            d|          dt           j                            d|          z  z  }t           j                            d|          dt           j                            d|          z  z  }t           j                            d|          d	k    }||                             t           j                  ||<   t          j        d
          5  t          j	        ||          }t          j	        ||dz             }t           j
        |t          |          dk    <   t           j
        |t          |          dk    <   d	|t          |          dk     <   d	|t          |          dk     <   t          ||z  dz
            }d	|t          j        |          <   d d d            n# 1 swxY w Y   t          j        |          }t          ||         dk     ||         ||         t          j	        ||         ||                   t          j	        ||         ||         dz             f           d S )Ni@B r^   r   rS   rP   r  r  r3  r   r  r  rA  rb  gYngH׊>)rc   ri   ru   r  r  r  r3  r  r!   r  r   r[  r   argmaxr   )	rE   Nrb  r  imskrd  re  dcrm   s	            rF    test_iv_cephes_vs_amos_mass_testz+TestBessel.test_iv_cephes_vs_amos_mass_test>  sD   
	qIS!$$RY->->qq->-I-I'IIIS!$$RY->->qq->-I-I'II	!!!!!,,1D'..**$[X&&& 	! 	!Aq!!BAqt$$B #%&Bs2ww"$&Bs2ww#$Bs2ww #$Bs2ww RUQYB Brx||	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! IbMM 	qEDLqT1Q4AaD!A$//AaD!A$r'1J1JK	
 	
 	
 	
 	
s   CG  G$'G$c                     |                      t          j        t          j        dd           |                      t          j        t          j        dd           d S )Nr  rj  r?  )rg  r!   r  r  rD   s    rF   test_kv_cephes_vs_amosz!TestBessel.test_kv_cephes_vs_amos^  sJ    !!'*gjt&!QQQ!!'*gjt&!QQQQQrI   c                     t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           d S )	Nr   rN   gP?r  r\  g~Omʒ?gY8E@@gKSn)r   r!   r  rD   s    rF   test_ticket_623zTestBessel.test_ticket_623b  s_    
1a((*=>>>
3--/ABBB
3	224GHHHHHrI   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 BesselsrS   r^   gl)ܿr  gPj?gk?g%E*2ig敋?gw--`?gÉB?gW?r  g޴?gz|?a?gpx%?y      ?        y      ?      ?yYD?`{1wy6x?B]#Ӯ?y ?b>?y.}9d?8kؿy      ?333333?r  y333333?      ?rJ  N)r   r!   r  rC  r  r  r  r   rF  r  r  r  r  rD   s    rF   test_ticket_853zTestBessel.test_ticket_853g  s    	
2q))+>???
2q))+=>>>
2q))+=>>>
2q))+=>>>
2q))+=>>>
2q))+=>>>
2q))+=>>>
2q))+<===
4++-CDDD
4++-?@@@
4++->???
4++-?@@@
2t,,.ABBB
2t,,.@AAA
2t,,.@AAA
2t,,.@AAA
2t,,.@AAA
2t,,.@AAA
2t,,.@AAA
2t,,.?@@@
4..0FGGG
4..0UVVV
4..0BCCC
4..0UVVV
4..0ABBB
4..0RSSS
4..0BCCC
4..0RSSSD00'*T62J2J3t992TUUUD00'*T62J2J3t992TUUUD00'*T62J2J3t992TUUUD00'*T62J2J3v;;2VWWWOD$''JtT""R
4(=(=%==	
 	
 	
 	OD$''JtT""R
4(=(=%==	
 	
 	
 	
 	
rI   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   rS   r^   r   rP   rN   N)r   r   r!   r  r  rC  r  r  r  rF  r  rK   r  r  rD   s    rF   test_ticket_854zTestBessel.test_ticket_854  s%   gjb))**+++gjb))**+++gjb))**+++gjB''(()))gjb))**+++gjB''(()))gk#r**++,,,gk#r**++,,,gk#r**++,,,gk!R(())***gk#r**++,,,gk!R(())***gmB''!,--1133W]25F5FGGGE'-++AaC01155777r9J9JKKKKKrI   c                     t          t          j        dd          t          j        k               t          t          j        dd          t          j        k               d S )Nr]  r   )r   r!   r  rc   r   r  rD   s    rF   test_gh_7909zTestBessel.test_gh_7909  sJ    
3""bf,---C##rv-.....rI   c                     t          t          j        dd          d           t          t          j        dd          d           dS )zReal-valued Bessel I overflowr^   i  g~r[   i`  g ?los~Nr   r!   r  rD   s    rF   test_ticket_503zTestBessel.test_ticket_503  sB    
1c**,ABBB
4..0EFFFFFrI   c                 L    t          t          j        dd          d           d S )Nr  r^   r  r  rD   s    rF   test_iv_hyperg_poleszTestBessel.test_iv_hyperg_poles  s%    
4++->?????rI      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   rP   r   r^   rS   rS  )r   r  r   r   r!   rp  r   r   r   r[  r.  r   r  sumrE   rb  rM  rl   rm   rW  r'  s          rF   	iv_serieszTestBessel.iv_series  s    1aLL''qsUC1II! 4 44wqs1u7M7MM%((FF!ffjjllU6]]..2S2ZZ]Buuww|rI   c                     dD ]@}|                      d|          \  }}t          t          j        |          |||           Ad S )Nr   r   r[  r   rb   r  )r  r   r!   r  rE   rM  valuer'  s       rF   test_i0_serieszTestBessel.test_i0_series  X    ! 	G 	GA1--JE3GJqMM5sAFFFFF	G 	GrI   c                     dD ]@}|                      d|          \  }}t          t          j        |          |||           Ad S )Nr  r^   r  )r  r   r!   r  r  s       rF   test_i1_serieszTestBessel.test_i1_series  r  rI   c           	          dD ]H}dD ]C}|                      ||          \  }}t          t          j        ||          ||||f           DId S )N)rX  r  r  r   r   rY  r   )r   r   r[  y             @r  )r  r   r!   r  rE   rb  rM  r  r'  s        rF   test_iv_serieszTestBessel.test_iv_series  sw    7 	S 	SA, S S!^^Aq11
s
1a 0 0%cAq6RRRRRS	S 	SrI   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   r`   rG  g0oO?r   g!?grb?r  gpH?r   gC~?r   ggo?r3  r  r  )r  r!   r  r   r   rE   r   r   r  rb  r  s         rF   r  zTestBessel.test_i0  s    *#,%%%%%& #6** 	B 	BIAv1AaR(BAq*q.AAAAA	B 	BrI   c                 z    t          j        d          }t          j        dd          }t          ||d           d S r  )r!   r  r  r   )rE   oizeoizers      rF   r  zTestBessel.test_i0e  r  rI   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   r`   gj|=rG  gȕ![1?r   g;͘?r   gRΜ?r   g|?r   g}f?r3  r  r  )r  r!   r  r   r   r  s         rF   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rI   c                 z    t          j        d          }t          j        dd          }t          ||d           d S r  )r!   r  r  r   )rE   oi1eoi1ers      rF   r  zTestBessel.test_i1e  r  rI   c                     t          t          j        d                    }t          |t          ddg          d           d S )Nr   gїJB?@g*u?)r   r!   r  r   )rE   iti0s     rF   r  zTestBessel.test_iti0k0  sM    W^A&&''!%'9:;;	
 	
 	
 	
 	
rI   c                 n    t          j        d          }t          |t          ddg          d           d S )NrG  gݳɄ|T?gVƥ
@rT   )r!   r  r   r   )rE   it2ks     rF   r  zTestBessel.test_it2i0k0  sE    r""!(*<=>>	
 	
 	
 	
 	
rI   c                 r    t          j        dd          t          d          z  }t          |dd           d S )Nr   rG  皙gv M?rS  )r!   r  r   r   )rE   iv1s     rF   r  zTestBessel.test_iv  s7    j2s3xx'C 3B77777rI   c                 r    t          t          j        dd          t          j        dd                     d S r  )r   r!   r  rD   s    rF   test_negv_ivezTestBessel.test_negv_ive  s0    W[1%%w{2a'8'899999rI   c                     t          j        dd          }t          j        dd          t          d          z  }t	          ||d           d S )Nr   rG  r  rS  )r!   r  r  r   r   )rE   ive1r  s      rF   r  zTestBessel.test_ive
  sG    {1R  j2s3xx'DR(((((rI   c                 t    t          t          j        dd          t          j        dd          d           d S )Nr^   rP   r   rS  )r   r!   r  ivprD   s    rF   	test_ivp0zTestBessel.test_ivp0  s0    GJqOOW[1-=-=rBBBBBrI   c                     t          j        dd          t          j        dd          z   dz  }t          j        dd          }t          ||d           d S )Nr   rP   r^   rS  )r!   r  r  r   r4  s      rF   test_ivpzTestBessel.test_ivp  sN    Z!__wz!A.1K!Aa#####rI   )r`  r   N)r  )VrO  rP  rQ  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r#  r<  r>  r.  r1  r5  r9  r?  rA  rA  rH  rJ  rD  rN  rG  rV  r_  rg  rR  rS  rT  r  machinerk  ro  rs  ru  slowr|  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rU  rI   rF   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
 
 
	% 	% 	%< < <= = =8 8 8# # #
D D D7 7 7F F F+ + +0 0 0

C 
C 
C; ; ; ; ['x'))Y60  2 2S S2 2S ['x'))Y60  2 2S S2 2S0 0 0V V V [
 
 
>R R RI I I
0
 0
 0
dL L L"/ / /G G G
@ @ @   G G G
G G G
S S SB B B* * *
B B B* * *

 
 

 
 
8 8 8: : :) ) )
C C C$ $ $ $ $rI   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   r^   rP   r   rN   r   r  rS   )r^   rs  rP   r   )rS   r  irT   rJ  )r^   iH   ir
  ri  )rS   r  i8iX  ir#  r   )r!   laguerrer   r#  r   )rE   lag0lag1lag2lag3lag4lag5s          rF   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SrI   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   r^   rP   r   rS   r  r   r   ra  rJ  )rc   ri   r!   r  r   r#  r   r   )rE   rm   r  r  r  r  s         rF   test_genlaguerrezTestLaguerre.test_genlaguerre'  s@   bi   3&"1Q''"1Q''"1Q''"1Q''TVaS!!!TVb!a%[)))F1R1Xqtadm,--c1	
 	
 	
 	F2a1gb!A#h!nacAaC[!A#->?@@D	
 	
 	
 	
 	
rI   N)rO  rP  rQ  r  r  rU  rI   rF   r  r    s5        T T T
 
 
 
 
rI   r  c                       e Zd Zd ZdS )
TestLambdac           
      ~   t          j        dd          }t          t          j        dd          dt          j        dd          z  dz  g          t          t          j        dd          dt          j        dd          z  dz  dt          j        dd          z  dz  z   g          f}t          ||d           d S )Nr^   rG  r   rP   r  r   r3  )r!   lmbdar   r  rg  r  r   )rE   lamlamrs      rF   
test_lmbdazTestLambda.test_lmbda:  s    mAb!!7:a##Qwz!B'7'7%7%:;<<7;q$$bAb)9)9&9#&='+aPRBSBS@STV@V&VWXX
 	"#d1-----rI   N)rO  rP  rQ  r  rU  rI   rF   r  r  9  s#        . . . . .rI   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 )NrS  rI  r4  r  r3  r!   r  r   r   )rE   l1pl1prls      rF   r  zTestLog1p.test_log1pD  sb    }R  '-"3"3W]25F5FGR#b''3r77+!#eA.....rI   c                     t          j        d          t          j        d          t          j        d          f}t          d          t          d          t          d          f}t          ||d           d S )Nr^   r  r  rP   r;  r<  r3  r  )rE   l1pml1pmrls      rF   test_log1pmorezTestLog1p.test_log1pmoreI  sb    a  '-"4"4gmC6H6HIa&&S#c((+!$va00000rI   N)rO  rP  rQ  r  r  rU  rI   rF   r  r  C  s2        / / /
1 1 1 1 1rI   r  c                        e Zd Zd Zd Zd ZdS )TestMathieuc                     d S r  rU  rD   s    rF   r+  zTestMathieu.test_mathieu_aQ  r  rI   c                 0    t          j        dd           d S )NrP   r   )r!   r,   rD   s    rF   test_mathieu_even_coefz"TestMathieu.test_mathieu_even_coefT  s    !!A&&&&&rI   c                     d S r  rU  rD   s    rF   test_mathieu_odd_coefz!TestMathieu.test_mathieu_odd_coefX  s    rI   N)rO  rP  rQ  r+  r  r  rU  rI   rF   r  r  O  sA          ' ' '    rI   r  c                       e Zd Zd Zd ZdS )TestFresnelIntegralc                     d S r  rU  rD   s    rF   rj  z$TestFresnelIntegral.test_modfresnelp_  r  rI   c                     d S r  rU  rD   s    rF   rf  z$TestFresnelIntegral.test_modfresnelmb  r  rI   N)rO  rP  rQ  rj  rf  rU  rI   rF   r  r  ]  s2              rI   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   r^   )g~T~Oֿgt_J?gm{@g@j'&@r   )r!   
obl_cv_seqr   r   )rE   obls     rF   test_obl_cv_seqzTestOblCvSeq.test_obl_cv_seqg  sT     1Q''!#e -9 -9 -9 ': ': ;<	= 	= 	= 	= 	=rI   N)rO  rP  rQ  r  rU  rI   rF   r  r  f  s#        = = = = =rI   r  c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TestParabolicCylinderc                     t          j        dd          }t          |t          ddg          t          ddg          fd           d S )Nr^   rG  gQ?gx$(~?gx$(~g(\?rN   )r!   pbdn_seqr   r   )rE   pbs     rF   test_pbdn_seqz#TestParabolicCylinder.test_pbdn_seqp  si    a##!"eV.4-6 '7 '7&+W-3-5 '6 '6&7 89	: 	: 	: 	: 	:rI   c                     t          j        dd           dt          j        dd          d         z  t          j        dd          d         z
   d S )Nr^   r  rG  r   )r!   r  rD   s    rF   r  zTestParabolicCylinder.test_pbdvw  sL    Qra##A&&a););A)>>>>>rI   c                     t          j        dd          }t          j        dd          }t          |t	          |d                   t	          |d                   fd           d S )Nr^   rG  r   rN   )r!   r  pbdv_seqr   r   )rE   pbnpbvs      rF   test_pbdv_seqz#TestParabolicCylinder.test_pbdv_seq{  sW    q$$q$$!#tCF||DQLL&A!DDDDDrI   c                    t          j        ddd          }d|dz  z  t          j        t           j                  z  t	          j        dd|z  z
            z  }t          t	          j        |d          d         |dd	           t          t	          j        d
d          d         dd           t          t	          j        dd          d         dd           d S )Nr  rS  r   rP   r   r   r   r>  r?  gGz$@gq=
ףp4@gHQ9r   rW   g(\#gQ@gkS a>)rc   rO  r   r   r!   r  r   r  )rE   etarM  s      rF   test_pbdv_pointsz&TestParabolicCylinder.test_pbdv_points  s    k#r1%%AJrwru~~%gnR3Y&?&??S"--a0!%eLLLL 	UE22157JQVWWWWUD11!46JQVWWWWWWrI   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 Nrs  rN   r3  r  rS  r   r  r   r   r^   rR  r?  )rc   rO  r!   r  r[  r   rE   r  r  r[  r  dps         rF   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7rI   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  )rc   rO  r!   r  r[  r   r  s         rF   test_pbvv_gradientz(TestParabolicCylinder.test_pbvv_gradient  r  rI   c                     t          j        dd          \  }}t          |t          j        g d                     t          |t          j        g d                     d S )NrP   r   )g:4@g1{н?g7,%n?)gX@g=<'?gʠ?)r!   pbvv_seqr   rc   r   )rE   res1res2s      rF   test_pbvv_seqz#TestParabolicCylinder.test_pbvv_seq  s    %a++
dbh (< (< (< = = 	> 	> 	> 	bh (; (; (; < < 	= 	= 	= 	= 	=rI   N)
rO  rP  rQ  r  r  r  r  r  r  r  rU  rI   rF   r  r  o  s        : : :? ? ?E E E
X X X8 8 88 8 8= = = = =rI   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 )NrP   r^   r   gX];rS  gOV,@@)rP   r   g  8Br   r  rt  )g2}jg.M?g}2;ο)r!   	polygammar   r  rc   rv  )rE   poly2poly3r  rl   rN  s         rF   test_polygammazTestPolygamma.test_polygamma  sC   !!A&&!!A&&E-333E,r222 NNG-a33W[^^DDD IIOO* * *G-a33X>>>9hZ\**G-aA3q51A1ABB$	& 	& 	&G-biA.>.>BB$	& 	& 	& 	& 	&rI   N)rO  rP  rQ  r  rU  rI   rF   r  r    s#        & & & & &rI   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   r^   )g"~j?g6?Ң@g)u8F"@g2g)@r   )r!   
pro_cv_seqr   r   )rE   prols     rF   test_pro_cv_seqzTestProCvSeq.test_pro_cv_seq  sT    !!Aa((!$u .: .: .: (; (; <=	> 	> 	> 	> 	>rI   N)rO  rP  rQ  r  rU  rI   rF   r  r    s#        > > > > >rI   r  c                       e Zd Zd ZdS )TestPsic                 P    t          j        d          }t          |dd           d S )Nr^   goxr3  )r!   r  r   )rE   pss     rF   r  zTestPsi.test_psi  s(    [^^B3A66666rI   N)rO  rP  rQ  r  rU  rI   rF   r  r    s#        7 7 7 7 7rI   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   )rE   rads     rF   r  zTestRadian.test_radian  s1    nR!$$C3q)))))rI   c                 j    t          j        ddd          }t          |t          dz  dz   d           d S )Nr  r^   r`  rP   gC?r   r  )rE   rad1s     rF   test_radianmorezTestRadian.test_radianmore  s7    ~b2&&DA&;!;A>>>>>rI   N)rO  rP  rQ  r  r  rU  rI   rF   r  r    s2        * * *? ? ? ? ?rI   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)rP   r  T)
derivativer   r^   r3  )rc   emptyr|   r!   spherical_jnr   
riccati_jn)rE   ry  r  Srl   r  jps          rF   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ArI   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!  )rc   r#  r|   r!   spherical_ynr   
riccati_yn)rE   ry  r  Crl   rL  yps          rF   test_riccati_ynzTestRiccati.test_riccati_yn  r)  rI   N)rO  rP  rQ  r(  r/  rU  rI   rF   r  r    s:        B B BB B B B BrI   r  c                       e Zd Zd Zd ZdS )TestSoftplusc                    dd l }|j                            d          }d}|                    dd|          }|                    dd|          }|                    dd|          }|                    d	d
|          } |j        ||||g          }g dg dg dg dg}	t          |          }
t          |
|	d           d S )Nr   l   (sr   iirw     r  g
ףp=@@r:  )g%~B7gpNf7g8B8)gJR{?g6]=gXes>)g n@?@gWH;@glH.=@)g9lchPR@gS@gzsevB@r  rW   )numpyri   default_rnguniformstackr*   r   )rE   rc   rp   rl   r  r  a3a4r\  r  r  s              rF   test_softpluszTestSoftplus.test_softplus  s     	i##M22[[s[++[[bq[))[[T[**[[![,,BHb"b"%&& TSSQQQKKKHHHJ
 qkkSu------rI   c                    t          j        d          dz
  }t          j        d          }|                                }|dk    }t	          |||           t	          ||                   ||<   t          ||           d S )Nr   rP   r   )outwhere)rc   r   onescopyr*   r   )rE   r  r<  r  r=  s        rF   test_softplus_with_kwargsz&TestSoftplus.test_softplus_with_kwargs  sw    IaLL1gajjhhjjA5))))ah''E
S!!!!!rI   N)rO  rP  rQ  r:  r@  rU  rI   rF   r1  r1    s2        . . .:" " " " "rI   r1  c                       e Zd Zd ZdS )	TestRoundc                    t          t          t          t          j        d          t          j        d          t          j        d          t          j        d          f                    }d}t          ||           d S )Ng333333$@g$@r  g333333%@)rS  rS  rS  rI  )r,  mapr{   r!   r  r   )rE   rndrndrls      rF   r  zTestRound.test_round  st    3sW]400$]400$]400$]4002 3 3 4 4 3u%%%%%rI   N)rO  rP  rQ  r  rU  rI   rF   rB  rB    s#        & & & & &rI   rB  c            
         t           j        } t          j        }t          j        }t          j        }t          j        }t          j        }t                      5 }|	                    t                     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 d d            d S # 1 swxY w Y   d S )Ncategoryr   r   r  rP   r   rN   r5  r  r   r   rJ  r:  r   r  r   g      @r^   r   rJ  g      ?g     A@)r!   sph_harmrc   r   r   r   r	   r
   r    r!  DeprecationWarningr   )shr   r   r   r	   r
   r$  s          rF   test_sph_harmrM  )  s    
	B	B
&C7D
&C
&C			 2

.
///!""Qq1++4488|	 	 	!""R"RT"2"2DDbe%%%BqD		B	  	  	  	"""R"RT"2"2DDbe%%%	' 	' 	'!""QqBqD//DDRU$$$s1RU2X:"s2b5zz2~.	/ 	/ 	/ 	"""QqBr"u"5"5ttB2J'''s1RU2Xb[=!!"s2b5zz2~ 33r"u::r>!!#%	& 	& 	&
 	"""QqBr"u"5"5S"R%[)))s1RU2Xb[=!!""%#be**b.1	2 	2 	2#2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2s   G$IIIc            	         t          j        t           j                  } t                      5 }|                    t
                     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 d d            d S # 1 swxY w Y   d S )NrH  r   )	rc   r  rs  r    r!  rK  r   r!   rJ  )dtr$  s     rF   "test_sph_harm_ufunc_loop_selectionrP  H  s   	"-	 	 B			 E

.
///W%aAq117<<<W%qc1a3392>>>W%a!a3392>>>W%aQC3392>>>W%aAs3392>>>W%qcA3aS99?DDDE E E E E E E E E E E E E E E E E Es   D EE!Ec                   (    e Zd ZddZd Zd Zd ZdS )
TestStruver:  c                 ^   t          d|          }d|z  d|z  d|z  |z   dz   z  z  t          j        |dz             z  t          j        ||z   dz             z  }t          |                                          t          t                    j        z  |z  }|                                |fS )z?Compute Struve function & error estimate from its power series.r   rS   r   rP   r^   r]  )	r   r!   rj  r[  r.  r   r   r  r  r  s          rF   _serieszTestStruve._seriesV  s    1aLL!Gr!tqs1uQw''ae(<(<<W]1Q3s7=S=SS!ffjjllU6]]..2uuww|rI   c                     dD ]J}dD ]E}|                      ||          \  }}t          t          j        ||          |d|          ||ff FKdS )z-Check Struve function versus its power series)
ir  (\r  rS   r   r^   r  rY     )r^   rS  r	  rJ  rZ   r   r?  N)rT  r   r!   r2  r  s        rF   test_vs_serieszTestStruve.test_vs_series]  s    B 	W 	WA( W W!\\!Q//
sq! 4 4e!#NNNQRTUPVVVVW	W 	WrI   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 )NrV  rJ  g;cv=?r  rW   gQ g< j?r  r  r  g?r   g       igzz?r`  i)   r4  rZ  rI  gffffffrS   g333333$)r   r!   r2  r   r   r   rD   s    rF   test_some_valueszTestStruve.test_some_valuesd  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1rI   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!   r2  rD   s    rF   test_regression_679zTestStruve.test_regression_679q  s    tY77tY77	9 	9 	9tY77tY77	9 	9 	9tY77tY77	9 	9 	9 	9 	9rI   N)r:  )rO  rP  rQ  rT  rX  r[  r]  rU  rI   rF   rR  rR  U  sX           W W W2 2 29 9 9 9 9rI   rR  c                  L    t          t          j        dd          d           d S )Nr  r   gdX	
?)r   r!   r   rU  rI   rF   test_chi2_smalldfr_  {  s%    c!,,.?@@@@@rI   c                  `    t          t          j        dt          j                  d           d S )Nr+  r   )r   r!   r   rc   r   rU  rI   rF   test_ch2_infra    s&    s26**C00000rI   c                  L    t          t          j        dd          d           d S )Nr  r   yj_?)r   r!   r   rU  rI   rF   test_chi2c_smalldfrd    s%    s1--/BCCCCCrI   c                  L    t          t          j        dd          d           d S )Nr  rc  r   )r   r!   r   rU  rI   rF   test_chi2_inv_smalldfrf    s%    s+>??CCCCCrI   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 )'NrV   r^   rP   gDSYC?rW   gQ_?g?@g>;,
i}@r   )r^   r   r   g=O?rS   r  r
  rT   gXs*@r  g   V4oAgO1eAgꌠ9Y>)FgEg^ 9^;gd-?gP.5_gsTNNeg6dgu?j/ g]XC}KdgѧRg"!x{{ r   g][#!Rr  gٍS1gN_ r   r@  rS  )r   r!   agmrc   r   r   r  r.  r   r   r   )rX   agm13agm15agm35agm12fis         rF   test_agm_simplern    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3rI   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  r^   rH  g?rP   gffffff@)r    r!  r"  r   r!   expnrr  ro  ru  r  r  r@  r  r  )r$  s    rF   test_legacyrq    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                  2    dd l } |                                 S rA   )	threadingLock)rs  s    rF   errstate_lockru    s    >>rI   c                     | 5  t          j        d          5  t          t           j        t           j        dd           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr  r  r^   y        .B}T)r!   r  rw  r  r  )ru  s    rF   test_error_raisingrw    s   	 N N'*** 	N 	N'6
AuMMM	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	NN N N N N N N N N N N N N N N N N Ns4   A$'A A$A	A$A	A$$A(+A(c                     d } t          j        ddt           j        fdt           j        fdgt                    }t           j        |ddgf         } t          j        |           |d d df         |d d df                   }t          t          j	        ||d	d	
            t          j        |           |d d df         |d d df                   }t          t          j	        ||d	d	
           d S )Nc                     t          j        d          5  | dk    r"t          j        |          s| cd d d            S | t          j        |          z  cd d d            S # 1 swxY w Y   d S Nr  )invalidr   )rc   r  r   r   r  rL  s     rF   xfuncztest_xlogy.<locals>.xfunc  s    [*** 	# 	#Avvbhqkkv	# 	# 	# 	# 	# 	# 	# 	# {		# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#   A"A""A&)A&r   r   r   r   r   r  )r   rJ  )r^   rJ  r^   rV   r?  )
rc   r   r   r   r}   r   r   r:   r!   xlogy)r}  z1z2w1w2s        rF   
test_xlogyr    s    # # # 
UQK!RVjA	O	O	OB	rGW%%	&B	e		R!Wb1g	.	.BgmR%eDDDD	e		R!Wb1g	.	.BgmR%eDDDDDDrI   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 rz  )rc   r  r   r  r|  s     rF   r}  ztest_xlog1py.<locals>.xfunc  s    [*** 	' 	'Avvbhqkkv	' 	' 	' 	' 	' 	' 	' 	' 28A;;		' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'r~  r  r   r  )r^   gKH9r  r^   rV   r?  )	rc   r   r   r   r}   r   r:   r!   xlog1py)r}  r  r  s      rF   test_xlog1pyr    s    ' ' ' 
UQK!RVj!(-
/ 
/ 
/B	e		R!Wb1g	.	.Bgor2EFFFFFFrI   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 rA   )rc   r   r!   r  rD  s    rF   r}  ztest_entr.<locals>.xfunc  s)    q55F7NM!Q''''rI   r   r   r   rS   r^   r  otypesrV   r?  )rc   r   r]  r^  r  r   r}   r   r  r:   r!   entr)r}  r   signsr  sgnrb  rM  rM  s           rF   	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ArI   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 rA   )rc   r   r`  r!   r  r|  s     rF   r}  ztest_kl_div.<locals>.xfunc  s~    q55AEEa1ffa6M[^^ 	1r{1~~ 	16M!VVH=AaC((1,q00rI   r   r   r   rS   r^   r  r  r   rV   r?  )r]  r^  r  rc   r   r}   r   r  r:   r!   kl_div
r}  r   r  r  sgnavasgnbvbrM  rM  s
             rF   test_kl_divr    s    
1 
1 
1 FGE
C'/vufMM ' 'b$

DGT"W%&&&&
E"""A0UBJ<000111Q3111Q3@@AgnaUCCCCCCrI   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 rA   )r!   r  rc   r   r|  s     rF   r}  ztest_rel_entr.<locals>.xfunc+  sF    q55QUU=AaC(((!VVQ16MrI   r  rS   r^   r  r  r   rV   r?  )r]  r^  r  rc   r   r}   r   r  r:   r!   rel_entrr  s
             rF   test_rel_entrr  *  s       FGE
C'/vufMM ' 'b$

DGT"W%&&&&
E"""A0UBJ<000111Q3111Q3@@Ag&15uEEEEEErI   c                      t          j        g d          } g d}| d d df         }| d d df         }t          t          j        ||          |dd           d S )N))gpB?gĬB?)gtK&?gCtK&?)g>уO'?gvуO'?)ggQW"g    G=r   r^   rV   r?  )rc   r   r   r!   r  inputsrN  r  rL  s       rF    test_rel_entr_gh_20710_near_zeror  <  s    X     F  H
 	qqq!tAqqq!tAG$Q**H5qIIIIIIrI   c                      t          j        d           t          j        g d          } g d}| d d df         }| d d df         }t	          t          j        ||          |dd           d S )	Nr  r  ))rN   X )r  gZbti)r  g  4&kC)gMG.@g)Z?g wa)r   r^   rV   r?  )r!   seterrrc   r   r   r  r  s       rF   test_rel_entr_gh_20710_overflowr  O  s    Nx    X     F  H
 	qqq!tAqqq!tAG$Q**H5qIIIIIIrI   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 )NrS   r]  rP   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   )rc   r   r[  squaredeltarW  s     rF   r}  ztest_huber.<locals>.xfuncj  sT    1996MVAYY1%%BF1IIe344rI   rS  r  r   r^   rV   r?  )r   r!   huberrc   r   r   r  ri   randnr   r  r:   r}  rM  rM  s      rF   
test_huberr  e  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BrI   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   rP   r^   )rc   r   r   r  s     rF   r}  z test_pseudo_huber.<locals>.xfuncx  sQ    1996M 	> 	>1!8rwqAeGa<'7881<==rI   rS  rP   r   r   r  r^   rV   r?  )
rc   r   ri   r  tolistr   r  r:   r!   pseudo_huberr  s      rF   test_pseudo_huberr  w  s    > > > 	Q''..00QHsAh3GGHHA0UBJ<000111Q3111Q3@@Ag*Aqu5IIIIIIrI   c                  `    d} d}t          j        | |          }d}t          ||d           d S )Nr   gC]r2<gs.-De8rV   rW   )r!   r  r   )r  rW  rL  rN  s       rF   test_pseudo_huber_small_rr    s@    EAUA&&A &HAxe,,,,,,rI   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  r[   )rR  warnsr"  r+   r,   rU  rI   rF   test_runtime_warningr    s   	n>
@ 
@ 
@ % %t$$$% % % % % % % % % % % % % % % 
n>
@ 
@ 
@ & &$%%%& & & & & & & & & & & & & & & & & &s   9= =A==BBc                      e Zd Zdgddgg dg dg dg dg dg dg d	g d
g dgZej                            ddei fdeddifg          d             Z	ej                            ddei fdeddifg          d             Z
ej                            ddei fdeddifg          d             Zej                            ddei fdeddifg          d             Zej                            ddei fdeddifg          d             Zd Zd Zej                            dddddej        g          ej                            dg d          ej                            d ddg          d!                                     Zej                            d ddg          d"             Zej                            ddei fdeddifg          d#             Zej                            ddei fdeddifg          d$             Zd% Zd&S )'TestStirling2r^   r   )r   r^   r^   )r   r^   r   r^   )r   r^   rR   rT   r^   )r   r^   r   r  rS  r^   )r   r^      r  A   r   r^   )r   r^   ?   r  i^     rJ  r^   )	r   r^      i  i    i
     r^   )
r   r^      i  iZ  i'  iV
  i  $   r^   )r   r^   r   r$  i9  i  i+Y    i  r   r^   zis_exact, comp, kwargsTFrX   r   c           	          t          dt          | j                            D ]I}t          t          |dz                       }| j        |         } ||t	          |g||          fi | Jd S )Nr^   r!  )r|   r  tabler,  r-   )rE   is_exactcompkwargsrl   k_valuesrows          rF   test_table_caseszTestStirling2.test_table_cases  s    
 q#dj//** 	J 	JAE!A#JJ''H*Q-CDiXX>>>II&IIII	J 	JrI   c                      |t          dd|          | j        d         d         fi |  |t          dd|          | j        d         d         fi |  |t          dd|          dfi |  |t          dgdg|          dgfi | d S )Nr   r!  rN   rP   r   r   r  )r-   r  rE   r  r  r  s       rF   test_valid_single_integerz'TestStirling2.test_valid_single_integer  s    
 	Yq!8,,,djmA.>II&IIIYq!8,,,djmA.>II&III 	Yq!8,,,b;;F;;;YsQCx0002$AA&AAAAArI   c                      |t          dd|          dfi |  |t          dd|          dfi |  |t          dd|          dfi | d S )NrS   r!  r   rP   r-   r  s       rF   test_negative_integerz#TestStirling2.test_negative_integer  s     	Yr2X...<<V<<<Yr1H---q;;F;;;Yq"H---q;;F;;;;;rI   c           	      z   | j         d         d         | j         d         d         g} |t          t          ddg          t          ddg          |          |            |t          ddgt          ddg          |          |            |t          t          ddg          ddg|          |           d S )NrS  r   rN   r!  )r  r-   r   )rE   r  r  r  anss        rF   test_array_inputszTestStirling2.test_array_inputs  s    
 z"~a $*R."34YwBx((&1v%-/ / / 	 	 	 	YBx&1v%-/ / / 	 	 	 	YwBx(( !1v%-/ / / 	 	 	 	 	rI   rV   c                 R    g d}g d}g d} |t          |||          |fi | d S )N)r   r^   r   r  r  r  r  )rS   r   r   r   r3  rS  rS  )r  r   rP   r   r   rR   r   r!  r  rE   r  r  r  r  rl   rm   s          rF   test_mixed_valueszTestStirling2.test_mixed_values  sT     .--$$$"""Yq!8,,,c<<V<<<<<rI   c                     dt          j        d          c}t          t          |d          dz  fd|D                        dS )z{Test parity follows well known identity.

        en.wikipedia.org/wiki/Stirling_numbers_of_the_second_kind#Parity
        r:  e   Tr!  rP   c                 X    g | ]&}t          j        |d z  z
  dz
  |z
            d z  'S )rP   r^   )r  r'  )r(  rm   rl   s     rF   r)  z5TestStirling2.test_correct_parity.<locals>.<listcomp>  s;    ???TYqAF|a'Q//!3???rI   N)rc   r   r   r-   )rE   Krl   s     @rF   test_correct_parityz!TestStirling2.test_correct_parity  sb    
 BIcNN1a$'''!+????Q???	
 	
 	
 	
 	
rI   c                     t          ddg          }ddg}ddg}t          t          ||d          |          sJ t          d	d
g          }ddg}ddg}t          t          ||d          |          sJ d S )Nl   V^;. l   k4-Tr  rZ   rO   rN   Tr!  l	   D,"SBXp!N l   wY)H_1e_*   r;     )r   r   r-   )rE   r  rl   rm   s       rF   test_big_numberszTestStirling2.test_big_numbers  s    ~'89::HG9Q666<<<<<<:< = =HH9Q666<<<<<<<rI   ry  r  r   y      @      ?12r  )r  r   2Nr  c                     t          j        t                    5  t          |||           d d d            d S # 1 swxY w Y   d S )Nr!  )rR  r   	TypeErrorr-   )rE   ry  r  r  s       rF   test_unsupported_input_typesz*TestStirling2.test_unsupported_input_types  s    
 ]9%% 	, 	,a(++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   :>>c                 N   t          | j        d         dd                    }t          g dt                    }t          g dt                    }t          j        t
                    5  t          t          |||          |           d d d            d S # 1 swxY w Y   d S )NrN   r^   rN   rN   rN   rN   r  r^   rP   r   rN   r!  )r   r  r  rR  r   r  r   r-   )rE   r  r  rl   rm   s        rF   !test_numpy_array_int_object_dtypez/TestStirling2.test_numpy_array_int_object_dtype	  s     djmABB'((LLL///LLL///]9%% 	> 	>	!Qh777===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>s   ,!BB!Bc                     t          | j        d         dd                    }t          g dt                    }t          g dt                    } |t          ||d          |fi | d S )NrN   r^   r  r  r  Fr!  )r   r  r2   r-   r  s          rF   #test_numpy_array_unsigned_int_dtypez1TestStirling2.test_numpy_array_unsigned_int_dtype  s{     djmABB'((LLL111LLL111Yq!5)))399&99999rI   c                    t          g dg dg          }t          g dg dg          }t          g d          } |t          |||          |fi | t          dgdgdgdgdgg          }t          g d          }t          d	 t          d
          D                       } |t          ||d          |fi | d S )N)r^   r   r  rS  )r^   rR   rT   r^   )r   r   r   r   r  r  r!  rN   )r   r^   rP   r   rN   r   c                     g | ]}g d S ))r   r^   rR   rT   r^   r   rU  )r(  ro  s     rF   r)  zDTestStirling2.test_broadcasting_arrays_correctly.<locals>.<listcomp>,  s    <<<a)))<<<rI   r   F)r   r-   r|   r  s          rF   "test_broadcasting_arrays_correctlyz0TestStirling2.test_broadcasting_arrays_correctly  s     566\\\<<<011LLL!!Yq!8,,,c<<V<<<aS1#sQC!-..&&&''<<588<<<==Yq!5)))399&99999rI   c                 <   t          t          ddd                    }|D ]z}t          t          d|dz                       }t          |g|d          }|t          |g|d          z
  }t          j        t          j        ||z                      dk     sJ {d S )	N3   r  r   r^   Tr!  Fgh㈵>)r,  r|   r-   rc   r.  r[  )rE   r  rl   	k_entriesdenomr~   s         rF   test_temme_rel_max_errorz&TestStirling2.test_temme_rel_max_error/  s     r3""## 	6 	6AU1ac]]++Iqc9D999E)QC%@@@@C6"&u--..55555		6 	6rI   N)rO  rP  rQ  r  rR  rS  r  r   r   r  r  r  r  r  r  r  rc   r   r  r  r  r  r  rU  rI   rF   r  r    s       	
	
A		!!!(((000777@@@E [5	|R 	&%18  J J	 J [5	|R 	&%18  B B	 B [5	|R 	&%18  < <	 < [5	|R 	&%18   	  [5	|R 	&%18  = =	 =	
 	
 	
= = = [S3D$"?@@[S"5"5"566[Z$77, , 87 76 A@,
 [Z$77> > 87> [5	|R 	&%18  : :	 : [5	|R 	&%18  : :	 :6 6 6 6 6rI   r  c                   f    e Zd Zd Zej                            deeg          d             Z	d Z
dS )TestLegendreDeprecationc                     d}t          j        |          5  t          dd          }d d d            d S # 1 swxY w Y   d S )Nz$`scipy.special.lpn` is deprecated...r  r^   r   )rR  r?  r.   rE   r@  ro  s      rF   test_warn_lpnz%TestLegendreDeprecation.test_warn_lpn<  s    4##... 	 	Aq		A	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   6::xlpmnc                     d|j          d}t          j        |          5   |ddd          }d d d            d S # 1 swxY w Y   d S )Nz`scipy.special.z` is deprecated...r  r^   r   )rO  rR  r?  )rE   r  messagero  s       rF   test_warn_xlpmnz'TestLegendreDeprecation.test_warn_xlpmnA  s    FENFFF#'222 	 	aAA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   <A A c                     d}t          j        |          5  t          j        dddd          }d d d            d S # 1 swxY w Y   d S )Nz)`scipy.special.sph_harm` is deprecated...r  r^   r   )rR  r?  r!   rJ  r  s      rF   test_warn_sph_harmz*TestLegendreDeprecation.test_warn_sph_harmG  s    9##... 	- 	- Aq!,,A	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-rB  N)rO  rP  rQ  r  rR  rS  r  r/   r0   r	  r	  rU  rI   rF   r  r  :  sd          
 [WtUm44  54
- - - - -rI   r  r  )r  r]  r  r  r  r4  rc   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   rR  r   rw  numpy.testingr   r   r   r   r   r   r   r   r    scipyr!   scipy.special._ufuncs_ufuncsrB   scipy.specialr"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   scipy._lib._utilr1   r2   scipy._lib._array_apir3   r4   r5   scipy.special._basicr6   r7   r8   scipy.special._testutilsr9   r:   r;   r  architecturer  r3  rf  r?   rW  r  r  r  r  r  r  r  rO  r  r  r  r  r  r  r+  rJ  rN  r  r(  rE  rd  r  r  r  r  r  r  r  r  r  r  r  r  r  r1  rB  rM  rP  rR  r_  ra  rd  rf  rn  rq  fixtureru  rw  r  r  r  r  r  r  r  r  r  r  rS  rM  r  r  r  rU  rI   rF   <module>r	     s  (           



                                                 * * * * * *                     
       & & & & & & & & & 2 2 2 2 2 2 2 2 2 2 E E E E E E E E E E E E E E " " " " " " H H H H H H H H H H * * * * * * * * * * . . . . . . . . S S S S S S S S S S         ! ! ! ! ! ! ! ! ! !  LGxq!W,, XX 
x v9 v9 v9 v9 v9 v9 v9 v9ryG yG yG yG yG yG yG yGx. . . . . . . .       
V> V> V> V> V> V> V> V>r9 9 9 9 9 9 9 90 0 0 0 0 0 0 0<oB oB oB oB oB oB oB oBdD/ D/ D/ D/ D/ D/ D/ D/NB+ B+ B+ B+ B+ B+ B+ B+J: : : : : : : ::JT JT JT JT JT JT JT JTZG0 G0 G0 G0 G0 G0 G0 G0T)= )= )= )= )= )= )= )=X_B _B _B _B _B _B _B _BD- - - - - - - -2/ / / / / / / /@! ! ! !HM- M- M- M- M- M- M- M-`A. A. A. A. A. A. A. A.H@7 @7 @7 @7 @7 @7 @7 @7F&% &% &% &% &% &% &% &%R\6 \6 \6 \6 \6 \6 \6 \6~U	$ U	$ U	$ U	$ U	$ U	$ U	$ U	$p
 
 
 
 
 
 
 
B. . . . . . . .	1 	1 	1 	1 	1 	1 	1 	1              = = = = = = = =4= 4= 4= 4= 4= 4= 4= 4=n& & & & & & & &2> > > > > > > >7 7 7 7 7 7 7 7? ? ? ? ? ? ? ?B B B B B B B B,&" &" &" &" &" &" &" &"R& & & & & & & &$2 2 2>
E 
E 
E#9 #9 #9 #9 #9 #9 #9 #9LA A A1 1 1D D DD D D:4 :4 :4zK K K    
 N N NE E E"G G GB B B D D D,F F F$J J J&J J J,C C C$J J J
- 
- 
- & & &[6 [6 [6 [6 [6 [6 [6 [6|- - - - - - - - - -rI   