
    xfzl                       d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlZd dlmZ d dlmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z& d dl'm(Z( d dl)m(c m*Z+ d dl,m-Z-m.Z.m/Z/ d dl,m0Z0m1Z1m2Z2m3Z3m4Z4 d dl,m5Z5m6Z6 d d	l7m8Z8m9Z9 d d
l:m;Z;m<Z<m=Z= d dl>Z> G d d      Z? G d d      Z@ G d d      ZA G d d      ZB G d d      ZC G d d      ZD G d d      ZE G d d      ZF G d d      ZG G d d      ZH G d d       ZI G d! d"      ZJ G d# d$      ZK G d% d&      ZL G d' d(      ZM G d) d*      ZN G d+ d,      ZO G d- d.      ZP G d/ d0      ZQ G d1 d2      ZR G d3 d4      ZS G d5 d6      ZT G d7 d8      ZU G d9 d:      ZV G d; d<      ZW G d= d>      ZX G d? d@      ZY G dA dB      ZZ G dC dD      Z[ G dE dF      Z\ G dG dH      Z] G dI dJ      Z^ G dK dL      Z_ G dM dN      Z` G dO dP      Za G dQ dR      Zb G dS dT      ZcdU ZddV Ze G dW dX      ZfdY ZgdZ Zhd[ Zid\ Zjd] Zkd^ Zle;d_        Zmd` Znda Zodb Zpdc Zqdd Zrde Zsdf Ztdg Zudh Zvy)i    N)arrayisnanr_arangefinfopisincostanexplogzerossqrtasarrayinf
nan_to_numrealarctanfloat_)raises)	assert_equalassert_almost_equalassert_array_equalassert_array_almost_equalassert_approx_equalassert_assert_allcloseassert_array_almost_equal_nulpsuppress_warnings)special)ellipeellipkellipkm1)elliprcelliprdelliprfelliprgelliprj)mathieu_odd_coefmathieu_even_coef)_FACTORIALK_LIMITS_64BITS_FACTORIALK_LIMITS_32BITS)with_special_errorsassert_func_equalFuncDatac                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0d/ Z1d0 Z2d1 Z3d2 Z4d3 Z5d4 Z6e7jp                  js                  d56      d7        Z:d8 Z;d9 Z<d: Z=e7jp                  js                  d;6      d<        Z>d= Z?d> Z@d? ZAd@ ZBdA ZCdB ZDdC ZEdD ZFdE ZGdF ZHdG ZIdH ZJdI ZKdJ ZLdK ZMdL ZNdM ZOdN ZPdO ZQdP ZRdQ ZSdR ZTdS ZUdT ZVdU ZWdV ZXdW ZYdX ZZdY Z[dZ Z\d[ Z]d\ Z^d] Z_d^ Z`d_ Zad` Zbda Zcdb Zddc Zedd Zfde Zgdf Zhdg Zidh Zjdi Zkdj Zldk Zmdl Zndm Zodn Zpdo Zqdp Zrdq Zsdr Ztds Zudt Zvdu Zwdv Zxdw Zydx Zzdy Z{dz Z|d{ Z}d| Z~d} Zd~ Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)
TestCephesc                 .    t        j                  d       y Nr   )cephesairyselfs    @/usr/lib/python3/dist-packages/scipy/special/tests/test_basic.py	test_airyzTestCephes.test_airy4       A    c                 .    t        j                  d       y r3   )r4   airyer6   s    r8   
test_airyezTestCephes.test_airye7   s    Qr;   c           	         t        j                  g d      }t        j                  g d      }t        j                  t        j                  |d d d f   |d d d f               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t         j                  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
@rB   )g޸g	TշJ?g	7?geLF)   g*+ @r   gM{@)gףp=
%@gϔ>@g<wg$@)   g,y3@iK  g5@vIh%<=rtol  i       r   f           ?绽|=atolrJ   )npr   broadcast_arraysreshapeTr.   r4   binomravelrandomseedr   r   rand)r7   nknkrknowns        r8   
test_binomzTestCephes.test_binom:   sm   HH()HH%&XXb))!AdF)QtAvY? 2qq 	 ##QF@B C 	&,,G 			tEE"))B#T"))..*<%<s%BBCIIaXXb))!AdF)QtAvY? 2qq 	 	&,, ,,r!A#w1Q390EF$5	2r;   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 )NrK   rP   ,     r   rO   rB   rE   rQ   rR   rS   )rU   r[   r\   r   logspacer   r   rV   rW   rX   r.   r4   rY   )r7   r^   r_   r`   s       r8   test_binom_2zTestCephes.test_binom_2Q   s    
		tEE"++ab)*IIaXXb))!AdF)QtAvY? 2qq 	 	&,, ,,r!A#w1Q390EF$5	2r;   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        |      }t        d      }t        d      }t        d|dz         D ]  }||| z   |z
  z  }||z  } t        ||z        S NrP   )intrangefloat)r^   r_   numdenis        r8   	binom_intz.TestCephes.test_binom_exact.<locals>.binom_int_   sj    AAAAa&Ca&C1ac] q1uqy q S>!r;   rK   rP      r   rB   rE   rS   )rU   	vectorizer[   r\   r   r   rV   rW   rX   r.   r4   rY   )r7   rq   r^   r_   r`   s        r8   test_binom_exactzTestCephes.test_binom_exact^   s    		" 
	" 			tIIaIIaXXb))!AdF)QtAvY? 2qq 	1Q32ac7"#&,,#BqsGR!W5 q	*r;   c                     g d}t        j                  |      }t        t        j                  |ddd      j                          y )N))rM   rN   gwP~)i  i  gii9~)i  i  gyhY~)i  i  gpvy~)i  i  gzN~)i  i  gGTɳ~)i  i  g@jH~)i  i  gF:aYͦ~)i  i  gɸV)i  i  g
{9)i  i  gyVxY)i  i  g*I y)i   i   gI)i  i  gW@N)i  i  g5y)r   rP   rB   -q=rI   )rU   r   r/   r4   rY   check)r7   datasets     r8   test_binom_nooverflow_8346z%TestCephes.test_binom_nooverflow_8346u   s6    
" **W%w>DDFr;   c                 F    t        t        j                  ddd      d       y )NrP         ?      ?)r   r4   bdtrr6   s    r8   	test_bdtrzTestCephes.test_bdtr   s    V[[1S)#.r;   c                 F    t        t        j                  ddd      d       y NrP      r{   )r   r4   bdtrir6   s    r8   
test_bdtrizTestCephes.test_bdtri       V\\!Ac*3/r;   c                 F    t        t        j                  ddd      d       y r   )r   r4   bdtrcr6   s    r8   
test_bdtrczTestCephes.test_bdtrc   r   r;   c                 F    t        t        j                  ddd      d       y NrP   r         @)r   r4   bdtrinr6   s    r8   test_bdtrinzTestCephes.test_bdtrin       V]]1Qq)#.r;   c                 2    t        j                  ddd       y r   )r4   bdtrikr6   s    r8   test_bdtrikzTestCephes.test_bdtrik   s    a#r;   c                 B    t        t        j                  d      d       y Nr           )r   r4   beir6   s    r8   test_beizTestCephes.test_bei       VZZ]3'r;   c                 B    t        t        j                  d      d       y r   )r   r4   beipr6   s    r8   	test_beipzTestCephes.test_beip       V[[^C(r;   c                 B    t        t        j                  d      d       y Nr   r|   )r   r4   berr6   s    r8   test_berzTestCephes.test_ber   r   r;   c                 B    t        t        j                  d      d       y r   )r   r4   berpr6   s    r8   	test_berpzTestCephes.test_berp   r   r;   c                 F    t        t        j                  ddd      d       y r   )r   r4   
besselpolyr6   s    r8   test_besselpolyzTestCephes.test_besselpoly   s    V&&q1-c2r;   c                     t        t        j                  dd      d       t        t        j                  dd      t        j                  d             t        t        j                  dd      ddd	
       y )NrP   r|   33333YN~h?   g6.8@rH   r   rJ   rT   )r   r4   betar   gammar6   s    r8   	test_betazTestCephes.test_beta   sR    V[[1%c*FF3V\\&5IJFC02D"	,r;   c                     t        t        j                  ddd      d       t        t        j                  ddd      d       y )NrP   r|   r   r   rR   g*?)r   r4   betaincr   r6   s    r8   test_betainczTestCephes.test_betainc   s1    V^^Aa*3/vsE:<OPr;   c                     t        t        j                  dd      d       t        t        j                  dd      t        j                  d             t        t        j                  dd      ddd	
       y )NrP   r   r   r   r      gIs	@+=r   r   )r   r4   betalnr   gammalnr6   s    r8   test_betalnzTestCephes.test_betaln   sR    V]]1Q',ff5v~~f7MNfc24F"	,r;   c                     t        t        j                  ddd      d       t        t        j                  ddd      ddd	       y )
NrP   r|   r   r         ?g"
Yx;gAfc=r   r   )r   r4   
betaincinvr   r6   s    r8   test_betaincinvzTestCephes.test_betaincinv   s<    V&&q1-c2))&#t<.U	Dr;   c                 h    t        t        j                  t        j                  dd                   y )NrE   rB   )r   rU   isinfr    r   r6   s    r8   test_beta_infzTestCephes.test_beta_inf   s    b!,-.r;   c                 F    t        t        j                  ddd      d       y NrP   r|   )r   r4   btdtrr6   s    r8   
test_btdtrzTestCephes.test_btdtr       V\\!Aa(-r;   c                 F    t        t        j                  ddd      d       y r   )r   r4   btdtrir6   s    r8   test_btdtrizTestCephes.test_btdtri   r   r;   c                 F    t        t        j                  ddd      d       y NrP   r   )r   r4   btdtriar6   s    r8   test_btdtriazTestCephes.test_btdtria       V^^Aa*3/r;   c                 F    t        t        j                  ddd      d       y r   )r   r4   btdtribr6   s    r8   test_btdtribzTestCephes.test_btdtrib   r   r;   c                 B    t        t        j                  d      d       y r   )r   r4   cbrtr6   s    r8   	test_cbrtzTestCephes.test_cbrt   s    FKKN3/r;   c                 D    t        t        j                  dd      d       y NrP   r   r   )r   r4   chdtrr6   s    r8   
test_chdtrzTestCephes.test_chdtr   s    V\\!A&s+r;   c                 D    t        t        j                  dd      d       y NrP   r   r|   )r   r4   chdtrcr6   s    r8   test_chdtrczTestCephes.test_chdtrc       V]]1Q',r;   c                 D    t        t        j                  dd      d       y NrP   r   )r   r4   chdtrir6   s    r8   test_chdtrizTestCephes.test_chdtri   r   r;   c                 D    t        t        j                  dd      d       y )Nr   r   )r   r4   chdtrivr6   s    r8   test_chdtrivzTestCephes.test_chdtriv   s    V^^Aa(-r;   c                    t        t        j                  ddd      d       t        j                  g dg dg dg dg dg d	g d
g dg dg dg dg dg dg      }t        j                  |d d df   |d d df   |d d df         }t        ||d d df   d       t        t        j                  t        j                  t        j                  d      d       t        t        j                  ddt        j                        d       t        t        j                  t        j                  t        j                  dd                   t        t        j                  t        j                  dt        j                  d                   t        t        j                  t        j                  ddt        j                                     y )Nr   rP   r   )      9@      4@  gL94)r          @   g7Fh9)MbP?r         D@ggåc;){Gz?r   r   g	;)r          @k   g8x@x>)g     6@r   r   gg1\>>)r   r   r   g`>)      @r   r|   gp!P?)g     u@g     r@      $@g j
?)      Y@      +@r   g]?)g     @r   r   g4ۙ?)g     b@r   r   g?)g      d@r   r   r|   rB   r   rv   rI   r      )r   r4   chndtrrU   r   r   r   r   r   r   nan)r7   valuescdfs      r8   test_chndtrzTestCephes.test_chndtr   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6r;   c                 F    t        t        j                  ddd      d       y Nr   rP   r   )r   r4   	chndtridfr6   s    r8   test_chndtridfzTestCephes.test_chndtridf       V%%a!,S1r;   c                 F    t        t        j                  ddd      d       y r   )r   r4   	chndtrincr6   s    r8   test_chndtrinczTestCephes.test_chndtrinc   r   r;   c                 F    t        t        j                  ddd      d       y Nr   rP   r   )r   r4   chndtrixr6   s    r8   test_chndtrixzTestCephes.test_chndtrix       V__Qq+C0r;   c                 B    t        t        j                  d      d       y r   )r   r4   cosdgr6   s    r8   
test_cosdgzTestCephes.test_cosdg      V\\!_S)r;   c                 B    t        t        j                  d      d       y r   )r   r4   cosm1r6   s    r8   
test_cosm1zTestCephes.test_cosm1  r  r;   c                 B    t        t        j                  d      d       y N-   r|   )r   r4   cotdgr6   s    r8   
test_cotdgzTestCephes.test_cotdg	  s    FLL,S1r;   c                     t        t        j                  d      d       t        t        j                  d      d       y )Nr   r   gGz?gf?)r   r4   dawsnr   r6   s    r8   
test_dawsnzTestCephes.test_dawsn  s(    V\\!_S)T*,?@r;   c                 $   g d}t        j                  dt         j                  z  dz         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)rP   r      rB   g-C6
?r|   rD   decimal&.>rr   V瞯<float128rv      )rB   r@            皙?)gg?gsOB?gsaL?g
7I^ʿr   )rU   r   r   astypefloat32r   r    diricfloat64hasattrr  r   )r7   n_oddxn_evenoctave_results        r8   
test_diriczTestCephes.test_diric  s    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/Kr;   c                 
   t        j                  d      }t        j                  g d      }t        t	        j
                  |d d t         j                  f   |      j                  |j                  |j                  fk(         y )Nr   )rP   r   rD   )	rU   r   r   r   r    r  newaxisshapesize)r7   r#  r^   s      r8   test_diric_broadcastingz"TestCephes.test_diric_broadcasting)  sU    IIaLHHYa2::.288QVVQVV<LLMr;   c                 B    t        t        j                  d      d       y r   )r   r4   r!   r6   s    r8   test_ellipezTestCephes.test_ellipe.      V]]1%c*r;   c                 D    t        t        j                  dd      d       y r   )r   r4   	ellipeincr6   s    r8   test_ellipeinczTestCephes.test_ellipeinc1      V%%a*3/r;   c                 0    t        j                  dd       y Nr   rP   )r4   ellipjr6   s    r8   test_ellipjzTestCephes.test_ellipj4  s    ar;   c                 <    t        t        d      t        dz         y )Nr   rB   )r   r"   r   r6   s    r8   test_ellipkzTestCephes.test_ellipk7  s    q	2a4(r;   c                 D    t        t        j                  dd      d       y r   )r   r4   	ellipkincr6   s    r8   test_ellipkinczTestCephes.test_ellipkinc:  r2  r;   c                 B    t        t        j                  d      d       y r   r   r4   erfr6   s    r8   test_erfzTestCephes.test_erf=  s    VZZ]C(r;   c                 t    d}t        t        j                  |      t        j                  |       z   d       y )Ng#8x@r   r=  r7   r#  s     r8   test_erf_symmetryzTestCephes.test_erf_symmetry@  s(    VZZ]VZZ^3S9r;   c                 B    t        t        j                  d      d       y r   )r   r4   erfcr6   s    r8   	test_erfczTestCephes.test_erfcD  s    V[[^S)r;   c                 B    t        t        j                  d      d       y )NrB   r   )r   r4   exp10r6   s    r8   
test_exp10zTestCephes.test_exp10G  s    FLLOE2r;   c                 B    t        t        j                  d      d       y )NrB         @)r   r4   exp2r6   s    r8   	test_exp2zTestCephes.test_exp2J  r   r;   c                    t        t        j                  d      d       t        t        j                  t        j                        t        j                         t        t        j                  t        j                         d       t        t        j                  t        j
                        t        j
                         y )Nr   r   rE   )r   r4   expm1rU   r   r   r6   s    r8   
test_expm1zTestCephes.test_expm1M  sc    V\\!_S)V\\"&&)2662V\\266'*B/V\\"&&)2662r;   c                 	   t         j                  }t         |d      d       t         |t        t        j
                  d            t        t        j
                  d             t         |t        t        j
                  d            t        t        j
                  t        j
                               t         |t        t        j
                  d            t        t        j
                   t        j
                               t         |t        t        j
                  d            t        t        j
                   t        j
                                t         |t        t        j
                  d            t        t        j
                  t        j
                                t         |t        dt        j
                              t        t        j                  t        j                               t         |t        dt        j
                              t        t        j                  t        j                               t         |t        t        j
                  t        j
                              t        t        j
                  t        j                               t         |t        t        j
                   t        j
                              t        dd             t         |t        t        j
                   t        j                              t        dd             t         |t        t        j
                  t        j                              t        t        j
                  t        j                               t         |t        dt        j                              t        t        j                  t        j                               t         |t        dt        j                              t        t        j                  t        j                               t         |t        t        j                  d            t        t        j                  t        j                               t         |t        t        j                  t        j                              t        t        j                  t        j                               y )N                r   rP   rB   r@   r   rE   )r4   rN  r   complexrU   r   r   )r7   rN  s     r8   test_expm1_complexzTestCephes.test_expm1_complexS  s   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Mr;   z-The real part of expm1(z) bad at these pointsreasonc                 p   t        j                  g d      }t        j                  t        j                  |             }|d|z  z   }t        j                  g d      }t	        j
                  |      }t        |j                  |j                  d       t        |j                  |j                  d       y )N)皙?r  333333?r      re                 ?)y=Cw?yC7gg)gF<Ug?yQ<D*?yg:><sKy>񸣼$	Um>ly;Vl <@r   re   )	rU   r   r   r
   r4   rN  r   imagr   )r7   yr#  zexpectedfounds         r8   test_expm1_complex_hardz"TestCephes.test_expm1_complex_hardf  s     HH/0VVBFF1I1H 88 J K Q&uzz8==!D&uzz8=="Er;   c                     t        t        j                  ddd      d       t        t        j                  ddd      dd	       y )
NrP   r   r   ư>r   
   g2?rv   rI   )r   r4   fdtrr   r6   s    r8   	test_fdtrzTestCephes.test_fdtr{  s6    V[[Aq)3/D!R02D"	$r;   c                     t        t        j                  ddd      d       t        t        j                  ddd      dd	       y )
NrP   r   r|   rB   rW  g    _BgDIXl?rv   rI   )r   r4   fdtrcr   r6   s    r8   
test_fdtrczTestCephes.test_fdtrc  s8    V\\!Q*C0 	QT24G"	$r;   c                     t        t        j                  ddddg      t        ddg      d       d}t        t        j                  d	d|      d
d       y )NrP   gV-?gx&1?g
}?g<zO'?rb  rI   g׀?rW  r   rv   )r   r4   fdtrir   )r7   ps     r8   
test_fdtrizTestCephes.test_fdtri  sM    QE5>:y*56T	C %S!Q/?r;   zReturns nan on i686.c                 F    t        t        j                  ddd      d       y )NrP   r{   )r   r4   rj  r6   s    r8   test_fdtri_mysterious_failurez(TestCephes.test_fdtri_mysterious_failure  s    Q3/3r;   c                 F    t        t        j                  ddd      d       y r   )r   r4   fdtridfdr6   s    r8   test_fdtridfdzTestCephes.test_fdtridfd  r  r;   c                 B    t        t        j                  d      d       y Nr   r   r   )r   r4   fresnelr6   s    r8   test_fresnelzTestCephes.test_fresnel  s    V^^A&y1r;   c                 B    t        t        j                  d      d       y Nr         8@)r   r4   r   r6   s    r8   
test_gammazTestCephes.test_gamma  s    V\\!_T*r;   c                 D    t        t        j                  dd      d       y )Nr   rP   r   )r   r4   gammainccinvr6   s    r8   test_gammainccinvzTestCephes.test_gammainccinv  s    V((1-c2r;   c                 .    t        j                  d       y )Nrc  )r4   r   r6   s    r8   test_gammalnzTestCephes.test_gammaln  s    rr;   c                     t        j                  g dt         j                        }t        t	        j
                  |      t        j                  t	        j                  |                   y )N)      gffffffrP   g@)rU   r   r   r   r4   gammasgnsignrgamma)r7   valss     r8   test_gammasgnzTestCephes.test_gammasgn  s<    xx0"**=6??40"''&--:M2NOr;   c                 F    t        t        j                  ddd      d       y r   )r   r4   gdtrr6   s    r8   	test_gdtrzTestCephes.test_gdtr      V[[1Q',r;   c                 b    t        t        j                  ddt        j                        d       y r   )r   r4   r  rU   r   r6   s    r8   test_gdtr_infzTestCephes.test_gdtr_inf  s    V[[1RVV,S1r;   c                 F    t        t        j                  ddd      d       y r   )r   r4   gdtrcr6   s    r8   
test_gdtrczTestCephes.test_gdtrc  r   r;   c                 F    t        t        j                  ddd      d       y r   )r   r4   gdtriar6   s    r8   test_gdtriazTestCephes.test_gdtria  r   r;   c                 2    t        j                  ddd       y NrP   r   )r4   gdtribr6   s    r8   test_gdtribzTestCephes.test_gdtrib  s    a!r;   c                 2    t        j                  ddd       y NrP   rW  )r4   gdtrixr6   s    r8   test_gdtrixzTestCephes.test_gdtrix  s    a"r;   c                 0    t        j                  dd       y rj   )r4   hankel1r6   s    r8   test_hankel1zTestCephes.test_hankel1      qr;   c                 0    t        j                  dd       y rj   )r4   hankel1er6   s    r8   test_hankel1ezTestCephes.test_hankel1e      !r;   c                 0    t        j                  dd       y rj   )r4   hankel2r6   s    r8   test_hankel2zTestCephes.test_hankel2  r  r;   c                 0    t        j                  dd       y rj   )r4   hankel2er6   s    r8   test_hankel2ezTestCephes.test_hankel2e  r  r;   c                     t        t        j                  ddd      t        d             t        t        j                  ddd      d       t        j                  ddd       y )NrP   r|   r   r@   g㈮?)r   r4   hyp1f1r   r6   s    r8   test_hyp1f1zTestCephes.test_hyp1f1  sE    FMM!Aa0#c(;FMM!Ab13JKa!r;   c                 H    t        t        j                  dddd      d       y r   )r   r4   hyp2f1r6   s    r8   test_hyp2f1zTestCephes.test_hyp2f1      V]]1Qq+C0r;   c                 B    t        t        j                  d      d       y r   )r   r4   i0r6   s    r8   test_i0zTestCephes.test_i0      VYYq\#&r;   c                 B    t        t        j                  d      d       y r   )r   r4   i0er6   s    r8   test_i0ezTestCephes.test_i0e  r   r;   c                 B    t        t        j                  d      d       y r   )r   r4   i1r6   s    r8   test_i1zTestCephes.test_i1  r  r;   c                 B    t        t        j                  d      d       y r   )r   r4   i1er6   s    r8   test_i1ezTestCephes.test_i1e  r   r;   c                 .    t        j                  d       y rj   )r4   it2i0k0r6   s    r8   test_it2i0k0zTestCephes.test_it2i0k0      qr;   c                 .    t        j                  d       y rj   )r4   it2j0y0r6   s    r8   test_it2j0y0zTestCephes.test_it2j0y0  r  r;   c                 .    t        j                  d       y rj   )r4   
it2struve0r6   s    r8   test_it2struve0zTestCephes.test_it2struve0  s    !r;   c                 .    t        j                  d       y rj   )r4   itairyr6   s    r8   test_itairyzTestCephes.test_itairy      ar;   c                 B    t        t        j                  d      d       y rs  )r   r4   iti0k0r6   s    r8   test_iti0k0zTestCephes.test_iti0k0      V]]1%i0r;   c                 B    t        t        j                  d      d       y rs  )r   r4   itj0y0r6   s    r8   test_itj0y0zTestCephes.test_itj0y0  r  r;   c                 B    t        t        j                  d      d       y r   )r   r4   itmodstruve0r6   s    r8   test_itmodstruve0zTestCephes.test_itmodstruve0  s    V((+C0r;   c                 B    t        t        j                  d      d       y r   )r   r4   	itstruve0r6   s    r8   test_itstruve0zTestCephes.test_itstruve0  s    V%%a(-r;   c                 D    t        t        j                  dd      d       y r   )r   r4   ivr6   s    r8   test_ivzTestCephes.test_iv      VYYq^C(r;   c                 D    t        t        j                  dd      d       y r   )r   r4   iver6   s    r8   test_ivezTestCephes.test_ive      VZZ!_S)r;   c                 B    t        t        j                  d      d       y r   )r   r4   j0r6   s    r8   test_j0zTestCephes.test_j0  r  r;   c                 B    t        t        j                  d      d       y r   )r   r4   j1r6   s    r8   test_j1zTestCephes.test_j1  r  r;   c                 D    t        t        j                  dd      d       y r   )r   r4   jnr6   s    r8   test_jnzTestCephes.test_jn  r  r;   c                 D    t        t        j                  dd      d       y r   )r   r4   jvr6   s    r8   test_jvzTestCephes.test_jv  r  r;   c                 D    t        t        j                  dd      d       y r   )r   r4   jver6   s    r8   test_jvezTestCephes.test_jve  r  r;   c                 .    t        j                  d       y NrB   )r4   k0r6   s    r8   test_k0zTestCephes.test_k0      		!r;   c                 .    t        j                  d       y r  )r4   k0er6   s    r8   test_k0ezTestCephes.test_k0e
      

1r;   c                 .    t        j                  d       y r  )r4   k1r6   s    r8   test_k1zTestCephes.test_k1  r  r;   c                 .    t        j                  d       y r  )r4   k1er6   s    r8   test_k1ezTestCephes.test_k1e  r  r;   c                 .    t        j                  d       y r  )r4   keir6   s    r8   test_keizTestCephes.test_kei  r  r;   c                 B    t        t        j                  d      d       y r   )r   r4   keipr6   s    r8   	test_keipzTestCephes.test_keip  r   r;   c                 .    t        j                  d       y r  )r4   kerr6   s    r8   test_kerzTestCephes.test_ker  r  r;   c                 .    t        j                  d       y r  )r4   kerpr6   s    r8   	test_kerpzTestCephes.test_kerp  r:   r;   c                 .    t        j                  d       y r  )r4   kelvinr6   s    r8   test_kelvinzTestCephes.test_kelvin  r  r;   c                 0    t        j                  dd       y rj   )r4   knr6   s    r8   test_knzTestCephes.test_kn"      		!Ar;   c                     t        t        j                  d      d       t        t	        j
                  t        j                  t        j                                     y r   )r   r4   kolmogir   rU   r   r   r6   s    r8   test_kolmogizTestCephes.test_kolmogi%  s3    V^^A&s+/01r;   c                 B    t        t        j                  d      d       y r   )r   r4   
kolmogorovr6   s    r8   test_kolmogorovzTestCephes.test_kolmogorov)  s    V&&q)3/r;   c                 B    t        t        j                  d      d       y )Nr          )r   r4   _kolmogpr6   s    r8   test_kolmogpzTestCephes.test_kolmogp,  s    V__Q'.r;   c                 B    t        t        j                  d      d       y r   )r   r4   _kolmogcr6   s    r8   test_kolmogczTestCephes.test_kolmogc/  s    V__Q'-r;   c                     t        t        j                  d      d       t        t	        j
                  t        j                  t        j                                     y r   )r   r4   	_kolmogcir   rU   r   r   r6   s    r8   test_kolmogcizTestCephes.test_kolmogci2  s7    V%%a(#.))"&&123r;   c                 0    t        j                  dd       y rj   )r4   kvr6   s    r8   test_kvzTestCephes.test_kv6  r  r;   c                 0    t        j                  dd       y rj   )r4   kver6   s    r8   test_kvezTestCephes.test_kve9      

1Qr;   c                 &   t         j                  }t         |d      d       t         |d      t        j                          t         |d      t        j
                         t         |t        j                        t        j                         y )Nr   r   rE   )r4   log1pr   rU   r   r   )r7   r,  s     r8   
test_log1pzTestCephes.test_log1p<  sU    U1Xs#U2Y(U2Y'U266]BFF+r;   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)	NrQ  rE   r   z%invalid value encountered in multiplyrP   rB   r   r@   )r4   r,  rR  r   rU   r   r   filterRuntimeWarningr   r   r   )r7   r,  csups       r8   test_log1p_complexzTestCephes.test_log1p_complexC  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   rP   r|   )r   r4   lpmvr6   s    r8   	test_lpmvzTestCephes.test_lpmvV  r  r;   c                 D    t        t        j                  dd      d       y r   )r   r4   	mathieu_ar6   s    r8   test_mathieu_azTestCephes.test_mathieu_aY  r2  r;   c                 D    t        t        j                  dd      d       y r   )r   r4   	mathieu_br6   s    r8   test_mathieu_bzTestCephes.test_mathieu_b\  r2  r;   c           
         t        t        j                  ddd      d       t        j                  d        }t        j
                  dd      }t        j                  dt        j                  ddd      f   }t        t        j                  |d d d f   |d d d f   d	      d    ||d d d f   |d d d f   d	      d
d       y )NrP   r   r|   r   c                    |t         j                  dz  z  }| dk(  rddd|z  t        d|z        z  z
  z  S | dk(  r t        |      |dz  t        d|z        z  z
  S | dk(  r&t        d|z        |t        d	|z        d
z  dz
  z  z
  S t        | |z        |t        | dz   |z        d	| dz   z  z  t        | dz
  |z        d	| dz
  z  z  z
  z  z
  S )N   r   g;f?rP   r{   rB      r   r@      r   )rU   r   r
   mqr]  s      r8   	ce_smallqz.TestCephes.test_mathieu_cem.<locals>.ce_smallqc  s    sNA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Ur;   d   rc  rh|?r   r   )	r   r4   mathieu_cemrU   rs   r   r   rf   r   )r7   rF  rD  rE  s       r8   test_mathieu_cemzTestCephes.test_mathieu_cem_  s    V''!A.y9 
		V 
		V IIaEE!R[[b"--.**1QtV9aQiGJ!!AdF)QtAvY>"	,r;   c           
         t        t        j                  ddd      d       t        j                  d        }t        j
                  dd      }t        j                  dt        j                  ddd      f   }t        t        j                  |d d d f   |d d d f   d	      d    ||d d d f   |d d d f   d	      d
d       y )NrP   r   r   r|   c                 V   |t         j                  dz  z  }| dk(  r t        |      |dz  t        d|z        z  z
  S | dk(  r#t        d|z        |t        d|z        z  dz  z
  S t        | |z        |t        | dz   |z        d| dz   z  z  t        | dz
  |z        d| dz
  z  z  z
  z  z
  S )Nr@  rP   rA  r   rB   r@   rB  )rU   r   r	   rC  s      r8   	se_smallqz.TestCephes.test_mathieu_sem.<locals>.se_smallqx  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Ur;   rG  rH  rI  rc  rJ  r   r   )	r   r4   mathieu_semrU   rs   r   r   rf   r   )r7   rP  rD  rE  s       r8   test_mathieu_semzTestCephes.test_mathieu_semt  s    V''!A.y9 
	V 
	V IIaEE!R[[b"--.**1QtV9aQiGJ!!AdF)QtAvY>"	,r;   c                 F    t        t        j                  ddd      d       y NrP   r   rt  )r   r4   mathieu_modcem1r6   s    r8   test_mathieu_modcem1zTestCephes.test_mathieu_modcem1      V++Aa29=r;   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 )
NrP   r   r@   r+  rB   rc  rD   rR   rI   )	r4   mathieu_modcem2rU   r   r   rf   linspacerU  r   r7   rD  rE  r]  y1fry2s          r8   test_mathieu_modcem2zTestCephes.test_mathieu_modcem2  s   q1% IIaOAd4K(EE"++b!R()$q+6KK1a d1-##Aq1"-a0$$Q1-a0063I3I!QPQ3RST3UU$$Q1-a001R48N8NqRSUV8WXY8Z3ZZBU+r;   c                 F    t        t        j                  ddd      d       y rT  )r   r4   mathieu_modsem1r6   s    r8   test_mathieu_modsem1zTestCephes.test_mathieu_modsem1  rW  r;   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 )
NrP   r@   r+  rB   rc  r   rD   rR   rI   )	r4   mathieu_modsem2rU   r   r   rf   rZ  ra  r   r[  s          r8   test_mathieu_modsem2zTestCephes.test_mathieu_modsem2  s   q1% IIaOAd4K(EE"++b!R()$q+6KK1a d1-##Aq1"-a0##Aq!,Q/&2H2HAq2QRS2TT##Aq!,Q/!B$v7M7MaQRTU7VWX7Y2YYBU+r;   c                    t        t        j                  ddd      t        j                  t        j                  f       t        t        j
                  ddd      t        j                  t        j                  f       t        t        j                  ddd      t        j                  t        j                  f       t        t        j
                  ddd      t        j                  t        j                  f       t        t        j                  ddd      t        j                  t        j                  f       t        t        j                  ddd      t        j                  t        j                  f       t        t        j                  ddd      t        j                  t        j                  f       t        t        j                  ddd      t        j                  t        j                  f       y )N'  r   g?      ?)
r   r4   rK  rU   r   rQ  rU  ra  rY  rd  r6   s    r8   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Or;   c                     t        d      D ];  }t        j                  ddd      }t        |d   dd       t        |d	   d
d       = y )N<   rB   rG  rE   r   g.dS?rR   rI   rP   gGc?-C6?)rl   r4   rd  r   )r7   r_   vs      r8   test_mathieu_ticket_1847z#TestCephes.test_mathieu_ticket_1847  sO     r 	GA&&q#r2AAaD":GAaD":F		Gr;   c                 .    t        j                  d       y r3   )r4   modfresnelmr6   s    r8   test_modfresnelmzTestCephes.test_modfresnelm      1r;   c                 .    t        j                  d       y r3   )r4   modfresnelpr6   s    r8   test_modfresnelpzTestCephes.test_modfresnelp  rr  r;   c                 D    t        t        j                  dd      d       y r   )r   r4   	modstruver6   s    r8   test_modstruvezTestCephes.test_modstruve  r2  r;   c                 F    t        t        j                  ddd      d       y r   )r   r4   nbdtrr6   s    r8   
test_nbdtrzTestCephes.test_nbdtr  r   r;   c                 F    t        t        j                  ddd      d       y r   )r   r4   nbdtrcr6   s    r8   test_nbdtrczTestCephes.test_nbdtrc  r   r;   c                 F    t        t        j                  ddd      d       y r   )r   r4   nbdtrir6   s    r8   test_nbdtrizTestCephes.test_nbdtri  r   r;   c                 2    t        j                  ddd       y )NrP   rC   r{   )r4   nbdtrikr6   s    r8   test_nbdtrikzTestCephes.test_nbdtrik  s    qBr;   c                 F    t        t        j                  ddd      d       y r   )r   r4   nbdtrinr6   s    r8   test_nbdtrinzTestCephes.test_nbdtrin  r   r;   c                 H    t        t        j                  dddd      d       y r   )r   r4   ncfdtrr6   s    r8   test_ncfdtrzTestCephes.test_ncfdtr  r  r;   c                     t        t        j                  dddd      d       g d}t        j                  ddd|      }t	        t        j                  ddd|      |       y )NrP   r   r   )r{   rP   rh  rB   r   rh  )r   r4   ncfdtrir  r   )r7   frk  s      r8   test_ncfdtrizTestCephes.test_ncfdtri  sM    V^^Aq!Q/5MM!QQ'q!S!4a8r;   c                     g d}t        j                  d|dd      }t        t        j                  d|dd      |       y )NrP   rB   r   rB   r   rr   )r4   r  r   
ncfdtridfd)r7   dfdrk  s      r8   test_ncfdtridfdzTestCephes.test_ncfdtridfd  s6    MM!S$+))!Qb93?r;   c                     g d}t        j                  |ddd      }t        t        j                  |ddd      |d       y )N)rW  rP   rB   r   g     @rB   r   rr   gh㈵>rI   )r4   r  r   
ncfdtridfn)r7   dfnrk  s      r8   test_ncfdtridfnzTestCephes.test_ncfdtridfn  s8    !MM#q$+))!Qb93TJr;   c                     g d}t        j                  dd|d      }t        t        j                  dd|d      |       y )N)r{   rh  r   rB   r   rr   )r4   r  r   	ncfdtrinc)r7   ncrk  s      r8   test_ncfdtrinczTestCephes.test_ncfdtrinc  s6    MM!QB'((Aq"5r:r;   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 )NrP   r   r{   	   i   r  r   r|   r   r   r   )	r   r4   nctdtrr   rU   r   r   r   r   r6   s    r8   test_nctdtrzTestCephes.test_nctdtr  s    V]]1Qq)#.V]]1eR0#6FMM"&&"b93Br2663789FMM"b"&&92>rvvr2678r2662678r2rvv678r;   c                 2    t        j                  ddd       y )NrP   r{   r   )r4   	nctdtridfr6   s    r8   test_nctdtridfzTestCephes.test_nctdtridf  s    3q!r;   c                 2    t        j                  ddd       y r  )r4   	nctdtrincr6   s    r8   test_nctdtrinczTestCephes.test_nctdtrinc  s    1Qr;   c                 2    t        j                  ddd       y )NrW  r  r{   )r4   nctdtritr6   s    r8   test_nctdtritzTestCephes.test_nctdtrit  s    3r"r;   c                 F    t        t        j                  ddd      d       y )Nr{   rP   r|   )r   r4   nrdtrimnr6   s    r8   test_nrdtrimnzTestCephes.test_nrdtrimn  s    FOOC!4S9r;   c                 L    t        t        j                  ddd      ddd       y )Nr{   r   r   rS   )r   r4   nrdtrisdr6   s    r8   test_nrdtrisdzTestCephes.test_nrdtrisd  s     C4ca	)r;   c                 4    t        j                  dddd       y r  )r4   obl_ang1r6   s    r8   test_obl_ang1zTestCephes.test_obl_ang1	      !Aa r;   c                 r    t        j                  ddddd      }t        |d   d       t        |d   d       y )NrP   r   r|   r   )r4   obl_ang1_cvr   )r7   results     r8   test_obl_ang1_cvzTestCephes.test_obl_ang1_cv  s6    ##Aa!A.F1Ic*F1Ic*r;   c                 F    t        t        j                  ddd      d       y NrP   r   r   )r   r4   obl_cvr6   s    r8   test_obl_cvzTestCephes.test_obl_cv  r   r;   c                 4    t        j                  dddd       y r  )r4   obl_rad1r6   s    r8   test_obl_rad1zTestCephes.test_obl_rad1  r  r;   c                 6    t        j                  ddddd       y r  )r4   obl_rad1_cvr6   s    r8   test_obl_rad1_cvzTestCephes.test_obl_rad1_cv      1Qq1%r;   c                 4    t        j                  dddd       y r  )r4   obl_rad2r6   s    r8   test_obl_rad2zTestCephes.test_obl_rad2  r  r;   c                 6    t        j                  ddddd       y r  )r4   obl_rad2_cvr6   s    r8   test_obl_rad2_cvzTestCephes.test_obl_rad2_cv  r  r;   c                 D    t        t        j                  dd      d       y )NrP   r   rN  )r   r4   pbdvr6   s    r8   	test_pbdvzTestCephes.test_pbdv   s    V[[1%i0r;   c                 0    t        j                  dd       y r  )r4   pbvvr6   s    r8   	test_pbvvzTestCephes.test_pbvv#      Aar;   c                 0    t        j                  dd       y r  )r4   pbwar6   s    r8   	test_pbwazTestCephes.test_pbwa&  r  r;   c                     t        j                  dd      }t        |t        j                  d             t        j                  g dd      }t        |g d       y )Nr   rP   rE   r   rP   rB   )rP   rP   rP   )r4   pdtrr   rU   r   r   r7   vals     r8   	test_pdtrzTestCephes.test_pdtr)  s>    kk!QC,kk)Q'3	*r;   c                     t        j                  dd      }t        |dt        j                  d      z
         t        j                  g dd      }t        |g d       y )Nr   rP   rE   r  r   )r   r   r   )r4   pdtrcr   rU   r   r   r  s     r8   
test_pdtrczTestCephes.test_pdtrc0  sB    ll1a CRVVBZ0ll9c*3	*r;   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/  r0  r4   pdtri)r7   r2  s     r8   
test_pdtrizTestCephes.test_pdtri7  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{   rP   r   r   ffffff?)r   #B;rb  )r   r   )r4   pdtrikr   	gammainccr   rU   r   r7   r_   s     r8   test_pdtrikzTestCephes.test_pdtrik<  s^    MM#q!F,,QUA6<MMA3/1AB1bhhv./r;   c                 4    t        j                  dddd       y r  )r4   pro_ang1r6   s    r8   test_pro_ang1zTestCephes.test_pro_ang1C  r  r;   c           	      \    t        t        j                  ddddd      t        d             y )NrP   r   r>  )r   r4   pro_ang1_cvr   r6   s    r8   test_pro_ang1_cvzTestCephes.test_pro_ang1_cvF  s'    !&"4"4Qq1Q"?"'	"2	4r;   c                 F    t        t        j                  ddd      d       y r  )r   r4   pro_cvr6   s    r8   test_pro_cvzTestCephes.test_pro_cvJ  r   r;   c                 4    t        j                  dddd       y r  )r4   pro_rad1r6   s    r8   test_pro_rad1zTestCephes.test_pro_rad1M  s    !Ac"r;   c                 6    t        j                  ddddd       y r  )r4   pro_rad1_cvr6   s    r8   test_pro_rad1_cvzTestCephes.test_pro_rad1_cvP  r  r;   c                 4    t        j                  dddd       y r  )r4   pro_rad2r6   s    r8   test_pro_rad2zTestCephes.test_pro_rad2S  r  r;   c                 6    t        j                  ddddd       y r  )r4   pro_rad2_cvr6   s    r8   test_pro_rad2_cvzTestCephes.test_pro_rad2_cvV  r  r;   c                 .    t        j                  d       y rj   )r4   psir6   s    r8   test_psizTestCephes.test_psiY  r  r;   c                 F    t        t        j                  ddd      d       y r3   )r   r4   radianr6   s    r8   test_radianzTestCephes.test_radian\  s    V]]1Qq)!,r;   c                 B    t        t        j                  d      d       y r   )r   r4   r  r6   s    r8   test_rgammazTestCephes.test_rgamma_  r.  r;   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@rJ  gg            @r  )r   r4   roundr6   s    r8   
test_roundzTestCephes.test_roundb  st    V\\#&s+V\\$'-V\\#&s+V\\$'-V\\#&s+V\\$'-r;   c                 .    t        j                  d       y rj   )r4   shichir6   s    r8   test_shichizTestCephes.test_shichij  r  r;   c                    t        j                  d       t        j                  t        j                        \  }}t	        |t        j
                  dz         t	        |d       t        j                  t        j                         \  }}t	        |t        j
                   dz         t        t        j                  |      d       y )NrP   r{   r   z cosine integral(-inf) is not nan)r4   sicirU   r   r   r   r   r   )r7   sr1  s      r8   	test_sicizTestCephes.test_sicim  s~    A{{266"1Aruus{+Aq!{{BFF7#1Av|,?@r;   c                 B    t        t        j                  d      d       y NZ   r|   )r   r4   sindgr6   s    r8   
test_sindgzTestCephes.test_sindgx      V\\"%c*r;   c                     t        t        j                  dd      d       t        t	        j
                  t        j                  dt        j                                     y )NrP   rW  ?)r   r4   smirnovr   rU   r   r   r6   s    r8   test_smirnovzTestCephes.test_smirnov{  s7    V^^Ab)#."&&123r;   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 )	NrP   rW  rE   rB         ?      r   g      ȿ)r   r4   	_smirnovpr   rU   r   r   r6   s    r8   test_smirnovpzTestCephes.test_smirnovp  sk    V%%a,b1V%%a.0@AV%%a.0@A))!RVV456r;   c                    t        t        j                  dd      d       t        t	        j
                  t        j                  dt        j                                     t	        j                  dddd      }t        t        j                  d|      dt        j                  d|      z
         t	        j                  dddd      }t        t        j                  d	|      dt        j                  d	|      z
         y )
NrP   rW  r   rY  Tendpointr   r   r@   )
r   r4   	_smirnovcr   rU   r   r   rZ  r   r  )r7   x10x4s      r8   test_smirnovczTestCephes.test_smirnovc  s    V%%a+C0))!BFF345kk!QT2F,,Q4aq#8N6NO[[Aq40F,,Q3Qv~~a7L5LMr;   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 NrP   rC   333333?)r   r4   r  smirnovir   rU   r   r   r6   s    r8   test_smirnovizTestCephes.test_smirnovi  sb    FNN1V__Qs-CDSIFNN1V__Qs-CDSI266234r;   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   r4   r#  
_smirnovcir   rU   r   r   r6   s    r8   test_smirnovcizTestCephes.test_smirnovci  sl    F,,Qv/@/@3/GHMF,,Qv/@/@3/GHM**1RVV456r;   c                 B    t        t        j                  d      d       y r   )r   r4   spencer6   s    r8   test_spencezTestCephes.test_spence  r.  r;   c                     t        t        j                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d       y )NrP   r   r{   r  rB   gMoF?)r   r4   stdtrr   r6   s    r8   
test_stdtrzTestCephes.test_stdtr  sA    V\\!A&s+FLL1-t4FLL1-~>r;   c                 0    t        j                  dd       y )Nffffff?rP   )r4   stdtridfr6   s    r8   test_stdtridfzTestCephes.test_stdtridf  s    Ar;   c                 0    t        j                  dd       y )NrP   r6  )r4   stdtritr6   s    r8   test_stdtritzTestCephes.test_stdtrit  s    qr;   c                 D    t        t        j                  dd      d       y r   )r   r4   struver6   s    r8   test_struvezTestCephes.test_struve  r   r;   c                 B    t        t        j                  d      d       y r  )r   r4   tandgr6   s    r8   
test_tandgzTestCephes.test_tandg  r  r;   c                 D    t        t        j                  dd      d       y r   )r   r4   tklmbdar6   s    r8   test_tklmbdazTestCephes.test_tklmbda  s    FNN1Q/4r;   c                 .    t        j                  d       y rj   )r4   y0r6   s    r8   test_y0zTestCephes.test_y0  r  r;   c                 .    t        j                  d       y rj   )r4   r\  r6   s    r8   test_y1zTestCephes.test_y1  r  r;   c                 0    t        j                  dd       y rj   )r4   ynr6   s    r8   test_ynzTestCephes.test_yn  r  r;   c                 0    t        j                  dd       y rj   )r4   yvr6   s    r8   test_yvzTestCephes.test_yv  r  r;   c                 0    t        j                  dd       y rj   )r4   yver6   s    r8   test_yvezTestCephes.test_yve  r)  r;   c                    t        dd      t        dd      t        dd      t        dd      t        dd	      t        dd
      t        dd      t        dd      t        dd      t        dd      t        dd      t        dd      t        dd      t        dd      t        dd      t        dd      g}t        dd      t        dd       t        d!d"      t        d#d$      t        d%d&      t        d'd(      t        d)d*      t        d+d,      t        d-d.      t        d/d      t        d0d1      t        d2d3      t        d4d5      t        d6d7      t        d8d9      t        d:d:      g}t        t        j                  ||d;<       y )=Ng@g+п皙ٿr   r)  r   r  r|   g      "g      "@g4׵/Yg8EGr?r  gffffff@ig>@r   g|Pk?rY  rP   ir+  r  i   ig     j@  ļBg0"bgpتO#M?gMF>?g5-g`?g	S+?g6U?gǗʿgjD{?/,Gg` 0Gg!^?gnF5o{gI\Y?g7f8goC9	?gyhgEbr?g{g.
?ga~gT-s?gɤ,P&?g|bgޗY3g!ؑ-@gi$bghgy(V@^gһ>g>gx\h<rH   rI   )rR  r.   r4   wofz)r7   r]  ws      r8   	test_wofzzTestCephes.test_wofz  s   U8$gd2&6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!%8r;   N)__name__
__module____qualname__r9   r>   rb   rg   rt   ry   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r	  r  r  r&  r+  r-  r1  r6  r8  r;  r?  rB  rE  rH  rL  rO  rS  pytestmarkxfailr`  re  rh  rl  rn  rq  rv  rz  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r%  r(  r-  r3  r6  r9  r<  rL  rR  rV  r_  rb  re  ri  rn  rq  ru  rx  r{  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r	  r  r  r  r  r  r&  r+  r.  r1  r4  r8  r;  r>  rA  rD  rG  rI  rL  rO  rR  rY   r;   r8   r1   r1   3   s
   2.2*.G,/00/()()3,Q,D
/./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P-2./
1'('(111.)*''))*)20/.4,F&-00,*,&>,>,	PG0.// 019@
K
;

9" #:)!+
/!&!&1++"
0!4/#&!&-+.	A+47N5
7
+?
-+5*9r;   r1   c                   0    e Zd Zd Zd Zd Zd Zd Z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?rA  g=
ףp=?)g'$'?geοgL?g
HVV?g
ףp=
׿)gl@D|?gV~׭ͿgU?g3{ɔ?)r    r5   r   r   rA  s     r8   r9   zTestAiry.test_airy  sg     LL!!E*X$YZ[\LL!!E*W$XYZ[LL!!E*X$YZ[\r;   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   r@   rB   gN贁N{?rF   )	r    r=   r5   rl   r   r   absr   r   )r7   abb1r^   s        r8   r>   zTestAiry.test_airye  s    MM$LLVAXq 	6AaD\$t*455BqE	6q 	BAaDc$|DJ'>"?@@AABqE	B!!Bq)r;   c                    t        j                  d      }t        ddg      t        ddg      t        ddg      t        dd	g      f}t        ||d
       t        j                  d      }t        |d   t        g d      d       t        |d   t        g d      d       t        |d   t        g d      d       t        |d   t        g d      d       y )NrB   glgoe2+
g(0[g X*JgUfݿg˰zU`?g4c1=C?gCuTr@   r   r   )g&g(.2+
gRg}`g%́rY  rP   )g7;1[ge*JgVwgL g<3rc  )gNݿg3%IQ`?gZyΌ׿gʀ11^?g33tտr   )gqM0=C?g7uTg\G`?gp⍞vg$.m?)r    bi_zerosr   r   )r7   bibias      r8   test_bi_zeroszTestAiry.test_bi_zeros  s   a k:./k;/0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r;   c           	          t        j                  d      }t        |t        dg      t        dg      t        dg      t        dg      fd       y )NrP   gcqg!xLgMSt$?g ~:p?r@   )r    ai_zerosr   r   )r7   ais     r8   test_ai_zeroszTestAiry.test_ai_zeros   sK    a !"e[M&:%*K=%9%*F8_%*F8_&6 78	9r;   c                    t        j                  d      \  }}}}t        j                  |      \  }}}}t        j                  |      \  }}	}}dt        |      dz  z  }
t        |      dz  }t	        ||d       t	        ||d       t	        ||
z  ddd       t	        |	|z  ddd       t	        |d d g d	d       t	        |d d g d
d       y )NP  rP   r   rR   rI   r   rS   rF   )guqgqHkZg4g9Ζ%gB~gL")gLgQO	gMQnGg3:g)}g )r    rp  r5   rf  r   )r7   r]  zpai_zpxaip_zxai_zaip_z_ai_zpaip_zpai_envelopeaip_envelopes               r8   test_ai_zeros_bigzTestAiry.test_ai_zeros_big'  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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 )Nrt  rP   r   rR   rI   r   rS   rF   )gx&gg-2+
gRgg`gu%́g{ )g K;1[g*JgVwg<w gd
3g/{
")r    rk  r5   rf  r   )r7   r]  ru  bi_zpxbip_zxrz  bi_zbip_zbi_zpbip_zpbi_envelopebip_envelopes               r8   test_bi_zeros_bigzTestAiry.test_bi_zeros_big?  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r;   N)	rZ  r[  r\  r9   r>   rn  rr  r  r  r`  r;   r8   rb  rb    s%    ]*GB9G0Gr;   rb  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 )NrY  rP   r  rA  )r    genlaguerreassoc_laguerrer   )r7   a1a2s      r8   test_assoc_laguerrez%TestAssocLaguerre.test_assoc_laguerreY  s\      A&##Br!,!"RVA.##Ab+!"RU1-r;   N)rZ  r[  r\  r  r`  r;   r8   r  r  X  s    .r;   r  c                       e Zd Zd Zy)TestBesselpolyc                      y Nr`  r6   s    r8   r   zTestBesselpoly.test_besselpolyb      r;   N)rZ  r[  r\  r   r`  r;   r8   r  r  a  s    r;   r  c                   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 )NrB   gT?r   )r    r   r   )r7   mbeis     r8   r   zTestKelvin.test_beig  s    {{1~D"4Q7r;   c                 H    t        j                  d      }t        |dd       y )NrB   gD,X?r   )r    r   r   )r7   mbeips     r8   r   zTestKelvin.test_beipk      QE"5a8r;   c                 H    t        j                  d      }t        |dd       y )NrB   gPA4?r   )r    r   r   )r7   mbers     r8   r   zTestKelvin.test_bero  s    {{1~D!4Q7r;   c                 H    t        j                  d      }t        |dd       y )NrB   gii߿r   )r    r   r   )r7   mberps     r8   r   zTestKelvin.test_berps      QE"6q9r;   c                 ^    t        j                  d      }t        |t        g d      d       y )Nr   g&jj@g+"@g(rw+@gU2@g`<6@r@   )r    	bei_zerosr   r   )r7   rl  s     r8   test_bei_zeroszTestKelvin.test_bei_zerosw  s-    q!!"U ,6 &7 89		:r;   c                 ^    t        j                  d      }t        |t        g d      d       y )Nr   )gyWo.@g╲ݏ @gנ{)@gK11@gWc"5@rA  )r    
beip_zerosr   r   )r7   bips     r8   test_beip_zeroszTestKelvin.test_beip_zeros  s2      #!#e -C 'D EF		Gr;   c                 ^    t        j                  d      }t        |t        g d      d       y )Nr   g\@g6ُ@gӟHY'@g>"D0@ggaO;4@r@   )r    	ber_zerosr   r   )r7   r   s     r8   test_ber_zeroszTestKelvin.test_ber_zeros  s-    "!#e -7 '8 9:		;r;   c                 ^    t        j                  d      }t        |t        g d      d       y )Nr   g '@gs%@gF ^-@gvۅj3@gB7@r@   )r    
berp_zerosr   r   )r7   brps     r8   test_berp_zeroszTestKelvin.test_berp_zeros  s-      #!#e -7 '8 9:		;r;   c           
         t        j                  d      }t        |t        j                  d      t        j                  d      dz  z   t        j
                  d      t        j                  d      dz  z   t        j                  d      t        j                  d      dz  z   t        j                  d      t        j                  d      dz  z   fd       y )NrB   rZ  rA  )r    r  r   r   r   r  r  r   r   r
  r  )r7   mkelvs     r8   r  zTestKelvin.test_kelvin  s    q!!%Q'++a.:K)K)0Q'++a.:K)K)0a7<<?2;M)M)0a7<<?2;M)M)O PQ	Rr;   c                 H    t        j                  d      }t        |dd       y )NrB   g>ɿr   )r    r  r   )r7   mkeis     r8   r  zTestKelvin.test_kei  s    {{1~D!5a8r;   c                 H    t        j                  d      }t        |dd       y )NrB   gr@d"?r   )r    r  r   )r7   mkeips     r8   r  zTestKelvin.test_keip  r  r;   c                 H    t        j                  d      }t        |dd       y )NrB   gܙUr   )r    r  r   )r7   mkers     r8   r  zTestKelvin.test_ker  s    {{1~D!6q9r;   c                 H    t        j                  d      }t        |dd       y )NrB   g^.n3Jr   )r    r
  r   )r7   mkerps     r8   r  zTestKelvin.test_kerp  r  r;   c                 ^    t        j                  d      }t        |t        g d      d       y )Nr   gE>Q@gB= @gPN)@gm91@g
%5@r@   )r    	kei_zerosr   r   )r7   r  s     r8   test_kei_zeroszTestKelvin.test_kei_zeros  s-    "!#e -8 '9 :;		<r;   c                 ^    t        j                  d      }t        |t        g d      d       y )Nr   gWf,@g?"@gFZ*o+@gOpN2@gEa6@r@   )r    
keip_zerosr   r   )r7   r  s     r8   test_keip_zeroszTestKelvin.test_keip_zeros  -    !!!$!$u .: (; <=		>r;   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  r@   r  )#?Q5U@q89 %@ol`.@gO0q3@r  r  )gum.@gݏ @gs{)@g䠄11@gN(D!5@gS@g89@@g^C'@g1ZG0@g+ڇ4@r  )r    kelvin_zerosr   r   )
r7   tmpberzbeizkerzkeizberpzbeipzkerpzkeipzs
             r8   test_kelvin_zeroszTestKelvin.test_kelvin_zeros  s   ""1%693T$tE%e!$u .9 (: ;<		=
 	"$u .9 (: ;<		=
 	"$u .9 (: ;<		=
 	"$u .9 (: ;<		=
 	"% /: ); <=		>
 	"% /: ); <=	> 	"% /: ); <=		>
 	"% /: ); <=		>r;   c                 ^    t        j                  d      }t        |t        g d      d       y )Nr   )r  r  r  r  gD;q3@r@   )r    	ker_zerosr   r   )r7   r  s     r8   test_ker_zeroszTestKelvin.test_ker_zeros  s-    "!#e -9 ': ;<		=r;   c                 ^    t        j                  d      }t        |t        g d      d       y )Nr   r  r@   )r    
kerp_zerosr   r   )r7   r
  s     r8   test_kerp_zeroszTestKelvin.test_kerp_zeros  r  r;   N)rZ  r[  r\  r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r`  r;   r8   r  r  f  s_    898::G;;R99::<>,>\=>r;   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   r@   )r    	bernoullir   r   )r7   brns     r8   test_bernoullizTestBernoulli.test_bernoulli   s-    "!#e -5 '6
 78	9r;   N)rZ  r[  r\  r  r`  r;   r8   r  r    s    9r;   r  c                   $    e Zd Zd Zd Zd Zd Zy)TestBetac                     t        j                  dd      }t        j                  d      t        j                  d      z  t        j                  d      z  }t        ||d       y )NrB   r@   rF   rA  )r    r   r   r   )r7   betbetgs      r8   r   zTestBeta.test_beta  sH    ll1Qa q!117==3CCCQ'r;   c                     t        j                  dd      }t        t        t        j                  dd                  }t        ||d       y )NrB   r@   rA  )r    r   r   rf  r   r   )r7   betlnr  s      r8   r   zTestBeta.test_betaln  s8    q##gll1Q'()E#a(r;   c                 L    t        j                  ddd      }t        |dd       y )NrP   r  rA  )r    r   r   )r7   btincs     r8   r   zTestBeta.test_betainc  s     !B'E#a(r;   c                 z    t        j                  ddd      }t        j                  dd|      }t        |dd       y )NrB   r@   r{   r   )r    r   r   r   )r7   r\  comps      r8   r   zTestBeta.test_betaincinv  s4    q2&q1%DA&r;   N)rZ  r[  r\  r   r   r   r   r`  r;   r8   r  r  
  s    (
)
)'r;   r  c                   8   e Zd Zd Zej
                  j                  dddg      ej
                  j                  dg d      ej
                  j                  ddd	g      ej
                  j                  d
ddg      d                             Zd Zd Z	d Z
d Zy)TestCombinatoricsc                    t        t        j                  ddgddg      ddg       t        t        j                  dd      d       t	        t        j                  ddd      d       t	        t        j                  dddd	      d
       t        t        d      D cg c]  }t        j                  d|d       c}t        j                  dt        t        d                  d       t        j                  t              j                  dz   }t	        t        j                  ||dz
  d      |       d}t        j                  ddd      |k(  sJ y c c}w )Nrc  r   r@         ^@g     @j@Texactx   )r  
repetition   rU  re   r  rT   rP   l   hU7`S?Q rG  2   )r   r    combr   r   r   rl   listrU   iinfork   max)r7   r_   iir^  s       r8   	test_combzTestCombinatorics.test_comb   s   !',,Bx!Q"@4,OGLLQ/6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r  TFlegacy)TFNr_   r  r   N      @r@   c                    |?t        j                  t        d      5  t        j                  ||d||      }d d d        nt        j                  ||d||      }|r7|rt        ||z   dz
        t        |      }}d}nt        |      t        |      }}t               5 }||j                  t               t        j                  ||||      }d d d        t               y # 1 sw Y   xY w# 1 sw Y   "xY w)Nz$Using 'legacy' keyword is deprecatedmatchT)r  r   r  rP   F)r   r  )	r]  warnsDeprecationWarningr    r  rk   r   r/  r   )r7   r  r_   r   r  r  r2  r^  s           r8   test_comb_legacyz"TestCombinatorics.test_comb_legacy/  s     "= = !a$v1;=	= = \\!Qd6-79F 1q519~s1v1"
1vs1v1  	PC!

-.||AqJOH	P 	VX&1= =(	P 	Ps   C%1C1%C.1C:c                     d}d}t        j                  |      }t        j                  |      }t        j                  ||d      }t        j                  ||d      }||k(  sJ y )NF   rL   Tr  )rU   int64r    r  )r7   r^   r_   np_nnp_kres_npres_pys          r8   test_comb_with_np_int64z)TestCombinatorics.test_comb_with_np_int64P  sX    xx{xx{dD5a$/r;   c                 `   t        t        j                  ddd      d       t        t        j                  ddd      d       t        t        j                  ddd      d       t        t        j                  ddd      d       t        t        j                  g dg d	      g d
       y )NrB   r   Tr  r   rE   FrB   rE   rB   rc  r   r   rE   r   )r   r   r   r  )r   r    r  r   r6   s    r8   test_comb_zerosz!TestCombinatorics.test_comb_zerosY  v    W\\!Qd3Q7W\\"at4a8W\\!Rt4a8W\\!Ru5q9!',,~}"M"	$r;   c                     t        t        j                  ddgddg      ddg       t        t        j                  dd      d       t	        t        j                  ddd      d       y )	Nrc  r   r@        @g     @Tr  i  )r   r    permr   r   r6   s    r8   	test_permzTestCombinatorics.test_perma  sO    !',,Bx!Q"@4-PGLLQ/6W\\"at4c:r;   c                 `   t        t        j                  ddd      d       t        t        j                  ddd      d       t        t        j                  ddd      d       t        t        j                  ddd      d       t        t        j                  g dg d	      g d
       y )NrB   r   Tr  r   rE   Fr  r  )r   r   r   r  )r   r    r  r   r6   s    r8   test_perm_zerosz!TestCombinatorics.test_perm_zerosf  r  r;   N)rZ  r[  r\  r  r]  r^  parametrizer  r  r  r  r  r`  r;   r8   r  r    s    = [[\D%=9[[X':;[[S3(+[[S3(+' , , < :': $;
$r;   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   )r7   cbcbrls      r8   r   zTestTrigonometric.test_cbrtp  s    \\"Bt$r;   c                 L    t        j                  d      }d}t        ||d       y )Ngfffff;@g鎖C@rA  )r    r   r   )r7   cb1cbrl1s      r8   test_cbrtmorezTestTrigonometric.test_cbrtmoreu  s!    ll4 Ca(r;   c                 l    t        j                  d      }t        t        dz        }t	        ||d       y )Nr  r   rA  r    r  r
   r   r   )r7   cdgcdgrls      r8   r  zTestTrigonometric.test_cosdgz  s)    mmBBsFCa(r;   c                 l    t        j                  d      }t        t        dz        }t	        ||d       y NrL         @rA  r(  )r7   cdgmcdgmrls      r8   test_cosdgmorez TestTrigonometric.test_cosdgmore  s)    }}R RVD*r;   c                    t        j                  d      t        j                  d      t        j                  t        dz        f}t        d      dz
  t        d      dz
  t        t        dz        dz
  f}t	        ||d       y )Nr   rX  rc  rP   rA  )r    r  r   r
   r   )r7   cscsrls      r8   r	  zTestTrigonometric.test_cosm1  sa    mmAw}}R0r"u1EFAqR3r"u:a<0!"T!,r;   c                 r    t        j                  d      }t        t        dz        dz  }t	        ||d       y )NrL   r-  rE   rA  r    r  r   r   r   )r7   ctctrls      r8   r  zTestTrigonometric.test_cotdg  s.    ]]22c6{R BtA&r;   c                 r    t        j                  d      }t        t        dz        dz  }t	        ||d       y )Nr  rJ  rE   rA  r5  )r7   ct1ctrl1s      r8   test_cotdgmorez TestTrigonometric.test_cotdgmore  s.    mmBBsFb!Ca(r;   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  r6   s    r8   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8r;   c                     t        t        j                  dg      d       t        t        j                  d      d       y )Nr   rP   r   r|   )r   r    sincr   r6   s    r8   	test_sinczTestTrigonometric.test_sinc  s*    7<<,a0W\\#&,r;   c                 F    t        j                  d      }t        |d       y r  )r    r  r   )r7   sns     r8   r  zTestTrigonometric.test_sindg  s    ]]2Rr;   c                     t        j                  d      }t        t        dz        }t	        ||d       t        j                  d      }t        t        dz        }t	        ||d       y )NrL   r-  rA  r  rJ  )r    r  r	   r   r   )r7   snmsnmrlsnm1snmrl1s        r8   test_sindgmorez TestTrigonometric.test_sindgmore  P    mmBBsFCa(}}R RVD*r;   N)rZ  r[  r\  r   r&  r  r0  r	  r  r;  rE  rH  r  rP  r`  r;   r8   r  r  o  s9    %
)
)
+
-
'
)
9-
+r;   r  c                       e Zd Zd Zd Zd Zy)	TestTandgc                 l    t        j                  d      }t        t        dz        }t	        ||d       y r,  r    r@  r   r   r   )r7   tntnrls      r8   rA  zTestTandg.test_tandg  s)    ]]22c6{BtA&r;   c                     t        j                  d      }t        t        dz        }t	        ||d       t        j                  d      }t        t        dz        }t	        ||d       y )Nr  rJ  rA  rk  r   rU  )r7   tnmtnmrltnm1tnmrl1s        r8   test_tandgmorezTestTandg.test_tandgmore  rQ  r;   c                    t        t        j                  d      dd       t        t        j                  d      dd       t        t        j                  d      dd       t        t        j                  d      dd       t        t        j                  d	      dd       t        t        j                  d
      dd       t        t        j                  d      dd       t        t        j                  d      dd       t        t        j                  d      dd       t        t        j                  d      dd       t        t        j                  d      dd       y )Nr   r   r=  r  r|   r>  r  r?  r@  r@  iLrA  rB  rC  rD  )r   r    r@  r6   s    r8   rE  zTestTandg.test_specialpoints  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9r;   N)rZ  r[  r\  rA  r]  rE  r`  r;   r8   rS  rS    s    '
+:r;   rS  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    r5  rU   r   r6   s    r8   test_ellipj_nanzTestEllip.test_ellipj_nan  s    sBFF#r;   c                 z    t        j                  dd      }t        d      t        d      ddg}t	        ||d       y )Nr  r   r|      )r    r5  r	   r
   r   )r7   elrels      r8   r6  zTestEllip.test_ellipj  s4    ^^C"3xCT*!"S,r;   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э?rY  r   r|   rB   rE   gN?)
r    r"   r   r   r#   rU   r   r   r   r   )r7   elks     r8   r8  zTestEllip.test_ellipk  s    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+-?@r;   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 )NrB   r  rr   re   r@  r  gfoKh?rA  r   r|   r   r{   gt?rP   rC   r   rI   6<R!?rh  gfON?)r    r:  r   r"   r   r	   r   rU   r   r   r   )r7   elkincri  alphaphirD  s         r8   r;  zTestEllip.test_ellipkinc  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Lr;   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   rc  rP   gV^8j?g,j6Ƅ@rB   )	rU   	nextafterrl   appendr    r:  r   	full_liker   r7   mbadrn  rD  mvalsjr  f1s           r8   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Sr;   c                 
   t        j                  ddd      }t        j                  ddd      }t        j                  dt        dz  dd      }t	        t        j                  |d	      t        j                  t        j                  |            d
       t	        t        j                  |d	      t        j                  t        j                  |            d
       t	        t        j                  |d	      t        j                  t        j                  |            d
       t        t        j                  t         j                  dz  d	      t         j                         t	        t        j                  | d	      t        j                  t        j                  |             d
       t	        t        j                  | d	      t        j                  t        j                  |             d
       t	        t        j                  | d	      t        j                  t        j                  |             d
       t        t        j                  t         j                   dz  d	      t         j                         y )Niir  gFFg<rW  rB   Fr!  rP   rV  rI   )rU   rf   rZ  r   r   r    r:  arcsinhr   r   r   )r7   xlogxlinxlin2s       r8   test_ellipkinc_singularz!TestEllip.test_ellipkinc_singular  s   {{4b){{5#r*CArE:))$2BJJrvvd|4LSWX))$2BJJrvvd|4LSWX))%3RZZu5NUYZW&&ruuQw2BFF;))4%3RZZu5NUYZ))4%3RZZu5NUYZ))5&!4bjj6PW[\W&&vax3RVV<r;   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?rA  r   rB   r|   rh  g?eg@)	r    r!   r   r   r   rU   r   r   r   )r7   eles     r8   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+-?@r;   c                    t        j                  t        dz  d      }t        j                  d      }t	        ||d       dt        z  dz  dt        z  dz  }}t        |      dz  }t        j                  ||      }t	        |dd       t        t        j                  t        dz  d	      t        dz         t        t        j                  t        dz  d
      d
       t        t        j                  t        dz  t        j                         t        j                         t        t        j                  t        dz  t        j                        t        j                         t        t        j                  t        dz  d      t        j                         t        t        j                  dd      d	       t        t        j                  t        j                  d      t        j                         t        t        j                  t        j                   d      t        j                          t        t        j                  t        j                  t        j                         t        j                         t        t        j                  t        j                   t        j                         t        j                          t        t        j                  t        j                  t        j                        t        j                         t        t        j                  t        j                   t        j                        t        j                         t        t        j                  t        j                  d      t        j                         t        t        j                  t        j                  t        j                        t        j                         t        t        j                  dd      d       y )NrB   r  r=  4   r@  #   g'?rA  r   r|   r   r{   rk  rh  gL@)r    r0  r   r!   r   r	   r   rU   r   r   r   )r7   eleincr  rm  rn  rD  s         r8   r1  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Kr;   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 )
Nrp  rq  r   rc  rP   g%?rB   gXo
@r@   )	rU   rr  rl   rs  r    r0  r   rt  r   ru  s           r8   test_ellipeinc_2zTestEllip.test_ellipeinc_2G  s     # LLq!r 	#ALLOQ"A	# c5)&q",,q:M*NPQRsRx/&r2<<<N+OQRSr;   N)rZ  r[  r\  rb  r6  r8  r;  rz  r  r-  r1  r  r`  r;   r8   r`  r`    s5    $-
	AM:T =	AL4Tr;   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 )NrP   r   r   r   g      @r   rZ                      r  y
c?
cy=B?CGֿr   y檠f?P9lb?)
r   r$   r   r   rR  r   rU   r   r   	enumerater7   argsexpected_resultsrp   arrs        r8   test_elliprczTestEllipCarlson.test_elliprc]  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+>?	@r;   c           
         t        t        ddd      d       t        t        ddd      dz  d       t        ddt              dk(  sJ t        j                  t        ddd            sJ t        j                  t        ddt        dd                  sJ t        j                  t        ddt        dd                  sJ t        t        ddt        j                  t        j                        j                   dz              sJ t        t        ddt        dd                  sJ t        g d	g d
g dg dg dg dg      }t        g d      }t        |      D ]  \  }}t        t        | ||           y )NrP   r   rB   r   g`C+?r   r   rE   )r   r   r|   r   r   rJ  rZ  r  r   r   rZ  r  )r               ?rZ  )y             r  r  )gfe_?gi+"?gP$M?ytgFU?7?@yR<8*y{62?z)r   r%   r   rU   r   rR  r   r   doubletinyr   r  r  s        r8   test_elliprdzTestEllipCarlson.test_elliprdq  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BHHRYY$7$<$<#<s#BCDDDWQ72q>2333o%((,35 6 ! "D E  o 	@FAsGSM+;A+>?	@r;   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 )NrP   r   rB   gPO?r   rE   )r|   r   r   )rZ  r  r   )r{   r|   r   r  rZ  r   r  r  )r  rZ        ?      )geQO?ʞu5J?r  yp\y?kg2ΰ?gHwд?y|pF?-6Fj)	r   r&   r   rU   r   r   rR  r   r  r  s        r8   test_elliprfzTestEllipCarlson.test_elliprf  s   1a(!,1a(*@A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+>?	@r;   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 )NrP   r   r{   )r         0@r  r  r  r  )r  r  rZ  )r   g8d`?rJ  gL+?g}^?y旮0?ʋW?yjN?^?gt?)	r   r'   rU   r   r   rR  r   r   r  r  s        r8   test_elliprgzTestEllipCarlson.test_elliprg  s    1a(!,1a(#.1a(!,xx3*+++xxa3444'%(,.(* + !"%%"1"2"D"D"1"3 4  o 	@FAsGSM+;A+>?	@r;   c                    t        t        dddd      d       t        ddt        d      dk(  sJ t        t        dddd            sJ t        t        dddd            sJ t        dddt              dk(  sJ t	        g dg dg dg dg d	g d
g dg dg dg	      }t	        g d      }t        |      D ]  \  }}t        t        | ||           y )NrP   r   r   rE   )r   r|   r   r   )r   r   rJ  r   )r   r   rJ  r  )rZ  r  r   r   )r              r|   r   )rZ  r  r   r  )r  r  r|   y            ?)r   r   rJ  r  )r   r   rJ        )	g @?gviM?ym?\Isؿg'4Ob?go0 ?yW7?xfOA?ybv㿘ܶ.gHQ?gjߡB7E)r   r(   r   r   r   r  r  s        r8   test_elliprjzTestEllipCarlson.test_elliprj  s    1a+Q/q!S!$+++WQ1a()))WRAq)***q!Q$+++**0-62<++- . ! "5 6  o 	@FAsGSM+;A+>?	@r;   zInsufficient accuracy on 32-bitrT  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|>g+<r  r   g   ,@g    x=g   @e:g   `ݽ>g(HR)A)r   r(   r6   s    r8   test_elliprj_hardz"TestEllipCarlson.test_elliprj_hard  sN     5 6 3 13 ;"	0 	 2 5 4 57 <"	0r;   N)rZ  r[  r\  __doc__r  r  r  r  r  r]  r^  r_  r  r`  r;   r8   r  r  X  sM    @(@0@2@*@6 [[?@0 A0r;   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   rE   r   )rU   r   m_n1_1r   r   minmax_neglog2
very_neg_mconcatenate
ms_up_to_1r6   s    r8   setup_classz.TestEllipLegendreCarlsonIdentities.setup_class  s    iiR.V}((F2+-77DLL=+A,BCE+.%0 !0 0 ..4<<.*.//*.++*7 8r;   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&   r7   rD  s     r8   test_kz)TestEllipLegendreCarlsonIdentities.test_k  s(     OOq	72r!tR#89r;   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   rU   r  r   r#   r&   )r7   r  m1s      r8   test_km1z+TestEllipLegendreCarlsonIdentities.test_km1  sJ     V}!!BrBGGDM>222gb"b&9:r;   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     r8   test_ez)TestEllipLegendreCarlsonIdentities.test_e  s-     OOq	2gb"Q$&;#;<r;   N)rZ  r[  r\  r  r  r  r  r  r`  r;   r8   r  r    s    

8:	;=r;   r  c                   \    e Zd Zd Zd ZddZd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zy)TestErfc                 H    t        j                  d      }t        |dd       y )Nr   g);T?rA  )r    r>  r   )r7   ers     r8   r?  zTestErf.test_erf  s    [[B|A.r;   c                 b    t        j                  d      }t        g d      }t        ||d       y )Nr   )yTcJ5?=W?yo@n@y'ʷ@g	@y"[

@,y]+@yld&@-;'j'>@r@   )r    	erf_zerosr   r   )r7   erzerzrs      r8   test_erf_zeroszTestErf.test_erf_zeros  s/    " - .
 	"#d1-r;   c                    t         j                  j                  d       d}t         j                  j                  d|      dt         j                  j	                  dd|      z  dz
  z  }t         j                  j                  d|      dt         j                  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)NrK   rg  g{Gz?rB   r   rP   rZ  ignoreallr   )	rU   r[   r\   paretorandinterrstater   isfiniter.   )r7   func
other_funcrJ   rT   r^   r#  r\  r]  rX  w_realmasks               r8   _check_variant_funczTestErf._check_variant_func  s2   
		tIIT1%299+<+<Q1+E)E)IJIIT1%299+<+<Q1+E)E)IJ1H[[X& 	E1A]''F;;q>D$A$A;;v&DD\F$A dAqt$?dFADtD	E 	E 	Es   A9EEc                 L    | j                  t        j                  d dd       y )Nc                 2    dt        j                  |       z
  S rj   r4   r>  r]  s    r8   <lambda>z.TestErf.test_erfc_consistent.<locals>.<lambda>6  s    a&**Q-' r;   rv   r   r   )r  r4   rD  r6   s    r8   test_erfc_consistentzTestErf.test_erfc_consistent3  s%      KK'	 	! 	r;   c                 J    | j                  t        j                  d d       y )Nc                 ^    t        j                  | | z        t        j                  |       z  S r  )rU   r   r4   rD  r  s    r8   r  z/TestErf.test_erfcx_consistent.<locals>.<lambda>>  s    bffQqSkFKKN2 r;   rv   rI   )r  r4   erfcxr6   s    r8   test_erfcx_consistentzTestErf.test_erfcx_consistent;  s"      LL2 	! 	r;   c                 J    | j                  t        j                  d d       y )Nc                 8    dt        j                  d| z        z  S )Nr  rZ  r  r  s    r8   r  z.TestErf.test_erfi_consistent.<locals>.<lambda>E  s    cFJJr!t,, r;   rv   rI   )r  r4   erfir6   s    r8   test_erfi_consistentzTestErf.test_erfi_consistentB  s"      KK, 	! 	r;   c                 J    | j                  t        j                  d d       y )Nc                     t        t              dz  t        j                  |  | z        z  t	        j
                  |       z  S r  )r   r   rU   r   r4   r  r  s    r8   r  z/TestErf.test_dawsn_consistent.<locals>.<lambda>L  s.    d2hqj2661"Q$</&++a.@ r;   rv   rI   )r  r4   r  r6   s    r8   test_dawsn_consistentzTestErf.test_dawsn_consistentI  s"      LL@ 	! 	r;   c                     t         j                  t         j                   t         j                  g}t         j                  ddg}t        t	        j
                  |      |d       y )NrE   rP   r  rI   )rU   r   r   r   r    r>  r7   r  r^  s      r8   test_erf_nan_infzTestErf.test_erf_nan_infP  s@    (FFB?D)8%@r;   c                     t         j                  t         j                   t         j                  g}t         j                  ddg}t        t	        j
                  |      |d       y )NrB   r   r  rI   )rU   r   r   r   r    rD  r  s      r8   test_erfc_nan_infzTestErf.test_erfc_nan_infU  s@    (FFAq>T*H5Ar;   c                     t         j                  t         j                   t         j                  g}t         j                  t         j                  dg}t        t	        j
                  |      |d       y )Nr   r  rI   )rU   r   r   r   r    r  r  s      r8   test_erfcx_nan_infzTestErf.test_erfcx_nan_infZ  sE    (FFBFFA&d+XEBr;   c                    t         j                  t         j                   t         j                  g}t         j                  t         j                   t         j                  g}t        t	        j
                  |      |d       y )Nr  rI   )rU   r   r   r   r    r  r  s      r8   test_erfi_nan_infzTestErf.test_erfi_nan_inf_  sK    (FFRVVGRVV,T*H5Ar;   c                     t         j                  t         j                   t         j                  g}t         j                  ddg}t        t	        j
                  |      |d       y )Nr  r   r  rI   )rU   r   r   r   r    r  r  s      r8   test_dawsn_nan_infzTestErf.test_dawsn_nan_infd  sA    (FFD#&d+XEBr;   c                     t         j                  t         j                   t         j                  g}t         j                  t         j                  dz  z   ddg}t        t	        j
                  |      |d       y )NrZ  rQ  r  rI   )rU   r   r   r   r    rW  r  s      r8   test_wofz_nan_infzTestErf.test_wofz_nan_infi  sN    (FFRVVc\)66:T*H5Ar;   N)r   )rZ  r[  r\  r?  r  r  r  r  r  r  r  r  r  r  r  r  r`  r;   r8   r  r    sJ    /.E.A
B
C
B
C
Br;   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   rP   rB   r  rI   )rP   r   rE   r  )rP   rP   r   =   ii  iY  i=) il   Q~ l   10[l   $8gC
 l   2l   v}Ju: )r  drd  r  r  r   r=  )r    eulerr   r   rl   rm   rU   r  r   r  r   )
r7   eu0eu1eu2eu24	mathworldcorrectr_   errerrmaxs
             r8   
test_eulerzTestEuler.test_eulerp  s   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)rZ  r[  r\  r   r`  r;   r8   r  r  o  s    -r;   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 )NrB   r@   )r    rK  r   r7   exexrls      r8   rL  zTestExp.test_exp2  s    \\!_Rr;   c                 L    t        j                  d      }d}t        ||d       y )N      @g;f@rA  )r    rK  r   r7   exmexmrls      r8   test_exp2morezTestExp.test_exp2more  s!    ll3Ca(r;   c                 J    t        j                  d      }d}t        ||       y )NrB   rG  )r    rG  r   r  s      r8   rH  zTestExp.test_exp10  s    ]]1Bt$r;   c                 L    t        j                  d      }d}t        ||d       y )Nr  gYs@rA  )r    rG  r   r	  s      r8   test_exp10morezTestExp.test_exp10more  s!    mmC Ca(r;   c                     t        j                  d      t        j                  d      t        j                  d      f}t        d      dz
  t        d      dz
  t        d      dz
  f}t        ||d       y )NrB   r   r@   rP   rA  r    rN  r   r   r  s      r8   rO  zTestExp.test_expm1  sY    mmAw}}Q/a0@AAqQ#a&(+!"T!,r;   c                     t        j                  d      t        j                  d      t        j                  d      f}t        d      dz
  t        d      dz
  t        d      dz
  f}t        ||d       y )NrB    @皙@rP   rA  r  )r7   ex1exrl1s      r8   test_expm1morezTestExp.test_expm1more  sY    }}Qc 27==3EFQ#c(1*SXaZ0!#eA.r;   N)	rZ  r[  r\  rL  r  rH  r  rO  r  r`  r;   r8   r  r    s     
)
%
)
-
/r;   r  c                      e Zd Zej                  j                  dddg      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ddg      ej                  j                  d	e	j                  d
 e	j                  d      gg d      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 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ddd            d        Zej                  j                  d e edd             e eddd            z         d        Zej                  j                  dddg      d        Zej                  j                  de	j*                  e	j,                  e	j.                  eg      ej                  j                  dddg      ej                  j                  d edd            ej                  j                  d	g dgd ge	j                  ge	j                  dggg d!      d"                             Zej                  j                  dddg      ej                  j                  ddd d#e	j                  d
gg d$      d%               Zej                  j                  d eddd&            d'        Zej                  j                  d e edd             e eddd&            z         d(        Zej                  j                  de	j*                  e	j,                  e	j.                  eg      ej                  j                  dddg      ej                  j                  d edd            ej                  j                  d	g dge	j                  ge	j                  dggg d)      d*                             Zej                  j                  dddg      ej                  j                  ddd d#e	j                  d
gg d$      d+               Zej                  j                  d, e edd            dd-gz         ej                  j                  d e edd             e edd.d&            z         d/               Zej                  j                  de	j*                  e	j,                  e	j.                  eg      ej                  j                  d edd            ej                  j                  d	g dge	j                  ge	j                  dggg d)      d0                      Z ej                  j                  dddg      ej                  j                  d, edd            ej                  j                  ddd d#e	j                  d
gg d$      d1                      Z!ej                  j                  d,dd e	j                  d2g      d3        Z"ej                  j                  d, edd4            d5        Z#d6 Z$y
)7TestFactorialFunctionsr  TFc                    t        j                  t        j                  d|            sJ t        j                  t        j                  d|            sJ t        j                  t        j
                  ddd            sJ y )NrP   r  r   T)rU   isscalarr    	factorial
factorial2
factorialk)r7   r  s     r8   "test_factorialx_scalar_return_typez9TestFactorialFunctions.test_factorialx_scalar_return_type  sa    {{7,,Qe<==={{7--au=>>>{{7--a$?@@@r;   r^   )rE   r+  c                     t        t        j                  ||      d       t        t        j                  ||      d       t        t        j                  |dd      d       y )Nr  r   r   T)r   r    r  r  r  )r7   r  r^   s      r8   test_factorialx_negativez/TestFactorialFunctions.test_factorialx_negative  sK     	W&&q6:W''7;W''1D91=r;   c                     |rt         nt        } |t        j                  g d|      g d        |t        j                  g d|      g d        |t        j
                  g ddd      g d       y )N)r  r   rP   r  )r   r   rP   rP   r   T)r   r   r    r  r  r  )r7   r  assert_funcs      r8   test_factorialx_negative_arrayz5TestFactorialFunctions.test_factorialx_negative_array  s\    ,1(G%%nEB 	"G&&~UC 	"G&&~qE 	"r;   contentNnat)NaNNoneNaT)idsc                    t        j                  ||      t        j                  u sJ t        j                  ||      t        j                  u sJ t        j
                  |dd      t        j                  u sJ |t        j                  ur=t        j                  t        d      5  t        j                  |g|       d d d        n|rVt        j                  t        d      5  t        j                  t        j                  |g|      d         sJ 	 d d d        n0t        j                  t        j                  |g|      d         sJ t        j                  t        d      5  t        j                  |g|       d d d        t        j                  t        d	      5  t        j
                  |g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   y xY w)
Nr  r   TzUnsupported datatype.*r  Non-integer array.*r   zfactorial2 does not support.*zfactorialk does not support.*)r    r  rU   r   r  r  r]  r   
ValueErrorr  r  r   )r7   r'  r  s      r8   test_factorialx_nanz*TestFactorialFunctions.test_factorialx_nan  s   
   6"&&@@@!!'7266AAA!!'1D9RVVCCC"&& z1IJ :!!7)59: :08MN Nxx 1 17)5 I! LMMMN N 88G--wiuEaHIII]]:-LM 	7y6	7]]:-LM 	9y!48	9 	9: :N N
	7 	7	9 	9s0   *G)1G/G&+G2GG#&G/2G;levelsrP   r   c                    dfd	fd}t        j                   ddg            }dt        j                  d      gdt	        j
                  dd	
      gdt	        j                  dd      gd} |t	        j                  ||
      |d           |t	        j
                  ||
      |d           |t	        j                  |dd	
      |d          y )NrP   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   rP   r`  r#  r_   _nest_mes     r8   r5  zDTestFactorialFunctions.test_factorialx_array_shape.<locals>._nest_me  s&     AvA!,,r;   c                     t        j                   |      t              }t        | j	                  t         j
                         |j                  t         j
                               y )Nr_   dtype)rU   r   objectr   r  r   )resnucleusr   r5  r1  s      r8   _checkzBTestFactorialFunctions.test_factorialx_array_shape.<locals>._check  sB    ((8Gv6fEC CJJrzz2JCJJrzz4JKr;   r   r  r7  r  rr   Tr  rc  r   r  rB   rP   )rU   r   mathr  r    r  r  )r7   r1  r  r=  r^   exp_nucleusr5  s    `    @r8   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"a89;
 	w  %0+a.Aw!!!51;q>Bw!!!Qd3[^Dr;   dimr   c                    t        j                  d|      }dddd}t        t        j                  ||      t        j                  |d   |             t        t        j
                  ||      t        j                  |d	   |             t        t        j                  |d
d      t        j                  |d
   |             y )Nr   ndminr  rr   rc  r  r  rP   rB   r   T)rU   r   r   r    r  r  r  )r7   rB  r  r^   r   s        r8   test_factorialx_array_dimensionz6TestFactorialFunctions.test_factorialx_array_dimension  s     HHQc""$))!59Qs3	5**1E:Qs3	5**1at<Qs3	5r;   levelc                    dfd	 dg|dz
        }dddd}|rt         nt        } |t        j                  ||	      t	        j
                  |d   |
              |t        j                  ||	      t	        j
                  |d   |
              |t        j                  |dd	      t	        j
                  |d   |
             y )NrP   c                 ,    |dk(  r| S  | g|dz
        S r4  r`  r4  s     r8   r5  zCTestFactorialFunctions.test_factorialx_array_like.<locals>._nest_me
  s"    AvQqS))r;   r   r7  r  rr   rc  r  r  rD  rB   r   Tr>  )r   r   r    r  rU   r   r  r  )r7   rG  r  r^   r@  r%  r5  s         @r8   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!48HH[^59	;r;   rL   r@  rc  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 )Nwin32t0=r  Tr  FrI   )sysplatformr   rm   r    r  r  r7   r^   rJ   s      r8   test_factorial_accuracyz.TestFactorialFunctions.test_factorial_accuracy  s~    
 /uUg//>?))!59	F))1#T:AA%H))1#U;$	Hr;      c                    t        j                  |      }t        |t        j                  |d             t        |t        j                  |gd      d          t        j
                  dk(  rdnd}t        t        |      t        j                  |d      |       t        t        |      t        j                  |gd      d   |       y )NTr   rL  rM  r  FrI   )r?  r  r   r    rN  rO  r   rm   )r7   r^   r  rJ   s       r8   test_factorial_int_referencez3TestFactorialFunctions.test_factorial_int_reference'  s     ..#7G$5$5a$>?7G$5$5qc4$@$CD/uUg(9(9!U(C!	#g(9(91#u(Ea(H!	#r;   c                     fd} |dd        |dd        |dd        |dd	        |d
d        |dd        |dd        |dd        |dd       y )Nc                     t        t        j                  |       |       t        t        j                  | g      d   |       y )Nr  r   )r   r    r  )r^   r^  r  s     r8   r=  zETestFactorialFunctions.test_factorial_float_reference.<locals>._check7  s6    G--au=xHG--qc215x@r;   r   gr?g(\?gc?g333333@g4s@g333333&@gމOAgfffff@@g	²Gg     K@gC$JOglS@g }WgX@gX>%`g\CSe@gG=r`  )r7   r  r=  s    ` r8   test_factorial_float_referencez5TestFactorialFunctions.test_factorial_float_reference5  sn    	A 	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8r;   r9  皙?)[][1]z[1.1][NaN][NaN, 1]c                    |t         j                  k(  r't        d |D              rt        j                  d       |dkD  st        |      dk7  r|n|d   }t        j                  |||      }d }|st        j                  ||      }n>t        j                  |j                  t         j                        skt        j                  |j                  t         j                        s=t        j                  t        d      5  t        j                  ||       d d d        n|rt        j                  |j                  t         j                        s|j                  rt        j                   |t        j"                  |          |t        j"                  |          j%                  t         j                              rt        j&                  t(        d	      5  t        j                  ||      }t        j                  t        j"                  |            rt         j*                  nt         j,                  }d d d        n|rjt        j                  |j                  t         j                        s<t        j                  t        d
      5  t        j                  ||       d d d        nt        j                  ||      }d }|t/               5 }|j1                  t(               |j2                  r|j5                         n|}	|j                  rt        j                  |	|      ng }
d d d        t        j                  
||      } |||       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   PxY w)Nc              3   F   K   | ]  }t        j                  |        y wr  rU   r   .0r#  s     r8   	<genexpr>zKTestFactorialFunctions.test_factorial_array_corner_cases.<locals>.<genexpr>R       $BQRXXa[$B   !impossible combinationr   rP   rE  r9  r  Unsupported datatype*r  r.  zfactorial with exact=.*c                     t        |       t        |      k(  sJ dt        |        dt        |              t        | |       y )Nztypes not equal: z, )typer   r#  r\  s     r8   assert_really_equalzUTestFactorialFunctions.test_factorial_array_corner_cases.<locals>.assert_really_equaln  s=    7d1g%O):47)2d1gY'OO%Ar;   )rU   r  anyr]  skiplenr   r    r  
issubdtyper9  integerfloatingr   r/  r*  allcloser   r  r  r  r   int_r   r/  ndimrZ   )r7   r'  rB  r  r9  r^   r  rk  r2  n_flatrr^  s               r8   !test_factorial_array_corner_casesz8TestFactorialFunctions.test_factorial_array_corner_casesI  s    BHH$B'$B!BKK01!AgW):'HHWCu5&&q6F--4]]177BKK8z1HI 2!!!512 2BMM!''2::>166kk!RXXa[L/1bhhqk\?+A+A"((+KL08MN F **1E:%'VVBHHQK%8		bggF F 2=="**=z1JK 2!!!512 2 &&q6F	  #$ M

-.&'ff!>?ffG%%fE:"	M
 xxE:H1 -2 2
F F
2 2M Ms2   MA M'M3AM?M$'M03M<?Ny       @       @)1z1.1z2+2jr)  r*  c                 (   |l|t         j                  u sZt        j                  t        |      t         j                        s-t        j                  t        |      t         j
                        r]t        j                  ||      }|t         j                  u s|t         j                  nt        j                  |      }t        ||       y t        j                  t        d      5  t        j                  ||       d d d        y # 1 sw Y   y xY w)Nr  rg  r  )rU   r   ro  ri  rp  rq  r    r  r   r]  r   r/  r7   r^   r  r  r   s        r8   "test_factorial_scalar_corner_casesz9TestFactorialFunctions.test_factorial_scalar_corner_cases}  s     Ibffd1grzz(J==a"++6&&q6FK19"&&':K:KA:NC%z1HI 2!!!512 2 2s   'DDrY  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 )NrL  g+=r  Tr  FrI   )rN  rO  r   rm   r    r  r  rP  s      r8   test_factorial2_accuracyz/TestFactorialFunctions.test_factorial2_accuracy  s~    
 /uUg00$?@**1E:	G**A3d;BB5I**A3e<4	Ir;   c           
         t        j                  t        j                  t	        t        |dd            d      }t        |t        j                  |d             t        |t        j                  |gd      d          t        t        |      t        j                  |d             t        t        |      t        j                  |gd      d          y )Nr   r+  rP   TF)	functoolsreduceoperatormulr  rl   r   r    r  r   rm   )r7   r^   r  s      r8   test_factorial2_int_referencez4TestFactorialFunctions.test_factorial2_int_reference  s     ""8<<eAq"o1FJ7G$6$6q$$?@7G$6$6sD$A!$DEg(:(:1e(DEg(:(:A3(Fq(IJr;   )rY  rZ  r[  r\  c                 *   |t         j                  k(  r't        d |D              rt        j                  d       |dkD  st        |      dk7  r|n|d   }t        j                  |||      }t        j                  |j                  t         j                        s|s1t        j                  ||      }|s|st        nt        } |||       y t        j                  t        d      5  t        j                  |d	       d d d        y # 1 sw Y   y xY w)
Nc              3   F   K   | ]  }t        j                  |        y wr  r_  r`  s     r8   rb  zLTestFactorialFunctions.test_factorial2_array_corner_cases.<locals>.<genexpr>  rc  rd  re  r   rP   rf  r  factorial2 does not*r  r   )rU   r  rl  r]  rm  rn  r   ro  r9  rp  r    r  r   r   r   r/  )r7   r'  rB  r  r9  r^   r  r  s           r8   "test_factorial2_array_corner_casesz9TestFactorialFunctions.test_factorial2_array_corner_cases  s     BHH$B'$B!BKK01!AgW):'HHWCu5=="**-g''7F $)<DOz1GH )""1a() ) )s   )D		Dc                    |?|t         j                  u s-t        j                  t        |      t         j                        r]t        j                  ||      }|t         j                  u s|t         j                  nt        j                  |      }t        ||       y t        j                  t        d      5  t        j                  ||       d d d        y # 1 sw Y   y xY w)Nr  r  r  )rU   r   ro  ri  rp  r    r  r  r   r]  r   r/  rz  s        r8   #test_factorial2_scalar_corner_casesz:TestFactorialFunctions.test_factorial2_scalar_corner_cases  s     9RVVr}}T!Wbjj'I''7FK19"&&':K:KA:NC%z1GH 3""1E23 3 3s   :CC$r_   re   rG  c           
         t        j                  t        j                  t	        t        |d|             d      }t        |t        j                  ||d             t        |t        j                  |g|d      d          y )Nr   rP   T)	r  r  r  r  r  rl   r   r    r  )r7   r^   r_   r  s       r8   test_factorialk_int_referencez4TestFactorialFunctions.test_factorialk_int_reference  sd     ""8<<eAq1"o1FJ7G$6$6q!T$BC7G$6$6sAt$DQ$GHr;   c                 
   |t         j                  k(  r't        d |D              rt        j                  d       |dkD  st        |      dk7  r|n|d   }t        j                  |||      }t        j                  |j                  t         j                        s|s!t        t        j                  |d      |       y t        j                  t        d      5  t        j                  |d       d d d        y # 1 sw Y   y xY w)	Nc              3   F   K   | ]  }t        j                  |        y wr  r_  r`  s     r8   rb  zLTestFactorialFunctions.test_factorialk_array_corner_cases.<locals>.<genexpr>  rc  rd  re  r   rP   rf  r   factorialk does not*r  )rU   r  rl  r]  rm  rn  r   ro  r9  rp  r   r    r  r   r/  )r7   r'  rB  r9  r^   s        r8   "test_factorialk_array_corner_casesz9TestFactorialFunctions.test_factorialk_array_corner_cases  s     BHH$B'$B!BKK01!AgW):'HHWCu5=="**-g++Aq115z1GH )""1a() ) )s   C99Dc                 r   |s;t        j                  t              5  t        j                  |||       d d d        y |?|t
        j                  u s-t        j                  t        |      t
        j                        ret        j                  ||      }|t
        j                  u xs |d u }|rt
        j                  nt        j                  ||      }t        ||       y t        j                  t        d      5  t        j                  |||       d d d        y # 1 sw Y   y xY w# 1 sw Y   y xY w)N)r_   r  r  r7  r  r  )r]  r   NotImplementedErrorr    r  rU   r   ro  ri  rp  r  r   r/  )r7   r^   r_   r  r  nan_condr^  s          r8   #test_factorialk_scalar_corner_casesz:TestFactorialFunctions.test_factorialk_scalar_corner_cases  s    
 23 8""178 8Y!rvv+tAw

)K''7FBFF{/a4iH!)rvvw/A/A!q/IH*z1GH 8""178 88 88 8s   D!?D-!D*-D6rx  c                     t        j                  t        d      5  t        j                  d|       d d d        y # 1 sw Y   y xY w)Nzk must be a positive integer*r  rP   )r]  r   r/  r    r  r  s     r8   test_factorialk_raises_kz/TestFactorialFunctions.test_factorialk_raises_k	  s6    ]]:-LM 	%q!$	% 	% 	%s	   <ArB  c                    |t        j                         v rt        j                  t        |   g      }t        t        j                  ||      j                  t        j                         t        t        j                  |dz   |      j                  t        j                         t        j                  |dz   |      t        j                  t        j                        j                  kD  sJ t        j                  t         |   g      }t        t        j                  ||      j                  t        j                         t        t        j                  |dz   |      j                  t               t        j                  |dz   |      t        j                  t        j                        j                  kD  sJ y t        t        j                  t        j                  dg      |      j                  t               y rj   )r+   keysrU   r   r,   r   r    r  r9  rs  r  r  int32r  r:  )r7   r_   r^   s      r8   test_factorialk_dtypez,TestFactorialFunctions.test_factorialk_dtype	  sW   )..003A678A++Aq177A++AE15;;RXXF%%a!eQ/"((2882D2H2HHHH3A678A++Aq177B++AE15;;VD%%a!eQ/"((2882D2H2HHHH ++BHHaSM1=CCVLr;   c                    t        j                  t         j                  dddt         j                  g      }t        j                  t         j                  dddt         j                  g      }t        t	        j
                  |d      |       t        j                  t        d      5  t        t	        j
                  |d	      |       d d d        y # 1 sw Y   y xY w)
NrP   rB   r   rF   Fr  r.  r  T)	rU   r   r   r   r    r  r]  r  r  )r7   r#  r^  s      r8   test_factorial_mixed_nan_inputsz6TestFactorialFunctions.test_factorial_mixed_nan_inputs	  s    HHbffaArvv./88RVVQ1bff56W&&q6A\\,4JK 	E**1D98D	E 	E 	Es   )"CC)%rZ  r[  r\  r]  r^  r  r  r"  r&  rU   r   
datetime64r0  rl   rA  rF  rJ  rQ  r  rT  rW  r  r   
complex128r:  rw  r{  r}  r  r  r  r  r  r  r  r  r  r`  r;   r8   r  r    s   [[WtUm4A 5A
 [[S,/[[WtUm4> 5 0>
 [[WtUm4" 5" [[WtUm4[[Y}r}}U7K(L!7  999 59. [[XuQ{3[[WtUm4E 5 4E< [[WtUm4[[UE!QK05 1 55 [[WtUm4[[WeAqk2; 3 5;$ [[S%C"45	H 6	H [[S!%2,/$uRb7I2JJL
#L
# [[WtUm49 59& [[Wrxx')}}f'> ?[[WtUm4[[UE!QK0[[Y 1#urvvhD!L  N*2N 1 5?*2X [[WtUm4[[S1c62664"@!D  F	2F 5	2 [[S%C"45	I 6	I [[S!%2,/$uRb7I2JJL
KL
K [[Wrxx')}}f'> ?[[WtUm4[[UE!QK0[[YaS266(RVVQK(H!C  E)E 1 5?)" [[WtUm4[[S1c62664"@!D  F3F 53 [[S$uQ{"3r2h">?[[S!%2,/$uRb7I2JJLIL @I [[Wrxx')}}f'> ?[[UE!QK0[[YaS266(RVVQK(H!C  E)E 1?) [[WtUm4[[S%1+.[[S1c62664"@!D  F8F / 58 [[S1c2663"78% 9% [[S%2,/M 0M Er;   r  c                       e Zd Zej                  j                  ddddddddd	d
ej                  ddfej                   ddfg      d        Zd Z	d Z
d Zy)TestFresnelzz, s, c)r{   gN?ց[?)y      ?        r  r  )y       ?yn<ӿj<Cy)BR;߿ux7Q?)y      yھ|}-2?y/?!ۿ)r-  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 )NrA  )r   r    ru  r   )r7   r]  r  r1  frss        r8   test_fresnel_valueszTestFresnel.test_fresnel_values 	  s,    @ GOOA&'!#uaV}a8r;   c                 (   t        j                  d      \  }}t        |t        g d      d       t        |t        g d      d       t        j                  |      d   }t        j                  |      d   }t        |dd       t        |dd       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   rP   r=  )r    fresnel_zerosr   r   ru  )r7   szoczovals1vals2s        r8   test_fresnel_zeroszTestFresnel.test_fresnel_zerosE	  s    ((+S!#"' ): #; <=	> 	"#"' ): #; <=	> $Q'$Q'!%"-!%"-r;   c                 x    t        j                  d      \  }}t        j                  d      }t        ||d       y )NrF   rB  )r    r  fresnelc_zerosr   )r7   r  r  frcs       r8   test_fresnelc_zeroszTestFresnel.test_fresnelc_zerosX	  2    ((+S$$Q'!#c"-r;   c                 x    t        j                  d      \  }}t        j                  d      }t        ||d       y )Nr   rB  )r    r  fresnels_zerosr   )r7   r  r  r  s       r8   test_fresnels_zeroszTestFresnel.test_fresnels_zeros]	  r  r;   N)rZ  r[  r\  r]  r^  r  rU   r   r  r  r  r  r`  r;   r8   r  r  	  sx    [[Y7=	

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

TestHankelc                 p    t        t        j                  dd      t        j                  dd       d       y Nr   rB   r   r=  )r   r    r  r6   s    r8   
test_negv1zTestHankel.test_negv1	  '    GOOBq1GOOAa4H3H"Mr;   c                     t        j                  dd      }t        j                  dd      t        j                  dd      dz  z   }t	        ||d       y NrP   rW  rZ  rA  )r    r  r  rN  r   )r7   hank1hankrls      r8   r  zTestHankel.test_hankel1	  sC    "%**Qr"WZZ"%5b%88E&+r;   c                 p    t        t        j                  dd      t        j                  dd       d       y r  )r   r    r  r6   s    r8   test_negv1ezTestHankel.test_negv1e	  +    G,,R2W5E5Ea5J4JBOr;   c                     t        j                  dd      }t        j                  dd      t        d      z  }t	        ||d       y )NrP   rW  y       rA  )r    r  r  r   r   )r7   hank1ehankrles      r8   r  zTestHankel.test_hankel1e	  s9    !!!B'//!B'D	1F71-r;   c                 p    t        t        j                  dd      t        j                  dd       d       y r  )r   r    r  r6   s    r8   
test_negv2zTestHankel.test_negv2	  r  r;   c                     t        j                  dd      }t        j                  dd      t        j                  dd      dz  z
  }t	        ||d       y r  )r    r  r  rN  r   )r7   hank2hankrl2s      r8   r  zTestHankel.test_hankel2	  sC    "%::a#gjj2&6r&99E'!,r;   c                 p    t        t        j                  dd      t        j                  dd       d       y r  )r   r    r  r6   s    r8   
test_neg2ezTestHankel.test_neg2e	  r  r;   c                 v    t        j                  dd      }t        j                  dd      }t        ||d       y )NrP   rW  rA  )r    r  r   )r7   hank2ehankrl2es      r8   test_hankl2ezTestHankel.test_hankl2e	  s2    !!!B'##Ab)F8A.r;   N)rZ  r[  r\  r  r  r  r  r  r  r  r  r`  r;   r8   r  r  	  s.    N,
P.
N-
P/r;   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 r  )r    h1vpjvpyvpr   )r7   h1h1reals      r8   	test_h1vpzTestHyper.test_h1vp	  C    \\!B++a#gkk!B&7&::Bva(r;   c                     t        j                  dd      }t        j                  dd      t        j                  dd      dz  z
  }t	        ||d       y r  )r    h2vpr  r  r   )r7   h2h2reals      r8   	test_h2vpzTestHyper.test_h2vp	  r  r;   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?rv   rI   r   r|   r  r   )g      rE   r   rP   rh  )g̷?g3|t-Ք?r|   go?g{h?rQ  r{   rh  r  )r   rP   r{   )r|   gc?r  rB   r   rP   )
r   r    hyp0f1rU   r   r  rR  	row_stackassert_raisesr/  )r7   r#  r^  x1x2s        r8   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NN2<<q1262<<
Q7eDj'..llB4!8,q!f	6r;   c                 H    t        j                  dd      }t        |d       y )N皙?      ?      ?y;EG?uM?)r    r  r   )r7   r;  s     r8   test_hyp0f1_gh5764zTestHyper.test_hyp0f1_gh5764	  s     nnS,/C!LMr;   c                    t        j                  ddd      }t        |dd       t        g g dg dg dg dg d	g d
g dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg d g d!g d"g d#g d$g d%g d&g d'g d(g d)g d*g d+g d,g d-g d.g d/g d0g d1g d2g d3g d4g d5g d6g d7g d8g d9g d:g d;g d<g d=g d>g d?g d@g dAg dBg dCg dDg dEg dFg dGg dHg dIg dJg dKg dLg dMg dNg dOg dPg dQg dRg dSg dTg dUg dVg dWg dXg dYg dZg d[g d\g d]g d^g d_g d`g dag dbg dcg ddg deg dfg dgg dh      }|D ];  \  }}}}t        j                  |||      }t	        t        ||z
        |z  dik         = y )jNrW  rX  g?rD   )g{*= g˱a)g5=gvX@)g)AI@gDAhg$Pj)g~٭@)g,qUp,g@=&?gX 3@gZ@)g\@g88*@g\ֳ!=@g   ƞA)gAZ;gOFA'gxŝO<g_Dc D)g^g@g V*E7g4)3@g7-XtD)gΧU(@g2Tj8g$@g  LhB)ge;@gJgogr@g `屫B)g5'.@gqZ=g7߈Y.g8w)gB,@g"^#@grT[	R3@g  B)gYgN],*@g*!j,g1@)g#r @gq{874*gWs%o.@gMdD)g8|.2@g*!,g?I(#@gJ
r .)gu8g#=)@g*'1g)ψvA)g%0N:@gUx1@gx@gr),c@)g:M8@gGb+=@g3ҜV/@gX9ҙim@)g"dxz@gqKgv7##@g  >B)g kx-gD8L+8@g܈2g72LU@)gtd@Q4h6@g%@}gr3b @gu߯ѡ)g򋷺?g"p$`E2@gY|T3g\D?)gV-(+@g$[3@g;/@gEQwв@)g[fgLL4gQV@g0#.@)g;@g/?jvgx.<N&@g^I)g+9gX[?gbZSH%@g5/)@)g}RgŢ	@g},*@g6@g1w-@)gRA(g_@g5A} :=g   FA)gQz5@gq.#gTq&gc ?)gφ%#gZV@
g%@0@g   Syd)gB۽ܟ%@g*>8gV@'g	ʦ)g/H:gn@S g)bǙ9@g  9)gT쁹3!gD gkLFr%@g3333`4A)g:k
g\=)'gi,k9gbx?)giXwg-CwU5@g'jin9gX5@)gb@gTy4#/@g]pH=gIw?)g63@g2XxM:@g~?^0gW1?)g37g R{@gicx.4?gmm?)gv܏%7@g9Ma%=g}ygGr##@)gG8-xы.@gǂ@ghb(@g  A)gw1@gq2@gO],@g0ɷ-X@)g2@g́y#<@gͣx?g]?)g];˄f$@g1}0g_9g8ڃ@)g:!ω1g)q(@gg2gv%)A)gYN:+gn	Ȱ-?g>gZd|I.A)gr/K@g\}L9@g*gΙ?)gQq5V@g?)@g'@0@glۭ`@)gVn:gRQ0gT&g QC)gR4 8gi+gK @g{G)gtiq+g(O?3g	1=@g  8cB)g|>oϘg\!<@g"?4V?g%c\q?)g gpfP!gAO:@g,\)g=R8@g%;gz3@g~0G)g.CVl@ge< .@g9@gkq1A)g=~$gpR7@g 77g,ǆ@)g^g{)gRA2@g  dL)gf=4,R@gyO-g#ޕ~8@g)g|ݩ%P4g:<9@gKzs4g$(~O4@)g2y3@g1$6g&TpxA6gG!JA)gf^XH
^;@g7r:@g`,/@gi{dA)gihx@g!B8(@g7j*@gh@)glmF<gpO4@g`2"@g-)gnV3!2@g.mq1g!Z{.@grOE)gs`m@gzAUguC=V#@g  \)gPL-(@g,9$"9g6u7@geRF)gw8gv=5@gjRW+g(\-@)gyg~=@g4MVgwz:@)g^0g+7%g-@j81g5ׂ,j)gj4gz0g-</;gݽ]
D)gN43@g}W6@gLUS!9gɍF>)g Q4@g=}gȮ5@g]nhgF)gV9g9gf9,#gF|}fv?)g=^ee;@gy}2g'T> g#o@)g+5g;gN8Cg8@g   bkA)gSx+26@g@gI0gSMC)gT*0@g`<6gWy5@gǟRj)gӰk
g/:?gJLHR"@gxu-)gKu@g6gt8_x7@gd;=')g+:;@gBͤ10@g";gK$?)gp @g dg	=@g=6` F)gTbR.g9:g3@gUfgRbKZ@)g!g%P73;g]?gr	y?)g)Yv2gȹq@g/3g   A)g?j/|g7:@g#~oݽ?g8pE?)gPj/gS"X)gYgt0N?)ggo&	xT7@g-hT@#@g.;%r?)g'_@gɖ@7g:Kڞ$@g [B)gk5ں9gѼ:gk%tp;@g  .<^)gf:OI&gO/g#01|2gf`Y)gqv~@guFd9@gz+S7gF1/$?)gx3g~[6:g;s9@gKw*1@)gP@gv;K,gҬd&<@g!s)gֈ`|.gOwx=@g+MK<gUU@)gکI@g©jG1g4g؃66@g(4ν4E)gS>?gD-lgSL,c<gԉE4?)gd?A g3$)glx^?gs>|T?)g(%@g:ĉ$@g~^gv2gJHF&?)g}r":@g3\z;@go)@g+hA)g@')"gVv/@guQU-gfy2yt@)gM6y%$g/;R#@g):@gw%",6Կ)g%x'g$6g5gu$9?)glkC9g<tF8gp?g ?rl  )r    r  r   r   r   rf  )r7   hyp1ref_datarg  rh  r1  r^  r  s           r8   r  zTestHyper.test_hyp1f1	  s   ~~bB'D"4Q7  c^] c^\c^[c^ [c^ ^	c^
 \c^ \c^ \c^ ^c^ [c^ ]c^ \c^ ]c^ ]c^ [c^ [c^  \!c^" ]#c^$ ]%c^& \'c^( [)c^* ]+c^, ]-c^. \/c^0 [1c^2 ]3c^4 ]5c^6 ^7c^8 ^9c^: ^;c^< ]=c^> ^?c^@ ]Ac^B \Cc^D \Ec^F \Gc^H ]Ic^J [Kc^L [Mc^N [Oc^P ]Qc^R ]Sc^T ]Uc^V \Wc^X [Yc^Z _[c^\ ^]c^^ ]_c^` \ac^b ^cc^d \ec^f [gc^h ]ic^j ^kc^l ]mc^n ]oc^p ]qc^r [sc^t [uc^v ]wc^x \yc^z ]{c^| \}c^~ ]c^@ ]Ac^B _Cc^D ^Ec^F \Gc^H \Ic^J ^Kc^L ]Mc^N ]Oc^P ]Qc^R ]Sc^T ]Uc^V ]Wc^X \Yc^Z \[c^\ ]]c^^ ]_c^` ]ac^b \cc^d ^ec^f \gc^h \ic^j ^kc^l _mc^n \oc^p ]qc^r ]sc^t ]uc^v \wc^x ]yc^z ]{c^| \}c^~ [c^@ ]Ac^B ]Cc^D ^Ec^F ]Gc^ c_J ' 	<NAa(^^Aa*FC6)*83d:;	<r;   c                 z    t        j                  ddd      }t        j                  ddd      }t        ||d       y )Nr{   rh  g7B.g|:B.rB  r    r  r   )r7   r  hyp2s      r8   test_hyp1f1_gh2957zTestHyper.test_hyp1f1_gh2957V
  s2    ~~c38~~c38D$+r;   c                 L    t        j                  ddd      }t        |dd       y )Nr{   rh  ig<`?rB  r	  )r7   hyps     r8   test_hyp1f1_gh2282zTestHyper.test_hyp1f1_gh2282[
  s!    nnS#u-C!5r:r;   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{   rP   rh  |Gz?r  g?g|Gzr   r  rB   r  r  )r   r  rh  r  gYi2?r   r   g433333?r@   rA  r   rE   g      ?r   g      ?r   r  g      gUUUUUUտg  @gUUUUUU?g)rh  r  r|         $gEciH!@)r+  r   rP   r  gzG?)rB   r   rP   r  gy&1|)r  r   rP   r  g"nN%@?)rB   r$  rP   r  g!J)rc  |      %@rd  gzS;)rc  r  g      %rd  g[B.VP<test #%derr_msg)r   r   r	   r
   r    r   r   r   r  r  r   )	r7   r   rp   rg  rh  r1  r#  rm  cvs	            r8   r  zTestHyper.test_hyp2f1_
  s   3O0D(DE3s);<aCE
!23Bq#s3x{CL9aAw}}Q/e0DDW]]SVEWWX_XeXefiXjjkaGDH$4mmE*%++2==+C%DDKMMR[D\%] ^aGDH$4mmE*%++2==+C%DDKMMR[D\%] ^eWe^GMM$<O-OmmG,.--4]]4-@.AAHxAX.Y Z A%&,,MN/2 #,F"3 	BA1aA1a+BAq*q.A	Br;   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 )NrP   rW  rG  g D?rD   )rX  r)  333333?g)rh  g	@rT  g	r{   rB   rB  )	r    hyperur   r   r   r	   r  r   r   )r7   val1rg  rh  r]  hypuhprls          r8   test_hyperuzTestHyper.test_hyperu~
  s   ~~aC(D1- !4!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/r;   c                 H    t        t        j                  ddd      dd       y )NrP   rh  g3333334@g(¨?rB  )r   r    r  r6   s    r8   test_hyperu_gh2287zTestHyper.test_hyperu_gh2287
  s    GNN1c480"	6r;   N)rZ  r[  r\  r  r  r   r  r  r  r  r  r  r   r`  r;   r8   r  r  	  s8    )
)
64Np<d,
;B>06r;   r  c                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0d/ Z1d0 Z2dQd2Z3e4jj                  jm                   e7jp                         d3k(  d45      d6        Z9e4jj                  jm                   e7jp                         d3k(  d45      d7        Z:d8 Z;d9 Z<e4jj                  jz                  d:        Z>d; Z?d< Z@d= ZAd> ZBd? ZCd@ ZDdA ZEdRdBZFdC ZGdD ZHdE ZIdF ZJdG ZKdH ZLdI ZMdJ ZNdK ZOdL ZPdM ZQdN ZRdO ZSdP ZTy1)S
TestBesselc                 p    t        t        j                  d            }t        |t        ddg      d       y )Nr  gbɃ?gΝJ ֿrA  )r   r    r  r   )r7   it0s     r8   r  zTestBessel.test_itj0y0
  s.    GNN2&'!#e-@BV,W&XYZ[r;   c                 p    t        t        j                  d            }t        |t        ddg      d       y )Nr  gbqTtt?g/]ooۿrA  )r   r    r  r   )r7   it2s     r8   r  zTestBessel.test_it2j0y0
  s.    GOOB'(!#e-BDX,Y&Z[\]r;   c                 l    t        t        j                  dd      t        j                  dd             y Nr   rB   r   )r   r    r  r6   s    r8   test_negv_ivzTestBessel.test_negv_iv
  s!    WZZ!_gjjA&67r;   c                 t    t        j                  d      }t        j                  dd      }t        ||d       y NrW  r   rA  )r    r  r  r   r7   ozozrs      r8   r  zTestBessel.test_j0
  +    ZZ^jj2Bs1%r;   c                 t    t        j                  d      }t        j                  dd      }t        ||d       y NrW  rP   rA  )r    r  r  r   r7   o1o1rs      r8   r  zTestBessel.test_j1
  r/  r;   c                 J    t        j                  dd      }t        |dd       y )NrP   r  ;x?rA  )r    r  r   )r7   jnnrs     r8   r  zTestBessel.test_jn
  s    zz!BD!5a8r;   c                 p    t        t        j                  dd      t        j                  dd       d       y r  )r   r    r  r6   s    r8   test_negv_jvzTestBessel.test_negv_jv
  &    GJJr!,wzz!A.>Cr;   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   rW  g
Ye?)UUUUUU?:0yE>g˿+>)r<  rR   g)%->)g@rR   g5c)!9)r<  rJ  g%,ͿrA  r  r  )r  r    r  r   )r7   r   rp   rm  r#  r\  ycs          r8   r  zTestBessel.test_jv
  s\    /5662	 &f- 	BLAy1aAq!BAq*q.A	Br;   c                 p    t        t        j                  dd      t        j                  dd       d       y r  )r   r    r  r6   s    r8   test_negv_jvezTestBessel.test_negv_jve
  '    GKK1-Aa0@/@"Er;   c                     t        j                  dd      }t        |dd       t        j                  dd      }d}t        j                  d|      t	        t        |j                               z  }t        ||d       y )NrP   r  r6  rA  ?      ?)r    r  r   r  r   rf  r[  )r7   jvexpjvexp1r]  jvexprs        r8   r  zTestBessel.test_jve
  sc    Ab!E"6q9Qu%Aac!&&k\!22F6!,r;   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   rP   )go@.=@gzj,[@glN!@g5/ D'@gh>-@r@   gW@g0@gQX$@g*@g8*5{x0@rO   )gEk[@g~Cju]@gYrʝ^@g, `@gf	`@rH   rI   -  )gts@g&ǭr3t@gWt@g,$Y&u@gu@)r    jn_zerosr   r   r   )r7   jn0jn1jn102jn301s        r8   test_jn_zeroszTestBessel.test_jn_zeros
  s    q#q#!#e -= '> ?@		A
 	"#e -8 '9 :;		<   Q'u &>  ? FK		L   Q'u &>  ? FK		Lr;   c                    t        j                  dd      }t        |d   dd       t        |d   dd       t        |d	   d
d       t        j                  dd      }t        |d   dd       t        |d   dd       t        |d	   dd       t        j                  dd      }t        |t        g d      d       y )Nr   rd   i  g;@rH   rI   i  g8v@i+  gׂMm@rc  gxi@g	,@gи{>@i  r   )gUDX@g!@g*HS@gz5 @g@2;@r=  )r    rJ  r   r   )r7   rK  jn10jn3010s       r8   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r;   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 )NrP   rB   r`  )r^   r#  r  s     r8   jnpz(TestBessel.test_jnjnp_zeros.<locals>.jnp
  s'    qs1I1Q3q	)1,,r;   rP   rL   r   rb  r  zInvalid t return for nt=%d)r    r  rl   jnjnp_zeroszipr   AssertionError)r7   rV  ntr]  r^   rD  tzznnttr  s             @r8   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r;   c                     t        j                  dd      }t        |t        g d      d       t        j                  dd      }t	        t        j
                  d|      dd       y )	NrP   r   g(yu?gOXeS@ga!@gxi'@g'Nw(-@r@     r   r  r  )r    	jnp_zerosr   r   r   r  )r7   rV  s     r8   test_jnp_zeroszTestBessel.test_jnp_zeros   sZ    !$!#u .: (; <=		>
 A&C-qu=r;   c           
          t        j                  dd      }t        |t        g d      t        g d      t        g d      t        g d      fd       y )NrP   r   rH  ra  )"@g+@g-9(1!@gȘ'@g>tA}-@)g0v@gjt@gH.?$@g}"O*@gGŧp0@)r    
jnyn_zerosr   r   )r7   jnzs     r8   test_jnyn_zeroszTestBessel.test_jnyn_zeros
  sa      1%!#u .: (;
 (- .: (;
 (- .: (;
 (- .: (;'<& =>'	?r;   c                     t        j                  dd      }t        j                  dd      t        j                  dd      z
  dz  }t        ||d       y )NrB   rP   r   rc  )r    r  r  r   )r7   jvprimjv0s      r8   test_jvpzTestBessel.test_jvp!  sA    Qq!zz!Awzz!A.1F3r*r;   c                 t    t        j                  d      }t        j                  dd      }t        ||d       y r+  )r    r  r$  r   )r7   ozkozkrs      r8   r  zTestBessel.test_k0&  +    jjnzz!BCQ'r;   c                 t    t        j                  d      }t        j                  dd      }t        ||d       y r+  )r    r  r'  r   )r7   ozkeozkers      r8   r  zTestBessel.test_k0e+  +    {{2Ab!Dq)r;   c                 t    t        j                  d      }t        j                  dd      }t        ||d       y r1  )r    r  r$  r   )r7   o1ko1krs      r8   r  zTestBessel.test_k10  rq  r;   c                 t    t        j                  d      }t        j                  dd      }t        ||d       y r1  )r    r  r'  r   )r7   o1keo1kers      r8   r  zTestBessel.test_k1e5  ru  r;   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   rP   r   rB   r   rd  r   r@   r   rF   rB  rA  g      H@)rU   r[   r    jacobir   r1  r   )
r7   rg  rh  P0P1P2P3cpp2cp3cs
             r8   test_jacobizTestBessel.test_jacobi:  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:r;   c                 J    t        j                  dd      }t        |dd       y )Nr   r  _2?rA  )r    r  r   )r7   kn1s     r8   r  zTestBessel.test_knL  s    jj2C 215r;   c                 l    t        t        j                  dd      t        j                  dd             y Nr   r  r  r   r    r$  r6   s    r8   test_negv_kvzTestBessel.test_negv_kvP  s"    WZZS)7::dC+@Ar;   c                 J    t        j                  dd      }t        |dd       y )Nr   r  r  rc  r    r$  r   )r7   kv0s     r8   test_kv0zTestBessel.test_kv0S  s    jj2C!3R8r;   c                 J    t        j                  dd      }t        |dd       y )NrP   r  gKދ@rc  r  )r7   kv1s     r8   test_kv1zTestBessel.test_kv1W      jj3C!2B7r;   c                 J    t        j                  dd      }t        |dd       y )NrB   r  g)lHH@rc  r  )r7   kv2s     r8   test_kv2zTestBessel.test_kv2[  r  r;   c                 D    t        t        j                  dd      d       y )N    rP   g.Ք"H)r   r    r  r6   s    r8   test_kn_largeorderzTestBessel.test_kn_largeorder_  s    

2q)+ABr;   c                 D    t        t        j                  dd      d       y )Nr   g =`XCr  r6   s    r8   test_kv_largeargzTestBessel.test_kv_largeargb  s    WZZ4(!,r;   c                 l    t        t        j                  dd      t        j                  dd             y r  )r   r    r'  r6   s    r8   test_negv_kvezTestBessel.test_negv_kvee  s"    W[[c*GKKc,BCr;   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  rA  rC  )r    r'  r$  r   r   )r7   kve1r  r]  kve2r  s         r8   r(  zTestBessel.test_kveh  sp    {{1R jj2s2w&DQ'{{1Qjj1oc!f$DQ'r;   c                 x    d}t        t        j                  d|       t        j                  d|d      d       y )Nr  rP   r   r^   rc  )r   r    r$  kvp)r7   r]  s     r8   test_kvp_v0n1zTestBessel.test_kvp_v0n1q  s-    WZZ!_,gkk!A.CRHr;   c                     d}d}t        j                  |dz   |       ||z  t        j                  ||      z  z   }t        j                  ||d      }t        ||d       y )Nr   r  rP   r  rc  r    r$  r  r   r7   rm  r]  xcr#  s        r8   test_kvp_n1zTestBessel.test_kvp_n1u  sY    jj1Q!A#gjj1o"55KK!q!B2&r;   c                     d}d}|dz  |dz  z   |z
  |dz  z  t        j                  ||      z  t        j                  |dz   |      |z  z   }t        j                  ||d      }t        ||d       y )Nr   r  rB   rP   r  rc  r  r  s        r8   test_kvp_n2zTestBessel.test_kvp_n2|  sp    d1a4ik1a4'**Qq/1GJJqs14Ea4GGKK1"B2&r;   c                 t    t        j                  d      }t        j                  dd      }t        ||d       y r+  )r    rF  rK  r   r,  s      r8   rG  zTestBessel.test_y0  r/  r;   c                 t    t        j                  d      }t        j                  dd      }t        ||d       y r1  )r    r\  rK  r   r2  s      r8   rI  zTestBessel.test_y1  r/  r;   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 )NrB   rP   rR  r   rY  )r    y0_zerosr   r   rf  rN  )r7   yoypozozpor  allvals          r8   test_y0_zeroszTestBessel.test_y0_zeros  s    !!!$3!!!A.3BiCG!#gjjS&9":3rB!#gjj3&7&>"?BGr;   c                 t    t        j                  d      }t        |t        dg      t        dg      fd       y )NrP   rf  gѮBO?r   )r    y1_zerosr   r   )r7   r\  s     r8   test_y1_zeroszTestBessel.test_y1_zeros  s1    a !"eWI&6ugY7G%HKr;   c                 x    t        j                  dd      }t        |t        dg      t        dg      fd       y )NrP   r  yL
F%u?!rh?y;OnгY?r   )r    	y1p_zerosr   r   )r7   y1ps     r8   test_y1p_zeroszTestBessel.test_y1p_zeros  s5    !,!#um_'=uoEV?W&XYZ[r;   c                     t        j                  dd      }t        |t        ddg      d       t        j                  dd      }t	        |g dd	       y )
Nr@   rB   g3@g(A&"@r   rb  )g]E.+"|@gH(|@gff|}@g&b`~@gHO_~@r  rI   )r    yn_zerosr   r   r   )r7   ans     r8   test_yn_zeroszTestBessel.test_yn_zeros  sO    a"!"UGW+=%>qAc!$ 5;@	Br;   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   rB   gQhվ@gzN@rF   +   r   r  r  rb  r  )r    	ynp_zerosr   r   r   r  r7   aos     r8   test_ynp_zeroszTestBessel.test_ynp_zeros  s|    q#!"UJ
+C%DQGr!$B+QU;s1%C,ad;r;   c                 t    t        j                  dd      }t        t        j                  d|      dd       y )Nrb  r   r   r   r  )r    r  r   r  r  s     r8   test_ynp_zeros_large_orderz%TestBessel.test_ynp_zeros_large_order  s+    s1%C,ae<r;   c                 J    t        j                  dd      }t        |dd       y NrP   r  5,1
rA  )r    rK  r   )r7   yn2ns     r8   rL  zTestBessel.test_yn  s    zz!BD!4Q7r;   c                 p    t        t        j                  dd      t        j                  dd       d       y r  )r   r    rN  r6   s    r8   test_negv_yvzTestBessel.test_negv_yv  r:  r;   c                 J    t        j                  dd      }t        |dd       y r  )r    rN  r   )r7   yv2s     r8   rO  zTestBessel.test_yv  s    jj2C 3A6r;   c                 p    t        t        j                  dd      t        j                  dd       d       y r  )r   r    rQ  r6   s    r8   test_negv_yvezTestBessel.test_negv_yve  rA  r;   c                     t        j                  dd      }t        |dd       t        j                  dd      t	        d      z  }t        j                  dd      }t        ||d       y )NrP   r  r  rA  rC  rE   )r    rQ  r   rN  r   )r7   yve2yve2ryve22s       r8   rR  zTestBessel.test_yve  sT    {{1R D!4Q7

1U#CG+Ae$E%*r;   c                     t        j                  dd      t        j                  dd      z
  dz  }t        j                  dd      }t        ||d       y )NrP   r  r   r   rB   rc  )r    rN  r  r   )r7   yvpryvp1s      r8   test_yvpzTestBessel.test_yvp  sC    

1R 7::a#33S8{{1R !$tB/r;   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  rI  )irh  rE   r|   r        i@g     y@g     Ă@g@  i'  Nr{   irk  r  )	itertoolsproductr   )r7   rm  r]  s      r8   _cephes_vs_amos_pointsz!TestBessel._cephes_vs_amos_points  s\      K$$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 )NrQ  u <7~r   )r  rJ   rT   )	r  rk   rU   r   r   rf  r   r[  r   )r7   ry  f2rJ   rT   rm  rm  r]  c1c2c3s              r8   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;	;r;   ppc64lezfails on ppc64lerT  c                 f    | j                  t        j                  t        j                  dd       y )NrR   u5% r   )r  r    r  r  r6   s    r8   test_jv_cephes_vs_amosz!TestBessel.test_jv_cephes_vs_amos  #     	!!'**gjju6!Rr;   c                 f    | j                  t        j                  t        j                  dd       y )Ndy=r  r   r  r    rN  rK  r6   s    r8   test_yv_cephes_vs_amosz!TestBessel.test_yv_cephes_vs_amos  r  r;   c                 n    d }| j                  t        j                  t        j                  dd|       y )Nc                     t        |       dkD  S )Nr  )rf  )rm  r]  s     r8   skipperzDTestBessel.test_yv_cephes_vs_amos_only_small_orders.<locals>.skipper  s    q6B;r;   r  r  )rJ   rT   rm  r  )r7   r  s     r8   (test_yv_cephes_vs_amos_only_small_ordersz3TestBessel.test_yv_cephes_vs_amos_only_small_orders  s)    	!!'**gjju6X_!`r;   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>r  r   )rU   r  r  r    r  r6   s    r8   test_iv_cephes_vs_amosz!TestBessel.test_iv_cephes_vs_amos  sF    [[X& 	V%%gjj'**4f%U	V 	V 	Vs   2AAc                 n   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              ||<   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 rP   r{   rE   rB   )r*  r  rA  r   r  r  rQ  r  gYngH׊>)rU   r[   r\   r  r  r  rk   r  r    r  r   rf  r   argmaxr   )	r7   r  rm  r#  imskr  r  dcr_   s	            r8    test_iv_cephes_vs_amos_mass_testz+TestBessel.test_iv_cephes_vs_amos_mass_test  s   
		q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 	1qtQqT7::adAaD+A7::aPQdTUVWTXY[T[C\]^#	! 	!s   B9H++H4c                     | j                  t        j                  t        j                  dd       | j                  t        j                  t        j                  dd       y )Nr  r  r   )r  r    r$  r  r6   s    r8   test_kv_cephes_vs_amosz!TestBessel.test_kv_cephes_vs_amos  s@    !!'**gjjt&!Q!!'**gjjt&!Qr;   c                     t        t        j                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d       y )	Nr   r@   gP?rI  r  g~Omʒ?gY8E@@gKSn)r   r    r  r6   s    r8   test_ticket_623zTestBessel.test_ticket_623  sD    

1a(*=>

3-/AB

3	24GHr;   c           	      <
   t        t        j                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d	       t        t        j
                  dd      d
       t        t        j
                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d       t        t        j
                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d	       t        t        j
                  dd      d
       t        t        j
                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d       t        t        j                  dd      d       t        t        j
                  dd      d       t        t        j
                  dd      d       t        t        j                  dd      t        j                  dd      t        d      z         t        t        j                  dd      t        j                  dd      t        d      z         t        t        j                  dd      t        j                  dd      t        d      z         t        t        j                  dd      t        j
                  dd      t        d      z         t        t        j                  dd      t        j                  dd      dt        j                  dd      z  z          t        t        j                  dd      t        j                  dd      dt        j                  dd      z  z
         y)zNegative-order BesselsrE   rP   gl)ܿr+  gPj?gk?g%E*2ig敋?gw--`?gÉB?gW?r  g޴?gz|?a?gpx%?y      ?              ?      ?yYD?`{1wy6x?B]#Ӯ?y ?b>?y.}9d?8kؿy      ?333333?g333333ӿy333333?      ?rZ  N)r   r    r  rN  r  r$  r  r   rQ  r  r'  r  r  r6   s    r8   test_ticket_853zTestBessel.test_ticket_853  s    	

2q)+>?

2q)+=>

2q)+=>

2q)+=>

2q)+=>

2q)+=>

2q)+=>

2q)+<=

4+-CD

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d3WZZd5KbQXQ[Q[\`aeQfNf5fgd3WZZd5KbQXQ[Q[\`aeQfNf5fgr;   c                    t        t        t        j                  dd                   t        t        t        j                  dd                   t        t        t        j
                  dd                   t        t        t        j
                  dd                   t        t        t        j                  dd                   t        t        t        j                  dd                   t        t        t        j                  dd                   t        t        t        j                  dd                   t        t        t        j                  dd                   t        t        t        j                  dd                   t        t        t        j                  dd                   t        t        t        j                  dd                   t        t        t        j                  d      dd       j                         t        j                  d             t        t        t        j                  d      dd       j                          t        j                  d             y)zReal-valued Bessel domainsr{   rE   rP   r   rB   r@   N)r   r   r    r  r  rN  r$  r  r  rQ  r'  r=   r  rl  r6   s    r8   test_ticket_854zTestBessel.test_ticket_854K  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Kr;   c                     t        t        j                  dd      t        j                  k(         t        t        j
                  dd      t        j                  k(         y )Nrh  r   )r   r    r$  rU   r   r'  r6   s    r8   test_gh_7909zTestBessel.test_gh_7909\  s:    

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

1c*,AB

4.0EFr;   c                 D    t        t        j                  dd      d       y )Nr  rP   r  r  r6   s    r8   test_iv_hyperg_poleszTestBessel.test_iv_hyperg_polese  s    

4+->?r;   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   rB   r{   rP   rE   rc  )r   r  r   r   r    r   r   r   r   rf  r  r   epssumr7   rm  r]  r^   r_   rv  r  s          r8   	iv_serieszTestBessel.iv_seriesh  s    1aL'qsUC1I! 44wqs1u7MM%(F!fjjlU6]...2S2Z]Buuw|r;   c                     dD ]9  }| j                  d|      \  }}t        t        j                  |      |||       ; y )Nr|   r   r  r   rT   r  )r  r   r    r  r7   r]  valuer  s       r8   test_i0_serieszTestBessel.test_i0_seriesp  =    ! 	GA1-JE3GJJqM5sAF	Gr;   c                     dD ]9  }| j                  d|      \  }}t        t        j                  |      |||       ; y )Nr  rP   r  )r  r   r    r  r  s       r8   test_i1_serieszTestBessel.test_i1_seriesu  r  r;   c           	          dD ]C  }dD ]<  }| j                  ||      \  }}t        t        j                  ||      ||||f       > E y )N)r  r  r  r   r|   r  r  )r|   r   r  y             @r  )r  r   r    r  r7   rm  r]  r  r  s        r8   test_iv_serieszTestBessel.test_iv_seriesz  sU    7 	SA, S!^^Aq1
s

1a 0%cAq6RS	Sr;   c           	          ddgddgddgddgddgd	d
gddgddgg}t        |      D ]<  \  }\  }}t        j                  |      t        |       z  }t	        ||dd|z         > y )Nr   r|   rR   rW  g0oO?r{   g!?grb?r  gpH?r   gC~?r   ggo?rA  r  r  )r  r    r  r   r   r7   r   rp   r#  rm  r  s         r8   r  zTestBessel.test_i0  s    *#,%%%%%& #6* 	BIAv1AaR(BAq*q.A	Br;   c                 t    t        j                  d      }t        j                  dd      }t        ||d       y r+  )r    r  r  r   )r7   oizeoizers      r8   r  zTestBessel.test_i0e  ru  r;   c                     ddgddgddgddgdd	gd
dgddgg}t        |      D ]<  \  }\  }}t        j                  |      t        |       z  }t	        ||dd|z         > y )Nr   rR   gj|=rW  gȕ![1?r{   g;͘?r|   gRΜ?r   g|?r   g}f?rA  r  r  )r  r    r  r   r   r$  s         r8   r  zTestBessel.test_i1  s    *01%%%%& #6* 	BIAv1AaR(BAq*q.A	Br;   c                 t    t        j                  d      }t        j                  dd      }t        ||d       y r1  )r    r  r  r   )r7   oi1eoi1ers      r8   r  zTestBessel.test_i1e  ru  r;   c                 p    t        t        j                  d            }t        |t        ddg      d       y )Nr   gїJB?@g*u?)r   r    r  r   )r7   iti0s     r8   r  zTestBessel.test_iti0k0  s.    W^^A&'!$u.@BT-U'VWXYr;   c                 ^    t        j                  d      }t        |t        ddg      d       y )NrW  gݳɄ|T?gVƥ
@rF   )r    r  r   r   )r7   it2ks     r8   r  zTestBessel.test_it2i0k0  s)    r"!$u.CEW-X'YZ[\r;   c                 b    t        j                  dd      t        d      z  }t        |dd       y )Nr   rW  皙gv M?rc  )r    r  r   r   )r7   iv1s     r8   r  zTestBessel.test_iv  s(    jj2s3x'C 3B7r;   c                 l    t        t        j                  dd      t        j                  dd             y r(  )r   r    r  r6   s    r8   test_negv_ivezTestBessel.test_negv_ive  s"    W[[1%w{{2a'89r;   c                     t        j                  dd      }t        j                  dd      t        d      z  }t	        ||d       y )Nr   rW  r1  rc  )r    r  r  r   r   )r7   ive1r2  s      r8   r  zTestBessel.test_ive  s7    {{1R jj2s3x'DR(r;   c                 n    t        t        j                  dd      t        j                  dd      d       y )NrP   rB   r   rc  )r   r    r  ivpr6   s    r8   	test_ivp0zTestBessel.test_ivp0  s#    GJJqOW[[1-=rBr;   c                     t        j                  dd      t        j                  dd      z   dz  }t        j                  dd      }t        ||d       y )Nr   rB   rP   rc  )r    r  r8  r   r  s      r8   test_ivpzTestBessel.test_ivp  sA    ZZ!_wzz!A.1KK!Aa#r;   )r  r   N)   )UrZ  r[  r\  r  r  r)  r  r  r  r9  r  r@  r  rO  rS  r_  rd  ri  rm  r  r  r  r  r  r  r  r  r  r  r  r  r  r(  r  r  r  rG  rI  r  r  r  r  r  r  rL  r  rO  r  rR  r  r  r  r]  r^  r_  rO  machiner  r  r  r  slowr   r  r  r  r
  r  r  r  r  r  r  r"  r  r  r  r  r  r  r  r4  r  r9  r;  r`  r;   r8   r"  r"  
  s3   \^8&
&
9D	BF-L8G$L>?.+
(
*
(
*
;$6B988C-D(I''&
&
HL\B<=8D7F+0

C; [['x'')Y60  2S2S [['x'')Y60  2S2Sa
V [[_ _8RI
*hXL"/G
@G
G
SB*
B*
Z]8:)
C$r;   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   rP   rB   r   r@   r   rd  rE   )rP   r  rB   r   )rE   r  irF   r-  )rP   iH   ir  ry  )rE   r  i8iX  ir  r  )r    laguerrer   r1  r   )r7   lag0lag1lag2lag3lag4lag5s          r8   test_laguerrezTestLaguerre.test_laguerre  s    """"""!$&&!R0!$&&"Q3!$&&x)<R@!$&&|)<S)@D!$&&/@)A$)FrJ!$&&/H)I%)OPRSr;   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   rP   rB   r   rE   r+  r|   r   r   r-  )rU   r[   r    r  r   r1  r   r   )r7   r_   rD  rE  rF  rG  s         r8   test_genlaguerrezTestLaguerre.test_genlaguerre  s   bii  3&""1Q'""1Q'""1Q'""1Q'TVVQC TVVR!H%DFF5!B!HadQrT])C#DS#HIDFF5"Q!WR1Xqs^QqS1Q3KQRSTQTDU)V#WX[#[\r;   N)rZ  r[  r\  rJ  rL  r`  r;   r8   r@  r@    s    T	]r;   r@  c                       e Zd Zd Zy)TestLegendrec                    t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }t        |j                  dg       t        |j                  ddg       t	        |j                  t        g d      dz  d	
       t	        |j                  t        g d      dz         t	        |j                  t        g d      dz         t	        |j                  t        g d      dz         y )Nr   rP   rB   r   r@   r   )r   r   rE   r   rd  r  )r   r   r   r   )r  r   rH  r   r   r   )?   r   ir   rr   r   )r    legendrer   r1  r   r   )r7   leg0leg1leg2leg3leg4leg5s          r8   test_legendrezTestLegendre.test_legendre  s    """"""TVVaS!TVVaU#DFFE(OC$7DDFFE*$5c$9:DFFE.$9#$=>DFFE*;$<S$@Ar;   N)rZ  r[  r\  rX  r`  r;   r8   rN  rN    s    Br;   rN  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 )NrP   rW  r   rB   r+  r   rA  )r    lmbdar   r  r  r  r   )r7   lamlamrs      r8   
test_lmbdazTestLambda.test_lmbda  s    mmAb!wzz!B'7::a+;);B)>?@w{{1R("WZZ"-=*=c*AAgkkRSTVFWDWXZDZ*Z[\^!#d1-r;   N)rZ  r[  r\  r_  r`  r;   r8   rZ  rZ    s    .r;   rZ  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 )Nrc  rY  rB  rd  rA  r    r,  r   r   )r7   l1pl1prls      r8   r-  zTestLog1p.test_log1p  sM    }}R '--"3W]]25FGR#b'3r7+!#eA.r;   c                     t        j                  d      t        j                  d      t        j                  d      f}t        d      t        d      t        d      f}t        ||d       y )NrP   rX  r  rB   r  r  rA  rc  )r7   l1pml1pmrls      r8   test_log1pmorezTestLog1p.test_log1pmore  sM    a '--"4gmmC6HIa&S#c(+!$va0r;   N)rZ  r[  r\  r-  ri  r`  r;   r8   ra  ra    s    /
1r;   ra  c                   Z    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zy)TestLegendreFunctionsc                    d}t        j                  dd|d      }t        |t        d|dd|z  |z  dz
  z  gdt	        ||z  dz
        d|z  t	        ||z  dz
        z  gddd||z  dz
  z  gg      t        ddd|z  gd|t	        ||z  dz
        z  dd|z  |z  dz
  z  t	        ||z  dz
        z  gddd|z  gg      fd	       y )
Ny      ?333333?rB   r   r|   r{   rP   r   rF   rD   )r    clpmnr   r   r   )r7   r]  clps      r8   
test_clpmnz TestLegendreFunctions.test_clpmn  s    mmAq!Q'!#FAsAaCE!G}5"D1QK1T!A#a%[A"FAqs1uI68 9 FFAaC0"Ad1Q3q5kM1ac!eAg;tAaCE{3JK"FAaC02 34 	r;   c                 F   d}d}d}d}t        j                  |||d|z  z   d      d   ||f   }t        j                  |||d|z  z
  d      d   ||f   }t        t        ||g      t        t        j                  |||      t        j                  |||      g      d       y )	NrR   rP   r   r{   rZ  rB   r   rD   )r    rm  r   r   r5  r7   r  rD  r^   r#  clp_plus	clp_minuss          r8   test_clpmn_close_to_real_2z0TestLegendreFunctions.test_clpmn_close_to_real_2  s    ==AqCx3A6q!t<MM!Q"S&!4Q71=	!%9(=">"'aA)>)0aA)>)@ #A"#	%r;   c                    d}d}d}d}t        j                  |||d|z  z   d      d   ||f   }t        j                  |||d|z  z
  d      d   ||f   }t        t        ||g      t        t        j                  |||      t        j                  d|z  t
        j                  z        z  t        j                  |||      t        j                  d|z  t
        j                  z        z  g      d	       y )
NrR   rP   r   r{   rZ  r   y             y              ?rD   )r    rm  r   r   r5  rU   r   r   rq  s          r8   test_clpmn_close_to_real_3z0TestLegendreFunctions.test_clpmn_close_to_real_3  s    ==AqCx3A6q!t<MM!Q"S&!4Q71=	!%9(=">"'aA)>rvveAgbeem?T)T)0aA)>rvvd1fRUUl?S)S)U #V"#	%r;   c                     d}d}d}d}dD ]W  }t        t        j                  |||d|z  z   |      d   ||f   t        j                  |||d|z  z
  |      d   ||f   d       Y y )NHz>rP   rZ  rB   r   r   rF   )r   r    rm  )r7   r  rD  r^   r#  ri  s         r8   test_clpmn_across_unit_circlez3TestLegendreFunctions.test_clpmn_across_unit_circle'  s     	MDaAbfHd CA Fq!t L#MM!Q"S&$?B1a4H!M	Mr;   c                    dD ]  }t        d      D ]  }t        d|      D ]  }t        j                  |||      }t        t	        j
                  |d   ddd f         j                                t        j                  |||      }t        t	        j
                  |d   ddd f         j                                   y )N)rP   rE   r@   rP   )rl   r    rm  r   rU   r   r  lpmn)r7   r]  r^   rD  lps        r8   test_infzTestLegendreFunctions.test_inf0  s     	9A1X 9q! 9A q!Q/BBHHRU1QR4[15578 aA.BBHHRU1QR4[15578	99	9r;   c                    g d}d}d}dD ]}  }|D ]v  }dD ]o  }t        j                  |||d|z  z   |      d   t        j                  |||d|z  z
  |      d   z
  |z  }t        t        j                  ||||      d   |d	
       q x  y )N)r  y            ?y            y      ?      r  r  r  r  rB   r   ry  )r   y        MbP?r{   r   rP   rl  rI   )r    rm  r   )r7   zvalsrD  r^   ri  r]  happrox_derivatives           r8   test_deriv_clpmnz&TestLegendreFunctions.test_deriv_clpmn9  s    + 	/D /& /A)0q!Qs1uWd)KA)N+2==AqQw+Ma+P*QRS)T%#GMM!Q4$@$C$5)-///	/r;   c                     t        j                  ddd      }t        |t        g dg      t        g dg      fd       y )Nr   rB   r{   r|   r{         r   r|   rh  r@   )r    r|  r   r   r7   r}  s     r8   	test_lpmnzTestLegendreFunctions.test_lpmnH  sV    \\!Ab!!"e .@ -A 'B ', .? -@ 'A&B
 CD	Er;   c                 z    t        j                  dd      }t        |t        g d      t        g d      fd       y )NrB   r{   r  r  r@   )r    lpnr   r   )r7   lpnfs     r8   test_lpnzTestLegendreFunctions.test_lpnQ  sH    {{1R !$ /B )C ', -? '@(A
 BC	Dr;   c                 b   t        j                  ddd      }t        |dd       t        j                  ddd      }t        |dd       t        j                  d	
      5  t        j                  ddd      }d d d        t        |dk7  xs t        j                  |             y # 1 sw Y   /xY w)Nr   rB   r{   r  rD   (   r   gI?r  r  rE   )r    r5  r   rU   r  r   r   r  s     r8   r6  zTestLegendreFunctions.test_lpmvZ  s    \\!Ab!Bva(\\!Bt$B1!4 [[X& 	*bD)B	*a'288B<(	* 	*s   B%%B.c                     t        j                  ddd      }t        j                  dd      }t        |d   d   |d   d       t        |d   d   |d   d       y )Nr   rB   r{   r@   rP   )r    lqmnlqnr   )r7   lqmnflqfs      r8   	test_lqmnzTestLegendreFunctions.test_lqmnf  sT    Qq$kk!B!%(1+c!fQ7!%(1+c!fQ7r;   c                     d}d}||z
  ||z   fD ]6  }t        j                  dd|      d   d   }d||z  dz
  z  }t        ||       8 y)znalgorithm for real arguments changes at 1.0001
           test against analytical result for m=2, n=1
        gqh ?gh㈵>rB   rP   r   )rE   rE   N)r    r  r   )r7   x0deltar#  lqr^  s         r8   test_lqmn_gt1z#TestLegendreFunctions.test_lqmn_gt1l  sa     U(BuH% 	.AaA&q)&1B!A#a%yHH-	.r;   c                    t        j                  ddd      \  }}t        |j                  d       t        |j                  d       t        j                  ddd      \  }}t        |j                  d       t        |j                  d       y )Nr@   rX  )r   r   r   )r   rP   )r    r  r   r)  )r7   rg  rh  s      r8   test_lqmn_shapez%TestLegendreFunctions.test_lqmn_shapew  sf    ||Aq#&1QWWf%QWWf%||Aq#&1QWWf%QWWf%r;   c                 z    t        j                  dd      }t        |t        g d      t        g d      fd       y )NrB   r{   )gk+ݓ?g=yX5gW2)g|a2U?g~jt?gڊer@   )r    r  r   r   )r7   r  s     r8   test_lqnzTestLegendreFunctions.test_lqn  s7    kk!B!#u-G'H',-E'F'HHI	Kr;   N)rZ  r[  r\  ro  rt  rv  rz  r~  r  r  r  r6  r  r  r  r  r`  r;   r8   rk  rk    sG    

%
%M9/ED
)8	.&Kr;   rk  c                       e Zd Zd Zd Zd Zy)TestMathieuc                      y r  r`  r6   s    r8   r9  zTestMathieu.test_mathieu_a  r  r;   c                 0    t        j                  dd       y )NrB   r   )r    r*   r6   s    r8   test_mathieu_even_coefz"TestMathieu.test_mathieu_even_coef  s    !!!A&r;   c                      y r  r`  r6   s    r8   test_mathieu_odd_coefz!TestMathieu.test_mathieu_odd_coef  s    r;   N)rZ  r[  r\  r9  r  r  r`  r;   r8   r  r    s    'r;   r  c                       e Zd Zd Zd Zy)TestFresnelIntegralc                      y r  r`  r6   s    r8   ru  z$TestFresnelIntegral.test_modfresnelp  r  r;   c                      y r  r`  r6   s    r8   rq  z$TestFresnelIntegral.test_modfresnelm  r  r;   N)rZ  r[  r\  ru  rq  r`  r;   r8   r  r    s    r;   r  c                       e Zd Zd Zy)TestOblCvSeqc                 b    t        j                  ddd      }t        |t        g d      d       y )Nr   r   rP   )g~T~Oֿgt_J?gm{@g@j'&@r   )r    
obl_cv_seqr   r   )r7   obls     r8   test_obl_cv_seqzTestOblCvSeq.test_obl_cv_seq  s1      1Q'!#e -9 ': ;<	=r;   N)rZ  r[  r\  r  r`  r;   r8   r  r    s    =r;   r  c                   0    e 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 )NrP   rW  gQ?gx$(~?gx$(~g(\?r@   )r    pbdn_seqr   r   )r7   pbs     r8   test_pbdn_seqz#TestParabolicCylinder.test_pbdn_seq  sK    a#!"eV.4-6 '7&+W-3-5 '6&7 89	:r;   c                     t        j                  dd       dt        j                  dd      d   z  t        j                  dd      d   z
   y )NrP   r  rW  r   )r    r  r6   s    r8   r  zTestParabolicCylinder.test_pbdv  s=    Qra#A&&a);A)>>r;   c                     t        j                  dd      }t        j                  dd      }t        |t	        |d         t	        |d         fd       y )NrP   rW  r   r@   )r    r  pbdv_seqr   r   )r7   pbnpbvs      r8   test_pbdv_seqz#TestParabolicCylinder.test_pbdv_seq  sG    q$q$!#tCF|DQL&A!Dr;   c                    t        j                  ddd      }d|dz  z  t        j                  t         j                        z  t	        j
                  dd|z  z
        z  }t        t	        j                  |d      d   |dd	       t        t	        j                  d
d      d   dd       t        t	        j                  dd      d   dd       y )Nrh  rc  r   rB   r{   r   r   r   r   gGz$@gq=
ףp4@gHQ9rv   rI   g(\#gQ@gkS a>)rU   rZ  r   r   r    r   r   r  )r7   etar]  s      r8   test_pbdv_pointsz&TestParabolicCylinder.test_pbdv_points  s    kk#r1%AJrwwruu~%gmmBr#vI&>>S"-a0!%eL 	UE2157JQVWUD1!46JQVWr;   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 Nr  r@   rA  rh  rc  r   rx  r   r   rP   rb  r   )rU   rZ  r    r  rf  r   r7   r#  r  rk  r  dps         r8   test_pbdv_gradientz(TestParabolicCylinder.test_pbdv_gradient      KKAq!!D&)kk#r1%d1f-LLa T#a&[ ll3C(+gll3C.H.KKsRUWW!bt$7r;   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  )rU   rZ  r    r  rf  r   r  s         r8   test_pbvv_gradientz(TestParabolicCylinder.test_pbvv_gradient  r  r;   N)	rZ  r[  r\  r  r  r  r  r  r  r`  r;   r8   r  r    s"    :?E
X88r;   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 )NrB   rP   r   gX];rc  gOV,@@)rB   r   g  8Br   r  r  )g2}jg.M?g}2;ο)r    	polygammar   r  rU   r  )r7   poly2poly3r#  r^   r^  s         r8   test_polygammazTestPolygamma.test_polygamma  s    !!!A&!!!A&E-3E,r2 G--a3W[[^D *G--a3X><<
1-G--aqc!e1DE$	&G--bllA3q5.A1E$	&r;   N)rZ  r[  r\  r  r`  r;   r8   r  r    s    &r;   r  c                       e Zd Zd Zy)TestProCvSeqc                 b    t        j                  ddd      }t        |t        g d      d       y )Nr   r   rP   )g"~j?g6?Ң@g)u8F"@g2g)@r   )r    
pro_cv_seqr   r   )r7   prols     r8   test_pro_cv_seqzTestProCvSeq.test_pro_cv_seq  s1    !!!Aa(!$u .: (; <=	>r;   N)rZ  r[  r\  r  r`  r;   r8   r  r    s    >r;   r  c                       e Zd Zd Zy)TestPsic                 H    t        j                  d      }t        |dd       y )NrP   goxrA  )r    r  r   )r7   pss     r8   r  zTestPsi.test_psi  s    [[^B3A6r;   N)rZ  r[  r\  r  r`  r;   r8   r  r    s    7r;   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   )r7   rads     r8   r   zTestRadian.test_radian  s$    nnR!$C3q)r;   c                 `    t        j                  ddd      }t        |t        dz  dz   d       y )Nr  rP   rk  rB   gC?r   r  )r7   rad1s     r8   test_radianmorezTestRadian.test_radianmore  s*    ~~b2&DA&;!;A>r;   N)rZ  r[  r\  r   r  r`  r;   r8   r  r    s    *?r;   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)rB   r  T)
derivativer   rP   rA  )rU   emptyrl   r    spherical_jnr   
riccati_jn)r7   r  r#  Sr^   rx  jps          r8   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Ar;   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  )rU   r  rl   r    spherical_ynr   
riccati_yn)r7   r  r#  Cr^   r\  yps          r8   test_riccati_ynzTestRiccati.test_riccati_yn  r  r;   N)rZ  r[  r\  r  r  r`  r;   r8   r  r    s    BBr;   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%@)rc  rc  rc  rY  )r  maprk   r    r  r   )r7   rndrndrls      r8   r	  zTestRound.test_round  sV    3sGMM$/d0CGMMRVDWX_XeXefjXklmn 3u%r;   N)rZ  r[  r\  r	  r`  r;   r8   r  r    s    	&r;   r  c            	         t         j                  } t        j                  }t        j                  }t        j
                  }t        j                  }t        j                  }t         | dddd      d ||      z         t         | ddd|dz        d |dd	|z  z        z   ||dz        d	z  z         t         | ddd|dz        d |dd	|z  z        z         t         | dd||dz        d |d
d	|z  z        z   |dd	|z  dz  z         z   ||d	z        d	z  z         t         | dd|dz  |dz        d |dd	|z  z        z   |dd	|z  dz  dz  z         z   ||dz        d	z  z  d ||dz        d	z  z  dz
  z         t         | dd|dz  |dz        d |dd	|z  z        z   |dd|z  dz  dz  z         z   ||dz        dz  z         y )Nr   r{   r+  rB   r   r@   r   g      .@r   rr   rZ  rJ  r   g      ?r   g      @rP   r   r-  g      ?g     A@)	r    sph_harmrU   r   r   r   r	   r
   r   )shr   r   r   r	   r
   s         r8   test_sph_harmr  )  s    
		B	B
&&C77D
&&C
&&Cb1QqktBx<bAbA.S"R%[!!1I? bAbA.S"R%[!!#b1R1oRBZ  qBrz?r"u:r>*+ b1RU2b514BrE
##qBr"}r"u:r> s2b5z2~a!"
 b1RU2b51Dbe%%qBr"}!"R%j"n-.r;   c                  j   t        j                  t         j                        } t        t	        j
                  dddd      j                  |        t        t	        j
                  dgddd      j                  |        t        t	        j
                  ddgdd      j                  |        t        t	        j
                  dddgd      j                  |        t        t	        j
                  ddddg      j                  |        t        t	        j
                  dgdgdgdg      j                  |        y r3   )rU   r9  r  r   r    r  )dts    r8   "test_sph_harm_ufunc_loop_selectionr  F  s    	"--	 B!!!Q1-33R8!!1#q!Q/55r:!!!aS!Q/55r:!!!QQ/55r:!!!QA3/55r:!!1#sQC!5;;R@r;   c                   &    e Zd ZddZd Zd Zd Zy)
TestStruvec                 B   t        d|      }d|z  d|z  d|z  |z   dz   z  z  t        j                  |dz         z  t        j                  ||z   dz         z  }t        |      j	                         t        t              j                  z  |z  }|j                         |fS )z?Compute Struve function & error estimate from its power series.r   rE   r{   rB   rP   rh  )	r   r    r   rf  r  r   r   r  r  r  s          r8   _serieszTestStruve._seriesR  s    1aL!Gr!tqs1uQw''ae(<<W]]1Q3s7=SS!fjjlU6]...2uuw|r;   c                     dD ]E  }dD ]>  }| j                  ||      \  }}t        t        j                  ||      |d|      ||ff @ G y)z-Check Struve function versus its power series)
irh  (\r  rE   r   rP   r  r     )rP   rc  r  rU  rL   r   r   N)r  r   r    r=  r!  s        r8   test_vs_serieszTestStruve.test_vs_seriesY  s]    B 	WA( W!\\!Q/
sq! 4e!#NQRTUPVVW	Wr;   c                 \   t        t        j                  dd      dd       t        t        j                  dd      dd       t        t        j                  d	d
      dd       t        t        j                  dd      dd       t        t        j                  dd      t        j                  dd              t        t        j                  dd      t        j                  dd              t        t        j                  dd      t        j                  dd             t        t        j                  dd      t        j                  dd             t	        t        t        j                  dd                   t	        t        t        j                  dd                   y )Nr  rU  g;cv=?rx  rI   gQ g< j?r=  r  r<  g?rv   g       igzz?r  i)   rB  r  rY  gffffffrE   g333333$)r   r    r=  r   r   r   r6   s    r8   test_some_valueszTestStruve.test_some_values`  s   ub1?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1r;   c                 <   t        t        j                  dd      t        j                  dd             t        t        j                  dd      t        j                  dd             t        t        j                  dd      t        j                  dd             y)zRegression test for #679r  g3@g*   4@r  g333333N)r   r    r=  r6   s    r8   test_regression_679zTestStruve.test_regression_679m  sb    tY7i9XYtY7i9XYtY7i9XYr;   N)rG  )rZ  r[  r\  r  r  r	  r  r`  r;   r8   r   r   Q  s    W2Zr;   r   c                  D    t        t        j                  dd      d       y )Nr)  r   gdX	
?)r   r    r   r`  r;   r8   test_chi2_smalldfr  t  s    c!,.?@r;   c                  `    t        t        j                  dt        j                        d       y )Nr6  r|   )r   r    r   rU   r   r`  r;   r8   test_ch2_infr  x  s    s266*C0r;   c                  D    t        t        j                  dd      d       y )Nr)  r   yj_?)r   r    r   r`  r;   r8   test_chi2c_smalldfr  |  s    s1-/BCr;   c                  D    t        t        j                  dd      d       y )Nr)  r  r   )r   r    r   r`  r;   r8   test_chi2_inv_smalldfr    s    s+>?Cr;   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 )'NrH   rP   rB   gDSYC?rI   gQ_?g?@g>;,
i}@r   )rP   r   r   g=O?rE   r+  r  rF   gXs*@rd  g   V4oAgO1eAgꌠ9Y>)FgEg^ 9^;gd-?gP.5_gsTNNeg6dgu?j/ g]XC}KdgѧRg"!x{{ r|   g][#!Rr  gٍS1gN_ r   c   rc  )r   r    agmrU   r   r   r  r  r   r   r   )rJ   agm13agm15agm35agm12fis         r8   test_agm_simpler    s   D 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3r;   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  rP   rX  g?rB   gffffff@)r   r/  r0  r   r    expnr}  rz  r  r  r  rK  r  r*  )r2  s    r8   test_legacyr     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                  X    t        t        j                  t        j                  dd       y )NrP   y        .B}T)r  r    SpecialFunctionErrorr  r`  r;   r8   test_error_raisingr#    s    '..

AuEr;   c                     d } t        j                  ddt         j                  fdt         j                  fdgt              }t         j
                  |ddgf   } t        j                  |       |d d df   |d d df         }t        t        j                  ||d	d	
        t        j                  |       |d d df   |d d df         }t        t        j                  ||d	d	
       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   )rU   r  r   r   rj  s     r8   xfuncztest_xlogy.<locals>.xfunc  sR    [[* 	#Avbhhqk	# 	# {		# 	# 	#   AAA'r   r   r   r|   r   r8  )r   rZ  )rP   rZ  rP   rH   r   )
rU   r   r   r   rm   r   rs   r.   r    xlogy)r(  z1z2w1w2s        r8   
test_xlogyr1    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Dr;   c                     d } t        j                  ddt         j                  fdt         j                  fddgt              } t        j
                  |       |d d df   |d d df         }t        t        j                  ||dd	       y )
Nc                     t        j                  d      5  | dk(  r t        j                  |      s| cd d d        S | t        j                  |      z  cd d d        S # 1 sw Y   y xY wr&  )rU   r  r   r,  rj  s     r8   r(  ztest_xlog1py.<locals>.xfunc  sR    [[* 	'Avbhhqk	' 	' 288A;		' 	' 	'r)  r*  r   r+  )rP   gKH9r8  rP   rH   r   )	rU   r   r   r   rm   rs   r.   r    xlog1py)r(  r-  r/  s      r8   test_xlog1pyr5    su    ' 
UQK!RVVj!(-
/B	e	R!Wb1g	.Bgoor2EFr;   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 r3   )rU   r   r    r,  )r#  s    r8   r(  ztest_entr.<locals>.xfunc  s(    q5FF7NMM!Q'''r;   r   r{   r|   rE   rP   r8  otypesrH   r   )rU   r   r  r  rs  r   rm   rs   r   r.   r    entr)r(  r   signsr  sgnrm  r]  rX  s           r8   	test_entrr=    s    (
 c266"FGE
C##E62 Q

37
E"A0UBJJ<03AgllAqu5Ar;   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 r3   )rU   r   isposinfr    r,  rj  s     r8   r(  ztest_kl_div.<locals>.xfunc  sm    q5AEa1fa66M[[^r{{1~66M!VH==AaC(1,q00r;   r   r{   r|   rE   rP   r8  r8  r   rH   r   )r  r  rs  rU   r   rm   rs   r   r.   r    kl_div
r(  r   r;  r  sgnavasgnbvbr]  rX  s
             r8   test_kl_divrH    s    
1 FGE
C'//vufM 'b$

DGT"W%&'
E"A0UBJJ<01Q31Q3@AgnnaUCr;   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 r3   )r    r,  rU   r   rj  s     r8   r(  ztest_rel_entr.<locals>.xfunc  s=    q5QU==AaC((!VQ66Mr;   rA  rE   rP   r8  r8  r   rH   r   )r  r  rs  rU   r   rm   rs   r   r.   r    rel_entrrC  s
             r8   test_rel_entrrL    s     FGE
C'//vufM 'b$

DGT"W%&'
E"A0UBJJ<01Q31Q3@Ag&&15uEr;   c                     t        t        j                  dd      t        j                         t        t        j                  dd      dt        j                  d      z         t        t        j                  dd      d       d } t        j                  j                  dd      } t        j                  | t        j                  g	      |d d d
f   |d d df         }t        t        j                  ||dd       y )NrE   rh  rB   r{   r  r   c                     | dk  rt         j                  S t        j                  |      | k  rdt        j                  |      z  S | t        j                  |      d| z  z
  z  S )Nr   r{   )rU   r   rf  squarer  rv  s     r8   r(  ztest_huber.<locals>.xfunc1  sQ    1966MVVAY1%%BFF1Ie344r;   rc  r8  r   rP   rH   r   )r   r    huberrU   r   r   rO  r[   randnrs   r   r.   r(  r]  rX  s      r8   
test_huberrT  ,  s    r3'0GMM!S)33+?@GMM!S)+>?5 			AA0UBJJ<01Q31Q3@AgmmQEBr;   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   rB   rP   )rU   r   r   rP  s     r8   r(  z test_pseudo_huber.<locals>.xfunc?  sD    1966M!8rwwqAeGa<'781<==r;   rc  rB   r   r{   r8  rP   rH   r   )
rU   r   r[   rR  tolistrs   r   r.   r    pseudo_huberrS  s      r8   test_pseudo_huberrY  >  s    > 	Q'..0QHsAh3GGHA0UBJJ<01Q31Q3@Ag**Aqu5Ir;   c                  X    d} d}t        j                  | |      }d}t        ||d       y )Nr|   gC]r2<gs.-De8rH   rI   )r    rX  r   )r  rv  r\  r^  s       r8   test_pseudo_huber_small_rr[  L  s1    EAUA&A &HAxe,r;   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  rM   )r]  r  r0  r)   r*   r`  r;   r8   test_runtime_warningr]  Y  sk    	n>
@ %t$% 
n>
@ &$%& &% %& &s   A"A."A+.A7)wr  r  r  rO  rN  numpyrU   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r]  r   r  numpy.testingr   r   r   r   r   r   r   r   r   scipyr    scipy.special._ufuncs_ufuncsr4   scipy.specialr!   r"   r#   r$   r%   r&   r'   r(   r)   r*   scipy.special._basicr+   r,   scipy.special._testutilsr-   r.   r/   r?  r1   rb  r  r  r  r  r  r  r  rS  r`  r  r  r  r  r  r  r  r  r  r  r"  r@  rN  rZ  ra  rk  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r   r#  r1  r5  r=  rH  rL  rT  rY  r[  r]  r`  r;   r8   <module>rf     s  (     
 J J J J J J  *  
  & & 2 2 E E =! ! t9 t9nkG kG\. . 
V> V>r9 9' '*M$ M$`B+ B+J: ::DT DTNG0 G0T)= )=V_B _BD- -2/ /@tE tEnA. A.H/, /,d /  /FU6 U6po$ o$d] ]8B B . .	1 	1AK AKH  = =+8 +8\& &2> >7 7? ?B B,
& 
&.:A Z  ZFA1DD:4zK F FE"GB D,F$C$J
-&r;   