
    >qj             	          d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlZd dlmZ d dlm Z m!Z!m"Z"m#Z#m$Z$ d dl%m&Z& d dl'm&c m(Z) d dl*m+Z+m,Z,m-Z- d dl*m.Z.m/Z/m0Z0m1Z1m2Z2 d dl*m3Z3 d d	l*m4Z4m5Z5m6Z6 d d
l7m8Z8m9Z9m:Z: d dl;m<Z<m=Z=m>Z> d dl?m@Z@mAZAmBZB d dlCmDZD d dlEZEej                  dk(  s ej                         d    dk(  rej                  nej                  ZI G d d      ZJ G d d      ZK G d d      ZL G d d      ZM G d d      ZN G d d      ZO G d d      ZP G d d      ZQ G d  d!      ZR G d" d#      ZS G d$ d%      ZT G d& d'      ZU G d( d)      ZV G d* d+      ZW G d, d-      ZX G d. d/      ZY G d0 d1      ZZd~d2Z[ G d3 d4      Z\ G d5 d6      Z] G d7 d8      Z^ G d9 d:      Z_ G d; d<      Z` G d= d>      Za G d? d@      Zb G dA dB      Zc G dC dD      ZddE ZedF Zf G dG dH      Zg G dI dJ      Zh G dK dL      Zi G dM dN      Zj G dO dP      Zk G dQ dR      Zl G dS dT      Zm G dU dV      Zn G dW dX      Zo G dY dZ      Zp G d[ d\      Zq G d] d^      Zrd_ Zsd` Ztej                  j                  daej,                   dbdcddej,                  ej                  g      de        Zxej                  j                  dfej,                   dbdcddej,                  ej                  g      dg        Zyej                  j                  daej,                   dbdcddej,                  ej                  g      dh        Zzej                  j                  dfej,                   dbdcddej,                  ej                  g      di        Z{dj Z|dk Z}dl Z~dm Zdn Zej                  do        Ze@dp        Zdq Zdr Zds Zdt Zdu Zdv Zdw Zdx Zdy Zdz Zd{ Z G d| d}      Zy)    N)arrayisnanr_arangefinfopisincostanexplogzerossqrtasarrayinf
nan_to_numrealarctandoublearray_equal)raises)assert_equalassert_array_equalassert_assert_allcloseassert_array_almost_equal_nulp)special)ellipeellipkellipkm1)elliprcelliprdelliprfelliprgelliprj)softplus)mathieu_odd_coefmathieu_even_coef	stirling2)xp_assert_closexp_assert_equalSCIPY_ARRAY_API)_FACTORIALK_LIMITS_64BITS_FACTORIALK_LIMITS_32BITS_is_subdtype)with_special_errorsassert_func_equalFuncData)quadwin3232bitc                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(e)jT                  jW                  d'(      d)        Z,d* Z-d+ Z.d, Z/d- Z0d. Z1d/ Z2d0 Z3d1 Z4d2 Z5d3 Z6d4 Z7d5 Z8d6 Z9d7 Z:d8 Z;d9 Z<d: Z=d; Z>d< Z?d= Z@d> ZAd? ZBd@ ZCdA ZDdB ZEdC ZFdD ZGdE ZHdF ZIdG ZJdH ZKdI ZLdJ ZMdK ZNdL ZOdM ZPdN ZQdO ZRdP ZSdQ ZTdR ZUdS ZVdT ZWdU ZXdV ZYdW ZZdX Z[dY Z\dZ Z]d[ Z^d\ Z_d] Z`d^ Zad_ Zbd` Zcda Zddb Zedc Zfdd Zgde Zhdf Zidg Zjdh Zke)jT                  j                  dig dj      dk        Zmdl Zne)jT                  j                  dig dm      dn        Zodo Zpdp Zqdq Zrdr Zsds Ztdt Zudu Zvdv Zwdw Zxdx Zydy Zzdz Z{d{ Z|d| Z}d} Z~d~ Zd Ze)jT                  jW                  d(      d        Ze)jT                  jW                  d(      d        Ze)jT                  jW                  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 Zy)
TestCephesc                 .    t        j                  d       y Nr   )cephesairyselfs    ]/opt/rentech/trading_bot/.venv/lib/python3.12/site-packages/scipy/special/tests/test_basic.py	test_airyzTestCephes.test_airy;       A    c                 .    t        j                  d       y r9   )r:   airyer<   s    r>   
test_airyezTestCephes.test_airye>   s    QrA   c           	         t        j                  g d      }t        j                  g d      }t        j                  t        j                  |d d d f   |d d d f               j                  dd      j                  }t        j                  g dg dg dg dg      }t        t        j                  |j                         |d	
       t         j                  j                  d      }t         j                  t        j                  dd      d|j                  d      z  dz
  f   }t        j                  dd      }t        j                  t        j                  |d d d f   |d d d f               j                  dd      j                  }t        t        j                  t        j                  |d d df   |d d df   dz        |dd       y )N)gL7A`?   g@   )   皙?   gffffff
@rH   )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           ?绽|=atolrP   )npr   broadcast_arraysreshapeTr1   r:   binomravelrandomRandomStater   r   rand)r=   nknkrknownrngs         r>   
test_binomzTestCephes.test_binomA   sl   HH()HH%&XXb))!AdF)QtAvY? 2qq 	 ##QF@B C 	&,,G ii##D)EE"))B#T#((2,%6%<<=IIaXXb))!AdF)QtAvY? 2qq 	 	&,, ,,r!A#w1Q390EF$5	2rA   c           	         t         j                  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               j                  dd      j                  }t        t        j                  t        j                  |d d df   |d d df   d	z        |d
d
       y )NrQ   rV   ,     r   rU   rH   rK   rW   rX   rY   )r[   ra   seedr   logspacer   r   r\   r]   r^   r1   r:   r_   )r=   rd   re   rf   s       r>   test_binom_2zTestCephes.test_binom_2X   s    
		tEE"++ab)*IIaXXb))!AdF)QtAvY? 2qq 	 	&,, ,,r!A#w1Q390EF$5	2rA   c           	         t         j                  d        }t         j                  j                  d       t        j                  dd      }t        j                  dd      }t        j
                  t        j                  |d d d f   |d d d f               j                  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       y )	Nc                     t        |       } t        |      }d}d}t        d|dz         D ]  }||| z   |z
  z  }||z  } t        ||z        S NrV   )intrangefloat)rd   re   numdenis        r>   	binom_intz.TestCephes.test_binom_exact.<locals>.binom_intf   sb    AAAACC1ac] q1uqy q S>!rA   rQ   rV      r   rH   rK   rY   )r[   	vectorizera   rm   r   r   r\   r]   r^   r1   r:   r_   )r=   ry   rd   re   rf   s        r>   test_binom_exactzTestCephes.test_binom_exacte   s    		" 
	" 			tIIaIIaXXb))!AdF)QtAvY? 2qq 	1Q32ac7"#&,,#BqsGR!W5 q	*rA   c                     g d}t        j                  |      }t        t        j                  |ddd      j                          y )N))rS   rT   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   rV   rH   -q=rO   )r[   r   r2   r:   r_   check)r=   datasets     r>   test_binom_nooverflow_8346z%TestCephes.test_binom_nooverflow_8346|   s6    
" **W%w>DDFrA   c                 F    t        t        j                  ddd      d       y )NrV         ?      ?)r   r:   bdtrr<   s    r>   	test_bdtrzTestCephes.test_bdtr   s    V[[1S)#.rA   c                 F    t        t        j                  ddd      d       y NrV      r   )r   r:   bdtrir<   s    r>   
test_bdtrizTestCephes.test_bdtri       V\\!Ac*3/rA   c                 F    t        t        j                  ddd      d       y r   )r   r:   bdtrcr<   s    r>   
test_bdtrczTestCephes.test_bdtrc   r   rA   c                 2    t        j                  ddd       y r   )r:   bdtrikr<   s    r>   test_bdtrikzTestCephes.test_bdtrik   s    a#rA   c                 B    t        t        j                  d      d       y Nr           )r   r:   beir<   s    r>   test_beizTestCephes.test_bei       VZZ]3'rA   c                 B    t        t        j                  d      d       y r   )r   r:   beipr<   s    r>   	test_beipzTestCephes.test_beip       V[[^C(rA   c                 B    t        t        j                  d      d       y Nr   r   )r   r:   berr<   s    r>   test_berzTestCephes.test_ber   r   rA   c                 B    t        t        j                  d      d       y r   )r   r:   berpr<   s    r>   	test_berpzTestCephes.test_berp   r   rA   c                 F    t        t        j                  ddd      d       y r   )r   r:   
besselpolyr<   s    r>   test_besselpolyzTestCephes.test_besselpoly   s    V&&q1-c2rA   c                 H    t        t        j                  d      ddd       y )NrV   r   ư>r   rY   )r   r:   cbrtr<   s    r>   	test_cbrtzTestCephes.test_cbrt   s    A$Q?rA   c                 D    t        t        j                  dd      d       y NrV   r   r   )r   r:   chdtrr<   s    r>   
test_chdtrzTestCephes.test_chdtr   s    V\\!A&s+rA   c                 D    t        t        j                  dd      d       y NrV   r   r   )r   r:   chdtrcr<   s    r>   test_chdtrczTestCephes.test_chdtrc       V]]1Q',rA   c                 D    t        t        j                  dd      d       y NrV   r   )r   r:   chdtrir<   s    r>   test_chdtrizTestCephes.test_chdtri   r   rA   c                 F    t        t        j                  ddd      d       y Nr   rV   r   )r   r:   chndtrixr<   s    r>   test_chndtrixzTestCephes.test_chndtrix       V__Qq+C0rA   c                 B    t        t        j                  d      d       y r   )r   r:   cosdgr<   s    r>   
test_cosdgzTestCephes.test_cosdg       V\\!_S)rA   c                 B    t        t        j                  d      d       y r   )r   r:   cosm1r<   s    r>   
test_cosm1zTestCephes.test_cosm1   r   rA   c                 H    t        t        j                  d      ddd       y )N-   r   v!>r   rY   )r   r:   cotdgr<   s    r>   
test_cotdgzTestCephes.test_cotdg   s    R(#FCrA   c                     t        t        j                  d      d       t        t        j                  d      d       y )Nr   r   gGz?gf?)r   r:   dawsnr   r<   s    r>   
test_dawsnzTestCephes.test_dawsn   s(    V\\!_S)T*,?@rA   c                 0   g d}t        j                  dt         j                  z  dz         j                  t         j                        }t        t        j                  ||      ddd       t        j                  dt         j                  z  dz         j                  t         j                        }t        t        j                  ||      dd	d       t        j                  dt         j                  z  d
z         j                  t         j                        }t        t        j                  ||      dd	d       t        t         d      rit        j                  dt         j                  z  dz         j                  t         j                        }t        t        j                  ||      ddd       g d}t        j                  dt         j                  z  dz         j                  t         j                        }t        t        j                  ||      dd	d       t        j                  dt         j                  z  dt         j                  z  dt         j                  z        }g d}t        t        j                  |d      |d	d       y )N)rV         rH   g-C6
?r   r   r   rY   &.> [n<V瞯<float128r   g"<)rH   rF            皙?)gg?gsOB?gsaL?g
7I^ʿr   )r[   r   r   astypefloat32r   r   diricfloat64hasattrr   r   )r=   n_oddxn_evenoctave_results        r>   
test_diriczTestCephes.test_diric   s    HHQruuWt^$++BJJ7a/6JHHQruuWt^$++BJJ7a/7KHHQruuWu_%,,RZZ8a/7K2z"2555)00=AGMM!U3SwQOHHQruuWt^$++BJJ7a0$W1M IIc"%%iRUUCI6@a+]qQrA   c                 
   t        j                  d      }t        j                  g d      }t        t	        j
                  |d d t         j                  f   |      j                  |j                  |j                  fk(         y )Nr   )rV   r   rJ   )	r[   r   r   r   r   r   newaxisshapesize)r=   r   rd   s      r>   test_diric_broadcastingz"TestCephes.test_diric_broadcasting   sU    IIaLHHYa2::.288QVVQVV<LLMrA   c                 B    t        t        j                  d      d       y NrV   r   )r   r:   r   r<   s    r>   test_ellipezTestCephes.test_ellipe       V]]1%c*rA   c                 D    t        t        j                  dd      d       y r   )r   r:   	ellipeincr<   s    r>   test_ellipeinczTestCephes.test_ellipeinc       V%%a*3/rA   c                 0    t        j                  dd       y Nr   rV   )r:   ellipjr<   s    r>   test_ellipjzTestCephes.test_ellipj   s    arA   c                 <    t        t        d      t        dz         y )Nr   rH   )r   r   r   r<   s    r>   test_ellipkzTestCephes.test_ellipk   s    q	2a4(rA   c                 D    t        t        j                  dd      d       y r   )r   r:   	ellipkincr<   s    r>   test_ellipkinczTestCephes.test_ellipkinc   r   rA   c                 B    t        t        j                  d      d       y r   r   r:   erfr<   s    r>   test_erfzTestCephes.test_erf   s    VZZ]C(rA   c                 t    d}t        t        j                  |      t        j                  |       z   d       y )Ng#8x@r   r   r=   r   s     r>   test_erf_symmetryzTestCephes.test_erf_symmetry   s(    VZZ]VZZ^3S9rA   c                 B    t        t        j                  d      d       y r   )r   r:   erfcr<   s    r>   	test_erfczTestCephes.test_erfc   s    V[[^S)rA   c                 H    t        t        j                  d      ddd       y )NrH   g      Y@r   r   rY   )r   r:   exp10r<   s    r>   
test_exp10zTestCephes.test_exp10   s    QTBrA   c                 B    t        t        j                  d      d       y )NrH         @)r   r:   exp2r<   s    r>   	test_exp2zTestCephes.test_exp2  r   rA   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
                         y )Nr   r   rK   )r   r:   expm1r[   r   nanr<   s    r>   
test_expm1zTestCephes.test_expm1  sc    V\\!_S)V\\"&&)2662V\\266'*B/V\\"&&)2662rA   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                               y )N                r   rV   rH   rF   r   rK   )r:   r	  r   complexr[   r   r
  )r=   r	  s     r>   test_expm1_complexzTestCephes.test_expm1_complex  s   U6]F+U72661-.0BCU72661-.0GHU72661-.0HIU72661-."&&0IJU72661-.0HIU71bff-.0GHU71bff-.0GHU726626623WRVVRVV5LMU7BFF7BFF34gb!nEU7BFF7BFF34gb!nEU726626623WRVVRVV5LMU71bff-.0GHU71bff-.0GHU72661-.0GHU726626623WRVVRVV5LMrA   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       y )N)皙?r   333333?r      rl                 ?)y=Cw?yC7gg)gF<Ug?yQ<D*?yg:><sKy>񸣼$	Um>ly;Vl <@r   rl   )	r[   r   r   r
   r:   r	  r   imagr   )r=   yr   zexpectedfounds         r>   test_expm1_complex_hardz"TestCephes.test_expm1_complex_hard  s     HH/0VVBFF1I1H 88 J K Q&uzz8==!D&uzz8=="ErA   c                     t        t        j                  ddd      d       t        t        j                  ddd      dd	       y )
NrV   r   r   r   r   
   g2?r   rO   )r   r:   fdtrr   r<   s    r>   	test_fdtrzTestCephes.test_fdtr4  s6    V[[Aq)3/D!R02D"	$rA   c                     t        t        j                  ddd      d       t        t        j                  ddd      dd	       y )
NrV   r   r   rH   r  g    _BgDIXl?r   rO   )r   r:   fdtrcr   r<   s    r>   
test_fdtrczTestCephes.test_fdtrc:  s8    V\\!Q*C0 	QT24G"	$rA   c                     t        t        j                  ddddg      t        ddg      d       d}t        t        j                  d	d|      d
d       y )NrV   gV-?gx&1?g
}?g<zO'?r   rO   g׀?r  r   r   )r   r:   fdtrir   )r=   ps     r>   
test_fdtrizTestCephes.test_fdtriA  sM    QE5>:y*56T	C %S!Q/?rA   c                     d\  }}}t        t        j                  ||t        j                  |||            |d       y )N)rV   P  g\/չ=@r   rO   )r   r:   r%  r  )r=   dfddfnr   s       r>   test_gh20835zTestCephes.test_gh20835I  s4    1S!S#v{{3Q/GH!RWXrA   c                 F    t        t        j                  ddd      d       y )NrV   r   )r   r:   r%  r<   s    r>   test_fdtri_mysterious_failurez(TestCephes.test_fdtri_mysterious_failureN  s    Q3/3rA   c                 F    t        t        j                  ddd      d       y )NrV   r         @)r   r:   fdtridfdr<   s    r>   test_fdtridfdzTestCephes.test_fdtridfdQ  r   rA   c                 B    t        t        j                  d      d       y Nr   r   r   )r   r:   fresnelr<   s    r>   test_fresnelzTestCephes.test_fresnelT  s    V^^A&y1rA   c                 B    t        t        j                  d      d       y Nr         8@)r   r:   gammar<   s    r>   
test_gammazTestCephes.test_gammaW  s    V\\!_T*rA   c                 D    t        t        j                  dd      d       y )Nr   rV   r   )r   r:   gammainccinvr<   s    r>   test_gammainccinvzTestCephes.test_gammainccinvZ  s    V((1-c2rA   c                 .    t        j                  d       y )Nr  )r:   gammalnr<   s    r>   test_gammalnzTestCephes.test_gammaln]  s    rrA   c                 h   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                  |      |       y )
N      gffffff       r   rV   g@r   r   )r[   r   r   r   r
  r   r:   gammasgn)r=   vals	references      r>   test_gammasgnzTestCephes.test_gammasgn`  s    xxffWb$dCC@"**
 HHVVRVVS$c3SA2::
	 	6??40)<rA   c                 F    t        t        j                  ddd      d       y r   )r   r:   gdtrr<   s    r>   	test_gdtrzTestCephes.test_gdtri      V[[1Q',rA   c                 b    t        t        j                  ddt        j                        d       y r   )r   r:   rL  r[   r   r<   s    r>   test_gdtr_infzTestCephes.test_gdtr_infl  s    V[[1RVV,S1rA   c                 F    t        t        j                  ddd      d       y r   )r   r:   gdtrcr<   s    r>   
test_gdtrczTestCephes.test_gdtrco      V\\!Aa(-rA   c                 F    t        t        j                  ddd      d       y r   )r   r:   gdtriar<   s    r>   test_gdtriazTestCephes.test_gdtriar      V]]1Qq)#.rA   c                 2    t        j                  ddd       y NrV   r   )r:   gdtribr<   s    r>   test_gdtribzTestCephes.test_gdtribu  s    a!rA   c                 2    t        j                  ddd       y NrV   r  )r:   gdtrixr<   s    r>   test_gdtrixzTestCephes.test_gdtrixy  s    a"rA   c                 0    t        j                  dd       y rr   )r:   hankel1r<   s    r>   test_hankel1zTestCephes.test_hankel1|      qrA   c                 0    t        j                  dd       y rr   )r:   hankel1er<   s    r>   test_hankel1ezTestCephes.test_hankel1e      !rA   c                 0    t        j                  dd       y rr   )r:   hankel2r<   s    r>   test_hankel2zTestCephes.test_hankel2  rd  rA   c                 0    t        j                  dd       y rr   )r:   hankel2er<   s    r>   test_hankel2ezTestCephes.test_hankel2e  rh  rA   c                     t        t        j                  ddd      t        d      dd       t        t        j                  ddd      d	dd       t        j                  ddd       y )
NrV   r   r   r   rY   r   rF   g㈮?)r   r:   hyp1f1r   r<   s    r>   test_hyp1f1zTestCephes.test_hyp1f1  sP    aA.Ct!LaB/1H!	+a!rA   c                 H    t        t        j                  dddd      d       y r   )r   r:   hyp2f1r<   s    r>   test_hyp2f1zTestCephes.test_hyp2f1      V]]1Qq+C0rA   c                 B    t        t        j                  d      d       y r   )r   r:   i0r<   s    r>   test_i0zTestCephes.test_i0      VYYq\#&rA   c                 B    t        t        j                  d      d       y r   )r   r:   i0er<   s    r>   test_i0ezTestCephes.test_i0e  r   rA   c                 B    t        t        j                  d      d       y r   )r   r:   i1r<   s    r>   test_i1zTestCephes.test_i1  rz  rA   c                 B    t        t        j                  d      d       y r   )r   r:   i1er<   s    r>   test_i1ezTestCephes.test_i1e  r   rA   c                 .    t        j                  d       y rr   )r:   it2i0k0r<   s    r>   test_it2i0k0zTestCephes.test_it2i0k0      qrA   c                 .    t        j                  d       y rr   )r:   it2j0y0r<   s    r>   test_it2j0y0zTestCephes.test_it2j0y0  r  rA   c                 .    t        j                  d       y rr   )r:   
it2struve0r<   s    r>   test_it2struve0zTestCephes.test_it2struve0  s    !rA   c                 .    t        j                  d       y rr   )r:   itairyr<   s    r>   test_itairyzTestCephes.test_itairy      arA   c                 B    t        t        j                  d      d       y r4  )r   r:   iti0k0r<   s    r>   test_iti0k0zTestCephes.test_iti0k0      V]]1%i0rA   c                 B    t        t        j                  d      d       y r4  )r   r:   itj0y0r<   s    r>   test_itj0y0zTestCephes.test_itj0y0  r  rA   c                 B    t        t        j                  d      d       y r   )r   r:   itmodstruve0r<   s    r>   test_itmodstruve0zTestCephes.test_itmodstruve0  s    V((+C0rA   c                 B    t        t        j                  d      d       y r   )r   r:   	itstruve0r<   s    r>   test_itstruve0zTestCephes.test_itstruve0  s    V%%a(-rA   c                 D    t        t        j                  dd      d       y r   )r   r:   ivr<   s    r>   test_ivzTestCephes.test_iv      VYYq^C(rA   c                 D    t        t        j                  dd      d       y r   )r   r:   iver<   s    r>   test_ivezTestCephes.test_ive      VZZ!_S)rA   c                 B    t        t        j                  d      d       y r   )r   r:   j0r<   s    r>   test_j0zTestCephes.test_j0  rz  rA   c                 B    t        t        j                  d      d       y r   )r   r:   j1r<   s    r>   test_j1zTestCephes.test_j1  rz  rA   c                 D    t        t        j                  dd      d       y r   )r   r:   jnr<   s    r>   test_jnzTestCephes.test_jn  r  rA   c                 D    t        t        j                  dd      d       y r   )r   r:   jvr<   s    r>   test_jvzTestCephes.test_jv  r  rA   c                 D    t        t        j                  dd      d       y r   )r   r:   jver<   s    r>   test_jvezTestCephes.test_jve  r  rA   c                 .    t        j                  d       y NrH   )r:   k0r<   s    r>   test_k0zTestCephes.test_k0      		!rA   c                 .    t        j                  d       y r  )r:   k0er<   s    r>   test_k0ezTestCephes.test_k0e      

1rA   c                 .    t        j                  d       y r  )r:   k1r<   s    r>   test_k1zTestCephes.test_k1  r  rA   c                 .    t        j                  d       y r  )r:   k1er<   s    r>   test_k1ezTestCephes.test_k1e  r  rA   c                 .    t        j                  d       y r  )r:   keir<   s    r>   test_keizTestCephes.test_kei  r  rA   c                 B    t        t        j                  d      d       y r   )r   r:   keipr<   s    r>   	test_keipzTestCephes.test_keip  r   rA   c                 .    t        j                  d       y r  )r:   kerr<   s    r>   test_kerzTestCephes.test_ker  r  rA   c                 .    t        j                  d       y r  )r:   kerpr<   s    r>   	test_kerpzTestCephes.test_kerp  r@   rA   c                 .    t        j                  d       y r  )r:   kelvinr<   s    r>   test_kelvinzTestCephes.test_kelvin  r  rA   c                 0    t        j                  dd       y rr   )r:   knr<   s    r>   test_knzTestCephes.test_kn      		!ArA   c                     t        t        j                  d      d       t        t	        j
                  t        j                  t        j                                     y r   )r   r:   kolmogir   r[   r   r
  r<   s    r>   test_kolmogizTestCephes.test_kolmogi  s3    V^^A&s+/01rA   c                 B    t        t        j                  d      d       y r   )r   r:   
kolmogorovr<   s    r>   test_kolmogorovzTestCephes.test_kolmogorov  s    V&&q)3/rA   c                 B    t        t        j                  d      d       y )Nr   rF  )r   r:   _kolmogpr<   s    r>   test_kolmogpzTestCephes.test_kolmogp  s    V__Q'.rA   c                 B    t        t        j                  d      d       y r   )r   r:   _kolmogcr<   s    r>   test_kolmogczTestCephes.test_kolmogc  s    V__Q'-rA   c                     t        t        j                  d      d       t        t	        j
                  t        j                  t        j                                     y r   )r   r:   	_kolmogcir   r[   r   r
  r<   s    r>   test_kolmogcizTestCephes.test_kolmogci  s7    V%%a(#.))"&&123rA   c                 0    t        j                  dd       y rr   )r:   kvr<   s    r>   test_kvzTestCephes.test_kv  r  rA   c                 0    t        j                  dd       y rr   )r:   kver<   s    r>   test_kvezTestCephes.test_kve      

1QrA   c                 &   t         j                  }t         |d      d       t         |d      t        j                          t         |d      t        j
                         t         |t        j                        t        j                         y )Nr   r   rK   )r:   log1pr   r[   r   r
  )r=   r  s     r>   
test_log1pzTestCephes.test_log1p  sU    U1Xs#U2Y(U2Y'U266]BFF+rA   c           	      @   t         j                  }t        }t         |d      d       t         | |dd             |t        j
                   d             t        j                         5  t        j                  ddt               t         | |dt        j
                               |t        j
                  t        j                  dz               t         | |dt        j                               |t        j                  t        j                               t         | |t        j
                   d             |t        j
                  t        j                               t         | |t        j
                  d             |t        j
                  d             t         | |t        j
                   t        j
                               |t        j
                  dt        j                  z  d	z               t         | |t        j
                  t        j
                               |t        j
                  t        j                  d	z               t         | |t        j
                  t        j                               |t        j
                  t        j                               t         | |t        j
                   t        j                               |t        j
                  t        j                               t         | |t        j                  t        j
                               |t        j
                  t        j                               t         | |t        j                  d             |t        j                  t        j                               t         | |t        j                  t        j                               |t        j                  t        j                               d d d        y # 1 sw Y   y xY w)
Nr  rK   r   ignorez%invalid value encountered in multiplyrV   rH   r   rF   )r:   r  r  r   r[   r   warningscatch_warningsfilterwarningsRuntimeWarningr   r   r
  )r=   r  cs      r>   test_log1p_complexzTestCephes.test_log1p_complex  sa   U6]F+U1R8_am4$$& 	F##A>SE!Arvv,/26625571CDqBFF|,a.?@E!RVVGQ-0!BFFBEE2BCq|,al;E!RVVGRVV"45q2557KLE!BFFBFF"34aa6HIq011RVVRVV3DEq"&&"&&12Abffbff4EFq011RVVRVV3DEq|,a.?@q011RVVRVV3DE	F 	F 	Fs   ,NPPc                 F    t        t        j                  ddd      d       y )Nr   rV   r   )r   r:   lpmvr<   s    r>   	test_lpmvzTestCephes.test_lpmv  rN  rA   c                 x    t        j                  g d      }t        t        j                  |d      |dz         y N)rV   rH   r   r   rH   )r[   r   r   r:   	mathieu_ar=   ms     r>   test_mathieu_a_q0zTestCephes.test_mathieu_a_q0  +    HHYV%%a+QT2rA   z	m, q, ref))r      gs66%)r         ?g:$Zb"@)r         ?g5`VU 9@)r  gq^A3P@c                 L    t        j                  ||      }t        ||d       y Nr   rO   )r:   r  r   r=   r  qrefr  s        r>   test_mathieu_azTestCephes.test_mathieu_a$  "     Q"3U+rA   c                 x    t        j                  g d      }t        t        j                  |d      |dz         y r  )r[   r   r   r:   	mathieu_br   s     r>   test_mathieu_b_q0zTestCephes.test_mathieu_b_q0/  r  rA   ))rV   rz   g*|2T6)r   r   gkBv/9@)	   r  ggf@T@)r  gY@c                 L    t        j                  ||      }t        ||d       y r	  )r:   r  r   r
  s        r>   test_mathieu_bzTestCephes.test_mathieu_b6  r  rA   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       y )NrV   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?rV   r   rH   r  r   rF      r  )r[   r   r
   r  r  r  s      r>   	ce_smallqz.TestCephes.test_mathieu_cem.<locals>.ce_smallqE  s    sNAAv A1S1X$566a1v!c!A#h..a1Q3x!S1Xb[3%6"777 1Q3x!S!A#q\1ac7%;c1Q3'lAqQRsG>T%T"UUUrA   d   r  rh|?+=rP   rZ   )	r   r:   mathieu_cemr[   r{   r   r   rn   r   )r=   r  r  r  s       r>   test_mathieu_cemzTestCephes.test_mathieu_cemA  s    V''!A.y9 
	V 
	V IIaEE!R[[b"--.**1QtV9aQiGJ!!AdF)QtAvY>"	,rA   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       y )NrV   r   r   r   c                 V   |t         j                  dz  z  }| dk(  r t        |      |dz  t        d|z        z  z
  S | dk(  r#t        d|z        |t        d|z        z  dz  z
  S t        | |z        |t        | dz   |z        d| dz   z  z  t        | dz
  |z        d| dz
  z  z  z
  z  z
  S )Nr  rV   r  r   rH   rF   r  )r[   r   r	   r  s      r>   	se_smallqz.TestCephes.test_mathieu_sem.<locals>.se_smallq^  s    sNAAv1v!c!A#h..a1Q3x!C!H*R-// 1Q3x!S!A#q\1ac7%;c1Q3'lAqQRsG>T%T"UUUrA   r  r  r  r  r   r!  r"  )	r   r:   mathieu_semr[   r{   r   r   rn   r   )r=   r(  r  r  s       r>   test_mathieu_semzTestCephes.test_mathieu_semZ  s    V''!A.y9 

	V 

	V IIaEE!R[[b"--.**1QtV9aQiGJ!!AdF)QtAvY>"	,rA   c                 F    t        t        j                  ddd      d       y NrV   r   r5  )r   r:   mathieu_modcem1r<   s    r>   test_mathieu_modcem1zTestCephes.test_mathieu_modcem1p      V++Aa29=rA   c                 B   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	       y )
NrV   r   rF   r  rH   r  rJ   rX   rO   )	r:   mathieu_modcem2r[   r   r   rn   linspacer-  r   r=   r  r  r  y1fry2s          r>   test_mathieu_modcem2zTestCephes.test_mathieu_modcem2s  s   q1% IIaOAd4K(EE"++b!R()$q+6KK1a d1-##Aq1"-a0$$Q1-a0063I3I!QPQ3RST3UU%%aA.q11"V++Aq!4Q778 	BU+rA   c                 F    t        t        j                  ddd      d       y r,  )r   r:   mathieu_modsem1r<   s    r>   test_mathieu_modsem1zTestCephes.test_mathieu_modsem1  r/  rA   c                 >   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	       y )
NrV   rF   r  rH   r  r   rJ   rX   rO   )	r:   mathieu_modsem2r[   r   r   rn   r2  r9  r   r3  s          r>   test_mathieu_modsem2zTestCephes.test_mathieu_modsem2  s   q1% IIaOAd4K(EE"++b!R()$q+6KK1a d1-##Aq1"-a0##Aq!,Q/&2H2HAq2QRS2TT$$Q1-a0"V++Aq!4Q778BU+rA   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       y )N'  r   g?r  )
r   r:   r#  r[   r
  r)  r-  r9  r1  r<  r<   s    r>   test_mathieu_overflowz TestCephes.test_mathieu_overflow  s2   V''q#68HIV''q#68HIV''sC8266266:JKV''sC8266266:JKV++E3<rvvrvv>NOV++E3<rvvrvv>NOV++E3<rvvrvv>NOV++E3<rvvrvv>NOrA   c                     t        d      D ];  }t        j                  ddd      }t        |d   dd       t        |d	   d
d       = y )N<   rH   r  rK   r   g.dS?rX   rO   rV   gGc?-C6?)rt   r:   r<  r   )r=   re   vs      r>   test_mathieu_ticket_1847z#TestCephes.test_mathieu_ticket_1847  sO     r 	GA&&q#r2AAaD":GAaD":F		GrA   c                 .    t        j                  d       y r9   )r:   modfresnelmr<   s    r>   test_modfresnelmzTestCephes.test_modfresnelm      1rA   c                 .    t        j                  d       y r9   )r:   modfresnelpr<   s    r>   test_modfresnelpzTestCephes.test_modfresnelp  rI  rA   c                 D    t        t        j                  dd      d       y r   )r   r:   	modstruver<   s    r>   test_modstruvezTestCephes.test_modstruve  r   rA   c                 F    t        t        j                  ddd      d       y r   )r   r:   nbdtrr<   s    r>   
test_nbdtrzTestCephes.test_nbdtr  rT  rA   c                 F    t        t        j                  ddd      d       y r   )r   r:   nbdtrcr<   s    r>   test_nbdtrczTestCephes.test_nbdtrc  rX  rA   c                 F    t        t        j                  ddd      d       y r   )r   r:   nbdtrir<   s    r>   test_nbdtrizTestCephes.test_nbdtri  rX  rA   c                 2    t        j                  ddd       y )NrV   rI   r   )r:   nbdtrikr<   s    r>   test_nbdtrikzTestCephes.test_nbdtrik  s    qBrA   c                 H    t        t        j                  dddd      d       y r   )r   r:   ncfdtrr<   s    r>   test_ncfdtrzTestCephes.test_ncfdtr  rv  rA   c                     t        t        j                  dddd      d       g d}t        j                  ddd|      }t	        t        j                  ddd|      |       y )NrV   r   r   )r   rV   r  rH   r   r  )r   r:   ncfdtrir]  r   )r=   fr&  s      r>   test_ncfdtrizTestCephes.test_ncfdtri  sM    V^^Aq!Q/5MM!QQ'q!S!4a8rA   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      |       y )NrV   rH   r   rH   r  rz   )r:   r]  r   
ncfdtridfd)r=   r*  r&  s      r>   test_ncfdtridfdzTestCephes.test_ncfdtridfd  s8     MM!S$+))!Qb93?rA   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       y )N)r  rV   rH   r   g     @rH   r  rz   gh㈵>rO   )r:   r]  r   
ncfdtridfn)r=   r+  r&  s      r>   test_ncfdtridfnzTestCephes.test_ncfdtridfn  s:     "MM#q$+))!Qb93TJrA   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      |       y )N)r   r         @rH   r   rz   )r:   r]  r   	ncfdtrinc)r=   ncr&  s      r>   test_ncfdtrinczTestCephes.test_ncfdtrinc  s8     MM!QB'((Aq"5r:rA   c           	      X   t        t        j                  ddd      d       t        t        j                  ddd      d       t        t        j                  t        j
                  dd      dd	d
       t        t	        j                  t        j                  dt        j
                  d                   t        t        j                  ddt        j
                        ddd
       t        t	        j                  t        j                  t        j                  dd                   t        t	        j                  t        j                  dt        j                  d                   t        t	        j                  t        j                  ddt        j                                     y )NrV   r   r   r  i   r   r   r   rC  rY   rk        $@r   )	r   r:   nctdtrr   r[   r   r   r   r
  r<   s    r>   test_nctdtrzTestCephes.test_nctdtr  s    V]]1Qq)#.V]]1eR0#6bffb"5sANr2663789b"bff5r1Mrvvr2678r2662678r2rvv678rA   c                 2    t        j                  ddd       y )NrV   r   r   )r:   	nctdtridfr<   s    r>   test_nctdtridfzTestCephes.test_nctdtridf  s    3q!rA   c                 2    t        j                  ddd       y rZ  )r:   	nctdtrincr<   s    r>   test_nctdtrinczTestCephes.test_nctdtrinc  s    1QrA   c                 2    t        j                  ddd       y )Nr  r   r   )r:   nctdtritr<   s    r>   test_nctdtritzTestCephes.test_nctdtrit  s    3r"rA   c                 L    t        t        j                  ddd      ddd       y )Nr   rV   r   r   r   rY   )r   r:   nrdtrimnr<   s    r>   test_nrdtrimnzTestCephes.test_nrdtrimn  s    Q2CdKrA   c                 4    t        j                  dddd       y rZ  )r:   obl_ang1r<   s    r>   test_obl_ang1zTestCephes.test_obl_ang1      !Aa rA   c                 ~    t        j                  ddddd      }t        |d   ddd       t        |d   ddd       y )NrV   r   r   r   rY   r   )r:   obl_ang1_cvr   )r=   results     r>   test_obl_ang1_cvzTestCephes.test_obl_ang1_cv  s>    ##Aa!A.q	3V!<q	3V!<rA   c                 F    t        t        j                  ddd      d       y NrV   r   rk  )r   r:   obl_cvr<   s    r>   test_obl_cvzTestCephes.test_obl_cv  rX  rA   c                 4    t        j                  dddd       y rZ  )r:   obl_rad1r<   s    r>   test_obl_rad1zTestCephes.test_obl_rad1
  r  rA   c                 6    t        j                  ddddd       y rZ  )r:   obl_rad1_cvr<   s    r>   test_obl_rad1_cvzTestCephes.test_obl_rad1_cv      1Qq1%rA   c                 4    t        j                  dddd       y rZ  )r:   obl_rad2r<   s    r>   test_obl_rad2zTestCephes.test_obl_rad2  r  rA   c                 6    t        j                  ddddd       y rZ  )r:   obl_rad2_cvr<   s    r>   test_obl_rad2_cvzTestCephes.test_obl_rad2_cv  r  rA   c                 D    t        t        j                  dd      d       y )NrV   r   r&  )r   r:   pbdvr<   s    r>   	test_pbdvzTestCephes.test_pbdv  s    V[[1%i0rA   c                 0    t        j                  dd       y rZ  )r:   pbvvr<   s    r>   	test_pbvvzTestCephes.test_pbvv      AarA   c                 0    t        j                  dd       y rZ  )r:   pbwar<   s    r>   	test_pbwazTestCephes.test_pbwa  r  rA   c                     t        j                  dd      }t        |t        j                  d      dd       t        j                  g dd      }t        |g d       y )Nr   rV   rK   r   rY   r   rV   rH   )rV   rV   rV   )r:   pdtrr   r[   r   r   r=   vals     r>   	test_pdtrzTestCephes.test_pdtr  sB    kk!QRVVBZf1=kk)Q'3	*rA   c                     t        j                  dd      }t        |dt        j                  d      z
  dd       t        j                  g dd      }t        |g d       y )	Nr   rV   rK   r   rY   r  r   )r   r   r   )r:   pdtrcr   r[   r   r   r  s     r>   
test_pdtrczTestCephes.test_pdtrc&  sF    ll1a Q^&qAll9c*3	*rA   c                     t        j                         5  d}t        j                  d|t               t	        j
                  dd       d d d        y # 1 sw Y   y xY w)N-floating point number truncated to an integerr  r   )r  r  r  r  r:   pdtrir=   msgs     r>   
test_pdtrizTestCephes.test_pdtri-  sH    $$& 	"AC##Hc>BLLS!	" 	" 	"s   4AAc                 4    t        j                  dddd       y rZ  )r:   pro_ang1r<   s    r>   test_pro_ang1zTestCephes.test_pro_ang14  r  rA   c           	      b    t        t        j                  ddddd      t        d      dd       y )NrV   r   r  r   rY   )r   r:   pro_ang1_cvr   r<   s    r>   test_pro_ang1_cvzTestCephes.test_pro_ang1_cv7  s+    **1aAq95;L#!	-rA   c                 F    t        t        j                  ddd      d       y r  )r   r:   pro_cvr<   s    r>   test_pro_cvzTestCephes.test_pro_cv;  rX  rA   c                 4    t        j                  dddd       y r^  )r:   pro_rad1r<   s    r>   test_pro_rad1zTestCephes.test_pro_rad1>  s    !Ac"rA   c                 6    t        j                  ddddd       y rZ  )r:   pro_rad1_cvr<   s    r>   test_pro_rad1_cvzTestCephes.test_pro_rad1_cvA  r  rA   c                 4    t        j                  dddd       y rZ  )r:   pro_rad2r<   s    r>   test_pro_rad2zTestCephes.test_pro_rad2D  r  rA   c                 6    t        j                  ddddd       y rZ  )r:   pro_rad2_cvr<   s    r>   test_pro_rad2_cvzTestCephes.test_pro_rad2_cvG  r  rA   c                 .    t        j                  d       y rr   )r:   psir<   s    r>   test_psizTestCephes.test_psiJ  r  rA   c                 F    t        t        j                  ddd      d       y r9   )r   r:   radianr<   s    r>   test_radianzTestCephes.test_radianM  s    V]]1Qq)!,rA   c                 B    t        t        j                  d      d       y r   )r   r:   rgammar<   s    r>   test_rgammazTestCephes.test_rgammaP  r   rA   c                 x   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       y )N333333@      @333333      g@r  gg            @rE  )r   r:   roundr<   s    r>   
test_roundzTestCephes.test_roundS  st    V\\#&s+V\\$'-V\\#&s+V\\$'-V\\#&s+V\\$'-rA   c                 .    t        j                  d       y rr   )r:   shichir<   s    r>   test_shichizTestCephes.test_shichi[  r  rA   c                    t        j                  d       t        j                  t        j                        \  }}t	        |t        j
                  dz  dd       t	        |ddd       t        j                  t        j                         \  }}t	        |t        j
                   dz  dd       t        t        j                  |      d       y )NrV   r   r   r   rY   z cosine integral(-inf) is not nan)r:   sicir[   r   r   r   r   r   )r=   sr  s      r>   	test_sicizTestCephes.test_sici^  s    A{{266"12553;V!<162{{BFF7#1BEE6C<f1=?@rA   c                 B    t        t        j                  d      d       y NZ   r   )r   r:   sindgr<   s    r>   
test_sindgzTestCephes.test_sindgi      V\\"%c*rA   c                     t        t        j                  dd      d       t        t	        j
                  t        j                  dt        j                                     y )NrV   r  ?)r   r:   smirnovr   r[   r   r
  r<   s    r>   test_smirnovzTestCephes.test_smirnovl  s7    V^^Ab)#."&&123rA   c                 D   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                                     y )	NrV   r  rK   rH         ?      r   g      ȿ)r   r:   	_smirnovpr   r[   r   r
  r<   s    r>   test_smirnovpzTestCephes.test_smirnovpp  sk    V%%a,b1V%%a.0@AV%%a.0@A))!RVV456rA   c                    t        t        j                  dd      d       t        t	        j
                  t        j                  dt        j                                     t	        j                  dddd      }t        t        j                  d|      dt        j                  d|      z
  dd	       t	        j                  ddd
d      }t        t        j                  d|      dt        j                  d|      z
  dd	       y )NrV   r  r   r  Tendpointr   r   rY   r   rF   )
r   r:   	_smirnovcr   r[   r   r
  r2  r   r  )r=   x10x4s      r>   test_smirnovczTestCephes.test_smirnovcv  s    V%%a+C0))!BFF345kk!QT2((C0!fnnQ6L2L#!	-[[Aq40((B/V^^Ar5J1J#!	-rA   c           	      `   t        t        j                  dt        j                  dd            ddd       t        t        j                  dt        j                  dd            ddd       t	        t        j                  t        j                  dt
        j                                     y NrV   rI   r   r   rY   333333?)r   r:   r  smirnovir   r[   r   r
  r<   s    r>   test_smirnovizTestCephes.test_smirnovi  sp    q&//!S*ABC#!	-q&//!S*ABC#!	-266234rA   c           	      `   t        t        j                  dt        j                  dd            ddd       t        t        j                  dt        j                  dd            ddd       t	        t        j                  t        j                  dt
        j                                     y r  )r   r:   r  
_smirnovcir   r[   r   r
  r<   s    r>   test_smirnovcizTestCephes.test_smirnovci  sz    ((F,=,=a,EF#!	-((F,=,=a,EF#!	-**1RVV456rA   c                 B    t        t        j                  d      d       y r   )r   r:   spencer<   s    r>   test_spencezTestCephes.test_spence  r   rA   c                     t        t        j                  dd      d       t        t        j                  dd      ddd       t        t        j                  dd      ddd       y )	NrV   r   r   r  r   rY   rH   gMoF?)r   r:   stdtrr   r<   s    r>   
test_stdtrzTestCephes.test_stdtr  sI    V\\!A&s+Q*DvAFQ*NaPrA   c                 0    t        j                  dd       y )Nffffff?rV   )r:   stdtridfr<   s    r>   test_stdtridfzTestCephes.test_stdtridf  s    ArA   c                 0    t        j                  dd       y )NrV   r  )r:   stdtritr<   s    r>   test_stdtritzTestCephes.test_stdtrit  s    qrA   c                 D    t        t        j                  dd      d       y r   )r   r:   struver<   s    r>   test_struvezTestCephes.test_struve  r   rA   c                 B    t        t        j                  d      d       y )Nr   r   )r   r:   tandgr<   s    r>   
test_tandgzTestCephes.test_tandg  r  rA   c                 J    t        t        j                  dd      ddd       y )NrV   r   r   r   rY   )r   r:   tklmbdar<   s    r>   test_tklmbdazTestCephes.test_tklmbda  s    q!,cQGrA   c                 .    t        j                  d       y rr   )r:   y0r<   s    r>   test_y0zTestCephes.test_y0  r  rA   c                 .    t        j                  d       y rr   )r:   r4  r<   s    r>   test_y1zTestCephes.test_y1  r  rA   c                 0    t        j                  dd       y rr   )r:   ynr<   s    r>   test_ynzTestCephes.test_yn  r  rA   c                 0    t        j                  dd       y rr   )r:   yvr<   s    r>   test_yvzTestCephes.test_yv  r  rA   c                 0    t        j                  dd       y rr   )r:   yver<   s    r>   test_yvezTestCephes.test_yve  r  rA   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;<       y )=Ng@g+п皙ٿr  r  rk  r   r   g      "g      "@g4׵/Yg8EGr?r  gffffff@ig>@r   g|Pk?r  rV   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<rN   rO   )r  r1   r:   wofz)r=   r  ws      r>   	test_wofzzTestCephes.test_wofz  s   U8$gd2&6BS_gc#.B%f-ws3/?SG 4R]GCOWQs^R_gc#.T0B FFHGIKGHJHIKFFHGIKDGIHIKHIKJHGIHGIFFHFFHFFHFFH?!
D 	&++q!%8rA   N)__name__
__module____qualname__r?   rD   ri   ro   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  pytestmarkxfailr  r   r#  r'  r,  r.  r2  r7  r<  r?  rB  rJ  rM  rP  rS  rW  r\  r`  rc  rg  rk  rn  rr  ru  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  parametrizer  r  r  r$  r*  r.  r7  r:  r=  r@  rE  rH  rL  rO  rR  rU  rX  r[  r^  rb  rf  ri  rn  rr  ru  rx  r{  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r&   rA   r>   r7   r7   :   sn   2.2*.G,/00()()3@,--1**DAR2N
+0)0):*C)3N& [[MNF OF($$@Y
412+3=-2./1'('(111.)*''))*)20/.4,F(-3 [[	.,,3 [[	,,,,2,,>, >,	PG0.// 19 [[I  @@
 [[I  KK
 [[I  ;;

9" #L!=
/!&!&1++"!-/#&!&-+.	A+47-57+Q
-+H*9rA   r7   c                       e Zd Zd Zd Zd Zd Zej                  j                  d      d        Z
ej                  j                  d      d        Zy)	TestAiryc                    t        j                  d      }t        |t        g d      dd       t        j                  d      }t        |t        g d      dd       t        j                  d      }t        |t        g d	      dd       y )
NGz?)g*?gTk'kPĿge+?gyCyt?+i)+P>r   rY   g=
ףp=?)g'$'?geοgL?g
HVV?g
ףp=
׿)gl@D|?gV~׭ͿgU?g3{ɔ?)r   r;   r   r   r   s     r>   r?   zTestAiry.test_airy  ss     LL5!RS#!	-LL5!QR#!	-LL5!OP#!	-rA   c                 j   t        j                  d      }t        j                  d      }d gdz  }t        d      D ]"  }||   t	        dt        d      z        z  ||<   $ t        dd      D ]5  }||   t	        t        t        dt        d      z                     z  ||<   7 t        ||dd       y )N{Gz?rF   rH   gN贁N{?Tqs*>r   rY   )	r   rC   r;   rt   r   r   absr   r   )r=   abb1rd   s        r>   rD   zTestAiry.test_airye  s    MM$LLVAXq 	6AaD\$t*455BqE	6q 	BAaDc$|DJ'>"?@@AABqE	B2F3rA   c                    t        j                  d      }t        ddg      t        ddg      t        ddg      t        dd	g      f}t        ||d
d       t        j                  d      }t        |d   t        g d      dd       t        |d   t        g d      dd       t        |d   t        g d      dd       t        |d   t        g d      dd       y )NrH   glgoe2+
g(0[g X*JgUfݿg˰zU`?g4c1=C?gCuTa2U0*#?r   rY   r   )g&g(.2+
gRg}`g%́p~=rV   )g7;1[ge*JgVwgL g<3La㧝=)gNݿg3%IQ`?gZyΌ׿gʀ11^?g33tտr   )gqM0=C?g7uTg\G`?gp⍞vg$.m?)r   bi_zerosr   r   )r=   bibias      r>   test_bi_zeroszTestAiry.test_bi_zeros  s    a k:./k;/0k:./j+./1 	Cf15a 1u &:  ;
 %1	. 	1u &:  ;
 %1	. 	1u &:  ;
 %1	. 	1u &9  :
 %1	.rA   c           	          t        j                  d      }t        |t        dg      t        dg      t        dg      t        dg      fdd       y )	NrV   gcqg!xLgMSt$?g ~:p?r<  r   rY   )r   ai_zerosr   r   )r=   ais     r>   test_ai_zeroszTestAiry.test_ai_zeros  sM    a UK=1"K=1"F8_"F8_. $!		-rA   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       y )Nr)  rV   r  rX   rO   r   rY   rL   )guqgqHkZg4g9Ζ%gB~gL")gLgQO	gMQnGg3:g)}g )r   rD  r;   r7  r   )r=   r  zpai_zpxaip_zxai_zaip_z_ai_zpaip_zpai_envelopeaip_envelopes               r>   test_ai_zeros_bigzTestAiry.test_ai_zeros_big&  s     ' 0 0 72vv#LLOeQ%ll2.vq!A&2w 	E2E2 	[(!%a@|+QUC 	"1:@E	G 	2A:@E	GrA   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       y )Nr)  rV   r  rX   rO   r   rY   rL   )gx&gg-2+
gRgg`gu%́g{ )g K;1[g*JgVwg<w gd
3g/{
")r   r?  r;   r7  r   )r=   r  rH  bi_zpxbip_zxrM  bi_zbip_zbi_zpbip_zpbi_envelopebip_envelopes               r>   test_bi_zeros_bigzTestAiry.test_bi_zeros_big?  s     ' 0 0 72vv#LLO1dE%ll2.1eVA&2w 	E2E2 	[(!%a@|+QUC 	"1:@E	G 	2A:@E	GrA   N)r'  r(  r)  r?   rD   rB  rF  r*  r+  	fail_slowrR  r\  r.  rA   r>   r0  r0    sa    -4#.J- [[1G G0 [[1G GrA   r0  c                       e Zd Zd Zy)TestAssocLaguerrec                     t        j                  dd      }t        j                  ddd      }t        | |d      dd       t        j                  ddd      }t        | |d      dd       y )Nr  rV   r   r3  r   rY   )r   genlaguerreassoc_laguerrer   )r=   a1a2s      r>   test_assoc_laguerrez%TestAssocLaguerre.test_assoc_laguerreZ  s`      A&##Br!,BrFa8##Ab+BqEQ7rA   N)r'  r(  r)  re  r.  rA   r>   r_  r_  Y  s    8rA   r_  c                       e Zd Zd Zy)TestBesselpolyc                      y Nr.  r<   s    r>   r   zTestBesselpoly.test_besselpolyc      rA   N)r'  r(  r)  r   r.  rA   r>   rg  rg  b  s    rA   rg  c                   x    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y)
TestKelvinc                 L    t        j                  d      }t        |ddd       y )NrH   gT?iUMu>r   rY   )r   r   r   )r=   mbeis     r>   r   zTestKelvin.test_beih  s    {{1~0vAFrA   c                 L    t        j                  d      }t        |ddd       y )NrH   gD,X?rn  r   rY   )r   r   r   )r=   mbeips     r>   r   zTestKelvin.test_beipm  s    Q2aHrA   c                 L    t        j                  d      }t        |ddd       y )NrH   gPA4?rn  r   rY   )r   r   r   )r=   mbers     r>   r   zTestKelvin.test_berr  s    {{1~1QGrA   c                 L    t        j                  d      }t        |ddd       y )NrH   gii߿rn  r   rY   )r   r   r   )r=   mberps     r>   r   zTestKelvin.test_berpw  s    Q3&qIrA   c                 b    t        j                  d      }t        |t        g d      dd       y )Nr   g&jj@g+"@g(rw+@gU2@g`<6@r<  r   rY   )r   	bei_zerosr   r   )r=   r@  s     r>   test_bei_zeroszTestKelvin.test_bei_zeros|  s/    q!E #- .
 $!	-rA   c                 b    t        j                  d      }t        |t        g d      dd       y )Nr   )gyWo.@g╲ݏ @gנ{)@gK11@gWc"5@r3  r   rY   )r   
beip_zerosr   r   )r=   bips     r>   test_beip_zeroszTestKelvin.test_beip_zeros  s/      #U $8 9
 $!	-rA   c                 b    t        j                  d      }t        |t        g d      dd       y )Nr   g\@g6ُ@gӟHY'@g>"D0@ggaO;4@r<  r   rY   )r   	ber_zerosr   r   )r=   r   s     r>   test_ber_zeroszTestKelvin.test_ber_zeros  /    "U $. /
 $!	-rA   c                 b    t        j                  d      }t        |t        g d      dd       y )Nr   g '@gs%@gF ^-@gvۅj3@gB7@r<  r   rY   )r   
berp_zerosr   r   )r=   brps     r>   test_berp_zeroszTestKelvin.test_berp_zeros  s/      #U $. /
 $!	-rA   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       y )NrH   r  r3  r   rY   )r   r  r   r   r   r  r  r   r   r  r  )r=   mkelvs     r>   r  zTestKelvin.test_kelvin  s    q!AQ1B B 'AQ1B B 'Q',,q/"2D D 'Q',,q/"2D D F $!		-rA   c                 L    t        j                  d      }t        |ddd       y )NrH   g>ɿrn  r   rY   )r   r  r   )r=   mkeis     r>   r  zTestKelvin.test_kei  s    {{1~2aHrA   c                 L    t        j                  d      }t        |ddd       y )NrH   gr@d"?rn  r   rY   )r   r  r   )r=   mkeips     r>   r  zTestKelvin.test_keip  s    Q2aHrA   c                 L    t        j                  d      }t        |ddd       y )NrH   gܙUrn  r   rY   )r   r  r   )r=   mkers     r>   r  zTestKelvin.test_ker  s    {{1~3&qIrA   c                 L    t        j                  d      }t        |ddd       y )NrH   g^.n3Jrn  r   rY   )r   r  r   )r=   mkerps     r>   r  zTestKelvin.test_kerp  s    Q3&qIrA   c                 b    t        j                  d      }t        |t        g d      dd       y )Nr   gE>Q@gB= @gPN)@gm91@g
%5@r<  r   rY   )r   	kei_zerosr   r   )r=   r  s     r>   test_kei_zeroszTestKelvin.test_kei_zeros  r  rA   c                 b    t        j                  d      }t        |t        g d      dd       y )Nr   gWf,@g?"@gFZ*o+@gOpN2@gEa6@r<  r   rY   )r   
keip_zerosr   r   )r=   r  s     r>   test_keip_zeroszTestKelvin.test_keip_zeros  /    !!!$e %/ 0
 $!	-rA   c                    t        j                  d      }|\  }}}}}}}}	t        |t        g d      dd       t        |t        g d      dd       t        |t        g d      dd       t        |t        g d      dd       t        |t        g d	      dd       t        |t        g d
      dd       t        |t        g d      dd       t        |	t        g d      dd       y )Nr   r  r<  r   rY   rw  )#?Q5U@q89 %@ol`.@gO0q3@r  r  )gum.@gݏ @gs{)@g䠄11@gN(D!5@gS@g89@@g^C'@g1ZG0@g+ڇ4@r  )r   kelvin_zerosr   r   )
r=   tmpberzbeizkerzkeizberpzbeipzkerpzkeipzs
             r>   test_kelvin_zeroszTestKelvin.test_kelvin_zeros  s   ""1%=@:dD$ueUe %/ 0
 $!	- 	e %/ 0
 $!	- 	e %/ 0
 $!	- 	e %/ 0
 $!	- 	u &0  1
 $!	- 	u &0  1 $!	- 	u &0  1
 $!	- 	u &0  1
 $!	-rA   c                 b    t        j                  d      }t        |t        g d      dd       y )Nr   )r  r  r  r  gD;q3@r<  r   rY   )r   	ker_zerosr   r   )r=   r  s     r>   test_ker_zeroszTestKelvin.test_ker_zeros  r  rA   c                 b    t        j                  d      }t        |t        g d      dd       y )Nr   r  r<  r   rY   )r   
kerp_zerosr   r   )r=   r  s     r>   test_kerp_zeroszTestKelvin.test_kerp_zeros  r  rA   N)r'  r(  r)  r   r   r   r   ry  r}  r  r  r  r  r  r  r  r  r  r  r  r  r.  rA   r>   rl  rl  g  se    G
I
H
J
-----IIJJ--4-l--rA   rl  c                       e Zd Zd Zy)TestBernoullic                 b    t        j                  d      }t        |t        g d      dd       y )Nr   )r   r  g-!lV?r   g镲r   r<  r   rY   )r   	bernoullir   r   )r=   brns     r>   test_bernoullizTestBernoulli.test_bernoulli  s/    "U $, - $!	-rA   N)r'  r(  r)  r  r.  rA   r>   r  r    s    -rA   r  c                   "    e Zd ZdZd Zd Zd Zy)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       y )NrV   r   33333YN~h?   g6.8@rN   r   r"  rH   rF   rL   rO   )r   r   betar   r;  )r=   betbetgs      r>   	test_betazTestBeta.test_beta&  s    W\\!Q'-VV4gmmF6KLVS13E"	, ll1a a q!117==3CCT.rA   c                 h    t        t        j                  t        j                  dd                   y )NrK   rH   )r   r[   isinfr   r  r<   s    r>   test_beta_infzTestBeta.test_beta_inf0  s    b!,-.rA   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       y )NrV   r   r  r  r     gIs	@r!  r   r"  rH   rF   rN   rO   )r   r   betalnr   rA  r   r7  r  )r=   betlnr  s      r>   test_betalnzTestBeta.test_betaln3  s    W^^Aq)3/vv6/	1vs35G"	, q!$#gll1a()*s/rA   N)r'  r(  r)  __doc__r  r  r  r.  rA   r>   r  r  !  s    //	0rA   r  c                   	   e Zd ZdZd Zej                  j                  dg d      d        Zej                  j                  dg d      d        Z	ej                  j                  dg d	      d
        Z
ej                  j                  dej                  ej                  ej                  ej                  ej                   ej"                  g      ej                  j                  dg d      d               Zej                  j                  ddej(                  fdej(                  fdej(                  fej*                  ej*                  dfej(                  fej*                  ej*                  dfej(                  fej*                  ej*                  dfej(                  fdddddddej*                  dfdfdej*                  dfdfdej*                  dfdfej*                  ddfdfej*                  ddfdfej*                  ddfdfdej*                  dfdfdej*                  dfdfdej*                  dfdfej*                  ddfdfej*                  ddfdfej*                  ddfdfg      d        Zej                  j                  ddej(                  fdej(                  fdej(                  fej*                  ej*                  dfej(                  fej*                  ej*                  dfej(                  fej*                  ej*                  dfej(                  fdddd d!d"dej*                  dfdfdej*                  dfdfdej*                  dfdfej*                  ddfdfej*                  ddfdfej*                  ddfdfdej*                  dfdfdej*                  dfdfdej*                  dfdfej*                  ddfdfej*                  ddfdfej*                  ddfdfg      d#        Zej                  j                  d$ej0                  ej2                  g      d%        Zej                  j                  d&ej0                  d'fej2                  d(fg      ej                  j                  d)d*d+g      d,               Zy-).TestBetaIncz?
    Tests for betainc, betaincinv, betaincc, betainccinv.
    c                 F   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
         y )N)r   r  rV   rV   )r[   r   r   r   betainc
betaincinvbetainccbetainccinvr   s     r>   
test_a1_b1zTestBetaInc.test_a1_b1D  sz    HH\"W__Q1-q1W''1a0!4W%%aA.A6W((Aq11q59rA   z
a, b, x, p))rH   rF   g@w?r   )r  g     `e@rX   g*?)r  r  g"Yx;r  )g   `1?g    ئAg\aY4g    ?)rF   i g-߇)?g;?c                 ,   t        j                  |||      }t        ||d       t        j                  |||      }t        ||d       t        j                  |||      }t        ||d       t        j
                  |||      }t        ||d       y )Nr   rO   g-a=rN   )r   r  r   r  btdtriabtdtrib)	r=   r8  r9  r   r&  p1x1rc  r:  s	            r>   test_betainc_and_inversesz%TestBetaInc.test_betainc_and_inverses[  s~     __Q1%AE*1a(AE*__Q1%AE*__Q1%AE*rA   ))      @r  r  g     ?)      @g     *@g      ?g&?)      ?r  g333333?gFoE?)r        2@r   gg2$Z?)r  r  gZd;?g6)r  r:  r  g`<)      0@r  g?g<dEA>)g?g7Ê@g/3J?Hz>c                     t        j                  |||      }t        ||d       t        j                  |||      }t        ||d       y )N+<rO   gV瞯=)r   r  r   r  )r=   r8  r9  r   r&  r  r  s          r>   test_betaincc_betainccinvz%TestBetaInc.test_betaincc_betainccinvt  sD     aA&AE*  Aq)AE*rA   za, b, y, ref))cj,@r  ghHISOa gڭ Y;)g      ,@g      -@g둤g}c]춫;)r  g      .@gUv \U,gS^%:)rp  g      ?gMoigKB;)r  g    i@g1$-g\_cp:c                 N    t        j                  |||      }t        ||d       y )Nr!  rO   )r   r  r   )r=   r8  r9  r  r  r   s         r>   test_betaincinv_tiny_yz"TestBetaInc.test_betaincinv_tiny_y  s$    2 q!Q'3U+rA   funcargs))r   rH   r   )r         r   )r  rk  333333ӿ)r  rk  皙?c                     t        j                  d      5  t        j                  t         j                  d      5   ||  d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nraise)domainr  match)r   errstater*  r   SpecialFunctionError)r=   r  r  s      r>   test_betainc_domain_errorsz&TestBetaInc.test_betainc_domain_errors  s\     W- 	w;;8L d	 	 	 	s"   &A AA A	A  A)zargs,expected)r   r   r   )r   r   r   )r   r   r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   c                 @    t        j                  | }t        ||       y ri  )r   r  r   r=   r  r  observeds       r>   test_betainc_edge_casesz#TestBetaInc.test_betainc_edge_cases  s    < ??D)Xx(rA   )r  r   )r  r   )r  r   )r  r   )r  r   )r  r   c                 @    t        j                  | }t        ||       y ri  )r   r  r   r  s       r>   test_betaincc_edge_casesz$TestBetaInc.test_betaincc_edge_cases  s    < ##T*Xx(rA   dtypec                     t        j                  dg|      }t        j                  dg|      }t        j                  |||      }t	        ||dt        j
                  |      j                  z         y )Nr0  r  r   r  rO   )r[   r   r   r  r   r   eps)r=   r  r8  r   r  s        r>   test_gh21426zTestBetaInc.test_gh21426  s[     HHbT'HHcU%(##Aq!,RXXe_-@-@(@ArA   zdtype, rtolrC  r   za, b, x, reference)#B;gO
;r   gE]tE?)r   gؗҜ<r   gF]tE?c                     t        j                  ||      }t        j                  ||      }t        j                  ||      }t        j                  |||      }t	        |||       y )Nr  rO   )r[   r   r   r  r   )r=   r8  r9  r   rI  r  rP   ress           r>   test_gh22682zTestBetaInc.test_gh22682  sR     HHQe$HHQe$HHQe$ooaA&YT2rA   N)r'  r(  r)  r  r  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   r>   r  r  ?  s   :. [[	6
7+
7+ [[\
<=+=+ [[	7,,& [[Vgoow7I7I&-oow&-&6&68K8K&M N [[V &I JJN

 [[bff%bff%bff%ffbffc"BFF+ffbffc"BFF+ffbffc"BFF+""""""2663%2663%2663%ffc3%ffc3%ffc3%2663%2663%2663%ffc3%ffc3%ffc3%1	
:);:) [[bff%bff%bff%ffbffc"BFF+ffbffc"BFF+ffbffc"BFF+""""""2663%2663%2663%ffc3%ffc3%ffc3%2663%2663%2663%ffc3%ffc3%ffc3%1	
:);:) [[Wrzz2::&>?B @B [[]!zz40!zz5134 [[1EFHI3I43rA   r  c                       e Zd Zd Zd Zd Zd Zej                  j                  dg d      ej                  j                  ddd	g      d
               Z
d Zd Zd Zd Zy)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        t	        d      D cg c]  }t        j                  d|d       c}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 y c c}w )Nr  r   rF         ^@g     @j@Texactx   r  
repetition   r"  rl   r   rZ   rV   l   hU7`S?Q r  2   )
r   r   combr   rt   listr[   iinfors   max)r=   re   iir  s       r>   	test_combzTestCombinatorics.test_comb  s   b"X1v6tER+T2W\\"at4c:W\\"atEsK%)LQb!48LReBi9	G XXc]"W\\"bd$7<1||C40H<<< Ms   Ec                     d}d}t        j                  |      }t        j                  |      }t        j                  ||d      }t        j                  ||d      }||k(  sJ y )NF   rR   Tr  )r[   int64r   r  )r=   rd   re   np_nnp_kres_npres_pys          r>   test_comb_with_np_int64z)TestCombinatorics.test_comb_with_np_int64  sX    xx{xx{dD5a$/rA   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
       y )NrH   r   Tr  r   rK   FrH   rK   rH   r  r   r   rK   r   )r   r   r   r  )r   r   r  r   r<   s    r>   test_comb_zerosz!TestCombinatorics.test_comb_zeros  t    W\\!Qd3Q7W\\"at4a8W\\!Rt4a8W\\!Ru5q9^]CEWXrA   c                 (   d}t        j                  t        |      5  t        j                  ddd       d d d        t        j                  t        |      5  t        j                  ddd       d d d        y # 1 sw Y   FxY w# 1 sw Y   y xY w)	Nz`exact=True`r  r  rF   Tr  r   g@)r*  r   
ValueErrorr   r  r  s     r>   test_comb_exact_non_int_errorz/TestCombinatorics.test_comb_exact_non_int_error&  sr    ]]:S1 	-LLat,	-]]:S1 	-LLCt,	- 	-	- 	-	- 	-s   A<B<BBNr   r   r  r  TFc                     t        j                  |d|d      }|dk(  sJ |rt        |      t        u sJ t        j
                  sJ y y )Nr   Tr  rV   )r   r  typers   r[   r   )r=   r*  r  actuals       r>   test_comb_repetition_k_zeroz-TestCombinatorics.test_comb_repetition_k_zero-  sI    
 a%DA{{&+tF|s";;;;"rA   c                     t        j                  g d      }t        j                  |ddd      }t        j                  g d      }t	        ||       y )Nr+  r   FTr  )r   r   r   )r[   r   r   r  r   )r=   r*  r  r  s       r>   !test_comb_repetition_k_zero_arrayz3TestCombinatorics.test_comb_repetition_k_zero_array6  s<    HHZ a%DA88O,VX&rA   c                     t        t        j                  ddgddg      ddg       t        t        j                  dd      ddd       t        t        j                  ddd	
      d       y )Nr  r   rF        @g     @r   r   rY   Tr  i  )r   r   permr   r<   s    r>   	test_permzTestCombinatorics.test_perm=  sS    b"X1v6uFR+TQGW\\"at4c:rA   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
       y )NrH   r   Tr  r   rK   Fr#  r$  )r   r   r   r3  )r   r   r4  r   r<   s    r>   test_perm_zerosz!TestCombinatorics.test_perm_zerosB  r&  rA   c                    t        j                  t        d      5  t        j                  ddgddgd       d d d        t        j                  t        d	      5  t        j                  d
dd       d d d        t        j                  t        d	      5  t        j                  ddd       d d d        t        j                  t        d	      5  t        j                  ddd       d d d        t        j                  t        d	      5  t        j                  dd
d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   jxY w# 1 sw Y   y xY w)Nzscalar integersr  rV   rH   rF   r   Tr  zNon-integergffffff@rL   gffffffr   g333333      @)r*  r   r(  r   r4  r<   s    r>   test_perm_ivzTestCombinatorics.test_perm_ivI  s   ]]:->? 	5LL!Q!Qt4	5 ]]:]; 	-LLat,	-]]:]; 	.LLq-	.]]:]; 	.LLD-	.]]:]; 	/LLc.	/ 	/	5 	5	- 	-	. 	.	. 	.	/ 	/s;   D2D>E
EE"2D;>E
EE"E+N)r'  r(  r)  r  r!  r%  r)  r*  r+  r-  r/  r1  r5  r7  r:  r.  rA   r>   r	  r	    sn    = Y- [[S*-[[WtUm4< 5 .<';
Y/rA   r	  c                   N    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y)TestTrigonometricc                 P    t        j                  d      }d}t        ||dd       y )N   r  r   r   rY   r   r   r   )r=   cbcbrls      r>   r   zTestTrigonometric.test_cbrtY  s#    \\"DvA6rA   c                 P    t        j                  d      }d}t        ||dd       y )Ngfffff;@g鎖C@r3  r   rY   r?  )r=   cb1cbrl1s      r>   test_cbrtmorezTestTrigonometric.test_cbrtmore^  s#    ll4 Ua8rA   c                 p    t        j                  d      }t        t        dz        }t	        ||dd       y )Nr  rk  r3  r   rY   r   r   r
   r   r   )r=   cdgcdgrls      r>   r   zTestTrigonometric.test_cosdgc  s+    mmBBsFUa8rA   c                 p    t        j                  d      }t        t        dz        }t	        ||dd       y NrR   r9  r3  r   rY   rG  )r=   cdgmcdgmrls      r>   test_cosdgmorez TestTrigonometric.test_cosdgmoreh  s+    }}R RVf6:rA   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       y )Nr   r  r  rV   r3  rY   )r   r   r   r
   r   )r=   cscsrls      r>   r   zTestTrigonometric.test_cosm1m  sc    mmAw}}R0r"u1EFAqR3r"u:a<0DvA6rA   c                 v    t        j                  d      }t        t        dz        dz  }t	        ||dd       y )NrR   r9  rK   r3  r   rY   r   r   r   r   r   )r=   ctctrls      r>   r   zTestTrigonometric.test_cotdgr  s0    ]]22c6{R DvA6rA   c                 v    t        j                  d      }t        t        dz        dz  }t	        ||dd       y )Nr   r  rK   r3  r   rY   rS  )r=   ct1ctrl1s      r>   test_cotdgmorez TestTrigonometric.test_cotdgmorew  s0    mmBBsFb!Ua8rA   c                 x   t        t        j                  d      ddd       t        t        j                  d      ddd       t        t        j                  d      d	dd       t        t        j                  d
      d	dd       t        t        j                  d      ddd       t        t        j                  d      ddd       t        t        j                  d      ddd       t        t        j                  d      ddd       t        t        j                  d      d	dd       t        t        j                  d      d	dd       t        t        j                  d      ddd       t        t        j                  d      ddd       t        t        j                  d      ddd       y )Nr   r   t=r   rY   r   r  r   i   y   i  i;  i  )r   r   r   r<   s    r>   test_specialpointsz$TestTrigonometric.test_specialpoints|  s-   b)3W1Ec*DwQGb)3W1Ec*CgAFc*DwQGd+SwQGc*CgAFd+TaHc*CgAFd+SwQGc*DwQGd+SwQGc*CgAFrA   c                     t        t        j                  dg      d       t        t        j                  d      d       y )Nr   rV   r   r   )r   r   sincr   r<   s    r>   	test_sinczTestTrigonometric.test_sinc  s*    7<<,a0W\\#&,rA   c                 F    t        j                  d      }t        |d       y r  )r   r  r   )r=   sns     r>   r  zTestTrigonometric.test_sindg  s    ]]2RrA   c                     t        j                  d      }t        t        dz        }t	        ||dd       t        j                  d      }t        t        dz        }t	        ||dd       y )NrR   r9  r3  r   rY   r   r  )r   r  r	   r   r   )r=   snmsnmrlsnm1snmrl1s        r>   test_sindgmorez TestTrigonometric.test_sindgmore  T    mmBBsFUa8}}R RVf6:rA   N)r'  r(  r)  r   rE  r   rN  r   r   rY  rc  rf  r  rn  r.  rA   r>   r<  r<  X  s:    7
9
9
;
7
7
9
G-
;rA   r<  c                       e Zd Zd Zd Zd Zy)	TestTandgc                 p    t        j                  d      }t        t        dz        }t	        ||dd       y rK  r   r  r   r   r   )r=   tntnrls      r>   r  zTestTandg.test_tandg  s+    ]]22c6{DvA6rA   c                     t        j                  d      }t        t        dz        }t	        ||dd       t        j                  d      }t        t        dz        }t	        ||dd       y )Nr   r  r3  r   rY   rB  r  rs  )r=   tnmtnmrltnm1tnmrl1s        r>   test_tandgmorezTestTandg.test_tandgmore  ro  rA   c                    t        t        j                  d      ddd       t        t        j                  d      ddd       t        t        j                  d      ddd       t        t        j                  d	      ddd       t        t        j                  d
      ddd       t        t        j                  d      ddd       t        t        j                  d      ddd       t        t        j                  d      ddd       t        t        j                  d      ddd       t        t        j                  d      ddd       t        t        j                  d      ddd       y )Nr   r   r[  rY   r   r   r\  r   r]  r^  r  iLr_  r`  ra  rb  )r   r   r  r<   s    r>   rc  zTestTandg.test_specialpoints  s    a(#G!Db)3W1Ec*DwQGc*DwQGd+SwQGc*CgAFd+SwQGc*CgAFd+TaHc*DwQGd+SwQGrA   N)r'  r(  r)  r  r{  rc  r.  rA   r>   rq  rq    s    7
;HrA   rq  c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)	TestEllipc                 L    t        j                  dt        j                         y)zRegression test for #912.r   N)r   r   r[   r
  r<   s    r>   test_ellipj_nanzTestEllip.test_ellipj_nan  s    sBFF#rA   c                 ~    t        j                  dd      }t        d      t        d      ddg}t	        ||dd       y )Nr   r   r   7QE=rY   )r   r   r	   r
   r   )r=   elrels      r>   r   zTestEllip.test_ellipj  s6    ^^C"3xCT*CgA6rA   c                 Z   t        j                  d      }t        |ddd       t        t        j                  d      t
        j                         t        t        j                  d      t        dz         t        t        j                  t
        j                        d       t        t        j                  t
        j                        t
        j                         t        t        j                  d	      t
        j                         t        t        j                  d
      d       y )Nr   g;{yэ?r=  r   rY   r   r   rH   rK   r  gN?)	r   r   r   r   r    r[   r   r   r
  )r=   elks     r>   r   zTestEllip.test_ellipk  s    nnR .W1EW%%c*BFF3W%%c*BqD1W%%bff-s3W%%bff-rvv6W%%b)2662s+-?@rA   c                 Z   t        j                  t        dz  d      }t        j                  d      }t	        ||dd       dt        z  dz  }dt        z  dz  }t        |      dz  }t        j                  ||      }t	        |d	d
d       t        t        j                  t        dz  d      t        dz         t        t        j                  t        dz  d      t        j                         t        t        j                  t        dz  t        j                         d       t        t        j                  t        dz  t        j                        t        j                         t        t        j                  t        dz  d      t        j                         t        t        j                  dd      d       t        t        j                  t        j                  d      t        j                         t        t        j                  t        j                   d      t        j                          t        t        j                  t        j                  t        j                        t        j                         t        t        j                  t        j                  t        j                         t        j                         t        t        j                  t        j                   t        j                         t        j                         t        t        j                  t        j                   t        j                        t        j                         t        t        j                  t        j                  d      t        j                         t        t        j                  t        j                  t        j                        t        j                         t	        t        j                  dd      dd       t	        t        j                  dd      d       y )NrH   r   r   r   rY   rl   r  r   gfoKh?r3  r   r   r   gt?rV   rI   r!  rO   6<R!?r  gfON?)
r   r   r   r   r   r	   r   r[   r   r
  )r=   elkincr  alphaphir  s         r>   r   zTestEllip.test_ellipkinc  s   ""2a4+nnS!':2c	eCiJM""3q)
a@ 	W&&r!tS12a48W&&r!tS1266:W&&r!tbffW5s;W&&r!tRVV4bff=W&&r!tQ/8W&&q#.4W&&rvvs3RVV<W&&w4rvvg>W&&rvvrvv6?W&&rvvw7@W&&w8"&&AW&&w7@W&&rvvs3RVV<W&&rvvrvv6?))*=qA3US))&#68KLrA   c                    d}d}t        j                  |d      }g }t        d      D ])  }|j                  |       t        j                  |d      }+ t	        j
                  ||      }t        |t        j                  |d      d       t	        j
                  |t        z   |      }t        |t        j                  |d      d       y )	N    ?Pag?r   r  rV   gV^8j?g,j6Ƅ@rH   )	r[   	nextafterrt   appendr   r   r   	full_liker   r=   mbadr  r  mvalsjra  f1s           r>   test_ellipkinc_2zTestEllip.test_ellipkinc_2  s     # LLq!r 	#ALLOQ"A	# c5)&q",,q:L*MqQsRx/&r2<<<N+OQRSrA   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                         y )Niir   gFFg<r  rH   Fr  rV   r#  rO   )r[   rn   r2  r   r   r   r   arcsinhr   r   r   )r=   xlogxlinxlin2s       r>   test_ellipkinc_singularz!TestEllip.test_ellipkinc_singular  s   {{4b){{5#r*CArE:))$2BJJrvvd|4L!	#))$2BJJrvvd|4L!	#))%3RZZu5N!	#W&&ruuQw2BFF;))4%3RZZu5N!	#))4%3RZZu5N!	#))5&!4bjj6P!	#W&&vax3RVV<rA   c                 \   t        j                  d      }t        |ddd       t        t        j                  d      t        dz         t        t        j                  d      d       t        t        j                  t
        j                         t
        j                         t        t        j                  t
        j                        t
        j                         t        t        j                  d      t
        j                         t        t        j                  d	      d
       y )Nr   gl?r3  r   rY   r   rH   r   r  g?eg@)r   r   r   r   r   r[   r   r
  )r=   eles     r>   r   zTestEllip.test_ellipe  s    nnR /f1EW^^C("Q$/W^^C(#.W^^RVVG,bff5W^^BFF+RVV4W^^A&/s+-?@rA   c                    t        j                  t        dz  d      }t        j                  d      }t	        ||dd       dt        z  dz  dt        z  dz  }}t        |      dz  }t        j                  ||      }t	        |d	d
d       t        t        j                  t        dz  d      t        dz         t        t        j                  t        dz  d      d       t        t        j                  t        dz  t        j                         t        j                         t        t        j                  t        dz  t        j                        t        j                         t        t        j                  t        dz  d      t        j                         t        t        j                  dd      d       t        t        j                  t        j                  d      t        j                         t        t        j                  t        j                   d      t        j                          t        t        j                  t        j                  t        j                         t        j                         t        t        j                  t        j                   t        j                         t        j                          t        t        j                  t        j                  t        j                        t        j                         t        t        j                  t        j                   t        j                        t        j                         t        t        j                  t        j                  d      t        j                         t        t        j                  t        j                  t        j                        t        j                         t	        t        j                  dd      d       y )NrH   r   r[  r   rY   4   r  #   g'?r3  r   r   r   r  r  gL@)
r   r   r   r   r   r	   r   r[   r   r
  )r=   eleincr  r  r  r  s         r>   r   zTestEllip.test_ellipeinc  sd   ""2a4+nnS!':U3Yr"uSysJM""3q)
a@W&&r!tS12a48W&&r!tS137W&&r!tbffW5rvv>W&&r!tRVV4bff=W&&r!tQ/8W&&q#.4W&&rvvs3RVV<W&&w4rvvg>W&&rvvw7@W&&w8266'BW&&rvvrvv6?W&&w7@W&&rvvs3RVV<W&&rvvrvv6?))&#68JKrA   c                    d}d}t        j                  |d      }g }t        d      D ])  }|j                  |       t        j                  |d      }+ t	        j
                  ||      }t        |t        j                  |d      d       t	        j
                  |t        z   |      }t        |t        j                  |d      d	       y )
Nr  r  r   r  rV   g%?rH   gXo
@rF   )	r[   r  rt   r  r   r   r   r  r   r  s           r>   test_ellipeinc_2zTestEllip.test_ellipeinc_26  s     # LLq!r 	#ALLOQ"A	# c5)&q",,q:M*NPQRsRx/&r2<<<N+OQRSrA   N)r'  r(  r)  r  r   r   r   r  r  r   r   r  r.  rA   r>   r~  r~    s5    $7
	AM:T =*	AL4TrA   r~  c                   r    e Zd ZdZd Zd Zd Zd Zd Ze	j                  j                  d      d	        Zy
)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        | ||           y )NrV   r   r   r  g      @rk  r               r  r   y
c?
cy=B?CGֿr  y檠f?P9lb?)
r   r!   r   r   r  r   r[   r   r   	enumerater=   r  expected_resultsrx   arrs        r>   test_elliprczTestEllipCarlson.test_elliprcL  s    1q)q##%%%WQ]###q'!S/*c111sDkSkDkdmTlTl$ % !"%%"$&&+">"C"$&&+"3"D"F G  o 	@FAsGSM+;A+>?	@rA   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        | ||           y )NrV   r   rH   r  g`C+?r   rk  rK   )r   rk  r   rk  r  r  r  r  rk  r   r  r  )r               ?r  )y             r  r  )gfe_?gi+"?gP$M?ytgFU?7?@yR<8*y{62?z)r   r"   r   r[   r  r  r   r   r   tinyr   r  r  s        r>   test_elliprdzTestEllipCarlson.test_elliprd`  sT   1a(!,1a(3.0FGq!S!S(((xx1a()))xx1gam4555xx1gam4555WQBHHRZZ$8$=$=#=#CDEEEWQ72q>2333o%((,35 6 ! "D E  o 	@FAsGSM+;A+>?	@rA   c           
      6   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        | ||           y )NrV   r   rH   gPO?r   rK   )r   rk  r   )r  r  r   )r   r   r   r  r  r   r  r  )r  r        ?      )geQO?ʞu5J?r  yp\y?kg2ΰ?gHwд?y|pF?-6Fj)	r   r#   r   r[   r  r   r  r   r  r  s        r>   test_elliprfzTestEllipCarlson.test_elliprfx  s   1a(!,1a(*@Aq#q!S(((xx1a()))WQ2&'''ws|Q*c111WQ7C4#34555o(%,%(13 4 ! "F G  o 	@FAsGSM+;A+>?	@rA   c           	          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        | ||           y )NrV   r   r   )r   r  r  r  r  r  )r  r  r  )r   g8d`?r  gL+?g}^?y旮0?ʋW?yjN?^?gt?)	r   r$   r[   r  r   r  r   r   r  r  s        r>   test_elliprgzTestEllipCarlson.test_elliprg  s    1a(!,1a(#.1a(!,xx3*+++xxa3444'%(,.(* + !"%%"1"2"D"D"1"3 4  o 	@FAsGSM+;A+>?	@rA   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        | ||           y )NrV   r   r   rK   )r   r   rk  r  )rk  r  r  r0  )rk  r  r  r  )r  r  r   rk  )r              r   rk  )r  r  r   r  )r  r  r   y            ?)rk  r  r  r  )rk  r  r        )	g @?gviM?ym?\Isؿg'4Ob?go0 ?yW7?xfOA?ybv㿘ܶ.gHQ?gjߡB7E)r   r%   r   r   r   r  r  s        r>   test_elliprjzTestEllipCarlson.test_elliprj  s    1a+Q/q!S!$+++WQ1a()))WRAq)***q!Q$+++**0-62<++- . ! "5 6  o 	@FAsGSM+;A+>?	@rA   zInsufficient accuracy on 32-bitr  c                 p    t        t        dddd      ddd       t        t        d	d
dd      ddd       y )Ng   gq>g   `W:g    HBg   @ۘ?gRy|>r  r  r"  g   ,@g    x=g   @e:g   `ݽ>g(HR)A)r   r%   r<   s    r>   test_elliprj_hardz"TestEllipCarlson.test_elliprj_hard  sN     5 6 3 13 ;"	0 	 2 5 4 57 <"	0rA   N)r'  r(  r)  r  r  r  r  r  r  r*  r+  r,  r  r.  rA   r>   r  r  G  sM    @(@0@2@*@6 [[?@0 A0rA   r  c                   (    e Zd ZdZd Zd Zd Zd Zy)"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                 b   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      | _
        y )Nr   r   r5  rk  rK   r   )r[   r   m_n1_1r   r   minmax_neglog2
very_neg_mconcatenate
ms_up_to_1r<   s    r>   setup_classz.TestEllipLegendreCarlsonIdentities.setup_class  s    iiR.V}((F2+-77DLL=+A,BCE+.%0 !0 0 ..4<<.*.//*.++*7 8rA   c                 b    | j                   }t        t        |      t        dd|z
  d             y)z5Test identity:
        K(m) = R_F(0, 1-m, 1)
        r   r   N)r  r   r   r#   r   s     r>   test_kz)TestEllipLegendreCarlsonIdentities.test_k  s(     OOq	72r!tR#89rA   c                     t        t              j                  }|dt        dt	        j
                  |             z  z  }t        t        |      t        d|d             y)z\Test identity:
        K(m) = R_F(0, 1-m, 1)
        But with the ellipkm1 function
        rk  r   r   N)	r   r   r  r   r[   r  r   r    r#   )r=   r  m1s      r>   test_km1z+TestEllipLegendreCarlsonIdentities.test_km1  sJ     V}!!BrBGGDM>222gb"b&9:rA   c           	      h    | j                   }t        t        |      dt        dd|z
  d      z         y)z9Test identity:
        E(m) = 2*R_G(0, 1-k^2, 1)
        rk  r   r   N)r  r   r   r$   r   s     r>   test_ez)TestEllipLegendreCarlsonIdentities.test_e  s-     OOq	2gb"Q$&;#;<rA   N)r'  r(  r)  r  r  r  r  r  r.  rA   r>   r  r    s    

8:	;=rA   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y)TestErfc                 L    t        j                  d      }t        |ddd       y )Nr  g);T?r3  r   rY   )r   r   r   )r=   ers     r>   r   zTestErf.test_erf  s    [[LvA>rA   c                 f    t        j                  d      }t        g d      }t        ||dd       y )Nr   )yTcJ5?=W?yo@n@y'ʷ@g	@y"[

@,y]+@yld&@-;'j'>@r<  r   rY   )r   	erf_zerosr   r   )r=   erzerzrs      r>   test_erf_zeroszTestErf.test_erf_zeros  s1    " - .
 	TQ7rA   c                 L   t         j                  j                  d      }d}|j                  d|      d|j	                  dd|      z  dz
  z  }|j                  d|      d|j	                  dd|      z  dz
  z  }|d|z  z   }	t        j
                  d	      5   ||	      }
 ||      j                  }t        j                  |
      }|
|   }
|	|   }	t        j                  |      }||   }||   }t        ||
|	||
       t        |||||
       d d d        y # 1 sw Y   y xY w)NrQ   r?  g{Gz?rH   r   rV   r  r  allr"  )	r[   ra   rb   paretorandintr  r   isfiniter1   )r=   r  
other_funcrP   rZ   rh   rd   r   r  r  r%  w_realmasks                r>   _check_variant_funczTestErf._check_variant_func  s   ii##D)JJtQ1S[[Aq%9#9A#=>JJtQ1S[[Aq%9#9A#=>1H[[X& 	E1A]''F;;q>D$A$A;;v&DD\F$A dAqt$?dFADtD	E 	E 	Es   A9DD#c                 L    | j                  t        j                  d dd       y )Nc                 2    dt        j                  |       z
  S rr   r:   r   r  s    r>   <lambda>z.TestErf.test_erfc_consistent.<locals>.<lambda>&  s    a&**Q-' rA   r   r!  r"  )r  r:   r   r<   s    r>   test_erfc_consistentzTestErf.test_erfc_consistent#  s%      KK'	 	! 	rA   c                 J    | j                  t        j                  d d       y )Nc                 ^    t        j                  | | z        t        j                  |       z  S ri  )r[   r   r:   r   r  s    r>   r  z/TestErf.test_erfcx_consistent.<locals>.<lambda>.  s    bffQqSkFKKN2 rA   r   rO   )r  r:   erfcxr<   s    r>   test_erfcx_consistentzTestErf.test_erfcx_consistent+  s"      LL2 	! 	rA   c                 J    | j                  t        j                  d d       y )Nc                 8    dt        j                  d| z        z  S )Nr  r  r  r  s    r>   r  z.TestErf.test_erfi_consistent.<locals>.<lambda>5  s    cFJJr!t,, rA   r   rO   )r  r:   erfir<   s    r>   test_erfi_consistentzTestErf.test_erfi_consistent2  s"      KK, 	! 	rA   c                 J    | j                  t        j                  d d       y )Nc                     t        t              dz  t        j                  |  | z        z  t	        j
                  |       z  S r  )r   r   r[   r   r:   r  r  s    r>   r  z/TestErf.test_dawsn_consistent.<locals>.<lambda><  s.    d2hqj2661"Q$</&++a.@ rA   r   rO   )r  r:   r   r<   s    r>   test_dawsn_consistentzTestErf.test_dawsn_consistent9  s"      LL@ 	! 	rA   c                     t         j                  t         j                   t         j                  g}t         j                  ddg}t        t	        j
                  |      |d       y )NrK   rV   r   rO   )r[   r
  r   r   r   r   r=   rH  r  s      r>   test_erf_nan_infzTestErf.test_erf_nan_inf@  s@    (FFB?D)8%@rA   c                     t         j                  t         j                   t         j                  g}t         j                  ddg}t        t	        j
                  |      |d       y )NrH   r   r   rO   )r[   r
  r   r   r   r   r  s      r>   test_erfc_nan_infzTestErf.test_erfc_nan_infE  s@    (FFAq>T*H5ArA   c                     t         j                  t         j                   t         j                  g}t         j                  t         j                  dg}t        t	        j
                  |      |d       y )Nr   r   rO   )r[   r
  r   r   r   r  r  s      r>   test_erfcx_nan_infzTestErf.test_erfcx_nan_infJ  sE    (FFBFFA&d+XEBrA   c                    t         j                  t         j                   t         j                  g}t         j                  t         j                   t         j                  g}t        t	        j
                  |      |d       y r	  )r[   r
  r   r   r   r  r  s      r>   test_erfi_nan_infzTestErf.test_erfi_nan_infO  sK    (FFRVVGRVV,T*H5ArA   c                     t         j                  t         j                   t         j                  g}t         j                  ddg}t        t	        j
                  |      |d       y )NrF  r   r   rO   )r[   r
  r   r   r   r   r  s      r>   test_dawsn_nan_infzTestErf.test_dawsn_nan_infT  sA    (FFD#&d+XEBrA   c                     t         j                  t         j                   t         j                  g}t         j                  t         j                  dz  z   ddg}t        t	        j
                  |      |d       y )Nr  r  r   rO   )r[   r
  r   r   r   r$  r  s      r>   test_wofz_nan_infzTestErf.test_wofz_nan_infY  sN    (FFRVVc\)66:T*H5ArA   N)r   )r'  r(  r)  r   r  r  r  r  r  r  r  r  r  r  r  r  r.  rA   r>   r  r    sJ    ?8E.A
B
C
B
C
BrA   r  c                       e Zd Zd Zy)	TestEulerc                 V   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 ]1  }|dz  rt        ||          |d|z  <   t        ||         |d|z  <   3 t        j                  d      5  t        ||z
  |z        }t        |      }	d d d        t        	ddd       y # 1 sw Y   xY w)Nr   rV   rH   r   rO   )rV   r   rK   r   )rV   rV   r   =   ii  iY  i=) il   Q~ l   10[l   $8gC
 l   2l   v}Ju: )r   d   r  r  r   r[  rY   )
r   eulerr   r   rt   ru   r[   r  r   r  )
r=   eu0eu1eu2eu24	mathworldcorrectre   errerrmaxs
             r>   
test_eulerzTestEuler.test_euler`  s   mmAmmAmmAaSu-aV%0Ze4}}R +	 c"q 	3AA %il 33!$Yq\2!		3
 [[X& 	d7lG34CXF	 	':	 	s   *DD(N)r'  r(  r)  r  r.  rA   r>   r  r  _  s    ;rA   r  c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestExpc                 J    t        j                  d      }d}t        ||       y )NrH   rF   )r   r  r   r=   exexrls      r>   r  zTestExp.test_exp2y  s    \\!_RrA   c                 P    t        j                  d      }d}t        ||dd       y )Nr  g;f@r3  r   rY   )r   r  r   r=   exmexmrls      r>   test_exp2morezTestExp.test_exp2more~  s#    ll3Ua8rA   c                 P    t        j                  d      }d}t        ||dd       y )NrH   r  r   r   rY   r   r  r   r  s      r>   r  zTestExp.test_exp10  s#    ]]1Dt!4rA   c                 P    t        j                  d      }d}t        ||dd       y )Nr  gYs@r3  r   rY   r"  r  s      r>   test_exp10morezTestExp.test_exp10more  s#    mmC Ua8rA   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       y )NrH   r   rF   rV   r3  r   rY   r   r	  r   r   r  s      r>   r  zTestExp.test_expm1  s[    mmAa 0'--2BCA
CFQJA
3DvA6rA   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       y )NrH    @皙@rV   r3  r   rY   r&  )r=   ex1exrl1s      r>   test_expm1morezTestExp.test_expm1more  s[    }}Qs!3W]]35GHQ!SX\3s8a<8Ua8rA   N)	r'  r(  r)  r  r   r  r$  r  r,  r.  rA   r>   r  r  x  s     
9
5
9
7
9rA   r  c                 4   fd}d }t        |       t        |      u sJ dt        |        dt        |              t        | t        j                        rc| j                  |j                  k(  sJ  || |       t        | j                         |j                               D ]  \  }}t        ||        yt        j                  |       r?t        j                  |      r*t        t        |       d      r ||       xr
  ||       y y || |       y)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        | |       y t        | |       y )NrO   )r+   r*   )r   r  rP   s     r>   assert_funcz(assert_really_equal.<locals>.assert_func  s    !%1?1ad3SrA   c                     t        j                  | j                        rt        j                  | j                        sJ y ri  )r[   r   r   r  r   s    r>   assert_complex_nanz/assert_really_equal.<locals>.assert_complex_nan  s*    xxBHHQVV$444$4rA   ztypes not equal: z, rO   r  N)
r-  
isinstancer[   ndarrayr  zipr`   assert_really_equalr   r/   )r   r  rP   r/  r2  elem_xelem_ys     `    r>   r6  r6    s    T5 7d1gG!247)2d1gYGG !RZZ ww!''!!!Aq!!'')QWWY7 	;NFFT:	;	!!d1gs)C17"4Q"77 	AqrA   c                   >   e Zd Zd Zej
                  j                  dg d      d        Zej
                  j                  dg d      ej
                  j                  ddd	g      d
               Zej
                  j                  ddd	g      d        Z	ej
                  j                  dg d      d        Z
ej
                  j                  dddg      ej
                  j                  dg d      d               Zej
                  j                  ddd	g      ej
                  j                  dddg      ej
                  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d      g
g d      ej
                  j                  dej&                  ej(                  ej*                  g      d                              Zej
                  j                  ddd!ej                  d"g      d#        Zej
                  j                  d$ ed%d&            ej
                  j                  ddd	g      d'               Zej
                  j                  ddd	g      ej
                  j                  d(deej6                  ej8                  ej:                  ej<                  ej>                  ej@                  ejB                  ejD                  g
      ej
                  j                  d) edd&            d*                      Z#ej
                  j                  ddd	g      ej
                  j                  d+ ed%d&            d,               Z$ej
                  jK                  d&      ej
                  j                  d(ej>                  ej@                  ejB                  ejD                  g      ej
                  j                  dg d      d-                      Z&ej
                  j                  d ed.d/d0            d1        Z'ej
                  j                  d e( edd2             e( ed.d/d0            z         d3        Z)d4 Z*d5 Z+ej
                  j                  d(ej<                  ej                  ej                  e,g      ej
                  j                  dddg      ej
                  j                  ddd	g      ej
                  j                  d) edd&            ej
                  j                  d6g d%gd!gej                  gej                  ej                  dz  z   gej                  d%ggg d7      d8                                    Z-ej
                  j                  dddg      ej
                  j                  ddd	g      ej
                  j                  dd%d!d9ej                  ej                  ej                  dz  z   dgg d:      d;                      Z.ej
                  j                  d ed.d/d<            d=        Z/ej
                  j                  d e( edd2             e( ed.d/d<            z         d>        Z0d? Z1ej
                  j                  d(ej<                  ej                  ej                  e,g      ej
                  j                  dddg      ej
                  j                  ddd	g      ej
                  j                  d) edd&            ej
                  j                  d6g d%gd!gej                  gej                  ej                  dz  z   gej                  d%ggg d7      d@                                    Z2ej
                  j                  dddg      ej
                  j                  ddd	g      ej
                  j                  dd%d!d9ej                  ej                  ej                  dz  z   dgg d:      dA                      Z3ej
                  j                  dB ed%d&            ej
                  j                  d edCdDdE            dF               Z4ej
                  j                  dB e( ed%d&            d0dDgz         ej
                  j                  d e( edd2             e( ed2dGd<            z         dH               Z5dI Z6ej
                  j                  d(ej<                  ej                  ej                  e,g      ej
                  j                  dddg      ej
                  j                  ddd	g      ej
                  j                  d) edd&            ej
                  j                  d6g d%gd!gej                  gej                  ej                  dz  z   gej                  d%ggg d7      dJ                                    Z7ej
                  j                  dddg      ej
                  j                  ddd	g      ej
                  j                  dB ed%d&            ej
                  j                  dd%d!d9ej                  ej                  ej                  dz  z   dgg d:      dK                             Z8ej
                  j                  ddd	g      ej
                  j                  dg d      ej
                  j                  dBdLdMddNdd!ej                  g      dO                      Z9ej
                  j                  ddd	g      ej
                  j                  dg d      ej
                  j                  dBd" ej"                  dd      gd"dPg      dQ                      Z:ej
                  j                  dg d      ej
                  j                  dB ed%dR            dS               Z;dT Z<y)UTestFactorialFunctionsc                 J   |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re   r  zerorV   )r   
factorialkr[   modpowerr;  r  maximum)r=   rd   re   r  extendrrH  s          r>   factorialk_refz%TestFactorialFunctions.factorialk_ref  s    %%a1D99"f,BFF1aL!xxAE19%acAg(>>PQRSPSVWPWAXXbjjA&&&rA   zexact,extend))Tr=  )Fr=  )Fr  c                    ||d}t        j                  t        j                  di |      sJ t        j                  t        j                  di |      sJ t        j                  t        j
                  dddi|      sJ y )Nr  rB  re   r   rV   )r[   isscalarr   	factorial
factorial2r>  )r=   r  rB  kws       r>   "test_factorialx_scalar_return_typez9TestFactorialFunctions.test_factorialx_scalar_return_type  ss     /{{7,,5"5666{{7--626777{{7--;1;;<<<rA   rd   )rK   r  r  r  TFc                     d|i}t        t        j                  |fi |d       t        t        j                  |fi |d       t        t        j                  |fddi|d       y )Nr  r   re   r   )r   r   rI  rJ  r>  )r=   r  rd   rK  s       r>   $test_factorialx_negative_extend_zeroz;TestFactorialFunctions.test_factorialx_negative_extend_zero  sa     uW&&q/B/3W''0R0!4W''5Q5"5q9rA   c                 F   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|||       y )	Nr  r   )rD  r   rV   )r   r   rV   rV   r  rO   re   r   )	r[   r   
native_intr   r6  r   rI  rJ  r>  )r=   r  rK  rP   rd   r  s         r>   *test_factorialx_negative_extend_zero_arrayzATestFactorialFunctions.test_factorialx_negative_extend_zero_array  s    u88Le
TG--a626tLG..q7B7MG..q<A<<hTRrA   gggffffff
c                    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   ||   |       y )NrB  r  gRc/a_%g:\Oag@g*BZ'rS  go	08G)?goNb]gMxcQgNy?g=u?g7K [n<rO   re   r   r   )r   r   rI  rJ  r>  )r=   rd   rK  exp_1exp_2exp_krP   s          r>   'test_factorialx_negative_extend_complexz>TestFactorialFunctions.test_factorialx_negative_extend_complex  s&   	"-..0 .-.0 /--/ ))!2r2E!H4H**133U1XDI**188R8%(N))1#44Q7qM**A35"5a8%(N**A3:!:r:1=uQxdSrA   r  r   r  n_outerc                 J    ddifd} |||z           |d|z  |z          y )NrB  r  c                 
   t        t        |       d      }t        j                  d      }|rt        j                  d      nt        j                  d      }t        t        j                  | fi |       t        t        j                  | dz  fi |       t        t        j                  | dz  fddi|       d}t        t        j                  | |z  fd|i|       t        t        j                  | gfi d   |       t        t        j                  | dz  gfi d   |       t        t        j                  | dz  gfddid   |       t        t        j                  | |z  gfd|id   |       y )	Nr  nan+nanjr
  rH   r   re   y      ?       r   )
r/   r-  r[   
complex128r   r6  r   rI  rJ  r>  )rd   
complexifycomplex_nanr   r  rK  s        r>   _checkzTTestFactorialFunctions.test_factorialx_negative_extend_complex_poles.<locals>._check  sY   %d1gs3J--
3K/9"--
+rzz%?PC 1 1! :r :C@ 2 21q5 ?B ?E 2 21q5 DA D DcJA 2 21q5 DA D DkR 1 11# < <Q ?E 2 2AE7 Ab A! DcJ 2 2AE7 Fa F2 Fq I3O 2 2AE7 Fa F2 Fq I;WrA   i r.  )r=   rZ  r  ra  rK  s       @r>   -test_factorialx_negative_extend_complex_poleszDTestFactorialFunctions.test_factorialx_negative_extend_complex_poles  s5     	"	X( 	w~w 4'(rA   boxedrB  r=  r  r
  r  r]  Nnatr  )
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        |      |      s3t        j                  t        d	
      5   ||r|gn|fi | d d d        y t	        t        |      |      r8|dk7  r3t        j                  t        d
      5   ||r|gn|fi | d d d        y |dk(  xr t	        t        |      d      }|rt        j                  d      nt        j                  d      }	t	        t        |      d      rMt        j                  |      r8t        j                  |dk(  rdnd      }
|dkD  rt        j                  d      n|
}	|r ||gfi |d   n ||fi |}t        ||	       y # 1 sw Y   y xY w# 1 sw Y   y xY w)NFrF  r   re   rx   ra  r  rx   ra  r  Unsupported data type.*r  r  In order to use non-integer.*r]  r
  r=  r   r   )r   r>  r-  rI  r/   r*  r   r(  r[   r^  r   r  r6  )r=   rj  rd   rB  rc  rK  permissible_typestypes_need_complex_extr_  r  neg_inf_resultr  s               r>   test_factorialx_inf_nanz.TestFactorialFunctions.test_factorialx_inf_nan	  s   & /+++BsG 05O3S$t*:U(2g6G6G(GcSVZDG%67z1JK 6%A3Q5"56 6$q'#9:v?Rz1PQ 6%A3Q5"56 6 !I-M<Q3MJ 5?r}}Z0BJJuDUHDGS)bhhqk!#&F2BA!O12Q2::e,^16Z*r*1-Jq<OB<OF1%6 66 6s   <F0	F<0F9<Gr  stringc                    t        j                  t        d      5  t        j                  d|       d d d        t        j                  t        d      5  t        j
                  d|       d d d        t        j                  t        d      5  t        j                  ddd|       d d d        y # 1 sw Y   xY w# 1 sw Y   SxY w# 1 sw Y   y xY w)Nzargument `extend` must be.*r  rV   )rB  r   Tre   r  rB  )r*  r   r(  r   rI  rJ  r>  )r=   rB  s     r>   test_factorialx_raises_extendz4TestFactorialFunctions.test_factorialx_raises_extendC	  s    ]]:-JK 	0a/	0]]:-JK 	1q0	1]]:-JK 	BqAT&A	B 	B		0 	0	1 	1	B 	Bs#   B5CC5B>C
ClevelsrV   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          y )NrV   c                 .    |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   rV   r.  r   re   _nest_mes     r>   r{  zDTestFactorialFunctions.test_factorialx_array_shape.<locals>._nest_meO	  s&     AvA!,,rA   c                     t        j                   |      t              }t        | j	                  t         j
                         |j                  t         j
                               y )Nre   r  )r[   r   objectr   r   r   )r  nucleusr   r{  rw  s      r>   ra  zBTestFactorialFunctions.test_factorialx_array_shape.<locals>._check\	  sB    ((8Gv6fEC CJJrzz2JCJJrzz4JKrA   r   r   r}  r  rz   Tr  r  r   rd  rH   rG  )r[   r   mathrI  r   rJ  r>  )r=   rw  r  ra  rd   exp_nucleusr{  s    `    @r>   test_factorialx_array_shapez2TestFactorialFunctions.test_factorialx_array_shapeL	  s    	-	L HHXq"g01r 23w11"DABw11"atDEG
 	w  %0+a.Aw!!!51;q>Bw!!!Qe4k!nErA   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   |	             y )Nr   )r  ndminr  rz   r  rd  r  rV   r  rH   r   )r[   r   r   r   rI  rJ  r>  )r=   r  r  r  rd   r   s         r>   test_factorialx_array_dimensionz6TestFactorialFunctions.test_factorialx_array_dimensionl	  s     HHQe3/"$))!59Qs3	5**1E:Qs3	5**1au=Qs3	5rA   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   |
             y )NrV   c                 ,    |dk(  r| S  | g|dz
        S r   r.  rz  s     r>   r{  zCTestFactorialFunctions.test_factorialx_array_like.<locals>._nest_me	  s"    AvQqS))rA   r   r}  r  rz   r  rd  r  r  rH   r   rG  )r   r   r   rI  r[   r   rJ  r>  )r=   r  r  rd   r  r/  r{  s         @r>   test_factorialx_array_likez1TestFactorialFunctions.test_factorialx_array_like|	  s    	* aSE!G$",,1(G%%au5HH[^59	;G&&q6HH[^59	;G&&q!59HH[^59	;rA   c                    ||d|rt         nt        fd}fd} | |d              | |d              |t        j                  d|              |t        j                  ddg|              |t        j                  |      j
                        }|t        j                  k(  rV|ry  | ||dz
                |t        j                  |dz
  |              |t        j                  |dz
  g|             y |t        j                  t        j                  fv s|sQ ||dz
          |t        j                  |dz
  |              |t        j                  |dz
  |dz
  g|             y y )NrF  c                    t        | t        j                        r| j                  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       y )Nre   r   )	r3  r[   r4  r   r  r   rI  rJ  r>  )rd   n_refr/  rK  s     r>   ra  z;TestFactorialFunctions.test_factorialx_uint.<locals>._check	  s    *4Q

*CAHHRXX&RSE))!2r2G4E4Ee4Rr4RS**133W5G5G5TQS5TU**188R8**5<A<<>rA   c                 H   t        j                         5  t        j                  dt               | dz  }d d d         t	        j
                  | fi         t	        j                  | fi |        t	        j                  | fddi|       y # 1 sw Y   cxY w)Nr  r   re   r   )r  r  simplefilterr  r   rI  rJ  r>  )rd   
shaped_infr/  rK  s     r>   
_check_infz?TestFactorialFunctions.test_factorialx_uint.<locals>._check_inf	  s    ((* #%%h?U
# ))!2r2J?**133Z@**188R8*E# #s    BB!r   rV   r  rH   )	r   r   r[   r   r  r  uint64uint8uint16)	r=   r  rB  r  ra  r  r*  r/  rK  s	          @@r>   test_factorialx_uintz+TestFactorialFunctions.test_factorialx_uint	  s3    /,1(	>	F 	uQxuQxrxx'(rxxAe,-"((5/%%&BII 51:&288AaCu56288QqSE78rxx++5 1Q3K288AaCu-.288QqS!A#Je45 49rA   rR   r  r  c                 N   t         j                  dk(  rdnd}t        t        t	        j
                  |d            t	        j
                  |d      |       t        t	        j
                  |gd      j                  t              t	        j
                  |gd      |       y )Nr4   t0=r   Tr  FrO   )sysplatformr   ru   r   rI  r   r=   rd   rP   s      r>   test_factorial_accuracyz.TestFactorialFunctions.test_factorial_accuracy	  s~    
 /uUg//>?))!59	F))1#T:AA%H))1#U;$	HrA      c                 ,   t        j                  |      }t        |t        j                  |d             t        |t        j                  |gd      d          t        j
                  dk(  rdnd}t        |      }t        |t        j                  |d      |       t        |t        j                  |gd      d   |       dd	d
}t        |t        j                  |fi ||       t        |t        j                  |gfi |d   |       y )NTr  r   r4   +6=r   FrO   r  rF  )r  rI  r   r   r  r  ru   r   r=   rd   r  rP   rK  s        r>   test_factorial_int_referencez3TestFactorialFunctions.test_factorial_int_reference	  s     ..#7G$5$5at$DE7G$5$5qc$Fq$IJ/uU.!2!21E!BN!2!2A3e!DQ!GdS 	2!2!21!;!;$G!2!2A3!="!=a!@tLrA   c                     d } |dd        |dd        |dd        |dd	        |d
d        |dd        |dd        |dd        |dd       y )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        t        j                  t        d      5  t        j                  | gd	       d d d        y # 1 sw Y   FxY w# 1 sw Y   y xY w)
Nr4   r  r   rO   r   `exact=True` only supports.*r  Tr  )r  r  r   r   rI  r*  r   r(  )rd   r  rP   s      r>   ra  zETestFactorialFunctions.test_factorial_float_reference.<locals>._check	  s    LLG35DG--a0(FG--qc215xdKz1OP 1!!!401z1OP 3!!1#T23 31 13 3s   9C4C"C"C+r5  gr?g(\?gc?g333333@g4s@g333333&@gމOAfffff@@g	²Gg     K@gC$JOglS@g }WgX@gX>%`g\CSe@gG=r.  r=   ra  s     r>   test_factorial_float_referencez5TestFactorialFunctions.test_factorial_float_reference	  sl    	3 	t23t23t23t23t67t67t78t78x78rA   c                 n    d } |dd        |dd        |dd        |d	d
        |dd       y )Nc                     t         j                  dk(  rdnd}ddd}t        t        j                  | fi |||       t        t        j                  | gfi |d   ||       y )	Nr4   rU  V瞯<Fr  rF  rO   r   )r  r  r   r   rI  rd   r  rP   rK  s       r>   ra  zGTestFactorialFunctions.test_factorial_complex_reference.<locals>._check	  s]    LLG35D I6BG--a626tLG--qc8R8;XDQrA   r  gkﴑ[?r                ykﴑ[?               @       @yB}ۿ?gH.gK	!@y      -C6?yI{xQr.  r  s     r>    test_factorial_complex_referencez7TestFactorialFunctions.test_factorial_complex_reference	  sA    	R 	t34y#=>v QRw!56|&STrA   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kD  st        |      dk7  r|n|d   }t	        j                  |||      }d }|d	k(  r>|r<t        j                  t        d
      5  t        j                  |fi | d d d        nt        |j                  g d      s;t        j                  t        d      5  t        j                  |fi | d d d        nt        |j                  d      r@|d	k7  r;t        j                  t        d      5  t        j                  |fi | d d d        ni|rQt        |j                  d      s;t        j                  t        d      5  t        j                  |fi | d d d        nt        j                  |fi |}||j!                         D 	cg c]  }	t        j                  |	fi | }
}	t        |
      dk(  r|
d   n|
}
|j"                  rG|d	k(  xr t        |j                  d      }|rt        j$                  n|rt&        nt        j                  }t	        j                  |
||      }t)        ||d       y y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY wc c}	w )Nz+object arrays unsupported in array API modec              3   f   K   | ])  }t        j                  |      xs |t        |      k7   + y wri  r[   r   rs   .0r   s     r>   	<genexpr>zKTestFactorialFunctions.test_factorial_array_corner_cases.<locals>.<genexpr>
  (     $SaRXXa[%AQ#a&[%A$S   /1impossible combinationc              3   F   K   | ]  }t        t        |      d         ywr  Nr/   r-  r  s     r>   r  zKTestFactorialFunctions.test_factorial_array_corner_cases.<locals>.<genexpr>
       &Sa|DGS'A&S   !rF  r   rV   r  r  r  Incompatible options:.*r  rl  rm  r  rn  rx   r  r   rO   )r~  r,   r*  skipr[   r  anyr   lenr   r   r(  r   rI  r/   r  r`   r   r^  rQ  r6  r=   r  r  r  rB  r  rK  rd   r  r   r  cxr  s                r>   !test_factorial_array_corner_casesz8TestFactorialFunctions.test_factorial_array_corner_cases
  s    F?KKEFBHH$S7$S!SKK01BJJ3&S7&S#SKK01/!AgW):'HHWCu5Y5z1JK +!!!*r*+ +agg7z1JK +!!!*r*+ +!''3'Fi,?z1PQ +!!!*r*+ +<5z1OP +!!!*r*+ + &&q/B/F78wwyA!7$$Q-"-ACAHM#a&sC vv	)I|AGGS/I)+*2::xx3e<Hu= + ++ ++ ++ + Bs6   2K(K4L /L9L(K14K= L	Lr  )1z1.1z2+2jre  rf  rg  c           	      f   ||d}|dk(  r=|r;t        j                  t        d      5  t        j                  |fi | d d d        y t        t        |      dddt        d       g      s;t        j                  t        d      5  t        j                  |fi | d d d        y t        t        |      d      r@|dk7  r;t        j                  t        d	      5  t        j                  |fi | d d d        y |t        j                  |      ri|dk(  xr t        t        |      d      }|rt        j                  d
      nt        j                  d      }t        t        j                  |fi ||       y |rPt        t        |      d      r;t        j                  t        d      5  t        j                  |fi | d d d        y t        t        j                  |fi |t        j                  |dz                y # 1 sw Y   y xY w# 1 sw Y   y xY w# 1 sw Y   y xY w# 1 sw Y   y xY w)NrF  r  r  r  rx   ra  r  rm  rn  r]  r
  r  rV   )r*  r   r(  r   rI  r/   r-  r[   r   r^  r   r6  r   r;  r=   rd   r  rB  rK  r_  r  s          r>   "test_factorial_scalar_corner_casesz9TestFactorialFunctions.test_factorial_scalar_corner_cases;
  s   
 /Y5z1JK +!!!*r*+ +d1gS#tDz'BCz1JK +!!!*r*+ +$q'3'Fi,?z1PQ +!!!*r*+ +Y"((1+ I-M<Q3MJ4>r}}Z0BJJuDUH 1 1! :r :HE|DGS1z1OP +!!!*r*+ + **133W]]1q55IJ#+ ++ ++ ++ +s/   HHH,H'HHH$'H0r  c                 N   t         j                  dk(  rdnd}t        t        t	        j
                  |d            t	        j
                  |d      |       t        t	        j
                  |gd      j                  t              t	        j
                  |gd      |       y )Nr4   +=r   Tr  FrO   )r  r  r   ru   r   rJ  r   r  s      r>   test_factorial2_accuracyz/TestFactorialFunctions.test_factorial2_accuracyV
  s~    
 /uUg00$?@**1E:	G**A3d;BB5I**A3e<4	IrA   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(  rIt        |t        j                  |fi ||
       t        |t        j                  |gfi |d   |
       y y )Nr   r  rV   Tr  r4   r  r   FrO   r  rF  rH   )	functoolsreduceoperatormulr  rt   r   r   rJ  r  r  ru   r   r  s        r>   test_factorial2_int_referencez4TestFactorialFunctions.test_factorial2_int_referenceb
  s    ""8<<eAq"o1FJ7G$6$6q$EF7G$6$6s$$G$JK/uU.!3!3AU!C$O!3!3QCu!Ea!HtT 	2q5A:GW%7%7%@R%@tLGW%7%7%Br%B1%EDQ rA   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       y )Nc                     d}ddd}t        t        j                  | fi |||       t        t        j                  | gfi |d   ||       y )Nr  Fr  rF  rO   r   )r   r   rJ  r  s       r>   ra  zHTestFactorialFunctions.test_factorial2_complex_reference.<locals>._check|
  sP    D I6BG..q7B7MG..s9b9!<hTRrA   r   r  rF   rH   rl   r  g^D]?JO?r  y^D]?JO?        y      @      @y&0!:?gSt$gtQ*@y       -C6?yqj?x*)r   rJ  r  r   r   r  s     r>   !test_factorial2_complex_referencez8TestFactorialFunctions.test_factorial2_complex_referencez
  s    	S 	q1q7--a0499Q[3IIJrG..r2TYYq477{5KKLt45y#>?v OPw!67|&UVrA   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kD  st        |      dk7  r|n|d   }t        j                  |||      }d }|dk(  r=|r;t        j                  t        d	
      5  t        j                  |fi | d d d        nt        |j                  g d      s;t        j                  t        d
      5  t        j                  |fi | d d d        nnt        |j                  ddg      r@|dk7  r;t        j                  t        d
      5  t        j                  |fi | d d d        nt        j                  |fi |}||j                         D 	cg c]  }	t        j                  |	fi | }
}	t        |
      dk(  r|
d   n|
}
|j                  rG|dk(  xr t        |j                  d      }|rt         j                   n|rt"        nt         j
                  }t        j                  |
||      }t%        ||d       y y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY wc c}	w )Nc              3   f   K   | ])  }t        j                  |      xs |t        |      k7   + y wri  r  r  s     r>   r  zLTestFactorialFunctions.test_factorial2_array_corner_cases.<locals>.<genexpr>
  r  r  r  c              3   F   K   | ]  }t        t        |      d         ywr  r  r  s     r>   r  zLTestFactorialFunctions.test_factorial2_array_corner_cases.<locals>.<genexpr>
  r  r  rF  r   rV   r  r  r  r  rl  rm  ra  r  rn  r  rO   )r[   r  r  r*  r  r   r  r   r   r(  r   rJ  r/   r  r`   r   r^  rQ  r6  r  s                r>   "test_factorial2_array_corner_casesz9TestFactorialFunctions.test_factorial2_array_corner_cases
  s-    BHH$S7$S!SKK01BJJ3&S7&S#SKK01/!AgW):'HHWCu5Y5z1JK ,""1++, ,agg7z1JK ,""1++, ,!''C:.6Y3Fz1PQ ,""1++, , ''0R0F89	B17%%a.2.BCBHM#a&sC vv	)I|AGGS/I)+*2::xx3e<Hu= , ,, ,, , Cs*   I4#J ;JJ4I= J	Jc           	         ||d}|dk(  r=|r;t        j                  t        d      5  t        j                  |fi | d d d        y t        t        |      dddt        d       g      s;t        j                  t        d      5  t        j                  |fi | d d d        y t        t        |      ddg      r@|dk7  r;t        j                  t        d	      5  t        j                  |fi | d d d        y |t        j                  |      ri|dk(  xr t        t        |      d      }|rt        j                  d
      nt        j                  d      }t        t        j                  |fi ||       y  | j                  |fddi|}t        t        j                  |fi ||d       y # 1 sw Y   y xY w# 1 sw Y   y xY w# 1 sw Y   y xY w)NrF  r  r  r  rx   ra  r  rm  rn  r]  r
  re   rH   r   rO   )r*  r   r(  r   rJ  r/   r-  r[   r   r^  r   r6  rD  r  s          r>   #test_factorial2_scalar_corner_casesz:TestFactorialFunctions.test_factorial2_scalar_corner_cases
  s   
 /Y5z1JK ,""1++, ,d1gS#tDz'BCz1JK ,""1++, ,$q'C:.6Y3Fz1PQ ,""1++, ,Y"((1+ I-M<Q3MJ4>r}}Z0BJJuDUH 2 21 ; ;XF*t**188R8H 2 21 ; ;XER, ,, ,, ,s#   F4G G4F= G	Gre   r  rl   ic           	      V   t         j                  dk(  rdnd}t        t        t	        j
                  ||d            t	        j
                  ||d      |       t        t	        j
                  |g|d      j                  t              t	        j
                  |g|d      |       y )Nr4   r  r  Tr<  FrO   )r  r  r   ru   r   r>  r   )r=   rd   re   rP   s       r>   test_factorialk_accuracyz/TestFactorialFunctions.test_factorialk_accuracy
  s     /uUg00atDE**1?d	L**A3!4@GGN**A3!5A	NrA   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(  rKd}t        |t        j                  |fi ||	       t        |t        j                  |gfi |d   |	       y y )Nr   rV   Tr  r4   gt =r!  FrO   r  ru  r  )r  r  r  r  r  rt   r   r   r>  r  r  ru   r   )r=   rd   re   r  rP   rK  s         r>   test_factorialk_int_referencez4TestFactorialFunctions.test_factorialk_int_reference
  s    ""8<<eAq1"o1FJ7G$6$6q!4$HI7G$6$6sAT$J1$MN/uU.!3!3Aq!FTR!3!3QC%!H!KRVW u	:q5A:DGW%7%7%@R%@tLGW%7%7%Br%B1%EDQ rA   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"       y )#Nc                     d}|ddd}t        t        j                  | fi |||       t        t        j                  | gfi |d   ||       y )Nr!  Fr  ru  rO   r   )r   r   r>  )rd   re   r   rP   rK  s        r>   ra  zHTestFactorialFunctions.test_factorialk_complex_reference.<locals>._check  sR    D5I>BG..q7B74HG..s9b9!<cMrA   rF   r   Tr<  )rd   re   r   r   gD!)@g      @gNq53@r  gG`@r  g     @y             @y            @y      @      @yRsU#[@y      @      y?M,a?y@/n?'?r  gyL_ǚZ?r  yyL_ǚZ?        g333333@gffffffyNV?*V7?g333333y)kh]bg):giߑT@y      -C6?y(5E?WT)r   r>  r  s     r>   !test_factorialk_complex_referencez8TestFactorialFunctions.test_factorialk_complex_reference  s    	N 	aW//QdCDa0123c23s'W51"RSf"QR6'VW 67a%@A"RS#UVA#89(VWrA   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kD  st        |      dk7  r|n|d   }t        j                  |||      }d }|d	k(  r=|r;t        j                  t        d
      5  t        j                  |fi | d d d        nt        |j                  g d      s;t        j                  t        d      5  t        j                  |fi | d d d        nnt        |j                  ddg      r@|d	k7  r;t        j                  t        d      5  t        j                  |fi | d d d        nt        j                  |fi |}||j                         D 	cg c]  }	t        j                  |	fi | }
}	t        |
      dk(  r|
d   n|
}
|j                  rG|d	k(  xr t        |j                  d      }|rt         j                   n|rt"        nt         j
                  }t        j                  |
||      }t%        ||d       y y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY wc c}	w )Nc              3   f   K   | ])  }t        j                  |      xs |t        |      k7   + y wri  r  r  s     r>   r  zLTestFactorialFunctions.test_factorialk_array_corner_cases.<locals>.<genexpr>-  r  r  r  c              3   F   K   | ]  }t        t        |      d         ywr  r  r  s     r>   r  zLTestFactorialFunctions.test_factorialk_array_corner_cases.<locals>.<genexpr>/  r  r  r   ru  r   rV   r  r  r  r  rl  rm  ra  r  rn  r  rO   )r[   r  r  r*  r  r   r  r   r   r(  r   r>  r/   r  r`   r   r^  rQ  r6  r  s                r>   "test_factorialk_array_corner_casesz9TestFactorialFunctions.test_factorialk_array_corner_cases   s/    BHH$S7$S!SKK01BJJ3&S7&S#SKK01u7!AgW):'HHWCu5Y5z1JK ,""1++, ,agg7z1JK ,""1++, ,!''C:.6Y3Fz1PQ ,""1++, , ''0R0F89	B17%%a.2.BCBHM#a&sC vv	)I|AGGS/I)+*2::xx3e<Hu= , ,, ,, , Cs*   I5$J<JJ5I>J
Jc           	         |||d}|dk(  r=|r;t        j                  t        d      5  t        j                  |fi | d d d        y t        t        |      dddt        d       g      s;t        j                  t        d      5  t        j                  |fi | d d d        y t        t        |      ddg      r@|dk7  r;t        j                  t        d	      5  t        j                  |fi | d d d        y |t        j                  |      ri|dk(  xr t        t        |      d      }|rt        j                  d
      nt        j                  d      }t        t        j                  |fi ||       y  | j                  |fi |}t        t        j                  |fi ||d       y # 1 sw Y   y xY w# 1 sw Y   y xY w# 1 sw Y   y xY w)Nru  r  r  r  rx   ra  r  rm  rn  r]  r
  r   rO   )r*  r   r(  r   r>  r/   r-  r[   r   r^  r   r6  rD  )r=   rd   re   r  rB  rK  r_  r  s           r>   #test_factorialk_scalar_corner_casesz:TestFactorialFunctions.test_factorialk_scalar_corner_casesQ  s    u7Y5z1JK ,""1++, ,d1gS#tDz'BCz1JK ,""1++, ,$q'C:.6Y3Fz1PQ ,""1++, ,Y"((1+ I-M<Q3MJ4>r}}Z0BJJuDUH 2 21 ; ;XF*t**133H 2 21 ; ;XER, ,, ,, ,s#   F3F?G3F<?GGrK   r   r   c                    |rdgnd}|||d}|dk(  rYd}t        t        |      d      r|dk  rd}t        j                  t        |      5  t        j                  |fi | d d d        y |dk(  r;t        j                  t        d	      5  t        j                  |fi | d d d        y t        j                  |fi | y # 1 sw Y   y xY w# 1 sw Y   y xY w)
NrV   ru  r=  rn  rx   zFor `extend='zero'`.*r  r   zParameter k cannot be zero!)r/   r-  r*  r   r(  r   r>  )r=   re   r  rB  rc  rd   rK  r  s           r>    test_factorialk_raises_k_complexz7TestFactorialFunctions.test_factorialk_raises_k_complexj  s    
 QCau7V1CDGS)q1u-z5 ,""1++, ,!Vz1NO ,""1++, , q'B', ,, ,s   CCCCrh  c                     |rdgnd}|||d}t        j                  t        d      5  t        j                  |fi | d d d        y # 1 sw Y   y xY w)NrV   ru  rm  r  )r*  r   r(  r   r>  )r=   re   r  rB  rc  rd   rK  s          r>   test_factorialk_raises_k_otherz5TestFactorialFunctions.test_factorialk_raises_k_other~  sR     QCau7]]:-FG 	(q'B'	( 	( 	(s   A		Ar  c                 n   |||d}|r|t        j                         v rt        j                  t        |   g      }t        t        j                  |fi |j                  t        j                         t        t        j                  |dz   fi |j                  t        j                         t        j                  |dz   fi |t        j                  t        j                        j                  kD  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                  kD  sJ y t        j                  t        j                  |d      g      }|rt        nt        j                   }t        t        j                  |fi |j                  |       y )Nru  rV   )r-   keysr[   r   r.   r   r   r>  r  longr  r  int32r  r~  getr   )r=   re   r  rB  rK  rd   r  s          r>   test_factorialk_dtypez,TestFactorialFunctions.test_factorialk_dtype  s    u7Q388::3A678A++A44::BGGD++AE8R8>>I%%a!e2r2RXXbhh5G5K5KKKK3A678A++A44::BHHE++AE8R8>>G%%a!e2r2RXXbhh5G5K5KKKK3771=>?A $FE++A44::EBrA   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        y # 1 sw Y   y xY w)
NrV   rH   r   rL   Fr  r  r  T)	r[   r   r
  r   r   rI  r*  r   r(  r=   r   r  s      r>   test_factorial_mixed_nan_inputsz6TestFactorialFunctions.test_factorial_mixed_nan_inputs  s    HHbffaArvv./88RVVQ1bff56W&&q6A]]:-KL 	-at,	- 	- 	-s   )C

C)=r'  r(  r)  rD  r*  r+  r-  rL  rN  rR  rY  rb  r[   r
  r   r^  r   
datetime64r   rI  rJ  r>  rr  rv  rt   r  rs   int8int16r  r  r  r  uint32r  r  r  r]  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   r>   r:  r:    s   ' [[^RT=T= [[S,/[[WtUm4: 5 0: [[WtUm4S 5S [[S"45T 6T& [[VaW-[[Y5) 6 .)4 [[WtUm4[[X	':;[[FFJBJJu%rvvr	'9=2==;TFFBFFRK"&&266'B,mbmmESV>W	

  
 [[			G..0B0BC2	
 < 5"2B [[X3'ABB CB [[XuQ{3[[WtUm4F 5 4F< [[WtUm4[[Wc277BHHbhh
"))RYY		'  [[UE!QK05 1	 55 [[WtUm4[[WeAqk2; 3 5;" [[1[[WrxxBIIryy&QR[[^RT)6T S )6X [[S%C"45	H 6	H [[S!%2,/$uRb7I2JJLMLM"9.U  [[Wrxx')}}f'> ?[[X	':;[[WtUm4[[UE!QK0[[	aS3%"&&BFFRVVb[$8#9BFFA;GF  
)> 1 5 <?)>V [[X	':;[[WtUm4[[S1c6266266BFF2I;Mt"T!Q  SKS 5 <K. [[S%C"45	I 6	I [[S!%2,/$uRb7I2JJLRLR,W* [[Wrxx')}}f'> ?[[X	':;[[WtUm4[[UE!QK0[[	aS3%"&&BFFRVVb[$8#9BFFA;GF  
$> 1 5 <?$>L [[X	':;[[WtUm4[[S1c6266266BFF2I;Mt"T!Q  SSS 5 <S( [[S%1+. [[S%R"56	N 7 /	N [[S$uQ{"3r2h">?[[S!%2,/$uRb7I2JJLRL @R0X< [[Wrxx')}}f'> ?[[X	':;[[WtUm4[[UE!QK0[[	aS3%"&&BFFRVVb[$8#9BFFA;GF  
$> 1 5 <?$>L [[X	':;[[WtUm4[[S%1+.[[S1c6266266BFF2I;Mt"T!Q  SSS / 5 <
S( [[WtUm4[[^RT[[S2tQVS"&&"IJ( KT 5(  [[WtUm4[[^RT [[S8]R]]5#-F"G"*E!2  4(4T 5( [[^RT[[S%2,/C 0TC(-rA   r:  c                       e Zd Zej                  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y)TestFresnelzz, s, c)r   gN?ց[?)y      ?        r  r  )y       ?yn<ӿj<Cy)BR;߿ux7Q?)y      yھ|}-2?y/?!ۿ)r9  GM?pBR?)y      @        r  r   )y              @y       GMܿy        pBR?)y              gGMܿgpBR߿)y             y        GM?y       pBR߿r   r  c                 t    t        t        j                  |            }t        |t        ||g      dd       y )Nr3  r   rY   )r   r   r6  r   )r=   r  r  r  frss        r>   test_fresnel_valueszTestFresnel.test_fresnel_values  s.    @ GOOA&'UAq6]a@rA   c                 8   t        j                  d      \  }}t        |t        g d      dd       t        |t        g d      dd       t        j                  |      d   }t        j                  |      d   }t        |ddd       t        |ddd       y )	Nr   )y @X9v?y^I@48E?y=
ףp@+?y@eX?yO@Ǻ?~jtX?r   rY   )y.1?ǘ?yʡE6@:#J{/?yq-
@y&1?yh o@߾3?yW2q@qh?rV   r[  )r   fresnel_zerosr   r   r6  )r=   szoczovals1vals2s        r>   test_fresnel_zeroszTestFresnel.test_fresnel_zeros  s    ((+SU $4 5
 $!	- 	U $4 5
 $!	- $Q'$Q'qwQ7qwQ7rA   c                 |    t        j                  d      \  }}t        j                  d      }t        ||dd       y )NrL   Afcz=r   rY   )r   r  fresnelc_zerosr   )r=   r  r  frcs       r>   test_fresnelc_zeroszTestFresnel.test_fresnelc_zeros  4    ((+S$$Q'SwQ7rA   c                 |    t        j                  d      \  }}t        j                  d      }t        ||dd       y )Nr   r  r   rY   )r   r  fresnels_zerosr   )r=   r  r  r  s       r>   test_fresnels_zeroszTestFresnel.test_fresnels_zeros  r  rA   N)r'  r(  r)  r*  r+  r-  r[   r   r  r  r  r  r.  rA   r>   r  r    sz    [[Y7=	

	
 	&,)/*	c
&&$;) >A?>A8&8
8rA   r  c                      e Zd Zd Zd Zd Zed        Zed        Zd Z	d Z
ej                  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y)	TestGammac                 F    t        j                  d      }t        |d       y r9  )r   r;  r   )r=   gams     r>   r<  zTestGamma.test_gamma  s    mmASrA   c                     t        j                  d      }t        t        j                  d            }t	        ||dd       y )Nr   r3  r   rY   )r   rA  r   r;  r   )r=   gamlnlngams      r>   rB  zTestGamma.test_gammaln  s1    "GMM!$%u6:rA   c                 z    t        j                  dd      }t        j                  dd      }t        ||dd       y )Nr   r3  r   rY   )r   r>  gammaincinvr   )r=   gccinvgcinvs      r>   r?  zTestGamma.test_gammainccinv  s4    %%b,##Br*F;rA   c                 X   t        j                  dd      }t        j                  d|      }t        |ddd       t        j                  dd      }t        j                  dd      }t        d|dd       t        |ddd       t        j                  dd	      }t        d
|dd       y )NrI   r>  r   rY   r  g?g`	\;r  gmb<g      &@)r   r  gammaincr   r=   r  r   s      r>   test_gammaincinvzTestGamma.test_gammaincinv  s    2&R"3W15R&$:;agA61aH$JKagA6rA   c                     dt        j                  dd      dt        j                  dd      dg}|D ]<  }t        j                  d|      }t        j                  d|      }t        ||d       > y )	Nr  r   gCs?rV   g^F    ?rI   r   rO   )r[   r  r   r  r!  r   )r=   ptsptr  r   s        r>   test_975zTestGamma.test_975  so    
 ||D!$l||D!$l4  	/B##B+A  a(AAr.	/rA   c                 |    t        j                  d      }dt        j                  d      z  }t        ||dd       y )Nr  rV   r3  r   rY   )r   r  r;  r   )r=   rgamrlgams      r>   r  zTestGamma.test_rgamma  s1    ~~a '--""e&q9rA   c                 B    t        t        j                  d      d       y )NrK   r   )r   r   r  r<   s    r>   test_infinityzTestGamma.test_infinity  s    W^^B'+rA   z
x,expectedrF  r   ir       i c   r  gP²Zdbc                 B    t        t        j                  |      |       y ri  )r   r   r;  r  s      r>   
test_poleszTestGamma.test_poles  s      	7==+X6rA   N)r'  r(  r)  r<  rB  r?  r0   r#  r'  r  r,  r*  r+  r-  r[   r   r
  rt   fullr0  r.  rA   r>   r  r    s   ;
<
 	7 	7 
/ 
/:
, [[ vvgrvv 01C[BFF7BFF+,3]GBGGB/05#r"GBGGB$78$%x0	
77rA   r  c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)
TestHankelc                 t    t        t        j                  dd      t        j                  dd       dd       y Nr  rH   r   r[  r   rY   )r   r   rb  r<   s    r>   
test_negv1zTestHankel.test_negv12  ,    A.A1F0F$1	.rA   c                     t        j                  dd      }t        j                  dd      t        j                  dd      dz  z   }t	        ||dd       y NrV   r  r  r3  r   rY   )r   rb  r  r  r   )r=   hank1hankrls      r>   rc  zTestHankel.test_hankel16  sE    "%**Qr"WZZ"%5b%88vF;rA   c                 t    t        t        j                  dd      t        j                  dd       dd       y r5  )r   r   rf  r<   s    r>   test_negv1ezTestHankel.test_negv1e;  0    ((Q/'2B2B1a2H1H$1	.rA   c                     t        j                  dd      }t        j                  dd      t        d      z  }t	        ||dd       y )NrV   r  y       r3  r   rY   )r   rf  rb  r   r   )r=   hank1ehankrles      r>   rg  zTestHankel.test_hankel1e?  s;    !!!B'//!B'D	1f1=rA   c                 t    t        t        j                  dd      t        j                  dd       dd       y r5  )r   r   rj  r<   s    r>   
test_negv2zTestHankel.test_negv2D  r7  rA   c                     t        j                  dd      }t        j                  dd      t        j                  dd      dz  z
  }t	        ||dd       y r9  )r   rj  r  r  r   )r=   hank2hankrl2s      r>   rk  zTestHankel.test_hankel2H  sE    "%::a#gjj2&6r&99wV!<rA   c                 t    t        t        j                  dd      t        j                  dd       dd       y r5  )r   r   rm  r<   s    r>   
test_neg2ezTestHankel.test_neg2eM  r>  rA   c                 z    t        j                  dd      }t        j                  dd      }t        ||dd       y )NrV   r  r3  r   rY   )r   rm  r   )r=   hank2ehankrl2es      r>   test_hankl2ezTestHankel.test_hankl2eQ  s4    !!!B'##Ab)vA>rA   c                     t        j                  dd      }t        j                  |j                        sJ t        j
                  |j                        sJ y r9   )r   rj  r[   r   r   isposinfr  r=   r  s     r>   test_hankel2_gh4517zTestHankel.test_hankel2_gh4517V  s>    ooa#xx!!!{{388$$$rA   N)r'  r(  r)  r6  rc  r=  rg  rC  rk  rH  rL  rP  r.  rA   r>   r3  r3  0  s/    .<
.>
.=
.?
%rA   r3  c                   H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)	TestHyperc                     t        j                  dd      }t        j                  dd      t        j                  dd      dz  z   }t	        ||dd       y r9  )r   h1vpjvpyvpr   )r=   h1h1reals      r>   	test_h1vpzTestHyper.test_h1vp^  E    \\!B++a#gkk!B&7&::Fa8rA   c                     t        j                  dd      }t        j                  dd      t        j                  dd      dz  z
  }t	        ||dd       y r9  )r   h2vprU  rV  r   )r=   h2h2reals      r>   	test_h2vpzTestHyper.test_h2vpc  rZ  rA   c                    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        ||j                  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       y )Nr  r   Qvo?r   rO   r   r   r   r  )g      rK   r   rV   r  )g̷?g3|t-Ք?r   go?g{h?r  r   r  r  )r   rV   r   )r   gc?ra  rH   r   rV   )
r   r   hyp0f1r[   r   r   r  vstackassert_raisesr(  )r=   r   r  r  x2s        r>   test_hyp0f1zTestHyper.test_hyp0f1h  s*   sC02BOsA.%@ NN3 5688 A B8%0 NN3)> ?# EF8??73%@ NN2r">8%0NN299bTAX.3299hZ!^45Aj'..iiq)Aq6	3rA   c                 N    t        j                  dd      }t        |ddd       y )N皙?y      ?      ?y;EG?uM?r   r   rY   )r   rc  r   rO  s     r>   test_hyp0f1_gh5764zTestHyper.test_hyp0f1_gh5764  s&     nnS,/H#!	-rA   c                    t        j                  ddd      }t        |ddd       t        g g dg dg d	g d
g dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg d g d!g d"g d#g d$g d%g d&g d'g d(g d)g d*g d+g d,g d-g d.g d/g d0g d1g d2g d3g d4g d5g d6g d7g d8g d9g d:g d;g d<g d=g d>g d?g d@g dAg dBg dCg dDg dEg dFg dGg dHg dIg dJg dKg dLg dMg dNg dOg dPg dQg dRg dSg dTg dUg dVg dWg dXg dYg dZg d[g d\g d]g d^g d_g d`g dag dbg dcg ddg deg dfg dgg dhg dig dj      }|D ];  \  }}}}t        j                  |||      }t	        t        ||z
        |z  dkk         = y )lNr  r  g?r   r   rY   )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 ?rC  )r   rq  r   r   r   r7  )r=   hyp1ref_datar8  r9  r  r  r  s           r>   rr  zTestHyper.test_hyp1f1  s   ~~bB'0vAF  e
Oe
Ne
 Ne
 M	e

 Pe
 Ne
 Ne
 Ne
 Pe
 Me
 Oe
 Ne
 Oe
 Oe
 Me
  M!e
" N#e
$ O%e
& O'e
( N)e
* M+e
, O-e
. O/e
0 N1e
2 M3e
4 O5e
6 O7e
8 P9e
: P;e
< P=e
> O?e
@ PAe
B OCe
D NEe
F NGe
H NIe
J OKe
L MMe
N MOe
P MQe
R OSe
T OUe
V OWe
X NYe
Z M[e
\ Q]e
^ P_e
` Oae
b Nce
d Pee
f Nge
h Mie
j Oke
l Pme
n Ooe
p Oqe
r Ose
t Mue
v Mwe
x Oye
z N{e
| O}e
~ Ne
@ OAe
B OCe
D QEe
F PGe
H NIe
J NKe
L PMe
N OOe
P OQe
R OSe
T OUe
V OWe
X OYe
Z N[e
\ N]e
^ O_e
` Oae
b Oce
d Nee
f Pge
h Nie
j Nke
l Pme
n Qoe
p Nqe
r Ose
t Oue
v Owe
x Nye
z O{e
| O}e
~ Ne
@ MAe
B OCe
D OEe
F PGe
H OIe
 eN ' 	<NAa(^^Aa*FC6)*83d:;	<rA   c                 ~    t        j                  ddd      }t        j                  ddd      }t        ||dd       y )Nr   r  g7B.g|:B.r  r   rY   r   rq  r   )r=   rl  hyp2s      r>   test_hyp1f1_gh2957zTestHyper.test_hyp1f1_gh2957  s4    ~~c38~~c38dq9rA   c                 P    t        j                  ddd      }t        |ddd       y )Nr   r  ig<`?r  r   rY   ro  )r=   hyps     r>   test_hyp1f1_gh2282zTestHyper.test_hyp1f1_gh2282  s#    nnS#u-1aHrA   c                 ,   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 ]6  \  }\  }}}}}t	        j                  ||||      }t        ||d&d'd(| )       8 y )*Nr   rV   r  |Gz?r  g?g|Gzr0  r   rH   r  ri  )r   r  r  rv  gYi2?r  r   g433333?rF   r  r   rK   r  rk  g      ?r        @g      gUUUUUUտg  @gUUUUUU?g)r  r  r         $gEciH!@)r  r   rV   ffffff?gzG?)rH   r  rV   ry  gy&1|)rp  r   rV   ry  g"nN%@?)rH   rP  rV   ry  g!J)r  |      %@r2  gzS;)r  rz  g      %r2  g[B.VP<r3  r   test #rZ   rP   err_msg)r   r   r	   r
   r   r;  r   r   r  rt  r   )	r=   valuesrx   r8  r9  r  r   rD  cvs	            r>   ru  zTestHyper.test_hyp2f1  s    !S&'#o*>">?!S'6&+#561c6#e*,-MCS1c'l31a]]1e 44}}S!"$+MM#$678 5"T"Xe 44}}Y'(*1--	*BCD 5"T"Xe 44}}Y'(*1--	*BCD wGMM$//'--2HH}}T"#%,]]8%<=>
 ; &&GH9
< #,F"3 	NA1aA1a+BBQ&M	NrA   c                 T   t        j                  ddd      }t        |ddd       g dg d	}}t        |      t        |      }}d
}t        j                  |||      }t        t        t        |z        z  t        j                  |||      t        j                  d|z   |z
        t        j                  |      z  z  |d|z
  z  t        j                  d|z   |z
  d|z
  |      z  t        j                  |      t        j                  d|z
        z  z  z
  z  }t        ||dd       y )NrV   r  r  g D?r   r   rY   )r  r  333333?g)r  g	@r!  g	r   rH   r  )r   hyperur   r   r   r	   rq  r;  )r=   val1r8  r9  r  hypuhprls          r>   test_hyperuzTestHyper.test_hyperu+  s   ~~aC(if1= !4!aj'!*!~~a!$3r!t9w~~a!4 'ac!e 4W]]15E E G 1Q3xqs1uQqS(CC")--"27==13E"E G G H 	dq9rA   c                 L    t        t        j                  ddd      ddd       y )NrV   r  g3333334@g(¨?r  r   rY   )r   r   r  r<   s    r>   test_hyperu_gh2287zTestHyper.test_hyperu_gh22878  s!    q#t46J$1	.rA   N)r'  r(  r)  rY  r_  rg  rj  rr  rq  rt  ru  r  r  r.  rA   r>   rR  rR  ]  s9    9
9
34-r<h:
I"NH:.rA   rR  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 Z3dVd3Z4e5jl                  jo                   e8jr                         d4k(  d56      d7        Z:e5jl                  jo                   e8jr                         d4k(  d56      d8        Z;d9 Z<d: Z=e5jl                  j|                  d;        Z?d< Z@d= ZAd> ZBd? ZCd@ ZDdA ZEdB ZFdWdCZGdD ZHdE ZIdF ZJdG ZKdH ZLdI ZMdJ ZNdK ZOdL ZPdM ZQdN ZRdO ZSdP ZTdQ ZUe5jl                  j                  dRdSdTg      dU        ZWy2)X
TestBesselc                 t    t        t        j                  d            }t        |t        ddg      dd       y )Nr   gbɃ?gΝJ ֿr3  r   rY   )r   r   r  r   )r=   it0s     r>   r  zTestBessel.test_itj0y0>  s2    GNN2&'U$79M#NO#!	-rA   c                 t    t        t        j                  d            }t        |t        ddg      dd       y )Nr   gbqTtt?g/]ooۿr3  r   rY   )r   r   r  r   )r=   it2s     r>   r  zTestBessel.test_it2j0y0C  s2    GOOB'(U$9;O#PQ#!	-rA   c                 l    t        t        j                  dd      t        j                  dd             y Nr   rH   r  )r   r   r  r<   s    r>   test_negv_ivzTestBessel.test_negv_ivH  s!    WZZ!_gjjA&67rA   c                 x    t        j                  d      }t        j                  dd      }t        ||dd       y Nr  r   r3  rY   )r   r  r  r   r=   ozozrs      r>   r  zTestBessel.test_j0K  -    ZZ^jj2Cf15rA   c                 x    t        j                  d      }t        j                  dd      }t        ||dd       y Nr  rV   r3  r   rY   )r   r  r  r   r=   o1o1rs      r>   r  zTestBessel.test_j1P  r  rA   c                 N    t        j                  dd      }t        |ddd       y )NrV   r   ;x?r3  r   rY   )r   r  r   )r=   jnnrs     r>   r  zTestBessel.test_jnU  s!    zz!B2aHrA   c                 t    t        t        j                  dd      t        j                  dd       dd       y r5  r   r   r  r<   s    r>   test_negv_jvzTestBessel.test_negv_jvY  s*    

2q)GJJq!,<+<7QRSrA   c           	          g dg dg dg dg dg}t        |      D ]2  \  }\  }}}t        j                  ||      }t        ||ddd| 	       4 y )
N)r   r  g
Ye?)UUUUUU?:0yE>g˿+>)r  rX   g)%->)g@rX   g5c)!9)r  r  g%,Ϳr3  r   r|  r}  )r  r   r  r   )r=   r  rx   rD  r   r  ycs          r>   r  zTestBessel.test_jv\  s`    /5662	 &f- 	NLAy1aAq!BBQ&M	NrA   c                 t    t        t        j                  dd      t        j                  dd       dd       y r5  )r   r   r  r<   s    r>   test_negv_jvezTestBessel.test_negv_jveg  ,    B*W[[A->,>$1	.rA   c                    t        j                  dd      }t        |ddd       t        j                  dd      }d}t        j                  d|      t	        t        |j                               z  }t        ||dd       y )NrV   r   r  r3  r   rY   ?      ?)r   r  r   r  r   r7  r  )r=   jvexpjvexp1r  jvexprs        r>   r  zTestBessel.test_jvek  sg    Ab!3&qIQu%Aac!&&k\!22V!<rA   c                    t        j                  dd      }t        j                  dd      }t        |t        g d      dd       t        |t        g d      dd       t        j                  dd      }t        |t        g d	      d
       t        j                  dd      }t        |t        g d      d
       y )Nr   r   rV   )go@.=@gzj,[@glN!@g5/ D'@gh>-@r<  rY   gW@g0@gQX$@g*@g8*5{x0@rU   )gEk[@g~Cju]@gYrʝ^@g, `@gf	`@rN   rO   -  )gts@g&ǭr3t@gWt@g,$Y&u@gu@r   jn_zerosr   r   )r=   jn0jn1jn102jn301s        r>   test_jn_zeroszTestBessel.test_jn_zeross  s    q#q#U $3 4
 $!	- 	U $. /
 $!	-   Q'u &>  ? FK		L   Q'u &>  ? FK		LrA   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       y )Nr   rk   i  g;@rN   rO   i  g8v@i+  gׂMm@r  gxi@g	,@gи{>@i  r   )gUDX@g!@g*HS@gz5 @g@2;@r  r  )r=   r  jn10jn3010s       r>   test_jn_zeros_slowzTestBessel.test_jn_zeros_slow  s    q#&E
$9FE
$9FE
$9FC(U%:GU%:GU%:G!!$q) ': !; BF		GrA   c                 8  
 t         j                  

fd}t        dd      D ]u  }t        j                  |      \  }}}}t	        |||      D ]I  \  }}}	|	dk(  rt         
||      dd       "|	dk(  rt         |||      dd       =t        d|        w y )Nc                 <     | dz
  |       | dz   |      z
  dz  S )NrV   rH   r.  )rd   r   r  s     r>   jnpz(TestBessel.test_jnjnp_zeros.<locals>.jnp  s'    qs1I1Q3q	)1,,rA   rV   rR   r   r   r  zInvalid t return for nt=)r   r  rt   jnjnp_zerosr5  r   AssertionError)r=   r  ntr  rd   r  tzznnttr  s             @r>   test_jnjnp_zeroszTestBessel.test_jnjnp_zeros  s    ZZ	-2, 	JB ,,R0JAq!Q!!Ql J
B7#Br2J=1W#CBK>(+CB4)HIIJ	JrA   c                     t        j                  dd      }t        |t        g d      dd       t        j                  dd      }t        t        j                  d|      dd	       y )
NrV   r   g(yu?gOXeS@ga!@gxi'@g'Nw(-@r<  r   rY     r   r  )r   	jnp_zerosr   r   rU  )r=   r  s     r>   test_jnp_zeroszTestBessel.test_jnp_zeros  s\    !$U $. /
 $!	- A&C-qu=rA   c           
          t        j                  dd      }t        |t        g d      t        g d      t        g d      t        g d      fdd	       y )
NrV   r   r  r  )"@g+@g-9(1!@gȘ'@g>tA}-@)g0v@gjt@gH.?$@g}"O*@gGŧp0@rn  r   rY   )r   
jnyn_zerosr   r   )r=   jnzs     r>   test_jnyn_zeroszTestBessel.test_jnyn_zeros  sc      A&e %/ 0
 $ %/ 0
 $ %/ 0
 $ %/ 01( $!)	-rA   c                     t        j                  dd      }t        j                  dd      t        j                  dd      z
  dz  }t        ||dd       y )NrH   rV   r   r>  r   rY   )r   rU  r  r   )r=   jvprimjv0s      r>   test_jvpzTestBessel.test_jvp  sC    Qq!zz!Awzz!A.1':rA   c                 x    t        j                  d      }t        j                  dd      }t        ||dd       y r  )r   r  r  r   )r=   ozkozkrs      r>   r  zTestBessel.test_k0  -    jjnzz!BDvA6rA   c                 x    t        j                  d      }t        j                  dd      }t        ||dd       y r  )r   r  r  r   )r=   ozkeozkers      r>   r  zTestBessel.test_k0e  -    {{2Ab!e&q9rA   c                 x    t        j                  d      }t        j                  dd      }t        ||dd       y r  )r   r  r  r   )r=   o1ko1krs      r>   r  zTestBessel.test_k1  r  rA   c                 x    t        j                  d      }t        j                  dd      }t        ||dd       y r  )r   r  r  r   )r=   o1keo1kers      r>   r  zTestBessel.test_k1e  r  rA   c                 P   dt         j                  j                         z  dz
  }dt         j                  j                         z  dz
  }t        j                  d||      }t        j                  d||      }t        j                  d||      }t        j                  d||      }t	        |j
                  dgdd       t	        |j
                  t        ||z   dz   ||z
  g      dz  dd       ||z   dz   ||z   d	z   z  d	||z   dz   z  |dz   z  d	|dz   z  |dz   z  g}|d   |d   d|d   z  z
  |d   |d   z
  |d   z   g}t	        |j
                  t        |      d
z  dd       ||z   d	z   ||z   dz   z  ||z   dz   z  d||z   d	z   z  ||z   dz   z  |dz   z  d||z   d	z   z  |dz   z  |dz   z  d|dz   z  |dz   z  |dz   z  g}|d   |d   d|d   z  z
  |d   d|d   z  z
  d|d   z  z   |d   |d   z
  |d   z   |d   z
  g}	t	        |j
                  t        |	      dz  dd       y )Nr   rV   r   rH   r   r  rY   rk  rF   g       @rL   r  r  g      H@)r[   ra   r   jacobir   r  r   )
r=   r8  r9  P0P1P2P3cpp2cp3cs
             r>   test_jacobizTestBessel.test_jacobi  s]   bii  1$bii  1$^^Aa"^^Aa"^^Aa"^^Aa"qca8eQUQYA$67#=$1	.s1uqs1uoq!A#a%y!A#1Q31>!uRU1RU7]2a5A;r!u#45eCj3.W1Es1uqs1uoqs1u%a1Qi1Q&71&=!A#a%j!A#!$Q!Wac]AaC%8:!uRU1RU7]2a52a5=2a5#8Ar!uRU9J2a59PQeCj4/gAFrA   c                 N    t        j                  dd      }t        |ddd       y )Nr   r   _2?r3  rY   )r   r  r   )r=   kn1s     r>   r  zTestBessel.test_kn  s!    jj2/f1ErA   c                 l    t        t        j                  dd      t        j                  dd             y Nr  r)  r  r   r   r  r<   s    r>   test_negv_kvzTestBessel.test_negv_kv  s"    WZZS)7::dC+@ArA   c                 N    t        j                  dd      }t        |ddd       y )Nr   r   r  r>  rY   r   r  r   )r=   kv0s     r>   test_kv0zTestBessel.test_kv0  s!    jj2/gAFrA   c                 N    t        j                  dd      }t        |ddd       y )NrV   r   gKދ@r>  r   rY   r  )r=   kv1s     r>   test_kv1zTestBessel.test_kv1  !    jj3.W1ErA   c                 N    t        j                  dd      }t        |ddd       y )NrH   r   g)lHH@r>  r   rY   r  )r=   kv2s     r>   test_kv2zTestBessel.test_kv2  r  rA   c                 D    t        t        j                  dd      d       y )Nr-  rV   g.Ք"H)r   r   r  r<   s    r>   test_kn_largeorderzTestBessel.test_kn_largeorder  s    

2q)+ABrA   c                 D    t        t        j                  dd      d       y )Nr   g =`XCr  r<   s    r>   test_kv_largeargzTestBessel.test_kv_largearg  s    WZZ4(!,rA   c                 l    t        t        j                  dd      t        j                  dd             y r  )r   r   r  r<   s    r>   test_negv_kvezTestBessel.test_negv_kve  s"    W[[c*GKKc,BCrA   c                 $   t        j                  dd      }t        j                  dd      t        d      z  }t	        ||dd       d}t        j                  d|      }t        j                  d|      t        |      z  }t	        ||dd       y )Nr   r   r3  rY   r  )r   r  r  r   r   )r=   kve1r  r  kve2r  s         r>   r  zTestBessel.test_kve  st    {{1R jj2s2w&cQ7{{1Qjj1oc!f$cQ7rA   c                 |    d}t        t        j                  d|       t        j                  d|d      dd       y )Nr)  rV   r   rd   r>  rY   )r   r   r  kvp)r=   r  s     r>   test_kvp_v0n1zTestBessel.test_kvp_v0n1&  s3    Aq))7;;q!q+A$1	.rA   c                     d}d}t        j                  |dz   |       ||z  t        j                  ||      z  z   }t        j                  ||d      }t        ||dd       y )Nr  r)  rV   r  r>  r   rY   r   r  r  r   r=   rD  r  xcr   s        r>   test_kvp_n1zTestBessel.test_kvp_n1+  s[    jj1Q!A#gjj1o"55KK!q!AG!4rA   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       y )	Nr  r)  rH   rV   r  r>  r   rY   r  r  s        r>   test_kvp_n2zTestBessel.test_kvp_n23  sr    d1a4ik1a4'**Qq/1GJJqs14Ea4GGKK1"AG!4rA   c                 x    t        j                  d      }t        j                  dd      }t        ||dd       y r  )r   r  r  r   r  s      r>   r  zTestBessel.test_y0:  r  rA   c                 x    t        j                  d      }t        j                  dd      }t        ||dd       y r  )r   r4  r  r   r  s      r>   r  zTestBessel.test_y1?  s-    ZZ^jj23V!4rA   c                 J   t        j                  d      \  }}t        j                  dd      \  }}t        ||f   }t        ||f   }t        t	        t        j
                  d|            ddd       t        t	        t        j
                  d|      |z
        ddd       y )NrH   rV   r  r   r=  r   rY   )r   y0_zerosr   r   r7  r  )r=   yoypozozpor  allvals          r>   test_y0_zeroszTestBessel.test_y0_zerosD  s    !!!$3!!!A.3BiCGGJJsC013W1MGJJq#.78#GRSTrA   c                 x    t        j                  d      }t        |t        dg      t        dg      fdd       y )NrV   r  gѮBO?rn  r   rY   )r   y1_zerosr   r   )r=   r4  s     r>   test_y1_zeroszTestBessel.test_y1_zerosL  s6    a UG9-ugY/?@#!	-rA   c                 |    t        j                  dd      }t        |t        dg      t        dg      fdd       y )NrV   r  yL
F%u?!rh?y;OnгY?r  r   rY   )r   	y1p_zerosr   r   )r=   y1ps     r>   test_y1p_zeroszTestBessel.test_y1p_zerosQ  s9    !,e]O4e_<M6NO#!	-rA   c                     t        j                  dd      }t        |t        ddg      dd       t        j                  dd	      }t        |g d
d       y )NrF   rH   g3@g(A&"@rn  r   rY   r  r   )g]E.+"|@gH(|@gff|}@g&b`~@gHO_~@r   rO   )r   yn_zerosr   r   )r=   ans     r>   test_yn_zeroszTestBessel.test_yn_zerosV  sR    a"E7G"45FKc!$ 4
 #	%rA   c                 D   t        j                  dd      }t        |t        ddg      dd       t        j                  dd      }t        t        j                  d|      dd	
       t        j                  dd      }t        t        j                  d|      dd
       y )Nr   rH   gQhվ@gzN@r6  rY   +   r   r   r  r  r   )r   	ynp_zerosr   r   rV  r=   aos     r>   test_ynp_zeroszTestBessel.test_ynp_zerosa  s~    q#E:z":;&qQr!$B+QU;s1%C,ad;rA   c                 t    t        j                  dd      }t        t        j                  d|      dd       y )Nr  r   r   r!  r  )r   r-  r   rV  r.  s     r>   test_ynp_zeros_large_orderz%TestBessel.test_ynp_zeros_large_orderi  s+    s1%C,ae<rA   c                 N    t        j                  dd      }t        |ddd       y NrV   r   5,1
r3  r   rY   )r   r  r   )r=   yn2ns     r>   r  zTestBessel.test_ynm  s!    zz!B1QGrA   c                 \    t        j                  dd      }|t        j                   k(  sJ y )NrT   rV   )r:   r  r[   r   )r=   r  s     r>   test_yn_gh_20405zTestBessel.test_yn_gh_20405q  s&    99S!$BFF7"""rA   c                 t    t        t        j                  dd      t        j                  dd       dd       y r5  )r   r   r  r<   s    r>   test_negv_yvzTestBessel.test_negv_yvv  s,    

2q)GJJq!,<+<$1	.rA   c                 N    t        j                  dd      }t        |ddd       y r4  )r   r  r   )r=   yv2s     r>   r  zTestBessel.test_yvz  s!    jj20vAFrA   c                 t    t        t        j                  dd      t        j                  dd       dd       y r5  )r   r   r  r<   s    r>   test_negv_yvezTestBessel.test_negv_yve~  r  rA   c                     t        j                  dd      }t        |ddd       t        j                  dd      t	        d      z  }t        j                  dd      }t        ||dd       y )	NrV   r   r5  r3  r   rY   r  rK   )r   r  r   r  r   )r=   yve2yve2ryve22s       r>   r  zTestBessel.test_yve  sX    {{1R 1QG

1U#CG+Ae$u6:rA   c                     t        j                  dd      t        j                  dd      z
  dz  }t        j                  dd      }t        ||dd       y )	NrV   r   r   rk  rH   r>  r   rY   )r   r  rV  r   )r=   yvpryvp1s      r>   test_yvpzTestBessel.test_yvp  sE    

1R 7::a#33S8{{1R dq9rA   c              #      K   g d}g d}t        j                  ||      E d{    t        j                  dt        dd      z   dg      E d{    y7 17 w)z>Yield points at which to compare Cephes implementation to AMOS)ir        4rx  r   r  r   r   {G(@r  r  )ir  rK   r   rp       i@g     y@g     Ă@g@  i'  Nr   irB  r  )	itertoolsproductr   )r=   rD  r  s      r>   _cephes_vs_amos_pointsz!TestBessel._cephes_vs_amos_points  s\      K$$Q*** $$S6#r?%:SEBBB	 	+ 	Cs!   "AA+AAAANc                    | j                         D ]  \  }}|
 |||      r |||       |||dz          |t        |      |      }
}	}t        j                  |      r%t	        t        j
                  |	      dk\  ||f       st        j                  |      rt	        |	j                  dk7  ||f       t        ||	||f||       |t        |      k(  st        |
|	||f||        y )Nr  u <7~r   )r~  rP   rZ   )	rO  rs   r[   r  r   r7  r   r  r   )r=   r  f2rP   rZ   r  rD  r  c1c2c3s              r>   check_cephes_vs_amoszTestBessel.check_cephes_vs_amos  s    //1 	;DAqDAJAq2a":r#a&!}BBxx|r
e+aV4"1q!f-BATMA;#BQF*.T;	;rA   ppc64lezfails on ppc64ler  c                 f    | j                  t        j                  t        j                  dd       y )NrX   u5% r"  )rV  r   r  r  r<   s    r>   test_jv_cephes_vs_amosz!TestBessel.test_jv_cephes_vs_amos  #     	!!'**gjju6!RrA   c                 f    | j                  t        j                  t        j                  dd       y )Ndy=rY  r"  rV  r   r  r  r<   s    r>   test_yv_cephes_vs_amosz!TestBessel.test_yv_cephes_vs_amos  r[  rA   c                 n    d }| j                  t        j                  t        j                  dd|       y )Nc                     t        |       dkD  S )Nr  )r7  )rD  r  s     r>   skipperzDTestBessel.test_yv_cephes_vs_amos_only_small_orders.<locals>.skipper  s    q6B;rA   r]  rY  )rP   rZ   r  r^  )r=   rb  s     r>   (test_yv_cephes_vs_amos_only_small_ordersz3TestBessel.test_yv_cephes_vs_amos_only_small_orders  s-    	!!'**gjju6'. 	" 	0rA   c                     t        j                  d      5  | j                  t        j                  t        j                  dd       d d d        y # 1 sw Y   y xY w)Nr  r  g:0y5>rY  r"  )r[   r  rV  r   r  r<   s    r>   test_iv_cephes_vs_amosz!TestBessel.test_iv_cephes_vs_amos  sF    [[X& 	V%%gjj'**4f%U	V 	V 	Vs   2AAc                    d}t         j                  j                  d       t         j                  j                  d|      dt         j                  j	                  d|      z  z  }t         j                  j                  d|      dt         j                  j	                  d|      z  z  }t         j                  j	                  d|      d	k(  }||   j                  t         j                        ||<   t        j                  d
      5  t        j                  ||      }t        j                  ||dz         }t         j                  |t        |      dkD  <   t         j                  |t        |      dkD  <   d	|t        |      dk  <   d	|t        |      dk  <   t        ||z  dz
        }d	|t        j                  |      <   d d d        t        j                        }t        ||   dk  ||   ||   t        j                  ||   ||         t        j                  ||   ||   dz         f       y # 1 sw Y   rxY w)Ni@B rV   r   rK   rH   r   r   r  r   r  r  r  rQ  gYngH׊>)r[   ra   rm   r  r  r   r  r  r   r  r   r7  r   argmaxr   )	r=   r*  rD  r   imskrS  rT  dcre   s	            r>    test_iv_cephes_vs_amos_mass_testz+TestBessel.test_iv_cephes_vs_amos_mass_test  s   
		qIIS!$RYY->->qq->-I'IIIIS!$RYY->->qq->-I'II		!!!!!,1D'..*$[[X& 	!Aq!BAqt$B #%&&Bs2w"$&&Bs2w#$Bs2w #$Bs2w RUQYB Brxx|	! IIbM 	qEDLqT1Q4AaD!A$/AaD!A$r'1JK	
#	! 	!s   B9H55H>c                     | j                  t        j                  t        j                  dd       | j                  t        j                  t        j                  dd       y )Nr   rY  r"  )rV  r   r  r  r<   s    r>   test_kv_cephes_vs_amosz!TestBessel.test_kv_cephes_vs_amos  s@    !!'**gjjt&!Q!!'**gjjt&!QrA   c                     t        t        j                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d       y )	Nr   rF   gP?r  rL  g~Omʒ?gY8E@@gKSnr  r<   s    r>   test_ticket_623zTestBessel.test_ticket_623  sD    

1a(*=>

3-/AB

3	24GHrA   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
         y)zNegative-order BesselsrK   rV   gl)ܿr  gPj?gk?g%E*2ig敋?gw--`?gÉB?gW?r  g޴?gz|?a?gpx%?y      ?        y      ?      ?yYD?`{1wy6x?B]#Ӯ?y ?b>?y.}9d?8kؿy      ?333333?r  y333333?      ?r  N)r   r   r  r  r  r  r  r   r  r  r  rb  rj  r<   s    r>   test_ticket_853zTestBessel.test_ticket_853  s    	

2q)+>?

2q)+=>

2q)+=>

2q)+=>

2q)+=>

2q)+=>

2q)+=>

2q)+<=

4+-CD

4+-?@

4+->?

4+-?@

2t,.AB

2t,.@A

2t,.@A

2t,.@A

2t,.@A

2t,.@A

2t,.@A

2t,.?@

4.0FG

4.0UV

4.0BC

4.0UV

4.0AB

4.0RS

4.0BC

4.0RSD0'**T62J3t92TUD0'**T62J3t92TUD0'**T62J3t92TUD0'**T62J3v;2VWOOD$'JJtT"R

4(=%==	
 	OOD$'JJtT"R

4(=%==	
rA   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       j                         t        j                  d             t        t        t        j                  d      dd       j                          t        j                  d             y)zReal-valued Bessel domainsr   rK   rV   r   rH   rF   N)r   r   r   r  r  r  r  r  r  r  r  rC   r  r  r<   s    r>   test_ticket_854zTestBessel.test_ticket_854  s   gjjb)*+gjjb)*+gjjb)*+gjjB'()gjjb)*+gjjB'()gkk#r*+,gkk#r*+,gkk#r*+,gkk!R()*gkk#r*+,gkk!R()*gmmB'!,-113W]]25FGE'--+Aa015577r9JKrA   c                     t        t        j                  dd      t        j                  k(         t        t        j
                  dd      t        j                  k(         y )Nr  r   )r   r   r  r[   r   r  r<   s    r>   test_gh_7909zTestBessel.test_gh_7909)  s:    

3"bff,-C#rvv-.rA   c                     t        t        j                  dd      d       t        t        j                  dd      d       y)zReal-valued Bessel I overflowrV   i  g~rS   i`  g ?los~Nr   r   r  r<   s    r>   test_ticket_503zTestBessel.test_ticket_503-  s.    

1c*,AB

4.0EFrA   c                 D    t        t        j                  dd      d       y )Nr  rV   rq  rx  r<   s    r>   test_iv_hyperg_poleszTestBessel.test_iv_hyperg_poles2  s    

4+->?rA   c                    t        d|      j                  t              }|d|z  z   t        d|z        z  t	        j
                  |dz         z
  t	        j
                  ||z   dz         z
  }t        |t        |      <   t        |      }t        |      j                         t        t              j                  z  |z  t        |d         dz  z   }|j                         |fS )Nr   rH   r   rV   rK   r  )r   r   r   r   r   rA  r   r   r   r7  r  r   r  sumr=   rD  r  rd   re   rC  r  s          r>   	iv_serieszTestBessel.iv_series5  s    1aL'qsUC1I! 44wqs1u7MM%(F!fjjlU6]...2S2Z]Buuw|rA   c                     dD ]9  }| j                  d|      \  }}t        t        j                  |      |||       ; y )Nr   rp  rK  r   rZ   r~  )r  r   r   rx  r=   r  valuer  s       r>   test_i0_serieszTestBessel.test_i0_series=  =    ! 	GA1-JE3GJJqM5sAF	GrA   c                     dD ]9  }| j                  d|      \  }}t        t        j                  |      |||       ; y )Nr  rV   r  )r  r   r   r  r  s       r>   test_i1_serieszTestBessel.test_i1_seriesB  r  rA   c           	          dD ]C  }dD ]<  }| j                  ||      \  }}t        t        j                  ||      ||||f       > E y )N)rH  rx  r   r   r   rI  r  )r   rp  rK  y             @r  )r  r   r   r  r=   rD  r  r  r  s        r>   test_iv_serieszTestBessel.test_iv_seriesG  sU    7 	SA, S!^^Aq1
s

1a 0%cAq6RS	SrA   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 ]=  \  }\  }}t        j                  |      t        |       z  }t	        ||ddd|        ? y )Nr   r   rX   r  g0oO?r   g!?grb?r  gpH?r0  gC~?      4@ggo?r3  r   r|  r}  )r  r   rx  r   r   r=   r  rx   r   rD  r  s         r>   ry  zTestBessel.test_i0M  s    *#,%%%%%& #6* 	NIAv1AaR(BBQ&M	NrA   c                 x    t        j                  d      }t        j                  dd      }t        ||dd       y r  )r   r|  r  r   )r=   oizeoizers      r>   r}  zTestBessel.test_i0e[  -    {{2Ar"e&q9rA   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 ]=  \  }\  }}t        j                  |      t        |       z  }t	        ||ddd|        ? y )Nr   rX   gj|=r  gȕ![1?r   g;͘?r   gRΜ?r0  g|?r  g}f?r3  r   r|  r}  )r  r   r  r   r   r  s         r>   r  zTestBessel.test_i1`  s    *01%%%%& #6* 	NIAv1AaR(BBQ&M	NrA   c                 x    t        j                  d      }t        j                  dd      }t        ||dd       y r  )r   r  r  r   )r=   oi1eoi1ers      r>   r  zTestBessel.test_i1em  r  rA   c                 t    t        t        j                  d            }t        |t        ddg      dd       y )Nr   gїJB?@g*u?rn  r   rY   )r   r   r  r   )r=   iti0s     r>   r  zTestBessel.test_iti0k0r  s2    W^^A&'e%79K$LM#!	-rA   c                 b    t        j                  d      }t        |t        ddg      dd       y )Nr  gݳɄ|T?gVƥ
@r6  r   rY   )r   r  r   r   )r=   it2ks     r>   r  zTestBessel.test_it2i0k0w  s-    r"e%:<N$OP#!	-rA   c                 f    t        j                  dd      t        d      z  }t        |ddd       y )Nr   r  皙gv M?r>  rY   )r   r  r   r   )r=   iv1s     r>   r  zTestBessel.test_iv|  s*    jj2s3x'0wQGrA   c                 l    t        t        j                  dd      t        j                  dd             y r  )r   r   r  r<   s    r>   test_negv_ivezTestBessel.test_negv_ive  s"    W[[1%w{{2a'89rA   c                     t        j                  dd      }t        j                  dd      t        d      z  }t	        ||dd       y )Nr   r  r  r>  rY   )r   r  r  r   r   )r=   ive1r  s      r>   r  zTestBessel.test_ive  s9    {{1R jj2s3x'ca8rA   c                 r    t        t        j                  dd      t        j                  dd      dd       y )NrV   rH   r   r>  rY   )r   r   r  ivpr<   s    r>   	test_ivp0zTestBessel.test_ivp0  s'    

1a('++a*;'PQRrA   c                     t        j                  dd      t        j                  dd      z   dz  }t        j                  dd      }t        ||dd       y )Nr   rH   rV   r>  rY   )r   r  r  r   r"  s      r>   test_ivpzTestBessel.test_ivp  sC    ZZ!_wzz!A.1KK!173rA   zx, expected)  4&kCgeAKq:>)ꌠ9Y>)Fg/"ļc                 F    t        t        j                  |      |d       y )Nr  rO   )r   r   r  r  s      r>   test_gh22705zTestBessel.test_gh22705  s     	

1xe<rA   )r]  r   N)   )Xr'  r(  r)  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  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  r2  r  r8  r:  r  r>  r  rF  rO  rV  r*  r+  r,  r  machinerZ  r_  rc  re  slowrk  rm  ro  rr  rt  rv  ry  r{  r  r  r  r  ry  r}  r  r  r  r  r  r  r  r  r  r-  r  r.  rA   r>   r  r  =  sb   -
-
86
6
IT	N.=L<G$J	>-0;
7
:
7
:
G&FBGFFC-D8.
556
5
U-
-
	%<=H#
.G.;:

C; [['x'')Y60  2S2S [['x'')Y60  2S2S0V [[
 
>RI
0
dL"/G
@G
G
SN:
N:
-
-
H:9
S4
 [[]	&	'	
=	=rA   r  c                       e Zd Zd Zd Zy)TestLaguerrec                    t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        |j                  dgdd       t        |j                  d	dgdd       t        |j                  t	        g d
      dz  dd       t        |j                  t	        g d      dz  dd       t        |j                  t	        g d      dz  dd       t        |j                  t	        g d      dz  dd       y )Nr   rV   rH   r   rF   r   r  rY   rK   )rV   rD  rH   rk  )rK   r  irL   r9  )rV   iH   ir   r:  )rK   r   i8iX  ir  r  )r   laguerrer   r  r   )r=   lag0lag1lag2lag3lag4lag5s          r>   test_laguerrezTestLaguerre.test_laguerre  s   """"""':QgA>i 03 6W1Mm 4S 8wQO&8 9$ >$1	.&D E M$1	.rA   c           
      f   dt         j                  j                         z  dz
  }t        j                  d|      }t        j                  d|      }t        j                  d|      }t        j                  d|      }t	        |j
                  dg       t	        |j
                  d|dz   g       t        |j
                  t        dd|dz   z  |d	z   |d
z   z  g      d
z  dd       t        dd|dz   z  d|dz   z  |dz   z  |dz   |dz   z  |dz   z  g      dz  }t        |j
                  |dd       y )Nr   r  r   rV   rH   r   rK   r  r   rk  r   rY   r  r9  )r[   ra   r   ra  r   r  r   r   )r=   re   r  r  r  r  r  s          r>   test_genlaguerrezTestLaguerre.test_genlaguerre  s/   bii  3&""1Q'""1Q'""1Q'""1Q'TVVaS!TVVb!a%[)q"A,RAF8K&L MPS S#!	-"q1u+A,!a%0q5QU+q1u57 8 ;>> 	vA>rA   N)r'  r(  r)  r  r  r.  rA   r>   r  r    s    . ?rA   r  c                       e Zd Zd Zy)
TestLambdac           
      t   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       y )	NrV   r  r   rH   r  r5  r3  rY   )r   lmbdar   r  rU  r  r   )r=   lamlamrs      r>   
test_lmbdazTestLambda.test_lmbda  s    mmAb!7::a#Qwzz!B'7%7%:;<7;;q$bAb)9&9#&='++aPRBS@STV@V&VWX
 	TQ7rA   N)r'  r(  r)  r  r.  rA   r>   r  r    s    8rA   r  c                       e Zd Zd Zd Zy)	TestLog1pc                     t        j                  d      t        j                  d      t        j                  d      f}t        d      t        d      t        d      f}t        ||dd       y )Nr  r  r  r  r3  r   rY   r   r  r   r   )r=   l1pl1prls      r>   r  zTestLog1p.test_log1p  sO    }}R '--"3W]]25FGR#b'3r7+Ua8rA   c                     t        j                  d      t        j                  d      t        j                  d      f}t        d      t        d      t        d      f}t        ||dd	       y )
NrV   r  r  rH   r(  r)  r3  r   rY   r  )r=   l1pml1pmrls      r>   test_log1pmorezTestLog1p.test_log1pmore  sO    a '--"4gmmC6HIa&S#c(+f6:rA   N)r'  r(  r)  r  r  r.  rA   r>   r  r    s    9
;rA   r  c           	          dz  dk(  rdnd}d|z  t        fd| dz  |dz  ddt        j                  z  | z  |z  d	      d   z  }| dkD  r|dz  }|S )
z
    Compute the Fourier coefficient of the even Mathieu function.
    The integral definition of a Fourier coefficient is used.
    This function is used as an alternative implementation of
    mathieu_even_coef().
    rH   r   r  h  rV   c                 8    t        j                  |       d   S r9   )r   r#  r  rd   r  s    r>   r  z7ce_fourier_coefficient_using_integral.<locals>.<lambda>      '"5"5aA">q"A rA   r
   r!  weightwvarepsrelr3   r[   r   re   rd   r  periodr  s    ``  r>   %ce_fourier_coefficient_using_integralr    sy     EQJSCF 
64A	6!8$1RUU719V+;EKKLN 	NA 	1u	QHrA   c           	          | dk(  rydz  dk(  rdnd}d|z  t        fd| dz  |dz  ddt        j                  z  | z  |z  d	      d   z  }|S )
z
    Compute the Fourier coefficient of the odd Mathieu function.
    The integral definition of a Fourier coefficient is used.
    This function is used as an alternative implementation of
    mathieu_odd_coef().
    r   r   rH   r  r  c                 8    t        j                  |       d   S r9   )r   r)  r  s    r>   r  z7se_fourier_coefficient_using_integral.<locals>.<lambda>  r  rA   r	   r!  r  r  r  s    ``  r>   %se_fourier_coefficient_using_integralr    sq     	AvEQJSCF	
64A	6!8$1RUU719V+;EKKLN 	NA HrA   c                   ,   e Zd Zej                  j                  dddg      d        Zej                  j                  dddg      d        Zej                  j                  ddd	g      d
        Zej                  j                  dddg      d        Z	y)TestMathieuzn, q)rF   r  )r  g      @c                     t        j                  ||      }t        d      D cg c]  }t        |||       }}t	        ||d t        |       d       y c c}w )NrF   rX   rO   r   r(   rt   r  r   r  r=   rd   r  Are   r  s         r>   .test_mathieu_even_coef_against_integral_n_evenz:TestMathieu.test_mathieu_even_coef_against_integral_n_even  sW    
 %%a+ FK1XN21a;NN1Wc!f:E2 Os   A)r   r  )rJ   rH   c                     t        j                  ||      }t        ddd      D cg c]  }t        |||       }}t	        ||d t        |       d       y c c}w NrV   r  rH   rX   rO   r  r  s         r>   -test_mathieu_even_coef_against_integral_n_oddz9TestMathieu.test_mathieu_even_coef_against_integral_n_odd  s\     %%a+ FK1aQR^T21a;TT1Wc!f:E2 U   A)rH   r  )r  rH   c                     t        j                  ||      }t        dd      D cg c]  }t        |||       }}t	        ||d t        |       d       y c c}w )NrV   r   rX   rO   r   r'   rt   r  r   r  r=   rd   r  Bre   r  s         r>   -test_mathieu_odd_coef_against_integral_n_evenz9TestMathieu.test_mathieu_odd_coef_against_integral_n_even  sY     $$Q* FK1a[Q21a;QQ1Wc!f:E2 Rs   Ac                     t        j                  ||      }t        ddd      D cg c]  }t        |||       }}t	        ||d t        |       d       y c c}w r  r  r  s         r>   ,test_mathieu_odd_coef_against_integral_n_oddz8TestMathieu.test_mathieu_odd_coef_against_integral_n_odd  s\     $$Q* FK1aQR^T21a;TT1Wc!f:E2 Ur  N)
r'  r(  r)  r*  r+  r-  r  r  r  r  r.  rA   r>   r  r    s    [[Vh	%:;3 <3 [[Vh%78	3 9	3 [[Vh%89	3 :	3 [[Vh%78	3 9	3rA   r  c                       e Zd Zd Zd Zy)TestFresnelIntegralc                      y ri  r.  r<   s    r>   rL  z$TestFresnelIntegral.test_modfresnelp,  rj  rA   c                      y ri  r.  r<   s    r>   rH  z$TestFresnelIntegral.test_modfresnelm/  rj  rA   N)r'  r(  r)  rL  rH  r.  rA   r>   r  r  *  s    rA   r  c                       e Zd Zd Zy)TestOblCvSeqc                 f    t        j                  ddd      }t        |t        g d      dd       y )Nr   r   rV   )g~T~Oֿgt_J?gm{@g@j'&@rn  rY   )r   
obl_cv_seqr   r   )r=   obls     r>   test_obl_cv_seqzTestOblCvSeq.test_obl_cv_seq4  s3      1Q'U $/ 0 $!		-rA   N)r'  r(  r)  r  r.  rA   r>   r  r  3      -rA   r  c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestParabolicCylinderc                 ~    t        j                  dd      }t        |t        ddg      t        ddg      fdd	       y )
NrV   r  gQ?gx$(~?gx$(~g(\?r<  r   rY   )r   pbdn_seqr   r   )r=   pbs     r>   test_pbdn_seqz#TestParabolicCylinder.test_pbdn_seq>  sM    a$UF$*$, -"G$*$, -. $!		-rA   c                     t        j                  dd       dt        j                  dd      d   z  t        j                  dd      d   z
   y )NrV   r   r  r   )r   r  r<   s    r>   r  zTestParabolicCylinder.test_pbdvF  s=    Qra#A&&a);A)>>rA   c                     t        j                  dd      }t        j                  dd      }t        |t	        |d         t	        |d         fdd       y )NrV   r  r   r<  rY   )r   r  pbdv_seqr   r   )r=   pbnpbvs      r>   test_pbdv_seqz#TestParabolicCylinder.test_pbdv_seqJ  sI    q$q$d3q6lDQL9QOrA   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       y )Nr  r  r   rH   r   r   r   r!  r"  gGz$@gq=
ףp4@gHQ9r   rO   g(\#gQ@gkS a>)r[   r2  r   r   r   r  r   r  )r=   etar  s      r>   test_pbdv_pointsz&TestParabolicCylinder.test_pbdv_pointsO  s    kk#r1%AJrwwruu~%gnnR3Y&??S"-a0!%eL 	UE2157JQVWUD1!46JQVWrA   c                 l   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       y NrD  rF   r  r  r  r   r  r   rk  rV   r   r"  )r[   r2  r   r  r7  r   r=   r   r  r&  r  dps         r>   test_pbdv_gradientz(TestParabolicCylinder.test_pbdv_gradientY      KKAq!!D&)kk#r1%d1f-LLa T#a&[ ll3C(+gll3C.H.KKsRUWW!bt$7rA   c                 l   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       y r
  )r[   r2  r   r  r7  r   r  s         r>   test_pbvv_gradientz(TestParabolicCylinder.test_pbvv_gradientb  r  rA   c                     t        j                  dd      \  }}t        |t        j                  g d             t        |t        j                  g d             y )NrH   r   )g:4@g1{н?g7,%n?)gX@g=<'?gʠ?)r   pbvv_seqr   r[   r   )r=   res1res2s      r>   test_pbvv_seqz#TestParabolicCylinder.test_pbvv_seqk  sN    %%a+
dbhh (< = 	> 	bhh (; < 	=rA   N)
r'  r(  r)  r  r  r  r  r  r  r  r.  rA   r>   r  r  =  s'    -?P
X88=rA   r  c                       e Zd Zd Zy)TestPolygammac           	         t        j                  dd      }t        j                  dd      }t        |ddd       t        |ddd       g d	}t        t        j                  d|      t        j                  |      d
d       g d}g d}g d}t        t        j                  ||      |d
d       t	        j
                  |gdz        }t        t        j                  |t	        j
                  |gdz              |d
d       t        t        j                  t	        j
                  |gdz        |      |d
d       y )NrH   rV   r   gX];r>  r   rY   gOV,@@)rH   r   g  8Br   r  rb  )g2}jg.M?g}2;ο)r   	polygammar   r  r[   rd  )r=   poly2poly3r   rd   r  s         r>   test_polygammazTestPolygamma.test_polygammaw  s   !!!Q'!!!Q'}7C|'B ))!Q/Q#!	- *))!Q/QO99hZ\*))!RYYs1u-=>#!	-))"))QCE*:A>#!	-rA   N)r'  r(  r)  r  r.  rA   r>   r  r  u  s    -rA   r  c                       e Zd Zd Zy)TestProCvSeqc                 f    t        j                  ddd      }t        |t        g d      dd       y )Nr   r   rV   )g"~j?g6?Ң@g)u8F"@g2g)@rn  rY   )r   
pro_cv_seqr   r   )r=   prols     r>   test_pro_cv_seqzTestProCvSeq.test_pro_cv_seq  s3    !!!Q*e %0 1 $!		-rA   N)r'  r(  r)  r"  r.  rA   r>   r  r    r  rA   r  c                       e Zd Zd Zy)TestPsic                 L    t        j                  d      }t        |ddd       y )NrV   goxr3  r   rY   )r   r  r   )r=   pss     r>   r  zTestPsi.test_psi  s    [[^0vAFrA   N)r'  r(  r)  r  r.  rA   r>   r$  r$    s    GrA   r$  c                       e Zd Zd Zd Zy)
TestRadianc                 ^    t        j                  ddd      }t        |t        dz  dd       y )Nr  r   rk  rn  rY   r   r  r   r   )r=   rads     r>   r  zTestRadian.test_radian  s&    nnRA&RV&q9rA   c                 d    t        j                  ddd      }t        |t        dz  dz   dd       y )	Nr  rV   rB  rH   gC?rn  r   rY   r*  )r=   rad1s     r>   test_radianmorezTestRadian.test_radianmore  s,    ~~b!R(bd%::aPrA   N)r'  r(  r)  r  r.  r.  rA   r>   r(  r(    s    :QrA   r(  c                       e Zd Zd Zd Zy)TestRiccatic                 ,   d\  }}t        j                  ||f      }t        |      D ]G  }t        j                  ||      }t        j                  ||d      }||z  |d|f<   ||z  |z   |d|f<   I t        |t        j                  |      dd       y N)rH   r   T)
derivativer   rV   r3  rY   )r[   emptyrt   r   spherical_jnr   
riccati_jn)r=   r*  r   Srd   r  jps          r>   test_riccati_jnzTestRiccati.test_riccati_jn      1HHaVq 	A$$Q*A%%at<BqSAacFrTAXAacF		
 	7--a3&qIrA   c                 ,   d\  }}t        j                  ||f      }t        |      D ]G  }t        j                  ||      }t        j                  ||d      }||z  |d|f<   ||z  |z   |d|f<   I t        |t        j                  |      dd       y r2  )r[   r4  rt   r   spherical_ynr   
riccati_yn)r=   r*  r   Crd   r  yps          r>   test_riccati_ynzTestRiccati.test_riccati_yn  r:  rA   N)r'  r(  r)  r9  r@  r.  rA   r>   r0  r0    s    JJrA   r0  c                       e Zd Zd Zd Zy)TestSoftplusc                 `   dd l }|j                  j                  d      }d}|j                  dd|      }|j                  dd|      }|j                  dd|      }|j                  d	d
|      } |j                  ||||g      }g dg dg dg dg}	t        |      }
t        |
|	d       y )Nr   l   (sr   iirg     r  g
ףp=@@r  )g%~B7gpNf7g8B8)gJR{?g6]=gXes>)g n@?@gWH;@glH.=@)g9lchPR@gS@gzsevB@r  rO   )numpyra   default_rnguniformstackr&   r   )r=   r[   rh   rd   rc  rd  a3a4r8  r  r  s              r>   test_softpluszTestSoftplus.test_softplus  s     	ii##M2[[s[+[[bq[)[[T[*[[![,BHHb"b"%& TQKHJ
 qkSu-rA   c                     t        j                  d      dz
  }t        j                  d      }|j                         }|dkD  }t	        |||       t	        ||         ||<   t        ||       y )Nr   rH   r   )outwhere)r[   r   onescopyr&   r   )r=   r   rM  r  rN  s        r>   test_softplus_with_kwargsz&TestSoftplus.test_softplus_with_kwargs  s]    IIaL1ggajhhjA5)ah'E
S!rA   N)r'  r(  r)  rK  rQ  r.  rA   r>   rB  rB    s    .:"rA   rB  c                       e Zd Zd Zy)	TestRoundc                     t        t        t        t        j                  d      t        j                  d      t        j                  d      t        j                  d      f            }d}t        ||       y )Ng333333$@g$@r{  g333333%@)r  r  r  r  )r  maprs   r   r  r   )r=   rndrndrls      r>   r  zTestRound.test_round  sZ    3sW]]40$]]40$]]40$]]402 3 4 3u%rA   N)r'  r(  r)  r  r.  rA   r>   rS  rS    s    &rA   rS  c                   &    e Zd ZddZd Zd Zd Zy)
TestStruvec                 B   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        |      j	                         t        t              j                  z  |z  }|j                         |fS )z?Compute Struve function & error estimate from its power series.r   rK   r   rH   rV   r  )	r   r   r;  r7  r  r   r   r  r}  r~  s          r>   _serieszTestStruve._series  s    1aL!Gr!tqs1uQw''ae(<<W]]1Q3s7=SS!fjjlU6]...2uuw|rA   c                     dD ]E  }dD ]>  }| j                  ||      \  }}t        t        j                  ||      |d|      ||ff @ G y)z-Check Struve function versus its power series)
ir  (\r  rK   r   rV   r  rI     )rV   r     r"  rR   r   r"  N)r[  r   r   r
  r  s        r>   test_vs_serieszTestStruve.test_vs_series  s]    B 	WA( W!\\!Q/
sq! 4e!#NQRTUPVVW	WrA   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                   y )Nr]  r"  g;cv=?r  rO   gQ g< j?r  r  r  g?r   g       igzz?r]  i)   r  rJ  r  gffffffrK   g333333$)r   r   r
  r   r   r   r<   s    r>   test_some_valueszTestStruve.test_some_values  s   ub1?Nub1?NtS1?OtS1?OW^^C-sB0G/GHW^^C-sB0G/GHW^^C-sB0G/GHW^^C-sB0G/GHgnnT2./0gnnUB/01rA   c                 <   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             y)zRegression test for #679r   g3@g*   4@r  g333333N)r   r   r
  r<   s    r>   test_regression_679zTestStruve.test_regression_679  sk    tY7tY7	9tY7tY7	9tY7tY7	9rA   N)r  )r'  r(  r)  r[  r`  rc  re  r.  rA   r>   rY  rY    s    W29rA   rY  c                  J    t        t        j                  dd      ddd       y )Nr  r   gdX	
?r   r   rY   )r   r   r   r.  rA   r>   test_chi2_smalldfrg    s    GMM#q)+<6PQRrA   c                  `    t        t        j                  dt        j                        d       y )Nr  r   )r   r   r   r[   r   r.  rA   r>   test_ch2_infri  !  s    s266*C0rA   r   r   rF  r   c                 v    t        j                  t        j                  t         j                  |             sJ y ri  r[   r   r   r   r
  r1  s    r>   test_chi2_v_nanrl  %  s#    88GMM"&&!,---rA   rD  c                 v    t        j                  t        j                  | t         j                              sJ y ri  rk  rD  s    r>   test_chi2_x_nanro  *  s#    88GMM!RVV,---rA   c                 v    t        j                  t        j                  t         j                  |             sJ y ri  r[   r   r   r   r
  r1  s    r>   test_chi2c_v_nanrr  /  s#    88GNN2661-...rA   c                 v    t        j                  t        j                  | t         j                              sJ y ri  rq  rn  s    r>   test_chi2c_x_nanrt  4  s#    88GNN1bff-...rA   c            	         t        j                  ddddt         j                  g      d d t         j                  f   } t        j                  t         j                   dddt         j                  g      }t	        j
                  | dz  |dz        }|dk  | dk  z  |dk(  | dk(  z  z  t        j                  |       t        j                  |      z  z  }t        j                  t        j                  ||               sJ t        j                  t        j                  ||                sJ t        t	        j                  | |      |       t        t	        j                  d| dz  |dz        |       t        dt	        j                  | dz  |dz        z
  |       t        dt	        j                  | |      z
  |       t        dt	        j                  d| dz  |dz        z
  |       y )Ng{Gzr   r5  rV   rH   )r[   r   r   r   r   r!  r  r  r   r  r   r   rL  	gammainccr   rR  )rD  r   r  r  s       r>   test_chi2_edgecases_gh20972rw  9  s    	

E1dArvv./2::>A


RVVGUAtRVV45A 

1q5!a%
(CEa!eQ1622RXXa[288A;5NND66"((3t9%&&&66"++c4%j)*** GMM!Q'-GLLAE1q5137A))!a%Q77=Aq!,,c2AaQA66<rA   c                  J    t        t        j                  dd      ddd       y )Nr  r   yj_?r   r   rY   )r   r   r   r.  rA   r>   test_chi2c_smalldfrz  N  s    GNN3*,Aa)rA   c                  J    t        t        j                  dd      ddd       y )Nr  ry  r   r   r   rY   )r   r   r   r.  rA   r>   test_chi2_inv_smalldfr|  S  s    GNN3(=>a)rA   c            	         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                          y )'NrN   rV   rH   gDSYC?rO   gQ_?g?@g>;,
i}@r   )rV   r   r   g=O?rK   r  r   rL   gXs*@r  g   V4oAgO1eAr  g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.  r  )r   r   agmr[   r   r   r  r  r   r
  r   )rP   agm13agm15agm35agm12fis         r>   test_agm_simpler  X  s   D Agkk!RWWQZ002F
 EEEGKK!qc
I6&Q&(.24 EGKK1%u48GKK1%u48GKKB'%d;GKKA&(:FGKKK02DGKKa(*?dKGKKq)+?dKGKKu-/EGKKv.0GGKK/1H	#BGKK02IGKKRVVRVV46LGKK27735L Q"A&R#Q'R$bff-Q'0RVVQ'0Q("&&1bffWa("&&1RVVbffW-rvv6bffWbff-rvv6Q'0RVVR("&&1Q'0RVVQ'0R"&&)BFF73bffWb)BFF73rA   c            	      @   t        j                         5  t        j                  ddt               t	        t        j                  dd      t        j                  dd             t	        t        j                  ddd      t        j                  ddd             t	        t        j                  ddd      t        j                  ddd             t	        t        j                  ddd      t        j                  ddd             t	        t        j                  dd      t        j                  dd             t	        t        j                  dd      t        j                  dd             t	        t        j                  dd      t        j                  dd             t	        t        j                  dd      t        j                  dd             t	        t        j                  dd      t        j                  dd             d d d        y # 1 sw Y   y xY w)Nr  r  rV   r  g?rH   gffffff@)r  r  r  r  r   r   expnrT  rQ  rW  r  r  r  r  r  r.  rA   r>   test_legacyr    sn   		 	 	" KE~	WW\\!S)7<<S+ABW^^Aq#.sC0MNW]]1a-w}}S#s/KLW^^Aq#.sC0MNW]]1c*GMM#s,CDWZZ3'C)=>WZZ3'C)=>W__Q,gooc3.GHW%%a-w/?/?S/IJK K Ks   G6HHc                  *    dd l } | j                         S r9   )	threadingLock)r  s    r>   errstate_lockr    s    >>rA   c                     | 5  t        j                  d      5  t        t         j                  t         j                  dd       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr  r  rV   y        .B}T)r   r  re  r  r  )r  s    r>   test_error_raisingr    sc    	 N'* 	N'66

AuM	NN N	N 	NN Ns"   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	
       y )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 Y   y xY wNr  )invalidr   )r[   r  r   r   r   r  s     r>   xfuncztest_xlogy.<locals>.xfunc  sR    [[* 	#Avbhhqk	# 	# {		# 	# 	#   AAA'r   r   r   r   rk  r  )r   r  )rV   r  rV   rN   r"  )
r[   r   r
  r   ru   r   r{   r1   r   xlogy)r  z1z2w1w2s        r>   
test_xlogyr    s    # 
UQK!RVVjA	OB	rGW%%	&B	e	R!Wb1g	.BgmmR%eD	e	R!Wb1g	.BgmmR%eDrA   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	       y )
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 Y   y xY wr  )r[   r  r   r  r  s     r>   r  ztest_xlog1py.<locals>.xfunc  sR    [[* 	'Avbhhqk	' 	' 288A;		' 	' 	'r  r  r   r  )rV   gKH9r  rV   rN   r"  )	r[   r   r
  r   ru   r{   r1   r   xlog1py)r  r  r  s      r>   test_xlog1pyr    su    ' 
UQK!RVVj!(-
/B	e	R!Wb1g	.Bgoor2EFrA   c                  l   d } dddt         j                  f}ddg}g }t        j                  ||      D ]  \  }}|j	                  ||z          t        j
                  |t              } t        j                  | t         j                  g      |      }t        t        j                  ||d	d	
       y )Nc                 \    | dk  rt         j                   S t        j                  | |        S r9   )r[   r   r   r  r1  s    r>   r  ztest_entr.<locals>.xfunc  s(    q5FF7NMM!Q'''rA   r   r   r   rK   rV   r  otypesrN   r"  )r[   r   rM  rN  r  r   ru   r{   r   r1   r   entr)r  r  signsr  sgnrD  r  r%  s           r>   	test_entrr    s    (
 c266"FGE
C##E62 Q

37
E"A0UBJJ<03AgllAqu5ArA   c                  x   d } d}ddg}g }t        j                  ||||      D ]   \  }}}}|j                  ||z  ||z  f       " t        j                  |t
              } t        j                  | t        j                  g      |d d df   |d d df         }	t        t        j                  |	|dd	       y )
Nc                 
   | dk  s|dk  s
|dk(  r| dk7  rt         j                  S t        j                  |       st        j                  |      rt         j                  S | dk(  r|S t        j                  | | |z        | z
  |z   S r9   )r[   r   rN  r   r  r  s     r>   r  ztest_kl_div.<locals>.xfunc  sm    q5AEa1fa66M[[^r{{1~66M!VH==AaC(1,q00rA   r   r   r   rK   rV   r  r  r   rN   r"  )rM  rN  r  r[   r   ru   r{   r   r1   r   kl_div
r  r  r  r  sgnavasgnbvbr  r%  s
             r>   test_kl_divr    s    
1 FGE
C'//vufM 'b$

DGT"W%&'
E"A0UBJJ<01Q31Q3@AgnnaUCrA   c                  x   d } d}ddg}g }t        j                  ||||      D ]   \  }}}}|j                  ||z  ||z  f       " t        j                  |t
              } t        j                  | t        j                  g      |d d df   |d d df         }	t        t        j                  |	|dd	       y )
Nc                 ~    | dkD  r|dkD  rt        j                  | | |z        S | dk(  r|dk\  ryt        j                  S r9   )r   r  r[   r   r  s     r>   r  ztest_rel_entr.<locals>.xfunc  s=    q5QU==AaC((!VQ66MrA   r  rK   rV   r  r  r   rN   r"  )rM  rN  r  r[   r   ru   r{   r   r1   r   rel_entrr  s
             r>   test_rel_entrr    s     FGE
C'//vufM 'b$

DGT"W%&'
E"A0UBJJ<01Q31Q3@Ag&&15uErA   c                      t        j                  g d      } g d}| d d df   }| d d df   }t        t        j                  ||      |dd       y )N))gpB?gĬB?)gtK&?gCtK&?)g>уO'?gvуO'?)ggQW"g    G=r   rV   rN   r"  )r[   r   r   r   r  inputsr  r   r  s       r>    test_rel_entr_gh_20710_near_zeror  
  sS    XX  FH
 	q!tAq!tAG$$Q*H5qIrA   c                      t        j                  d       t        j                  g d      } g d}| d d df   }| d d df   }t	        t        j
                  ||      |dd       y )	Nr  r  ))rF   X )r  gZbti)r  r  )gMG.@g)Z?g wa)r   rV   rN   r"  )r   seterrr[   r   r   r  r  s       r>   test_rel_entr_gh_20710_overflowr    s_    NNx XX  FH
 	q!tAq!tAG$$Q*H5qIrA   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                  j                  dd      } t        j                  | t        j                  g	      |d d d
f   |d d df         }t        t        j                  ||dd       y )NrK   r  rH   r   r  r  c                     | dk  rt         j                  S t        j                  |      | k  rdt        j                  |      z  S | t        j                  |      d| z  z
  z  S )Nr   r   )r[   r   r7  squaredeltarC  s     r>   r  ztest_huber.<locals>.xfunc8  sQ    1966MVVAY1%%BFF1Ie344rA   r  r  r   rV   rN   r"  )r   r   huberr[   r   r   r  ra   randnr{   r   r1   r  r  r%  s      r>   
test_huberr  3  s    r3'0GMM!S)33+?@GMM!S)+>?5 			AA0UBJJ<01Q31Q3@AgmmQEBrA   c                  P   d } t        j                  t         j                  j                  dd      j	                         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	       y )
Nc                     | dk  rt         j                  S | r|sy| dz  t        j                  d|| z  dz  z         dz
  z  S )Nr   rH   rV   )r[   r   r   r  s     r>   r  z test_pseudo_huber.<locals>.xfuncF  sD    1966M!8rwwqAeGa<'781<==rA   r  rH   r   r   r  rV   rN   r"  )
r[   r   ra   r  tolistr{   r   r1   r   pseudo_huberr  s      r>   test_pseudo_huberr  E  s    > 	Q'..0QHsAh3GGHA0UBJJ<01Q31Q3@Ag**Aqu5IrA   c                  X    d} d}t        j                  | |      }d}t        ||d       y )Nr   gC]r2<gs.-De8rN   rO   )r   r  r   )r  rC  r  r  s       r>   test_pseudo_huber_small_rr  S  s1    EAUA&A &HAxe,rA   c                      t        j                  t        d      5  t        dd       d d d        t        j                  t        d      5  t	        dd       d d d        y # 1 sw Y   :xY w# 1 sw Y   y xY w)NzToo many predicted coefficientsr  rS   )r*  warnsr  r'   r(   r.  rA   r>   test_runtime_warningr  `  sk    	n>
@ %t$% 
n>
@ &$%& &% %& &s   A"A."A+.A7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
                  j                  ddei fdeddifg      d        Z	ej
                  j                  ddei fdeddifg      d        Z
ej
                  j                  ddei fdeddifg      d        Zej
                  j                  ddei fdeddifg      d        Zej
                  j                  ddei fdeddifg      d        Zd Zd Zej
                  j                  dddddej"                  g      ej
                  j                  dg d      ej
                  j                  d ddg      d!                      Zej
                  j                  d ddg      d"        Zej
                  j                  ddei fdeddifg      d#        Zej
                  j                  ddei fdeddifg      d$        Zd% Zy&)'TestStirling2rV   r   )r   rV   rV   )r   rV   r   rV   )r   rV   rJ   rL   rV   )r   rV   rz   r   r  rV   )r   rV      r  A   rz   rV   )r   rV   ?   r  i^     r"  rV   )	r   rV      i  i    i
     rV   )
r   rV      i  iZ  i'  iV
  i  $   rV   )r   rV   r~   r$  i9  i  i+Y    i  r   rV   zis_exact, comp, kwargsTFrP   r   c           	          t        dt        | j                              D ]?  }t        t        |dz               }| j                  |   } ||t	        |g||      fi | A y )NrV   r  )rt   r  tabler  r)   )r=   is_exactcompkwargsrd   k_valuesrows          r>   test_table_caseszTestStirling2.test_table_casesx  s]    
 q#djj/* 	JAE!A#J'H**Q-CiXX>I&I	JrA   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 | y )Nr   r  rF   rH   r   r   r   )r)   r  r=   r  r  r  s       r>   test_valid_single_integerz'TestStirling2.test_valid_single_integer  s    
 	Yq!8,djjmA.>I&IYq!8,djjmA.>I&I 	Yq!8,b;F;YsQCx02$A&ArA   c                      |t        dd|      dfi |  |t        dd|      dfi |  |t        dd|      dfi | y )NrK   r  r   rH   r)   r  s       r>   test_negative_integerz#TestStirling2.test_negative_integer  sL     	Yr2X.<V<Yr1H-q;F;Yq"H-q;F;rA   c           	      *   | 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|      |       y )Nr  r   rF   r  )r  r)   r   )r=   r  r  r  anss        r>   test_array_inputszTestStirling2.test_array_inputs  s    
 zz"~a $**R."34YwBx(&1v%-/ 	 	YBx&1v%-/ 	 	YwBx( !1v%-/ 	rA   rN   c                 H    g d}g d}g d} |t        |||      |fi | y )N)r   rV   r   r   r  r  r  )rK   r   r   r   r  r  r  )r  r   rH   r   r   rJ   r   r  r  r=   r  r  r  r  rd   re   s          r>   test_mixed_valueszTestStirling2.test_mixed_values  s+     .$"Yq!8,c<V<rA   c                     dt        j                  d      }}t        t        ||d      dz  |D cg c]'  }t	        j
                  ||dz  z
  dz
  ||z
        dz  ) c}       yc c}w )z{Test parity follows well known identity.

        en.wikipedia.org/wiki/Stirling_numbers_of_the_second_kind#Parity
        r  e   Tr  rH   rV   N)r[   r   r   r)   r  r  )r=   rd   Kre   s       r>   test_correct_parityz!TestStirling2.test_correct_parity  s`    
 BIIcN1a$'!+=>?TYYqAF|a'Q/!3?	
?s   ,A%
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 y )Nl   V^;. l   k4-Tr   rR   rG   rF   Tr  l	   D,"SBXp!N l   wY)H_1e_*   r,     )r   r   r)   )r=   r  rd   re   s       r>   test_big_numberszTestStirling2.test_big_numbers  s}    ~'89:HG9Q6<<<<:< =HH9Q6<<<rA   r*  rw  r  y      @      ?12r  )r  r   2Nr  c                 |    t        j                  t              5  t        |||       d d d        y # 1 sw Y   y xY w)Nr  )r*  r   	TypeErrorr)   )r=   r*  r  r  s       r>   test_unsupported_input_typesz*TestStirling2.test_unsupported_input_types  s1    
 ]]9% 	,a(+	, 	, 	,s   2;c                    t        | j                  d   dd        }t        g dt              }t        g dt              }t        j                  t
              5  t        t        |||      |       d d d        y # 1 sw Y   y xY w)NrF   rV   rF   rF   rF   rF   r  rV   rH   r   rF   r  )r   r  r~  r*  r   r  r   r)   )r=   r  r  rd   re   s        r>   !test_numpy_array_int_object_dtypez/TestStirling2.test_numpy_array_int_object_dtype  si     djjmAB'(L/L/]]9% 	>	!Qh7=	> 	> 	>s   A==Bc                     t        | j                  d   dd        }t        g dt        j                        }t        g dt        j                        } |t	        ||d      |fi | y )NrF   rV   r	  r  r	  Fr  )r   r  r[   ulongr)   r  s          r>   #test_numpy_array_unsigned_int_dtypez1TestStirling2.test_numpy_array_unsigned_int_dtype  sU     djjmAB'(L1L1Yq!5)39&9rA   c                 P   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        t        d	      D cg c]  }g d
 c}      } |t        ||d      |fi | y c c}w )N)rV   rz   r   r  )rV   rJ   rL   rV   )r   r   r   r   r	  r	  r  rF   )r   rV   rH   r   rF   r   r   )r   rV   rJ   rL   rV   r   F)r   r)   rt   )r=   r  r  r  r  rd   re   rM  s           r>   "test_broadcasting_arrays_correctlyz0TestStirling2.test_broadcasting_arrays_correctly  s     56\<01L!Yq!8,c<V<aS1#sQC!-.&'58<a)<=Yq!5)39&9 =s   :B#c                    t        t        ddd            }|D ]k  }t        t        d|dz               }t        |g|d      }|t        |g|d      z
  }t        j                  t        j
                  ||z              dk  rkJ  y )	N3   r  r   rV   Tr  Fgh㈵>)r  rt   r)   r[   r  r7  )r=   r   rd   	k_entriesdenomrv   s         r>   test_temme_rel_max_errorz&TestStirling2.test_temme_rel_max_error  s     r3"# 	6AU1ac]+Iqc9D9E)QC%@@C66"&&u-.555		6rA   N)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   r>   r  r  i  s   	
	
A!(07@E [[5	|R 	&%18 J	J [[5	|R 	&%18 B	B [[5	|R 	&%18 <	< [[5	|R 	&%18 	 [[5	|R 	&%18 =	=	
= [[S3D$"?@[[S"56[[Z$7, 8 7 A,
 [[Z$7> 8> [[5	|R 	&%18 :	: [[5	|R 	&%18 :	:6rA   r  ri  )r  rM  r  r  r  r  rE  r[   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r*  r   re  numpy.testingr   r   r   r   r   scipyr   scipy.special._ufuncs_ufuncsr:   scipy.specialr   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   scipy._lib._array_apir*   r+   r,   scipy.special._basicr-   r.   r/   scipy.special._testutilsr0   r1   r2   scipy.integrater3   r  architecturer  r  rQ  r7   r0  r_  rg  rl  r  r  r  r	  r<  rq  r~  r  r  r  r  r  r6  r:  r  r  r3  rR  r  r  r  r  r  r  r  r  r  r  r  r  r$  r(  r0  rB  rS  rY  rg  ri  r+  r-  r
  rl  ro  rr  rt  rw  rz  r|  r  r  fixturer  r  r  r  r  r  r  r  r  r  r  r  r  r  r.  rA   r>   <module>r	     s;  "     
         *L L  & & 2 2 E E " H H S S ! !    LLGxq!W, XX 
xx d9 d9NuG uGp8 8 
k- k-\	- 	-0 0<D3 D3NO/ O/dB; B;JH H:JT JTZG0 G0T)= )=X_B _BD; ;29 9@!Hj- j-ZA8 A8H@7 @7F*% *%Z]. ].@\	= \	=~? ?D8 8	; 	;$$/3 /3d - -5= 5=p- -4- -G GQ QJ J,&" &"R& &#9 #9LS1 wdCHI. J. wdCHI. J. wdCHI/ J/ wdCHI/ J/=*)
)
:4zK"  
 N NE"GB D,F$J&J,C$J
-&[6 [6rA   