
    e!h~                    $   d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlZd dlmZ d dlmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z' d dl(m)Z) d dl*m)c m+Z, d dl-m.Z.m/Z/m0Z0 d dl-m1Z1m2Z2m3Z3m4Z4m5Z5 d dl-m6Z6 d d	l-m7Z7m8Z8m9Z9 d d
l-m:Z:m;Z;m<Z< d dl=m>Z>m?Z? d dl@mAZAmBZBmCZC d dlDmEZEmFZFmGZG d dlHmIZImJZJmKZK d dlLZLej                  dk(  s ej                         d    dk(  rej                  nej                  ZP G d d      ZQ G d d      ZR G d d      ZS G d d      ZT G d d      ZU G d d      ZV G d d      ZW G d d       ZX G d! d"      ZY G d# d$      ZZ G d% d&      Z[ G d' d(      Z\ G d) d*      Z] G d+ d,      Z^ G d- d.      Z_ G d/ d0      Z` G d1 d2      Zadwd3Zb G d4 d5      Zc G d6 d7      Zd G d8 d9      Ze G d: d;      Zf G d< d=      Zg G d> d?      Zh G d@ dA      Zi G dB dC      Zj G dD dE      Zk G dF dG      Zl G dH dI      Zm G dJ dK      Zn G dL dM      Zo G dN dO      Zp G dP dQ      Zq G dR dS      Zr G dT dU      Zs G dV dW      Zt G dX dY      Zu G dZ d[      Zvd\ Zwd] Zx G d^ d_      Zyd` Zzda Z{db Z|dc Z}dd Z~de Zej                   df        ZeIdg        Zdh Zdi Zdj Zdk Zdl Zdm Zdn Zdo Zdp Zdq Zej                  j                  dr        Z G ds dt      Z G du dv      Zy)x    N)arrayisnanr_arangefinfopisincostanexplogzerossqrtasarrayinf
nan_to_numrealarctandoublearray_equal)raises)	assert_equalassert_almost_equalassert_array_equalassert_array_almost_equalassert_approx_equalassert_assert_allcloseassert_array_almost_equal_nulpsuppress_warnings)special)ellipeellipkellipkm1)elliprcelliprdelliprfelliprgelliprj)softplus)mathieu_odd_coefmathieu_even_coef	stirling2)lpnlpmnclpmn)np_longnp_ulong)xp_assert_closexp_assert_equalSCIPY_ARRAY_API)_FACTORIALK_LIMITS_64BITS_FACTORIALK_LIMITS_32BITS_is_subdtype)with_special_errorsassert_func_equalFuncDatawin3232bitc                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/e0jb                  je                  d./      d0        Z3d1 Z4d2 Z5d3 Z6e0jb                  je                  d4/      d5        Z7d6 Z8d7 Z9d8 Z:d9 Z;d: Z<d; Z=d< Z>d= Z?d> Z@d? ZAd@ ZBdA ZCdB ZDdC ZEdD ZFdE ZGdF ZHdG ZIdH ZJdI ZKdJ ZLdK ZMdL ZNdM ZOdN ZPdO ZQdP ZRdQ ZSdR ZTdS ZUdT ZVdU ZWdV ZXdW ZYdX ZZdY Z[dZ Z\d[ Z]d\ Z^d] Z_d^ Z`d_ Zad` Zbda Zcdb Zddc Zedd Zfde Zgdf Zhdg Zidh Zjdi Zkdj Zldk Zmdl Zndm Zodn Zpdo Zqdp Zrdq Zsdr Ztds Zudt Zvdu Zwdv Zxdw Zydx Zzdy Z{dz Z|d{ Z}d| Z~d} Zd~ Zd Zd Zd Zd Ze0jb                  je                  d/      d        Ze0jb                  je                  d/      d        Ze0jb                  je                  d/      d        Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)
TestCephesc                 .    t        j                  d       y Nr   )cephesairyselfs    f/var/www/html/diagnosisapp-backend/venv/lib/python3.12/site-packages/scipy/special/tests/test_basic.py	test_airyzTestCephes.test_airy@       A    c                 .    t        j                  d       y rA   )rB   airyerD   s    rF   
test_airyezTestCephes.test_airyeC   s    QrI   c           	         t        j                  g d      }t        j                  g d      }t        j                  t        j                  |d d d f   |d d d f               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
@rP   )g޸g	TշJ?g	7?geLF)   g*+ @r   gM{@)gףp=
%@gϔ>@g<wg$@)   g,y3@iK  g5@vIh%<=rtol  i       r   f           ?绽|=atolrX   )npr   broadcast_arraysreshapeTr:   rB   binomravelrandomRandomStater   r   rand)rE   nknkrknownrngs         rF   
test_binomzTestCephes.test_binomF   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	2rI   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 )NrY   r^   ,     r   r]   rP   rS   r_   r`   ra   )rc   ri   seedr   logspacer   r   rd   re   rf   r:   rB   rg   )rE   rl   rm   rn   s       rF   test_binom_2zTestCephes.test_binom_2]   s    
		tEE"++ab)*IIaXXb))!AdF)QtAvY? 2qq 	 	&,, ,,r!A#w1Q390EF$5	2rI   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 Nr^   )intrangefloat)rl   rm   numdenis        rF   	binom_intz.TestCephes.test_binom_exact.<locals>.binom_intk   sb    AAAACC1ac] q1uqy q S>!rI   rY   r^      r   rP   rS   ra   )rc   	vectorizeri   ru   r   r   rd   re   rf   r:   rB   rg   )rE   r   rl   rm   rn   s        rF   test_binom_exactzTestCephes.test_binom_exactj   s    		" 
	" 			tIIaIIaXXb))!AdF)QtAvY? 2qq 	1Q32ac7"#&,,#BqsGR!W5 q	*rI   c                     g d}t        j                  |      }t        t        j                  |ddd      j                          y )N))r[   r\   gwP~)i  i  gii9~)i  i  gyhY~)i  i  gpvy~)i  i  gzN~)i  i  gGTɳ~)i  i  g@jH~)i  i  gF:aYͦ~)i  i  gɸV)i  i  g
{9)i  i  gyVxY)i    g*I y)i   i   gI)i  i  gW@N)i  i  g5y)r   r^   rP   -q=rW   )rc   r   r;   rB   rg   check)rE   datasets     rF   test_binom_nooverflow_8346z%TestCephes.test_binom_nooverflow_8346   s6    
" **W%w>DDFrI   c                 F    t        t        j                  ddd      d       y )Nr^         ?      ?)r   rB   bdtrrD   s    rF   	test_bdtrzTestCephes.test_bdtr   s    V[[1S)#.rI   c                 F    t        t        j                  ddd      d       y Nr^      r   )r   rB   bdtrirD   s    rF   
test_bdtrizTestCephes.test_bdtri       V\\!Ac*3/rI   c                 F    t        t        j                  ddd      d       y r   )r   rB   bdtrcrD   s    rF   
test_bdtrczTestCephes.test_bdtrc   r   rI   c                 F    t        t        j                  ddd      d       y Nr^   r         @)r   rB   bdtrinrD   s    rF   test_bdtrinzTestCephes.test_bdtrin       V]]1Qq)#.rI   c                 2    t        j                  ddd       y r   )rB   bdtrikrD   s    rF   test_bdtrikzTestCephes.test_bdtrik   s    a#rI   c                 B    t        t        j                  d      d       y Nr           )r   rB   beirD   s    rF   test_beizTestCephes.test_bei       VZZ]3'rI   c                 B    t        t        j                  d      d       y r   )r   rB   beiprD   s    rF   	test_beipzTestCephes.test_beip       V[[^C(rI   c                 B    t        t        j                  d      d       y Nr   r   )r   rB   berrD   s    rF   test_berzTestCephes.test_ber   r   rI   c                 B    t        t        j                  d      d       y r   )r   rB   berprD   s    rF   	test_berpzTestCephes.test_berp   r   rI   c                 F    t        t        j                  ddd      d       y r   )r   rB   
besselpolyrD   s    rF   test_besselpolyzTestCephes.test_besselpoly   s    V&&q1-c2rI   c                 F    t        t        j                  ddd      d       y Nr^   r   )r   rB   btdtriarD   s    rF   test_btdtriazTestCephes.test_btdtria       V^^Aa*3/rI   c                 F    t        t        j                  ddd      d       y r   )r   rB   btdtribrD   s    rF   test_btdtribzTestCephes.test_btdtrib   r   rI   c                 B    t        t        j                  d      d       y Nr^   r   )r   rB   cbrtrD   s    rF   	test_cbrtzTestCephes.test_cbrt   s    FKKN3/rI   c                 D    t        t        j                  dd      d       y Nr^   r   r   )r   rB   chdtrrD   s    rF   
test_chdtrzTestCephes.test_chdtr   s    V\\!A&s+rI   c                 D    t        t        j                  dd      d       y Nr^   r   r   )r   rB   chdtrcrD   s    rF   test_chdtrczTestCephes.test_chdtrc       V]]1Q',rI   c                 D    t        t        j                  dd      d       y Nr^   r   )r   rB   chdtrirD   s    rF   test_chdtrizTestCephes.test_chdtri   r   rI   c                 D    t        t        j                  dd      d       y )Nr   r   )r   rB   chdtrivrD   s    rF   test_chdtrivzTestCephes.test_chdtriv   s    V^^Aa(-rI   c                    t        t        j                  ddd      d       t        j                  g dg dg dg dg dg d	g d
g dg dg dg dg dg dg      }t        j                  |d d df   |d d df   |d d df         }t        ||d d df   d       t        t        j                  t        j                  t        j                  d      d       t        t        j                  ddt        j                        d       t        t        j                  t        j                  t        j                  dd                   t        t        j                  t        j                  dt        j                  d                   t        t        j                  t        j                  ddt        j                                     y )Nr   r^   r   )      9@      4@  gL94)r          @   g7Fh9)gMbP?r         D@ggåc;){Gz?r   r   g	;)r          @k   g8x@x>)g     6@r   r   gg1\>>)r   r   r   g`>)      @r   r   gp!P?)g     u@g     r@      $@g j
?)      Y@      +@r   g]?)g     @r   r   g4ۙ?)g     b@r   r   g?)g      d@r   r   r   rP   r   r   rW   r      )r   rB   chndtrrc   r   r   r   r   r   r   nan)rE   valuescdfs      rF   test_chndtrzTestCephes.test_chndtr   s5   V]]1Qq)#.
 999:999666666
  mmF1a4L&A,q!tEVAqD\6FMM"&&"&&!<cBFMM!Q7=rvvq!456q"&&!456q!RVV456rI   c                 F    t        t        j                  ddd      d       y Nr   r^   r   )r   rB   	chndtridfrD   s    rF   test_chndtridfzTestCephes.test_chndtridf       V%%a!,S1rI   c                 F    t        t        j                  ddd      d       y r   )r   rB   	chndtrincrD   s    rF   test_chndtrinczTestCephes.test_chndtrinc   r   rI   c                 F    t        t        j                  ddd      d       y Nr   r^   r   )r   rB   chndtrixrD   s    rF   test_chndtrixzTestCephes.test_chndtrix       V__Qq+C0rI   c                 B    t        t        j                  d      d       y r   )r   rB   cosdgrD   s    rF   
test_cosdgzTestCephes.test_cosdg       V\\!_S)rI   c                 B    t        t        j                  d      d       y r   )r   rB   cosm1rD   s    rF   
test_cosm1zTestCephes.test_cosm1   r   rI   c                 B    t        t        j                  d      d       y N-   r   )r   rB   cotdgrD   s    rF   
test_cotdgzTestCephes.test_cotdg   s    FLL,S1rI   c                     t        t        j                  d      d       t        t        j                  d      d       y )Nr   r   gGz?gf?)r   rB   dawsnr   rD   s    rF   
test_dawsnzTestCephes.test_dawsn   s(    V\\!_S)T*,?@rI   c                 $   g d}t        j                  dt         j                  z  dz         j                  t         j                        }t        t        j                  ||      dd       t        j                  dt         j                  z  dz         j                  t         j                        }t        t        j                  ||      dd       t        j                  dt         j                  z  d	z         j                  t         j                        }t        t        j                  ||      dd       t        t         d
      rht        j                  dt         j                  z  dz         j                  t         j                        }t        t        j                  ||      dd       g d}t        j                  dt         j                  z  dz         j                  t         j                        }t        t        j                  ||      dd       t        j                  dt         j                  z  dt         j                  z  dt         j                  z        }g d}t        t        j                  |d      |d       y )N)r^   r      rP   g-C6
?r   rR   decimal&.>r   V瞯<float128r      )rP   rN            皙?)gg?gsOB?gsaL?g
7I^ʿr   )rc   r   r   astypefloat32r   r!   diricfloat64hasattrr  r   )rE   n_oddxn_evenoctave_results        rF   
test_diriczTestCephes.test_diric   s    HHQruuWt^$++BJJ7GMM!U3S!DHHQruuWt^$++BJJ7GMM!U3S"EHHQruuWu_%,,RZZ8GMM!U3S"E2z"2555)00=Aa 7bIHHQruuWt^$++BJJ7GMM!V4dBG IIc"%%iRUUCI6@GMM!Q/KrI   c                 
   t        j                  d      }t        j                  g d      }t        t	        j
                  |d d t         j                  f   |      j                  |j                  |j                  fk(         y )Nr   )r^   r   rR   )	rc   r   r   r   r!   r  newaxisshapesize)rE   r  rl   s      rF   test_diric_broadcastingz"TestCephes.test_diric_broadcasting  sU    IIaLHHYa2::.288QVVQVV<LLMrI   c                 B    t        t        j                  d      d       y r   )r   rB   r"   rD   s    rF   test_ellipezTestCephes.test_ellipe      V]]1%c*rI   c                 D    t        t        j                  dd      d       y r   )r   rB   	ellipeincrD   s    rF   test_ellipeinczTestCephes.test_ellipeinc      V%%a*3/rI   c                 0    t        j                  dd       y Nr   r^   )rB   ellipjrD   s    rF   test_ellipjzTestCephes.test_ellipj"  s    arI   c                 <    t        t        d      t        dz         y )Nr   rP   )r   r#   r   rD   s    rF   test_ellipkzTestCephes.test_ellipk%  s    q	2a4(rI   c                 D    t        t        j                  dd      d       y r   )r   rB   	ellipkincrD   s    rF   test_ellipkinczTestCephes.test_ellipkinc(  r"  rI   c                 B    t        t        j                  d      d       y r   r   rB   erfrD   s    rF   test_erfzTestCephes.test_erf+  s    VZZ]C(rI   c                 t    d}t        t        j                  |      t        j                  |       z   d       y )Ng#8x@r   r-  rE   r  s     rF   test_erf_symmetryzTestCephes.test_erf_symmetry.  s(    VZZ]VZZ^3S9rI   c                 B    t        t        j                  d      d       y r   )r   rB   erfcrD   s    rF   	test_erfczTestCephes.test_erfc2  s    V[[^S)rI   c                 B    t        t        j                  d      d       y )NrP   r   )r   rB   exp10rD   s    rF   
test_exp10zTestCephes.test_exp105  s    FLLOE2rI   c                 B    t        t        j                  d      d       y )NrP         @)r   rB   exp2rD   s    rF   	test_exp2zTestCephes.test_exp28  r   rI   c                    t        t        j                  d      d       t        t        j                  t        j                        t        j                         t        t        j                  t        j                         d       t        t        j                  t        j
                        t        j
                         y )Nr   r   rS   )r   rB   expm1rc   r   r   rD   s    rF   
test_expm1zTestCephes.test_expm1;  sc    V\\!_S)V\\"&&)2662V\\266'*B/V\\"&&)2662rI   c                 	   t         j                  }t         |d      d       t         |t        t        j
                  d            t        t        j
                  d             t         |t        t        j
                  d            t        t        j
                  t        j
                               t         |t        t        j
                  d            t        t        j
                   t        j
                               t         |t        t        j
                  d            t        t        j
                   t        j
                                t         |t        t        j
                  d            t        t        j
                  t        j
                                t         |t        dt        j
                              t        t        j                  t        j                               t         |t        dt        j
                              t        t        j                  t        j                               t         |t        t        j
                  t        j
                              t        t        j
                  t        j                               t         |t        t        j
                   t        j
                              t        dd             t         |t        t        j
                   t        j                              t        dd             t         |t        t        j
                  t        j                              t        t        j
                  t        j                               t         |t        dt        j                              t        t        j                  t        j                               t         |t        dt        j                              t        t        j                  t        j                               t         |t        t        j                  d            t        t        j                  t        j                               t         |t        t        j                  t        j                              t        t        j                  t        j                               y )N                r   r^   rP   rN   r   rS   )rB   r>  r   complexrc   r   r   )rE   r>  s     rF   test_expm1_complexzTestCephes.test_expm1_complexA  s   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MrI   z-The real part of expm1(z) bad at these pointsreasonc                 p   t        j                  g d      }t        j                  t        j                  |             }|d|z  z   }t        j                  g d      }t	        j
                  |      }t        |j                  |j                  d       t        |j                  |j                  d       y )N)皙?r  333333?r      rt                 ?)y=Cw?yC7gg)gF<Ug?yQ<D*?yg:><sKy>񸣼$	Um>ly;Vl <@r   rt   )	rc   r   r   r
   rB   r>  r   imagr   )rE   yr  zexpectedfounds         rF   test_expm1_complex_hardz"TestCephes.test_expm1_complex_hardT  s     HH/0VVBFF1I1H 88 J K Q&uzz8==!D&uzz8=="ErI   c                     t        t        j                  ddd      d       t        t        j                  ddd      dd	       y )
Nr^   r   r   ư>r   
   g2?r   rW   )r   rB   fdtrr   rD   s    rF   	test_fdtrzTestCephes.test_fdtri  s6    V[[Aq)3/D!R02D"	$rI   c                     t        t        j                  ddd      d       t        t        j                  ddd      dd	       y )
Nr^   r   r   rP   rG  g    _BgDIXl?r   rW   )r   rB   fdtrcr   rD   s    rF   
test_fdtrczTestCephes.test_fdtrco  s8    V\\!Q*C0 	QT24G"	$rI   c                     t        t        j                  ddddg      t        ddg      d       d}t        t        j                  d	d|      d
d       y )Nr^   gV-?gx&1?g
}?g<zO'?rR  rW   g׀?rG  r   r   )r   rB   fdtrir   )rE   ps     rF   
test_fdtrizTestCephes.test_fdtriv  sM    QE5>:y*56T	C %S!Q/?rI   zReturns nan on i686.c                 F    t        t        j                  ddd      d       y )Nr^   r   )r   rB   rZ  rD   s    rF   test_fdtri_mysterious_failurez(TestCephes.test_fdtri_mysterious_failure~  s    Q3/3rI   c                 F    t        t        j                  ddd      d       y r   )r   rB   fdtridfdrD   s    rF   test_fdtridfdzTestCephes.test_fdtridfd  r   rI   c                 B    t        t        j                  d      d       y Nr   r   r   )r   rB   fresnelrD   s    rF   test_fresnelzTestCephes.test_fresnel  s    V^^A&y1rI   c                 B    t        t        j                  d      d       y Nr         8@)r   rB   gammarD   s    rF   
test_gammazTestCephes.test_gamma  s    V\\!_T*rI   c                 D    t        t        j                  dd      d       y )Nr   r^   r   )r   rB   gammainccinvrD   s    rF   test_gammainccinvzTestCephes.test_gammainccinv  s    V((1-c2rI   c                 .    t        j                  d       y )NrS  )rB   gammalnrD   s    rF   test_gammalnzTestCephes.test_gammaln  s    rrI   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   r^   g@r   r  )rc   r   r   r  r   r   rB   gammasgn)rE   vals	references      rF   test_gammasgnzTestCephes.test_gammasgn  s    xxffWb$dCC@"**
 HHVVRVVS$c3SA2::
	 	6??40)<rI   c                 F    t        t        j                  ddd      d       y r   )r   rB   gdtrrD   s    rF   	test_gdtrzTestCephes.test_gdtr      V[[1Q',rI   c                 b    t        t        j                  ddt        j                        d       y r   )r   rB   r{  rc   r   rD   s    rF   test_gdtr_infzTestCephes.test_gdtr_inf  s    V[[1RVV,S1rI   c                 F    t        t        j                  ddd      d       y r   )r   rB   gdtrcrD   s    rF   
test_gdtrczTestCephes.test_gdtrc      V\\!Aa(-rI   c                 F    t        t        j                  ddd      d       y r   )r   rB   gdtriarD   s    rF   test_gdtriazTestCephes.test_gdtria  r   rI   c                 2    t        j                  ddd       y Nr^   r   )rB   gdtribrD   s    rF   test_gdtribzTestCephes.test_gdtrib  s    a!rI   c                 2    t        j                  ddd       y Nr^   rG  )rB   gdtrixrD   s    rF   test_gdtrixzTestCephes.test_gdtrix  s    a"rI   c                 0    t        j                  dd       y rz   )rB   hankel1rD   s    rF   test_hankel1zTestCephes.test_hankel1      qrI   c                 0    t        j                  dd       y rz   )rB   hankel1erD   s    rF   test_hankel1ezTestCephes.test_hankel1e      !rI   c                 0    t        j                  dd       y rz   )rB   hankel2rD   s    rF   test_hankel2zTestCephes.test_hankel2  r  rI   c                 0    t        j                  dd       y rz   )rB   hankel2erD   s    rF   test_hankel2ezTestCephes.test_hankel2e  r  rI   c                     t        t        j                  ddd      t        d             t        t        j                  ddd      d       t        j                  ddd       y )Nr^   r   r   rN   g㈮?)r   rB   hyp1f1r   rD   s    rF   test_hyp1f1zTestCephes.test_hyp1f1  sE    FMM!Aa0#c(;FMM!Ab13JKa!rI   c                 H    t        t        j                  dddd      d       y r   )r   rB   hyp2f1rD   s    rF   test_hyp2f1zTestCephes.test_hyp2f1      V]]1Qq+C0rI   c                 B    t        t        j                  d      d       y r   )r   rB   i0rD   s    rF   test_i0zTestCephes.test_i0      VYYq\#&rI   c                 B    t        t        j                  d      d       y r   )r   rB   i0erD   s    rF   test_i0ezTestCephes.test_i0e  r   rI   c                 B    t        t        j                  d      d       y r   )r   rB   i1rD   s    rF   test_i1zTestCephes.test_i1  r  rI   c                 B    t        t        j                  d      d       y r   )r   rB   i1erD   s    rF   test_i1ezTestCephes.test_i1e  r   rI   c                 .    t        j                  d       y rz   )rB   it2i0k0rD   s    rF   test_it2i0k0zTestCephes.test_it2i0k0      qrI   c                 .    t        j                  d       y rz   )rB   it2j0y0rD   s    rF   test_it2j0y0zTestCephes.test_it2j0y0  r  rI   c                 .    t        j                  d       y rz   )rB   
it2struve0rD   s    rF   test_it2struve0zTestCephes.test_it2struve0  s    !rI   c                 .    t        j                  d       y rz   )rB   itairyrD   s    rF   test_itairyzTestCephes.test_itairy      arI   c                 B    t        t        j                  d      d       y rc  )r   rB   iti0k0rD   s    rF   test_iti0k0zTestCephes.test_iti0k0      V]]1%i0rI   c                 B    t        t        j                  d      d       y rc  )r   rB   itj0y0rD   s    rF   test_itj0y0zTestCephes.test_itj0y0  r  rI   c                 B    t        t        j                  d      d       y r   )r   rB   itmodstruve0rD   s    rF   test_itmodstruve0zTestCephes.test_itmodstruve0  s    V((+C0rI   c                 B    t        t        j                  d      d       y r   )r   rB   	itstruve0rD   s    rF   test_itstruve0zTestCephes.test_itstruve0  s    V%%a(-rI   c                 D    t        t        j                  dd      d       y r   )r   rB   ivrD   s    rF   test_ivzTestCephes.test_iv      VYYq^C(rI   c                 D    t        t        j                  dd      d       y r   )r   rB   iverD   s    rF   test_ivezTestCephes.test_ive      VZZ!_S)rI   c                 B    t        t        j                  d      d       y r   )r   rB   j0rD   s    rF   test_j0zTestCephes.test_j0  r  rI   c                 B    t        t        j                  d      d       y r   )r   rB   j1rD   s    rF   test_j1zTestCephes.test_j1  r  rI   c                 D    t        t        j                  dd      d       y r   )r   rB   jnrD   s    rF   test_jnzTestCephes.test_jn  r  rI   c                 D    t        t        j                  dd      d       y r   )r   rB   jvrD   s    rF   test_jvzTestCephes.test_jv  r  rI   c                 D    t        t        j                  dd      d       y r   )r   rB   jverD   s    rF   test_jvezTestCephes.test_jve  r  rI   c                 .    t        j                  d       y NrP   )rB   k0rD   s    rF   test_k0zTestCephes.test_k0      		!rI   c                 .    t        j                  d       y r  )rB   k0erD   s    rF   test_k0ezTestCephes.test_k0e      

1rI   c                 .    t        j                  d       y r  )rB   k1rD   s    rF   test_k1zTestCephes.test_k1   r  rI   c                 .    t        j                  d       y r  )rB   k1erD   s    rF   test_k1ezTestCephes.test_k1e  r  rI   c                 .    t        j                  d       y r  )rB   keirD   s    rF   test_keizTestCephes.test_kei  r  rI   c                 B    t        t        j                  d      d       y r   )r   rB   keiprD   s    rF   	test_keipzTestCephes.test_keip	  r   rI   c                 .    t        j                  d       y r  )rB   kerrD   s    rF   test_kerzTestCephes.test_ker  r  rI   c                 .    t        j                  d       y r  )rB   kerprD   s    rF   	test_kerpzTestCephes.test_kerp  rH   rI   c                 .    t        j                  d       y r  )rB   kelvinrD   s    rF   test_kelvinzTestCephes.test_kelvin  r  rI   c                 0    t        j                  dd       y rz   )rB   knrD   s    rF   test_knzTestCephes.test_kn      		!ArI   c                     t        t        j                  d      d       t        t	        j
                  t        j                  t        j                                     y r   )r   rB   kolmogir   rc   r   r   rD   s    rF   test_kolmogizTestCephes.test_kolmogi  s3    V^^A&s+/01rI   c                 B    t        t        j                  d      d       y r   )r   rB   
kolmogorovrD   s    rF   test_kolmogorovzTestCephes.test_kolmogorov  s    V&&q)3/rI   c                 B    t        t        j                  d      d       y )Nr   ru  )r   rB   _kolmogprD   s    rF   test_kolmogpzTestCephes.test_kolmogp  s    V__Q'.rI   c                 B    t        t        j                  d      d       y r   )r   rB   _kolmogcrD   s    rF   test_kolmogczTestCephes.test_kolmogc"  s    V__Q'-rI   c                     t        t        j                  d      d       t        t	        j
                  t        j                  t        j                                     y r   )r   rB   	_kolmogcir   rc   r   r   rD   s    rF   test_kolmogcizTestCephes.test_kolmogci%  s7    V%%a(#.))"&&123rI   c                 0    t        j                  dd       y rz   )rB   kvrD   s    rF   test_kvzTestCephes.test_kv)  r  rI   c                 0    t        j                  dd       y rz   )rB   kverD   s    rF   test_kvezTestCephes.test_kve,      

1QrI   c                 &   t         j                  }t         |d      d       t         |d      t        j                          t         |d      t        j
                         t         |t        j                        t        j                         y )Nr   r   rS   )rB   log1pr   rc   r   r   )rE   r  s     rF   
test_log1pzTestCephes.test_log1p/  sU    U1Xs#U2Y(U2Y'U266]BFF+rI   c           	      "   t         j                  }t        }t         |d      d       t         | |dd             |t        j
                   d             t               5 }|j                  t        d       t         | |dt        j
                               |t        j
                  t        j                  dz               t         | |dt        j                               |t        j                  t        j                               t         | |t        j
                   d             |t        j
                  t        j                               t         | |t        j
                  d             |t        j
                  d             t         | |t        j
                   t        j
                               |t        j
                  dt        j                  z  dz               t         | |t        j
                  t        j
                               |t        j
                  t        j                  dz               t         | |t        j
                  t        j                               |t        j
                  t        j                               t         | |t        j
                   t        j                               |t        j
                  t        j                               t         | |t        j                  t        j
                               |t        j
                  t        j                               t         | |t        j                  d             |t        j                  t        j                               t         | |t        j                  t        j                               |t        j                  t        j                               d d d        y # 1 sw Y   y xY w)	NrA  rS   r   z%invalid value encountered in multiplyr^   rP   r   rN   )rB   r  rB  r   rc   r   r    filterRuntimeWarningr   r   r   )rE   r  csups       rF   test_log1p_complexzTestCephes.test_log1p_complex6  sU   U6]F+U1R8_am4  	FCJJ~'NO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   r^   r   )r   rB   lpmvrD   s    rF   	test_lpmvzTestCephes.test_lpmvI  r}  rI   c                 D    t        t        j                  dd      d       y r   )r   rB   	mathieu_arD   s    rF   test_mathieu_azTestCephes.test_mathieu_aL  r"  rI   c                 D    t        t        j                  dd      d       y r   )r   rB   	mathieu_brD   s    rF   test_mathieu_bzTestCephes.test_mathieu_bO  r"  rI   c           
         t        t        j                  ddd      d       t        j                  d        }t        j
                  dd      }t        j                  dt        j                  ddd      f   }t        t        j                  |d d d f   |d d d f   d	      d    ||d d d f   |d d d f   d	      d
d       y )Nr^   r   r   r   c                    |t         j                  dz  z  }| dk(  rddd|z  t        d|z        z  z
  z  S | dk(  r t        |      |dz  t        d|z        z  z
  S | dk(  r&t        d|z        |t        d	|z        d
z  dz
  z  z
  S t        | |z        |t        | dz   |z        d	| dz   z  z  t        | dz
  |z        d	| dz
  z  z  z
  z  z
  S )N   r   g;f?r^   r   rP      r   rN            ?)rc   r   r
   mqrM  s      rF   	ce_smallqz.TestCephes.test_mathieu_cem.<locals>.ce_smallqV  s    sNA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UrI   d   rS  rh|?+=rX   rb   )	r   rB   mathieu_cemrc   r   r   r   rv   r   )rE   r9  r7  r8  s       rF   test_mathieu_cemzTestCephes.test_mathieu_cemR  s    V''!A.y9 
	V 
	V IIaEE!R[[b"--.**1QtV9aQiGJ!!AdF)QtAvY>"	,rI   c           
         t        t        j                  ddd      d       t        j                  d        }t        j
                  dd      }t        j                  dt        j                  ddd      f   }t        t        j                  |d d d f   |d d d f   d	      d    ||d d d f   |d d d f   d	      d
d       y )Nr^   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 )Nr2  r^   r3  r   rP   rN   r4  )rc   r   r	   r6  s      rF   	se_smallqz.TestCephes.test_mathieu_sem.<locals>.se_smallqo  s    sNAAv1v!c!A#h..a1Q3x!C!H*R-// 1Q3x!S!A#q\1ac7%;c1Q3'lAqQRsG>T%T"UUUrI   r:  r;  r<  rS  r=  r>  r?  )	r   rB   mathieu_semrc   r   r   r   rv   r   )rE   rE  r7  r8  s       rF   test_mathieu_semzTestCephes.test_mathieu_semk  s    V''!A.y9 

	V 

	V IIaEE!R[[b"--.**1QtV9aQiGJ!!AdF)QtAvY>"	,rI   c                 F    t        t        j                  ddd      d       y Nr^   r   rd  )r   rB   mathieu_modcem1rD   s    rF   test_mathieu_modcem1zTestCephes.test_mathieu_modcem1      V++Aa29=rI   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 )
Nr^   r   rN   r  rP   rS  rR   r`   rW   )	rB   mathieu_modcem2rc   r   r   rv   linspacerJ  r   rE   r7  r8  rM  y1fry2s          rF   test_mathieu_modcem2zTestCephes.test_mathieu_modcem2  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+rI   c                 F    t        t        j                  ddd      d       y rI  )r   rB   mathieu_modsem1rD   s    rF   test_mathieu_modsem1zTestCephes.test_mathieu_modsem1  rL  rI   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 )
Nr^   rN   r  rP   rS  r   rR   r`   rW   )	rB   mathieu_modsem2rc   r   r   rv   rO  rV  r   rP  s          rF   test_mathieu_modsem2zTestCephes.test_mathieu_modsem2  s   q1% 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+rI   c                    t        t        j                  ddd      t        j                  t        j                  f       t        t        j
                  ddd      t        j                  t        j                  f       t        t        j                  ddd      t        j                  t        j                  f       t        t        j
                  ddd      t        j                  t        j                  f       t        t        j                  ddd      t        j                  t        j                  f       t        t        j                  ddd      t        j                  t        j                  f       t        t        j                  ddd      t        j                  t        j                  f       t        t        j                  ddd      t        j                  t        j                  f       y )N'  r   g?      ?)
r   rB   r@  rc   r   rF  rJ  rV  rN  rY  rD   s    rF   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OrI   c                     t        d      D ];  }t        j                  ddd      }t        |d   dd       t        |d	   d
d       = y )N<   rP   r:  rS   r   g.dS?r`   rW   r^   gGc?-C6?)r|   rB   rY  r   )rE   rm   vs      rF   test_mathieu_ticket_1847z#TestCephes.test_mathieu_ticket_1847  sO     r 	GA&&q#r2AAaD":GAaD":F		GrI   c                 .    t        j                  d       y rA   )rB   modfresnelmrD   s    rF   test_modfresnelmzTestCephes.test_modfresnelm      1rI   c                 .    t        j                  d       y rA   )rB   modfresnelprD   s    rF   test_modfresnelpzTestCephes.test_modfresnelp  rg  rI   c                 D    t        t        j                  dd      d       y r   )r   rB   	modstruverD   s    rF   test_modstruvezTestCephes.test_modstruve  r"  rI   c                 F    t        t        j                  ddd      d       y r   )r   rB   nbdtrrD   s    rF   
test_nbdtrzTestCephes.test_nbdtr  r  rI   c                 F    t        t        j                  ddd      d       y r   )r   rB   nbdtrcrD   s    rF   test_nbdtrczTestCephes.test_nbdtrc  r   rI   c                 F    t        t        j                  ddd      d       y r   )r   rB   nbdtrirD   s    rF   test_nbdtrizTestCephes.test_nbdtri  r   rI   c                 2    t        j                  ddd       y )Nr^   rQ   r   )rB   nbdtrikrD   s    rF   test_nbdtrikzTestCephes.test_nbdtrik  s    qBrI   c                 F    t        t        j                  ddd      d       y r   )r   rB   nbdtrinrD   s    rF   test_nbdtrinzTestCephes.test_nbdtrin  r   rI   c                 H    t        t        j                  dddd      d       y r   )r   rB   ncfdtrrD   s    rF   test_ncfdtrzTestCephes.test_ncfdtr  r  rI   c                     t        t        j                  dddd      d       g d}t        j                  ddd|      }t	        t        j                  ddd|      |       y )Nr^   r   r   )r   r^   r]  rP   r   r]  )r   rB   ncfdtrir~  r   )rE   fr[  s      rF   test_ncfdtrizTestCephes.test_ncfdtri  sM    V^^Aq!Q/5MM!QQ'q!S!4a8rI   zpncfdtr uses a Boost math implementation but ncfdtridfdinverts the less accurate cdflib implementation of ncfdtr.c                     g d}t        j                  d|dd      }t        t        j                  d|dd      |       y )Nr^   rP   r   rP   r5  r   )rB   r~  r   
ncfdtridfd)rE   dfdr[  s      rF   test_ncfdtridfdzTestCephes.test_ncfdtridfd  s8     MM!S$+))!Qb93?rI   zpncfdtr uses a Boost math implementation but ncfdtridfninverts the less accurate cdflib implementation of ncfdtr.c                     g d}t        j                  |ddd      }t        t        j                  |ddd      |d       y )N)rG  r^   rP   r   g     @rP   r5  r   gh㈵>rW   )rB   r~  r   
ncfdtridfn)rE   dfnr[  s      rF   test_ncfdtridfnzTestCephes.test_ncfdtridfn  s:     "MM#q$+))!Qb93TJrI   zoncfdtr uses a Boost math implementation but ncfdtrincinverts the less accurate cdflib implementation of ncfdtr.c                     g d}t        j                  dd|d      }t        t        j                  dd|d      |       y )N)r   r]  r   rP   r   r   )rB   r~  r   	ncfdtrinc)rE   ncr[  s      rF   test_ncfdtrinczTestCephes.test_ncfdtrinc  s8     MM!QB'((Aq"5r:rI   c           	      N   t        t        j                  ddd      d       t        t        j                  ddd      d       t        t        j                  t        j
                  dd      dd	       t        t	        j                  t        j                  d
t        j
                  d                   t        t        j                  d
dt        j
                        d       t        t	        j                  t        j                  t        j                  dd                   t        t	        j                  t        j                  d
t        j                  d                   t        t	        j                  t        j                  d
dt        j                                     y )Nr^   r   r   	   i   r   r   r   r   r   r   )	r   rB   nctdtrr   rc   r   r   r   r   rD   s    rF   test_nctdtrzTestCephes.test_nctdtr  s    V]]1Qq)#.V]]1eR0#6FMM"&&"b93Br2663789FMM"b"&&92>rvvr2678r2662678r2rvv678rI   c                 2    t        j                  ddd       y )Nr^   r   r   )rB   	nctdtridfrD   s    rF   test_nctdtridfzTestCephes.test_nctdtridf  s    3q!rI   c                 2    t        j                  ddd       y r  )rB   	nctdtrincrD   s    rF   test_nctdtrinczTestCephes.test_nctdtrinc
  s    1QrI   c                 2    t        j                  ddd       y )NrG  r  r   )rB   nctdtritrD   s    rF   test_nctdtritzTestCephes.test_nctdtrit  s    3r"rI   c                 F    t        t        j                  ddd      d       y )Nr   r^   r   )r   rB   nrdtrimnrD   s    rF   test_nrdtrimnzTestCephes.test_nrdtrimn  s    FOOC!4S9rI   c                 L    t        t        j                  ddd      ddd       y )Nr   r   r   ra   )r   rB   nrdtrisdrD   s    rF   test_nrdtrisdzTestCephes.test_nrdtrisd  s     C4ca	)rI   c                 4    t        j                  dddd       y r  )rB   obl_ang1rD   s    rF   test_obl_ang1zTestCephes.test_obl_ang1      !Aa rI   c                 r    t        j                  ddddd      }t        |d   d       t        |d   d       y )Nr^   r   r   r   )rB   obl_ang1_cvr   )rE   results     rF   test_obl_ang1_cvzTestCephes.test_obl_ang1_cv  s6    ##Aa!A.F1Ic*F1Ic*rI   c                 F    t        t        j                  ddd      d       y Nr^   r   r   )r   rB   obl_cvrD   s    rF   test_obl_cvzTestCephes.test_obl_cv  r   rI   c                 4    t        j                  dddd       y r  )rB   obl_rad1rD   s    rF   test_obl_rad1zTestCephes.test_obl_rad1"  r  rI   c                 6    t        j                  ddddd       y r  )rB   obl_rad1_cvrD   s    rF   test_obl_rad1_cvzTestCephes.test_obl_rad1_cv%      1Qq1%rI   c                 4    t        j                  dddd       y r  )rB   obl_rad2rD   s    rF   test_obl_rad2zTestCephes.test_obl_rad2(  r  rI   c                 6    t        j                  ddddd       y r  )rB   obl_rad2_cvrD   s    rF   test_obl_rad2_cvzTestCephes.test_obl_rad2_cv+  r  rI   c                 D    t        t        j                  dd      d       y )Nr^   r   rC  )r   rB   pbdvrD   s    rF   	test_pbdvzTestCephes.test_pbdv.  s    V[[1%i0rI   c                 0    t        j                  dd       y r  )rB   pbvvrD   s    rF   	test_pbvvzTestCephes.test_pbvv1      AarI   c                 0    t        j                  dd       y r  )rB   pbwarD   s    rF   	test_pbwazTestCephes.test_pbwa4  r  rI   c                     t        j                  dd      }t        |t        j                  d             t        j                  g dd      }t        |g d       y )Nr   r^   rS   r   r^   rP   )r^   r^   r^   )rB   pdtrr   rc   r   r   rE   vals     rF   	test_pdtrzTestCephes.test_pdtr7  s>    kk!QC,kk)Q'3	*rI   c                     t        j                  dd      }t        |dt        j                  d      z
         t        j                  g dd      }t        |g d       y )Nr   r^   rS   r  r   )r   r   r   )rB   pdtrcr   rc   r   r   r  s     rF   
test_pdtrczTestCephes.test_pdtrc>  sB    ll1a CRVVBZ0ll9c*3	*rI   c                     t               5 }|j                  t        d       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"  rB   pdtri)rE   r$  s     rF   
test_pdtrizTestCephes.test_pdtriE  s<      	"CJJ~'VWLLS!	" 	" 	"s   -AA
c                     t        j                  dd      }t        t        j                  |dz   d      d       t        j                  dgdgdggg d      }t	        |t        j                  d             y )Nr   r^   r   r5  ffffff?)r   #B;rR  )r   r   )rB   pdtrikr   	gammainccr   rc   r   )rE   rm   s     rF   test_pdtrikzTestCephes.test_pdtrikJ  s^    MM#q!F,,QUA6<MMA3/1AB1bhhv./rI   c                 4    t        j                  dddd       y r  )rB   pro_ang1rD   s    rF   test_pro_ang1zTestCephes.test_pro_ang1Q  r  rI   c           	      \    t        t        j                  ddddd      t        d             y )Nr^   r   r0  )r   rB   pro_ang1_cvr   rD   s    rF   test_pro_ang1_cvzTestCephes.test_pro_ang1_cvT  s'    !&"4"4Qq1Q"?"'	"2	4rI   c                 F    t        t        j                  ddd      d       y r  )r   rB   pro_cvrD   s    rF   test_pro_cvzTestCephes.test_pro_cvX  r   rI   c                 4    t        j                  dddd       y r  )rB   pro_rad1rD   s    rF   test_pro_rad1zTestCephes.test_pro_rad1[  s    !Ac"rI   c                 6    t        j                  ddddd       y r  )rB   pro_rad1_cvrD   s    rF   test_pro_rad1_cvzTestCephes.test_pro_rad1_cv^  r  rI   c                 4    t        j                  dddd       y r  )rB   pro_rad2rD   s    rF   test_pro_rad2zTestCephes.test_pro_rad2a  r  rI   c                 6    t        j                  ddddd       y r  )rB   pro_rad2_cvrD   s    rF   test_pro_rad2_cvzTestCephes.test_pro_rad2_cvd  r  rI   c                 .    t        j                  d       y rz   )rB   psirD   s    rF   test_psizTestCephes.test_psig  r  rI   c                 F    t        t        j                  ddd      d       y rA   )r   rB   radianrD   s    rF   test_radianzTestCephes.test_radianj  s    V]]1Qq)!,rI   c                 B    t        t        j                  d      d       y r   )r   rB   rgammarD   s    rF   test_rgammazTestCephes.test_rgammam  r  rI   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@r   333333      g@r:  gg            @rt  )r   rB   roundrD   s    rF   
test_roundzTestCephes.test_roundp  st    V\\#&s+V\\$'-V\\#&s+V\\$'-V\\#&s+V\\$'-rI   c                 .    t        j                  d       y rz   )rB   shichirD   s    rF   test_shichizTestCephes.test_shichix  r  rI   c                    t        j                  d       t        j                  t        j                        \  }}t	        |t        j
                  dz         t	        |d       t        j                  t        j                         \  }}t	        |t        j
                   dz         t        t        j                  |      d       y )Nr^   r   r   z cosine integral(-inf) is not nan)rB   sicirc   r   r   r   r   r   )rE   sr#  s      rF   	test_sicizTestCephes.test_sici{  s~    A{{266"1Aruus{+Aq!{{BFF7#1Av|,?@rI   c                 B    t        t        j                  d      d       y NZ   r   )r   rB   sindgrD   s    rF   
test_sindgzTestCephes.test_sindg      V\\"%c*rI   c                     t        t        j                  dd      d       t        t	        j
                  t        j                  dt        j                                     y )Nr^   rG  ?)r   rB   smirnovr   rc   r   r   rD   s    rF   test_smirnovzTestCephes.test_smirnov  s7    V^^Ab)#."&&123rI   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 )	Nr^   rG  rS   rP         ?      r   g      ȿ)r   rB   	_smirnovpr   rc   r   r   rD   s    rF   test_smirnovpzTestCephes.test_smirnovp  sk    V%%a,b1V%%a.0@AV%%a.0@A))!RVV456rI   c                    t        t        j                  dd      d       t        t	        j
                  t        j                  dt        j                                     t	        j                  dddd      }t        t        j                  d|      dt        j                  d|      z
         t	        j                  dddd      }t        t        j                  d	|      dt        j                  d	|      z
         y )
Nr^   rG  r   rI  Tendpointr   r   rN   )
r   rB   	_smirnovcr   rc   r   r   rO  r   r  )rE   x10x4s      rF   test_smirnovczTestCephes.test_smirnovc  s    V%%a+C0))!BFF345kk!QT2F,,Q4aq#8N6NO[[Aq40F,,Q3Qv~~a7L5LMrI   c           	      T   t        t        j                  dt        j                  dd            d       t        t        j                  dt        j                  dd            d       t	        t        j                  t        j                  dt
        j                                     y Nr^   rQ   333333?)r   rB   r  smirnovir   rc   r   r   rD   s    rF   test_smirnovizTestCephes.test_smirnovi  sb    FNN1V__Qs-CDSIFNN1V__Qs-CDSI266234rI   c           	      T   t        t        j                  dt        j                  dd            d       t        t        j                  dt        j                  dd            d       t	        t        j                  t        j                  dt
        j                                     y r  )r   rB   r  
_smirnovcir   rc   r   r   rD   s    rF   test_smirnovcizTestCephes.test_smirnovci  sl    F,,Qv/@/@3/GHMF,,Qv/@/@3/GHM**1RVV456rI   c                 B    t        t        j                  d      d       y r   )r   rB   spencerD   s    rF   test_spencezTestCephes.test_spence  r  rI   c                     t        t        j                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d       y )Nr^   r   r   r  rP   gMoF?)r   rB   stdtrr   rD   s    rF   
test_stdtrzTestCephes.test_stdtr  sA    V\\!A&s+FLL1-t4FLL1-~>rI   c                 0    t        j                  dd       y )Nffffff?r^   )rB   stdtridfrD   s    rF   test_stdtridfzTestCephes.test_stdtridf  s    ArI   c                 0    t        j                  dd       y )Nr^   r+  )rB   stdtritrD   s    rF   test_stdtritzTestCephes.test_stdtrit  s    qrI   c                 D    t        t        j                  dd      d       y r   )r   rB   struverD   s    rF   test_struvezTestCephes.test_struve  r   rI   c                 B    t        t        j                  d      d       y r   )r   rB   tandgrD   s    rF   
test_tandgzTestCephes.test_tandg  r  rI   c                 D    t        t        j                  dd      d       y r   )r   rB   tklmbdarD   s    rF   test_tklmbdazTestCephes.test_tklmbda  s    FNN1Q/4rI   c                 .    t        j                  d       y rz   )rB   y0rD   s    rF   test_y0zTestCephes.test_y0  r  rI   c                 .    t        j                  d       y rz   )rB   rQ  rD   s    rF   test_y1zTestCephes.test_y1  r  rI   c                 0    t        j                  dd       y rz   )rB   ynrD   s    rF   test_ynzTestCephes.test_yn  r  rI   c                 0    t        j                  dd       y rz   )rB   yvrD   s    rF   test_yvzTestCephes.test_yv  r  rI   c                 0    t        j                  dd       y rz   )rB   yverD   s    rF   test_yvezTestCephes.test_yve  r  rI   c                    t        dd      t        dd      t        dd      t        dd      t        dd	      t        dd
      t        dd      t        dd      t        dd      t        dd      t        dd      t        dd      t        dd      t        dd      t        dd      t        dd      g}t        dd      t        dd       t        d!d"      t        d#d$      t        d%d&      t        d'd(      t        d)d*      t        d+d,      t        d-d.      t        d/d      t        d0d1      t        d2d3      t        d4d5      t        d6d7      t        d8d9      t        d:d:      g}t        t        j                  ||d;<       y )=Ng@g+п皙ٿr   r  r   r  r   g      "g      "@g4׵/Yg8EGr?r  gffffff@ig>@r   g|Pk?rI  r^   ir  r  i   ig     j@  ļBg0"bgpتO#M?gMF>?g5-g`?g	S+?g6U?gǗʿgjD{?/,Gg` 0Gg!^?gnF5o{gI\Y?g7f8goC9	?gyhgEbr?g{g.
?ga~gT-s?gɤ,P&?g|bgޗY3g!ؑ-@gi$bghgy(V@^gһ>g>gx\h<rV   rW   )rB  r:   rB   wofz)rE   rM  ws      rF   	test_wofzzTestCephes.test_wofz  s   U8$gd2&6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!%8rI   N)__name__
__module____qualname__rG   rL   rq   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r!  r&  r(  r+  r/  r2  r5  r8  r<  r?  rC  pytestmarkxfailrP  rU  rX  r\  r^  ra  rf  rk  rn  rq  ry  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r%  r(  r+  r.  rA  rG  rK  rT  rW  rZ  r^  rc  rf  rj  rm  rp  rs  rv  ry  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r   r#  r&  r)  r-  r0  r3  r6  r9  r<  r>  rA  rD  rG  rN   rI   rF   r?   r?   ?   sa   2.2*.G,/00/()()3000,--.7<221**2AL2N
+0)0):*3)3N& [[MNF OF($$@ [[454 6412+3=-2./
1'('(111.)*''))*)20/.4,F&-00,2,,>, >,	PG0.// 019 [[I  @@
 [[I  KK
 [[I  ;;

9" #:)!+
/!&!&1++"
0!4/#&!&-+.	A+47N5
7
+?
-+5*9rI   r?   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       t        j                  d      }t        |t        g d      d       t        j                  d      }t        |t        g d      d       y )NGz?)g*?gTk'kPĿge+?gyCyt?r3  g=
ףp=?)g'$'?geοgL?g
HVV?g
ףp=
׿)gl@D|?gV~׭ͿgU?g3{ɔ?)r!   rC   r   r   r1  s     rF   rG   zTestAiry.test_airy  sw     LL!@A	

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

 LL!@A	
rI   c                 f   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       y )Nr   rN   rP   gN贁N{?rT   )	r!   rK   rC   r|   r   r   absr   r   )rE   abb1rl   s        rF   rL   zTestAiry.test_airye  s    MM$LLVAXq 	6AaD\$t*455BqE	6q 	BAaDc$|DJ'>"?@@AABqE	B!!Bq)rI   c                    t        j                  d      }t        ddg      t        ddg      t        ddg      t        dd	g      f}t        ||d
       t        j                  d      }t        |d   t        g d      d       t        |d   t        g d      d       t        |d   t        g d      d       t        |d   t        g d      d       y )NrP   glgoe2+
g(0[g X*JgUfݿg˰zU`?g4c1=C?gCuTrN   r   r   )g&g(.2+
gRg}`g%́rI  r^   )g7;1[ge*JgVwgL g<3rS  )gNݿg3%IQ`?gZyΌ׿gʀ11^?g33tտr   )gqM0=C?g7uTg\G`?gp⍞vg$.m?)r!   bi_zerosr   r   )rE   bibias      rF   test_bi_zeroszTestAiry.test_bi_zeros  s   a k:./k;/0k:./j+./1 	""S+a !"Q% /C )D EG		H 	""Q% /C )D EG		H 	""Q% /C )D EG		H 	""Q% /B )C DF		GrI   c           	          t        j                  d      }t        |t        dg      t        dg      t        dg      t        dg      fd       y )Nr^   gcqg!xLgMSt$?g ~:p?rN   )r!   ai_zerosr   r   )rE   ais     rF   test_ai_zeroszTestAiry.test_ai_zeros:  sK    a !"e[M&:%*K=%9%*F8_%*F8_&6 78	9rI   r   c                    t        j                  d      \  }}}}t        j                  |      \  }}}}t        j                  |      \  }}	}}dt        |      dz  z  }
t        |      dz  }t	        ||d       t	        ||d       t	        ||
z  ddd       t	        |	|z  ddd       t	        |d d g d	d       t	        |d d g d
d       y )NP  r^   r5  r`   rW   r   ra   rT   )guqgqHkZg4g9Ζ%gB~gL")gLgQO	gMQnGg3:g)}g )r!   re  rC   r[  r   )rE   rM  zpai_zpxaip_zxai_zaip_z_ai_zpaip_zpai_envelopeaip_envelopes               rF   test_ai_zeros_bigzTestAiry.test_ai_zeros_bigA  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rI   c                    t        j                  d      \  }}}}t        j                  |      \  }}}}t        j                  |      \  }}}}	dt        |      dz  z  }
t        |      dz  }t	        ||d       t	        ||d       t	        ||
z  ddd       t	        |	|z  ddd       t	        |d d g d	d       t	        |d d g d
d       y )Nri  r^   r5  r`   rW   r   ra   rT   )gx&gg-2+
gRgg`gu%́g{ )g K;1[g*JgVwg<w gd
3g/{
")r!   r`  rC   r[  r   )rE   rM  rj  bi_zpxbip_zxro  bi_zbip_zbi_zpbip_zpbi_envelopebip_envelopes               rF   test_bi_zeros_bigzTestAiry.test_bi_zeros_bigZ  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rI   N)rO  rP  rQ  rG   rL   rc  rg  rR  rS  	fail_slowrt  r~  rU  rI   rF   rW  rW    sb    
,*GB9 [[1G G0 [[1G GrI   rW  c                       e Zd Zd Zy)TestAssocLaguerrec                     t        j                  dd      }t        j                  ddd      }t        | |d      d       t        j                  ddd      }t        | |d      d       y )NrI  r^   r  r3  )r!   genlaguerreassoc_laguerrer   )rE   a1a2s      rF   test_assoc_laguerrez%TestAssocLaguerre.test_assoc_laguerreu  s\      A&##Br!,!"RVA.##Ab+!"RU1-rI   N)rO  rP  rQ  r  rU  rI   rF   r  r  t  s    .rI   r  c                       e Zd Zd Zy)TestBesselpolyc                      y NrU  rD   s    rF   r   zTestBesselpoly.test_besselpoly~      rI   N)rO  rP  rQ  r   rU  rI   rF   r  r  }  s    rI   r  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                 H    t        j                  d      }t        |dd       y )NrP   gT?r   )r!   r   r   )rE   mbeis     rF   r   zTestKelvin.test_bei  s    {{1~D"4Q7rI   c                 H    t        j                  d      }t        |dd       y )NrP   gD,X?r   )r!   r   r   )rE   mbeips     rF   r   zTestKelvin.test_beip      QE"5a8rI   c                 H    t        j                  d      }t        |dd       y )NrP   gPA4?r   )r!   r   r   )rE   mbers     rF   r   zTestKelvin.test_ber  s    {{1~D!4Q7rI   c                 H    t        j                  d      }t        |dd       y )NrP   gii߿r   )r!   r   r   )rE   mberps     rF   r   zTestKelvin.test_berp      QE"6q9rI   c                 ^    t        j                  d      }t        |t        g d      d       y )Nr   g&jj@g+"@g(rw+@gU2@g`<6@rN   )r!   	bei_zerosr   r   )rE   ra  s     rF   test_bei_zeroszTestKelvin.test_bei_zeros  s-    q!!"U ,6 &7 89		:rI   c                 ^    t        j                  d      }t        |t        g d      d       y )Nr   )gyWo.@g╲ݏ @gנ{)@gK11@gWc"5@r3  )r!   
beip_zerosr   r   )rE   bips     rF   test_beip_zeroszTestKelvin.test_beip_zeros  s2      #!#e -C 'D EF		GrI   c                 ^    t        j                  d      }t        |t        g d      d       y )Nr   g\@g6ُ@gӟHY'@g>"D0@ggaO;4@rN   )r!   	ber_zerosr   r   )rE   r   s     rF   test_ber_zeroszTestKelvin.test_ber_zeros  s-    "!#e -7 '8 9:		;rI   c                 ^    t        j                  d      }t        |t        g d      d       y )Nr   g '@gs%@gF ^-@gvۅj3@gB7@rN   )r!   
berp_zerosr   r   )rE   brps     rF   test_berp_zeroszTestKelvin.test_berp_zeros  s-      #!#e -7 '8 9:		;rI   c           
         t        j                  d      }t        |t        j                  d      t        j                  d      dz  z   t        j
                  d      t        j                  d      dz  z   t        j                  d      t        j                  d      dz  z   t        j                  d      t        j                  d      dz  z   fd       y )NrP   rJ  r3  )r!   r   r   r   r   r  r  r   r   r  r  )rE   mkelvs     rF   r  zTestKelvin.test_kelvin  s    q!!%Q'++a.:K)K)0Q'++a.:K)K)0a7<<?2;M)M)0a7<<?2;M)M)O PQ	RrI   c                 H    t        j                  d      }t        |dd       y )NrP   g>ɿr   )r!   r  r   )rE   mkeis     rF   r  zTestKelvin.test_kei  s    {{1~D!5a8rI   c                 H    t        j                  d      }t        |dd       y )NrP   gr@d"?r   )r!   r  r   )rE   mkeips     rF   r  zTestKelvin.test_keip  r  rI   c                 H    t        j                  d      }t        |dd       y )NrP   gܙUr   )r!   r  r   )rE   mkers     rF   r  zTestKelvin.test_ker  s    {{1~D!6q9rI   c                 H    t        j                  d      }t        |dd       y )NrP   g^.n3Jr   )r!   r  r   )rE   mkerps     rF   r  zTestKelvin.test_kerp  r  rI   c                 ^    t        j                  d      }t        |t        g d      d       y )Nr   gE>Q@gB= @gPN)@gm91@g
%5@rN   )r!   	kei_zerosr   r   )rE   r  s     rF   test_kei_zeroszTestKelvin.test_kei_zeros  s-    "!#e -8 '9 :;		<rI   c                 ^    t        j                  d      }t        |t        g d      d       y )Nr   gWf,@g?"@gFZ*o+@gOpN2@gEa6@rN   )r!   
keip_zerosr   r   )rE   r  s     rF   test_keip_zeroszTestKelvin.test_keip_zeros  -    !!!$!$u .: (; <=		>rI   c                    t        j                  d      }|\  }}}}}}}}	t        |t        g d      d       t        |t        g d      d       t        |t        g d      d       t        |t        g d      d       t        |t        g d      d       t        |t        g d      d       t        |t        g d	      d       t        |	t        g d
      d       y )Nr   r  rN   r  )#?Q5U@q89 %@ol`.@gO0q3@r  r  )gum.@gݏ @gs{)@g䠄11@gN(D!5@gS@g89@@g^C'@g1ZG0@g+ڇ4@r  )r!   kelvin_zerosr   r   )
rE   tmpberzbeizkerzkeizberpzbeipzkerpzkeipzs
             rF   test_kelvin_zeroszTestKelvin.test_kelvin_zeros  s   ""1%693T$tE%e!$u .9 (: ;<		=
 	"$u .9 (: ;<		=
 	"$u .9 (: ;<		=
 	"$u .9 (: ;<		=
 	"% /: ); <=		>
 	"% /: ); <=	> 	"% /: ); <=		>
 	"% /: ); <=		>rI   c                 ^    t        j                  d      }t        |t        g d      d       y )Nr   )r  r  r  r  gD;q3@rN   )r!   	ker_zerosr   r   )rE   r  s     rF   test_ker_zeroszTestKelvin.test_ker_zeros
  s-    "!#e -9 ': ;<		=rI   c                 ^    t        j                  d      }t        |t        g d      d       y )Nr   r  rN   )r!   
kerp_zerosr   r   )rE   r  s     rF   test_kerp_zeroszTestKelvin.test_kerp_zeros  r  rI   N)rO  rP  rQ  r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  rU  rI   rF   r  r    s_    898::G;;R99::<>,>\=>rI   r  c                       e Zd Zd Zy)TestBernoullic                 ^    t        j                  d      }t        |t        g d      d       y )Nr   )r   r  g-!lV?r   g镲r   rN   )r!   	bernoullir   r   )rE   brns     rF   test_bernoullizTestBernoulli.test_bernoulli  s-    "!#e -5 '6
 78	9rI   N)rO  rP  rQ  r  rU  rI   rF   r  r    s    9rI   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 )Nr^   r   33333YN~h?   g6.8@rV   r   r?  rP   rN   rT   rW   )r   r!   betar   rj  )rE   betbetgs      rF   	test_betazTestBeta.test_beta+  s    W\\!Q'-VV4gmmF6KLVS13E"	, ll1a a q!117==3CCT.rI   c                 h    t        t        j                  t        j                  dd                   y )NrS   rP   )r   rc   isinfr!   r  rD   s    rF   test_beta_infzTestBeta.test_beta_inf5  s    b!,-.rI   c                    t        t        j                  dd      d       t        t        j                  dd      t        j                  d             t        t        j                  dd      ddd	
       t        j                  dd      }t        t        t        j                  dd                  }t        ||d       y )Nr^   r   r  r  r     gIs	@r>  r   r?  rP   rN   rV   rW   )r   r!   betalnr   rp  r   r[  r  )rE   betlnr  s      rF   test_betalnzTestBeta.test_betaln8  s    W^^Aq)3/vv6/	1vs35G"	, q!$#gll1a()*s/rI   N)rO  rP  rQ  __doc__r  r  r  rU  rI   rF   r  r  &  s    //	0rI   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                  g      ej                  j                  dg d      d               Zej                  j                  dej$                  ej&                  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   r5  r^   r^   )rc   r   r   r!   betainc
betaincinvbetainccbetainccinvr1  s     rF   
test_a1_b1zTestBetaInc.test_a1_b1I  sz    HH\"W__Q1-q1W''1a0!4W%%aA.A6W((Aq11q59rI   z
a, b, x, p))rP   rN   g@w?r   )r  g     `e@r`   g*?)r  r  g"Yx;r5  )g   `1?g    ئAg\aY4g    ?)rN   i g-߇)?g;?c                     t        j                  |||      }t        ||d       t        j                  |||      }t        ||d       y )Nr  rW   g-a=)r!   r  r   r  rE   r\  r]  r  r[  p1x1s          rF   test_betainc_betaincinvz#TestBetaInc.test_betainc_betaincinv`  sB     __Q1%AE*1a(AE*rI   ))      @r   r5  g     ?)      @g     *@      ?g&?)      ?r  g333333?gFoE?)r        2@rR  gg2$Z?)r  r  gZd;?g6)r  ri  r  g`<)      0@r  g?g<dEA>)g?g7Ê@g/3J?Hz>c                     t        j                  |||      }t        ||d       t        j                  |||      }t        ||d       y )N+<rW   gV瞯=)r!   r  r   r  r  s          rF   test_betaincc_betainccinvz%TestBetaInc.test_betaincc_betainccinvu  sD     aA&AE*  Aq)AE*rI   za, b, y, ref))cj,@r  ghHISOa gڭ Y;)g      ,@g      -@g둤g}c]춫;)r        .@gUv \U,gS^%:)r   g      ?gMoigKB;)r:  g    i@g1$-g\_cp:c                 N    t        j                  |||      }t        ||d       y )Nr>  rW   )r!   r  r   )rE   r\  r]  rL  refr  s         rF   test_betaincinv_tiny_yz"TestBetaInc.test_betaincinv_tiny_y  s$    2 q!Q'3U+rI   funcargs))r  rP   r   )r   rP   r   )r]         r   )r]  r   r   )r]  r   333333ӿ)r]  r   皙?c                     t        j                  d      5  t        j                  t         j                  d      5  t        j
                  |  d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nraise)domainr  match)r!   errstaterR  r   SpecialFunctionErrorr  )rE   r
  r  s      rF   test_betainc_domain_errorsz&TestBetaInc.test_betainc_domain_errors  sa     W- 	'w;;8L '&'	' 	'' '	' 	's"   &A-A!A-!A*	&A--A6dtypec                     t        j                  dg|      }t        j                  dg|      }t        j                  |||      }t	        ||dt        j
                  |      j                  z         y )Nr   r  r   rS  rW   )rc   r   r!   r  r   r   eps)rE   r  r\  r  r  s        rF   test_gh21426zTestBetaInc.test_gh21426  s[     HHbT'HHcU%(##Aq!,RXXe_-@-@(@ArI   N)rO  rP  rQ  r  r  rR  rS  parametrizer  r  r	  r!   r  r  r  r  r  rc   r  r  r  rU  rI   rF   r  r  D  s.   :. [[	6
7+
7+ [[\
<=+=+ [[	7,,& [[Vgoow7I7I&-&6&68K8K&M N[[V &I J'JN
'
 [[Wrzz2::&>?B @BrI   r  c                       e Zd Zd Zd Zd Zej                  j                  d        Z	d Z
d Zej                  j                  d        Z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 )NrS  r   rN         ^@g     @j@Texactx   )r"  
repetition   rJ  rt   r  rb   r^   l   hU7`S?Q r:  2   )
r   r!   combr   r|   listrc   iinfor{   max)rE   rm   iirN  s       rF   	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   rZ   Tr!  )rc   int64r!   r(  )rE   rl   rm   np_nnp_kres_npres_pys          rF   test_comb_with_np_int64z)TestCombinatorics.test_comb_with_np_int64  sX    xx{xx{dD5a$/rI   c                 `   t        t        j                  ddd      d       t        t        j                  ddd      d       t        t        j                  ddd      d       t        t        j                  ddd      d       t        t        j                  g dg d	      g d
       y )NrP   r   Tr!  r   rS   FrP   rS   rP   rS  r   r   rS   r   )r   r   r   r   )r   r!   r(  r   rD   s    rF   test_comb_zerosz!TestCombinatorics.test_comb_zeros  t    W\\!Qd3Q7W\\"at4a8W\\!Rt4a8W\\!Ru5q9^]CEWXrI   c                     d}t        j                  |      5  t        j                  ddd       d d d        y # 1 sw Y   y xY w)Nz`exact=True`r  r  rN   Tr!  )rR  deprecated_callr!   r(  )rE   msgs     rF   test_comb_exact_non_int_depz-TestCombinatorics.test_comb_exact_non_int_dep  s:    ###. 	-LLat,	- 	- 	-	   ;Ac                     t        t        j                  ddgddg      ddg       t        t        j                  dd      d       t	        t        j                  ddd      d       y )	NrS  r   rN        @g     @Tr!  i  )r   r!   permr   r   rD   s    rF   	test_permzTestCombinatorics.test_perm  sO    b"X1v6uFGLLQ/6W\\"at4c:rI   c                 `   t        t        j                  ddd      d       t        t        j                  ddd      d       t        t        j                  ddd      d       t        t        j                  ddd      d       t        t        j                  g dg d	      g d
       y )NrP   r   Tr!  r   rS   Fr7  r8  )r   r   r   rA  )r   r!   rB  r   rD   s    rF   test_perm_zerosz!TestCombinatorics.test_perm_zeros  r:  rI   c                    t        j                  t        d      5  t        j                  ddgddgd       d d d        t        j
                  d	      5  t        j                  d
dd       d d d        t        j
                  d	      5  t        j                  ddd       d d d        t        j
                  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  r^   rP   rN   r   Tr!  zNon-integergffffff@rT   gffffffr   g333333      @)rR  r   
ValueErrorr!   rB  r<  rD   s    rF   test_perm_ivzTestCombinatorics.test_perm_iv  s    ]]:->? 	5LL!Q!Qt4	5
 ##-8 	-LLat,	-##-8 	.LLq-	.##-8 	.LLD-	.
 ]]:]; 	/LLc.	/ 	/	5 	5
	- 	-	. 	.	. 	.
	/ 	/s;   D#D/D;EE#D,/D8;EEEN)rO  rP  rQ  r-  r5  r9  rR  rS  thread_unsafer>  rC  rE  rI  rU  rI   rF   r  r    sY    = Y [[- -
;
Y [[/ /rI   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                 J    t        j                  d      }d}t        ||       y )N   r   )r!   r   r   )rE   cbcbrls      rF   r   zTestTrigonometric.test_cbrt  s    \\"Bt$rI   c                 L    t        j                  d      }d}t        ||d       y )Ngfffff;@g鎖C@r3  )r!   r   r   )rE   cb1cbrl1s      rF   test_cbrtmorezTestTrigonometric.test_cbrtmore  s!    ll4 Ca(rI   c                 l    t        j                  d      }t        t        dz        }t	        ||d       y )Nr  r   r3  r!   r   r
   r   r   )rE   cdgcdgrls      rF   r   zTestTrigonometric.test_cosdg  s)    mmBBsFCa(rI   c                 l    t        j                  d      }t        t        dz        }t	        ||d       y NrZ   rG  r3  rV  )rE   cdgmcdgmrls      rF   test_cosdgmorez TestTrigonometric.test_cosdgmore  s)    }}R RVD*rI   c                    t        j                  d      t        j                  d      t        j                  t        dz        f}t        d      dz
  t        d      dz
  t        t        dz        dz
  f}t	        ||d       y )Nr   rH  rS  r^   r3  )r!   r   r   r
   r   )rE   cscsrls      rF   r   zTestTrigonometric.test_cosm1  sa    mmAw}}R0r"u1EFAqR3r"u:a<0!"T!,rI   c                 r    t        j                  d      }t        t        dz        dz  }t	        ||d       y )NrZ   rG  rS   r3  r!   r   r   r   r   )rE   ctctrls      rF   r   zTestTrigonometric.test_cotdg  s.    ]]22c6{R BtA&rI   c                 r    t        j                  d      }t        t        dz        dz  }t	        ||d       y )Nr   r:  rS   r3  rb  )rE   ct1ctrl1s      rF   test_cotdgmorez TestTrigonometric.test_cotdgmore  s.    mmBBsFb!Ca(rI   c                 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       y )Nr   r      r  r  r   i   y   i  i;  i  )r   r!   r   rD   s    rF   test_specialpointsz$TestTrigonometric.test_specialpoints!  s   GMM"-sB7GMM#.b9GMM"-sB7GMM#.R8GMM#.b9GMM$/b9GMM#.R8GMM$/r:GMM#.R8GMM$/b9GMM#.b9GMM$/b9GMM#.R8rI   c                     t        t        j                  dg      d       t        t        j                  d      d       y )Nr   r^   r   r   )r   r!   sincr   rD   s    rF   	test_sinczTestTrigonometric.test_sinc0  s*    7<<,a0W\\#&,rI   c                 F    t        j                  d      }t        |d       y r  )r!   r	  r   )rE   sns     rF   r
  zTestTrigonometric.test_sindg5  s    ]]2RrI   c                     t        j                  d      }t        t        dz        }t	        ||d       t        j                  d      }t        t        dz        }t	        ||d       y )NrZ   rG  r3  r   r:  )r!   r	  r	   r   r   )rE   snmsnmrlsnm1snmrl1s        rF   test_sindgmorez TestTrigonometric.test_sindgmore9  P    mmBBsFCa(}}R RVD*rI   N)rO  rP  rQ  r   rT  r   r]  r   r   rh  rr  ru  r
  r}  rU  rI   rF   rL  rL    s9    %
)
)
+
-
'
)
9-
+rI   rL  c                       e Zd Zd Zd Zd Zy)	TestTandgc                 l    t        j                  d      }t        t        dz        }t	        ||d       y rZ  r!   r5  r   r   r   )rE   tntnrls      rF   r6  zTestTandg.test_tandgD  s)    ]]22c6{BtA&rI   c                     t        j                  d      }t        t        dz        }t	        ||d       t        j                  d      }t        t        dz        }t	        ||d       y )Nr   r:  r3  r`  r   r  )rE   tnmtnmrltnm1tnmrl1s        rF   test_tandgmorezTestTandg.test_tandgmoreI  r~  rI   c                    t        t        j                  d      dd       t        t        j                  d      dd       t        t        j                  d      dd       t        t        j                  d      dd       t        t        j                  d	      dd       t        t        j                  d
      dd       t        t        j                  d      dd       t        t        j                  d      dd       t        t        j                  d      dd       t        t        j                  d      dd       t        t        j                  d      dd       y )Nr   r   rj  r   r   rk  r  rl  rm  r2  iLrn  ro  rp  rq  )r   r!   r5  rD   s    rF   rr  zTestTandg.test_specialpointsQ  s    GMM!,c26GMM"-sB7GMM#.b9GMM#.b9GMM$/b9GMM#.R8GMM$/b9GMM#.R8GMM$/r:GMM#.b9GMM$/b9rI   N)rO  rP  rQ  r6  r  rr  rU  rI   rF   r  r  B  s    '
+:rI   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%  rc   r   rD   s    rF   test_ellipj_nanzTestEllip.test_ellipj_nan`  s    sBFF#rI   c                 z    t        j                  dd      }t        d      t        d      ddg}t	        ||d       y )Nr  r   r      )r!   r%  r	   r
   r   )rE   elrels      rF   r&  zTestEllip.test_ellipjd  s4    ^^C"3xCT*!"S,rI   c                 V   t        j                  d      }t        |dd       t        t        j                  d      t
        j                         t        t        j                  d      t        dz         t        t        j                  t
        j                        d       t        t        j                  t
        j                        t
        j                         t        t        j                  d      t
        j                         t        t        j                  d      d	       y )
Nr  g;{yэ?rI  r   r   rP   rS   gN?)
r!   r#   r   r   r$   rc   r   r   r   r   )rE   elks     rF   r(  zTestEllip.test_ellipki  s    nnR C 1"5W%%c*BFF3W%%c*BqD1W%%bff-s3W%%bff-rvv6W%%b)2662s+-?@rI   c                 R   t        j                  t        dz  d      }t        j                  d      }t	        ||d       dt        z  dz  }dt        z  dz  }t        |      dz  }t        j                  ||      }t	        |dd       t        t        j                  t        dz  d	      t        dz         t        t        j                  t        dz  d
      t        j                         t        t        j                  t        dz  t        j                         d	       t        t        j                  t        dz  t        j                        t        j                         t        t        j                  t        dz  d      t        j                         t        t        j                  dd      d	       t        t        j                  t        j                  d      t        j                         t        t        j                  t        j                   d      t        j                          t        t        j                  t        j                  t        j                        t        j                         t        t        j                  t        j                  t        j                         t        j                         t        t        j                  t        j                   t        j                         t        j                         t        t        j                  t        j                   t        j                        t        j                         t        t        j                  t        j                  d      t        j                         t        t        j                  t        j                  t        j                        t        j                         t        t        j                  dd      dd       t        t        j                  dd      d       y )NrP   r  r   rt   r2  r   gfoKh?r3  r   r   r   r   gt?r^   rQ   r>  rW   6<R!?r  gfON?)r!   r*  r   r#   r   r	   r   rc   r   r   r   )rE   elkincr  alphaphir7  s         rF   r+  zTestEllip.test_ellipkinct  s{   ""2a4+nnS!F3r*2c	eCiJM""3q)F:a0 	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LrI   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   rS  r^   gV^8j?g,j6Ƅ@rP   )	rc   	nextafterr|   appendr!   r*  r   	full_liker   rE   mbadr  r7  mvalsjr  f1s           rF   test_ellipkinc_2zTestEllip.test_ellipkinc_2  s     # LLq!r 	#ALLOQ"A	# c5)&q",,q:L*MqQsRx/&r2<<<N+OQRSrI   c                 
   t        j                  ddd      }t        j                  ddd      }t        j                  dt        dz  dd      }t	        t        j                  |d	      t        j                  t        j                  |            d
       t	        t        j                  |d	      t        j                  t        j                  |            d
       t	        t        j                  |d	      t        j                  t        j                  |            d
       t        t        j                  t         j                  dz  d	      t         j                         t	        t        j                  | d	      t        j                  t        j                  |             d
       t	        t        j                  | d	      t        j                  t        j                  |             d
       t	        t        j                  | d	      t        j                  t        j                  |             d
       t        t        j                  t         j                   dz  d	      t         j                         y )Niir  gFFg<rG  rP   Fr  r^   rK  rW   )rc   rv   rO  r   r   r!   r*  arcsinhr   r   r   )rE   xlogxlinxlin2s       rF   test_ellipkinc_singularz!TestEllip.test_ellipkinc_singular  s   {{4b){{5#r*CArE:))$2BJJrvvd|4L!	#))$2BJJrvvd|4L!	#))%3RZZu5N!	#W&&ruuQw2BFF;))4%3RZZu5N!	#))4%3RZZu5N!	#))5&!4bjj6P!	#W&&vax3RVV<rI   c                 X   t        j                  d      }t        |dd       t        t        j                  d      t        dz         t        t        j                  d      d       t        t        j                  t
        j                         t
        j                         t        t        j                  t
        j                        t
        j                         t        t        j                  d      t
        j                         t        t        j                  d      d       y )	Nr  gl?r3  r   rP   r   r  g?eg@)	r!   r"   r   r   r   rc   r   r   r   )rE   eles     rF   r  zTestEllip.test_ellipe  s    nnR C 215W^^C("Q$/W^^C(#.W^^RVVG,bff5W^^BFF+RVV4W^^A&/s+-?@rI   c                    t        j                  t        dz  d      }t        j                  d      }t	        ||d       dt        z  dz  dt        z  dz  }}t        |      dz  }t        j                  ||      }t	        |dd       t        t        j                  t        dz  d	      t        dz         t        t        j                  t        dz  d
      d
       t        t        j                  t        dz  t        j                         t        j                         t        t        j                  t        dz  t        j                        t        j                         t        t        j                  t        dz  d      t        j                         t        t        j                  dd      d	       t        t        j                  t        j                  d      t        j                         t        t        j                  t        j                   d      t        j                          t        t        j                  t        j                  t        j                         t        j                         t        t        j                  t        j                   t        j                         t        j                          t        t        j                  t        j                  t        j                        t        j                         t        t        j                  t        j                   t        j                        t        j                         t        t        j                  t        j                  d      t        j                         t        t        j                  t        j                  t        j                        t        j                         t        t        j                  dd      d       y )NrP   r  rj  4   r2  #   g'?r3  r   r   r   r   r  r  gL@)r!   r   r   r"   r   r	   r   rc   r   r   r   )rE   eleincr  r  r  r7  s         rF   r!  zTestEllip.test_ellipeinc  s`   ""2a4+nnS!F3r*U3Yr"uSysJM""3q)FJ2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KrI   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   rS  r^   g%?rP   gXo
@rN   )	rc   r  r|   r  r!   r   r   r  r   r  s           rF   test_ellipeinc_2zTestEllip.test_ellipeinc_2  s     # LLq!r 	#ALLOQ"A	# c5)&q",,q:M*NPQRsRx/&r2<<<N+OQRSrI   N)rO  rP  rQ  r  r&  r(  r+  r  r  r  r!  r  rU  rI   rF   r  r  _  s5    $-
	AM:T =*	AL4TrI   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 )Nr^   r   r   r5  g      @r   rJ               r  r  y
c?
cy=B?CGֿr   y檠f?P9lb?)
r   r%   r   r   rB  r   rc   r   r   	enumeraterE   r  expected_resultsr   arrs        rF   test_elliprczTestEllipCarlson.test_elliprc  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+>?	@rI   c           
         t        t        ddd      d       t        t        ddd      dz  d       t        ddt              dk(  sJ t        j                  t        ddd            sJ t        j                  t        ddt        dd                  sJ t        j                  t        ddt        dd                  sJ t        t        ddt        j                  t        j                        j                   dz              sJ t        t        ddt        dd                  sJ t        g d	g d
g dg dg dg dg      }t        g d      }t        |      D ]  \  }}t        t        | ||           y )Nr^   r   rP   r   g`C+?r   r   rS   )r   r   r   r   r   r:  rJ  r  r   r   rJ  r  )r               ?rJ  )y             r  r  )gfe_?gi+"?gP$M?ytgFU?7?@yR<8*y{62?z)r   r&   r   rc   r  rB  r   r   r  tinyr   r  r  s        rF   test_elliprdzTestEllipCarlson.test_elliprd  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+>?	@rI   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 )Nr^   r   rP   gPO?r   rS   )r   r   r   )rJ  r  r   )r   r   r   r  rJ  r   r  r  )r  rJ        ?      )geQO?ʞu5J?r  yp\y?kg2ΰ?gHwд?y|pF?-6Fj)	r   r'   r   rc   r  r   rB  r   r  r  s        rF   test_elliprfzTestEllipCarlson.test_elliprf  s   1a(!,1a(*@A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+>?	@rI   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 )Nr^   r   r   )r   r   r   r  r  r  )r  r  rJ  )r   g8d`?r:  gL+?g}^?y旮0?ʋW?yjN?^?gt?)	r   r(   rc   r  r   rB  r   r   r  r  s        rF   test_elliprgzTestEllipCarlson.test_elliprg6  s    1a(!,1a(#.1a(!,xx3*+++xxa3444'%(,.(* + !"%%"1"2"D"D"1"3 4  o 	@FAsGSM+;A+>?	@rI   c                    t        t        dddd      d       t        ddt        d      dk(  sJ t        t        dddd            sJ t        t        dddd            sJ t        dddt              dk(  sJ t	        g dg dg dg dg d	g d
g dg dg dg	      }t	        g d      }t        |      D ]  \  }}t        t        | ||           y )Nr^   r   r   rS   )r   r   r   r   )r   r   r:  r   )r   r   r:  r  )rJ  r  r   r   )r              r   r   )rJ  r  r   r  )r  r  r   y            ?)r   r   r:  r  )r   r   r:        )	g @?gviM?ym?\Isؿg'4Ob?go0 ?yW7?xfOA?ybv㿘ܶ.gHQ?gjߡB7E)r   r)   r   r   r   r  r  s        rF   test_elliprjzTestEllipCarlson.test_elliprjK  s    1a+Q/q!S!$+++WQ1a()))WRAq)***q!Q$+++**0-62<++- . ! "5 6  o 	@FAsGSM+;A+>?	@rI   zInsufficient accuracy on 32-bitrD  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)   rD   s    rF   test_elliprj_hardz"TestEllipCarlson.test_elliprj_hardf  sN     5 6 3 13 ;"	0 	 2 5 4 57 <"	0rI   N)rO  rP  rQ  r  r  r  r  r  r  rR  rS  rT  r  rU  rI   rF   r  r    sM    @(@0@2@*@6 [[?@0 A0rI   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   r   r   rS   r   )rc   r   m_n1_1r   r   minmax_neglog2
very_neg_mconcatenate
ms_up_to_1rD   s    rF   setup_classz.TestEllipLegendreCarlsonIdentities.setup_class|  s    iiR.V}((F2+-77DLL=+A,BCE+.%0 !0 0 ..4<<.*.//*.++*7 8rI   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'   rE   r7  s     rF   test_kz)TestEllipLegendreCarlsonIdentities.test_k  s(     OOq	72r!tR#89rI   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
        r   r   r   N)	r   r   r  r   rc   r  r   r$   r'   )rE   r  m1s      rF   test_km1z+TestEllipLegendreCarlsonIdentities.test_km1  sJ     V}!!BrBGGDM>222gb"b&9:rI   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)
        r   r   r   N)r  r   r"   r(   r  s     rF   test_ez)TestEllipLegendreCarlsonIdentities.test_e  s-     OOq	2gb"Q$&;#;<rI   N)rO  rP  rQ  r  r  r  r  r  rU  rI   rF   r  r  v  s    

8:	;=rI   r  c                   \    e Zd Zd Zd ZddZd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zy)TestErfc                 H    t        j                  d      }t        |dd       y )Nr5  g);T?r3  )r!   r.  r   )rE   ers     rF   r/  zTestErf.test_erf  s    [[B|A.rI   c                 b    t        j                  d      }t        g d      }t        ||d       y )Nr   )yTcJ5?=W?yo@n@y'ʷ@g	@y"[

@,y]+@yld&@-;'j'>@rN   )r!   	erf_zerosr   r   )rE   erzerzrs      rF   test_erf_zeroszTestErf.test_erf_zeros  s/    " - .
 	"#d1-rI   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)NrY   r\  g{Gz?rP   r   r^   rJ  ignoreallr?  )	rc   ri   rj   paretorandintr  r   isfiniter:   )rE   r
  
other_funcrX   rb   rp   rl   r  rL  rM  rM  w_realmasks                rF   _check_variant_funczTestErf._check_variant_func  s   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 rz   rB   r.  rM  s    rF   <lambda>z.TestErf.test_erfc_consistent.<locals>.<lambda>  s    a&**Q-' rI   r   r>  r?  )r  rB   r4  rD   s    rF   test_erfc_consistentzTestErf.test_erfc_consistent  s%      KK'	 	! 	rI   c                 J    | j                  t        j                  d d       y )Nc                 ^    t        j                  | | z        t        j                  |       z  S r  )rc   r   rB   r4  r  s    rF   r  z/TestErf.test_erfcx_consistent.<locals>.<lambda>  s    bffQqSkFKKN2 rI   r   rW   )r  rB   erfcxrD   s    rF   test_erfcx_consistentzTestErf.test_erfcx_consistent  s"      LL2 	! 	rI   c                 J    | j                  t        j                  d d       y )Nc                 8    dt        j                  d| z        z  S )Nr  rJ  r  r  s    rF   r  z.TestErf.test_erfi_consistent.<locals>.<lambda>  s    cFJJr!t,, rI   r   rW   )r  rB   erfirD   s    rF   test_erfi_consistentzTestErf.test_erfi_consistent  s"      KK, 	! 	rI   c                 J    | j                  t        j                  d d       y )Nc                     t        t              dz  t        j                  |  | z        z  t	        j
                  |       z  S r  )r   r   rc   r   rB   r  r  s    rF   r  z/TestErf.test_dawsn_consistent.<locals>.<lambda>  s.    d2hqj2661"Q$</&++a.@ rI   r   rW   )r  rB   r   rD   s    rF   test_dawsn_consistentzTestErf.test_dawsn_consistent  s"      LL@ 	! 	rI   c                     t         j                  t         j                   t         j                  g}t         j                  ddg}t        t	        j
                  |      |d       y )NrS   r^   r  rW   )rc   r   r   r   r!   r.  rE   rw  rN  s      rF   test_erf_nan_infzTestErf.test_erf_nan_inf  s@    (FFB?D)8%@rI   c                     t         j                  t         j                   t         j                  g}t         j                  ddg}t        t	        j
                  |      |d       y )NrP   r   r  rW   )rc   r   r   r   r!   r4  r  s      rF   test_erfc_nan_infzTestErf.test_erfc_nan_inf  s@    (FFAq>T*H5ArI   c                     t         j                  t         j                   t         j                  g}t         j                  t         j                  dg}t        t	        j
                  |      |d       y )Nr   r  rW   )rc   r   r   r   r!   r  r  s      rF   test_erfcx_nan_infzTestErf.test_erfcx_nan_inf  sE    (FFBFFA&d+XEBrI   c                    t         j                  t         j                   t         j                  g}t         j                  t         j                   t         j                  g}t        t	        j
                  |      |d       y )Nr  rW   )rc   r   r   r   r!   r  r  s      rF   test_erfi_nan_infzTestErf.test_erfi_nan_inf  sK    (FFRVVGRVV,T*H5ArI   c                     t         j                  t         j                   t         j                  g}t         j                  ddg}t        t	        j
                  |      |d       y )Nru  r   r  rW   )rc   r   r   r   r!   r   r  s      rF   test_dawsn_nan_infzTestErf.test_dawsn_nan_inf  sA    (FFD#&d+XEBrI   c                     t         j                  t         j                   t         j                  g}t         j                  t         j                  dz  z   ddg}t        t	        j
                  |      |d       y )NrJ  rA  r  rW   )rc   r   r   r   r!   rL  r  s      rF   test_wofz_nan_infzTestErf.test_wofz_nan_inf  sN    (FFRVVc\)66:T*H5ArI   N)r   )rO  rP  rQ  r/  r  r  r  r  r  r
  r  r  r  r  r  r  rU  rI   rF   r  r    sJ    /.E.A
B
C
B
C
BrI   r  c                       e Zd Zd Zy)	TestEulerc                 R   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       y # 1 sw Y   xY w)Nr   r^   rP   r  rW   )r^   r   rS   r
  )r^   r^   r   =   ii  iY  i=) il   Q~ l   10[l   $8gC
 l   2l   v}Ju: )r  dr  r  r  r   rj  )r!   eulerr   r   r|   r}   rc   r  r   r+  r   )
rE   eu0eu1eu2eu24	mathworldcorrectrm   errerrmaxs
             rF   
test_eulerzTestEuler.test_euler  s   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	 	FC,	 	s   *DD&N)rO  rP  rQ  r&  rU  rI   rF   r  r    s    -rI   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 )NrP   rN   )r!   r;  r   rE   exexrls      rF   r<  zTestExp.test_exp2  s    \\!_RrI   c                 L    t        j                  d      }d}t        ||d       y )Nr  g;f@r3  )r!   r;  r   rE   exmexmrls      rF   test_exp2morezTestExp.test_exp2more#  s!    ll3Ca(rI   c                 J    t        j                  d      }d}t        ||       y )NrP   r:  )r!   r7  r   r*  s      rF   r8  zTestExp.test_exp10(  s    ]]1Bt$rI   c                 L    t        j                  d      }d}t        ||d       y )Nr  gYs@r3  )r!   r7  r   r.  s      rF   test_exp10morezTestExp.test_exp10more-  s!    mmC Ca(rI   c                     t        j                  d      t        j                  d      t        j                  d      f}t        d      dz
  t        d      dz
  t        d      dz
  f}t        ||d       y )NrP   r   rN   r^   r3  r!   r>  r   r   r*  s      rF   r?  zTestExp.test_expm12  sY    mmAw}}Q/a0@AAqQ#a&(+!"T!,rI   c                     t        j                  d      t        j                  d      t        j                  d      f}t        d      dz
  t        d      dz
  t        d      dz
  f}t        ||d       y )NrP    @皙@r^   r3  r6  )rE   ex1exrl1s      rF   test_expm1morezTestExp.test_expm1more7  sY    }}Qc 27==3EFQ#c(1*SXaZ0!#eA.rI   N)	rO  rP  rQ  r<  r1  r8  r4  r?  r<  rU  rI   rF   r(  r(    s     
)
%
)
-
/rI   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 )NrW   )r4   r3   )r  rL  rX   s     rF   assert_funcz(assert_really_equal.<locals>.assert_funcI  s    !%1?1ad3SrI   c                     t        j                  | j                        rt        j                  | j                        sJ y r  )rc   r   r   rK  r  s    rF   assert_complex_nanz/assert_really_equal.<locals>.assert_complex_nanL  s*    xxBHHQVV$444$4rI   ztypes not equal: z, rW   r#  N)
type
isinstancerc   ndarrayr  ziprh   assert_really_equalr   r8   )r  rL  rX   r?  rB  elem_xelem_ys     `    rF   rG  rG  =  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rI   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
                  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=        Z/d> Z0e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?                                    Z1e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@                      Z2ej
                  j                  dA ed$d%            ej
                  j                  d edBdCdD            dE               Z3ej
                  j                  dA e' ed$d%            d/dCgz         ej
                  j                  d e' edd1             e' ed1dFd;            z         dG               Z4dH Z5e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                                    Z6e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                             Z7ej
                  j                  ddd	g      ej
                  j                  dg d      ej
                  j                  dAdKdLddMdd ej                  g      dN                      Z8ej
                  j                  ddd	g      ej
                  j                  dg d      ej
                  j                  dAd! ej"                  d      gd!dOg      dP                      Z9e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rm   r"  zeror^   )r!   
factorialkrc   modpowerrj  r  maximum)rE   rl   rm   r"  extendrrw  s          rF   factorialk_refz%TestFactorialFunctions.factorialk_refb  s    %%a1D99"f,BFF1aL!xxAE19%acAg(>>PQRSPSVWPWAXXbjjA&&&rI   zexact,extend))TrN  )FrN  )FrB  c                    ||d}t        j                  t        j                  di |      sJ t        j                  t        j                  di |      sJ t        j                  t        j
                  dddi|      sJ y )Nr"  rS  rm   r   r^   )rc   isscalarr!   	factorial
factorial2rO  )rE   r"  rS  kws       rF   "test_factorialx_scalar_return_typez9TestFactorialFunctions.test_factorialx_scalar_return_typek  ss     /{{7,,5"5666{{7--626777{{7--;1;;<<<rI   rl   )rS   r  r"  TFc                     d|i}t        t        j                  |fi |d       t        t        j                  |fi |d       t        t        j                  |fddi|d       y )Nr"  r   rm   r   )r   r!   rZ  r[  rO  )rE   r"  rl   r\  s       rF   $test_factorialx_negative_extend_zeroz;TestFactorialFunctions.test_factorialx_negative_extend_zeros  sa     uW&&q/B/3W''0R0!4W''5Q5"5q9rI   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  )rs  r   r^   )r   r   r^   r^   r  rW   rm   r   )	rc   r   
native_intr  rG  r!   rZ  r[  rO  )rE   r"  r\  rX   rl   rN  s         rF   *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RrI   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 )NrS  rB  gRc/a_%g:\Oag@g*BZ're  go	08G)?goNb]gMxcQgNy?g=u?g7K [n<rW   rm   r   r   )r   r!   rZ  r[  rO  )rE   rl   r\  exp_1exp_2exp_krX   s          rF   'test_factorialx_negative_extend_complexz>TestFactorialFunctions.test_factorialx_negative_extend_complex  s&   	"-..0 .-.0 /--/ ))!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SrI   rK  r   rA  n_outerc                 J    ddifd} |||z           |d|z  |z          y )NrS  rB  c                 
   t        t        |       d      }t        j                  d      }|rt        j                  d      nt        j                  d      }t        t        j                  | fi |       t        t        j                  | dz  fi |       t        t        j                  | dz  fddi|       d}t        t        j                  | |z  fd|i|       t        t        j                  | gfi d   |       t        t        j                  | dz  gfi d   |       t        t        j                  | dz  gfddid   |       t        t        j                  | |z  gfd|id   |       y )	Nr#  nan+nanjr   rP   r   rm   y      ?       r   )
r8   rC  rc   
complex128r  rG  r!   rZ  r[  rO  )rl   
complexifycomplex_nanr   r#  r\  s        rF   _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;WrI   i rU  )rE   rl  rK  rs  r\  s       @rF   -test_factorialx_negative_extend_complex_poleszDTestFactorialFunctions.test_factorialx_negative_extend_complex_poles  s5     	"	X( 	w~w 4'(rI   boxedrS  rN  rB  r   rJ  ro  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)NFrW  r   rm   r   r  r#  r   r  r#  Unsupported data type.*r  rB  In order to use non-integer.*ro  r   rN  r   r   )r!   rO  rC  rZ  r8   rR  r   rH  rc   rp  r  r  rG  )rE   r|  rl   rS  ru  r\  permissible_typestypes_need_complex_extrq  rN  neg_inf_resultr  s               rF   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  r^   )rS  r   Trm   r"  rS  )rR  r   rH  r!   rZ  r[  rO  )rE   rS  s     rF   test_factorialx_raises_extendz4TestFactorialFunctions.test_factorialx_raises_extend  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levelsr^   r   c                    dfd	fd}t        j                   ddg            }dt        j                  d      gdt	        j
                  dd	
      gdt	        j                  ddd	
      gd} |t	        j                  ||
      |d           |t	        j
                  ||
      |d           |t	        j                  |d|
      |d          y )Nr^   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   r^   rU  r  rm   _nest_mes     rF   r  zDTestFactorialFunctions.test_factorialx_array_shape.<locals>._nest_me  s&     AvA!,,rI   c                     t        j                   |      t              }t        | j	                  t         j
                         |j                  t         j
                               y )Nrm   r  )rc   r   objectr   r  r  )resnucleusr   r  r  s      rF   rs  zBTestFactorialFunctions.test_factorialx_array_shape.<locals>._check	  sB    ((8Gv6fEC CJJrzz2JCJJrzz4JKrI   r   r  r  r#  r   Tr!  rS  r   r  rP   rX  )rc   r   mathrZ  r!   r[  rO  )rE   r  r"  rs  rl   exp_nucleusr  s    `    @rF   test_factorialx_array_shapez2TestFactorialFunctions.test_factorialx_array_shape  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ErI   r  dimc                    t        j                  d||      }dddd}t        t        j                  ||      t        j                  |d   |	             t        t        j
                  ||      t        j                  |d
   |	             t        t        j                  |d|      t        j                  |d   |	             y )Nr   )r  ndminr#  r   rS  r  r!  r^   r  rP   r   )rc   r   r   r!   rZ  r[  rO  )rE   r  r  r"  rl   r   s         rF   test_factorialx_array_dimensionz6TestFactorialFunctions.test_factorialx_array_dimension	  s     HHQe3/"$))!59Qs3	5**1E:Qs3	5**1au=Qs3	5rI   levelc                    dfd	 dg|dz
        }dddd}|rt         nt        } |t        j                  ||	      t	        j
                  |d   |
              |t        j                  ||	      t	        j
                  |d   |
              |t        j                  |d|	      t	        j
                  |d   |
             y )Nr^   c                 ,    |dk(  r| S  | g|dz
        S r$  rU  r  s     rF   r  zCTestFactorialFunctions.test_factorialx_array_like.<locals>._nest_me$	  s"    AvQqS))rI   r   r  r#  r   rS  r  r!  r  rP   r   rX  )r   r   r!   rZ  rc   r   r[  rO  )rE   r  r"  rl   r  r?  r  s         @rF   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	;rI   c                     ||d|rt         nt        fd} | |d              | |d              |t        j                  d|              |t        j                  ddg|             y )NrW  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 )Nrm   r   )	rD  rc   rE  r  r0  r!   rZ  r[  rO  )rl   n_refr?  r\  s     rF   rs  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<<>rI   r   r^   r  )r   r   rc   r   )rE   r"  rS  r  rs  r?  r\  s        @@rF   test_factorialx_uintz+TestFactorialFunctions.test_factorialx_uint4	  sb    
 /,1(	> 	uQxuQxrxx'(rxxAe,-rI   rZ   r2  rS  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 )Nr<   t0=r  Tr!  FrW   )sysplatformr   r}   r!   rZ  r  rE   rl   rX   s      rF   test_factorial_accuracyz.TestFactorialFunctions.test_factorial_accuracyG	  s~    
 /uUg//>?))!59	F))1#T:AA%H))1#U;$	HrI      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   r<   +6=r  FrW   rB  rW  )r  rZ  r   r!   r  r  r}   r   rE   rl   r#  rX   r\  s        rF   test_factorial_int_referencez3TestFactorialFunctions.test_factorial_int_referenceS	  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LrI   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)
Nr<   r  r  rW   r   `exact=True` only supports.*r  Tr!  )r  r  r   r!   rZ  rR  r   rH  )rl   rN  rX   s      rF   rs  zETestFactorialFunctions.test_factorial_float_reference.<locals>._checkg	  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+r   gr?g(\?gc?g333333@g4s@g333333&@gމOAfffff@@g	²Gg     K@gC$JOglS@g }WgX@gX>%`g\CSe@gG=rU  rE   rs  s     rF   test_factorial_float_referencez5TestFactorialFunctions.test_factorial_float_referencef	  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8rI   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 )	Nr<   rg  V瞯<FrB  rW  rW   r   )r  r  r   r!   rZ  rl   rN  rX   r\  s       rF   rs  zGTestFactorialFunctions.test_factorial_complex_reference.<locals>._check~	  s]    LLG35D I6BG--a626tLG--qc8R8;XDQrI   r  gkﴑ[?rN                ykﴑ[?               @       @yB}ۿ?gH.gK	!@y      -C6?yI{xQrU  r  s     rF    test_factorial_complex_referencez7TestFactorialFunctions.test_factorial_complex_reference}	  sA    	R 	t34y#=>v QRw!56|&STrI   content)z[]z[1]z[1.1]z[NaN]z[NaN+i*NaN]z[NaN, 1]c                 :   |t         u rt        rt        j                  d       |t        j
                  u r't        d |D              rt        j                  d       |t        j                  k(  r't        d |D              rt        j                  d       ||d}|d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r  rc   r   r{   .0r  s     rF   	<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r8   rC  r  s     rF   r  zKTestFactorialFunctions.test_factorial_array_corner_cases.<locals>.<genexpr>	       &Sa|DGS'A&S   !rW  r   r^   r  r  rB  Incompatible options:.*r  r~  r  r#  r  r   r  r  rW   )r  r5   rR  skiprc   r0  anyr  lenr   r   rH  r!   rZ  r8   r  rh   r  rp  rc  rG  rE   r  r  r"  rS  r  r\  rl   r  r  r  cxrN  s                rF   !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+2jrw  rx  ry  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)NrW  rB  r  r  r   r  r#  r  r  ro  r   r  r^   )rR  r   rH  r!   rZ  r8   rC  rc   r   rp  r  rG  r   rj  rE   rl   r"  rS  r\  rq  rN  s          rF   "test_factorial_scalar_corner_casesz9TestFactorialFunctions.test_factorial_scalar_corner_cases	  s   
 /Y5z1JK +!!!*r*+ +d1gS#tDz'BCz1JK +!!!*r*+ +$q'3'Fi,?z1PQ +!!!*r*+ +Y"((1+ I-M<Q3MJ4>r}}Z0BJJuDUH 1 1! :r :HE|DGS1z1OP +!!!*r*+ + **133W]]1q55IJ#+ ++ ++ ++ +s/   HHH,H'HHH$'H0rI  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 )Nr<   +=r  Tr!  FrW   )r  r  r   r}   r!   r[  r  r  s      rF   test_factorial2_accuracyz/TestFactorialFunctions.test_factorial2_accuracy	  s~    
 /uUg00$?@**1E:	G**A3d;BB5I**A3e<4	IrI   c           
         t        j                  t        j                  t	        t        |dd            d      }t        |t        j                  |d             t        |t        j                  |gd      d          t        j                  dk(  rdnd}t        |      }t        |t        j                  |d	      |
       t        |t        j                  |gd	      d   |
       d	dd}|dz  dk(  rIt        |t        j                  |fi ||
       t        |t        j                  |gfi |d   |
       y y )Nr   r  r^   Tr!  r<   r  r  FrW   rB  rW  rP   )	functoolsreduceoperatormulr)  r|   r   r!   r[  r  r  r}   r   r  s        rF   test_factorial2_int_referencez4TestFactorialFunctions.test_factorial2_int_reference	  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 rI   c                    d } |dd        |dt        j                  d      t        j                  dt        j                  z        z          |dt        j                  d      t        j                  dt        j                  z        z          |dd        |d	d
        |dd        |dd        |dd       y )Nc                     d}ddd}t        t        j                  | fi |||       t        t        j                  | gfi |d   ||       y )Nr  FrB  rW  rW   r   )r   r!   r[  r  s       rF   rs  zHTestFactorialFunctions.test_factorial2_complex_reference.<locals>._check
  sP    D I6BG..q7B7MG..s9b9!<hTRrI   r   r  rN   rP   rt   r  g^D]?JO?r  y^D]?JO?        y      @      @y&0!:?gSt$gtQ*@y       -C6?yqj?x*)r!   r[  r  r   r   r  s     rF   !test_factorial2_complex_referencez8TestFactorialFunctions.test_factorial2_complex_reference
  s    	S 	q1q7--a0499Q[3IIJrG..r2TYYq477{5KKLt45y#>?v OPw!67|&UVrI   c                 :   |t         j                  k(  r't        d |D              rt        j                  d       |t         j
                  k(  r't        d |D              rt        j                  d       ||d}|d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r  r  r  s     rF   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     rF   r  zLTestFactorialFunctions.test_factorial2_array_corner_cases.<locals>.<genexpr>&
  r  r  rW  r   r^   r  rB  r  r  r~  r  r  r#  r  r  rW   )rc   r0  r  rR  r  r  r  r   r   rH  r!   r[  r8   r  rh   r  rp  rc  rG  r  s                rF   "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)NrW  rB  r  r  r   r  r#  r  r  ro  r   rm   rP   r  rW   )rR  r   rH  r!   r[  r8   rC  rc   r   rp  r  rG  rU  r  s          rF   #test_factorial2_scalar_corner_casesz:TestFactorialFunctions.test_factorial2_scalar_corner_casesH
  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rm   r  rt   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 )Nr<   r  r  TrM  FrW   )r  r  r   r}   r!   rO  r  )rE   rl   rm   rX   s       rF   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rI   r:  c           
         t        j                  t        j                  t	        t        |d|             d      }t        |t        j                  ||d             t        |t        j                  |g|d      d          t        j                  dk(  rdnd}t        |      }t        |t        j                  ||d      |	       t        |t        j                  |g|d      d   |	       |dd
d}||z  dk(  rKd}t        |t        j                  |fi ||	       t        |t        j                  |gfi |d   |	       y y )Nr   r^   Tr!  r<   gt =r>  FrW   rB  r  r  )r  r  r  r  r)  r|   r   r!   rO  r  r  r}   r   )rE   rl   rm   r#  rX   r\  s         rF   test_factorialk_int_referencez4TestFactorialFunctions.test_factorialk_int_referenceo
  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 rI   c           	         d } |ddt        j                  ddd              |ddd        |d	dd
        |ddd        |ddd        |ddd        |ddd        |ddd        |ddd        |ddd        |ddd        |ddd        |ddd        |ddd         |d!dd"       y )#Nc                     d}|ddd}t        t        j                  | fi |||       t        t        j                  | gfi |d   ||       y )Nr>  FrB  r  rW   r   )r   r!   rO  )rl   rm   r   rX   r\  s        rF   rs  zHTestFactorialFunctions.test_factorialk_complex_reference.<locals>._check
  sR    D5I>BG..q7B74HG..s9b9!<cMrI   rN   r   TrM  )rl   rm   r   r   gD!)@g      @gNq53@r  gG`@rI  g     @y             @y            @y      @      @yRsU#[@y      @      y?M,a?y@/n?'?r  gyL_ǚZ?r  yyL_ǚZ?        g333333@gffffffyNV?*V7?g333333y)kh]bg):giߑT@y      -C6?y(5E?WT)r!   rO  r  s     rF   !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WrI   c                 <   |t         j                  k(  r't        d |D              rt        j                  d       |t         j
                  k(  r't        d |D              rt        j                  d       d||d}|d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r  r  r  s     rF   r  zLTestFactorialFunctions.test_factorialk_array_corner_cases.<locals>.<genexpr>
  r  r  r  c              3   F   K   | ]  }t        t        |      d         ywr  r  r  s     rF   r  zLTestFactorialFunctions.test_factorialk_array_corner_cases.<locals>.<genexpr>
  r  r  r   r  r   r^   r  rB  r  r  r~  r  r  r#  r  r  rW   )rc   r0  r  rR  r  r  r  r   r   rH  r!   rO  r8   r  rh   r  rp  rc  rG  r  s                rF   "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  rB  r  r  r   r  r#  r  r  ro  r   r  rW   )rR  r   rH  r!   rO  r8   rC  rc   r   rp  r  rG  rU  )rE   rl   rm   r"  rS  r\  rq  rN  s           rF   #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rS   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)
Nr^   r  rN  r  r   zFor `extend='zero'`.*r  r   zParameter k cannot be zero!)r8   rC  rR  r   rH  r!   rO  )rE   rm   r"  rS  ru  rl   r\  r=  s           rF    test_factorialk_raises_k_complexz7TestFactorialFunctions.test_factorialk_raises_k_complex
  s    
 QCau7V1CDGS)q1u-z5 ,""1++, ,!Vz1NO ,""1++, , q'B', ,, ,s   CCCCrz  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)Nr^   r  r  r  )rR  r   rH  r!   rO  )rE   rm   r"  rS  ru  rl   r\  s          rF   test_factorialk_raises_k_otherz5TestFactorialFunctions.test_factorialk_raises_k_other  sR     QCau7]]:-FG 	(q'B'	( 	( 	(s   A		Ar4  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  r^   )r6   keysrc   r   r7   r   r!   rO  r  r1   r0  r*  int32r+  r  getr  )rE   rm   r"  rS  r\  rl   r  s          rF   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BrI   c                    t        j                  t         j                  dddt         j                  g      }t        j                  t         j                  dddt         j                  g      }t        t	        j
                  |d      |       t        j                  t        d      5  t	        j
                  |d	       d d d        y # 1 sw Y   y xY w)
Nr^   rP   r   rT   Fr!  r  r  T)	rc   r   r   r   r!   rZ  rR  r   rH  rE   r  rN  s      rF   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)<rO  rP  rQ  rU  rR  rS  r  r]  r`  rd  rk  rt  rc   r   r  rp  r   
datetime64r!   rZ  r[  rO  r  r  r|   r  r{   int8int16r  r0  uint8uint16uint32uint64r  r  r  r  r)  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rU  rI   rF   rK  rK  a  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;" [[WrxxBIIryy&QR[[^RT.T S.  [[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(-rI   rK  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/?!ۿ)rG  GM?pBR?)y      @        r  r  )y              @y       GMܿy        pBR?)y              gGMܿgpBR߿)y             y        GM?y       pBR߿r   r  c                 p    t        t        j                  |            }t        |t        ||g      d       y )Nr3  )r   r!   re  r   )rE   rM  r  r#  frss        rF   test_fresnel_valueszTestFresnel.test_fresnel_values2  s,    @ GOOA&'!#uaV}a8rI   c                 (   t        j                  d      \  }}t        |t        g d      d       t        |t        g d      d       t        j                  |      d   }t        j                  |      d   }t        |dd       t        |dd       y )Nr   )y @X9v?y^I@48E?y=
ףp@+?y@eX?yO@Ǻ?r   )y.1?ǘ?yʡE6@:#J{/?yq-
@y&1?yh o@߾3?yW2q@qh?r   r^   rj  )r!   fresnel_zerosr   r   re  )rE   szoczovals1vals2s        rF   test_fresnel_zeroszTestFresnel.test_fresnel_zerosW  s    ((+S!#"' ): #; <=	> 	"#"' ): #; <=	> $Q'$Q'!%"-!%"-rI   c                 x    t        j                  d      \  }}t        j                  d      }t        ||d       y )NrT   r4  )r!   r  fresnelc_zerosr   )rE   r  r  frcs       rF   test_fresnelc_zeroszTestFresnel.test_fresnelc_zerosj  2    ((+S$$Q'!#c"-rI   c                 x    t        j                  d      \  }}t        j                  d      }t        ||d       y )Nr   r4  )r!   r  fresnels_zerosr   )rE   r  r  r  s       rF   test_fresnels_zeroszTestFresnel.test_fresnels_zeroso  r  rI   N)rO  rP  rQ  rR  rS  r  rc   r   r  r  r  r   rU  rI   rF   r
  r
  1  sx    [[Y7=	

	
 	&,)/*	c
&&$;) >9?>9.&.
.rI   r
  c                      e Zd Zd Zd Zd Zed        Zed        Zd Z	d Z
ej                  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 rh  )r!   rj  r   )rE   gams     rF   rk  zTestGamma.test_gammav  s    mmASrI   c                     t        j                  d      }t        t        j                  d            }t	        ||d       y )Nr   r3  )r!   rp  r   rj  r   )rE   gamlnlngams      rF   rq  zTestGamma.test_gammalnz  s/    "GMM!$%E%*rI   c                 v    t        j                  dd      }t        j                  dd      }t        ||d       y )Nr   r3  )r!   rm  gammaincinvr   )rE   gccinvgcinvs      rF   rn  zTestGamma.test_gammainccinv  s2    %%b,##Br*F5+rI   c                 N   t        j                  dd      }t        j                  d|      }t        |dd       t        j                  dd      }t        j                  dd      }t        d|d       t        |dd       t        j                  dd      }t        d	|d       y )
NrQ   r^   rS  g?g`	\;r  r'  gmb<g      &@)r!   r)  gammaincr   rE   rL  r  s      rF   test_gammaincinvzTestGamma.test_gammaincinv  s    2&R"Ac!$R&$:;D!R0A5rB$JKD!R0rI   c                     dt        j                  dd      dt        j                  dd      dg}|D ]<  }t        j                  d|      }t        j                  d|      }t        ||d       > y )	Nr5  r   gCs?r^   g^F    ?rQ   r   rW   )rc   r  r!   r)  r-  r   )rE   ptsxprL  r  s        rF   test_975zTestGamma.test_975  so    
 ||D!$l||D!$l4  	/B##B+A  a(AAr.	/rI   c                 x    t        j                  d      }dt        j                  d      z  }t        ||d       y )Nr3  r^   )r!   r  rj  r   )rE   rgamrlgams      rF   r  zTestGamma.test_rgamma  s/    ~~a '--""Dq)rI   c                 B    t        t        j                  d      d       y )NrS   r   )r   r!   r  rD   s    rF   test_infinityzTestGamma.test_infinity  s    W^^B'+rI   z
x,expectedru  r   ir       i c   rI  gP²Zdbc                 B    t        t        j                  |      |       y r  )r   r!   rj  r   s      rF   
test_poleszTestGamma.test_poles  s      	7==+X6rI   N)rO  rP  rQ  rk  rq  rn  r9   r/  r3  r  r8  rR  rS  r  rc   r   r   r|   fullr<  rU  rI   rF   r"  r"  u  s   +
,
 	1 	1 
/ 
/*
, [[ vvgrvv 01C[BFF7BFF+,3]GBGGB/05#r"GBGGB$78$%x0	
77rI   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                 p    t        t        j                  dd      t        j                  dd       d       y Nr^  rP   r   rj  )r   r!   r  rD   s    rF   
test_negv1zTestHankel.test_negv1  '    GOOBq1GOOAa4H3H"MrI   c                     t        j                  dd      }t        j                  dd      t        j                  dd      dz  z   }t	        ||d       y Nr^   rG  rJ  r3  )r!   r  r  rC  r   )rE   hank1hankrls      rF   r  zTestHankel.test_hankel1  sC    "%**Qr"WZZ"%5b%88E&+rI   c                 p    t        t        j                  dd      t        j                  dd       d       y rA  )r   r!   r  rD   s    rF   test_negv1ezTestHankel.test_negv1e  +    G,,R2W5E5Ea5J4JBOrI   c                     t        j                  dd      }t        j                  dd      t        d      z  }t	        ||d       y )Nr^   rG  y       r3  )r!   r  r  r   r   )rE   hank1ehankrles      rF   r  zTestHankel.test_hankel1e  s9    !!!B'//!B'D	1F71-rI   c                 p    t        t        j                  dd      t        j                  dd       d       y rA  )r   r!   r  rD   s    rF   
test_negv2zTestHankel.test_negv2  rC  rI   c                     t        j                  dd      }t        j                  dd      t        j                  dd      dz  z
  }t	        ||d       y rE  )r!   r  r  rC  r   )rE   hank2hankrl2s      rF   r  zTestHankel.test_hankel2  sC    "%::a#gjj2&6r&99E'!,rI   c                 p    t        t        j                  dd      t        j                  dd       d       y rA  )r   r!   r  rD   s    rF   
test_neg2ezTestHankel.test_neg2e  rJ  rI   c                 v    t        j                  dd      }t        j                  dd      }t        ||d       y )Nr^   rG  r3  )r!   r  r   )rE   hank2ehankrl2es      rF   test_hankl2ezTestHankel.test_hankl2e  s2    !!!B'##Ab)F8A.rI   c                     t        j                  dd      }t        j                  |j                        sJ t        j
                  |j                        sJ y rA   )r!   r  rc   r   r   isposinfrK  rE   r  s     rF   test_hankel2_gh4517zTestHankel.test_hankel2_gh4517  s>    ooa#xx!!!{{388$$$rI   N)rO  rP  rQ  rB  r  rI  r  rO  r  rT  rX  r\  rU  rI   rF   r?  r?    s3    N,
P.
N-
P/
%rI   r?  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       y rE  )r!   h1vpjvpyvpr   )rE   h1h1reals      rF   	test_h1vpzTestHyper.test_h1vp  C    \\!B++a#gkk!B&7&::Bva(rI   c                     t        j                  dd      }t        j                  dd      t        j                  dd      dz  z
  }t	        ||d       y rE  )r!   h2vpra  rb  r   )rE   h2h2reals      rF   	test_h2vpzTestHyper.test_h2vp  rf  rI   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   rW   r   r   r  r   )g      rS   r   r^   r]  )g̷?g3|t-Ք?r   go?g{h?rA  r   r]  r  )r   r^   r   )r   gc?rm  rP   r   r^   )
r   r!   hyp0f1rc   r   r  rB  vstackassert_raisesrH  )rE   r  rN  r  x2s        rF   test_hyp0f1zTestHyper.test_hyp0f1  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	3rI   c                 H    t        j                  dd      }t        |d       y )N皙?y      ?      ?y;EG?uM?)r!   ro  r   r[  s     rF   test_hyp0f1_gh5764zTestHyper.test_hyp0f1_gh5764  s     nnS,/C!LMrI   c                    t        j                  ddd      }t        |dd       t        g g dg dg dg dg d	g d
g dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg d g d!g d"g d#g d$g d%g d&g d'g d(g d)g d*g d+g d,g d-g d.g d/g d0g d1g d2g d3g d4g d5g d6g d7g d8g d9g d:g d;g d<g d=g d>g d?g d@g dAg dBg dCg dDg dEg dFg dGg dHg dIg dJg dKg dLg dMg dNg dOg dPg dQg dRg dSg dTg dUg dVg dWg dXg dYg dZg d[g d\g d]g d^g d_g d`g dag dbg dcg ddg deg dfg dgg dh      }|D ];  \  }}}}t        j                  |||      }t	        t        ||z
        |z  dik         = y )jNrG  rH  g?rR   )g{*= g˱a)g5=gvX@)g)AI@gDAhg$Pj)g~٭@)g,qUp,g@=&?gX 3@gZ@)g\@g88*@g\ֳ!=@g   ƞA)gAZ;gOFA'gxŝO<g_Dc D)g^g@g V*E7g4)3@g7-XtD)gΧU(@g2Tj8g$@g  LhB)ge;@gJgogr@g `屫B)g5'.@gqZ=g7߈Y.g8w)gB,@g"^#@grT[	R3@g  B)gYgN],*@g*!j,g1@)g#r @gq{874*gWs%o.@gMdD)g8|.2@g*!,g?I(#@gJ
r .)gu8g#=)@g*'1g)ψvA)g%0N:@gUx1@gx@gr),c@)g:M8@gGb+=@g3ҜV/@gX9ҙim@)g"dxz@gqKgv7##@g  >B)g kx-gD8L+8@g܈2g72LU@)gtd@Q4h6@g%@}gr3b @gu߯ѡ)g򋷺?g"p$`E2@gY|T3g\D?)gV-(+@g$[3@g;/@gEQwв@)g[fgLL4gQV@g0#.@)g;@g/?jvgx.<N&@g^I)g+9gX[?gbZSH%@g5/)@)g}RgŢ	@g},*@g6@g1w-@)gRA(g_@g5A} :=g   FA)gQz5@gq.#gTq&gc ?)gφ%#gZV@
g%@0@g   Syd)gB۽ܟ%@g*>8gV@'g	ʦ)g/H:gn@S g)bǙ9@g  9)gT쁹3!gD gkLFr%@g3333`4A)g:k
g\=)'gi,k9gbx?)giXwg-CwU5@g'jin9gX5@)gb@gTy4#/@g]pH=gIw?)g63@g2XxM:@g~?^0gW1?)g37g R{@gicx.4?gmm?)gv܏%7@g9Ma%=g}ygGr##@)gG8-xы.@gǂ@ghb(@g  A)gw1@gq2@gO],@g0ɷ-X@)g2@g́y#<@gͣx?g]?)g];˄f$@g1}0g_9g8ڃ@)g:!ω1g)q(@gg2gv%)A)gYN:+gn	Ȱ-?g>gZd|I.A)gr/K@g\}L9@g*gΙ?)gQq5V@g?)@g'@0@glۭ`@)gVn:gRQ0gT&g QC)gR4 8gi+gK @g{G)gtiq+g(O?3g	1=@g  8cB)g|>oϘg\!<@g"?4V?g%c\q?)g gpfP!gAO:@g,\)g=R8@g%;gz3@g~0G)g.CVl@ge< .@g9@gkq1A)g=~$gpR7@g 77g,ǆ@)g^g{)gRA2@g  dL)gf=4,R@gyO-g#ޕ~8@g)g|ݩ%P4g:<9@gKzs4g$(~O4@)g2y3@g1$6g&TpxA6gG!JA)gf^XH
^;@g7r:@g`,/@gi{dA)gihx@g!B8(@g7j*@gh@)glmF<gpO4@g`2"@g-)gnV3!2@g.mq1g!Z{.@grOE)gs`m@gzAUguC=V#@g  \)gPL-(@g,9$"9g6u7@geRF)gw8gv=5@gjRW+g(\-@)gyg~=@g4MVgwz:@)g^0g+7%g-@j81g5ׂ,j)gj4gz0g-</;gݽ]
D)gN43@g}W6@gLUS!9gɍF>)g Q4@g=}gȮ5@g]nhgF)gV9g9gf9,#gF|}fv?)g=^ee;@gy}2g'T> g#o@)g+5g;gN8Cg8@g   bkA)gSx+26@g@gI0gSMC)gT*0@g`<6gWy5@gǟRj)gӰk
g/:?gJLHR"@gxu-)gKu@g6gt8_x7@gd;=')g+:;@gBͤ10@g";gK$?)gp @g dg	=@g=6` F)gTbR.g9:g3@gUfgRbKZ@)g!g%P73;g]?gr	y?)g)Yv2gȹq@g/3g   A)g?j/|g7:@g#~oݽ?g8pE?)gPj/gS"X)gYgt0N?)ggo&	xT7@g-hT@#@g.;%r?)g'_@gɖ@7g:Kڞ$@g [B)gk5ں9gѼ:gk%tp;@g  .<^)gf:OI&gO/g#01|2gf`Y)gqv~@guFd9@gz+S7gF1/$?)gx3g~[6:g;s9@gKw*1@)gP@gv;K,gҬd&<@g!s)gֈ`|.gOwx=@g+MK<gUU@)gکI@g©jG1g4g؃66@g(4ν4E)gS>?gD-lgSL,c<gԉE4?)gd?A g3$)glx^?gs>|T?)g(%@g:ĉ$@g~^gv2gJHF&?)g}r":@g3\z;@go)@g+hA)g@')"gVv/@guQU-gfy2yt@)gM6y%$g/;R#@g):@gw%",6Կ)g%x'g$6g5gu$9?)glkC9g<tF8gp?g ?ra  )r!   r  r   r   r   r[  )rE   hyp1ref_datar\  r]  r#  rN  r  s           rF   r  zTestHyper.test_hyp1f1  s   ~~bB'D"4Q7  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:;	<rI   c                 z    t        j                  ddd      }t        j                  ddd      }t        ||d       y )Nr   r]  g7B.g|:B.r4  r!   r  r   )rE   rx  hyp2s      rF   test_hyp1f1_gh2957zTestHyper.test_hyp1f1_gh2957  s2    ~~c38~~c38D$+rI   c                 L    t        j                  ddd      }t        |dd       y )Nr   r]  ig<`?r4  r{  )rE   hyps     rF   test_hyp1f1_gh2282zTestHyper.test_hyp1f1_gh2282  s!    nnS#u-C!5r:rI   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 ]5  \  }\  }}}}}t	        j                  ||||      }t        ||dd&|z  '       7 y )(Nr   r^   r]  |Gz?r  g?g|Gzr   r  rP   r  ru  )r   r  r]  r  gYi2?r^  r   g433333?rN   r3  r   rS   r  r   g      ?r         @g      gUUUUUUտg  @gUUUUUU?g)r]  r  r         $gEciH!@)r  r   r^   r  gzG?)rP   r^  r^   r  gy&1|)r  r   r^   r  g"nN%@?)rP   rb  r^   r  g!J)rS  |      %@rY  gzS;)rS  r  g      %rY  g[B.VP<test #%derr_msg)r   r   r	   r
   r!   rj  r   r   r  r  r   )	rE   r   r   r\  r]  r#  r  rb  cvs	            rF   r  zTestHyper.test_hyp2f1  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 	BA1aA1a+BAq*q.A	BrI   c                 L   t        j                  ddd      }t        |dd       g dg d}}t        |      t        |      }}d}t        j                  |||      }t        t        t        |z        z  t        j                  |||      t        j                  d|z   |z
        t        j                  |      z  z  |d|z
  z  t        j                  d|z   |z
  d	|z
  |      z  t        j                  |      t        j                  d	|z
        z  z  z
  z  }t        ||d
       y )Nr^   rG  r:  g D?rR   )rH  r  333333?g)r]  g	@rI  g	r   rP   r4  )	r!   hyperur   r   r   r	   r  rj  r   )rE   val1r\  r]  rM  hypuhprls          rF   test_hyperuzTestHyper.test_hyperu  s   ~~aC(D1- !4!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 	"$tB/rI   c                 H    t        t        j                  ddd      dd       y )Nr^   r]  g3333334@g(¨?r4  )r   r!   r  rD   s    rF   test_hyperu_gh2287zTestHyper.test_hyperu_gh2287  s    GNN1c480"	6rI   N)rO  rP  rQ  re  rk  rs  rv  r  r}  r  r  r  r  rU  rI   rF   r^  r^    s9    )
)
34Nr<h,
;"BH06rI   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                 p    t        t        j                  d            }t        |t        ddg      d       y )Nr  gbɃ?gΝJ ֿr3  )r   r!   r  r   )rE   it0s     rF   r  zTestBessel.test_itj0y0  s2    GNN2&'!&(<=>	
rI   c                 p    t        t        j                  d            }t        |t        ddg      d       y )Nr  gbqTtt?g/]ooۿr3  )r   r!   r  r   )rE   it2s     rF   r  zTestBessel.test_it2j0y0  s2    GOOB'(!(*>?@	
rI   c                 l    t        t        j                  dd      t        j                  dd             y Nr   rP   r^  )r   r!   r  rD   s    rF   test_negv_ivzTestBessel.test_negv_iv  s!    WZZ!_gjjA&67rI   c                 t    t        j                  d      }t        j                  dd      }t        ||d       y NrG  r   r3  )r!   r  r  r   rE   ozozrs      rF   r  zTestBessel.test_j0  +    ZZ^jj2Bs1%rI   c                 t    t        j                  d      }t        j                  dd      }t        ||d       y NrG  r^   r3  )r!   r  r  r   rE   o1o1rs      rF   r  zTestBessel.test_j1  r  rI   c                 J    t        j                  dd      }t        |dd       y )Nr^   r  ;x?r3  )r!   r  r   )rE   jnnrs     rF   r  zTestBessel.test_jn  s    zz!BD!5a8rI   c                 p    t        t        j                  dd      t        j                  dd       d       y rA  )r   r!   r  rD   s    rF   test_negv_jvzTestBessel.test_negv_jv  &    GJJr!,wzz!A.>CrI   c                     g dg dg dg dg dg}t        |      D ]1  \  }\  }}}t        j                  ||      }t        ||dd|z         3 y )	N)r   rG  g
Ye?)UUUUUU?:0yE>g˿+>)r  r`   g)%->)g@r`   g5c)!9)r  r:  g%,Ϳr3  r  r  )r  r!   r  r   )rE   r   r   rb  r  rL  ycs          rF   r  zTestBessel.test_jv  s\    /5662	 &f- 	BLAy1aAq!BAq*q.A	BrI   c                 p    t        t        j                  dd      t        j                  dd       d       y rA  )r   r!   r  rD   s    rF   test_negv_jvezTestBessel.test_negv_jve  '    GKK1-Aa0@/@"ErI   c                     t        j                  dd      }t        |dd       t        j                  dd      }d}t        j                  d|      t	        t        |j                               z  }t        ||d       y )Nr^   r  r  r3  ?      ?)r!   r  r   r  r   r[  rK  )rE   jvexpjvexp1rM  jvexprs        rF   r  zTestBessel.test_jve  sc    Ab!E"6q9Qu%Aac!&&k\!22F6!,rI   c                 x   t        j                  dd      }t        j                  dd      }t        |t        g d      d       t        |t        g d      d       t        j                  dd      }t	        |t        g d      d	
       t        j                  dd      }t	        |t        g d      d	
       y )Nr   r   r^   )go@.=@gzj,[@glN!@g5/ D'@gh>-@rN   gW@g0@gQX$@g*@g8*5{x0@r]   )gEk[@g~Cju]@gYrʝ^@g, `@gf	`@rV   rW   -  )gts@g&ǭr3t@gWt@g,$Y&u@gu@)r!   jn_zerosr   r   r   )rE   jn0jn1jn102jn301s        rF   test_jn_zeroszTestBessel.test_jn_zeros  s    q#q#!#e -= '> ?@		A
 	"#e -8 '9 :;		<   Q'u &>  ? FK		L   Q'u &>  ? FK		LrI   c                    t        j                  dd      }t        |d   dd       t        |d   dd       t        |d	   d
d       t        j                  dd      }t        |d   dd       t        |d   dd       t        |d	   dd       t        j                  dd      }t        |t        g d      d       y )Nr   rs   i  g;@rV   rW   i  g8v@i+  gׂMm@rS  gxi@g	,@gи{>@i  r   )gUDX@g!@g*HS@gz5 @g@2;@r  )r!   r  r   r   )rE   r  jn10jn3010s       rF   test_jn_zeros_slowzTestBessel.test_jn_zeros_slow  s    q#&E
$9FE
$9FE
$9FC(U%:GU%:GU%:G!!$q) ': !; BF		GrI   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|z         w y )Nc                 <     | dz
  |       | dz   |      z
  dz  S )Nr^   rP   rU  )rl   r  r  s     rF   jnpz(TestBessel.test_jnjnp_zeros.<locals>.jnp,  s'    qs1I1Q3q	)1,,rI   r^   rZ   r   rR  r&  zInvalid t return for nt=%d)r!   r  r|   jnjnp_zerosrF  r   AssertionError)rE   r  ntrM  rl   r7  tzznnttr  s             @rF   test_jnjnp_zeroszTestBessel.test_jnjnp_zeros)  s    ZZ	-2, 	LB ,,R0JAq!Q!!Ql L
B7#Br2J=1W#CBK>()E)JKKL	LrI   c                     t        j                  dd      }t        |t        g d      d       t        j                  dd      }t	        t        j
                  d|      dd       y )	Nr^   r   g(yu?gOXeS@ga!@gxi'@g'Nw(-@rN     r   r  r&  )r!   	jnp_zerosr   r   r   ra  )rE   r  s     rF   test_jnp_zeroszTestBessel.test_jnp_zeros8  sZ    !$!#u .: (; <=		>
 A&C-qu=rI   c           
          t        j                  dd      }t        |t        g d      t        g d      t        g d      t        g d      fd       y )Nr^   r   r  r  )"@g+@g-9(1!@gȘ'@g>tA}-@)g0v@gjt@gH.?$@g}"O*@gGŧp0@)r!   
jnyn_zerosr   r   )rE   jnzs     rF   test_jnyn_zeroszTestBessel.test_jnyn_zerosB  sa      1%!#u .: (;
 (- .: (;
 (- .: (;
 (- .: (;'<& =>'	?rI   c                     t        j                  dd      }t        j                  dd      t        j                  dd      z
  dz  }t        ||d       y )NrP   r^   r   rS  )r!   ra  r  r   )rE   jvprimjv0s      rF   test_jvpzTestBessel.test_jvpY  sA    Qq!zz!Awzz!A.1F3r*rI   c                 t    t        j                  d      }t        j                  dd      }t        ||d       y r  )r!   r  r  r   )rE   ozkozkrs      rF   r  zTestBessel.test_k0^  +    jjnzz!BCQ'rI   c                 t    t        j                  d      }t        j                  dd      }t        ||d       y r  )r!   r  r  r   )rE   ozkeozkers      rF   r  zTestBessel.test_k0ec  +    {{2Ab!Dq)rI   c                 t    t        j                  d      }t        j                  dd      }t        ||d       y r  )r!   r  r  r   )rE   o1ko1krs      rF   r  zTestBessel.test_k1h  r  rI   c                 t    t        j                  d      }t        j                  dd      }t        ||d       y r  )r!   r  r  r   )rE   o1keo1kers      rF   r  zTestBessel.test_k1em  r  rI   c                 @   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       t	        |j
                  t        ||z   dz   ||z
  g      dz  d       ||z   dz   ||z   dz   z  d||z   dz   z  |dz   z  d|dz   z  |dz   z  g}|d   |d   d|d   z  z
  |d   |d   z
  |d   z   g}t	        |j
                  t        |      d	z  d       ||z   dz   ||z   dz   z  ||z   d
z   z  d
||z   dz   z  ||z   dz   z  |dz   z  d||z   dz   z  |dz   z  |dz   z  d|dz   z  |dz   z  |dz   z  g}|d   |d   d|d   z  z
  |d   d|d   z  z
  d|d   z  z   |d   |d   z
  |d   z   |d   z
  g}	t	        |j
                  t        |	      dz  d       y )Nr   r^   r   rP   r   r  r   rN   r   rT   r4  r3  g      H@)rc   ri   r!   jacobir   r#  r   )
rE   r\  r]  P0P1P2P3cpp2cp3cs
             rF   test_jacobizTestBessel.test_jacobir  sO   bii  1$bii  1$^^Aa"^^Aa"^^Aa"^^Aa"!"$$s2.!"$$uac!eAaC['9#'=bAs1uqs1uoq!A#a%y!A#1Q31>!uRU1RU7]2a5A;r!u#45!"$$uSz#~b9s1uqs1uoqs1u%a1Qi1Q&71&=!A#a%j!A#!$Q!Wac]AaC%8:!uRU1RU7]2a52a5=2a5#8Ar!uRU9J2a59PQ!"$$uSz$r:rI   c                 J    t        j                  dd      }t        |dd       y )Nr   r  _2?r3  )r!   r  r   )rE   kn1s     rF   r  zTestBessel.test_kn  s    jj2C 215rI   c                 l    t        t        j                  dd      t        j                  dd             y Nr   r9  r  r   r!   r  rD   s    rF   test_negv_kvzTestBessel.test_negv_kv  s"    WZZS)7::dC+@ArI   c                 J    t        j                  dd      }t        |dd       y )Nr   r  r  rS  r!   r  r   )rE   kv0s     rF   test_kv0zTestBessel.test_kv0  s    jj2C!3R8rI   c                 J    t        j                  dd      }t        |dd       y )Nr^   r  gKދ@rS  r   )rE   kv1s     rF   test_kv1zTestBessel.test_kv1      jj3C!2B7rI   c                 J    t        j                  dd      }t        |dd       y )NrP   r  g)lHH@rS  r   )rE   kv2s     rF   test_kv2zTestBessel.test_kv2  r  rI   c                 D    t        t        j                  dd      d       y )Nr9  r^   g.Ք"H)r   r!   r  rD   s    rF   test_kn_largeorderzTestBessel.test_kn_largeorder  s    

2q)+ABrI   c                 D    t        t        j                  dd      d       y )Nr   g =`XCr  rD   s    rF   test_kv_largeargzTestBessel.test_kv_largearg  s    WZZ4(!,rI   c                 l    t        t        j                  dd      t        j                  dd             y r  )r   r!   r  rD   s    rF   test_negv_kvezTestBessel.test_negv_kve  s"    W[[c*GKKc,BCrI   c                    t        j                  dd      }t        j                  dd      t        d      z  }t	        ||d       d}t        j                  d|      }t        j                  d|      t        |      z  }t	        ||d       y )Nr   r  r3  r  )r!   r  r  r   r   )rE   kve1r  rM  kve2r  s         rF   r  zTestBessel.test_kve  sp    {{1R jj2s2w&DQ'{{1Qjj1oc!f$DQ'rI   c                 x    d}t        t        j                  d|       t        j                  d|d      d       y )Nr9  r^   r   rl   rS  )r   r!   r  kvp)rE   rM  s     rF   test_kvp_v0n1zTestBessel.test_kvp_v0n1  s-    WZZ!_,gkk!A.CRHrI   c                     d}d}t        j                  |dz   |       ||z  t        j                  ||      z  z   }t        j                  ||d      }t        ||d       y )Nr   r9  r^   r  rS  r!   r  r  r   rE   rb  rM  xcr  s        rF   test_kvp_n1zTestBessel.test_kvp_n1  sY    jj1Q!A#gjj1o"55KK!q!B2&rI   c                     d}d}|dz  |dz  z   |z
  |dz  z  t        j                  ||      z  t        j                  |dz   |      |z  z   }t        j                  ||d      }t        ||d       y )Nr   r9  rP   r^   r  rS  r  r  s        rF   test_kvp_n2zTestBessel.test_kvp_n2  sp    d1a4ik1a4'**Qq/1GJJqs14Ea4GGKK1"B2&rI   c                 t    t        j                  d      }t        j                  dd      }t        ||d       y r  )r!   r;  r@  r   r  s      rF   r<  zTestBessel.test_y0  r  rI   c                 t    t        j                  d      }t        j                  dd      }t        ||d       y r  )r!   rQ  r@  r   r  s      rF   r>  zTestBessel.test_y1  r  rI   c                 B   t        j                  d      \  }}t        j                  dd      \  }}t        ||f   }t        ||f   }t        t	        t        j
                  d|            dd       t        t	        t        j
                  d|      |z
        dd       y )NrP   r^   rB  r   rI  )r!   y0_zerosr   r   r[  rC  )rE   yoypozozpor  allvals          rF   test_y0_zeroszTestBessel.test_y0_zeros  s    !!!$3!!!A.3BiCG!#gjjS&9":3rB!#gjj3&7&>"?BGrI   c                 t    t        j                  d      }t        |t        dg      t        dg      fd       y )Nr^   r  gѮBO?r   )r!   y1_zerosr   r   )rE   rQ  s     rF   test_y1_zeroszTestBessel.test_y1_zeros  s1    a !"eWI&6ugY7G%HKrI   c                 x    t        j                  dd      }t        |t        dg      t        dg      fd       y )Nr^   r!  yL
F%u?!rh?y;OnгY?r   )r!   	y1p_zerosr   r   )rE   y1ps     rF   test_y1p_zeroszTestBessel.test_y1p_zeros  s9    !,!M?#UO+<%=>	
rI   c                     t        j                  dd      }t        |t        ddg      d       t        j                  dd      }t	        |g dd	       y )
NrN   rP   g3@g(A&"@r   r  )g]E.+"|@gH(|@gff|}@g&b`~@gHO_~@r  rW   )r!   yn_zerosr   r   r   )rE   ans     rF   test_yn_zeroszTestBessel.test_yn_zeros  sP    a"!"UGW+=%>qAc!$ 4
 #	%rI   c                 @   t        j                  dd      }t        |t        ddg      d       t        j                  dd      }t	        t        j
                  d|      dd	       t        j                  d
d      }t	        t        j
                  d
|      dd	       y )Nr   rP   gQhվ@gzN@rT   +   r   r  r&  r  r  )r!   	ynp_zerosr   r   r   rb  rE   aos     rF   test_ynp_zeroszTestBessel.test_ynp_zeros  s|    q#!"UJ
+C%DQGr!$B+QU;s1%C,ad;rI   c                 t    t        j                  dd      }t        t        j                  d|      dd       y )Nr  r   r   r>  r&  )r!   r6  r   rb  r7  s     rF   test_ynp_zeros_large_orderz%TestBessel.test_ynp_zeros_large_order  s+    s1%C,ae<rI   c                 J    t        j                  dd      }t        |dd       y Nr^   r  5,1
r3  )r!   r@  r   )rE   yn2ns     rF   rA  zTestBessel.test_yn  s    zz!BD!4Q7rI   c                 \    t        j                  dd      }|t        j                   k(  sJ y )Nr\   r^   )rB   r@  rc   r   )rE   observeds     rF   test_yn_gh_20405zTestBessel.test_yn_gh_20405  s&    99S!$BFF7"""rI   c                 p    t        t        j                  dd      t        j                  dd       d       y rA  )r   r!   rC  rD   s    rF   test_negv_yvzTestBessel.test_negv_yv  r  rI   c                 J    t        j                  dd      }t        |dd       y r=  )r!   rC  r   )rE   yv2s     rF   rD  zTestBessel.test_yv  s    jj2C 3A6rI   c                 p    t        t        j                  dd      t        j                  dd       d       y rA  )r   r!   rF  rD   s    rF   test_negv_yvezTestBessel.test_negv_yve   r  rI   c                     t        j                  dd      }t        |dd       t        j                  dd      t	        d      z  }t        j                  dd      }t        ||d       y )Nr^   r  r>  r3  r  rS   )r!   rF  r   rC  r   )rE   yve2yve2ryve22s       rF   rG  zTestBessel.test_yve  sT    {{1R D!4Q7

1U#CG+Ae$E%*rI   c                     t        j                  dd      t        j                  dd      z
  dz  }t        j                  dd      }t        ||d       y )Nr^   r  r   r   rP   rS  )r!   rC  rb  r   )rE   yvpryvp1s      rF   test_yvpzTestBessel.test_yvp
  sC    

1R 7::a#33S8{{1R !$tB/rI   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  rS   r   r        i@g     y@g     Ă@g@  i'  Nr   ir`  r  )	itertoolsproductr   )rE   rb  rM  s      rF   _cephes_vs_amos_pointsz!TestBessel._cephes_vs_amos_points  s\      K$$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 )NrA  u <7~r   )r  rX   rb   )	rY  r{   rc   r  r   r[  r   rK  r   )rE   r  f2rX   rb   r  rb  rM  c1c2c3s              rF   check_cephes_vs_amoszTestBessel.check_cephes_vs_amos  s    //1 	;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;	;rI   ppc64lezfails on ppc64lerD  c                 f    | j                  t        j                  t        j                  dd       y )Nr`   u5% r?  )r`  r!   r  r  rD   s    rF   test_jv_cephes_vs_amosz!TestBessel.test_jv_cephes_vs_amos*  #     	!!'**gjju6!RrI   c                 f    | j                  t        j                  t        j                  dd       y )Ndy=rc  r?  r`  r!   rC  r@  rD   s    rF   test_yv_cephes_vs_amosz!TestBessel.test_yv_cephes_vs_amos/  re  rI   c                 n    d }| j                  t        j                  t        j                  dd|       y )Nc                     t        |       dkD  S )Nr'  )r[  )rb  rM  s     rF   skipperzDTestBessel.test_yv_cephes_vs_amos_only_small_orders.<locals>.skipper5  s    q6B;rI   rg  rc  )rX   rb   r  rh  )rE   rl  s     rF   (test_yv_cephes_vs_amos_only_small_ordersz3TestBessel.test_yv_cephes_vs_amos_only_small_orders4  s-    	!!'**gjju6'. 	" 	0rI   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>rc  r?  )rc   r  r`  r!   r  rD   s    rF   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 r^   r   rS   rP   r  r  r3  r   r  r  rA  r[  gYngH׊>)rc   ri   ru   r  r  r  r0  r  r!   r  r   r[  r   argmaxr   )	rE   Nrb  r  imskr]  r^  dcrm   s	            rF    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  rc  r?  )r`  r!   r  r  rD   s    rF   test_kv_cephes_vs_amosz!TestBessel.test_kv_cephes_vs_amos^  s@    !!'**gjjt&!Q!!'**gjjt&!QrI   c                     t        t        j                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d       y )	Nr   rN   gP?r  rV  g~Omʒ?gY8E@@gKSn)r   r!   r  rD   s    rF   test_ticket_623zTestBessel.test_ticket_623b  sD    

1a(*=>

3-/AB

3	24GHrI   c           	      <
   t        t        j                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d	       t        t        j
                  dd      d
       t        t        j
                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d       t        t        j
                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d	       t        t        j
                  dd      d
       t        t        j
                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d       t        t        j
                  dd      d       t        t        j
                  dd      d       t        t        j                  dd      t        j                  dd      t        d      z         t        t        j                  dd      t        j                  dd      t        d      z         t        t        j                  dd      t        j                  dd      t        d      z         t        t        j                  dd      t        j
                  dd      t        d      z         t        t        j                  dd      t        j                  dd      dt        j                  dd      z  z          t        t        j                  dd      t        j                  dd      dt        j                  dd      z  z
         y)zNegative-order BesselsrS   r^   gl)ܿr  gPj?gk?g%E*2ig敋?gw--`?gÉB?gW?r  g޴?gz|?a?gpx%?y      ?        y      ?      ?yYD?`{1wy6x?B]#Ӯ?y ?b>?y.}9d?8kؿy      ?333333?r  y333333?      ?rJ  N)r   r!   r  rC  r  r  r  r   rF  r  r  r  r  rD   s    rF   test_ticket_853zTestBessel.test_ticket_853g  s    	

2q)+>?

2q)+=>

2q)+=>

2q)+=>

2q)+=>

2q)+=>

2q)+=>

2q)+<=

4+-CD

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(=%==	
rI   c                    t        t        t        j                  dd                   t        t        t        j                  dd                   t        t        t        j
                  dd                   t        t        t        j
                  dd                   t        t        t        j                  dd                   t        t        t        j                  dd                   t        t        t        j                  dd                   t        t        t        j                  dd                   t        t        t        j                  dd                   t        t        t        j                  dd                   t        t        t        j                  dd                   t        t        t        j                  dd                   t        t        t        j                  d      dd       j                         t        j                  d             t        t        t        j                  d      dd       j                          t        j                  d             y)zReal-valued Bessel domainsr   rS   r^   r   rP   rN   N)r   r   r!   r  r  rC  r  r  r  rF  r  rK   r  r  rD   s    rF   test_ticket_854zTestBessel.test_ticket_854  s   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KrI   c                     t        t        j                  dd      t        j                  k(         t        t        j
                  dd      t        j                  k(         y )Nr]  r   )r   r!   r  rc   r   r  rD   s    rF   test_gh_7909zTestBessel.test_gh_7909  s:    

3"bff,-C#rvv-.rI   c                     t        t        j                  dd      d       t        t        j                  dd      d       y)zReal-valued Bessel I overflowr^   i  g~r[   i`  g ?los~Nr   r!   r  rD   s    rF   test_ticket_503zTestBessel.test_ticket_503  s.    

1c*,AB

4.0EFrI   c                 D    t        t        j                  dd      d       y )Nr  r^   r|  r  rD   s    rF   test_iv_hyperg_poleszTestBessel.test_iv_hyperg_poles  s    

4+->?rI   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   rP   r   r^   rS   rS  )r   r  r   r   r!   rp  r   r   r   r[  r+  r   r  sumrE   rb  rM  rl   rm   rT  r$  s          rF   	iv_serieszTestBessel.iv_series  s    1aL'qsUC1I! 44wqs1u7MM%(F!fjjlU6]...2S2Z]Buuw|rI   c                     dD ]9  }| j                  d|      \  }}t        t        j                  |      |||       ; y )Nr   r   rU  r   rb   r  )r  r   r!   r  rE   rM  valuer$  s       rF   test_i0_serieszTestBessel.test_i0_series  =    ! 	GA1-JE3GJJqM5sAF	GrI   c                     dD ]9  }| j                  d|      \  }}t        t        j                  |      |||       ; y )Nr  r^   r  )r  r   r!   r  r  s       rF   test_i1_serieszTestBessel.test_i1_series  r  rI   c           	          dD ]C  }dD ]<  }| j                  ||      \  }}t        t        j                  ||      ||||f       > E y )N)rR  r  r  r   r   rS  r   )r   r   rU  y             @r  )r  r   r!   r  rE   rb  rM  r  r$  s        rF   test_iv_serieszTestBessel.test_iv_series  sU    7 	SA, S!^^Aq1
s

1a 0%cAq6RS	SrI   c           	          ddgddgddgddgddgd	d
gddgddgg}t        |      D ]<  \  }\  }}t        j                  |      t        |       z  }t	        ||dd|z         > y )Nr   r   r`   rG  g0oO?r   g!?grb?r  gpH?r   gC~?r   ggo?r3  r  r  )r  r!   r  r   r   rE   r   r   r  rb  r  s         rF   r  zTestBessel.test_i0  s    *#,%%%%%& #6* 	BIAv1AaR(BAq*q.A	BrI   c                 t    t        j                  d      }t        j                  dd      }t        ||d       y r  )r!   r  r  r   )rE   oizeoizers      rF   r  zTestBessel.test_i0e  r  rI   c                     ddgddgddgddgdd	gd
dgddgg}t        |      D ]<  \  }\  }}t        j                  |      t        |       z  }t	        ||dd|z         > y )Nr   r`   gj|=rG  gȕ![1?r   g;͘?r   gRΜ?r   g|?r   g}f?r3  r  r  )r  r!   r  r   r   r  s         rF   r  zTestBessel.test_i1  s    *01%%%%& #6* 	BIAv1AaR(BAq*q.A	BrI   c                 t    t        j                  d      }t        j                  dd      }t        ||d       y r  )r!   r  r  r   )rE   oi1eoi1ers      rF   r  zTestBessel.test_i1e  r  rI   c                 p    t        t        j                  d            }t        |t        ddg      d       y )Nr   gїJB?@g*u?)r   r!   r  r   )rE   iti0s     rF   r  zTestBessel.test_iti0k0  s2    W^^A&'!%'9:;	
rI   c                 ^    t        j                  d      }t        |t        ddg      d       y )NrG  gݳɄ|T?gVƥ
@rT   )r!   r  r   r   )rE   it2ks     rF   r  zTestBessel.test_it2i0k0  s-    r"!(*<=>	
rI   c                 b    t        j                  dd      t        d      z  }t        |dd       y )Nr   rG  皙gv M?rS  )r!   r  r   r   )rE   iv1s     rF   r  zTestBessel.test_iv  s(    jj2s3x'C 3B7rI   c                 l    t        t        j                  dd      t        j                  dd             y r  )r   r!   r  rD   s    rF   test_negv_ivezTestBessel.test_negv_ive  s"    W[[1%w{{2a'89rI   c                     t        j                  dd      }t        j                  dd      t        d      z  }t	        ||d       y )Nr   rG  r  rS  )r!   r  r  r   r   )rE   ive1r  s      rF   r  zTestBessel.test_ive
  s7    {{1R jj2s3x'DR(rI   c                 n    t        t        j                  dd      t        j                  dd      d       y )Nr^   rP   r   rS  )r   r!   r  ivprD   s    rF   	test_ivp0zTestBessel.test_ivp0  s#    GJJqOW[[1-=rBrI   c                     t        j                  dd      t        j                  dd      z   dz  }t        j                  dd      }t        ||d       y )Nr   rP   r^   rS  )r!   r  r  r   r.  s      rF   test_ivpzTestBessel.test_ivp  sA    ZZ!_wzz!A.1KK!Aa#rI   )rg  r   N)   )VrO  rP  rQ  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r  r  r<  r>  r(  r+  r/  r3  r9  r;  rA  rB  rD  rD  rH  rG  rP  rY  r`  rR  rS  rT  r  machinerd  ri  rm  ro  slowrv  rx  rz  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rU  rI   rF   r  r    s.   

8&
&
9D	BF-L8G$L>?.+
(
*
(
*
;$6B988C-D(I''&
&
HL
	%<=8#
D7F+0

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B*
B*


8:)
C$rI   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       t        |j                  ddgd       t        |j                  t	        g d	      d
z  d       t        |j                  t	        g d      dz  d       t        |j                  t	        g d      dz  d       t        |j                  t	        g d      dz  d       y )Nr   r^   rP   r   rN   r   r  rS   )r^   rs  rP   r   )rS   r  irT   rG  )r^   iH   ir
  ri  )rS   r  i8iX  ir#  r   )r!   laguerrer   r#  r   )rE   lag0lag1lag2lag3lag4lag5s          rF   test_laguerrezTestLaguerre.test_laguerre  s    """"""!$&&!R0!$&&"Q3!$&&x)<R@!$&&|)<S)@D!$&&/@)A$)FrJ!$&&/H)I%)OPRSrI   c                 V   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         t        |j
                  t        dd|dz   z  d|dz   z  |dz   z  |dz   |dz   z  |dz   z  g      dz         y )Nr   r  r   r^   rP   r   rS   r  r   r   r^  rG  )rc   ri   r!   r  r   r#  r   r   )rE   rm   r  r  r  r  s         rF   test_genlaguerrezTestLaguerre.test_genlaguerre'  s   bii  3&""1Q'""1Q'""1Q'""1Q'TVVaS!TVVb!a%[)FF1R1Xqtadm,-c1	
 	FF2a1gb!A#h!nacAaC[!A#->?@D	
rI   N)rO  rP  rQ  r  r  rU  rI   rF   r  r    s    T
rI   r  c                       e Zd Zd Zy)
TestLambdac           
      p   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       y )Nr^   rG  r   rP   r  r   r3  )r!   lmbdar   r  ra  r  r   )rE   lamlamrs      rF   
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
 	"#d1-rI   N)rO  rP  rQ  r  rU  rI   rF   r  r  9  s    .rI   r  c                       e Zd Zd Zd Zy)	TestLog1pc                     t        j                  d      t        j                  d      t        j                  d      f}t        d      t        d      t        d      f}t        ||d       y )NrS  rI  r4  r  r3  r!   r  r   r   )rE   l1pl1prls      rF   r  zTestLog1p.test_log1pD  sM    }}R '--"3W]]25FGR#b'3r7+!#eA.rI   c                     t        j                  d      t        j                  d      t        j                  d      f}t        d      t        d      t        d      f}t        ||d       y )Nr^   r  r  rP   r8  r9  r3  r  )rE   l1pml1pmrls      rF   test_log1pmorezTestLog1p.test_log1pmoreI  sM    a '--"4gmmC6HIa&S#c(+!$va0rI   N)rO  rP  rQ  r  r  rU  rI   rF   r  r  C  s    /
1rI   r  c                       e Zd Zd Zd Zd Zy)TestMathieuc                      y r  rU  rD   s    rF   r+  zTestMathieu.test_mathieu_aQ  r  rI   c                 0    t        j                  dd       y )NrP   r   )r!   r,   rD   s    rF   test_mathieu_even_coefz"TestMathieu.test_mathieu_even_coefT  s    !!!A&rI   c                      y r  rU  rD   s    rF   test_mathieu_odd_coefz!TestMathieu.test_mathieu_odd_coefX  s    rI   N)rO  rP  rQ  r+  r  r  rU  rI   rF   r  r  O  s    'rI   r  c                       e Zd Zd Zd Zy)TestFresnelIntegralc                      y r  rU  rD   s    rF   rj  z$TestFresnelIntegral.test_modfresnelp_  r  rI   c                      y r  rU  rD   s    rF   rf  z$TestFresnelIntegral.test_modfresnelmb  r  rI   N)rO  rP  rQ  rj  rf  rU  rI   rF   r  r  ]  s    rI   r  c                       e Zd Zd Zy)TestOblCvSeqc                 b    t        j                  ddd      }t        |t        g d      d       y )Nr   r   r^   )g~T~Oֿgt_J?gm{@g@j'&@r   )r!   
obl_cv_seqr   r   )rE   obls     rF   test_obl_cv_seqzTestOblCvSeq.test_obl_cv_seqg  s1      1Q'!#e -9 ': ;<	=rI   N)rO  rP  rQ  r  rU  rI   rF   r  r  f  s    =rI   r  c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestParabolicCylinderc                 z    t        j                  dd      }t        |t        ddg      t        ddg      fd       y )Nr^   rG  gQ?gx$(~?gx$(~g(\?rN   )r!   pbdn_seqr   r   )rE   pbs     rF   test_pbdn_seqz#TestParabolicCylinder.test_pbdn_seqp  sK    a#!"eV.4-6 '7&+W-3-5 '6&7 89	:rI   c                     t        j                  dd       dt        j                  dd      d   z  t        j                  dd      d   z
   y )Nr^   r  rG  r   )r!   r  rD   s    rF   r  zTestParabolicCylinder.test_pbdvw  s=    Qra#A&&a);A)>>rI   c                     t        j                  dd      }t        j                  dd      }t        |t	        |d         t	        |d         fd       y )Nr^   rG  r   rN   )r!   r  pbdv_seqr   r   )rE   pbnpbvs      rF   test_pbdv_seqz#TestParabolicCylinder.test_pbdv_seq{  sG    q$q$!#tCF|DQL&A!DrI   c                    t        j                  ddd      }d|dz  z  t        j                  t         j                        z  t	        j
                  dd|z  z
        z  }t        t	        j                  |d      d   |dd	       t        t	        j                  d
d      d   dd       t        t	        j                  dd      d   dd       y )Nr  rS  r   rP   r   r   r   r>  r?  gGz$@gq=
ףp4@gHQ9r   rW   g(\#gQ@gkS a>)rc   rO  r   r   r!   r  r   r  )rE   etarM  s      rF   test_pbdv_pointsz&TestParabolicCylinder.test_pbdv_points  s    kk#r1%AJrwwruu~%gnnR3Y&??S"-a0!%eL 	UE2157JQVWUD1!46JQVWrI   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 Nrs  rN   r3  r  rS  r   r  r   r   r^   rR  r?  )rc   rO  r!   r  r[  r   rE   r  r  r[  r  dps         rF   test_pbdv_gradientz(TestParabolicCylinder.test_pbdv_gradient      KKAq!!D&)kk#r1%d1f-LLa T#a&[ ll3C(+gll3C.H.KKsRUWW!bt$7rI   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  )rc   rO  r!   r  r[  r   r  s         rF   test_pbvv_gradientz(TestParabolicCylinder.test_pbvv_gradient  r  rI   c                     t        j                  dd      \  }}t        |t        j                  g d             t        |t        j                  g d             y )NrP   r   )g:4@g1{н?g7,%n?)gX@g=<'?gʠ?)r!   pbvv_seqr   rc   r   )rE   res1res2s      rF   test_pbvv_seqz#TestParabolicCylinder.test_pbvv_seq  sN    %%a+
dbhh (< = 	> 	bhh (; < 	=rI   N)
rO  rP  rQ  r  r  r  r  r  r  r  rU  rI   rF   r  r  o  s'    :?E
X88=rI   r  c                       e Zd Zd Zy)TestPolygammac           	      d   t        j                  dd      }t        j                  dd      }t        |dd       t        |dd       g d}t        t        j                  d|      t        j                  |             g d	}g d
}g d}t        t        j                  ||      |       t	        j
                  |gdz        }t        t        j                  |t	        j
                  |gdz              |       t        t        j                  t	        j
                  |gdz        |      |       y )NrP   r^   r   gX];rS  gOV,@@)rP   r   g  8Br   r  rn  )g2}jg.M?g}2;ο)r!   	polygammar   r  rc   rp  )rE   poly2poly3r  rl   rN  s         rF   test_polygammazTestPolygamma.test_polygamma  s    !!!A&!!!A&E-3E,r2 G--a3W[[^D *G--a3X>99hZ\*G--aA3q51AB$	&G--biiA.>B$	&rI   N)rO  rP  rQ  r  rU  rI   rF   r   r     s    &rI   r   c                       e Zd Zd Zy)TestProCvSeqc                 b    t        j                  ddd      }t        |t        g d      d       y )Nr   r   r^   )g"~j?g6?Ң@g)u8F"@g2g)@r   )r!   
pro_cv_seqr   r   )rE   prols     rF   test_pro_cv_seqzTestProCvSeq.test_pro_cv_seq  s1    !!!Aa(!$u .: (; <=	>rI   N)rO  rP  rQ  r  rU  rI   rF   r  r    s    >rI   r  c                       e Zd Zd Zy)TestPsic                 H    t        j                  d      }t        |dd       y )Nr^   goxr3  )r!   r  r   )rE   pss     rF   r  zTestPsi.test_psi  s    [[^B3A6rI   N)rO  rP  rQ  r  rU  rI   rF   r  r    s    7rI   r  c                       e Zd Zd Zd Zy)
TestRadianc                 Z    t        j                  ddd      }t        |t        dz  d       y )Nr  r   r   r   r!   r  r   r   )rE   rads     rF   r  zTestRadian.test_radian  s$    nnR!$C3q)rI   c                 `    t        j                  ddd      }t        |t        dz  dz   d       y )Nr  r^   r`  rP   gC?r   r  )rE   rad1s     rF   test_radianmorezTestRadian.test_radianmore  s*    ~~b2&DA&;!;A>rI   N)rO  rP  rQ  r  r  rU  rI   rF   r  r    s    *?rI   r  c                       e Zd Zd Zd Zy)TestRiccatic                 (   d\  }}t        j                  ||f      }t        |      D ]G  }t        j                  ||      }t        j                  ||d      }||z  |d|f<   ||z  |z   |d|f<   I t        |t        j                  |      d       y N)rP   r  T)
derivativer   r^   r3  )rc   emptyr|   r!   spherical_jnr   
riccati_jn)rE   rs  r  Srl   r  jps          rF   test_riccati_jnzTestRiccati.test_riccati_jn      1HHaVq 	A$$Q*A%%at<BqSAacFrTAXAacF		
 	"!W%7%71%=qArI   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       y r  )rc   r  r|   r!   spherical_ynr   
riccati_yn)rE   rs  r  Crl   rL  yps          rF   test_riccati_ynzTestRiccati.test_riccati_yn  r#  rI   N)rO  rP  rQ  r"  r)  rU  rI   rF   r  r    s    BBrI   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   iirq     r  g
ףp=@@r:  )g%~B7gpNf7g8B8)gJR{?g6]=gXes>)g n@?@gWH;@glH.=@)g9lchPR@gS@gzsevB@r  rW   )numpyri   default_rnguniformstackr*   r   )rE   rc   rp   rl   r  r  a3a4r\  r  r  s              rF   test_softpluszTestSoftplus.test_softplus  s     	ii##M2[[s[+[[bq[)[[T[*[[![,BHHb"b"%& TQKHJ
 qkSu-rI   c                     t        j                  d      dz
  }t        j                  d      }|j                         }|dkD  }t	        |||       t	        ||         ||<   t        ||       y )Nr   rP   r   )outwhere)rc   r   onescopyr*   r   )rE   r  r6  r  r7  s        rF   test_softplus_with_kwargsz&TestSoftplus.test_softplus_with_kwargs  s]    IIaL1ggajhhjA5)ah'E
S!rI   N)rO  rP  rQ  r4  r:  rU  rI   rF   r+  r+    s    .:"rI   r+  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%@)rS  rS  rS  rI  )r)  mapr{   r!   r  r   )rE   rndrndrls      rF   r  zTestRound.test_round  sZ    3sW]]40$]]40$]]40$]]402 3 4 3u%rI   N)rO  rP  rQ  r  rU  rI   rF   r<  r<    s    &rI   r<  c            
         t         j                  } t        j                  }t        j                  }t        j
                  }t        j                  }t        j                  }t               5 }|j                  t               t         | dddd      d ||      z         t         | ddd|dz        d |d	d
|z  z        z   ||dz        d
z  z         t         | ddd|dz        d |d	d
|z  z        z         t         | dd||dz        d |dd
|z  z        z   |dd
|z  dz  z         z   ||d
z        d
z  z         t         | dd|dz  |dz        d |dd
|z  z        z   |dd
|z  dz  dz  z         z   ||dz        d
z  z  d ||dz        d
z  z  dz
  z         t         | dd|dz  |dz        d |dd
|z  z        z   |dd|z  dz  dz  z         z   ||dz        dz  z         d d d        y # 1 sw Y   y xY w)Ncategoryr   r   r  rP   r   rN   r5  r  r   r   rJ  r:  r   r  r   g      @r^   r   rG  g      ?g     A@)r!   sph_harmrc   r   r   r   r	   r
   r    r!  DeprecationWarningr   )shr   r   r   r	   r
   r$  s          rF   test_sph_harmrG  )  s<    
		B	B
&&C77D
&&C
&&C		 2

.
/!"Qq1+48|	!"R"RT"2Dbe%%BqD	B	  	""R"RT"2Dbe%%	'!"QqBqD/DRU$$1RU2X:"2b5z2~.	/ 	""QqBr"u"5tB2J''1RU2Xb[=!"2b5z2~ 3r"u:r>!!#%	&
 	""QqBr"u"5S"R%[))1RU2Xb[=!""%be*b.1	2#2 2 2s   +FG??Hc            	         t        j                  t         j                        } t               5 }|j	                  t
               t        t        j                  dddd      j                  |        t        t        j                  dgddd      j                  |        t        t        j                  ddgdd      j                  |        t        t        j                  dddgd      j                  |        t        t        j                  ddddg      j                  |        t        t        j                  dgdgdgdg      j                  |        d d d        y # 1 sw Y   y xY w)NrB  r   )	rc   r  rp  r    r!  rE  r   r!   rD  )dtr$  s     rF   "test_sph_harm_ufunc_loop_selectionrJ  H  s   	"--	 B		 E

.
/W%%aAq177<W%%qc1a3992>W%%a!a3992>W%%aQC3992>W%%aAs3992>W%%qcA3aS9??DE E Es   D'EE'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   rS   r   rP   r^   r]  )	r   r!   rj  r[  r+  r   r   r  r  r  s          rF   _serieszTestStruve._seriesV  s    1aL!Gr!tqs1uQw''ae(<<W]]1Q3s7=SS!fjjlU6]...2uuw|rI   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  rS   r   r^   r  rS     )r^   rS  r	  rJ  rZ   r   r?  N)rN  r   r!   r2  r  s        rF   test_vs_serieszTestStruve.test_vs_series]  s]    B 	WA( W!\\!Q/
sq! 4e!#NQRTUPVVW	WrI   c                 \   t        t        j                  dd      dd       t        t        j                  dd      dd       t        t        j                  d	d
      dd       t        t        j                  dd      dd       t        t        j                  dd      t        j                  dd              t        t        j                  dd      t        j                  dd              t        t        j                  dd      t        j                  dd             t        t        j                  dd      t        j                  dd             t	        t        t        j                  dd                   t	        t        t        j                  dd                   y )NrP  rJ  g;cv=?r  rW   gQ g< j?r  r  r  g?r   g       igzz?rg  i)   r4  rT  rI  gffffffrS   g333333$)r   r!   r2  r   r   r   rD   s    rF   test_some_valueszTestStruve.test_some_valuesd  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1rI   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!   r2  rD   s    rF   test_regression_679zTestStruve.test_regression_679q  sk    tY7tY7	9tY7tY7	9tY7tY7	9rI   N)r:  )rO  rP  rQ  rN  rR  rU  rW  rU  rI   rF   rL  rL  U  s    W29rI   rL  c                  D    t        t        j                  dd      d       y )Nr  r   gdX	
?)r   r!   r   rU  rI   rF   test_chi2_smalldfrY  {  s    c!,.?@rI   c                  `    t        t        j                  dt        j                        d       y )Nr+  r   )r   r!   r   rc   r   rU  rI   rF   test_ch2_infr[    s    s266*C0rI   c                  D    t        t        j                  dd      d       y )Nr  r   yj_?)r   r!   r   rU  rI   rF   test_chi2c_smalldfr^    s    s1-/BCrI   c                  D    t        t        j                  dd      d       y )Nr  r]  r   )r   r!   r   rU  rI   rF   test_chi2_inv_smalldfr`    s    s+>?CrI   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 )'NrV   r^   rP   gDSYC?rW   gQ_?g?@g>;,
i}@r   )r^   r   r   g=O?rS   r  r
  rT   gXs*@r  g   V4oAgO1eAgꌠ9Y>)FgEg^ 9^;gd-?gP.5_gsTNNeg6dgu?j/ g]XC}KdgѧRg"!x{{ r   g][#!Rr  gٍS1gN_ r   r:  rS  )r   r!   agmrc   r   r   r  r+  r   r   r   )rX   agm13agm15agm35agm12fis         rF   test_agm_simplerh    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3rI   c            	      "   t               5 } | j                  t        d       t        t	        j
                  dd      t	        j
                  dd             t        t	        j                  ddd      t	        j                  ddd             t        t	        j                  ddd      t	        j                  ddd             t        t	        j                  ddd      t	        j                  ddd             t        t	        j                  dd      t	        j                  dd             t        t	        j                  dd      t	        j                  dd             t        t	        j                  dd      t	        j                  dd             t        t	        j                  dd      t	        j                  dd             t        t	        j                  dd      t	        j                  dd             d d d        y # 1 sw Y   y xY w)Nr  r^   rH  g?rP   gffffff@)r    r!  r"  r   r!   expnrr  ro  ru  r  r  r@  r  r  )r$  s    rF   test_legacyrk    sb   		 
K

>#RS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   G1HHc                  *    dd l } | j                         S rA   )	threadingLock)rm  s    rF   errstate_lockro    s    >>rI   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  r^   y        .B}T)r!   r  rq  r  r  )ro  s    rF   test_error_raisingrq    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   )rc   r  r   r   r  rL  s     rF   xfuncztest_xlogy.<locals>.xfunc  sR    [[* 	#Avbhhqk	# 	# {		# 	# 	#   AAA'r   r   r   r   r   r  )r   rJ  )r^   rJ  r^   rV   r?  )
rc   r   r   r   r}   r   r   r:   r!   xlogy)rw  z1z2w1w2s        rF   
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DrI   c                     d } t        j                  ddt         j                  fdt         j                  fddgt              } t        j
                  |       |d d df   |d d df         }t        t        j                  ||dd	       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rt  )rc   r  r   r  rv  s     rF   rw  ztest_xlog1py.<locals>.xfunc  sR    [[* 	'Avbhhqk	' 	' 288A;		' 	' 	'rx  ry  r   rz  )r^   gKH9r  r^   rV   r?  )	rc   r   r   r   r}   r   r:   r!   xlog1py)rw  r|  r~  s      rF   test_xlog1pyr    su    ' 
UQK!RVVj!(-
/B	e	R!Wb1g	.Bgoor2EFrI   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 rA   )rc   r   r!   r{  rA  s    rF   rw  ztest_entr.<locals>.xfunc  s(    q5FF7NMM!Q'''rI   r   r   r   rS   r^   r  otypesrV   r?  )rc   r   rW  rX  r  r   r}   r   r  r:   r!   entr)rw  r   signsr  sgnrb  rM  rM  s           rF   	test_entrr    s    (
 c266"FGE
C##E62 Q

37
E"A0UBJJ<03AgllAqu5ArI   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 rA   )rc   r   rZ  r!   r{  rv  s     rF   rw  ztest_kl_div.<locals>.xfunc  sm    q5AEa1fa66M[[^r{{1~66M!VH==AaC(1,q00rI   r   r   r   rS   r^   r  r  r   rV   r?  )rW  rX  r  rc   r   r}   r   r  r:   r!   kl_div
rw  r   r  r  sgnavasgnbvbrM  rM  s
             rF   test_kl_divr    s    
1 FGE
C'//vufM 'b$

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

DGT"W%&'
E"A0UBJJ<01Q31Q3@Ag&&15uErI   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   r^   rV   r?  )rc   r   r   r!   r  inputsrN  r  rL  s       rF    test_rel_entr_gh_20710_near_zeror  <  sS    XX  FH
 	q!tAq!tAG$$Q*H5qIrI   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  ))rN   X )r  gZbti)r  g  4&kC)gMG.@g)Z?g wa)r   r^   rV   r?  )r!   seterrrc   r   r   r  r  s       rF   test_rel_entr_gh_20710_overflowr  O  s_    NNx XX  FH
 	q!tAq!tAG$$Q*H5qIrI   c                     t        t        j                  dd      t        j                         t        t        j                  dd      dt        j                  d      z         t        t        j                  dd      d       d } t        j                  j                  dd      } t        j                  | t        j                  g	      |d d d
f   |d d df         }t        t        j                  ||dd       y )NrS   r]  rP   r   r  r   c                     | dk  rt         j                  S t        j                  |      | k  rdt        j                  |      z  S | t        j                  |      d| z  z
  z  S )Nr   r   )rc   r   r[  squaredeltarT  s     rF   rw  ztest_huber.<locals>.xfuncj  sQ    1966MVVAY1%%BFF1Ie344rI   rS  r  r   r^   rV   r?  )r   r!   huberrc   r   r   r  ri   randnr   r  r:   rw  rM  rM  s      rF   
test_huberr  e  s    r3'0GMM!S)33+?@GMM!S)+>?5 			AA0UBJJ<01Q31Q3@AgmmQEBrI   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   rP   r^   )rc   r   r   r  s     rF   rw  z test_pseudo_huber.<locals>.xfuncx  sD    1966M!8rwwqAeGa<'781<==rI   rS  rP   r   r   r  r^   rV   r?  )
rc   r   ri   r  tolistr   r  r:   r!   pseudo_huberr  s      rF   test_pseudo_huberr  w  s    > 	Q'..0QHsAh3GGHA0UBJJ<01Q31Q3@Ag**Aqu5IrI   c                  X    d} d}t        j                  | |      }d}t        ||d       y )Nr   gC]r2<gs.-De8rV   rW   )r!   r  r   )r  rT  rL  rN  s       rF   test_pseudo_huber_small_rr    s1    EAUA&A &HAxe,rI   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  r[   )rR  warnsr"  r+   r,   rU  rI   rF   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&)'TestStirling2r^   r   )r   r^   r^   )r   r^   r   r^   )r   r^   rR   rT   r^   )r   r^   r   r  rS  r^   )r   r^      r  A   r   r^   )r   r^   ?   r  i^     rJ  r^   )	r   r^      i  i    i
     r^   )
r   r^      i  iZ  i'  iV
  i  $   r^   )r   r^   r   r$  i9  i  i+Y    i  r   r^   zis_exact, comp, kwargsTFrX   r   c           	          t        dt        | j                              D ]?  }t        t        |dz               }| j                  |   } ||t	        |g||      fi | A y )Nr^   r!  )r|   r  tabler)  r-   )rE   is_exactcompkwargsrl   k_valuesrows          rF   test_table_caseszTestStirling2.test_table_cases  s]    
 q#djj/* 	JAE!A#J'H**Q-CiXX>I&I	JrI   c                      |t        dd|      | j                  d   d   fi |  |t        dd|      | j                  d   d   fi |  |t        dd|      dfi |  |t        dgdg|      dgfi | y )Nr   r!  rN   rP   r   r   r  )r-   r  rE   r  r  r  s       rF   test_valid_single_integerz'TestStirling2.test_valid_single_integer  s    
 	Yq!8,djjmA.>I&IYq!8,djjmA.>I&I 	Yq!8,b;F;YsQCx02$A&ArI   c                      |t        dd|      dfi |  |t        dd|      dfi |  |t        dd|      dfi | y )NrS   r!  r   rP   r-   r  s       rF   test_negative_integerz#TestStirling2.test_negative_integer  sL     	Yr2X.<V<Yr1H-q;F;Yq"H-q;F;rI   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 )NrS  r   rN   r!  )r  r-   r   )rE   r  r  r  anss        rF   test_array_inputszTestStirling2.test_array_inputs  s    
 zz"~a $**R."34YwBx(&1v%-/ 	 	YBx&1v%-/ 	 	YwBx( !1v%-/ 	rI   rV   c                 H    g d}g d}g d} |t        |||      |fi | y )N)r   r^   r   r  r  r  r  )rS   r   r   r   r3  rS  rS  )r  r   rP   r   r   rR   r   r!  r  rE   r  r  r  r  rl   rm   s          rF   test_mixed_valueszTestStirling2.test_mixed_values  s+     .$"Yq!8,c<V<rI   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!  rP   r^   N)rc   r   r   r-   r  r(  )rE   rl   Krm   s       rF   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  rZ   rO   rN   Tr!  l	   D,"SBXp!N l   wY)H_1e_*   r5     )r   r   r-   )rE   r  rl   rm   s       rF   test_big_numberszTestStirling2.test_big_numbers  s}    ~'89:HG9Q6<<<<:< =HH9Q6<<<rI   rs  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!  )rR  r   	TypeErrorr-   )rE   rs  r  r  s       rF   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)NrN   r^   rN   rN   rN   rN   r  r^   rP   r   rN   r!  )r   r  r  rR  r   r  r   r-   )rE   r  r  rl   rm   s        rF   !test_numpy_array_int_object_dtypez/TestStirling2.test_numpy_array_int_object_dtype	  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 )NrN   r^   r  r  r  Fr!  )r   r  r2   r-   r  s          rF   #test_numpy_array_unsigned_int_dtypez1TestStirling2.test_numpy_array_unsigned_int_dtype  sM     djjmAB'(L1L1Yq!5)39&9rI   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)r^   r   r  rS  )r^   rR   rT   r^   )r   r   r   r   r  r  r!  rN   )r   r^   rP   r   rN   r   r   )r   r^   rR   rT   r^   r   F)r   r-   r|   )rE   r  r  r  r  rl   rm   ro  s           rF   "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   r^   Tr!  Fgh㈵>)r)  r|   r-   rc   r+  r[  )rE   r  rl   	k_entriesdenomr~   s         rF   test_temme_rel_max_errorz&TestStirling2.test_temme_rel_max_error/  s     r3"# 	6AU1ac]+Iqc9D9E)QC%@@C66"&&u-.555		6rI   N)rO  rP  rQ  r  rR  rS  r  r   r   r  r  r  r  r  r  r  rc   r   r  r  r  r  r  rU  rI   rF   r  r    s   	
	
A!(0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 :	:6rI   r  c                   `    e Zd Zd Zej
                  j                  deeg      d        Z	d Z
y)TestLegendreDeprecationc                 v    d}t        j                  |      5  t        dd      }d d d        y # 1 sw Y   y xY w)Nz$`scipy.special.lpn` is deprecated...r  r^   r   )rR  r<  r.   rE   r=  ro  s      rF   test_warn_lpnz%TestLegendreDeprecation.test_warn_lpn<  s5    4###. 	Aq	A	 	 	s   /8xlpmnc                     d|j                    d}t        j                  |      5   |ddd      }d d d        y # 1 sw Y   y xY w)Nz`scipy.special.z` is deprecated...r  r^   r   )rO  rR  r<  )rE   r  messagero  s       rF   test_warn_xlpmnz'TestLegendreDeprecation.test_warn_xlpmnA  sF    #ENN#33EF##'2 	aAA	 	 	s	   ;Ac                     d}t        j                  |      5  t        j                  dddd      }d d d        y # 1 sw Y   y xY w)Nz)`scipy.special.sph_harm` is deprecated...r  r^   r   )rR  r<  r!   rD  r  s      rF   test_warn_sph_harmz*TestLegendreDeprecation.test_warn_sph_harmG  s@    9###. 	-  Aq!,A	- 	- 	-r?  N)rO  rP  rQ  r  rR  rS  r  r/   r0   r  r  rU  rI   rF   r  r  :  s5    
 [[WtUm4 5
-rI   r  r  )r  rW  r  r  r  r.  rc   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   rR  r   rq  numpy.testingr   r   r   r   r   r   r   r   r    scipyr!   scipy.special._ufuncs_ufuncsrB   scipy.specialr"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   scipy._lib._utilr1   r2   scipy._lib._array_apir3   r4   r5   scipy.special._basicr6   r7   r8   scipy.special._testutilsr9   r:   r;   r  architecturer  r0  rc  r?   rW  r  r  r  r  r  r  r  rL  r  r  r  r  r  r  r(  rG  rK  r
  r"  r?  r^  r  r  r  r  r  r  r  r  r   r  r  r  r  r+  r<  rG  rJ  rL  rY  r[  r^  r`  rh  rk  fixturero  rq  r  r  r  r  r  r  r  r  r  r  rS  rJ  r  r  r  rU  rI   rF   <module>r	     s\  (     
        *  
  & & 2 2 E E " H H * * . S S ! !  LLGxq!W, XX 
xx v9 v9ryG yGx. . 
V> V>r9 90 0<oB oBdD/ D/NB+ B+J: ::JT JTZG0 G0T)= )=X_B _BD- -2/ /@!HM- M-`A. A.H@7 @7F&% &%R\6 \6~U	$ U	$p
 
B. .	1 	1  = =4= 4=n& &2> >7 7? ?B B,&" &"R& &$2>
E#9 #9LA1DD:4zK   
 N NE"GB D,F$J&J,C$J
- & &[6 [6|- -rI   