
    bi             	          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
l7m8Z8m9Z9 d dl:m;Z;m<Z<m=Z= d dl>m?Z?m@Z@mAZA d dlBmCZCmDZDmEZE d dlFmGZG d dlHZHej                  dk(  s ej                         d    dk(  rej                  nej                  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 d+ d,      ZZ G d- d.      Z[ G d/ d0      Z\ G d1 d2      Z]dd3Z^ G d4 d5      Z_ G d6 d7      Z` G d8 d9      Za G d: d;      Zb G d< d=      Zc G d> d?      Zd G d@ dA      Ze G dB dC      Zf G dD dE      ZgdF ZhdG Zi G dH dI      Zj G dJ dK      Zk G dL dM      Zl G dN dO      Zm G dP dQ      Zn G dR dS      Zo G dT dU      Zp G dV dW      Zq G dX dY      Zr G dZ d[      Zs G d\ d]      Zt G d^ d_      Zud` Zvda Zwej                  j                  dbej,                   dcdddeej,                  ej                  g      df        Z{ej                  j                  dgej,                   dcdddeej,                  ej                  g      dh        Z|ej                  j                  dbej,                   dcdddeej,                  ej                  g      di        Z}ej                  j                  dgej,                   dcdddeej,                  ej                  g      dj        Z~dk Zdl Zdm Zdn Zdo Zej                  dp        ZeCdq        Zdr Zds Zdt Zdu Zdv Zdw Zdx Zdy Zdz Zd{ 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)np_longnp_ulong)xp_assert_closexp_assert_equalSCIPY_ARRAY_API)_FACTORIALK_LIMITS_64BITS_FACTORIALK_LIMITS_32BITS_is_subdtype)with_special_errorsassert_func_equalFuncData)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(d' Z)e*jV                  jY                  d()      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 Zkdi Zle*jV                  j                  djg dk      dl        Zndm Zoe*jV                  j                  djg dn      do        Zpdp Zqdq Zrdr Zsds Ztdt Zudu Zvdv Zwdw Zxdx Zydy Zzdz Z{d{ Z|d| Z}d} Z~d~ Zd Zd Zd Ze*jV                  jY                  d)      d        Ze*jV                  jY                  d)      d        Ze*jV                  jY                  d)      d        Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)
TestCephesc                 .    t        j                  d       y Nr   )cephesairyselfs    Y/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/scipy/special/tests/test_basic.py	test_airyzTestCephes.test_airy<       A    c                 .    t        j                  d       y r;   )r<   airyer>   s    r@   
test_airyezTestCephes.test_airye?   s    QrC   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
@rJ   )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           ?绽|=atolrR   )npr   broadcast_arraysreshapeTr3   r<   binomravelrandomRandomStater   r   rand)r?   nknkrknownrngs         r@   
test_binomzTestCephes.test_binomB   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	2rC   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 )NrS   rX   ,     r   rW   rJ   rM   rY   rZ   r[   )r]   rc   seedr   logspacer   r   r^   r_   r`   r3   r<   ra   )r?   rf   rg   rh   s       r@   test_binom_2zTestCephes.test_binom_2Y   s    
		tEE"++ab)*IIaXXb))!AdF)QtAvY? 2qq 	 	&,, ,,r!A#w1Q390EF$5	2rC   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 NrX   )intrangefloat)rf   rg   numdenis        r@   	binom_intz.TestCephes.test_binom_exact.<locals>.binom_intg   sb    AAAACC1ac] q1uqy q S>!rC   rS   rX      r   rJ   rM   r[   )r]   	vectorizerc   ro   r   r   r^   r_   r`   r3   r<   ra   )r?   r{   rf   rg   rh   s        r@   test_binom_exactzTestCephes.test_binom_exactf   s    		" 
	" 			tIIaIIaXXb))!AdF)QtAvY? 2qq 	1Q32ac7"#&,,#BqsGR!W5 q	*rC   c                     g d}t        j                  |      }t        t        j                  |ddd      j                          y )N))rU   rV   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   rX   rJ   -q=rQ   )r]   r   r4   r<   ra   check)r?   datasets     r@   test_binom_nooverflow_8346z%TestCephes.test_binom_nooverflow_8346}   s6    
" **W%w>DDFrC   c                 F    t        t        j                  ddd      d       y )NrX         ?      ?)r   r<   bdtrr>   s    r@   	test_bdtrzTestCephes.test_bdtr   s    V[[1S)#.rC   c                 F    t        t        j                  ddd      d       y NrX      r   )r   r<   bdtrir>   s    r@   
test_bdtrizTestCephes.test_bdtri       V\\!Ac*3/rC   c                 F    t        t        j                  ddd      d       y r   )r   r<   bdtrcr>   s    r@   
test_bdtrczTestCephes.test_bdtrc   r   rC   c                 F    t        t        j                  ddd      d       y NrX   r         @)r   r<   bdtrinr>   s    r@   test_bdtrinzTestCephes.test_bdtrin       V]]1Qq)#.rC   c                 2    t        j                  ddd       y r   )r<   bdtrikr>   s    r@   test_bdtrikzTestCephes.test_bdtrik   s    a#rC   c                 B    t        t        j                  d      d       y Nr           )r   r<   beir>   s    r@   test_beizTestCephes.test_bei       VZZ]3'rC   c                 B    t        t        j                  d      d       y r   )r   r<   beipr>   s    r@   	test_beipzTestCephes.test_beip       V[[^C(rC   c                 B    t        t        j                  d      d       y Nr   r   )r   r<   berr>   s    r@   test_berzTestCephes.test_ber   r   rC   c                 B    t        t        j                  d      d       y r   )r   r<   berpr>   s    r@   	test_berpzTestCephes.test_berp   r   rC   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2rC   c                 H    t        t        j                  d      ddd       y )NrX   r   ư>r   r[   )r   r<   cbrtr>   s    r@   	test_cbrtzTestCephes.test_cbrt   s    A$Q?rC   c                 D    t        t        j                  dd      d       y NrX   r   r   )r   r<   chdtrr>   s    r@   
test_chdtrzTestCephes.test_chdtr   s    V\\!A&s+rC   c                 D    t        t        j                  dd      d       y NrX   r   r   )r   r<   chdtrcr>   s    r@   test_chdtrczTestCephes.test_chdtrc       V]]1Q',rC   c                 D    t        t        j                  dd      d       y NrX   r   )r   r<   chdtrir>   s    r@   test_chdtrizTestCephes.test_chdtri   r   rC   c                 F    t        t        j                  ddd      d       y Nr   rX   r   )r   r<   chndtrixr>   s    r@   test_chndtrixzTestCephes.test_chndtrix       V__Qq+C0rC   c                 B    t        t        j                  d      d       y r   )r   r<   cosdgr>   s    r@   
test_cosdgzTestCephes.test_cosdg       V\\!_S)rC   c                 B    t        t        j                  d      d       y r   )r   r<   cosm1r>   s    r@   
test_cosm1zTestCephes.test_cosm1   r   rC   c                 H    t        t        j                  d      ddd       y )N-   r   v!>r   r[   )r   r<   cotdgr>   s    r@   
test_cotdgzTestCephes.test_cotdg   s    R(#FCrC   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*,?@rC   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)rX         rJ   g-C6
?r   r   r   r[   &.> [n<V瞯<float128r   g"<)rJ   rH            皙?)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QrC   c                 
   t        j                  d      }t        j                  g d      }t        t	        j
                  |d d t         j                  f   |      j                  |j                  |j                  fk(         y )Nr   )rX   r   rL   )	r]   r   r   r   r   r   newaxisshapesize)r?   r   rf   s      r@   test_diric_broadcastingz"TestCephes.test_diric_broadcasting   sU    IIaLHHYa2::.288QVVQVV<LLMrC   c                 B    t        t        j                  d      d       y NrX   r   )r   r<   r   r>   s    r@   test_ellipezTestCephes.test_ellipe       V]]1%c*rC   c                 D    t        t        j                  dd      d       y r   )r   r<   	ellipeincr>   s    r@   test_ellipeinczTestCephes.test_ellipeinc       V%%a*3/rC   c                 0    t        j                  dd       y Nr   rX   )r<   ellipjr>   s    r@   test_ellipjzTestCephes.test_ellipj   s    arC   c                 <    t        t        d      t        dz         y )Nr   rJ   )r   r   r   r>   s    r@   test_ellipkzTestCephes.test_ellipk   s    q	2a4(rC   c                 D    t        t        j                  dd      d       y r   )r   r<   	ellipkincr>   s    r@   test_ellipkinczTestCephes.test_ellipkinc   r   rC   c                 B    t        t        j                  d      d       y r   r   r<   erfr>   s    r@   test_erfzTestCephes.test_erf   s    VZZ]C(rC   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9rC   c                 B    t        t        j                  d      d       y r   )r   r<   erfcr>   s    r@   	test_erfczTestCephes.test_erfc  s    V[[^S)rC   c                 H    t        t        j                  d      ddd       y )NrJ   g      Y@r   r   r[   )r   r<   exp10r>   s    r@   
test_exp10zTestCephes.test_exp10  s    QTBrC   c                 B    t        t        j                  d      d       y )NrJ         @)r   r<   exp2r>   s    r@   	test_exp2zTestCephes.test_exp2  r   rC   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   rM   )r   r<   expm1r]   r   nanr>   s    r@   
test_expm1zTestCephes.test_expm1
  sc    V\\!_S)V\\"&&)2662V\\266'*B/V\\"&&)2662rC   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   rX   rJ   rH   r   rM   )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MrC   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      rn                 ?)y=Cw?yC7gg)gF<Ug?yQ<D*?yg:><sKy>񸣼$	Um>ly;Vl <@r   rn   )	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=="ErC   c                     t        t        j                  ddd      d       t        t        j                  ddd      dd	       y )
NrX   r   r   r   r   
   g2?r   rQ   )r   r<   fdtrr   r>   s    r@   	test_fdtrzTestCephes.test_fdtr8  s6    V[[Aq)3/D!R02D"	$rC   c                     t        t        j                  ddd      d       t        t        j                  ddd      dd	       y )
NrX   r   r   rJ   r  g    _BgDIXl?r   rQ   )r   r<   fdtrcr   r>   s    r@   
test_fdtrczTestCephes.test_fdtrc>  s8    V\\!Q*C0 	QT24G"	$rC   c                     t        t        j                  ddddg      t        ddg      d       d}t        t        j                  d	d|      d
d       y )NrX   gV-?gx&1?g
}?g<zO'?r   rQ   g׀?r  r   r   )r   r<   fdtrir   )r?   ps     r@   
test_fdtrizTestCephes.test_fdtriE  sM    QE5>:y*56T	C %S!Q/?rC   c                     d\  }}}t        t        j                  ||t        j                  |||            |d       y )N)rX   P  g\/չ=@r   rQ   )r   r<   r-  r'  )r?   dfddfnr   s       r@   test_gh20835zTestCephes.test_gh20835M  s4    1S!S#v{{3Q/GH!RWXrC   c                 F    t        t        j                  ddd      d       y )NrX   r   )r   r<   r-  r>   s    r@   test_fdtri_mysterious_failurez(TestCephes.test_fdtri_mysterious_failureR  s    Q3/3rC   c                 F    t        t        j                  ddd      d       y r   )r   r<   fdtridfdr>   s    r@   test_fdtridfdzTestCephes.test_fdtridfdU  r   rC   c                 B    t        t        j                  d      d       y Nr   r   r   )r   r<   fresnelr>   s    r@   test_fresnelzTestCephes.test_fresnelX  s    V^^A&y1rC   c                 B    t        t        j                  d      d       y Nr         8@)r   r<   gammar>   s    r@   
test_gammazTestCephes.test_gamma[  s    V\\!_T*rC   c                 D    t        t        j                  dd      d       y )Nr   rX   r   )r   r<   gammainccinvr>   s    r@   test_gammainccinvzTestCephes.test_gammainccinv^  s    V((1-c2rC   c                 .    t        j                  d       y )Nr&  )r<   gammalnr>   s    r@   test_gammalnzTestCephes.test_gammalna  s    rrC   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   rX   g@r   r   )r]   r   r   r   r  r   r<   gammasgn)r?   vals	references      r@   test_gammasgnzTestCephes.test_gammasgnd  s    xxffWb$dCC@"**
 HHVVRVVS$c3SA2::
	 	6??40)<rC   c                 F    t        t        j                  ddd      d       y r   )r   r<   gdtrr>   s    r@   	test_gdtrzTestCephes.test_gdtrm      V[[1Q',rC   c                 b    t        t        j                  ddt        j                        d       y r   )r   r<   rS  r]   r   r>   s    r@   test_gdtr_infzTestCephes.test_gdtr_infp  s    V[[1RVV,S1rC   c                 F    t        t        j                  ddd      d       y r   )r   r<   gdtrcr>   s    r@   
test_gdtrczTestCephes.test_gdtrcs      V\\!Aa(-rC   c                 F    t        t        j                  ddd      d       y r   )r   r<   gdtriar>   s    r@   test_gdtriazTestCephes.test_gdtriav  r   rC   c                 2    t        j                  ddd       y NrX   r   )r<   gdtribr>   s    r@   test_gdtribzTestCephes.test_gdtriby  s    a!rC   c                 2    t        j                  ddd       y NrX   r  )r<   gdtrixr>   s    r@   test_gdtrixzTestCephes.test_gdtrix}  s    a"rC   c                 0    t        j                  dd       y rt   )r<   hankel1r>   s    r@   test_hankel1zTestCephes.test_hankel1      qrC   c                 0    t        j                  dd       y rt   )r<   hankel1er>   s    r@   test_hankel1ezTestCephes.test_hankel1e      !rC   c                 0    t        j                  dd       y rt   )r<   hankel2r>   s    r@   test_hankel2zTestCephes.test_hankel2  rj  rC   c                 0    t        j                  dd       y rt   )r<   hankel2er>   s    r@   test_hankel2ezTestCephes.test_hankel2e  rn  rC   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 )
NrX   r   r   r   r[   r   rH   g㈮?)r   r<   hyp1f1r   r>   s    r@   test_hyp1f1zTestCephes.test_hyp1f1  sP    aA.Ct!LaB/1H!	+a!rC   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0rC   c                 B    t        t        j                  d      d       y r   )r   r<   i0r>   s    r@   test_i0zTestCephes.test_i0      VYYq\#&rC   c                 B    t        t        j                  d      d       y r   )r   r<   i0er>   s    r@   test_i0ezTestCephes.test_i0e  r   rC   c                 B    t        t        j                  d      d       y r   )r   r<   i1r>   s    r@   test_i1zTestCephes.test_i1  r  rC   c                 B    t        t        j                  d      d       y r   )r   r<   i1er>   s    r@   test_i1ezTestCephes.test_i1e  r   rC   c                 .    t        j                  d       y rt   )r<   it2i0k0r>   s    r@   test_it2i0k0zTestCephes.test_it2i0k0      qrC   c                 .    t        j                  d       y rt   )r<   it2j0y0r>   s    r@   test_it2j0y0zTestCephes.test_it2j0y0  r  rC   c                 .    t        j                  d       y rt   )r<   
it2struve0r>   s    r@   test_it2struve0zTestCephes.test_it2struve0  s    !rC   c                 .    t        j                  d       y rt   )r<   itairyr>   s    r@   test_itairyzTestCephes.test_itairy      arC   c                 B    t        t        j                  d      d       y r;  )r   r<   iti0k0r>   s    r@   test_iti0k0zTestCephes.test_iti0k0      V]]1%i0rC   c                 B    t        t        j                  d      d       y r;  )r   r<   itj0y0r>   s    r@   test_itj0y0zTestCephes.test_itj0y0  r  rC   c                 B    t        t        j                  d      d       y r   )r   r<   itmodstruve0r>   s    r@   test_itmodstruve0zTestCephes.test_itmodstruve0  s    V((+C0rC   c                 B    t        t        j                  d      d       y r   )r   r<   	itstruve0r>   s    r@   test_itstruve0zTestCephes.test_itstruve0  s    V%%a(-rC   c                 D    t        t        j                  dd      d       y r   )r   r<   ivr>   s    r@   test_ivzTestCephes.test_iv      VYYq^C(rC   c                 D    t        t        j                  dd      d       y r   )r   r<   iver>   s    r@   test_ivezTestCephes.test_ive      VZZ!_S)rC   c                 B    t        t        j                  d      d       y r   )r   r<   j0r>   s    r@   test_j0zTestCephes.test_j0  r  rC   c                 B    t        t        j                  d      d       y r   )r   r<   j1r>   s    r@   test_j1zTestCephes.test_j1  r  rC   c                 D    t        t        j                  dd      d       y r   )r   r<   jnr>   s    r@   test_jnzTestCephes.test_jn  r  rC   c                 D    t        t        j                  dd      d       y r   )r   r<   jvr>   s    r@   test_jvzTestCephes.test_jv  r  rC   c                 D    t        t        j                  dd      d       y r   )r   r<   jver>   s    r@   test_jvezTestCephes.test_jve  r  rC   c                 .    t        j                  d       y NrJ   )r<   k0r>   s    r@   test_k0zTestCephes.test_k0      		!rC   c                 .    t        j                  d       y r  )r<   k0er>   s    r@   test_k0ezTestCephes.test_k0e      

1rC   c                 .    t        j                  d       y r  )r<   k1r>   s    r@   test_k1zTestCephes.test_k1  r  rC   c                 .    t        j                  d       y r  )r<   k1er>   s    r@   test_k1ezTestCephes.test_k1e  r  rC   c                 .    t        j                  d       y r  )r<   keir>   s    r@   test_keizTestCephes.test_kei  r  rC   c                 B    t        t        j                  d      d       y r   )r   r<   keipr>   s    r@   	test_keipzTestCephes.test_keip  r   rC   c                 .    t        j                  d       y r  )r<   kerr>   s    r@   test_kerzTestCephes.test_ker  r  rC   c                 .    t        j                  d       y r  )r<   kerpr>   s    r@   	test_kerpzTestCephes.test_kerp  rB   rC   c                 .    t        j                  d       y r  )r<   kelvinr>   s    r@   test_kelvinzTestCephes.test_kelvin  r  rC   c                 0    t        j                  dd       y rt   )r<   knr>   s    r@   test_knzTestCephes.test_kn      		!ArC   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1rC   c                 B    t        t        j                  d      d       y r   )r   r<   
kolmogorovr>   s    r@   test_kolmogorovzTestCephes.test_kolmogorov  s    V&&q)3/rC   c                 B    t        t        j                  d      d       y )Nr   rM  )r   r<   _kolmogpr>   s    r@   test_kolmogpzTestCephes.test_kolmogp  s    V__Q'.rC   c                 B    t        t        j                  d      d       y r   )r   r<   _kolmogcr>   s    r@   test_kolmogczTestCephes.test_kolmogc  s    V__Q'-rC   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3rC   c                 0    t        j                  dd       y rt   )r<   kvr>   s    r@   test_kvzTestCephes.test_kv  r  rC   c                 0    t        j                  dd       y rt   )r<   kver>   s    r@   test_kvezTestCephes.test_kve       

1QrC   c                 &   t         j                  }t         |d      d       t         |d      t        j                          t         |d      t        j
                         t         |t        j                        t        j                         y )Nr   r   rM   )r<   log1pr   r]   r   r  )r?   r  s     r@   
test_log1pzTestCephes.test_log1p  sU    U1Xs#U2Y(U2Y'U266]BFF+rC   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  rM   r   ignorez%invalid value encountered in multiplyrX   rJ   r   rH   )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   rX   r   )r   r<   lpmvr>   s    r@   	test_lpmvzTestCephes.test_lpmv  rU  rC   c                 x    t        j                  g d      }t        t        j                  |d      |dz         y N)rX   rJ   r   r   rJ   )r]   r   r   r<   	mathieu_ar?   ms     r@   test_mathieu_a_q0zTestCephes.test_mathieu_a_q0!  +    HHYV%%a+QT2rC   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   rQ   )r<   r  r   r?   r  qrefr   s        r@   test_mathieu_azTestCephes.test_mathieu_a(  "     Q"3U+rC   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_q03  r	  rC   ))rX   r|   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_b:  r  rC   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 )NrX   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?rX   r   rJ   r
  r   rH      r  )r]   r   r
   r  r  r!  s      r@   	ce_smallqz.TestCephes.test_mathieu_cem.<locals>.ce_smallqI  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UrC   d   r&  rh|?+=rR   r\   )	r   r<   mathieu_cemr]   r}   r   r   rp   r   )r?   r"  r  r  s       r@   test_mathieu_cemzTestCephes.test_mathieu_cemE  s    V''!A.y9 
	V 
	V IIaEE!R[[b"--.**1QtV9aQiGJ!!AdF)QtAvY>"	,rC   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 )NrX   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  rX   r
  r   rJ   rH   r   )r]   r   r	   r!  s      r@   	se_smallqz.TestCephes.test_mathieu_sem.<locals>.se_smallqb  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UrC   r#  r$  r%  r&  r&  r'  r(  )	r   r<   mathieu_semr]   r}   r   r   rp   r   )r?   r.  r  r  s       r@   test_mathieu_semzTestCephes.test_mathieu_sem^  s    V''!A.y9 

	V 

	V IIaEE!R[[b"--.**1QtV9aQiGJ!!AdF)QtAvY>"	,rC   c                 F    t        t        j                  ddd      d       y NrX   r   r<  )r   r<   mathieu_modcem1r>   s    r@   test_mathieu_modcem1zTestCephes.test_mathieu_modcem1t      V++Aa29=rC   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 )
NrX   r   rH   r  rJ   r&  rL   rZ   rQ   )	r<   mathieu_modcem2r]   r   r   rp   linspacer3  r   r?   r  r  r!  y1fry2s          r@   test_mathieu_modcem2zTestCephes.test_mathieu_modcem2w  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+rC   c                 F    t        t        j                  ddd      d       y r2  )r   r<   mathieu_modsem1r>   s    r@   test_mathieu_modsem1zTestCephes.test_mathieu_modsem1  r5  rC   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 )
NrX   rH   r  rJ   r&  r   rL   rZ   rQ   )	r<   mathieu_modsem2r]   r   r   rp   r8  r?  r   r9  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+rC   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/  r3  r?  r7  rB  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OrC   c                     t        d      D ];  }t        j                  ddd      }t        |d   dd       t        |d	   d
d       = y )N<   rJ   r#  rM   r   g.dS?rZ   rQ   rX   gGc?-C6?)rv   r<   rB  r   )r?   rg   vs      r@   test_mathieu_ticket_1847z#TestCephes.test_mathieu_ticket_1847  sO     r 	GA&&q#r2AAaD":GAaD":F		GrC   c                 .    t        j                  d       y r;   )r<   modfresnelmr>   s    r@   test_modfresnelmzTestCephes.test_modfresnelm      1rC   c                 .    t        j                  d       y r;   )r<   modfresnelpr>   s    r@   test_modfresnelpzTestCephes.test_modfresnelp  rO  rC   c                 D    t        t        j                  dd      d       y r   )r   r<   	modstruver>   s    r@   test_modstruvezTestCephes.test_modstruve  r   rC   c                 F    t        t        j                  ddd      d       y r   )r   r<   nbdtrr>   s    r@   
test_nbdtrzTestCephes.test_nbdtr  r[  rC   c                 F    t        t        j                  ddd      d       y r   )r   r<   nbdtrcr>   s    r@   test_nbdtrczTestCephes.test_nbdtrc  r   rC   c                 F    t        t        j                  ddd      d       y r   )r   r<   nbdtrir>   s    r@   test_nbdtrizTestCephes.test_nbdtri  r   rC   c                 2    t        j                  ddd       y )NrX   rK   r   )r<   nbdtrikr>   s    r@   test_nbdtrikzTestCephes.test_nbdtrik  s    qBrC   c                 F    t        t        j                  ddd      d       y r   )r   r<   nbdtrinr>   s    r@   test_nbdtrinzTestCephes.test_nbdtrin  s    V^^Aa*3/rC   c                 H    t        t        j                  dddd      d       y r   )r   r<   ncfdtrr>   s    r@   test_ncfdtrzTestCephes.test_ncfdtr  r|  rC   c                     t        t        j                  dddd      d       g d}t        j                  ddd|      }t	        t        j                  ddd|      |       y )NrX   r   r   )r   rX   r  rJ   r   r  )r   r<   ncfdtrirf  r   )r?   fr.  s      r@   test_ncfdtrizTestCephes.test_ncfdtri  sM    V^^Aq!Q/5MM!QQ'q!S!4a8rC   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rX   rJ   r   rJ   r  r|   )r<   rf  r   
ncfdtridfd)r?   r2  r.  s      r@   test_ncfdtridfdzTestCephes.test_ncfdtridfd  s8     MM!S$+))!Qb93?rC   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  rX   rJ   r   g     @rJ   r  r|   gh㈵>rQ   )r<   rf  r   
ncfdtridfn)r?   r3  r.  s      r@   test_ncfdtridfnzTestCephes.test_ncfdtridfn  s:     "MM#q$+))!Qb93TJrC   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         @rJ   r   r|   )r<   rf  r   	ncfdtrinc)r?   ncr.  s      r@   test_ncfdtrinczTestCephes.test_ncfdtrinc  s8     MM!QB'((Aq"5r:rC   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 )NrX   r   r   r  i   r   r   r   rI  r[   rt        $@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8rC   c                 2    t        j                  ddd       y )NrX   r   r   )r<   	nctdtridfr>   s    r@   test_nctdtridfzTestCephes.test_nctdtridf  s    3q!rC   c                 2    t        j                  ddd       y r`  )r<   	nctdtrincr>   s    r@   test_nctdtrinczTestCephes.test_nctdtrinc  s    1QrC   c                 2    t        j                  ddd       y )Nr  r   r   )r<   nctdtritr>   s    r@   test_nctdtritzTestCephes.test_nctdtrit   s    3r"rC   c                 L    t        t        j                  ddd      ddd       y )Nr   rX   r   r   r   r[   )r   r<   nrdtrimnr>   s    r@   test_nrdtrimnzTestCephes.test_nrdtrimn  s    Q2CdKrC   c                 L    t        t        j                  ddd      ddd       y )Nr   r   r   r[   )r   r<   nrdtrisdr>   s    r@   test_nrdtrisdzTestCephes.test_nrdtrisd  s     C4ca	)rC   c                 4    t        j                  dddd       y r`  )r<   obl_ang1r>   s    r@   test_obl_ang1zTestCephes.test_obl_ang1
      !Aa rC   c                 ~    t        j                  ddddd      }t        |d   ddd       t        |d   ddd       y )NrX   r   r   r   r[   r   )r<   obl_ang1_cvr   )r?   results     r@   test_obl_ang1_cvzTestCephes.test_obl_ang1_cv  s>    ##Aa!A.q	3V!<q	3V!<rC   c                 F    t        t        j                  ddd      d       y NrX   r   rt  )r   r<   obl_cvr>   s    r@   test_obl_cvzTestCephes.test_obl_cv  r   rC   c                 4    t        j                  dddd       y r`  )r<   obl_rad1r>   s    r@   test_obl_rad1zTestCephes.test_obl_rad1  r  rC   c                 6    t        j                  ddddd       y r`  )r<   obl_rad1_cvr>   s    r@   test_obl_rad1_cvzTestCephes.test_obl_rad1_cv      1Qq1%rC   c                 4    t        j                  dddd       y r`  )r<   obl_rad2r>   s    r@   test_obl_rad2zTestCephes.test_obl_rad2  r  rC   c                 6    t        j                  ddddd       y r`  )r<   obl_rad2_cvr>   s    r@   test_obl_rad2_cvzTestCephes.test_obl_rad2_cv  r  rC   c                 D    t        t        j                  dd      d       y )NrX   r   r,  )r   r<   pbdvr>   s    r@   	test_pbdvzTestCephes.test_pbdv!  s    V[[1%i0rC   c                 0    t        j                  dd       y r`  )r<   pbvvr>   s    r@   	test_pbvvzTestCephes.test_pbvv$      AarC   c                 0    t        j                  dd       y r`  )r<   pbwar>   s    r@   	test_pbwazTestCephes.test_pbwa'  r  rC   c                     t        j                  dd      }t        |t        j                  d      dd       t        j                  g dd      }t        |g d       y )Nr   rX   rM   r   r[   r   rX   rJ   )rX   rX   rX   )r<   pdtrr   r]   r   r   r?   vals     r@   	test_pdtrzTestCephes.test_pdtr*  sB    kk!QRVVBZf1=kk)Q'3	*rC   c                     t        j                  dd      }t        |dt        j                  d      z
  dd       t        j                  g dd      }t        |g d       y )	Nr   rX   rM   r   r[   r  r   )r   r   r   )r<   pdtrcr   r]   r   r   r  s     r@   
test_pdtrczTestCephes.test_pdtrc1  sF    ll1a Q^&qAll9c*3	*rC   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_pdtri8  sH    $$& 	"AC##Hc>BLLS!	" 	" 	"s   4AAc                 4    t        j                  dddd       y r`  )r<   pro_ang1r>   s    r@   test_pro_ang1zTestCephes.test_pro_ang1?  r  rC   c           	      b    t        t        j                  ddddd      t        d      dd       y )NrX   r   r  r   r[   )r   r<   pro_ang1_cvr   r>   s    r@   test_pro_ang1_cvzTestCephes.test_pro_ang1_cvB  s+    **1aAq95;L#!	-rC   c                 F    t        t        j                  ddd      d       y r  )r   r<   pro_cvr>   s    r@   test_pro_cvzTestCephes.test_pro_cvF  r   rC   c                 4    t        j                  dddd       y rd  )r<   pro_rad1r>   s    r@   test_pro_rad1zTestCephes.test_pro_rad1I  s    !Ac"rC   c                 6    t        j                  ddddd       y r`  )r<   pro_rad1_cvr>   s    r@   test_pro_rad1_cvzTestCephes.test_pro_rad1_cvL  r  rC   c                 4    t        j                  dddd       y r`  )r<   pro_rad2r>   s    r@   test_pro_rad2zTestCephes.test_pro_rad2O  r  rC   c                 6    t        j                  ddddd       y r`  )r<   pro_rad2_cvr>   s    r@   test_pro_rad2_cvzTestCephes.test_pro_rad2_cvR  r  rC   c                 .    t        j                  d       y rt   )r<   psir>   s    r@   test_psizTestCephes.test_psiU  r  rC   c                 F    t        t        j                  ddd      d       y r;   )r   r<   radianr>   s    r@   test_radianzTestCephes.test_radianX  s    V]]1Qq)!,rC   c                 B    t        t        j                  d      d       y r   )r   r<   rgammar>   s    r@   test_rgammazTestCephes.test_rgamma[  r   rC   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            @rL  )r   r<   roundr>   s    r@   
test_roundzTestCephes.test_round^  st    V\\#&s+V\\$'-V\\#&s+V\\$'-V\\#&s+V\\$'-rC   c                 .    t        j                  d       y rt   )r<   shichir>   s    r@   test_shichizTestCephes.test_shichif  r  rC   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 )NrX   r   r   r   r[   z cosine integral(-inf) is not nan)r<   sicir]   r   r   r   r   r   )r?   sr  s      r@   	test_sicizTestCephes.test_sicii  s    A{{266"12553;V!<162{{BFF7#1BEE6C<f1=?@rC   c                 B    t        t        j                  d      d       y NZ   r   )r   r<   sindgr>   s    r@   
test_sindgzTestCephes.test_sindgt      V\\"%c*rC   c                     t        t        j                  dd      d       t        t	        j
                  t        j                  dt        j                                     y )NrX   r  ?)r   r<   smirnovr   r]   r   r  r>   s    r@   test_smirnovzTestCephes.test_smirnovw  s7    V^^Ab)#."&&123rC   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 )	NrX   r  rM   rJ         ?      r   g      ȿ)r   r<   	_smirnovpr   r]   r   r  r>   s    r@   test_smirnovpzTestCephes.test_smirnovp{  sk    V%%a,b1V%%a.0@AV%%a.0@A))!RVV456rC   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 )NrX   r  r   r  Tendpointr   r   r[   r   rH   )
r   r<   	_smirnovcr   r]   r   r  r8  r   r  )r?   x10x4s      r@   test_smirnovczTestCephes.test_smirnovc  s    V%%a+C0))!BFF345kk!QT2((C0!fnnQ6L2L#!	-[[Aq40((B/V^^Ar5J1J#!	-rC   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 NrX   rK   r   r   r[   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4rC   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6rC   c                 B    t        t        j                  d      d       y r   )r   r<   spencer>   s    r@   test_spencezTestCephes.test_spence  r   rC   c                     t        t        j                  dd      d       t        t        j                  dd      ddd       t        t        j                  dd      ddd       y )	NrX   r   r   r  r   r[   rJ   gMoF?)r   r<   stdtrr   r>   s    r@   
test_stdtrzTestCephes.test_stdtr  sI    V\\!A&s+Q*DvAFQ*NaPrC   c                 0    t        j                  dd       y )Nffffff?rX   )r<   stdtridfr>   s    r@   test_stdtridfzTestCephes.test_stdtridf  s    ArC   c                 0    t        j                  dd       y )NrX   r  )r<   stdtritr>   s    r@   test_stdtritzTestCephes.test_stdtrit  s    qrC   c                 D    t        t        j                  dd      d       y r   )r   r<   struver>   s    r@   test_struvezTestCephes.test_struve  r   rC   c                 B    t        t        j                  d      d       y )Nr   r   )r   r<   tandgr>   s    r@   
test_tandgzTestCephes.test_tandg  r  rC   c                 J    t        t        j                  dd      ddd       y )NrX   r   r   r   r[   )r   r<   tklmbdar>   s    r@   test_tklmbdazTestCephes.test_tklmbda  s    q!,cQGrC   c                 .    t        j                  d       y rt   )r<   y0r>   s    r@   test_y0zTestCephes.test_y0  r  rC   c                 .    t        j                  d       y rt   )r<   r:  r>   s    r@   test_y1zTestCephes.test_y1  r  rC   c                 0    t        j                  dd       y rt   )r<   ynr>   s    r@   test_ynzTestCephes.test_yn  r  rC   c                 0    t        j                  dd       y rt   )r<   yvr>   s    r@   test_yvzTestCephes.test_yv  r  rC   c                 0    t        j                  dd       y rt   )r<   yver>   s    r@   test_yvezTestCephes.test_yve  r  rC   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  rt  r   r   g      "g      "@g4׵/Yg8EGr?r  gffffff@ig>@r   g|Pk?r  rX   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<rP   rQ   )r  r3   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!%8rC   N)__name__
__module____qualname__rA   rF   rk   rq   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  pytestmarkxfailr$  r(  r+  r/  r4  r6  r9  r>  rC  rF  rI  rQ  rT  rW  rZ  r^  rb  rf  ri  rm  rq  rt  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  parametrizer  r  r  r*  r0  r4  r=  r@  rC  rF  rK  rN  rR  rU  rX  r[  r^  ra  rd  rg  rk  ro  rr  rw  r{  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r  r  r   r"  r%  r(  r+  r2   rC   r@   r9   r9   ;   s}   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.// 019 [[I  @@
 [[I  KK
 [[I  ;;

9" #L)!=
/!&!&1++"!-/#&!&-+.	A+47-57+Q
-+H*9rC   r9   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   r[   g=
ףp=?)g'$'?geοgL?g
HVV?g
ףp=
׿)gl@D|?gV~׭ͿgU?g3{ɔ?)r   r=   r   r   r  s     r@   rA   zTestAiry.test_airy  ss     LL5!RS#!	-LL5!QR#!	-LL5!OP#!	-rC   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?rH   rJ   gN贁N{?Tqs*>r   r[   )	r   rE   r=   rv   r   r   absr   r   )r?   abb1rf   s        r@   rF   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3rC   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 )NrJ   glgoe2+
g(0[g X*JgUfݿg˰zU`?g4c1=C?gCuTa2U0*#?r   r[   r   )g&g(.2+
gRg}`g%́p~=rX   )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	.rC   c           	          t        j                  d      }t        |t        dg      t        dg      t        dg      t        dg      fdd       y )	NrX   gcqg!xLgMSt$?g ~:p?rH  r   r[   )r   ai_zerosr   r   )r?   ais     r@   test_ai_zeroszTestAiry.test_ai_zeros)  sM    a UK=1"K=1"F8_"F8_. $!		-rC   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 )Nr1  rX   r  rZ   rQ   r   r[   rN   )guqgqHkZg4g9Ζ%gB~gL")gLgQO	gMQnGg3:g)}g )r   rP  r=   rC  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_big1  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rC   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 )Nr1  rX   r  rZ   rQ   r   r[   rN   )gx&gg-2+
gRgg`gu%́g{ )g K;1[g*JgVwg<w gd
3g/{
")r   rK  r=   rC  r   )r?   r!  rT  bi_zpxbip_zxrY  bi_zbip_zbi_zpbip_zpbi_envelopebip_envelopes               r@   test_bi_zeros_bigzTestAiry.test_bi_zeros_bigJ  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rC   N)r3  r4  r5  rA   rF   rN  rR  r6  r7  	fail_slowr^  rh  r:  rC   r@   r<  r<    sa    -4#.J- [[1G G0 [[1G GrC   r<  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  rX   r   r?  r   r[   )r   genlaguerreassoc_laguerrer   )r?   a1a2s      r@   test_assoc_laguerrez%TestAssocLaguerre.test_assoc_laguerree  s`      A&##Br!,BrFa8##Ab+BqEQ7rC   N)r3  r4  r5  rq  r:  rC   r@   rk  rk  d  s    8rC   rk  c                       e Zd Zd Zy)TestBesselpolyc                      y Nr:  r>   s    r@   r   zTestBesselpoly.test_besselpolyn      rC   N)r3  r4  r5  r   r:  rC   r@   rs  rs  m  s    rC   rs  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 )NrJ   gT?iUMu>r   r[   )r   r   r   )r?   mbeis     r@   r   zTestKelvin.test_beis  s    {{1~0vAFrC   c                 L    t        j                  d      }t        |ddd       y )NrJ   gD,X?rz  r   r[   )r   r   r   )r?   mbeips     r@   r   zTestKelvin.test_beipx  s    Q2aHrC   c                 L    t        j                  d      }t        |ddd       y )NrJ   gPA4?rz  r   r[   )r   r   r   )r?   mbers     r@   r   zTestKelvin.test_ber}  s    {{1~1QGrC   c                 L    t        j                  d      }t        |ddd       y )NrJ   gii߿rz  r   r[   )r   r   r   )r?   mberps     r@   r   zTestKelvin.test_berp  s    Q3&qIrC   c                 b    t        j                  d      }t        |t        g d      dd       y )Nr   g&jj@g+"@g(rw+@gU2@g`<6@rH  r   r[   )r   	bei_zerosr   r   )r?   rL  s     r@   test_bei_zeroszTestKelvin.test_bei_zeros  s/    q!E #- .
 $!	-rC   c                 b    t        j                  d      }t        |t        g d      dd       y )Nr   )gyWo.@g╲ݏ @gנ{)@gK11@gWc"5@r?  r   r[   )r   
beip_zerosr   r   )r?   bips     r@   test_beip_zeroszTestKelvin.test_beip_zeros  s/      #U $8 9
 $!	-rC   c                 b    t        j                  d      }t        |t        g d      dd       y )Nr   g\@g6ُ@gӟHY'@g>"D0@ggaO;4@rH  r   r[   )r   	ber_zerosr   r   )r?   r   s     r@   test_ber_zeroszTestKelvin.test_ber_zeros  /    "U $. /
 $!	-rC   c                 b    t        j                  d      }t        |t        g d      dd       y )Nr   g '@gs%@gF ^-@gvۅj3@gB7@rH  r   r[   )r   
berp_zerosr   r   )r?   brps     r@   test_berp_zeroszTestKelvin.test_berp_zeros  s/      #U $. /
 $!	-rC   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 )NrJ   r  r?  r   r[   )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 $!		-rC   c                 L    t        j                  d      }t        |ddd       y )NrJ   g>ɿrz  r   r[   )r   r  r   )r?   mkeis     r@   r  zTestKelvin.test_kei  s    {{1~2aHrC   c                 L    t        j                  d      }t        |ddd       y )NrJ   gr@d"?rz  r   r[   )r   r  r   )r?   mkeips     r@   r  zTestKelvin.test_keip  s    Q2aHrC   c                 L    t        j                  d      }t        |ddd       y )NrJ   gܙUrz  r   r[   )r   r  r   )r?   mkers     r@   r  zTestKelvin.test_ker  s    {{1~3&qIrC   c                 L    t        j                  d      }t        |ddd       y )NrJ   g^.n3Jrz  r   r[   )r   r  r   )r?   mkerps     r@   r  zTestKelvin.test_kerp  s    Q3&qIrC   c                 b    t        j                  d      }t        |t        g d      dd       y )Nr   gE>Q@gB= @gPN)@gm91@g
%5@rH  r   r[   )r   	kei_zerosr   r   )r?   r  s     r@   test_kei_zeroszTestKelvin.test_kei_zeros  r  rC   c                 b    t        j                  d      }t        |t        g d      dd       y )Nr   gWf,@g?"@gFZ*o+@gOpN2@gEa6@rH  r   r[   )r   
keip_zerosr   r   )r?   r  s     r@   test_keip_zeroszTestKelvin.test_keip_zeros  /    !!!$e %/ 0
 $!	-rC   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  rH  r   r[   r  )#?Q5U@q89 %@ol`.@gO0q3@r  r  )gum.@gݏ @gs{)@g䠄11@gN(D!5@gS@g89@@g^C'@g1ZG0@g+ڇ4@r  )r   kelvin_zerosr   r   )
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
 $!	-rC   c                 b    t        j                  d      }t        |t        g d      dd       y )Nr   )r  r  r  r  gD;q3@rH  r   r[   )r   	ker_zerosr   r   )r?   r  s     r@   test_ker_zeroszTestKelvin.test_ker_zeros  r  rC   c                 b    t        j                  d      }t        |t        g d      dd       y )Nr   r  rH  r   r[   )r   
kerp_zerosr   r   )r?   r  s     r@   test_kerp_zeroszTestKelvin.test_kerp_zeros  r  rC   N)r3  r4  r5  r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r:  rC   r@   rx  rx  r  se    G
I
H
J
-----IIJJ--4-l--rC   rx  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   rH  r   r[   )r   	bernoullir   r   )r?   brns     r@   test_bernoullizTestBernoulli.test_bernoulli!  s/    "U $, - $!	-rC   N)r3  r4  r5  r  r:  rC   r@   r  r     s    -rC   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 )NrX   r   33333YN~h?   g6.8@rP   r   r(  rJ   rH   rN   rQ   )r   r   betar   rB  )r?   betbetgs      r@   	test_betazTestBeta.test_beta1  s    W\\!Q'-VV4gmmF6KLVS13E"	, ll1a a q!117==3CCT.rC   c                 h    t        t        j                  t        j                  dd                   y )NrM   rJ   )r   r]   isinfr   r  r>   s    r@   test_beta_infzTestBeta.test_beta_inf;  s    b!,-.rC   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 )NrX   r   r  r  r     gIs	@r'  r   r(  rJ   rH   rP   rQ   )r   r   betalnr   rH  r   rC  r  )r?   betlnr  s      r@   test_betalnzTestBeta.test_betaln>  s    W^^Aq)3/vv6/	1vs35G"	, q!$#gll1a()*s/rC   N)r3  r4  r5  __doc__r  r  r  r:  rC   r@   r  r  ,  s    //	0rC   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  rX   rX   )r]   r   r   r   betainc
betaincinvbetainccbetainccinvr  s     r@   
test_a1_b1zTestBetaInc.test_a1_b1O  sz    HH\"W__Q1-q1W''1a0!4W%%aA.A6W((Aq11q59rC   z
a, b, x, p))rJ   rH   g@w?r   )r  g     `e@rZ   g*?)r  r  g"Yx;r  )g   `1?g    ئAg\aY4g    ?)rH   i g-߇)?g;?c                 ,   t        j                  |||      }t        ||d       t        j                  |||      }t        ||d       t        j                  |||      }t        ||d       t        j
                  |||      }t        ||d       y )Nr   rQ   g-a=rP   )r   r  r   r  btdtriabtdtrib)	r?   rD  rE  r   r.  p1x1ro  rF  s	            r@   test_betainc_and_inversesz%TestBetaInc.test_betainc_and_inversesf  s~     __Q1%AE*1a(AE*__Q1%AE*__Q1%AE*rC   ))      @r  r  g     ?)      @g     *@g      ?g&?)      ?r  g333333?gFoE?)r        2@r   gg2$Z?)r  r  gZd;?g6)r  rA  r  g`<)      0@r  g?g<dEA>)g?g7Ê@g/3J?Hz>c                     t        j                  |||      }t        ||d       t        j                  |||      }t        ||d       y )N+<rQ   gV瞯=)r   r  r   r  )r?   rD  rE  r   r.  r  r  s          r@   test_betaincc_betainccinvz%TestBetaInc.test_betaincc_betainccinv  sD     aA&AE*  Aq)AE*rC   za, b, y, ref))cj,@r  ghHISOa gڭ Y;)g      ,@g      -@g둤g}c]춫;)r  g      .@gUv \U,gS^%:)ry  g      ?gMoigKB;)r  g    i@g1$-g\_cp:c                 N    t        j                  |||      }t        ||d       y )Nr'  rQ   )r   r  r   )r?   rD  rE  r   r  r   s         r@   test_betaincinv_tiny_yz"TestBetaInc.test_betaincinv_tiny_y  s$    2 q!Q'3U+rC   funcargs))r   rJ   r   )r         r   )r  rt  333333ӿ)r  rt  皙?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   errstater6  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 ru  )r   r  r   r?   r  r"  observeds       r@   test_betainc_edge_casesz#TestBetaInc.test_betainc_edge_cases  s    < ??D)Xx(rC   )r  r   )r   r   )r  r   )r  r   )r  r   )r  r   c                 @    t        j                  | }t        ||       y ru  )r   r  r   r  s       r@   test_betaincc_edge_casesz$TestBetaInc.test_betaincc_edge_cases  s    < ##T*Xx(rC   dtypec                     t        j                  dg|      }t        j                  dg|      }t        j                  |||      }t	        ||dt        j
                  |      j                  z         y )Nr   r  r   r&  rQ   )r]   r   r   r  r   r   eps)r?   r  rD  r   r  s        r@   test_gh21426zTestBetaInc.test_gh21426  s[     HHbT'HHcU%(##Aq!,RXXe_-@-@(@ArC   zdtype, rtolrI  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  rQ   )r]   r   r   r  r   )r?   rD  rE  r   rP  r  rR   ress           r@   test_gh22682zTestBetaInc.test_gh22682  sR     HHQe$HHQe$HHQe$ooaA&YT2rC   N)r3  r4  r5  r  r  r6  r7  r9  r  r  r  r   r  r  r  r  r  r  r  r]   r  r   r  r
  r   r   r  r  r:  rC   r@   r  r  J  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3rC   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   rH         ^@g     @j@Texactx   r  
repetition   r.  rn   r   r\   rX   l   hU7`S?Q r#  2   )
r   r   combr   rv   listr]   iinforu   max)r?   rg   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   rT   Tr  )r]   int64r   r   )r?   rf   rg   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$/rC   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 )NrJ   r   Tr  r   rM   FrJ   rM   rJ   r&  r   r   rM   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XrC   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  rH   Tr  r   g@)r6  r   
ValueErrorr   r   r  s     r@   test_comb_exact_non_int_errorz/TestCombinatorics.test_comb_exact_non_int_error1  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  rX   )r   r   typeru   r]   r   )r?   r6  r  actuals       r@   test_comb_repetition_k_zeroz-TestCombinatorics.test_comb_repetition_k_zero8  sI    
 a%DA{{&+tF|s";;;;"rC   c                     t        j                  g d      }t        j                  |ddd      }t        j                  g d      }t	        ||       y )Nr7  r   FTr  )r   r   r   )r]   r   r   r   r   )r?   r6  r  r"  s       r@   !test_comb_repetition_k_zero_arrayz3TestCombinatorics.test_comb_repetition_k_zero_arrayA  s<    HHZ a%DA88O,VX&rC   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   rH        @g     @r   r   r[   Tr  i  )r   r   permr   r>   s    r@   	test_permzTestCombinatorics.test_permH  sS    b"X1v6uFR+TQGW\\"at4c:rC   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 )NrJ   r   Tr  r   rM   Fr/  r0  )r   r   r   r?  )r   r   r@  r   r>   s    r@   test_perm_zerosz!TestCombinatorics.test_perm_zerosM  r2  rC   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  rX   rJ   rH   r   Tr  zNon-integergffffff@rN   gffffffr   g333333      @)r6  r   r4  r   r@  r>   s    r@   test_perm_ivzTestCombinatorics.test_perm_ivT  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)r3  r4  r5  r%  r-  r1  r5  r6  r7  r9  r;  r=  rA  rC  rF  r:  rC   r@   r  r    sn    = Y- [[S*-[[WtUm4< 5 .<';
Y/rC   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   r[   r   r   r   )r?   cbcbrls      r@   r   zTestTrigonometric.test_cbrtd  s#    \\"DvA6rC   c                 P    t        j                  d      }d}t        ||dd       y )Ngfffff;@g鎖C@r?  r   r[   rK  )r?   cb1cbrl1s      r@   test_cbrtmorezTestTrigonometric.test_cbrtmorei  s#    ll4 Ua8rC   c                 p    t        j                  d      }t        t        dz        }t	        ||dd       y )Nr  rt  r?  r   r[   r   r   r
   r   r   )r?   cdgcdgrls      r@   r   zTestTrigonometric.test_cosdgn  s+    mmBBsFUa8rC   c                 p    t        j                  d      }t        t        dz        }t	        ||dd       y NrT   rE  r?  r   r[   rS  )r?   cdgmcdgmrls      r@   test_cosdgmorez TestTrigonometric.test_cosdgmores  s+    }}R RVf6:rC   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&  rX   r?  r[   )r   r   r   r
   r   )r?   cscsrls      r@   r   zTestTrigonometric.test_cosm1x  sc    mmAw}}R0r"u1EFAqR3r"u:a<0DvA6rC   c                 v    t        j                  d      }t        t        dz        dz  }t	        ||dd       y )NrT   rE  rM   r?  r   r[   r   r   r   r   r   )r?   ctctrls      r@   r   zTestTrigonometric.test_cotdg}  s0    ]]22c6{R DvA6rC   c                 v    t        j                  d      }t        t        dz        dz  }t	        ||dd       y )Nr   r  rM   r?  r   r[   r_  )r?   ct1ctrl1s      r@   test_cotdgmorez TestTrigonometric.test_cotdgmore  s0    mmBBsFb!Ua8rC   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   r[   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FrC   c                     t        t        j                  dg      d       t        t        j                  d      d       y )Nr   rX   r   r   )r   r   sincr   r>   s    r@   	test_sinczTestTrigonometric.test_sinc  s*    7<<,a0W\\#&,rC   c                 F    t        j                  d      }t        |d       y r  )r   r  r   )r?   sns     r@   r  zTestTrigonometric.test_sindg  s    ]]2RrC   c                     t        j                  d      }t        t        dz        }t	        ||dd       t        j                  d      }t        t        dz        }t	        ||dd       y )NrT   rE  r?  r   r[   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:rC   N)r3  r4  r5  r   rQ  r   rZ  r   r   re  ro  rr  r  rz  r:  rC   r@   rH  rH  c  s:    7
9
9
;
7
7
9
G-
;rC   rH  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 rW  r   r  r   r   r   )r?   tntnrls      r@   r  zTestTandg.test_tandg  s+    ]]22c6{DvA6rC   c                     t        j                  d      }t        t        dz        }t	        ||dd       t        j                  d      }t        t        dz        }t	        ||dd       y )Nr   r  r?  r   r[   rH  r  r  )r?   tnmtnmrltnm1tnmrl1s        r@   test_tandgmorezTestTandg.test_tandgmore  r{  rC   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   rg  r[   r   r   rh  r   ri  rj  r  iLrk  rl  rm  rn  )r   r   r  r>   s    r@   ro  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GrC   N)r3  r4  r5  r  r  ro  r:  rC   r@   r}  r}    s    7
;HrC   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
)	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#rC   c                 ~    t        j                  dd      }t        d      t        d      ddg}t	        ||dd       y )Nr   r   r   7QE=r[   )r   r   r	   r
   r   )r?   elrels      r@   r   zTestEllip.test_ellipj  s6    ^^C"3xCT*CgA6rC   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э?rI  r   r[   r   r   rJ   rM   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+-?@rC   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 )NrJ   r   r   r   r[   rn   r  r   gfoKh?r?  r   r   r   gt?rX   rK   r'  rQ   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LrC   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&  rX   gV^8j?g,j6Ƅ@rJ   )	r]   	nextafterrv   appendr   r   r   	full_liker   r?   mbadr  r  mvalsjrj  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SrC   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  rJ   Fr  rX   r/  rQ   )r]   rp   r8  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<rC   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?r?  r   r[   r   rJ   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+-?@rC   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 )NrJ   r   rg  r   r[   4   r  #   g'?r?  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KrC   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&  rX   g%?rJ   gXo
@rH   )	r]   r  rv   r  r   r   r   r  r   r  s           r@   test_ellipeinc_2zTestEllip.test_ellipeinc_2A  s     # LLq!r 	#ALLOQ"A	# c5)&q",,q:M*NPQRsRx/&r2<<<N+OQRSrC   N)r3  r4  r5  r  r   r   r   r  r  r   r   r  r:  rC   r@   r  r    s5    $7
	AM:T =*	AL4TrC   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 )NrX   r   r   r  g      @rt  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_resultsrz   arrs        r@   test_elliprczTestEllipCarlson.test_elliprcW  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+>?	@rC   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 )NrX   r   rJ   r  g`C+?r   rt  rM   )r   rt  r   rt  r  r  r  r  rt  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_elliprdk  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+>?	@rC   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 )NrX   r   rJ   gPO?r   rM   )r   rt  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_elliprf  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+>?	@rC   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 )NrX   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+>?	@rC   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 )NrX   r   r   rM   )r   r   rt  r  )rt  r  r  r   )rt  r  r  r  )r  r  r   rt  )r              r   rt  )r  r  r   r  )r  r  r   y            ?)rt  r  r  r  )rt  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+>?	@rC   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 <"	0rC   N)r3  r4  r5  r  r  r  r  r  r  r6  r7  r8  r  r:  rC   r@   r  r  R  sM    @(@0@2@*@6 [[?@0 A0rC   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   rA  rt  rM   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rC   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9rC   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
        rt  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:rC   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)
        rt  r   r   N)r  r   r   r$   r  s     r@   test_ez)TestEllipLegendreCarlsonIdentities.test_e   s-     OOq	2gb"Q$&;#;<rC   N)r3  r4  r5  r  r  r  r  r  r:  rC   r@   r  r    s    

8:	;=rC   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?r?  r   r[   )r   r  r   )r?   ers     r@   r  zTestErf.test_erf
  s    [[LvA>rC   c                 f    t        j                  d      }t        g d      }t        ||dd       y )Nr   )yTcJ5?=W?yo@n@y'ʷ@g	@y"[

@,y]+@yld&@-;'j'>@rH  r   r[   )r   	erf_zerosr   r   )r?   erzerzrs      r@   test_erf_zeroszTestErf.test_erf_zeros  s1    " - .
 	TQ7rC   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)NrS   rE  g{Gz?rJ   r   rX   r  r  allr(  )	r]   rc   rd   paretorandintr  r   isfiniter3   )r?   r  
other_funcrR   r\   rj   rf   r   r   r!  r1  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 rt   r<   r  r!  s    r@   <lambda>z.TestErf.test_erfc_consistent.<locals>.<lambda>1  s    a&**Q-' rC   r   r'  r(  )r  r<   r  r>   s    r@   test_erfc_consistentzTestErf.test_erfc_consistent.  s%      KK'	 	! 	rC   c                 J    | j                  t        j                  d d       y )Nc                 ^    t        j                  | | z        t        j                  |       z  S ru  )r]   r   r<   r  r  s    r@   r  z/TestErf.test_erfcx_consistent.<locals>.<lambda>9  s    bffQqSkFKKN2 rC   r   rQ   )r  r<   erfcxr>   s    r@   test_erfcx_consistentzTestErf.test_erfcx_consistent6  s"      LL2 	! 	rC   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>@  s    cFJJr!t,, rC   r   rQ   )r  r<   erfir>   s    r@   test_erfi_consistentzTestErf.test_erfi_consistent=  s"      KK, 	! 	rC   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>G  s.    d2hqj2661"Q$</&++a.@ rC   r   rQ   )r  r<   r   r>   s    r@   test_dawsn_consistentzTestErf.test_dawsn_consistentD  s"      LL@ 	! 	rC   c                     t         j                  t         j                   t         j                  g}t         j                  ddg}t        t	        j
                  |      |d       y )NrM   rX   r   rQ   )r]   r  r   r   r   r  r?   rO  r"  s      r@   test_erf_nan_infzTestErf.test_erf_nan_infK  s@    (FFB?D)8%@rC   c                     t         j                  t         j                   t         j                  g}t         j                  ddg}t        t	        j
                  |      |d       y )NrJ   r   r   rQ   )r]   r  r   r   r   r  r  s      r@   test_erfc_nan_infzTestErf.test_erfc_nan_infP  s@    (FFAq>T*H5ArC   c                     t         j                  t         j                   t         j                  g}t         j                  t         j                  dg}t        t	        j
                  |      |d       y )Nr   r   rQ   )r]   r  r   r   r   r  r  s      r@   test_erfcx_nan_infzTestErf.test_erfcx_nan_infU  sE    (FFBFFA&d+XEBrC   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_infZ  sK    (FFRVVGRVV,T*H5ArC   c                     t         j                  t         j                   t         j                  g}t         j                  ddg}t        t	        j
                  |      |d       y )NrM  r   r   rQ   )r]   r  r   r   r   r   r  s      r@   test_dawsn_nan_infzTestErf.test_dawsn_nan_inf_  sA    (FFD#&d+XEBrC   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   rQ   )r]   r  r   r   r   r0  r  s      r@   test_wofz_nan_infzTestErf.test_wofz_nan_infd  sN    (FFRVVc\)66:T*H5ArC   N)r   )r3  r4  r5  r  r  r  r  r  r  r  r  r	  r  r  r  r  r:  rC   r@   r  r    sJ    ?8E.A
B
C
B
C
BrC   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   rX   rJ   r   rQ   )rX   r   rM   r   )rX   rX   r   =   ii  iY  i=) il   Q~ l   10[l   $8gC
 l   2l   v}Ju: )r   d   r  r  r   rg  r[   )
r   eulerr   r   rv   rw   r]   r  r   r#  )
r?   eu0eu1eu2eu24	mathworldcorrectrg   errerrmaxs
             r@   
test_eulerzTestEuler.test_eulerk  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)r3  r4  r5  r!  r:  rC   r@   r  r  j  s    ;rC   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 )NrJ   rH   )r   r  r   r?   exexrls      r@   r  zTestExp.test_exp2  s    \\!_RrC   c                 P    t        j                  d      }d}t        ||dd       y )Nr  g;f@r?  r   r[   )r   r  r   r?   exmexmrls      r@   test_exp2morezTestExp.test_exp2more  s#    ll3Ua8rC   c                 P    t        j                  d      }d}t        ||dd       y )NrJ   r#  r   r   r[   r   r
  r   r%  s      r@   r  zTestExp.test_exp10  s#    ]]1Dt!4rC   c                 P    t        j                  d      }d}t        ||dd       y )Nr  gYs@r?  r   r[   r.  r)  s      r@   test_exp10morezTestExp.test_exp10more  s#    mmC Ua8rC   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 )NrJ   r   rH   rX   r?  r   r[   r   r  r   r   r%  s      r@   r  zTestExp.test_expm1  s[    mmAa 0'--2BCA
CFQJA
3DvA6rC   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 )NrJ    @皙@rX   r?  r   r[   r2  )r?   ex1exrl1s      r@   test_expm1morezTestExp.test_expm1more  s[    }}Qs!3W]]35GHQ!SX\3s8a<8Ua8rC   N)	r3  r4  r5  r  r,  r  r0  r  r8  r:  rC   r@   r#  r#    s     
9
5
9
7
9rC   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 )NrQ   )r-   r,   )r   r   rR   s     r@   assert_funcz(assert_really_equal.<locals>.assert_func  s    !%1?1ad3SrC   c                     t        j                  | j                        rt        j                  | j                        sJ y ru  )r]   r   r   r  r   s    r@   assert_complex_nanz/assert_really_equal.<locals>.assert_complex_nan  s*    xxBHHQVV$444$4rC   ztypes not equal: z, rQ   r  N)
r9  
isinstancer]   ndarrayr  ziprb   assert_really_equalr   r1   )r   r   rR   r;  r>  elem_xelem_ys     `    r@   rB  rB    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rC   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      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.d/            d0        Z'ej
                  j                  d e( edd1             e( ed-d.d/            z         d2        Z)d3 Z*d4 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                  d5g d$gd gej                  gej                  ej                  dz  z   gej                  d$ggg d6      d7                                    Z-ej
                  j                  dddg      ej
                  j                  ddd	g      ej
                  j                  dd$d d8ej                  ej                  ej                  dz  z   dgg d9      d:                      Z.ej
                  j                  d ed-d.d;            d<        Z/ej
                  j                  d e( edd1             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                  d5g d$gd gej                  gej                  ej                  dz  z   gej                  d$ggg d6      d?                                    Z2ej
                  j                  dddg      ej
                  j                  ddd	g      ej
                  j                  dd$d d8ej                  ej                  ej                  dz  z   dgg d9      d@                      Z3ej
                  j                  dA ed$d%            ej
                  j                  d edBdCdD            dE               Z4ej
                  j                  dA e( ed$d%            d/dCgz         ej
                  j                  d e( edd1             e( ed1dFd;            z         dG               Z5dH 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                  d5g d$gd gej                  gej                  ej                  dz  z   gej                  d$ggg d6      dI                                    Z7ej
                  j                  dddg      ej
                  j                  ddd	g      ej
                  j                  dA ed$d%            ej
                  j                  dd$d d8ej                  ej                  ej                  dz  z   dgg d9      dJ                             Z8ej
                  j                  ddd	g      ej
                  j                  dg d      ej
                  j                  dAdKdLddMdd ej                  g      dN                      Z9ej
                  j                  ddd	g      ej
                  j                  dg d      ej
                  j                  dAd! ej"                  d      gd!dOg      dP                      Z:ej
                  j                  dg d      ej
                  j                  dA ed$dQ            dR               Z;dS Z<y)T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rg   r  zerorX   )r   
factorialkr]   modpowerrB  r  maximum)r?   rf   rg   r  extendrrO  s          r@   factorialk_refz%TestFactorialFunctions.factorialk_ref  s    %%a1D99"f,BFF1aL!xxAE19%acAg(>>PQRSPSVWPWAXXbjjA&&&rC   zexact,extend))TrI  )FrI  )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  rN  rg   r   rX   )r]   isscalarr   	factorial
factorial2rJ  )r?   r  rN  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;;<<<rC   rf   )rM   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   rg   r   )r   r   rU  rV  rJ  )r?   r  rf   rW  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9rC   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   )rK  r   rX   )r   r   rX   rX   r  rQ   rg   r   )	r]   r   
native_intr   rB  r   rU  rV  rJ  )r?   r  rW  rR   rf   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RrC   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 )NrN  r  gRc/a_%g:\Oag@g*BZ'r_  go	08G)?goNb]gMxcQgNy?g=u?g7K [n<rQ   rg   r   r   )r   r   rU  rV  rJ  )r?   rf   rW  exp_1exp_2exp_krR   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SrC   r  r   r  n_outerc                 J    ddifd} |||z           |d|z  |z          y )NrN  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  rJ   r   rg   y      ?       r   )
r1   r9  r]   
complex128r   rB  r   rU  rV  rJ  )rf   
complexifycomplex_nanr   r  rW  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;WrC   i r:  )r?   rf  r  rm  rW  s       @r@   -test_factorialx_negative_extend_complex_poleszDTestFactorialFunctions.test_factorialx_negative_extend_complex_poles 	  s5     	"	X( 	w~w 4'(rC   boxedrN  rI  r  r  r  ri  Nnat)
NaNznp.float64('nan')	NaN+i*NaNznp.complex128('nan+nanj')r   zinf+0iz-infz-inf+0iNoneNaT)ids
factorialxc                    d|d}|t         j                  k(  rd|d<   |rg dndddt        d       g}|t         j                  k(  rdnddg}t	        t        |      |      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)NFrR  r   rg   rz   rj  r  rz   rj  r  Unsupported data type.*r  r  In order to use non-integer.*ri  r  rI  r   r   )r   rJ  r9  rU  r1   r6  r   r4  r]   rj  r   r  rB  )r?   rv  rf   rN  ro  rW  permissible_typestypes_need_complex_extrk  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  rX   )rN  r   Trg   r  rN  )r6  r   r4  r   rU  rV  rJ  )r?   rN  s     r@   test_factorialx_raises_extendz4TestFactorialFunctions.test_factorialx_raises_extendN	  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levelsrX   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 )NrX   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   rX   r:  r   rg   _nest_mes     r@   r  zDTestFactorialFunctions.test_factorialx_array_shape.<locals>._nest_meZ	  s&     AvA!,,rC   c                     t        j                   |      t              }t        | j	                  t         j
                         |j                  t         j
                               y )Nrg   r  )r]   r   objectr   r   r   )r  nucleusr   r  r  s      r@   rm  zBTestFactorialFunctions.test_factorialx_array_shape.<locals>._checkg	  sB    ((8Gv6fEC CJJrzz2JCJJrzz4JKrC   r   r   r  r  r|   Tr  r&  r   rm  rJ   rS  )r]   r   mathrU  r   rV  rJ  )r?   r  r  rm  rf   exp_nucleusr  s    `    @r@   test_factorialx_array_shapez2TestFactorialFunctions.test_factorialx_array_shapeW	  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ErC   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  r|   r&  rm  r  rX   r  rJ   r   )r]   r   r   r   rU  rV  rJ  )r?   r  r  r  rf   r   s         r@   test_factorialx_array_dimensionz6TestFactorialFunctions.test_factorialx_array_dimensionw	  s     HHQe3/"$))!59Qs3	5**1E:Qs3	5**1au=Qs3	5rC   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 )NrX   c                 ,    |dk(  r| S  | g|dz
        S r   r:  r  s     r@   r  zCTestFactorialFunctions.test_factorialx_array_like.<locals>._nest_me	  s"    AvQqS))rC   r   r  r  r|   r&  rm  r  r  rJ   r   rS  )r   r   r   rU  r]   r   rV  rJ  )r?   r  r  rf   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	;rC   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(  r|ry t        j                  j                  t        j                        dk\  rS | ||dz
                |t        j                  |dz
  |              |t        j                  |dz
  g|             y y |t        j                  t        j                  fv s|sQ ||dz
          |t        j                  |dz
  |              |t        j                  |dz
  |dz
  g|             y y )	NrR  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 )Nrg   r   )	r?  r]   r@  r   r(  r   rU  rV  rJ  )rf   n_refr;  rW  s     r@   rm  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<<>rC   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   rg   r   )r  r  simplefilterr  r   rU  rV  rJ  )rf   
shaped_infr;  rW  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   rX   r  z2.0.0rJ   )r   r   r]   r   r"  r#  uint64libNumpyVersion__version__uint8uint16)	r?   r  rN  r  rm  r  r6  r;  rW  s	          @@r@   test_factorialx_uintz+TestFactorialFunctions.test_factorialx_uint	  sT    /,1(	>	F 	uQxuQxrxx'(rxxAe,-"((5/%%&BII$$R^^4?51:&288AaCu56288QqSE78	 @
 rxx++5 1Q3K288AaCu-.288QqS!A#Je45 49rC   rT   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 )Nr6   t0=r   Tr  FrQ   )sysplatformr   rw   r   rU  r   r?   rf   rR   s      r@   test_factorial_accuracyz.TestFactorialFunctions.test_factorial_accuracy	  s~    
 /uUg//>?))!59	F))1#T:AA%H))1#U;$	HrC      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   r6   +6=r   FrQ   r  rR  )r  rU  r   r   r  r  rw   r   r?   rf   r  rR   rW  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LrC   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)
Nr6   r  r   rQ   r   `exact=True` only supports.*r  Tr  )r  r  r   r   rU  r6  r   r4  )rf   r"  rR   s      r@   rm  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+rA  gr?g(\?gc?g333333@g4s@g333333&@gމOAfffff@@g	²Gg     K@gC$JOglS@g }WgX@gX>%`g\CSe@gG=r:  r?   rm  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8rC   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 )	Nr6   ra  V瞯<Fr  rR  rQ   r   )r  r  r   r   rU  rf   r"  rR   rW  s       r@   rm  zGTestFactorialFunctions.test_factorial_complex_reference.<locals>._check
  s]    LLG35D I6BG--a626tLG--qc8R8;XDQrC   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TrC   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ru  r]   r   ru   .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r1   r9  r  s     r@   r  zKTestFactorialFunctions.test_factorial_array_corner_cases.<locals>.<genexpr>!
       &Sa|DGS'A&S   !rR  r   rX   r  r  r  Incompatible options:.*r  rx  ry  r  rz  rz   r  r   rQ   )r  r.   r6  skipr]   r(  anyr   lenr   r   r4  r   rU  r1   r  rb   r   rj  r]  rB  r?   r  r  r  rN  r  rW  rf   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+2jrq  rr  rs  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)NrR  r  r  r  rz   rj  r  ry  rz  ri  r  r  rX   )r6  r   r4  r   rU  r1   r9  r]   r   rj  r   rB  r   rB  r?   rf   r  rN  rW  rk  r"  s          r@   "test_factorial_scalar_corner_casesz9TestFactorialFunctions.test_factorial_scalar_corner_casesF
  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 )Nr6   +=r   Tr  FrQ   )r  r  r   rw   r   rV  r   r  s      r@   test_factorial2_accuracyz/TestFactorialFunctions.test_factorial2_accuracya
  s~    
 /uUg00$?@**1E:	G**A3d;BB5I**A3e<4	IrC   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  rX   Tr  r6   r  r   FrQ   r  rR  rJ   )	functoolsreduceoperatormulr!  rv   r   r   rV  r  r  rw   r   r  s        r@   test_factorial2_int_referencez4TestFactorialFunctions.test_factorial2_int_referencem
  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 rC   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  rR  rQ   r   )r   r   rV  r  s       r@   rm  zHTestFactorialFunctions.test_factorial2_complex_reference.<locals>._check
  sP    D I6BG..q7B7MG..s9b9!<hTRrC   r   r  rH   rJ   rn   r  g^D]?JO?r  y^D]?JO?        y      @      @y&0!:?gSt$gtQ*@y       -C6?yqj?x*)r   rV  r  r   r   r  s     r@   !test_factorial2_complex_referencez8TestFactorialFunctions.test_factorial2_complex_reference
  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VrC   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ru  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  rR  r   rX   r  r  r  r  rx  ry  rj  r  rz  r  rQ   )r]   r(  r  r6  r  r   r  r   r   r4  r   rV  r1   r  rb   r   rj  r]  rB  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)NrR  r  r  r  rz   rj  r  ry  rz  ri  r  rg   rJ   r   rQ   )r6  r   r4  r   rV  r1   r9  r]   r   rj  r   rB  rP  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rg   r  rn   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 )Nr6   r  r  TrH  FrQ   )r  r  r   rw   r   rJ  r   )r?   rf   rg   rR   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rC   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   rX   Tr  r6   gt =r'  FrQ   r  r  r  )r  r  r  r  r!  rv   r   r   rJ  r  r  rw   r   )r?   rf   rg   r  rR   rW  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 rC   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  r  rQ   r   )r   r   rJ  )rf   rg   r   rR   rW  s        r@   rm  zHTestFactorialFunctions.test_factorialk_complex_reference.<locals>._check  sR    D5I>BG..q7B74HG..s9b9!<cMrC   rH   r   TrH  )rf   rg   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   rJ  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WrC   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ru  r  r  s     r@   r  zLTestFactorialFunctions.test_factorialk_array_corner_cases.<locals>.<genexpr>8  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   r  r   rX   r  r  r  r  rx  ry  rj  r  rz  r  rQ   )r]   r(  r  r6  r  r   r  r   r   r4  r   rJ  r1   r  rb   r   rj  r]  rB  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)Nr  r  r  r  rz   rj  r  ry  rz  ri  r  r   rQ   )r6  r   r4  r   rJ  r1   r9  r]   r   rj  r   rB  rP  )r?   rf   rg   r  rN  rW  rk  r"  s           r@   #test_factorialk_scalar_corner_casesz:TestFactorialFunctions.test_factorialk_scalar_corner_cases\  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rM   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)
NrX   r  rI  rz  rz   zFor `extend='zero'`.*r  r   zParameter k cannot be zero!)r1   r9  r6  r   r4  r   rJ  )r?   rg   r  rN  ro  rf   rW  r  s           r@    test_factorialk_raises_k_complexz7TestFactorialFunctions.test_factorialk_raises_k_complexu  s    
 QCau7V1CDGS)q1u-z5 ,""1++, ,!Vz1NO ,""1++, , q'B', ,, ,s   CCCCrt  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)NrX   r  ry  r  )r6  r   r4  r   rJ  )r?   rg   r  rN  ro  rf   rW  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                 Z   |||d}|r|t        j                         v rt        j                  t        |   g      }t        t        j                  |fi |j                  t               t        t        j                  |dz   fi |j                  t        j                         t        j                  |dz   fi |t        j                  t        j                        j                  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 )Nr  rX   )r/   keysr]   r   r0   r   r   rJ  r  r*   r(  r"  int32r#  r  getr   )r?   rg   r  rN  rW  rf   r  s          r@   test_factorialk_dtypez,TestFactorialFunctions.test_factorialk_dtype  s    u7Q388::3A678A++A44::G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BrC   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)
NrX   rJ   r   rN   Fr  r  r  T)	r]   r   r  r   r   rU  r6  r   r4  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)=r3  r4  r5  rP  r6  r7  r9  rX  rZ  r^  re  rn  r]   r  r   rj  r   
datetime64r   rU  rV  rJ  r~  r  rv   r  ru   int8int16r  r(  r  r  uint32r  r  r  ri  r  r  r!  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r:  rC   r@   rF  rF    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,mbmmE>R	

  
 [[			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-A"B"*E!2  4(4T 5( [[^RT[[S%2,/C 0TC(-rC   rF  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/?!ۿ)rE  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 )Nr?  r   r[   )r   r   r=  r   )r?   r!  r  r  frss        r@   test_fresnel_valueszTestFresnel.test_fresnel_values  s.    @ GOOA&'UAq6]a@rC   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   r[   )y.1?ǘ?yʡE6@:#J{/?yq-
@y&1?yh o@߾3?yW2q@qh?rX   rg  )r   fresnel_zerosr   r   r=  )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7rC   c                 |    t        j                  d      \  }}t        j                  d      }t        ||dd       y )NrN   Afcz=r   r[   )r   r  fresnelc_zerosr   )r?   r  r  frcs       r@   test_fresnelc_zeroszTestFresnel.test_fresnelc_zeros  4    ((+S$$Q'SwQ7rC   c                 |    t        j                  d      \  }}t        j                  d      }t        ||dd       y )Nr   r  r   r[   )r   r  fresnels_zerosr   )r?   r  r  r  s       r@   test_fresnels_zeroszTestFresnel.test_fresnels_zeros  r  rC   N)r3  r4  r5  r6  r7  r9  r]   r   r  r  r  r"  r:  rC   r@   r
  r
    sz    [[Y7=	

	
 	&,)/*	c
&&$;) >A?>A8&8
8rC   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 r@  )r   rB  r   )r?   gams     r@   rC  zTestGamma.test_gamma  s    mmASrC   c                     t        j                  d      }t        t        j                  d            }t	        ||dd       y )Nr   r?  r   r[   )r   rH  r   rB  r   )r?   gamlnlngams      r@   rI  zTestGamma.test_gammaln  s1    "GMM!$%u6:rC   c                 z    t        j                  dd      }t        j                  dd      }t        ||dd       y )Nr   r?  r   r[   )r   rE  gammaincinvr   )r?   gccinvgcinvs      r@   rF  zTestGamma.test_gammainccinv  s4    %%b,##Br*F;rC   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 )NrK   rJ  r   r[   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6rC   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?rX   g^F    ?rK   r   rQ   )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.	/rC   c                 |    t        j                  d      }dt        j                  d      z  }t        ||dd       y )Nr
  rX   r?  r   r[   )r   r  rB  r   )r?   rgamrlgams      r@   r  zTestGamma.test_rgamma   s1    ~~a '--""e&q9rC   c                 B    t        t        j                  d      d       y )NrM   r   )r   r   r  r>   s    r@   test_infinityzTestGamma.test_infinity%  s    W^^B'+rC   z
x,expectedrM  r   ir       i c   r  gP²Zdbc                 B    t        t        j                  |      |       y ru  )r   r   rB  r  s      r@   
test_poleszTestGamma.test_poles(  s      	7==+X6rC   N)r3  r4  r5  rC  rI  rF  r2   r1  r5  r  r:  r6  r7  r9  r]   r   r  rv   fullr>  r:  rC   r@   r$  r$    s   ;
<
 	7 	7 
/ 
/:
, [[ vvgrvv 01C[BFF7BFF+,3]GBGGB/05#r"GBGGB$78$%x0	
77rC   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  rJ   r   rg  r   r[   )r   r   rh  r>   s    r@   
test_negv1zTestHankel.test_negv1=  ,    A.A1F0F$1	.rC   c                     t        j                  dd      }t        j                  dd      t        j                  dd      dz  z   }t	        ||dd       y NrX   r  r  r?  r   r[   )r   rh  r  r'  r   )r?   hank1hankrls      r@   ri  zTestHankel.test_hankel1A  sE    "%**Qr"WZZ"%5b%88vF;rC   c                 t    t        t        j                  dd      t        j                  dd       dd       y rC  )r   r   rl  r>   s    r@   test_negv1ezTestHankel.test_negv1eF  0    ((Q/'2B2B1a2H1H$1	.rC   c                     t        j                  dd      }t        j                  dd      t        d      z  }t	        ||dd       y )NrX   r  y       r?  r   r[   )r   rl  rh  r   r   )r?   hank1ehankrles      r@   rm  zTestHankel.test_hankel1eJ  s;    !!!B'//!B'D	1f1=rC   c                 t    t        t        j                  dd      t        j                  dd       dd       y rC  )r   r   rp  r>   s    r@   
test_negv2zTestHankel.test_negv2O  rE  rC   c                     t        j                  dd      }t        j                  dd      t        j                  dd      dz  z
  }t	        ||dd       y rG  )r   rp  r  r'  r   )r?   hank2hankrl2s      r@   rq  zTestHankel.test_hankel2S  sE    "%::a#gjj2&6r&99wV!<rC   c                 t    t        t        j                  dd      t        j                  dd       dd       y rC  )r   r   rs  r>   s    r@   
test_neg2ezTestHankel.test_neg2eX  rL  rC   c                 z    t        j                  dd      }t        j                  dd      }t        ||dd       y )NrX   r  r?  r   r[   )r   rs  r   )r?   hank2ehankrl2es      r@   test_hankl2ezTestHankel.test_hankl2e\  s4    !!!B'##Ab)vA>rC   c                     t        j                  dd      }t        j                  |j                        sJ t        j
                  |j                        sJ y r;   )r   rp  r]   r   r   isposinfr  r?   r  s     r@   test_hankel2_gh4517zTestHankel.test_hankel2_gh4517a  s>    ooa#xx!!!{{388$$$rC   N)r3  r4  r5  rD  ri  rK  rm  rQ  rq  rV  rZ  r^  r:  rC   r@   rA  rA  ;  s/    .<
.>
.=
.?
%rC   rA  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 rG  )r   h1vpjvpyvpr   )r?   h1h1reals      r@   	test_h1vpzTestHyper.test_h1vpi  E    \\!B++a#gkk!B&7&::Fa8rC   c                     t        j                  dd      }t        j                  dd      t        j                  dd      dz  z
  }t	        ||dd       y rG  )r   h2vprc  rd  r   )r?   h2h2reals      r@   	test_h2vpzTestHyper.test_h2vpn  rh  rC   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   rQ   r   r   r   r  )g      rM   r   rX   r  )g̷?g3|t-Ք?r   go?g{h?r  r   r  r  )r   rX   r   )r   gc?ro  rJ   r   rX   )
r   r   hyp0f1r]   r   r   r  vstackassert_raisesr4  )r?   r   r"  r  x2s        r@   test_hyp0f1zTestHyper.test_hyp0f1s  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	3rC   c                 N    t        j                  dd      }t        |ddd       y )N皙?y      ?      ?y;EG?uM?r   r   r[   )r   rq  r   r]  s     r@   test_hyp0f1_gh5764zTestHyper.test_hyp0f1_gh5764  s&     nnS,/H#!	-rC   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   r[   )g{*= g˱a)g5=gvX@)g)AI@gDAhg$Pj)g~٭@)g,qUp,g@=&?gX 3@gZ@)g\@g88*@g\ֳ!=@g   ƞA)gAZ;gOFA'gxŝO<g_Dc D)g^g@g V*E7g4)3@g7-XtD)gΧU(@g2Tj8g$@g  LhB)ge;@gJgogr@g `屫B)g5'.@gqZ=g7߈Y.g8w)gB,@g"^#@grT[	R3@g  B)gYgN],*@g*!j,g1@)g#r @gq{874*gWs%o.@gMdD)g8|.2@g*!,g?I(#@gJ
r .)gu8g#=)@g*'1g)ψvA)g%0N:@gUx1@gx@gr),c@)g:M8@gGb+=@g3ҜV/@gX9ҙim@)g"dxz@gqKgv7##@g  >B)g kx-gD8L+8@g܈2g72LU@)gtd@Q4h6@g%@}gr3b @gu߯ѡ)g򋷺?g"p$`E2@gY|T3g\D?)gV-(+@g$[3@g;/@gEQwв@)g[fgLL4gQV@g0#.@)g;@g/?jvgx.<N&@g^I)g+9gX[?gbZSH%@g5/)@)g}RgŢ	@g},*@g6@g1w-@)gRA(g_@g5A} :=g   FA)gQz5@gq.#gTq&gc ?)gφ%#gZV@
g%@0@g   Syd)gB۽ܟ%@g*>8gV@'g	ʦ)g/H:gn@S g)bǙ9@g  9)gT쁹3!gD gkLFr%@g3333`4A)g:k
g\=)'gi,k9gbx?)giXwg-CwU5@g'jin9gX5@)gb@gTy4#/@g]pH=gIw?)g63@g2XxM:@g~?^0gW1?)g37g R{@gicx.4?gmm?)gv܏%7@g9Ma%=g}ygGr##@)gG8-xы.@gǂ@ghb(@g  A)gw1@gq2@gO],@g0ɷ-X@)g2@g́y#<@gͣx?g]?)g];˄f$@g1}0g_9g8ڃ@)g:!ω1g)q(@gg2gv%)A)gYN:+gn	Ȱ-?g>gZd|I.A)gr/K@g\}L9@g*gΙ?)gQq5V@g?)@g'@0@glۭ`@)gVn:gRQ0gT&g QC)gR4 8gi+gK @g{G)gtiq+g(O?3g	1=@g  8cB)g|>oϘg\!<@g"?4V?g%c\q?)g gpfP!gAO:@g,\)g=R8@g%;gz3@g~0G)g.CVl@ge< .@g9@gkq1A)g=~$gpR7@g 77g,ǆ@)g^g{)gRA2@g  dL)gf=4,R@gyO-g#ޕ~8@g)g|ݩ%P4g:<9@gKzs4g$(~O4@)g2y3@g1$6g&TpxA6gG!JA)gf^XH
^;@g7r:@g`,/@gi{dA)gihx@g!B8(@g7j*@gh@)glmF<gpO4@g`2"@g-)gnV3!2@g.mq1g!Z{.@grOE)gs`m@gzAUguC=V#@g  \)gPL-(@g,9$"9g6u7@geRF)gw8gv=5@gjRW+g(\-@)gyg~=@g4MVgwz:@)g^0g+7%g-@j81g5ׂ,j)gj4gz0g-</;gݽ]
D)gN43@g}W6@gLUS!9gɍF>)g Q4@g=}gȮ5@g]nhgF)gV9g9gf9,#gF|}fv?)g=^ee;@gy}2g'T> g#o@)g+5g;gN8Cg8@g   bkA)gSx+26@g@gI0gSMC)gT*0@g`<6gWy5@gǟRj)gӰk
g/:?gJLHR"@gxu-)gKu@g6gt8_x7@gd;=')g+:;@gBͤ10@g";gK$?)gp @g dg	=@g=6` F)gTbR.g9:g3@gUfgRbKZ@)g!g%P73;g]?gr	y?)g)Yv2gȹq@g/3g   A)g?j/|g7:@g#~oݽ?g8pE?)gPj/gS"X)gYgt0N?)ggo&	xT7@g-hT@#@g.;%r?)g'_@gɖ@7g:Kڞ$@g [B)gk5ں9gѼ:gk%tp;@g  .<^)gf:OI&gO/g#01|2gf`Y)gqv~@guFd9@gz+S7gF1/$?)gx3g~[6:g;s9@gKw*1@)gP@gv;K,gҬd&<@g!s)gֈ`|.gOwx=@g+MK<gUU@)gکI@g©jG1g4g؃66@g(4ν4E)gS>?gD-lgSL,c<gԉE4?)gd?A g3$)glx^?gs>|T?)g(%@g:ĉ$@g~^gv2gJHF&?)g}r":@g3\z;@go)@g+hA)g@')"gVv/@guQU-gfy2yt@)gM6y%$g/;R#@g):@gw%",6Կ)g%x'g$6g5gu$9?)glkC9g<tF8gp?g ?rI  )r   rw  r   r   r   rC  )r?   hyp1ref_datarD  rE  r  r"  r  s           r@   rx  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:;	<rC   c                 ~    t        j                  ddd      }t        j                  ddd      }t        ||dd       y )Nr   r  g7B.g|:B.r  r   r[   r   rw  r   )r?   rz  hyp2s      r@   test_hyp1f1_gh2957zTestHyper.test_hyp1f1_gh2957	  s4    ~~c38~~c38dq9rC   c                 P    t        j                  ddd      }t        |ddd       y )Nr   r  ig<`?r  r   r[   r}  )r?   hyps     r@   test_hyp1f1_gh2282zTestHyper.test_hyp1f1_gh2282  s#    nnS#u-1aHrC   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   rX   r  |Gz?r  g?g|Gzr   r   rJ   r  rw  )r   r  r  r  gYi2?r  r   g433333?rH   r
  r   rM   r  rt  g      ?r        @g      gUUUUUUտg  @gUUUUUU?g)r  r  r         $gEciH!@)r  r   rX   ffffff?gzG?)rJ   r  rX   r  gy&1|)rv  r   rX   r  g"nN%@?)rJ   r\  rX   r  g!J)r&  |      %@r>  gzS;)r&  r  g      %r>  g[B.VP<r?  r   test #r\   rR   err_msg)r   r   r	   r
   r   rB  r   r   r  rz  r   )	r?   valuesrz   rD  rE  r  r   rJ  cvs	            r@   r{  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rC   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 )NrX   r  r#  g D?r   r   r[   )r  r  333333?g)r  g	@r-  g	r   rJ   r  )r   hyperur   r   r   r	   rw  rB  )r?   val1rD  rE  r!  hypuhprls          r@   test_hyperuzTestHyper.test_hyperu6  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9rC   c                 L    t        t        j                  ddd      ddd       y )NrX   r  g3333334@g(¨?r  r   r[   )r   r   r  r>   s    r@   test_hyperu_gh2287zTestHyper.test_hyperu_gh2287C  s!    q#t46J$1	.rC   N)r3  r4  r5  rg  rm  ru  rx  rx  r  r  r{  r  r  r:  rC   r@   r`  r`  h  s9    9
9
34-r<h:
I"NH:.rC   r`  c                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0d/ Z1d0 Z2d1 Z3dRd3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 ZFdSdCZGdD ZHdE ZIdF ZJdG ZKdH ZLdI ZMdJ ZNdK ZOdL ZPdM ZQdN ZRdO ZSdP ZTdQ ZUy2)T
TestBesselc                 t    t        t        j                  d            }t        |t        ddg      dd       y )Nr   gbɃ?gΝJ ֿr?  r   r[   )r   r   r  r   )r?   it0s     r@   r  zTestBessel.test_itj0y0I  s2    GNN2&'U$79M#NO#!	-rC   c                 t    t        t        j                  d            }t        |t        ddg      dd       y )Nr   gbqTtt?g/]ooۿr?  r   r[   )r   r   r  r   )r?   it2s     r@   r  zTestBessel.test_it2j0y0N  s2    GOOB'(U$9;O#PQ#!	-rC   c                 l    t        t        j                  dd      t        j                  dd             y Nr   rJ   r  )r   r   r  r>   s    r@   test_negv_ivzTestBessel.test_negv_ivS  s!    WZZ!_gjjA&67rC   c                 x    t        j                  d      }t        j                  dd      }t        ||dd       y Nr  r   r?  r[   )r   r  r  r   r?   ozozrs      r@   r  zTestBessel.test_j0V  -    ZZ^jj2Cf15rC   c                 x    t        j                  d      }t        j                  dd      }t        ||dd       y Nr  rX   r?  r   r[   )r   r  r  r   r?   o1o1rs      r@   r  zTestBessel.test_j1[  r  rC   c                 N    t        j                  dd      }t        |ddd       y )NrX   r   ;x?r?  r   r[   )r   r  r   )r?   jnnrs     r@   r  zTestBessel.test_jn`  s!    zz!B2aHrC   c                 t    t        t        j                  dd      t        j                  dd       dd       y rC  r   r   r  r>   s    r@   test_negv_jvzTestBessel.test_negv_jvd  s*    

2q)GJJq!,<+<7QRSrC   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  rZ   g)%->)g@rZ   g5c)!9)r  r  g%,Ϳr?  r   r  r  )r  r   r  r   )r?   r  rz   rJ  r   r   ycs          r@   r  zTestBessel.test_jvg  s`    /5662	 &f- 	NLAy1aAq!BBQ&M	NrC   c                 t    t        t        j                  dd      t        j                  dd       dd       y rC  )r   r   r  r>   s    r@   test_negv_jvezTestBessel.test_negv_jver  ,    B*W[[A->,>$1	.rC   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 )NrX   r   r  r?  r   r[   ?      ?)r   r  r   r  r   rC  r  )r?   jvexpjvexp1r!  jvexprs        r@   r  zTestBessel.test_jvev  sg    Ab!3&qIQu%Aac!&&k\!22V!<rC   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   rX   )go@.=@gzj,[@glN!@g5/ D'@gh>-@rH  r[   gW@g0@gQX$@g*@g8*5{x0@rW   )gEk[@g~Cju]@gYrʝ^@g, `@gf	`@rP   rQ   -  )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_zeros~  s    q#q#U $3 4
 $!	- 	U $. /
 $!	-   Q'u &>  ? FK		L   Q'u &>  ? FK		LrC   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   rm   i  g;@rP   rQ   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rC   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 )NrX   rJ   r:  )rf   r   r  s     r@   jnpz(TestBessel.test_jnjnp_zeros.<locals>.jnp  s'    qs1I1Q3q	)1,,rC   rX   rT   r   r   r  zInvalid t return for nt=)r   r  rv   jnjnp_zerosrA  r   AssertionError)r?   r  ntr!  rf   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rC   c                     t        j                  dd      }t        |t        g d      dd       t        j                  dd      }t        t        j                  d|      dd	       y )
NrX   r   g(yu?gOXeS@ga!@gxi'@g'Nw(-@rH  r   r[     r   r  )r   	jnp_zerosr   r   rc  )r?   r  s     r@   test_jnp_zeroszTestBessel.test_jnp_zeros  s\    !$U $. /
 $!	- A&C-qu=rC   c           
          t        j                  dd      }t        |t        g d      t        g d      t        g d      t        g d      fdd	       y )
NrX   r   r  r  )"@g+@g-9(1!@gȘ'@g>tA}-@)g0v@gjt@gH.?$@g}"O*@gGŧp0@rz  r   r[   )r   
jnyn_zerosr   r   )r?   jnzs     r@   test_jnyn_zeroszTestBessel.test_jnyn_zeros  sc      A&e %/ 0
 $ %/ 0
 $ %/ 0
 $ %/ 01( $!)	-rC   c                     t        j                  dd      }t        j                  dd      t        j                  dd      z
  dz  }t        ||dd       y )NrJ   rX   r   rJ  r   r[   )r   rc  r  r   )r?   jvprimjv0s      r@   test_jvpzTestBessel.test_jvp  sC    Qq!zz!Awzz!A.1':rC   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6rC   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9rC   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  rC   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  rC   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   rX   r   rJ   r   r  r[   rt  rH   g       @rN   r   r
  g      H@)r]   rc   r   jacobir   r  r   )
r?   rD  rE  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FrC   c                 N    t        j                  dd      }t        |ddd       y )Nr   r   _2?r?  r[   )r   r  r   )r?   kn1s     r@   r  zTestBessel.test_kn  s!    jj2/f1ErC   c                 l    t        t        j                  dd      t        j                  dd             y Nr  r5  r  r   r   r  r>   s    r@   test_negv_kvzTestBessel.test_negv_kv  s"    WZZS)7::dC+@ArC   c                 N    t        j                  dd      }t        |ddd       y )Nr   r   r  rJ  r[   r   r  r   )r?   kv0s     r@   test_kv0zTestBessel.test_kv0  s!    jj2/gAFrC   c                 N    t        j                  dd      }t        |ddd       y )NrX   r   gKދ@rJ  r   r[   r  )r?   kv1s     r@   test_kv1zTestBessel.test_kv1  !    jj3.W1ErC   c                 N    t        j                  dd      }t        |ddd       y )NrJ   r   g)lHH@rJ  r   r[   r  )r?   kv2s     r@   test_kv2zTestBessel.test_kv2  r  rC   c                 D    t        t        j                  dd      d       y )Nr;  rX   g.Ք"H)r   r   r  r>   s    r@   test_kn_largeorderzTestBessel.test_kn_largeorder  s    

2q)+ABrC   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(!,rC   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CrC   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   r?  r[   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7rC   c                 |    d}t        t        j                  d|       t        j                  d|d      dd       y )Nr5  rX   r   rf   rJ  r[   )r   r   r  kvp)r?   r!  s     r@   test_kvp_v0n1zTestBessel.test_kvp_v0n11  s3    Aq))7;;q!q+A$1	.rC   c                     d}d}t        j                  |dz   |       ||z  t        j                  ||      z  z   }t        j                  ||d      }t        ||dd       y )Nr  r5  rX   r  rJ  r   r[   r   r  r  r   r?   rJ  r!  xcr   s        r@   test_kvp_n1zTestBessel.test_kvp_n16  s[    jj1Q!A#gjj1o"55KK!q!AG!4rC   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  r5  rJ   rX   r  rJ  r   r[   r  r  s        r@   test_kvp_n2zTestBessel.test_kvp_n2>  sr    d1a4ik1a4'**Qq/1GJJqs14Ea4GGKK1"AG!4rC   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_y0E  r  rC   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_y1J  s-    ZZ^jj23V!4rC   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 )NrJ   rX   r  r   rI  r   r[   )r   y0_zerosr   r   rC  r'  )r?   yoypozozpor  allvals          r@   test_y0_zeroszTestBessel.test_y0_zerosO  s    !!!$3!!!A.3BiCGGJJsC013W1MGJJq#.78#GRSTrC   c                 x    t        j                  d      }t        |t        dg      t        dg      fdd       y )NrX   r  gѮBO?rz  r   r[   )r   y1_zerosr   r   )r?   r:  s     r@   test_y1_zeroszTestBessel.test_y1_zerosW  s6    a UG9-ugY/?@#!	-rC   c                 |    t        j                  dd      }t        |t        dg      t        dg      fdd       y )NrX   r&  yL
F%u?!rh?y;OnгY?r  r   r[   )r   	y1p_zerosr   r   )r?   y1ps     r@   test_y1p_zeroszTestBessel.test_y1p_zeros\  s9    !,e]O4e_<M6NO#!	-rC   c                     t        j                  dd      }t        |t        ddg      dd       t        j                  dd	      }t        |g d
d       y )NrH   rJ   g3@g(A&"@rz  r   r[   r  r   )g]E.+"|@gH(|@gff|}@g&b`~@gHO_~@r   rQ   )r   yn_zerosr   r   )r?   ans     r@   test_yn_zeroszTestBessel.test_yn_zerosa  sR    a"E7G"45FKc!$ 4
 #	%rC   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   rJ   gQhվ@gzN@rB  r[   +   r   r   r  r  r   )r   	ynp_zerosr   r   rd  r?   aos     r@   test_ynp_zeroszTestBessel.test_ynp_zerosl  s~    q#E:z":;&qQr!$B+QU;s1%C,ad;rC   c                 t    t        j                  dd      }t        t        j                  d|      dd       y )Nr  r   r   r'  r  )r   r;  r   rd  r<  s     r@   test_ynp_zeros_large_orderz%TestBessel.test_ynp_zeros_large_ordert  s+    s1%C,ae<rC   c                 N    t        j                  dd      }t        |ddd       y NrX   r   5,1
r?  r   r[   )r   r$  r   )r?   yn2ns     r@   r%  zTestBessel.test_ynx  s!    zz!B1QGrC   c                 \    t        j                  dd      }|t        j                   k(  sJ y )NrV   rX   )r<   r$  r]   r   )r?   r  s     r@   test_yn_gh_20405zTestBessel.test_yn_gh_20405|  s&    99S!$BFF7"""rC   c                 t    t        t        j                  dd      t        j                  dd       dd       y rC  )r   r   r'  r>   s    r@   test_negv_yvzTestBessel.test_negv_yv  s,    

2q)GJJq!,<+<$1	.rC   c                 N    t        j                  dd      }t        |ddd       y rB  )r   r'  r   )r?   yv2s     r@   r(  zTestBessel.test_yv  s!    jj20vAFrC   c                 t    t        t        j                  dd      t        j                  dd       dd       y rC  )r   r   r*  r>   s    r@   test_negv_yvezTestBessel.test_negv_yve  r  rC   c                     t        j                  dd      }t        |ddd       t        j                  dd      t	        d      z  }t        j                  dd      }t        ||dd       y )	NrX   r   rC  r?  r   r[   r  rM   )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:rC   c                     t        j                  dd      t        j                  dd      z
  dz  }t        j                  dd      }t        ||dd       y )	NrX   r   r   rt  rJ   rJ  r   r[   )r   r'  rd  r   )r?   yvpryvp1s      r@   test_yvpzTestBessel.test_yvp  sE    

1R 7::a#33S8{{1R dq9rC   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        4r  r   r  r   r   {G(@r  r  )ir  rM   r   ry       i@g     y@g     Ă@g@  i'  Nr   irH  r  )	itertoolsproductr   )r?   rJ  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  rR   r\   )	r]  ru   r]   r  r   rC  r   r  r   )r?   r  f2rR   r\   r  rJ  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;	;rC   ppc64lezfails on ppc64ler  c                 f    | j                  t        j                  t        j                  dd       y )NrZ   u5% r(  )rd  r   r  r  r>   s    r@   test_jv_cephes_vs_amosz!TestBessel.test_jv_cephes_vs_amos  #     	!!'**gjju6!RrC   c                 f    | j                  t        j                  t        j                  dd       y )Ndy=rg  r(  rd  r   r'  r$  r>   s    r@   test_yv_cephes_vs_amosz!TestBessel.test_yv_cephes_vs_amos  ri  rC   c                 n    d }| j                  t        j                  t        j                  dd|       y )Nc                     t        |       dkD  S )Nr  )rC  )rJ  r!  s     r@   skipperzDTestBessel.test_yv_cephes_vs_amos_only_small_orders.<locals>.skipper  s    q6B;rC   rk  rg  )rR   r\   r  rl  )r?   rp  s     r@   (test_yv_cephes_vs_amos_only_small_ordersz3TestBessel.test_yv_cephes_vs_amos_only_small_orders  s-    	!!'**gjju6'. 	" 	0rC   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>rg  r(  )r]   r  rd  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 rX   r   rM   rJ   r   r   r
  r   r  r  r  r_  gYngH׊>)r]   rc   ro   r  r  r   r(  r  r   r  r   rC  r   argmaxr   )	r?   r6  rJ  r   imskra  rb  dcrg   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   rg  r(  )rd  r   r  r  r>   s    r@   test_kv_cephes_vs_amosz!TestBessel.test_kv_cephes_vs_amos  s@    !!'**gjjt&!Q!!'**gjjt&!QrC   c                     t        t        j                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d       y )	Nr   rH   gP?r  rZ  g~Omʒ?gY8E@@gKSnr  r>   s    r@   test_ticket_623zTestBessel.test_ticket_623  sD    

1a(*=>

3-/AB

3	24GHrC   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 BesselsrM   rX   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  rh  rp  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(=%==	
rC   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   rM   rX   r   rJ   rH   N)r   r   r   r  r  r'  r  r  r  r*  r  rE   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KrC   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_79094  s:    

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

1c*,AB

4.0EFrC   c                 D    t        t        j                  dd      d       y )Nr  rX   r  r  r>   s    r@   test_iv_hyperg_poleszTestBessel.test_iv_hyperg_poles=  s    

4+->?rC   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   rJ   r   rX   rM   r&  )r   r   r   r   r   rH  r   r   r   rC  r#  r   r  sumr?   rJ  r!  rf   rg   rO  r  s          r@   	iv_serieszTestBessel.iv_series@  s    1aL'qsUC1I! 44wqs1u7MM%(F!fjjlU6]...2S2Z]Buuw|rC   c                     dD ]9  }| j                  d|      \  }}t        t        j                  |      |||       ; y )Nr   ry  rY  r   r\   r  )r  r   r   r~  r?   r!  valuer  s       r@   test_i0_serieszTestBessel.test_i0_seriesH  =    ! 	GA1-JE3GJJqM5sAF	GrC   c                     dD ]9  }| j                  d|      \  }}t        t        j                  |      |||       ; y )Nr  rX   r  )r  r   r   r  r  s       r@   test_i1_serieszTestBessel.test_i1_seriesM  r  rC   c           	          dD ]C  }dD ]<  }| j                  ||      \  }}t        t        j                  ||      ||||f       > E y )N)rV  r  r   r   r   rW  r  )r   ry  rY  y             @r  )r  r   r   r  r?   rJ  r!  r  r  s        r@   test_iv_serieszTestBessel.test_iv_seriesR  sU    7 	SA, S!^^Aq1
s

1a 0%cAq6RS	SrC   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   rZ   r  g0oO?r   g!?grb?r  gpH?r   gC~?      4@ggo?r?  r   r  r  )r  r   r~  r   r   r?   r  rz   r   rJ  r  s         r@   r  zTestBessel.test_i0X  s    *#,%%%%%& #6* 	NIAv1AaR(BBQ&M	NrC   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_i0ef  -    {{2Ar"e&q9rC   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   rZ   gj|=r  gȕ![1?r   g;͘?r   gRΜ?r   g|?r  g}f?r?  r   r  r  )r  r   r  r   r   r  s         r@   r  zTestBessel.test_i1k  s    *01%%%%& #6* 	NIAv1AaR(BBQ&M	NrC   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_i1ex  r  rC   c                 t    t        t        j                  d            }t        |t        ddg      dd       y )Nr   gїJB?@g*u?rz  r   r[   )r   r   r  r   )r?   iti0s     r@   r  zTestBessel.test_iti0k0}  s2    W^^A&'e%79K$LM#!	-rC   c                 b    t        j                  d      }t        |t        ddg      dd       y )Nr  gݳɄ|T?gVƥ
@rB  r   r[   )r   r  r   r   )r?   it2ks     r@   r  zTestBessel.test_it2i0k0  s-    r"e%:<N$OP#!	-rC   c                 f    t        j                  dd      t        d      z  }t        |ddd       y )Nr   r  皙gv M?rJ  r[   )r   r  r   r   )r?   iv1s     r@   r  zTestBessel.test_iv  s*    jj2s3x'0wQGrC   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9rC   c                     t        j                  dd      }t        j                  dd      t        d      z  }t	        ||dd       y )Nr   r  r  rJ  r[   )r   r  r  r   r   )r?   ive1r  s      r@   r  zTestBessel.test_ive  s9    {{1R jj2s3x'ca8rC   c                 r    t        t        j                  dd      t        j                  dd      dd       y )NrX   rJ   r   rJ  r[   )r   r   r  ivpr>   s    r@   	test_ivp0zTestBessel.test_ivp0  s'    

1a('++a*;'PQRrC   c                     t        j                  dd      t        j                  dd      z   dz  }t        j                  dd      }t        ||dd       y )Nr   rJ   rX   rJ  r[   )r   r  r  r   r0  s      r@   test_ivpzTestBessel.test_ivp  sC    ZZ!_wzz!A.1KK!173rC   )rk  r   N)   )Vr3  r4  r5  r  r  r  r  r  r  r  r  r  r  r  r  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  r4  r8  r>  r@  r%  rF  rH  r(  rL  r+  rT  r]  rd  r6  r7  r8  r  machinerh  rm  rq  rs  slowry  r{  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r:  rC   r@   r  r  H  s2   -
-
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4rC   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   rX   rJ   r   rH   r   r  r[   rM   )rX   rK  rJ   rt  )rM   r  irN   rE  )rX   iH   ir   rA  )rM   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	.rC   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   rX   rJ   r   rM   r  r   rt  r   r[   r  rE  )r]   rc   r   rm  r   r  r   r   )r?   rg   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>rC   N)r3  r4  r5  r  r  r:  rC   r@   r  r    s    . ?rC   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 )	NrX   r  r   rJ   r  rA  r?  r[   )r   lmbdar   r  rc  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7rC   N)r3  r4  r5  r  r:  rC   r@   r  r    s    8rC   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  r?  r   r[   r   r  r   r   )r?   l1pl1prls      r@   r  zTestLog1p.test_log1p  sO    }}R '--"3W]]25FGR#b'3r7+Ua8rC   c                     t        j                  d      t        j                  d      t        j                  d      f}t        d      t        d      t        d      f}t        ||dd	       y )
NrX   r  r  rJ   r4  r5  r?  r   r[   r  )r?   l1pml1pmrls      r@   test_log1pmorezTestLog1p.test_log1pmore  sO    a '--"4gmmC6HIa&S#c(+f6:rC   N)r3  r4  r5  r  r  r:  rC   r@   r  r    s    9
;rC   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().
    rJ   r   r  h  rX   c                 8    t        j                  |       d   S r;   )r   r)  r  rf   r  s    r@   r  z7ce_fourier_coefficient_using_integral.<locals>.<lambda>      '"5"5aA">q"A rC   r
   r'  weightwvarepsrelr5   r]   r   rg   rf   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HrC   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   rJ   r  r  c                 8    t        j                  |       d   S r;   )r   r/  r  s    r@   r  z7se_fourier_coefficient_using_integral.<locals>.<lambda>  r  rC   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 HrC   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)rH   r  )r
  g      @c                     t        j                  ||      }t        d      D cg c]  }t        |||       }}t	        ||d t        |       d       y c c}w )NrH   rZ   rQ   r   r(   rv   r  r   r  r?   rf   r  Arg   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  )rL   rJ   c                     t        j                  ||      }t        ddd      D cg c]  }t        |||       }}t	        ||d t        |       d       y c c}w NrX   r  rJ   rZ   rQ   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)rJ   r  )r&  rJ   c                     t        j                  ||      }t        dd      D cg c]  }t        |||       }}t	        ||d t        |       d       y c c}w )NrX   r   rZ   rQ   r   r'   rv   r  r   r  r?   rf   r  Brg   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)
r3  r4  r5  r6  r7  r9  r  r  r  r  r:  rC   r@   r  r    s    [[Vh	%:;3 <3 [[Vh%78	3 9	3 [[Vh%89	3 :	3 [[Vh%78	3 9	3rC   r  c                       e Zd Zd Zd Zy)TestFresnelIntegralc                      y ru  r:  r>   s    r@   rR  z$TestFresnelIntegral.test_modfresnelp,  rv  rC   c                      y ru  r:  r>   s    r@   rN  z$TestFresnelIntegral.test_modfresnelm/  rv  rC   N)r3  r4  r5  rR  rN  r:  rC   r@   r  r  *  s    rC   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   rX   )g~T~Oֿgt_J?gm{@g@j'&@rz  r[   )r   
obl_cv_seqr   r   )r?   obls     r@   test_obl_cv_seqzTestOblCvSeq.test_obl_cv_seq4  s3      1Q'U $/ 0 $!		-rC   N)r3  r4  r5  r  r:  rC   r@   r  r  3      -rC   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 )
NrX   r  gQ?gx$(~?gx$(~g(\?rH  r   r[   )r   pbdn_seqr   r   )r?   pbs     r@   test_pbdn_seqz#TestParabolicCylinder.test_pbdn_seq>  sM    a$UF$*$, -"G$*$, -. $!		-rC   c                     t        j                  dd       dt        j                  dd      d   z  t        j                  dd      d   z
   y )NrX   r   r  r   )r   r  r>   s    r@   r  zTestParabolicCylinder.test_pbdvF  s=    Qra#A&&a);A)>>rC   c                     t        j                  dd      }t        j                  dd      }t        |t	        |d         t	        |d         fdd       y )NrX   r  r   rH  r[   )r   r  pbdv_seqr   r   )r?   pbnpbvs      r@   test_pbdv_seqz#TestParabolicCylinder.test_pbdv_seqJ  sI    q$q$d3q6lDQL9QOrC   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   rJ   r   r   r   r'  r(  gGz$@gq=
ףp4@gHQ9r   rQ   g(\#gQ@gkS a>)r]   r8  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WrC   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 NrK  rH   r
  r  r&  r   r  r   rt  rX   r   r(  )r]   r8  r   r  rC  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$7rC   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]   r8  r   r  rC  r   r  s         r@   test_pbvv_gradientz(TestParabolicCylinder.test_pbvv_gradientb  r  rC   c                     t        j                  dd      \  }}t        |t        j                  g d             t        |t        j                  g d             y )NrJ   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 (; < 	=rC   N)
r3  r4  r5  r	  r  r  r  r  r  r  r:  rC   r@   r  r  =  s'    -?P
X88=rC   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 )NrJ   rX   r   gX];rJ  r   r[   gOV,@@)rJ   r   g  8Br   r  rp  )g2}jg.M?g}2;ο)r   	polygammar   r  r]   rr  )r?   poly2poly3r   rf   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>#!	-rC   N)r3  r4  r5  r&  r:  rC   r@   r!  r!  u  s    -rC   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   rX   )g"~j?g6?Ң@g)u8F"@g2g)@rz  r[   )r   
pro_cv_seqr   r   )r?   prols     r@   test_pro_cv_seqzTestProCvSeq.test_pro_cv_seq  s3    !!!Q*e %0 1 $!		-rC   N)r3  r4  r5  r,  r:  rC   r@   r(  r(    r  rC   r(  c                       e Zd Zd Zy)TestPsic                 L    t        j                  d      }t        |ddd       y )NrX   goxr?  r   r[   )r   r  r   )r?   pss     r@   r  zTestPsi.test_psi  s    [[^0vAFrC   N)r3  r4  r5  r  r:  rC   r@   r.  r.    s    GrC   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   rt  rz  r[   r   r  r   r   )r?   rads     r@   r  zTestRadian.test_radian  s&    nnRA&RV&q9rC   c                 d    t        j                  ddd      }t        |t        dz  dz   dd       y )	Nr  rX   rH  rJ   gC?rz  r   r[   r4  )r?   rad1s     r@   test_radianmorezTestRadian.test_radianmore  s,    ~~b!R(bd%::aPrC   N)r3  r4  r5  r  r8  r:  rC   r@   r2  r2    s    :QrC   r2  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)rJ   r   T)
derivativer   rX   r?  r[   )r]   emptyrv   r   spherical_jnr   
riccati_jn)r?   r6  r   Srf   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IrC   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 r<  )r]   r>  rv   r   spherical_ynr   
riccati_yn)r?   r6  r   Crf   r   yps          r@   test_riccati_ynzTestRiccati.test_riccati_yn  rD  rC   N)r3  r4  r5  rC  rJ  r:  rC   r@   r:  r:    s    JJrC   r:  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   iiru     r  g
ףp=@@r#  )g%~B7gpNf7g8B8)gJR{?g6]=gXes>)g n@?@gWH;@glH.=@)g9lchPR@gS@gzsevB@r  rQ   )numpyrc   default_rnguniformstackr&   r   )r?   r]   rj   rf   ro  rp  a3a4rD  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-rC   c                     t        j                  d      dz
  }t        j                  d      }|j                         }|dkD  }t	        |||       t	        ||         ||<   t        ||       y )Nr   rJ   r   )outwhere)r]   r   onescopyr&   r   )r?   r   rW  r  rX  s        r@   test_softplus_with_kwargsz&TestSoftplus.test_softplus_with_kwargs  s]    IIaL1ggajhhjA5)ah'E
S!rC   N)r3  r4  r5  rU  r[  r:  rC   r@   rL  rL    s    .:"rC   rL  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!  mapru   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%rC   N)r3  r4  r5  r  r:  rC   r@   r]  r]    s    &rC   r]  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   rM   r   rJ   rX   r  )	r   r   rB  rC  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|rC   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  rM   r   rX   r  rW     )rX   r&     r.  rT   r   r(  N)re  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rC   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 )Nrg  r.  g;cv=?r  rQ   gQ g< j?r  r  r  g?r   g       igzz?rk  i)   r   rX  r  gffffffrM   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1rC   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	9rC   N)r#  )r3  r4  r5  re  rj  rm  ro  r:  rC   r@   rc  rc    s    W29rC   rc  c                  J    t        t        j                  dd      ddd       y )Nr  r   gdX	
?r   r   r[   )r   r   r   r:  rC   r@   test_chi2_smalldfrq    s    GMM#q)+<6PQRrC   c                  `    t        t        j                  dt        j                        d       y )Nr  r   )r   r   r   r]   r   r:  rC   r@   test_ch2_infrs  !  s    s266*C0rC   r   r   rM  r   c                 v    t        j                  t        j                  t         j                  |             sJ y ru  r]   r   r   r   r  r=  s    r@   test_chi2_v_nanrv  %  s#    88GMM"&&!,---rC   rJ  c                 v    t        j                  t        j                  | t         j                              sJ y ru  ru  rJ  s    r@   test_chi2_x_nanry  *  s#    88GMM!RVV,---rC   c                 v    t        j                  t        j                  t         j                  |             sJ y ru  r]   r   r   r   r  r=  s    r@   test_chi2c_v_nanr|  /  s#    88GNN2661-...rC   c                 v    t        j                  t        j                  | t         j                              sJ y ru  r{  rx  s    r@   test_chi2c_x_nanr~  4  s#    88GNN1bff-...rC   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   rA  rX   rJ   )r]   r   r   r   r   r/  r  r  r   r  r   r   rS  	gammainccr   rY  )rJ  r   r  r  s       r@   test_chi2_edgecases_gh20972r  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<rC   c                  J    t        t        j                  dd      ddd       y )Nr  r   yj_?r   r   r[   )r   r   r   r:  rC   r@   test_chi2c_smalldfr  N  s    GNN3*,Aa)rC   c                  J    t        t        j                  dd      ddd       y )Nr  r  r   r   r   r[   )r   r   r   r:  rC   r@   test_chi2_inv_smalldfr  S  s    GNN3(=>a)rC   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 )'NrP   rX   rJ   gDSYC?rQ   gQ_?g?@g>;,
i}@r   )rX   r   r   g=O?rM   r  r   rN   gXs*@r  g   V4oAgO1eAgꌠ9Y>)FgEg^ 9^;gd-?gP.5_gsTNNeg6dgu?j/ g]XC}KdgѧRg"!x{{ r   g][#!Rr  gٍS1gN_ r   r<  r&  )r   r   agmr]   r   r   r  r#  r   r  r   )rR   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3rC   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  rX   r  g?rJ   gffffff@)r  r  r  r  r   r   expnrZ  rW  r]  r  r  r$  r  r  r:  rC   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 r;   )	threadingLock)r  s    r@   errstate_lockr    s    >>rC   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  rX   y        .B}T)r   r  rs  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   rt  r  )r   r  )rX   r  rX   rP   r(  )
r]   r   r  r   rw   r   r}   r3   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DrC   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  )rX   gKH9r  rX   rP   r(  )	r]   r   r  r   rw   r}   r3   r   xlog1py)r  r  r  s      r@   test_xlog1pyr    su    ' 
UQK!RVVj!(-
/B	e	R!Wb1g	.Bgoor2EFrC   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 r;   )r]   r   r   r  r=  s    r@   r  ztest_entr.<locals>.xfunc  s(    q5FF7NMM!Q'''rC   r   r   r   rM   rX   r  otypesrP   r(  )r]   r   r[  r\  r  r   rw   r}   r   r3   r   entr)r  r  signsr  sgnrJ  r!  r1  s           r@   	test_entrr    s    (
 c266"FGE
C##E62 Q

37
E"A0UBJJ<03AgllAqu5ArC   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 r;   )r]   r   r\  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0rC   r   r   r   rM   rX   r  r  r   rP   r(  )r[  r\  r  r]   r   rw   r}   r   r3   r   kl_div
r  r  r  r  sgnavasgnbvbr!  r1  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CrC   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 r;   )r   r  r]   r   r  s     r@   r  ztest_rel_entr.<locals>.xfunc  s=    q5QU==AaC((!VQ66MrC   r  rM   rX   r  r  r   rP   r(  )r[  r\  r  r]   r   rw   r}   r   r3   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ErC   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   rX   rP   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IrC   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  ))rH   X )r  gZbti)r  g  4&kC)gMG.@g)Z?g wa)r   rX   rP   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IrC   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 )NrM   r  rJ   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   rC  squaredeltarO  s     r@   r  ztest_huber.<locals>.xfunc8  sQ    1966MVVAY1%%BFF1Ie344rC   r&  r  r   rX   rP   r(  )r   r   huberr]   r   r   r  rc   randnr}   r   r3   r  r!  r1  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BrC   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   rJ   rX   )r]   r   r   r  s     r@   r  z test_pseudo_huber.<locals>.xfuncF  sD    1966M!8rwwqAeGa<'781<==rC   r&  rJ   r   r   r  rX   rP   r(  )
r]   r   rc   r  tolistr}   r   r3   r   pseudo_huberr  s      r@   test_pseudo_huberr  E  s    > 	Q'..0QHsAh3GGHA0UBJJ<01Q31Q3@Ag**Aqu5IrC   c                  X    d} d}t        j                  | |      }d}t        ||d       y )Nr   gC]r2<gs.-De8rP   rQ   )r   r  r   )r  rO  r   r"  s       r@   test_pseudo_huber_small_rr  S  s1    EAUA&A &HAxe,rC   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  rU   )r6  warnsr  r'   r(   r:  rC   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&)'TestStirling2rX   r   )r   rX   rX   )r   rX   r   rX   )r   rX   rL   rN   rX   )r   rX   r|   r   r&  rX   )r   rX      r  A   r|   rX   )r   rX   ?   r  i^     r.  rX   )	r   rX      i  i    i
     rX   )
r   rX      i  iZ  i'  iV
  i  $   rX   )r   rX   r   r$  i9  i  i+Y    i  r   rX   zis_exact, comp, kwargsTFrR   r   c           	          t        dt        | j                              D ]?  }t        t        |dz               }| j                  |   } ||t	        |g||      fi | A y )NrX   r  )rv   r  tabler!  r)   )r?   is_exactcompkwargsrf   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rC   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  rH   rJ   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&ArC   c                      |t        dd|      dfi |  |t        dd|      dfi |  |t        dd|      dfi | y )NrM   r  r   rJ   r)   r  s       r@   test_negative_integerz#TestStirling2.test_negative_integer  sL     	Yr2X.<V<Yr1H-q;F;Yq"H-q;F;rC   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   rH   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%-/ 	rC   rP   c                 H    g d}g d}g d} |t        |||      |fi | y )N)r   rX   r   r   r  r  r  )rM   r   r   r   r
  r&  r&  )r  r   rJ   r   r   rL   r   r  r  r?   r  r  r  r  rf   rg   s          r@   test_mixed_valueszTestStirling2.test_mixed_values  s+     .$"Yq!8,c<V<rC   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  rJ   rX   N)r]   r   r   r)   r  r   )r?   rf   Krg   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   rT   rI   rH   Tr  l	   D,"SBXp!N l   wY)H_1e_*   r:     )r   r   r)   )r?   r  rf   rg   s       r@   test_big_numberszTestStirling2.test_big_numbers  s}    ~'89:HG9Q6<<<<:< =HH9Q6<<<rC   r6  r  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  )r6  r   	TypeErrorr)   )r?   r6  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)NrH   rX   rH   rH   rH   rH   r  rX   rJ   r   rH   r  )r   r  r  r6  r   r	  r   r)   )r?   r  r  rf   rg   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              }t        g dt              } |t        ||d      |fi | y )NrH   rX   r	  r  r	  Fr  )r   r  r+   r)   r  s          r@   #test_numpy_array_unsigned_int_dtypez1TestStirling2.test_numpy_array_unsigned_int_dtype  sM     djjmAB'(L1L1Yq!5)39&9rC   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)rX   r|   r   r&  )rX   rL   rN   rX   )r   r   r   r   r	  r	  r  rH   )r   rX   rJ   r   rH   r   r   )r   rX   rL   rN   rX   r   F)r   r)   rv   )r?   r  r  r  r  rf   rg   rY  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   rX   Tr  Fgh㈵>)r!  rv   r)   r]   r#  rC  )r?   r   rf   	k_entriesdenomrx   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		6rC   N)r3  r4  r5  r  r6  r7  r9  r   r   r  r  r  r  r  r 	  r	  r]   r  r		  r	  r	  r	  r	  r:  rC   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 :	:6rC   r  ru  )r  r[  r  r  r  r  rO  r]   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r6  r   rs  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._utilr*   r+   scipy._lib._array_apir,   r-   r.   scipy.special._basicr/   r0   r1   scipy.special._testutilsr2   r3   r4   scipy.integrater5   r  architecturer  r(  r]  r9   r<  rk  rs  rx  r  r  r  r  rH  r}  r  r  r  r  r  r#  rB  rF  r
  r$  rA  r`  r  r  r  r  r  r  r  r  r  r  r!  r(  r.  r2  r:  rL  r]  rc  rq  rs  r7  r9  r  rv  ry  r|  r~  r  r  r  r  r  fixturer  r  r  r  r  r  r  r  r  r  r  r  r  r  r:  rC   r@   <module>r#	     s>  "     
         *L L  & & 2 2 E E " H H . S S ! !    LLGxq!W, XX 
xx n9 n9b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]. ].@Q	4 Q	4h? ?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 [6rC   