
    doi             	          S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKJrJ	r	J
r
JrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJr  S SKrS SKJr  S SKJ r J!r!J"r"J#r#J$r$  S SK%J&r&  S SK'J&s  J(r)  S SK*J+r+J,r,J-r-  S SK*J.r.J/r/J0r0J1r1J2r2  S SK*J3r3  S S	K*J4r4J5r5J6r6  S S
K7J8r8J9r9  S SK:J;r;J<r<J=r=  S SK>J?r?J@r@JArA  S SKBJCrCJDrDJErE  S SKFJGrG  S SKHrH\R                  S:X  d  \R                  " 5       S    S:X  a  \R                  O\R                  rL " S S5      rM " S S5      rN " S S5      rO " S S5      rP " S S5      rQ " S S5      rR " S S5      rS " S S 5      rT " S! S"5      rU " S# S$5      rV " S% S&5      rW " S' S(5      rX " S) S*5      rY " S+ S,5      rZ " S- S.5      r[ " S/ S05      r\ " S1 S25      r]SS3 jr^ " S4 S55      r_ " S6 S75      r` " S8 S95      ra " S: S;5      rb " S< S=5      rc " S> S?5      rd " S@ SA5      re " SB SC5      rf " SD SE5      rgSF rhSG ri " SH SI5      rj " SJ SK5      rk " SL SM5      rl " SN SO5      rm " SP SQ5      rn " SR SS5      ro " ST SU5      rp " SV SW5      rq " SX SY5      rr " SZ S[5      rs " S\ S]5      rt " S^ S_5      ruS` rvSa rw\R                  R                  Sb\R,                  * ScSdSe\R,                  \R                  /5      Sf 5       r{\R                  R                  Sg\R,                  * ScSdSe\R,                  \R                  /5      Sh 5       r|\R                  R                  Sb\R,                  * ScSdSe\R,                  \R                  /5      Si 5       r}\R                  R                  Sg\R,                  * ScSdSe\R,                  \R                  /5      Sj 5       r~Sk rSl rSm rSn rSo r\GR                  Sp 5       r\CSq 5       rSr rSs rSt rSu rSv rSw rSx rSy rSz rS{ rS| r " S} S~5      rg)    N)arrayisnanr_arangefinfopisincostanexplogzerossqrtasarrayinf
nan_to_numrealarctandoublearray_equal)raises)assert_equalassert_array_equalassert_assert_allcloseassert_array_almost_equal_nulp)special)ellipeellipkellipkm1)elliprcelliprdelliprfelliprgelliprj)softplus)mathieu_odd_coefmathieu_even_coef	stirling2)np_longnp_ulong)xp_assert_closexp_assert_equalSCIPY_ARRAY_API)_FACTORIALK_LIMITS_64BITS_FACTORIALK_LIMITS_32BITS_is_subdtype)with_special_errorsassert_func_equalFuncData)quadwin3232bitc                      \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(S' r)S( r*\+RX                  R[                  S)S*9S+ 5       r.S, r/S- r0S. r1S/ r2S0 r3S1 r4S2 r5S3 r6S4 r7S5 r8S6 r9S7 r:S8 r;S9 r<S: r=S; r>S< r?S= r@S> rAS? rBS@ rCSA rDSB rESC rFSD rGSE rHSF rISG rJSH rKSI rLSJ rMSK rNSL rOSM rPSN rQSO rRSP rSSQ rTSR rUSS rVST rWSU rXSV rYSW rZSX r[SY r\SZ r]S[ r^S\ r_S] r`S^ raS_ rbS` rcSa rdSb reSc rfSd rgSe rhSf riSg rjSh rkSi rlSj rm\+RX                  R                  Sk/ SlQ5      Sm 5       roSn rp\+RX                  R                  Sk/ SoQ5      Sp 5       rqSq rrSr rsSs rtSt ruSu rvSv rwSw rxSx rySy rzSz r{S{ r|S| r}S} r~S~ rS rS rS rS r\+RX                  R[                  SS*9S 5       r\+RX                  R[                  SS*9S 5       r\+RX                  R[                  SS*9S 5       rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSrg)
TestCephes;   c                 0    [         R                  " S5        g Nr   )cephesairyselfs    Z/var/www/html/land-ocr/venv/lib/python3.13/site-packages/scipy/special/tests/test_basic.py	test_airyTestCephes.test_airy<       A    c                 0    [         R                  " S5        g r<   )r=   airyer?   s    rA   
test_airyeTestCephes.test_airye?   s    QrE   c           	         [         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  " [         R                  " US S 2S 4   US S S 24   5      5      R                  SS5      R                  n[         R                  " / SQ/ SQ/ SQ/ SQ/5      n[        [        R                  UR                  5       US	S
9  [         R                  R                  S5      n[         R                  [         R                  " SS5      SUR                  S5      -  S-
  4   n[         R                  " SS5      n[         R                  " [         R                  " US S 2S 4   US S S 24   5      5      R                  SS5      R                  n[        [        R                  [        R                  " US S 2S4   US S 2S4   S-  5      USSS9  g )N)gL7A`?   g@   )   皙?   gffffff
@rM   )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           ?绽|=atolrU   )npr   broadcast_arraysreshapeTr3   r=   binomravelrandomRandomStater   r   rand)r@   nknkrknownrngs         rA   
test_binomTestCephes.test_binomB   sl   HH()HH%&XXb))!AdF)QtAvY? 2qq 	 ##QF@B C 	&,,G ii##D)EE"))B#T#((2,%6%<<=IIaXXb))!AdF)QtAvY? 2qq 	 	&,, ,,r!A#w1Q390EF$5	2rE   c           	         [         R                  R                  S5        [         R                  [         R                  " SSS5         n[         R
                  " SS5      n[         R                  " [         R                  " US S 2S 4   US S S 24   5      5      R                  SS5      R                  n[        [        R                  [        R                  " US S 2S4   US S 2S4   S	-  5      US
S
S9  g )NrV   r[   ,     r   rZ   rM   rP   r\   r]   r^   )r`   rf   seedr   logspacer   r   ra   rb   rc   r3   r=   rd   )r@   ri   rj   rk   s       rA   test_binom_2TestCephes.test_binom_2Y   s    
		tEE"++ab)*IIaXXb))!AdF)QtAvY? 2qq 	 	&,, ,,r!A#w1Q390EF$5	2rE   c           	         [         R                  S 5       n[         R                  R                  S5        [         R                  " SS5      n[         R                  " SS5      n[         R
                  " [         R                  " US S 2S 4   US S S 24   5      5      R                  SS5      R                  nXDS S 2S4   US S 2S4   :     n[        [        R                  U" US S 2S4   US S 2S4   5      USSS9  g )	Nc                     [        U 5      n [        U5      nSnSn[        SUS-   5       H  nX$U -   U-
  -  nX4-  nM     [        X#-  5      $ Nr[   )intrangefloat)ri   rj   numdenis        rA   	binom_int.TestCephes.test_binom_exact.<locals>.binom_intg   sW    AAAACC1ac]1uqy  # >!rE   rV   r[      r   rM   rP   r^   )r`   	vectorizerf   rs   r   r   ra   rb   rc   r3   r=   rd   )r@   r   ri   rj   rk   s        rA   test_binom_exactTestCephes.test_binom_exactf   s    		" 
	" 			tIIaIIaXXb))!AdF)QtAvY? 2qq 	1Q32ac7"#&,,#BqsGR!W5 q	*rE   c                     / SQn[         R                  " U5      n[        [        R                  USSSS9R                  5         g )N))rX   rY   gwP~)i  i  gii9~)  i  gyhY~)i  i  gpvy~)i  i  gzN~)i  i  gGTɳ~)i  i  g@jH~)i  i  gF:aYͦ~)i  i  gɸV)i  i  g
{9)i  i  gyVxY)i    g*I y)i   i   gI)i  i  gW@N)i  i  g5y)r   r[   rM   -q=rT   )r`   r   r4   r=   rd   check)r@   datasets     rA   test_binom_nooverflow_8346%TestCephes.test_binom_nooverflow_8346}   s6    
" **W%w>DDFrE   c                 H    [        [        R                  " SSS5      S5        g )Nr[         ?      ?)r   r=   bdtrr?   s    rA   	test_bdtrTestCephes.test_bdtr   s    V[[1S)#.rE   c                 H    [        [        R                  " SSS5      S5        g Nr[      r   )r   r=   bdtrir?   s    rA   
test_bdtriTestCephes.test_bdtri       V\\!Ac*3/rE   c                 H    [        [        R                  " SSS5      S5        g r   )r   r=   bdtrcr?   s    rA   
test_bdtrcTestCephes.test_bdtrc   r   rE   c                 H    [        [        R                  " SSS5      S5        g Nr[   r         @)r   r=   bdtrinr?   s    rA   test_bdtrinTestCephes.test_bdtrin       V]]1Qq)#.rE   c                 4    [         R                  " SSS5        g r   )r=   bdtrikr?   s    rA   test_bdtrikTestCephes.test_bdtrik   s    a#rE   c                 D    [        [        R                  " S5      S5        g Nr           )r   r=   beir?   s    rA   test_beiTestCephes.test_bei       VZZ]3'rE   c                 D    [        [        R                  " S5      S5        g r   )r   r=   beipr?   s    rA   	test_beipTestCephes.test_beip       V[[^C(rE   c                 D    [        [        R                  " S5      S5        g Nr   r   )r   r=   berr?   s    rA   test_berTestCephes.test_ber   r   rE   c                 D    [        [        R                  " S5      S5        g r   )r   r=   berpr?   s    rA   	test_berpTestCephes.test_berp   r   rE   c                 H    [        [        R                  " SSS5      S5        g r   )r   r=   
besselpolyr?   s    rA   test_besselpolyTestCephes.test_besselpoly   s    V&&q1-c2rE   c                 D    [        [        R                  " S5      SSSS9  g )Nr[   r   ư>r   r^   )r   r=   cbrtr?   s    rA   	test_cbrtTestCephes.test_cbrt   s    A$Q?rE   c                 F    [        [        R                  " SS5      S5        g Nr[   r   r   )r   r=   chdtrr?   s    rA   
test_chdtrTestCephes.test_chdtr   s    V\\!A&s+rE   c                 F    [        [        R                  " SS5      S5        g Nr[   r   r   )r   r=   chdtrcr?   s    rA   test_chdtrcTestCephes.test_chdtrc       V]]1Q',rE   c                 F    [        [        R                  " SS5      S5        g Nr[   r   )r   r=   chdtrir?   s    rA   test_chdtriTestCephes.test_chdtri   r   rE   c                 H    [        [        R                  " SSS5      S5        g Nr   r[   r   )r   r=   chndtrixr?   s    rA   test_chndtrixTestCephes.test_chndtrix       V__Qq+C0rE   c                 D    [        [        R                  " S5      S5        g r   )r   r=   cosdgr?   s    rA   
test_cosdgTestCephes.test_cosdg       V\\!_S)rE   c                 D    [        [        R                  " S5      S5        g r   )r   r=   cosm1r?   s    rA   
test_cosm1TestCephes.test_cosm1   r   rE   c                 D    [        [        R                  " S5      SSSS9  g )N-   r   v!>r   r^   )r   r=   cotdgr?   s    rA   
test_cotdgTestCephes.test_cotdg   s    R(#FCrE   c                     [        [        R                  " S5      S5        [        [        R                  " S5      S5        g )Nr   r   gGz?gf?)r   r=   dawsnr   r?   s    rA   
test_dawsnTestCephes.test_dawsn   s(    V\\!_S)T*,?@rE   c                 $   / SQn[         R                  " S[         R                  -  S-   5      R                  [         R                  5      n[        [        R                  " X!5      SSSS9  [         R                  " S[         R                  -  S-   5      R                  [         R                  5      n[        [        R                  " X!5      SS	SS9  [         R                  " S[         R                  -  S
-   5      R                  [         R                  5      n[        [        R                  " X!5      SS	SS9  [        [         S5      (       ag  [         R                  " S[         R                  -  S-   5      R                  [         R                  5      n[        [        R                  " X!5      SSSS9  / SQn[         R                  " S[         R                  -  S-   5      R                  [         R                  5      n[        [        R                  " X#5      SS	SS9  [         R                  " S[         R                  -  S[         R                  -  S[         R                  -  5      n/ SQn[        [        R                  " US5      US	SS9  g )N)r[         rM   g-C6
?r   r   r   r^   &.> [n<V瞯<float128r   g"<)rM   rK            皙?)gg?gsOB?gsaL?g
7I^ʿr   )r`   r   r   astypefloat32r   r   diricfloat64hasattrr   r   )r@   n_oddxn_evenoctave_results        rA   
test_diricTestCephes.test_diric   s    HHQruuWt^$++BJJ7a/6JHHQruuWt^$++BJJ7a/7KHHQruuWu_%,,RZZ8a/7K2z""2555)00=AGMM!3SwQOHHQruuWt^$++BJJ7a0$W1M IIc"%%iRUUCI6@a+]qQrE   c                    [         R                  " S5      n[         R                  " / SQ5      n[        [        R
                  " US S 2[         R                  4   U5      R                  UR                  UR                  4:H  5        g )Nr   )r[   r   rO   )	r`   r   r   r   r   r   newaxisshapesize)r@   r  ri   s      rA   test_diric_broadcasting"TestCephes.test_diric_broadcasting   sU    IIaLHHYa2::.288QVVQVV<LLMrE   c                 D    [        [        R                  " S5      S5        g Nr[   r   )r   r=   r   r?   s    rA   test_ellipeTestCephes.test_ellipe       V]]1%c*rE   c                 F    [        [        R                  " SS5      S5        g r   )r   r=   	ellipeincr?   s    rA   test_ellipeincTestCephes.test_ellipeinc       V%%a*3/rE   c                 2    [         R                  " SS5        g Nr   r[   )r=   ellipjr?   s    rA   test_ellipjTestCephes.test_ellipj   s    arE   c                 <    [        [        S5      [        S-  5        g )Nr   rM   )r   r   r   r?   s    rA   test_ellipkTestCephes.test_ellipk   s    q	2a4(rE   c                 F    [        [        R                  " SS5      S5        g r   )r   r=   	ellipkincr?   s    rA   test_ellipkincTestCephes.test_ellipkinc   r  rE   c                 D    [        [        R                  " S5      S5        g r   r   r=   erfr?   s    rA   test_erfTestCephes.test_erf   s    VZZ]C(rE   c                 x    Sn[        [        R                  " U5      [        R                  " U* 5      -   S5        g )Ng#8x@r   r#  r@   r  s     rA   test_erf_symmetryTestCephes.test_erf_symmetry   s(    VZZ]VZZ^3S9rE   c                 D    [        [        R                  " S5      S5        g r   )r   r=   erfcr?   s    rA   	test_erfcTestCephes.test_erfc  s    V[[^S)rE   c                 D    [        [        R                  " S5      SSSS9  g )NrM   g      Y@r   r   r^   )r   r=   exp10r?   s    rA   
test_exp10TestCephes.test_exp10  s    QTBrE   c                 D    [        [        R                  " S5      S5        g )NrM         @)r   r=   exp2r?   s    rA   	test_exp2TestCephes.test_exp2  r   rE   c                    [        [        R                  " S5      S5        [        [        R                  " [        R                  5      [        R                  5        [        [        R                  " [        R                  * 5      S5        [        [        R                  " [        R
                  5      [        R
                  5        g )Nr   r   rP   )r   r=   expm1r`   r   nanr?   s    rA   
test_expm1TestCephes.test_expm1
  sc    V\\!_S)V\\"&&)2662V\\266'*B/V\\"&&)2662rE   c                 	   [         R                  n[        U" S5      S5        [        U" [        [        R
                  S5      5      [        [        R
                  S5      5        [        U" [        [        R
                  S5      5      [        [        R
                  [        R
                  5      5        [        U" [        [        R
                  S5      5      [        [        R
                  * [        R
                  5      5        [        U" [        [        R
                  S5      5      [        [        R
                  * [        R
                  * 5      5        [        U" [        [        R
                  S5      5      [        [        R
                  [        R
                  * 5      5        [        U" [        S[        R
                  5      5      [        [        R                  [        R                  5      5        [        U" [        S[        R
                  5      5      [        [        R                  [        R                  5      5        [        U" [        [        R
                  [        R
                  5      5      [        [        R
                  [        R                  5      5        [        U" [        [        R
                  * [        R
                  5      5      [        SS5      5        [        U" [        [        R
                  * [        R                  5      5      [        SS5      5        [        U" [        [        R
                  [        R                  5      5      [        [        R
                  [        R                  5      5        [        U" [        S[        R                  5      5      [        [        R                  [        R                  5      5        [        U" [        S[        R                  5      5      [        [        R                  [        R                  5      5        [        U" [        [        R                  S5      5      [        [        R                  [        R                  5      5        [        U" [        [        R                  [        R                  5      5      [        [        R                  [        R                  5      5        g )N                r   r[   rM   rK   r   rP   )r=   r9  r   complexr`   r   r:  )r@   r9  s     rA   test_expm1_complexTestCephes.test_expm1_complex  s   U6]F+U72661-.0BCU72661-.0GHU72661-.0HIU72661-."&&0IJU72661-.0HIU71bff-.0GHU71bff-.0GHU726626623WRVVRVV5LMU7BFF7BFF34gb!nEU7BFF7BFF34gb!nEU726626623WRVVRVV5LMU71bff-.0GHU71bff-.0GHU72661-.0GHU726626623WRVVRVV5LMrE   z-The real part of expm1(z) bad at these pointsreasonc                 z   [         R                  " / SQ5      n[         R                  " [         R                  " U5      5      * nUSU-  -   n[         R                  " / SQ5      n[        R
                  " U5      n[        UR                  UR                  S5        [        UR                  UR                  S5        g )N)皙?r   333333?r      rr                 ?)y=Cw?yC7gg)gF<Ug?yQ<D*?yg:><sKy>񸣼$	Um>ly;Vl <@r   rr   )	r`   r   r   r
   r=   r9  r   imagr   )r@   yr  zexpectedfounds         rA   test_expm1_complex_hard"TestCephes.test_expm1_complex_hard#  s     HH/0VVBFF1I1H 88 J K Q&uzz8==!D&uzz8=="ErE   c                     [        [        R                  " SSS5      S5        [        [        R                  " SSS5      SSS	9  g )
Nr[   r   r   r   r   
   g2?r   rT   )r   r=   fdtrr   r?   s    rA   	test_fdtrTestCephes.test_fdtr8  s6    V[[Aq)3/D!R02D"	$rE   c                     [        [        R                  " SSS5      S5        [        [        R                  " SSS5      SSS	9  g )
Nr[   r   r   rM   rE  g    _BgDIXl?r   rT   )r   r=   fdtrcr   r?   s    rA   
test_fdtrcTestCephes.test_fdtrc>  s8    V\\!Q*C0 	QT24G"	$rE   c                     [        [        R                  " SSSS/5      [        SS/5      SS9  Sn[        [        R                  " S	SU5      S
SS9  g )Nr[   gV-?gx&1?g
}?g<zO'?r   rT   g׀?rE  r   r   )r   r=   fdtrir   )r@   ps     rA   
test_fdtriTestCephes.test_fdtriE  sM    QE5>:y*56T	C %S!Q/?rE   c                 x    Su  pn[        [        R                  " X[        R                  " XU5      5      USS9  g )N)r[   P  g\/չ=@r   rT   )r   r=   rZ  rR  )r@   dfddfnr  s       rA   test_gh20835TestCephes.test_gh20835M  s.    1!Sv{{3Q/GH!RWXrE   c                 H    [        [        R                  " SSS5      S5        g )Nr[   r   )r   r=   rZ  r?   s    rA   test_fdtri_mysterious_failure(TestCephes.test_fdtri_mysterious_failureR  s    Q3/3rE   c                 H    [        [        R                  " SSS5      S5        g r   )r   r=   fdtridfdr?   s    rA   test_fdtridfdTestCephes.test_fdtridfdU  r   rE   c                 D    [        [        R                  " S5      S5        g Nr   r   r   )r   r=   fresnelr?   s    rA   test_fresnelTestCephes.test_fresnelX  s    V^^A&y1rE   c                 D    [        [        R                  " S5      S5        g Nr         8@)r   r=   gammar?   s    rA   
test_gammaTestCephes.test_gamma[  s    V\\!_T*rE   c                 F    [        [        R                  " SS5      S5        g )Nr   r[   r   )r   r=   gammainccinvr?   s    rA   test_gammainccinvTestCephes.test_gammainccinv^  s    V((1-c2rE   c                 0    [         R                  " S5        g )NrQ  )r=   gammalnr?   s    rA   test_gammalnTestCephes.test_gammalna  s    rrE   c                 n   [         R                  " [         R                  * SSSSSSS[         R                  /	[         R                  5      n[         R                  " [         R                  [         R                  SS	S	SSSS/	[         R                  5      n[        [        R                  " U5      U5        g )
N      gffffff       r   r[   g@r   r   )r`   r   r   r   r:  r   r=   gammasgn)r@   vals	references      rA   test_gammasgnTestCephes.test_gammasgnd  s    xxffWb$dCC@"**
 HHVVRVVS$c3SA2::
	 	6??40)<rE   c                 H    [        [        R                  " SSS5      S5        g r   )r   r=   gdtrr?   s    rA   	test_gdtrTestCephes.test_gdtrm      V[[1Q',rE   c                 d    [        [        R                  " SS[        R                  5      S5        g r  )r   r=   r  r`   r   r?   s    rA   test_gdtr_infTestCephes.test_gdtr_infp  s    V[[1RVV,S1rE   c                 H    [        [        R                  " SSS5      S5        g r   )r   r=   gdtrcr?   s    rA   
test_gdtrcTestCephes.test_gdtrcs      V\\!Aa(-rE   c                 H    [        [        R                  " SSS5      S5        g r   )r   r=   gdtriar?   s    rA   test_gdtriaTestCephes.test_gdtriav  r   rE   c                 4    [         R                  " SSS5        g Nr[   r   )r=   gdtribr?   s    rA   test_gdtribTestCephes.test_gdtriby  s    a!rE   c                 4    [         R                  " SSS5        g Nr[   rE  )r=   gdtrixr?   s    rA   test_gdtrixTestCephes.test_gdtrix}  s    a"rE   c                 2    [         R                  " SS5        g ry   )r=   hankel1r?   s    rA   test_hankel1TestCephes.test_hankel1      qrE   c                 2    [         R                  " SS5        g ry   )r=   hankel1er?   s    rA   test_hankel1eTestCephes.test_hankel1e      !rE   c                 2    [         R                  " SS5        g ry   )r=   hankel2r?   s    rA   test_hankel2TestCephes.test_hankel2  r  rE   c                 2    [         R                  " SS5        g ry   )r=   hankel2er?   s    rA   test_hankel2eTestCephes.test_hankel2e  r  rE   c                     [        [        R                  " SSS5      [        S5      SSS9  [        [        R                  " SSS5      S	SSS9  [        R                  " SSS5        g )
Nr[   r   r   r   r^   r   rK   g㈮?)r   r=   hyp1f1r   r?   s    rA   test_hyp1f1TestCephes.test_hyp1f1  sP    aA.Ct!LaB/1H!	+a!rE   c                 J    [        [        R                  " SSSS5      S5        g r   )r   r=   hyp2f1r?   s    rA   test_hyp2f1TestCephes.test_hyp2f1      V]]1Qq+C0rE   c                 D    [        [        R                  " S5      S5        g r   )r   r=   i0r?   s    rA   test_i0TestCephes.test_i0      VYYq\#&rE   c                 D    [        [        R                  " S5      S5        g r   )r   r=   i0er?   s    rA   test_i0eTestCephes.test_i0e  r   rE   c                 D    [        [        R                  " S5      S5        g r   )r   r=   i1r?   s    rA   test_i1TestCephes.test_i1  r  rE   c                 D    [        [        R                  " S5      S5        g r   )r   r=   i1er?   s    rA   test_i1eTestCephes.test_i1e  r   rE   c                 0    [         R                  " S5        g ry   )r=   it2i0k0r?   s    rA   test_it2i0k0TestCephes.test_it2i0k0      qrE   c                 0    [         R                  " S5        g ry   )r=   it2j0y0r?   s    rA   test_it2j0y0TestCephes.test_it2j0y0  r  rE   c                 0    [         R                  " S5        g ry   )r=   
it2struve0r?   s    rA   test_it2struve0TestCephes.test_it2struve0  s    !rE   c                 0    [         R                  " S5        g ry   )r=   itairyr?   s    rA   test_itairyTestCephes.test_itairy      arE   c                 D    [        [        R                  " S5      S5        g rl  )r   r=   iti0k0r?   s    rA   test_iti0k0TestCephes.test_iti0k0      V]]1%i0rE   c                 D    [        [        R                  " S5      S5        g rl  )r   r=   itj0y0r?   s    rA   test_itj0y0TestCephes.test_itj0y0  r  rE   c                 D    [        [        R                  " S5      S5        g r   )r   r=   itmodstruve0r?   s    rA   test_itmodstruve0TestCephes.test_itmodstruve0  s    V((+C0rE   c                 D    [        [        R                  " S5      S5        g r   )r   r=   	itstruve0r?   s    rA   test_itstruve0TestCephes.test_itstruve0  s    V%%a(-rE   c                 F    [        [        R                  " SS5      S5        g r   )r   r=   ivr?   s    rA   test_ivTestCephes.test_iv      VYYq^C(rE   c                 F    [        [        R                  " SS5      S5        g r   )r   r=   iver?   s    rA   test_iveTestCephes.test_ive      VZZ!_S)rE   c                 D    [        [        R                  " S5      S5        g r   )r   r=   j0r?   s    rA   test_j0TestCephes.test_j0  r  rE   c                 D    [        [        R                  " S5      S5        g r   )r   r=   j1r?   s    rA   test_j1TestCephes.test_j1  r  rE   c                 F    [        [        R                  " SS5      S5        g r   )r   r=   jnr?   s    rA   test_jnTestCephes.test_jn  r  rE   c                 F    [        [        R                  " SS5      S5        g r   )r   r=   jvr?   s    rA   test_jvTestCephes.test_jv  r  rE   c                 F    [        [        R                  " SS5      S5        g r   )r   r=   jver?   s    rA   test_jveTestCephes.test_jve  r  rE   c                 0    [         R                  " S5        g NrM   )r=   k0r?   s    rA   test_k0TestCephes.test_k0      		!rE   c                 0    [         R                  " S5        g r  )r=   k0er?   s    rA   test_k0eTestCephes.test_k0e      

1rE   c                 0    [         R                  " S5        g r  )r=   k1r?   s    rA   test_k1TestCephes.test_k1  r  rE   c                 0    [         R                  " S5        g r  )r=   k1er?   s    rA   test_k1eTestCephes.test_k1e  r  rE   c                 0    [         R                  " S5        g r  )r=   keir?   s    rA   test_keiTestCephes.test_kei  r  rE   c                 D    [        [        R                  " S5      S5        g r   )r   r=   keipr?   s    rA   	test_keipTestCephes.test_keip  r   rE   c                 0    [         R                  " S5        g r  )r=   kerr?   s    rA   test_kerTestCephes.test_ker  r  rE   c                 0    [         R                  " S5        g r  )r=   kerpr?   s    rA   	test_kerpTestCephes.test_kerp  rD   rE   c                 0    [         R                  " S5        g r  )r=   kelvinr?   s    rA   test_kelvinTestCephes.test_kelvin  r  rE   c                 2    [         R                  " SS5        g ry   )r=   knr?   s    rA   test_knTestCephes.test_kn      		!ArE   c                     [        [        R                  " S5      S5        [        [        R
                  " [        R                  " [        R                  5      5      5        g r   )r   r=   kolmogir   r`   r   r:  r?   s    rA   test_kolmogiTestCephes.test_kolmogi  s3    V^^A&s+/01rE   c                 D    [        [        R                  " S5      S5        g r   )r   r=   
kolmogorovr?   s    rA   test_kolmogorovTestCephes.test_kolmogorov  s    V&&q)3/rE   c                 D    [        [        R                  " S5      S5        g )Nr   r  )r   r=   _kolmogpr?   s    rA   test_kolmogpTestCephes.test_kolmogp  s    V__Q'.rE   c                 D    [        [        R                  " S5      S5        g r   )r   r=   _kolmogcr?   s    rA   test_kolmogcTestCephes.test_kolmogc  s    V__Q'-rE   c                     [        [        R                  " S5      S5        [        [        R
                  " [        R                  " [        R                  5      5      5        g r   )r   r=   	_kolmogcir   r`   r   r:  r?   s    rA   test_kolmogciTestCephes.test_kolmogci  s7    V%%a(#.))"&&123rE   c                 2    [         R                  " SS5        g ry   )r=   kvr?   s    rA   test_kvTestCephes.test_kv  r<  rE   c                 2    [         R                  " SS5        g ry   )r=   kver?   s    rA   test_kveTestCephes.test_kve       

1QrE   c                 &   [         R                  n[        U" S5      S5        [        U" S5      [        R                  * 5        [        U" S5      [        R
                  5        [        U" [        R                  5      [        R                  5        g )Nr   r   rP   )r=   log1pr   r`   r   r:  )r@   r\  s     rA   
test_log1pTestCephes.test_log1p  sU    U1Xs#U2Y(U2Y'U266]BFF+rE   c           	      N   [         R                  n[        n[        U" S5      S5        [        U" U" SS5      5      U" [        R
                  * S5      5        [        R                  " 5          [        R                  " SS[        5        [        U" U" S[        R
                  5      5      U" [        R
                  [        R                  S-  5      5        [        U" U" S[        R                  5      5      U" [        R                  [        R                  5      5        [        U" U" [        R
                  * S5      5      U" [        R
                  [        R                  5      5        [        U" U" [        R
                  S5      5      U" [        R
                  S5      5        [        U" U" [        R
                  * [        R
                  5      5      U" [        R
                  S[        R                  -  S	-  5      5        [        U" U" [        R
                  [        R
                  5      5      U" [        R
                  [        R                  S	-  5      5        [        U" U" [        R
                  [        R                  5      5      U" [        R
                  [        R                  5      5        [        U" U" [        R
                  * [        R                  5      5      U" [        R
                  [        R                  5      5        [        U" U" [        R                  [        R
                  5      5      U" [        R
                  [        R                  5      5        [        U" U" [        R                  S5      5      U" [        R                  [        R                  5      5        [        U" U" [        R                  [        R                  5      5      U" [        R                  [        R                  5      5        S S S 5        g ! , (       d  f       g = f)
Nr>  rP   r   ignorez%invalid value encountered in multiplyr[   rM   r   rK   )r=   r\  r?  r   r`   r   warningscatch_warningsfilterwarningsRuntimeWarningr   r   r:  )r@   r\  cs      rA   test_log1p_complexTestCephes.test_log1p_complex
  sT   U6]F+U1R8_am4$$&##A>SE!Arvv,/26625571CDqBFF|,a.?@E!RVVGQ-0!BFFBEE2BCq|,al;E!RVVGRVV"45q2557KLE!BFFBFF"34aa6HIq011RVVRVV3DEq"&&"&&12Abffbff4EFq011RVVRVV3DEq|,a.?@q011RVVRVV3DE '&&s   -N P
P$c                 H    [        [        R                  " SSS5      S5        g )Nr   r[   r   )r   r=   lpmvr?   s    rA   	test_lpmvTestCephes.test_lpmv  r  rE   c                 |    [         R                  " / SQ5      n[        [        R                  " US5      US-  5        g N)r[   rM   r   r   rM   )r`   r   r   r=   	mathieu_ar@   ms     rA   test_mathieu_a_q0TestCephes.test_mathieu_a_q0!  +    HHYV%%a+QT2rE   z	m, q, ref))r      gs66%)r         ?g:$Zb"@)r         ?g5`VU 9@)rt  gq^A3P@c                 D    [         R                  " X5      n[        XCSS9  g Nr   rT   )r=   rn  r   r@   rp  qrefrJ  s        rA   test_mathieu_aTestCephes.test_mathieu_a(       Q"U+rE   c                 |    [         R                  " / SQ5      n[        [        R                  " US5      US-  5        g rm  )r`   r   r   r=   	mathieu_bro  s     rA   test_mathieu_b_q0TestCephes.test_mathieu_b_q03  rs  rE   ))r[   r   g*|2T6)r   r   gkBv/9@)	   rv  ggf@T@)rQ  gY@c                 D    [         R                  " X5      n[        XCSS9  g ry  )r=   r  r   rz  s        rA   test_mathieu_bTestCephes.test_mathieu_b:  r  rE   c           
         [        [        R                  " SSS5      S5        [        R                  S 5       n[        R
                  " SS5      n[        R                  S[        R                  " SSS5      4   n[        [        R                  " US S 2S 4   US S S 24   S	5      S   U" US S 2S 4   US S S 24   S	5      S
SS9  g )Nr[   r   r   r   c                    U[         R                  S-  -  nU S:X  a  SSSU-  [        SU-  5      -  -
  -  $ U S:X  a   [        U5      US-  [        SU-  5      -  -
  $ U S:X  a&  [        SU-  5      U[        S	U-  5      S
-  S-
  -  -
  $ [        X-  5      U[        U S-   U-  5      S	U S-   -  -  [        U S-
  U-  5      S	U S-
  -  -  -
  -  -
  $ )N   r   g;f?r[   r   rM   rt  r   rK      rv  )r`   r   r
   rp  r{  rK  s      rA   	ce_smallq.TestCephes.test_mathieu_cem.<locals>.ce_smallqI  s    sNAAv A1S1X$566a1v!c!A#h..a1Q3x!S1Xb[3%6"777 13x!S!A#q\1ac7%;c1Q3'lAqQRsG>T%T"UUUrE   d   rQ  rh|?+=rU   r_   )	r   r=   mathieu_cemr`   r   r   r   rt   r   )r@   r  rp  r{  s       rA   test_mathieu_cemTestCephes.test_mathieu_cemE  s    V''!A.y9 
	V 
	V IIaEE!R[[b"--.**1QtV9aQiGJ!!AdF)QtAvY>"	,rE   c           
         [        [        R                  " SSS5      S5        [        R                  S 5       n[        R
                  " SS5      n[        R                  S[        R                  " SSS5      4   n[        [        R                  " US S 2S 4   US S S 24   S	5      S   U" US S 2S 4   US S S 24   S	5      S
SS9  g )Nr[   r   r   r   c                 X   U[         R                  S-  -  nU S:X  a   [        U5      US-  [        SU-  5      -  -
  $ U S:X  a#  [        SU-  5      U[        SU-  5      -  S-  -
  $ [        X-  5      U[        U S-   U-  5      SU S-   -  -  [        U S-
  U-  5      SU S-
  -  -  -
  -  -
  $ )Nr  r[   rt  r   rM   rK   r  )r`   r   r	   r  s      rA   	se_smallq.TestCephes.test_mathieu_sem.<locals>.se_smallqb  s    sNAAv1v!c!A#h..a1Q3x!C!H*R-// 13x!S!A#q\1ac7%;c1Q3'lAqQRsG>T%T"UUUrE   r  r  r  rQ  r  r  r  )	r   r=   mathieu_semr`   r   r   r   rt   r   )r@   r  rp  r{  s       rA   test_mathieu_semTestCephes.test_mathieu_sem^  s    V''!A.y9 

	V 

	V IIaEE!R[[b"--.**1QtV9aQiGJ!!AdF)QtAvY>"	,rE   c                 H    [        [        R                  " SSS5      S5        g Nr[   r   rm  )r   r=   mathieu_modcem1r?   s    rA   test_mathieu_modcem1TestCephes.test_mathieu_modcem1t      V++Aa29=rE   c                 B   [         R                  " SSS5        [        R                  " SS5      S S 2S S 4   n[        R                  [        R
                  " SSS5         S S S 2S 4   n[        R                  " SSS5      S S S S 24   n[         R                  " XU* 5      S   n[         R                  " XS5      S   * [         R                  " XS5      S   -  n[         R                  " XU5      S   * SU-  [         R                  " XU5      S   -  -
  n[        XFSS	9  g )
Nr[   r   rK   r[  rM   rQ  rO   r]   rT   )	r=   mathieu_modcem2r`   r   r   rt   linspacer  r   r@   rp  r{  rK  y1fry2s          rA   test_mathieu_modcem2TestCephes.test_mathieu_modcem2w  s   q1% IIaOAd4K(EE"++b!R()$q+6KK1a d1-##A1"-a0$$Q1-a0063I3I!PQ3RST3UU%%aA.q11"V++A!4Q778 	U+rE   c                 H    [        [        R                  " SSS5      S5        g r  )r   r=   mathieu_modsem1r?   s    rA   test_mathieu_modsem1TestCephes.test_mathieu_modsem1  r  rE   c                 >   [         R                  " SSS5        [        R                  " SS5      S S 2S S 4   n[        R                  [        R
                  " SSS5         S S S 2S 4   n[        R                  " SSS5      S S S S 24   n[         R                  " XU* 5      S   n[         R                  " XS5      S   [         R                  " XS5      S   -  n[         R                  " XU5      S   SU-  [         R                  " XU5      S   -  -
  n[        XFSS	9  g )
Nr[   rK   r[  rM   rQ  r   rO   r]   rT   )	r=   mathieu_modsem2r`   r   r   rt   r  r  r   r  s          rA   test_mathieu_modsem2TestCephes.test_mathieu_modsem2  s    q1% IIaOAd4K(EE"++b!R()$q+6KK1a d1-##A1"-a0##A!,Q/&2H2Hq2QRS2TT$$Q1-a0"V++A!4Q778U+rE   c                    [        [        R                  " SSS5      [        R                  [        R                  45        [        [        R
                  " SSS5      [        R                  [        R                  45        [        [        R                  " SSS5      [        R                  [        R                  45        [        [        R
                  " SSS5      [        R                  [        R                  45        [        [        R                  " SSS5      [        R                  [        R                  45        [        [        R                  " SSS5      [        R                  [        R                  45        [        [        R                  " SSS5      [        R                  [        R                  45        [        [        R                  " SSS5      [        R                  [        R                  45        g )N'  r   g?ru  )
r   r=   r  r`   r:  r  r  r  r  r  r?   s    rA   test_mathieu_overflow 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OrE   c                     [        S5       H7  n[        R                  " SSS5      n[        US   SSS9  [        US	   S
SS9  M9     g )N<   rM   r  rP   r   g.dS?r]   rT   r[   gGc?-C6?)r{   r=   r  r   )r@   rj   vs      rA   test_mathieu_ticket_1847#TestCephes.test_mathieu_ticket_1847  sH     rA&&q#r2AAaD":GAaD":F	 rE   c                 0    [         R                  " S5        g r<   )r=   modfresnelmr?   s    rA   test_modfresnelmTestCephes.test_modfresnelm      1rE   c                 0    [         R                  " S5        g r<   )r=   modfresnelpr?   s    rA   test_modfresnelpTestCephes.test_modfresnelp  r  rE   c                 F    [        [        R                  " SS5      S5        g r   )r   r=   	modstruver?   s    rA   test_modstruveTestCephes.test_modstruve  r  rE   c                 H    [        [        R                  " SSS5      S5        g r  )r   r=   nbdtrr?   s    rA   
test_nbdtrTestCephes.test_nbdtr  r  rE   c                 H    [        [        R                  " SSS5      S5        g r   )r   r=   nbdtrcr?   s    rA   test_nbdtrcTestCephes.test_nbdtrc  r   rE   c                 H    [        [        R                  " SSS5      S5        g r  )r   r=   nbdtrir?   s    rA   test_nbdtriTestCephes.test_nbdtri  r   rE   c                 4    [         R                  " SSS5        g )Nr[   rN   r   )r=   nbdtrikr?   s    rA   test_nbdtrikTestCephes.test_nbdtrik  s    qBrE   c                 H    [        [        R                  " SSS5      S5        g r   )r   r=   nbdtrinr?   s    rA   test_nbdtrinTestCephes.test_nbdtrin  s    V^^Aa*3/rE   c                 J    [        [        R                  " SSSS5      S5        g r   )r   r=   ncfdtrr?   s    rA   test_ncfdtrTestCephes.test_ncfdtr  r  rE   c                     [        [        R                  " SSSS5      S5        / SQn[        R                  " SSSU5      n[	        [        R                  " SSSU5      U5        g )Nr[   r   r   )r   r[   ru  rM   r   ru  )r   r=   ncfdtrir  r   )r@   fr[  s      rA   test_ncfdtriTestCephes.test_ncfdtri  sM    V^^Aq!Q/5MM!QQ'q!S!4a8rE   zpncfdtr uses a Boost math implementation but ncfdtridfdinverts the less accurate cdflib implementation of ncfdtr.c                     / SQn[         R                  " SUSS5      n[        [         R                  " SUSS5      U5        g )Nr[   rM   r   rM   rv  r   )r=   r  r   
ncfdtridfd)r@   r`  r[  s      rA   test_ncfdtridfdTestCephes.test_ncfdtridfd  s8     MM!S$+))!Qb93?rE   zpncfdtr uses a Boost math implementation but ncfdtridfninverts the less accurate cdflib implementation of ncfdtr.c                     / SQn[         R                  " USSS5      n[        [         R                  " USSS5      USS9  g )N)rE  r[   rM   r   g     @rM   rv  r   gh㈵>rT   )r=   r  r   
ncfdtridfn)r@   ra  r[  s      rA   test_ncfdtridfnTestCephes.test_ncfdtridfn  s:     "MM#q$+))!Qb93TJrE   zoncfdtr uses a Boost math implementation but ncfdtrincinverts the less accurate cdflib implementation of ncfdtr.c                     / SQn[         R                  " SSUS5      n[        [         R                  " SSUS5      U5        g )N)r   ru         @rM   r   r   )r=   r  r   	ncfdtrinc)r@   ncr[  s      rA   test_ncfdtrincTestCephes.test_ncfdtrinc  s8     MM!QB'((Aq"5r:rE   c           	      d   [        [        R                  " SSS5      S5        [        [        R                  " SSS5      S5        [        [        R                  " [        R
                  SS5      SS	SS
9  [        [        R                  " [        R                  " S[        R
                  S5      5      5        [        [        R                  " SS[        R
                  5      SSSS
9  [        [        R                  " [        R                  " [        R                  SS5      5      5        [        [        R                  " [        R                  " S[        R                  S5      5      5        [        [        R                  " [        R                  " SS[        R                  5      5      5        g )Nr[   r   r   r  i   r   r   r   r  r^   r        $@r   )	r   r=   nctdtrr   r`   r   r   r   r:  r?   s    rA   test_nctdtrTestCephes.test_nctdtr  s    V]]1Qq)#.V]]1eR0#6bffb"5sANr2663789b"bff5r1Mrvvr2678r2662678r2rvv678rE   c                 4    [         R                  " SSS5        g )Nr[   r   r   )r=   	nctdtridfr?   s    rA   test_nctdtridfTestCephes.test_nctdtridf  s    3q!rE   c                 4    [         R                  " SSS5        g r  )r=   	nctdtrincr?   s    rA   test_nctdtrincTestCephes.test_nctdtrinc  s    1QrE   c                 4    [         R                  " SSS5        g )NrE  r   r   )r=   nctdtritr?   s    rA   test_nctdtritTestCephes.test_nctdtrit   s    3r"rE   c                 H    [        [        R                  " SSS5      SSSS9  g )Nr   r[   r   r   r   r^   )r   r=   nrdtrimnr?   s    rA   test_nrdtrimnTestCephes.test_nrdtrimn  s    Q2CdKrE   c                 H    [        [        R                  " SSS5      SSSS9  g )Nr   r   r   r^   )r   r=   nrdtrisdr?   s    rA   test_nrdtrisdTestCephes.test_nrdtrisd  s     C4ca	)rE   c                 6    [         R                  " SSSS5        g r  )r=   obl_ang1r?   s    rA   test_obl_ang1TestCephes.test_obl_ang1
      !Aa rE   c                 t    [         R                  " SSSSS5      n[        US   SSSS9  [        US   SSSS9  g )Nr[   r   r   r   r^   r   )r=   obl_ang1_cvr   )r@   results     rA   test_obl_ang1_cvTestCephes.test_obl_ang1_cv  s>    ##Aa!A.q	3V!<q	3V!<rE   c                 H    [        [        R                  " SSS5      S5        g Nr[   r   r  )r   r=   obl_cvr?   s    rA   test_obl_cvTestCephes.test_obl_cv  r   rE   c                 6    [         R                  " SSSS5        g r  )r=   obl_rad1r?   s    rA   test_obl_rad1TestCephes.test_obl_rad1  r  rE   c                 8    [         R                  " SSSSS5        g r  )r=   obl_rad1_cvr?   s    rA   test_obl_rad1_cvTestCephes.test_obl_rad1_cv      1Qq1%rE   c                 6    [         R                  " SSSS5        g r  )r=   obl_rad2r?   s    rA   test_obl_rad2TestCephes.test_obl_rad2  r  rE   c                 8    [         R                  " SSSSS5        g r  )r=   obl_rad2_cvr?   s    rA   test_obl_rad2_cvTestCephes.test_obl_rad2_cv  r,  rE   c                 F    [        [        R                  " SS5      S5        g )Nr[   r   r  )r   r=   pbdvr?   s    rA   	test_pbdvTestCephes.test_pbdv!  s    V[[1%i0rE   c                 2    [         R                  " SS5        g r  )r=   pbvvr?   s    rA   	test_pbvvTestCephes.test_pbvv$      AarE   c                 2    [         R                  " SS5        g r  )r=   pbwar?   s    rA   	test_pbwaTestCephes.test_pbwa'  r=  rE   c                     [         R                  " SS5      n[        U[        R                  " S5      SSS9  [         R                  " / SQS5      n[        U/ SQ5        g )Nr   r[   rP   r   r^   r   r[   rM   )r[   r[   r[   )r=   pdtrr   r`   r   r   r@   vals     rA   	test_pdtrTestCephes.test_pdtr*  sB    kk!QRVVBZf1=kk)Q'3	*rE   c                     [         R                  " SS5      n[        US[        R                  " S5      -
  SSS9  [         R                  " / SQS5      n[        U/ SQ5        g )	Nr   r[   rP   r   r^   rC  r   )r   r   r   )r=   pdtrcr   r`   r   r   rE  s     rA   
test_pdtrcTestCephes.test_pdtrc1  sF    ll1a Q^&qAll9c*3	*rE   c                     [         R                  " 5          Sn[         R                  " SU[        5        [        R
                  " SS5        S S S 5        g ! , (       d  f       g = f)N-floating point number truncated to an integerr`  r   )ra  rb  rc  rd  r=   pdtrir@   msgs     rA   
test_pdtriTestCephes.test_pdtri8  s?    $$&AC##Hc>BLLS! '&&s   6A
A#c                 6    [         R                  " SSSS5        g r  )r=   pro_ang1r?   s    rA   test_pro_ang1TestCephes.test_pro_ang1?  r  rE   c           	      ^    [        [        R                  " SSSSS5      [        S5      SSS9  g )Nr[   r   r  r   r^   )r   r=   pro_ang1_cvr   r?   s    rA   test_pro_ang1_cvTestCephes.test_pro_ang1_cvB  s+    **1aAq95;L#!	-rE   c                 H    [        [        R                  " SSS5      S5        g r   )r   r=   pro_cvr?   s    rA   test_pro_cvTestCephes.test_pro_cvF  r   rE   c                 6    [         R                  " SSSS5        g r  )r=   pro_rad1r?   s    rA   test_pro_rad1TestCephes.test_pro_rad1I  s    !Ac"rE   c                 8    [         R                  " SSSSS5        g r  )r=   pro_rad1_cvr?   s    rA   test_pro_rad1_cvTestCephes.test_pro_rad1_cvL  r,  rE   c                 6    [         R                  " SSSS5        g r  )r=   pro_rad2r?   s    rA   test_pro_rad2TestCephes.test_pro_rad2O  r  rE   c                 8    [         R                  " SSSSS5        g r  )r=   pro_rad2_cvr?   s    rA   test_pro_rad2_cvTestCephes.test_pro_rad2_cvR  r,  rE   c                 0    [         R                  " S5        g ry   )r=   psir?   s    rA   test_psiTestCephes.test_psiU  r  rE   c                 H    [        [        R                  " SSS5      S5        g r<   )r   r=   radianr?   s    rA   test_radianTestCephes.test_radianX  s    V]]1Qq)!,rE   c                 D    [        [        R                  " S5      S5        g r  )r   r=   rgammar?   s    rA   test_rgammaTestCephes.test_rgamma[  r  rE   c                    [        [        R                  " S5      S5        [        [        R                  " S5      S5        [        [        R                  " S5      S5        [        [        R                  " S5      S5        [        [        R                  " S	5      S5        [        [        R                  " S
5      S5        g )N333333@      @333333      g@r4  gg            @r  )r   r=   roundr?   s    rA   
test_roundTestCephes.test_round^  st    V\\#&s+V\\$'-V\\#&s+V\\$'-V\\#&s+V\\$'-rE   c                 0    [         R                  " S5        g ry   )r=   shichir?   s    rA   test_shichiTestCephes.test_shichif  r  rE   c                    [         R                  " S5        [         R                  " [        R                  5      u  p[	        U[        R
                  S-  SSS9  [	        USSSS9  [         R                  " [        R                  * 5      u  p[	        U[        R
                  * S-  SSS9  [        [        R                  " U5      S5        g )Nr[   r   r   r   r^   z cosine integral(-inf) is not nan)r=   sicir`   r   r   r   r   r   )r@   sre  s      rA   	test_siciTestCephes.test_sicii  s    A{{266"2553;V!<162{{BFF7#BEE6C<f1=?@rE   c                 D    [        [        R                  " S5      S5        g NZ   r   )r   r=   sindgr?   s    rA   
test_sindgTestCephes.test_sindgt      V\\"%c*rE   c                     [        [        R                  " SS5      S5        [        [        R
                  " [        R                  " S[        R                  5      5      5        g )Nr[   rE  ?)r   r=   smirnovr   r`   r   r:  r?   s    rA   test_smirnovTestCephes.test_smirnovw  s7    V^^Ab)#."&&123rE   c                 N   [        [        R                  " SS5      S5        [        [        R                  " SS5      S5        [        [        R                  " SS5      S5        [        [        R
                  " [        R                  " S[        R                  5      5      5        g )	Nr[   rE  rP   rM         ?      r   g      ȿ)r   r=   	_smirnovpr   r`   r   r:  r?   s    rA   test_smirnovpTestCephes.test_smirnovp{  sk    V%%a,b1V%%a.0@AV%%a.0@A))!RVV456rE   c                 
   [        [        R                  " SS5      S5        [        [        R
                  " [        R                  " S[        R                  5      5      5        [        R                  " SSSSS9n[        [        R                  " SU5      S[        R                  " SU5      -
  SSS	9  [        R                  " SSS
SS9n[        [        R                  " SU5      S[        R                  " SU5      -
  SSS	9  g )Nr[   rE  r   rG  Tendpointr   r   r^   r   rK   )
r   r=   	_smirnovcr   r`   r   r:  r  r   r  )r@   x10x4s      rA   test_smirnovcTestCephes.test_smirnovc  s    V%%a+C0))!BFF345kk!QT2((C0!fnnQ6L2L#!	-[[Aq40((B/V^^Ar5J1J#!	-rE   c           	      `   [        [        R                  " S[        R                  " SS5      5      SSSS9  [        [        R                  " S[        R                  " SS5      5      SSSS9  [	        [
        R                  " [        R                  " S[
        R                  5      5      5        g Nr[   rN   r   r   r^   333333?)r   r=   r  smirnovir   r`   r   r:  r?   s    rA   test_smirnoviTestCephes.test_smirnovi  sp    q&//!S*ABC#!	-q&//!S*ABC#!	-266234rE   c           	      `   [        [        R                  " S[        R                  " SS5      5      SSSS9  [        [        R                  " S[        R                  " SS5      5      SSSS9  [	        [
        R                  " [        R                  " S[
        R                  5      5      5        g r  )r   r=   r  
_smirnovcir   r`   r   r:  r?   s    rA   test_smirnovciTestCephes.test_smirnovci  sz    ((F,=,=a,EF#!	-((F,=,=a,EF#!	-**1RVV456rE   c                 D    [        [        R                  " S5      S5        g r   )r   r=   spencer?   s    rA   test_spenceTestCephes.test_spence  r  rE   c                     [        [        R                  " SS5      S5        [        [        R                  " SS5      SSSS9  [        [        R                  " SS5      SSSS9  g )	Nr[   r   r   r  r   r^   rM   gMoF?)r   r=   stdtrr   r?   s    rA   
test_stdtrTestCephes.test_stdtr  sI    V\\!A&s+Q*DvAFQ*NaPrE   c                 2    [         R                  " SS5        g )Nffffff?r[   )r=   stdtridfr?   s    rA   test_stdtridfTestCephes.test_stdtridf  s    ArE   c                 2    [         R                  " SS5        g )Nr[   r  )r=   stdtritr?   s    rA   test_stdtritTestCephes.test_stdtrit  s    qrE   c                 F    [        [        R                  " SS5      S5        g r   )r   r=   struver?   s    rA   test_struveTestCephes.test_struve  r   rE   c                 D    [        [        R                  " S5      S5        g )Nr   r   )r   r=   tandgr?   s    rA   
test_tandgTestCephes.test_tandg  r  rE   c                 F    [        [        R                  " SS5      SSSS9  g )Nr[   r   r   r   r^   )r   r=   tklmbdar?   s    rA   test_tklmbdaTestCephes.test_tklmbda  s    q!,cQGrE   c                 0    [         R                  " S5        g ry   )r=   y0r?   s    rA   test_y0TestCephes.test_y0  r  rE   c                 0    [         R                  " S5        g ry   )r=   r  r?   s    rA   test_y1TestCephes.test_y1  r  rE   c                 2    [         R                  " SS5        g ry   )r=   ynr?   s    rA   test_ynTestCephes.test_yn  r<  rE   c                 2    [         R                  " SS5        g ry   )r=   yvr?   s    rA   test_yvTestCephes.test_yv  r<  rE   c                 2    [         R                  " SS5        g ry   )r=   yver?   s    rA   test_yveTestCephes.test_yve  rY  rE   c                    [        SS5      [        SS5      [        SS5      [        SS5      [        SS	5      [        SS
5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      /n[        SS5      [        SS 5      [        S!S"5      [        S#S$5      [        S%S&5      [        S'S(5      [        S)S*5      [        S+S,5      [        S-S.5      [        S/S5      [        S0S15      [        S2S35      [        S4S55      [        S6S75      [        S8S95      [        S:S:5      /n[        [        R                  X!S;S<9  g )=Ng@g+п皙ٿr~  r  r  r   r   g      "g      "@g4׵/Yg8EGr?r  gffffff@ig>@r   g|Pk?rG  r[   ir[  r  i   ig     j@  ļBg0"bgpتO#M?gMF>?g5-g`?g	S+?g6U?gǗʿgjD{?/,Gg` 0Gg!^?gnF5o{gI\Y?g7f8goC9	?gyhgEbr?g{g.
?ga~gT-s?gɤ,P&?g|bgޗY3g!ؑ-@gi$bghgy(V@^gһ>g>gx\h<rS   rT   )r?  r3   r=   wofz)r@   rK  ws      rA   	test_wofz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%8rE    N)__name__
__module____qualname____firstlineno__rB   rH   rn   ru   r   r   r   r   r   r   r   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  r;  r@  pytestmarkxfailrN  rS  rW  r\  rb  re  ri  ro  ru  ry  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r&  r*  r.  r2  r6  r:  r?  rC  rG  rK  rO  rS  rW  r]  rf  rj  rq  parametrizer}  r  r  r  r  r  r  r  r  r  r  r  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  r7  r;  r@  rG  rK  rR  rV  rZ  r^  rb  rf  rj  rn  rr  rv  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  __static_attributes__r  rE   rA   r9   r9   ;   s}   2.2*.G,/00/()()3@,--1**DAR2N
+0)0):*C)3N& [[MNF OF($$@Y
412+3=-2./1'('(111.)*''))*)20/.4,F(-3 [[	.,,3 [[	,,,,2,,>, >,	PG0.// 019 [[I  @@
 [[I  KK
 [[I  ;;

9" #L)!=
/!&!&1++"!-/#&!&-+.	A+47-57+Q
-+H*9rE   r9   c                       \ rS rSrS rS rS rS r\R                  R                  S5      S 5       r\R                  R                  S5      S 5       rS	rg
)TestAiryr   c                    [         R                  " S5      n[        U[        / SQ5      SSS9  [         R                  " S5      n[        U[        / SQ5      SSS9  [         R                  " S5      n[        U[        / S	Q5      SSS9  g )
NGz?)g*?gTk'kPĿge+?gyCyt?+i)+P>r   r^   g=
ףp=?)g'$'?geοgL?g
HVV?g
ףp=
׿)gl@D|?gV~׭ͿgU?g3{ɔ?)r   r>   r   r   r(  s     rA   rB   TestAiry.test_airy  ss     LL5!RS#!	-LL5!QR#!	-LL5!OP#!	-rE   c                 f   [         R                  " S5      n[         R                  " S5      nS /S-  n[        S5       H!  nX$   [	        S[        S5      -  5      -  X4'   M#     [        SS5       H4  nX$   [	        [        [        S[        S5      -  5      5      * 5      -  X4'   M6     [        XSSS9  g )N{Gz?rK   rM   gN贁N{?Tqs*>r   r^   )	r   rG   r>   r{   r   r   absr   r   )r@   abb1ri   s        rA   rH   TestAiry.test_airye  s    MM$LLVAXqAD\$t*455BE qADc$|DJ'>"?@@AABE F3rE   c                    [         R                  " S5      n[        SS/5      [        SS/5      [        SS/5      [        SS	/5      4n[        XS
SS9  [         R                  " S5      n[        US   [        / SQ5      SSS9  [        US   [        / SQ5      SSS9  [        US   [        / SQ5      SSS9  [        US   [        / SQ5      SSS9  g )NrM   glgoe2+
g(0[g X*JgUfݿg˰zU`?g4c1=C?gCuTa2U0*#?r   r^   r   )g&g(.2+
gRg}`g%́p~=r[   )g7;1[ge*JgVwgL g<3La㧝=)gNݿg3%IQ`?gZyΌ׿gʀ11^?g33tտr   )gqM0=C?g7uTg\G`?gp⍞vg$.m?)r   bi_zerosr   r   )r@   bibias      rA   test_bi_zerosTestAiry.test_bi_zeros  s    a k:./k;/0k:./j+./1 	f15a 1u &:  ;
 %1	. 	1u &:  ;
 %1	. 	1u &:  ;
 %1	. 	1u &9  :
 %1	.rE   c           	          [         R                  " S5      n[        U[        S/5      [        S/5      [        S/5      [        S/5      4SSS9  g )	Nr[   gcqg!xLgMSt$?g ~:p?r  r   r^   )r   ai_zerosr   r   )r@   ais     rA   test_ai_zerosTestAiry.test_ai_zeros)  sM    a UK=1"K=1"F8_"F8_. $!		-rE   r   c                 |   [         R                  " S5      u  pp4[         R                  " U5      u  pV  n[         R                  " U5      u  p  nS[        U5      S-  -  n
[        U5      S-  n[	        X8SS9  [	        XFSS9  [	        XZ-  SSSS9  [	        X-  SSSS9  [	        US S / S	QSS9  [	        US S / S
QSS9  g )Nr_  r[   rv  r]   rT   r   r^   rQ   )guqgqHkZg4g9Ζ%gB~gL")gLgQO	gMQnGg3:g)}g )r   r  r>   r  r   )r@   rK  zpai_zpxaip_zxai_zaip_z_ai_zpaip_zpai_envelopeaip_envelopes               rA   test_ai_zeros_bigTestAiry.test_ai_zeros_big1  s     ' 0 0 7v#LLOQ%ll2.q!A&2w 	E2E2 	(!%a@+QUC 	"1:@E	G 	2A:@E	GrE   c                 |   [         R                  " S5      u  pp4[         R                  " U5      u    pVn[         R                  " U5      u    pXn	S[        U5      S-  -  n
[        U5      S-  n[	        X8SS9  [	        XGSS9  [	        Xj-  SSSS9  [	        X-  SSSS9  [	        US S / S	QSS9  [	        US S / S
QSS9  g )Nr_  r[   rv  r]   rT   r   r^   rQ   )gx&gg-2+
gRgg`gu%́g{ )g K;1[g*JgVwg<w gd
3g/{
")r   r  r>   r  r   )r@   rK  r  bi_zpxbip_zxr  bi_zbip_zbi_zpbip_zpbi_envelopebip_envelopes               rA   test_bi_zeros_bigTestAiry.test_bi_zeros_bigJ  s     ' 0 0 7v#LLO1E%ll2.1VA&2w 	E2E2 	(!%a@+QUC 	"1:@E	G 	2A:@E	GrE   r  N)r  r  r  r  rB   rH   r	  r  r  r  	fail_slowr  r&  r  r  rE   rA   r  r    sa    -4#.J- [[1G G0 [[1G GrE   r  c                       \ rS rSrS rSrg)TestAssocLaguerreid  c                     [         R                  " SS5      n[         R                  " SSS5      n[        X!" S5      SSS9  [         R                  " SSS5      n[        X!" S5      SSS9  g )NrG  r[   r   r  r   r^   )r   genlaguerreassoc_laguerrer   )r@   a1a2s      rA   test_assoc_laguerre%TestAssocLaguerre.test_assoc_laguerree  s`      A&##Br!,BrFa8##Ab+BqEQ7rE   r  N)r  r  r  r  r0  r  r  rE   rA   r*  r*  d  s    8rE   r*  c                       \ rS rSrS rSrg)TestBesselpolyim  c                     g Nr  r?   s    rA   r   TestBesselpoly.test_besselpolyn      rE   r  N)r  r  r  r  r   r  r  rE   rA   r3  r3  m  s    rE   r3  c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rSrg)
TestKelvinir  c                 H    [         R                  " S5      n[        USSSS9  g )NrM   gT?iUMu>r   r^   )r   r   r   )r@   mbeis     rA   r   TestKelvin.test_beis  s    {{1~0vAFrE   c                 H    [         R                  " S5      n[        USSSS9  g )NrM   gD,X?r;  r   r^   )r   r   r   )r@   mbeips     rA   r   TestKelvin.test_beipx  s    Q2aHrE   c                 H    [         R                  " S5      n[        USSSS9  g )NrM   gPA4?r;  r   r^   )r   r   r   )r@   mbers     rA   r   TestKelvin.test_ber}  s    {{1~1QGrE   c                 H    [         R                  " S5      n[        USSSS9  g )NrM   gii߿r;  r   r^   )r   r   r   )r@   mberps     rA   r   TestKelvin.test_berp  s    Q3&qIrE   c                 ^    [         R                  " S5      n[        U[        / SQ5      SSS9  g )Nr   g&jj@g+"@g(rw+@gU2@g`<6@r  r   r^   )r   	bei_zerosr   r   )r@   r  s     rA   test_bei_zerosTestKelvin.test_bei_zeros  s/    q!E #- .
 $!	-rE   c                 ^    [         R                  " S5      n[        U[        / SQ5      SSS9  g )Nr   )gyWo.@g╲ݏ @gנ{)@gK11@gWc"5@r  r   r^   )r   
beip_zerosr   r   )r@   bips     rA   test_beip_zerosTestKelvin.test_beip_zeros  s/      #U $8 9
 $!	-rE   c                 ^    [         R                  " S5      n[        U[        / SQ5      SSS9  g )Nr   g\@g6ُ@gӟHY'@g>"D0@ggaO;4@r  r   r^   )r   	ber_zerosr   r   )r@   r   s     rA   test_ber_zerosTestKelvin.test_ber_zeros  /    "U $. /
 $!	-rE   c                 ^    [         R                  " S5      n[        U[        / SQ5      SSS9  g )Nr   g '@gs%@gF ^-@gvۅj3@gB7@r  r   r^   )r   
berp_zerosr   r   )r@   brps     rA   test_berp_zerosTestKelvin.test_berp_zeros  s/      #U $. /
 $!	-rE   c           
         [         R                  " S5      n[        U[         R                  " S5      [         R                  " S5      S-  -   [         R
                  " S5      [         R                  " S5      S-  -   [         R                  " S5      [         R                  " S5      S-  -   [         R                  " S5      [         R                  " S5      S-  -   4SSS9  g )NrM   rH  r  r   r^   )r   r5  r   r   r   r-  r%  r   r   r1  r)  )r@   mkelvs     rA   r6  TestKelvin.test_kelvin  s    q!AQ1B B 'AQ1B B 'Q',,q/"2D D 'Q',,q/"2D D F $!		-rE   c                 H    [         R                  " S5      n[        USSSS9  g )NrM   g>ɿr;  r   r^   )r   r%  r   )r@   mkeis     rA   r&  TestKelvin.test_kei  s    {{1~2aHrE   c                 H    [         R                  " S5      n[        USSSS9  g )NrM   gr@d"?r;  r   r^   )r   r)  r   )r@   mkeips     rA   r*  TestKelvin.test_keip  s    Q2aHrE   c                 H    [         R                  " S5      n[        USSSS9  g )NrM   gܙUr;  r   r^   )r   r-  r   )r@   mkers     rA   r.  TestKelvin.test_ker  s    {{1~3&qIrE   c                 H    [         R                  " S5      n[        USSSS9  g )NrM   g^.n3Jr;  r   r^   )r   r1  r   )r@   mkerps     rA   r2  TestKelvin.test_kerp  s    Q3&qIrE   c                 ^    [         R                  " S5      n[        U[        / SQ5      SSS9  g )Nr   gE>Q@gB= @gPN)@gm91@g
%5@r  r   r^   )r   	kei_zerosr   r   )r@   r%  s     rA   test_kei_zerosTestKelvin.test_kei_zeros  rV  rE   c                 ^    [         R                  " S5      n[        U[        / SQ5      SSS9  g )Nr   gWf,@g?"@gFZ*o+@gOpN2@gEa6@r  r   r^   )r   
keip_zerosr   r   )r@   r)  s     rA   test_keip_zerosTestKelvin.test_keip_zeros  /    !!!$e %/ 0
 $!	-rE   c                    [         R                  " S5      nUu  p#pEpgp[        U[        / SQ5      SSS9  [        U[        / SQ5      SSS9  [        U[        / SQ5      SSS9  [        U[        / SQ5      SSS9  [        U[        / S	Q5      SSS9  [        U[        / S
Q5      SSS9  [        U[        / SQ5      SSS9  [        U	[        / SQ5      SSS9  g )Nr   rR  r  r   r^   rH  )#?Q5U@q89 %@ol`.@gO0q3@rm  rX  )gum.@gݏ @gs{)@g䠄11@gN(D!5@gS@g89@@g^C'@g1ZG0@g+ڇ4@rr  )r   kelvin_zerosr   r   )
r@   tmpberzbeizkerzkeizberpzbeipzkerpzkeipzs
             rA   test_kelvin_zerosTestKelvin.test_kelvin_zeros  s   ""1%=@:Dee %/ 0
 $!	- 	e %/ 0
 $!	- 	e %/ 0
 $!	- 	e %/ 0
 $!	- 	u &0  1
 $!	- 	u &0  1 $!	- 	u &0  1
 $!	- 	u &0  1
 $!	-rE   c                 ^    [         R                  " S5      n[        U[        / SQ5      SSS9  g )Nr   )rx  ry  rz  r{  gD;q3@r  r   r^   )r   	ker_zerosr   r   )r@   r-  s     rA   test_ker_zerosTestKelvin.test_ker_zeros  rV  rE   c                 ^    [         R                  " S5      n[        U[        / SQ5      SSS9  g )Nr   r|  r  r   r^   )r   
kerp_zerosr   r   )r@   r1  s     rA   test_kerp_zerosTestKelvin.test_kerp_zeros  rv  rE   r  N)r  r  r  r  r   r   r   r   rJ  rO  rT  r[  r6  r&  r*  r.  r2  ro  rt  r  r  r  r  r  rE   rA   r9  r9  r  se    G
I
H
J
-----IIJJ--4-l--rE   r9  c                       \ rS rSrS rSrg)TestBernoullii   c                 ^    [         R                  " S5      n[        U[        / SQ5      SSS9  g )Nr   )r   r  g-!lV?r   g镲r   r  r   r^   )r   	bernoullir   r   )r@   brns     rA   test_bernoulliTestBernoulli.test_bernoulli!  s/    "U $, - $!	-rE   r  N)r  r  r  r  r  r  r  rE   rA   r  r     s    -rE   r  c                   *    \ rS rSrSrS rS rS rSrg)TestBetai,  z
Test beta and betaln.
c                    [        [        R                  " SS5      S5        [        [        R                  " SS5      [        R                  " S5      5        [        [        R                  " SS5      SSS	S
9  [        R                  " SS5      n[        R                  " S5      [        R                  " S5      -  [        R                  " S5      -  n[        XSS9  g )Nr[   r   33333YN~h?   g6.8@rS   r   r  rM   rK   rQ   rT   )r   r   betar   rt  )r@   betbetgs      rA   	test_betaTestBeta.test_beta1  s    W\\!Q'-VV4gmmF6KLVS13E"	, ll1a a q!117==3CC.rE   c                 l    [        [        R                  " [        R                  " SS5      5      5        g )NrP   rM   )r   r`   isinfr   r  r?   s    rA   test_beta_infTestBeta.test_beta_inf;  s    b!,-.rE   c                    [        [        R                  " SS5      S5        [        [        R                  " SS5      [        R                  " S5      5        [        [        R                  " SS5      SSS	S
9  [        R                  " SS5      n[        [        [        R                  " SS5      5      5      n[        XSS9  g )Nr[   r   r  r  r     gIs	@r  r   r  rM   rK   rS   rT   )r   r   betalnr   r|  r   r  r  )r@   betlnr  s      rA   test_betalnTestBeta.test_betaln>  s    W^^Aq)3/vv6/	1vs35G"	, q!$#gll1a()*/rE   r  N)	r  r  r  r  __doc__r  r  r  r  r  rE   rA   r  r  ,  s    //	0rE   r  c                   	   \ rS rSrSrS r\R                  R                  S/ SQ5      S 5       r	\R                  R                  S/ SQ5      S 5       r
\R                  R                  S	/ S
Q5      S 5       r\R                  R                  S\R                  \R                  \R                  \R                   \R"                  \R$                  /5      \R                  R                  S/ SQ5      S 5       5       r\R                  R                  SS\R*                  4S\R*                  4S\R*                  4\R,                  \R,                  S4\R*                  4\R,                  \R,                  S4\R*                  4\R,                  \R,                  S4\R*                  4SSSSSSS\R,                  S4S4S\R,                  S4S4S\R,                  S4S4\R,                  SS4S4\R,                  SS4S4\R,                  SS4S4S\R,                  S4S4S\R,                  S4S4S\R,                  S4S4\R,                  SS4S4\R,                  SS4S4\R,                  SS4S4/5      S 5       r\R                  R                  SS\R*                  4S\R*                  4S\R*                  4\R,                  \R,                  S4\R*                  4\R,                  \R,                  S4\R*                  4\R,                  \R,                  S4\R*                  4SSS S!S"S#S\R,                  S4S4S\R,                  S4S4S\R,                  S4S4\R,                  SS4S4\R,                  SS4S4\R,                  SS4S4S\R,                  S4S4S\R,                  S4S4S\R,                  S4S4\R,                  SS4S4\R,                  SS4S4\R,                  SS4S4/5      S$ 5       r\R                  R                  S%\R2                  \R4                  /5      S& 5       r\R                  R                  S'\R2                  S(4\R4                  S)4/5      \R                  R                  S*S+S,/5      S- 5       5       rS.rg/)0TestBetaInciJ  z7
Tests for betainc, betaincinv, betaincc, betainccinv.
c                 P   [         R                  " / SQ5      n[        [        R                  " SSU5      U5        [        [        R
                  " SSU5      U5        [        [        R                  " SSU5      SU-
  5        [        [        R                  " SSU5      SU-
  5        g )N)r   rv  r[   r[   )r`   r   r   r   betainc
betaincinvbetainccbetainccinvr(  s     rA   
test_a1_b1TestBetaInc.test_a1_b1O  sz    HH\"W__Q1-q1W''1a0!4W%%aA.A6W((Aq11q59rE   z
a, b, x, p))rM   rK   g@w?r   )r  g     `e@r]   g*?)r  r  g"Yx;rv  )g   `1?g    ئAg\aY4g    ?)rK   i g-߇)?g;?c                    [         R                  " XU5      n[        XTSS9  [         R                  " XU5      n[        XcSS9  [         R                  " XBU5      n[        XqSS9  [         R
                  " XU5      n[        XSS9  g )Nr   rT   g-a=rS   )r   r  r   r  btdtriabtdtrib)	r@   r  r  r  r[  p1x1r.  r   s	            rA   test_betainc_and_inverses%TestBetaInc.test_betainc_and_inversesf  sn     __Q1%E*a(E*__Q1%E*__Q1%E*rE   ))      @r~  rv  g     ?)      @g     *@g      ?g&?)      ?r  g333333?gFoE?)r        2@r   gg2$Z?)r  r  gZd;?g6)r  rs  r  g`<)      0@r  g?g<dEA>)g?g7Ê@g/3J?Hz>c                     [         R                  " XU5      n[        XTSS9  [         R                  " XU5      n[        XcSS9  g )N+<rT   gV瞯=)r   r  r   r  )r@   r  r  r  r[  r  r  s          rA   test_betaincc_betainccinv%TestBetaInc.test_betaincc_betainccinv  s<     aA&E*  q)E*rE   za, b, y, ref))cj,@r  ghHISOa gڭ Y;)g      ,@g      -@g둤g}c]춫;)r  g      .@gUv \U,gS^%:)r  g      ?gMoigKB;)r4  g    i@g1$-g\_cp:c                 F    [         R                  " XU5      n[        XTSS9  g )Nr  rT   )r   r  r   )r@   r  r  rJ  r|  r  s         rA   test_betaincinv_tiny_y"TestBetaInc.test_betaincinv_tiny_y  s     2 qQ'U+rE   funcargs))r   rM   r   )ru         r   )ru  r  333333ӿ)ru  r  皙?c                     [         R                  " SS9   [        R                  " [         R                  SS9   U" U6   S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nraise)domainr  match)r   errstater  r   SpecialFunctionError)r@   r  r  s      rA   test_betainc_domain_errors&TestBetaInc.test_betainc_domain_errors  sK     W-w;;8Ld M .-LL .-s!   $A!AA!
A	A!!
A/zargs,expected)r   r   r   )r   r   r   )r   r   r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   c                 @    [         R                  " U6 n[        X25        g r5  )r   r  r   r@   r  rL  observeds       rA   test_betainc_edge_cases#TestBetaInc.test_betainc_edge_cases  s    < ??D)X(rE   )r  r   )r  r   )r  r   )r  r   )r  r   )r  r   c                 @    [         R                  " U6 n[        X25        g r5  )r   r  r   r  s       rA   test_betaincc_edge_cases$TestBetaInc.test_betaincc_edge_cases  s    < ##T*X(rE   dtypec                     [         R                  " S/US9n[         R                  " S/US9n[        R                  " X"U5      n[	        XCS[         R
                  " U5      R                  -  S9  g )Nr   r  r   rQ  rT   )r`   r   r   r  r   r   eps)r@   r  r  r  r  s        rA   test_gh21426TestBetaInc.test_gh21426  sW     HHbT'HHcU%(##A!,RXXe_-@-@(@ArE   zdtype, rtolr  r   za, b, x, reference)#B;gO
;r   gE]tE?)r   gؗҜ<r   gF]tE?c                     [         R                  " XS9n[         R                  " X%S9n[         R                  " X5S9n[        R                  " XU5      n[	        XtUS9  g )Nr  rT   )r`   r   r   r  r   )r@   r  r  r  r  r  rU   ress           rA   test_gh22682TestBetaInc.test_gh22682  sH     HHQ$HHQ$HHQ$ooaA&T2rE   r  N)r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r`   r:  r   r  r  r   r   r  r  r  r  rE   rA   r  r  J  s   :. [[	6
7+
7+ [[\
<=+=+ [[	7,,& [[Vgoow7I7I&-oow&-&6&68K8K&M N [[V &I JJN

 [[bff%bff%bff%ffbffc"BFF+ffbffc"BFF+ffbffc"BFF+""""""2663%2663%2663%ffc3%ffc3%ffc3%2663%2663%2663%ffc3%ffc3%ffc3%1	
:);:) [[bff%bff%bff%ffbffc"BFF+ffbffc"BFF+ffbffc"BFF+""""""2663%2663%2663%ffc3%ffc3%ffc3%2663%2663%2663%ffc3%ffc3%ffc3%1	
:);:) [[Wrzz2::&>?B @B [[]!zz40!zz5134 [[1EFHI3I43rE   r  c                       \ rS rSrS rS rS rS r\R                  R                  S/ SQ5      \R                  R                  SS	S
/5      S 5       5       rS rS rS rS rSrg)TestCombinatoricsi  c                    [        [        R                  " SS/SS/5      SS/5        [        [        R                  " SS5      S5        [        [        R                  " SSSS9S5        [        [        R                  " SSSSS	9S
5        [        [	        S5       Vs/ s H  n[        R                  " SUSS9PM     sn[        R                  " S[        [	        S5      5      5      SS9  [        R                  " [        5      R                  S-   n[        [        R                  " X"S-
  SS9U5        Sn[        R                  " SSSS9U:X  d   eg s  snf )NrQ  r   rK         ^@g     @j@Texactx   r  
repetition   r  rr   r   r_   r[   l   hU7`S?Q r  2   )
r   r   combr   r{   listr`   iinforz   max)r@   rj   iirL  s       rA   	test_combTestCombinatorics.test_comb  s   b"X1v6tER+T2W\\"at4c:W\\"atEsK%)L)Qb!48)LReBi9	G XXc]"W\\"d$7<1||C40H<<< Ms    Ec                     SnSn[         R                  " U5      n[         R                  " U5      n[        R                  " X4SS9n[        R                  " XSS9nXV:X  d   eg )NF   rW   Tr  )r`   int64r   r   )r@   ri   rj   np_nnp_kres_npres_pys          rA   test_comb_with_np_int64)TestCombinatorics.test_comb_with_np_int64!  sR    xx{xx{d5a$/rE   c                 R   [        [        R                  " SSSS9S5        [        [        R                  " SSSS9S5        [        [        R                  " SSSS9S5        [        [        R                  " SSSS9S5        [        [        R                  " / SQ/ S	Q5      / S
Q5        g )NrM   r   Tr  r   rP   FrM   rP   rM   rQ  r   r   rP   r   )r   r   r   r  )r   r   r   r   r?   s    rA   test_comb_zeros!TestCombinatorics.test_comb_zeros*  t    W\\!Qd3Q7W\\"at4a8W\\!Rt4a8W\\!Ru5q9^]CEWXrE   c                 ,   Sn[         R                  " [        US9   [        R                  " SSSS9  S S S 5        [         R                  " [        US9   [        R                  " SSSS9  S S S 5        g ! , (       d  f       NG= f! , (       d  f       g = f)	Nz`exact=True`r  r}  rK   Tr  r   g@)r  r   
ValueErrorr   r   rP  s     rA   test_comb_exact_non_int_error/TestCombinatorics.test_comb_exact_non_int_error1  s`    ]]:S1LLat, 2]]:S1LLCt, 21 2111s   A4B4
B
BNr   r   rQ  r  TFc                     [         R                  " USUSS9nUS:X  d   eU(       a  [        U5      [        L d   e[        R
                  (       d   eg g )Nr   Tr  r[   )r   r   typerz   r`   r   )r@   r  r  actuals       rA   test_comb_repetition_k_zero-TestCombinatorics.test_comb_repetition_k_zero8  sI    
 a%DA{{&+tF|s";;;;"rE   c                     [         R                  " / SQ5      n[        R                  " USSSS9n[         R                  " / SQ5      n[	        X#5        g )Nr  r   FTr  )r   r   r   )r`   r   r   r   r   )r@   r  r  rL  s       rA   !test_comb_repetition_k_zero_array3TestCombinatorics.test_comb_repetition_k_zero_arrayA  s:    HHZ a%DA88O,V&rE   c                     [        [        R                  " SS/SS/5      SS/5        [        [        R                  " SS5      SSSS9  [        [        R                  " SSS	S
9S5        g )NrQ  r   rK        @g     @r   r   r^   Tr  i  )r   r   permr   r?   s    rA   	test_permTestCombinatorics.test_permH  sS    b"X1v6uFR+TQGW\\"at4c:rE   c                 R   [        [        R                  " SSSS9S5        [        [        R                  " SSSS9S5        [        [        R                  " SSSS9S5        [        [        R                  " SSSS9S5        [        [        R                  " / SQ/ S	Q5      / S
Q5        g )NrM   r   Tr  r   rP   Fr  r  )r   r   r   r%  )r   r   r&  r   r?   s    rA   test_perm_zeros!TestCombinatorics.test_perm_zerosM  r  rE   c                    [         R                  " [        SS9   [        R                  " SS/SS/SS9  S S S 5        [         R                  " [        S	S9   [        R                  " S
SSS9  S S S 5        [         R                  " [        S	S9   [        R                  " SSSS9  S S S 5        [         R                  " [        S	S9   [        R                  " SSSS9  S S S 5        [         R                  " [        S	S9   [        R                  " SS
SS9  S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nz= f! , (       d  f       g = f)Nzscalar integersr  r[   rM   rK   r   Tr  zNon-integergffffff@rQ   gffffffr   g333333      @)r  r   r  r   r&  r?   s    rA   test_perm_ivTestCombinatorics.test_perm_ivT  s    ]]:->?LL!Q!Qt4 @ ]]:];LLat, <]]:];LLq- <]]:];LLD- <]]:];LLc. <; @? <;;;;;;;s;   DD/E E>E"
D,/
D= 
E
E"
E0r  N)r  r  r  r  r  r  r  r  r  r  r  r  r"  r'  r*  r.  r  r  rE   rA   r  r    sn    = Y- [[S*-[[WtUm4< 5 .<';
Y/rE   r  c                   V    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rSrg)TestTrigonometricic  c                 J    [         R                  " S5      nSn[        XSSS9  g )N   r~  r   r   r^   r   r   r   )r@   cbcbrls      rA   r   TestTrigonometric.test_cbrtd  s!    \\"vA6rE   c                 J    [         R                  " S5      nSn[        XSSS9  g )Ngfffff;@g鎖C@r  r   r^   r4  )r@   cb1cbrl1s      rA   test_cbrtmoreTestTrigonometric.test_cbrtmorei  s!    ll4 a8rE   c                 j    [         R                  " S5      n[        [        S-  5      n[	        XSSS9  g )Nr  r  r  r   r^   r   r   r
   r   r   )r@   cdgcdgrls      rA   r   TestTrigonometric.test_cosdgn  s)    mmBBsFa8rE   c                 j    [         R                  " S5      n[        [        S-  5      n[	        XSSS9  g NrW   r-  r  r   r^   r>  )r@   cdgmcdgmrls      rA   test_cosdgmore TestTrigonometric.test_cosdgmores  s)    }}R RV6:rE   c                 
   [         R                  " S5      [         R                  " S5      [         R                  " [        S-  5      4n[        S5      S-
  [        S5      S-
  [        [        S-  5      S-
  4n[	        XSSS9  g )Nr   rF  rQ  r[   r  r^   )r   r   r   r
   r   )r@   cscsrls      rA   r   TestTrigonometric.test_cosm1x  sa    mmAw}}R0r"u1EFAqR3r"u:a<0vA6rE   c                 p    [         R                  " S5      n[        [        S-  5      S-  n[	        XSSS9  g )NrW   r-  rP   r  r   r^   r   r   r   r   r   )r@   ctctrls      rA   r   TestTrigonometric.test_cotdg}  s.    ]]22c6{R vA6rE   c                 p    [         R                  " S5      n[        [        S-  5      S-  n[	        XSSS9  g )Nr   r4  rP   r  r   r^   rM  )r@   ct1ctrl1s      rA   test_cotdgmore TestTrigonometric.test_cotdgmore  s.    mmBBsFb!a8rE   c                 D   [        [        R                  " S5      SSSS9  [        [        R                  " S5      SSSS9  [        [        R                  " S5      S	SSS9  [        [        R                  " S
5      S	SSS9  [        [        R                  " S5      SSSS9  [        [        R                  " S5      SSSS9  [        [        R                  " S5      SSSS9  [        [        R                  " S5      SSSS9  [        [        R                  " S5      S	SSS9  [        [        R                  " S5      S	SSS9  [        [        R                  " S5      SSSS9  [        [        R                  " S5      SSSS9  [        [        R                  " S5      SSSS9  g )Nr   r   t=r   r^   r   r  r   i   y   i  i;  i  )r   r   r   r?   s    rA   test_specialpoints$TestTrigonometric.test_specialpoints  s-   b)3W1Ec*DwQGb)3W1Ec*CgAFc*DwQGd+SwQGc*CgAFd+TaHc*CgAFd+SwQGc*DwQGd+SwQGc*CgAFrE   c                     [        [        R                  " S/5      S5        [        [        R                  " S5      S5        g )Nr   r[   r   r   )r   r   sincr   r?   s    rA   	test_sincTestTrigonometric.test_sinc  s*    7<<,a0W\\#&,rE   c                 H    [         R                  " S5      n[        US5        g r  )r   r  r   )r@   sns     rA   r  TestTrigonometric.test_sindg  s    ]]2RrE   c                     [         R                  " S5      n[        [        S-  5      n[	        XSSS9  [         R                  " S5      n[        [        S-  5      n[	        X4SSS9  g )NrW   r-  r  r   r^   r   r4  )r   r  r	   r   r   )r@   snmsnmrlsnm1snmrl1s        rA   test_sindgmore TestTrigonometric.test_sindgmore  P    mmBBsFa8}}R RV6:rE   r  N)r  r  r  r  r   r;  r   rF  r   r   rT  r_  rc  r  rm  r  r  rE   rA   r1  r1  c  s:    7
9
9
;
7
7
9
G-
;rE   r1  c                   &    \ rS rSrS rS rS rSrg)	TestTandgi  c                 j    [         R                  " S5      n[        [        S-  5      n[	        XSSS9  g rC  r   r  r   r   r   )r@   tntnrls      rA   r  TestTandg.test_tandg  s)    ]]22c6{vA6rE   c                     [         R                  " S5      n[        [        S-  5      n[	        XSSS9  [         R                  " S5      n[        [        S-  5      n[	        X4SSS9  g )Nr   r4  r  r   r^   r  r~  rs  )r@   tnmtnmrltnm1tnmrl1s        rA   test_tandgmoreTestTandg.test_tandgmore  ro  rE   c                    [        [        R                  " S5      SSSS9  [        [        R                  " S5      SSSS9  [        [        R                  " S5      SSSS9  [        [        R                  " S	5      SSSS9  [        [        R                  " S
5      SSSS9  [        [        R                  " S5      SSSS9  [        [        R                  " S5      SSSS9  [        [        R                  " S5      SSSS9  [        [        R                  " S5      SSSS9  [        [        R                  " S5      SSSS9  [        [        R                  " S5      SSSS9  g )Nr   r   rW  r^   r   r   rX  r   rY  rZ  r  iLr[  r\  r]  r^  )r   r   r  r?   s    rA   r_  TestTandg.test_specialpoints  s    a(#G!Db)3W1Ec*DwQGc*DwQGd+SwQGc*CgAFd+SwQGc*CgAFd+TaHc*DwQGd+SwQGrE   r  N)r  r  r  r  r  r|  r_  r  r  rE   rA   rq  rq    s    7
;HrE   rq  c                   J    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rSrg)	TestEllipi  c                 N    [         R                  " S[        R                  5        g)zRegression test for #912.r   N)r   r  r`   r:  r?   s    rA   test_ellipj_nanTestEllip.test_ellipj_nan  s    sBFF#rE   c                 x    [         R                  " SS5      n[        S5      [        S5      SS/n[	        XSSS9  g )Nr   r   r   7QE=r^   )r   r  r	   r
   r   )r@   elrels      rA   r  TestEllip.test_ellipj  s4    ^^C"3xCT*gA6rE   c                 b   [         R                  " S5      n[        USSSS9  [        [         R                  " S5      [
        R                  5        [        [         R                  " S5      [        S-  5        [        [         R                  " [
        R                  5      S5        [        [         R                  " [
        R                  5      [
        R                  5        [        [         R                  " S	5      [
        R                  5        [        [         R                  " S
5      S5        g )Nr   g;{yэ?r  r   r^   r   r   rM   rP   rw  gN?)	r   r   r   r   r    r`   r   r   r:  )r@   elks     rA   r  TestEllip.test_ellipk  s    nnR .W1EW%%c*BFF3W%%c*BqD1W%%bff-s3W%%bff-rvv6W%%b)2662s+-?@rE   c                 j   [         R                  " [        S-  S5      n[         R                  " S5      n[	        XSSS9  S[        -  S-  nS[        -  S-  n[        U5      S-  n[         R                  " XE5      n[	        US	S
SS9  [        [         R                  " [        S-  S5      [        S-  5        [        [         R                  " [        S-  S5      [        R                  5        [        [         R                  " [        S-  [        R                  * 5      S5        [        [         R                  " [        S-  [        R                  5      [        R                  5        [        [         R                  " [        S-  S5      [        R                  5        [        [         R                  " SS5      S5        [        [         R                  " [        R                  S5      [        R                  5        [        [         R                  " [        R                  * S5      [        R                  * 5        [        [         R                  " [        R                  [        R                  5      [        R                  5        [        [         R                  " [        R                  [        R                  * 5      [        R                  5        [        [         R                  " [        R                  * [        R                  * 5      [        R                  5        [        [         R                  " [        R                  * [        R                  5      [        R                  5        [        [         R                  " [        R                  S5      [        R                  5        [        [         R                  " [        R                  [        R                  5      [        R                  5        [	        [         R                  " SS5      SSS9  [	        [         R                  " SS5      S5        g )NrM   r   r   r   r^   rr   r  r   gfoKh?r  r   r   r   gt?r[   rN   r  rT   6<R!?rw  gfON?)
r   r  r   r   r   r	   r   r`   r   r:  )r@   elkincr  alphaphirp  s         rA   r   TestEllip.test_ellipkinc  s{   ""2a4+nnS!':2c	eCiJM""3)
a@ 	W&&r!tS12a48W&&r!tS1266:W&&r!tbffW5s;W&&r!tRVV4bff=W&&r!tQ/8W&&q#.4W&&rvvs3RVV<W&&w4rvvg>W&&rvvrvv6?W&&rvvw7@W&&w8"&&AW&&w7@W&&rvvs3RVV<W&&rvvrvv6?))*=qA3US))&#68KLrE   c                    SnSn[         R                  " US5      n/ n[        S5       H+  nUR                  U5        [         R                  " US5      nM-     [        R
                  " X$5      n[        U[         R                  " US5      S5        [        R
                  " U[        -   U5      n[        U[         R                  " US5      S5        g )	N    ?Pag?r   rQ  r[   gV^8j?g,j6Ƅ@rM   )	r`   	nextafterr{   appendr   r  r   	full_liker   r@   mbadr  rp  mvalsjr  f1s           rA   test_ellipkinc_2TestEllip.test_ellipkinc_2  s     # LLq!rALLOQ"A  c)&q",,q:L*MqQsRx/&r2<<<N+OQRSrE   c                    [         R                  " SSS5      n[         R                  " SSS5      n[         R                  " S[        S-  SSS9n[	        [
        R                  " US	5      [         R                  " [         R                  " U5      5      S
S9  [	        [
        R                  " US	5      [         R                  " [         R                  " U5      5      S
S9  [	        [
        R                  " US	5      [         R                  " [         R                  " U5      5      S
S9  [        [
        R                  " [         R                  S-  S	5      [         R                  5        [	        [
        R                  " U* S	5      [         R                  " [         R                  " U* 5      5      S
S9  [	        [
        R                  " U* S	5      [         R                  " [         R                  " U* 5      5      S
S9  [	        [
        R                  " U* S	5      [         R                  " [         R                  " U* 5      5      S
S9  [        [
        R                  " [         R                  * S-  S	5      [         R                  5        g )Niir   gFFg<rE  rM   Fr  r[   r  rT   )r`   rt   r  r   r   r   r  arcsinhr   r   r   )r@   xlogxlinxlin2s       rA   test_ellipkinc_singular!TestEllip.test_ellipkinc_singular  s   {{4b){{5#r*CArE:))$2BJJrvvd|4L!	#))$2BJJrvvd|4L!	#))%3RZZu5N!	#W&&ruuQw2BFF;))4%3RZZu5N!	#))4%3RZZu5N!	#))5&!4bjj6P!	#W&&vax3RVV<rE   c                 d   [         R                  " S5      n[        USSSS9  [        [         R                  " S5      [        S-  5        [        [         R                  " S5      S5        [        [         R                  " [
        R                  * 5      [
        R                  5        [        [         R                  " [
        R                  5      [
        R                  5        [        [         R                  " S5      [
        R                  5        [        [         R                  " S	5      S
5        g )Nr   gl?r  r   r^   r   rM   r   rw  g?eg@)r   r   r   r   r   r`   r   r:  )r@   eles     rA   r  TestEllip.test_ellipe  s    nnR /f1EW^^C("Q$/W^^C(#.W^^RVVG,bff5W^^BFF+RVV4W^^A&/s+-?@rE   c                 *   [         R                  " [        S-  S5      n[         R                  " S5      n[	        XSSS9  S[        -  S-  S[        -  S-  pC[        U5      S-  n[         R                  " XE5      n[	        US	S
SS9  [        [         R                  " [        S-  S5      [        S-  5        [        [         R                  " [        S-  S5      S5        [        [         R                  " [        S-  [        R                  * 5      [        R                  5        [        [         R                  " [        S-  [        R                  5      [        R                  5        [        [         R                  " [        S-  S5      [        R                  5        [        [         R                  " SS5      S5        [        [         R                  " [        R                  S5      [        R                  5        [        [         R                  " [        R                  * S5      [        R                  * 5        [        [         R                  " [        R                  [        R                  * 5      [        R                  5        [        [         R                  " [        R                  * [        R                  * 5      [        R                  * 5        [        [         R                  " [        R                  [        R                  5      [        R                  5        [        [         R                  " [        R                  * [        R                  5      [        R                  5        [        [         R                  " [        R                  S5      [        R                  5        [        [         R                  " [        R                  [        R                  5      [        R                  5        [	        [         R                  " SS5      S5        g )NrM   r   rW  r   r^   4   r  #   g'?r  r   r   r   r  rw  gL@)
r   r  r   r   r   r	   r   r`   r   r:  )r@   eleincr  r  r  rp  s         rA   r  TestEllip.test_ellipeinc'  s^   ""2a4+nnS!':U3Yr"uSysJM""3)
a@W&&r!tS12a48W&&r!tS137W&&r!tbffW5rvv>W&&r!tRVV4bff=W&&r!tQ/8W&&q#.4W&&rvvs3RVV<W&&w4rvvg>W&&rvvw7@W&&w8266'BW&&rvvrvv6?W&&w7@W&&rvvs3RVV<W&&rvvrvv6?))&#68JKrE   c                    SnSn[         R                  " US5      n/ n[        S5       H+  nUR                  U5        [         R                  " US5      nM-     [        R
                  " X$5      n[        U[         R                  " US5      S5        [        R
                  " U[        -   U5      n[        U[         R                  " US5      S	5        g )
Nr  r  r   rQ  r[   g%?rM   gXo
@rK   )	r`   r  r{   r  r   r  r   r  r   r  s           rA   test_ellipeinc_2TestEllip.test_ellipeinc_2A  s     # LLq!rALLOQ"A  c)&q",,q:M*NPQRsRx/&r2<<<N+OQRSrE   r  N)r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  rE   rA   r  r    s5    $7
	AM:T =*	AL4TrE   r  c                   t    \ rS rSrSrS rS rS rS rS r	\
R                  R                  SS	9S
 5       rSrg)TestEllipCarlsoniR  zTest 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           	         [        [        SS5      S5        [        S[        5      S:X  d   e[        [        SS5      5      (       d   e[        S[	        S[        5      5      S:X  d   e[        SS/SS/SS/SS/SS	/SS
//5      n[        [        R                  [        R                  " S5      SS[        R                  " S5      S-  S/5      n[        U5       H  u  p4[        [        U6 X#   5        M     g )Nr[   r   r   rv  g      @r  rH               r  r   y
c?
cy=B?CGֿr~  y檠f?P9lb?)
r   r!   r   r   r?  r   r`   r   r   	enumerater@   r  expected_resultsr   arrs        rA   test_elliprcTestEllipCarlson.test_elliprcW  s    1q)q##%%%WQ]####q'!S/*c111sDkSkDkdmTlTl$ % !"%%"$&&+">"C"$&&+"3"D"F G  oFAGSM+;+>? &rE   c           
      8   [        [        SSS5      S5        [        [        SSS5      S-  S5        [        SS[        5      S:X  d   e[        R                  " [        SSS5      5      (       d   e[        R                  " [        SS[        SS5      5      5      (       d   e[        R                  " [        SS[        SS5      5      5      (       d   e[        [        SS[        R                  " [        R                  5      R                  * S-  5      5      (       d   e[        [        SS[        SS5      5      5      (       d   e[        / S	Q/ S
Q/ SQ/ SQ/ SQ/ SQ/5      n[        / SQ5      n[        U5       H  u  p4[        [        U6 X#   5        M     g )Nr[   r   rM   r~  g`C+?r   r  rP   )r   r  r   r  r~  r4  rH  r  r  r   rH  r  )r               ?rH  )y             r  r  )gfe_?gi+"?gP$M?ytgFU?7?@yR<8*y{62?z)r   r"   r   r`   r  r?  r   r   r   tinyr   r  r  s        rA   test_elliprdTestEllipCarlson.test_elliprdk  sX   1a(!,1a(3.0FGq!S!S(((xx1a())))xx1gam45555xx1gam45555WQBHHRZZ$8$=$=#=#CDEEEEWQ72q>23333o%((,35 6 ! "D E  oFAGSM+;+>? &rE   c           
      Z   [        [        SSS5      S5        [        [        SSS5      S5        [        S[        S5      S:X  d   e[        R                  " [        SSS5      5      (       d   e[        [        SSS5      5      (       d   e[        [        [        5      SS5      S:X  d   e[        [        SS[        [        * S5      5      5      (       d   e[        / SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ/ SQ/5      n[        / SQ5      n[        U5       H  u  p4[        [        U6 X#   5        M     g )Nr[   r   rM   gPO?r   rP   )r   r  r   )rH  r  r   )r   r   r   r  rH  r   r  r  )r  rH        ?      )geQO?ʞu5J?r  yp\y?kg2ΰ?gHwд?y|pF?-6Fj)	r   r#   r   r`   r  r   r?  r   r  r  s        rA   test_elliprf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5o(%,%(13 4 ! "F G  oFAGSM+;+>? &rE   c           	         [        [        SSS5      S5        [        [        SSS5      S5        [        [        SSS5      S5        [        R                  " [        S[        S5      5      (       d   e[        R                  " [        [        [        5      SS5      5      (       d   e[        / SQ/ SQ/ SQ/ SQ/ SQ/ S	Q/5      n[        [        R                  S
SSSS/5      n[        U5       H  u  p4[        [        U6 X#   5        M     g )Nr[   r   r   )r   r  r  r  r  r  )r  r  rH  )r   g8d`?r4  gL+?g}^?y旮0?ʋW?yjN?^?gt?)	r   r$   r`   r  r   r?  r   r   r  r  s        rA   test_elliprgTestEllipCarlson.test_elliprg  s    1a(!,1a(#.1a(!,xx3*++++xxa34444'%(,.(* + !"%%"1"2"D"D"1"3 4  oFAGSM+;+>? &rE   c                    [        [        SSSS5      S5        [        SS[        S5      S:X  d   e[        [        SSSS5      5      (       d   e[        [        SSSS5      5      (       d   e[        SSS[        5      S:X  d   e[	        / SQ/ SQ/ SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ/ SQ/	5      n[	        / SQ5      n[        U5       H  u  p4[        [        U6 X#   5        M     g )Nr[   r   r   rP   )r   r   r  r~  )r  r~  r4  r   )r  r~  r4  r  )rH  r  r   r  )r              r   r  )rH  r  r   r  )r  r  r   y            ?)r  r~  r4  r  )r  r~  r4        )	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        rA   test_elliprjTestEllipCarlson.test_elliprj  s    1a+Q/q!S!$+++WQ1a())))WRAq)****q!Q$+++**0-62<++- . ! "5 6  oFAGSM+;+>? &rE   zInsufficient accuracy on 32-bitrB  c                 d    [        [        SSSS5      SSSS9  [        [        S	S
SS5      SSSS9  g )Ng   gq>g   `W:g    HBg   @ۘ?gRy|>r  r  r  g   ,@g    x=g   @e:g   `ݽ>g(HR)A)r   r%   r?   s    rA   test_elliprj_hard"TestEllipCarlson.test_elliprj_hard  sN     5 6 3 13 ;"	0 	 2 5 4 57 <"	0rE   r  N)r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rE   rA   r  r  R  sM    @(@0@2@*@6 [[?@0 A0rE   r  c                   0    \ rS rSrSrS rS rS rS rSr	g)	"TestEllipLegendreCarlsonIdentitiesi  zTest 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                 h   [         R                  " SSS5      U l        [        [        5      R
                  U l        SS[        S[         R                  " U R                  * 5      -   SS5      -  -  U l        [         R                  " U R                  /U R                  U R                  45      U l
        g )Nr   r   r  r  rP   r   )r`   r   m_n1_1r   r   minmax_neglog2
very_neg_mconcatenate
ms_up_to_1r?   s    rA   setup_class.TestEllipLegendreCarlsonIdentities.setup_class  s    iiR.V}((F2+-77DLL=+A,BCE+.%0 !0 0 ..4<<.*.//*.++*7 8rE   c                 b    U R                   n[        [        U5      [        SSU-
  S5      5        g)z%Test identity:
K(m) = R_F(0, 1-m, 1)
r   r   N)r  r   r   r#   ro  s     rA   test_k)TestEllipLegendreCarlsonIdentities.test_k  s(     OOq	72r!tR#89rE   c                     [        [        5      R                  nUS[        S[        R
                  " U5      * 5      -  -  n[        [        U5      [        SUS5      5        g)zDTest identity:
K(m) = R_F(0, 1-m, 1)
But with the ellipkm1 function
r  r   r   N)	r   r   r  r   r`   r  r   r    r#   )r@   r  m1s      rA   test_km1+TestEllipLegendreCarlsonIdentities.test_km1  sJ     V}!!BrBGGDM>222gb"b&9:rE   c           	      h    U R                   n[        [        U5      S[        SSU-
  S5      -  5        g)z)Test identity:
E(m) = 2*R_G(0, 1-k^2, 1)
r  r   r   N)r  r   r   r$   ro  s     rA   test_e)TestEllipLegendreCarlsonIdentities.test_e   s-     OOq	2gb"Q$&;#;<rE   )r  r  r  r  N)
r  r  r  r  r  r  r  r  r  r  r  rE   rA   r  r    s    

8:	;=rE   r  c                   f    \ rS rSrS rS rSS jrS rS rS r	S r
S	 rS
 rS rS rS rS rSrg)TestErfi  c                 H    [         R                  " S5      n[        USSSS9  g )Nrv  g);T?r  r   r^   )r   r$  r   )r@   ers     rA   r%  TestErf.test_erf
  s    [[LvA>rE   c                 `    [         R                  " S5      n[        / SQ5      n[        XSSS9  g )Nr   )yTcJ5?=W?yo@n@y'ʷ@g	@y"[

@,y]+@yld&@-;'j'>@r  r   r^   )r   	erf_zerosr   r   )r@   erzerzrs      rA   test_erf_zerosTestErf.test_erf_zeros  s/    " - .
 	Q7rE   c           	      :   [         R                  R                  S5      nSnUR                  SU5      SUR	                  SSU5      -  S-
  -  nUR                  SU5      SUR	                  SSU5      -  S-
  -  nUSU-  -   n	[         R
                  " SS	9   U" U	5      n
U" U5      R                  n[         R                  " U
5      nX   n
X   n	[         R                  " U5      nX   nX|   n[        XXUS
9  [        XXsUS
9  S S S 5        g ! , (       d  f       g = f)NrV   r  g{Gz?rM   r   r[   rH  r`  allr  )	r`   rf   rg   paretorandintr  r   isfiniter3   )r@   r  
other_funcrU   r_   rm   ri   r  rJ  rK  r  w_realmasks                rA   _check_variant_funcTestErf._check_variant_func  s   ii##D)JJtQ1S[[Aq%9#9A#=>JJtQ1S[[Aq%9#9A#=>1H[[X&1A]''F;;q>DAA;;v&D\FA dq$?dAtD '&&s   A-D
Dc                 F    U R                  [        R                  S SSS9  g )Nc                 4    S[         R                  " U 5      -
  $ ry   r=   r$  rK  s    rA   <lambda>.TestErf.test_erfc_consistent.<locals>.<lambda>1  s    a&**Q-'rE   r   r  r  )r  r=   r,  r?   s    rA   test_erfc_consistentTestErf.test_erfc_consistent.  s%      KK'	 	! 	rE   c                 D    U R                  [        R                  S SS9  g )Nc                 `    [         R                  " X -  5      [        R                  " U 5      -  $ r5  )r`   r   r=   r,  r  s    rA   r  /TestErf.test_erfcx_consistent.<locals>.<lambda>9  s    bffQSkFKKN2rE   r   rT   )r  r=   erfcxr?   s    rA   test_erfcx_consistentTestErf.test_erfcx_consistent6  s"      LL2 	! 	rE   c                 D    U R                  [        R                  S SS9  g )Nc                 :    S[         R                  " SU -  5      -  $ )Nr  rH  r  r  s    rA   r  .TestErf.test_erfi_consistent.<locals>.<lambda>@  s    cFJJr!t,,rE   r   rT   )r  r=   erfir?   s    rA   test_erfi_consistentTestErf.test_erfi_consistent=  s"      KK, 	! 	rE   c                 D    U R                  [        R                  S SS9  g )Nc                     [        [        5      S-  [        R                  " U * U -  5      -  [        R
                  " U 5      -  $ r  )r   r   r`   r   r=   r  r  s    rA   r  /TestErf.test_dawsn_consistent.<locals>.<lambda>G  s,    d2hqj2661"Q$</&++a.@rE   r   rT   )r  r=   r   r?   s    rA   test_dawsn_consistentTestErf.test_dawsn_consistentD  s"      LL@ 	! 	rE   c                     [         R                  [         R                  * [         R                  /n[         R                  SS/n[        [        R
                  " U5      USS9  g )NrP   r[   r   rT   )r`   r:  r   r   r   r$  r@   r  rL  s      rA   test_erf_nan_infTestErf.test_erf_nan_infK  s@    (FFB?D)8%@rE   c                     [         R                  [         R                  * [         R                  /n[         R                  SS/n[        [        R
                  " U5      USS9  g )NrM   r   r   rT   )r`   r:  r   r   r   r,  r  s      rA   test_erfc_nan_infTestErf.test_erfc_nan_infP  s@    (FFAq>T*H5ArE   c                     [         R                  [         R                  * [         R                  /n[         R                  [         R                  S/n[        [        R
                  " U5      USS9  g )Nr   r   rT   )r`   r:  r   r   r   r  r  s      rA   test_erfcx_nan_infTestErf.test_erfcx_nan_infU  sE    (FFBFFA&d+XEBrE   c                    [         R                  [         R                  * [         R                  /n[         R                  [         R                  * [         R                  /n[        [        R
                  " U5      USS9  g ry  )r`   r:  r   r   r   r  r  s      rA   test_erfi_nan_infTestErf.test_erfi_nan_infZ  sK    (FFRVVGRVV,T*H5ArE   c                     [         R                  [         R                  * [         R                  /n[         R                  SS/n[        [        R
                  " U5      USS9  g )Nr  r   r   rT   )r`   r:  r   r   r   r   r  s      rA   test_dawsn_nan_infTestErf.test_dawsn_nan_inf_  sA    (FFD#&d+XEBrE   c                     [         R                  [         R                  * [         R                  /n[         R                  [         R                  S-  -   SS/n[        [        R
                  " U5      USS9  g )NrH  r>  r   rT   )r`   r:  r   r   r   r  r  s      rA   test_wofz_nan_infTestErf.test_wofz_nan_infd  sN    (FFRVVc\)66:T*H5ArE   r  N)r   )r  r  r  r  r%  r  r  r  r  r  r  r  r  r"  r%  r(  r+  r  r  rE   rA   r  r    sJ    ?8E.A
B
C
B
C
BrE   r  c                       \ rS rSrS rSrg)	TestEulerij  c                 V   [         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[        US/SS9  [        USS/SS9  [        U/ SQSS9  [         R                  " S5      n/ SQn[        S	S
5      n[	        SS5       H6  nUS-  (       a  [        XW   5      * USU-  '   M#  [        XW   5      USU-  '   M8     [        R                  " SS9   [        XF-
  U-  5      n[        U5      n	S S S 5        [        W	SSSS9  g ! , (       d  f       N= f)Nr   r[   rM   r   rT   )r[   r   rP   r   )r[   r[   r   =   ii  iY  i=) il   Q~ l   10[l   $8gC
 l   2l   v}Ju: )r   d   r`  r  r   rW  r^   )
r   eulerr   r   r{   r|   r`   r  r   r  )
r@   eu0eu1eu2eu24	mathworldcorrectrj   errerrmaxs
             rA   
test_eulerTestEuler.test_eulerk  s   mmAmmAmmAaSu-aV%0Ze4}}R +	 c"qAA %il 33!$Y\2!	 
 [[X&dlG34CXF ' 	': '&s   )D
D(r  N)r  r  r  r  r<  r  r  rE   rA   r.  r.  j  s    ;rE   r.  c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
TestExpi  c                 J    [         R                  " S5      nSn[        X5        g )NrM   rK   )r   r5  r   r@   exexrls      rA   r6  TestExp.test_exp2  s    \\!_RrE   c                 J    [         R                  " S5      nSn[        XSSS9  g )Nr  g;f@r  r   r^   )r   r5  r   r@   exmexmrls      rA   test_exp2moreTestExp.test_exp2more  s!    ll3a8rE   c                 J    [         R                  " S5      nSn[        XSSS9  g )NrM   r  r   r   r^   r   r0  r   rA  s      rA   r1  TestExp.test_exp10  s!    ]]1t!4rE   c                 J    [         R                  " S5      nSn[        XSSS9  g )Nr  gYs@r  r   r^   rL  rF  s      rA   test_exp10moreTestExp.test_exp10more  s!    mmC a8rE   c                     [         R                  " S5      [         R                  " S5      [         R                  " S5      4n[        S5      S-
  [        S5      S-
  [        S5      S-
  4n[        XSSS9  g )NrM   r   rK   r[   r  r   r^   r   r9  r   r   rA  s      rA   r;  TestExp.test_expm1  sY    mmAa 0'--2BCA
CFQJA
3vA6rE   c                     [         R                  " S5      [         R                  " S5      [         R                  " S5      4n[        S5      S-
  [        S5      S-
  [        S5      S-
  4n[        XSSS9  g )NrM    @皙@r[   r  r   r^   rR  )r@   ex1exrl1s      rA   test_expm1moreTestExp.test_expm1more  sY    }}Qs!3W]]35GHQ!SX\3s8a<8a8rE   r  N)r  r  r  r  r6  rI  r1  rO  r;  rY  r  r  rE   rA   r?  r?    s     
9
5
9
7
9rE   r?  c                 f  ^ U4S jnS n[        U 5      [        U5      L d   S[        U 5       S[        U5       35       e[        U [        R                  5      (       a`  U R                  UR                  :X  d   eU" X5        [        U R                  5       UR                  5       5       H  u  pV[        XVTS9  M     g[        R                  " U 5      (       aO  [        R                  " U5      (       a4  [        [        U 5      S5      (       a  U" U 5      =(       a
    U" U5        g  gU" X5        g)a  
Sharper assertion function that is stricter about matching types, not just values

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

We still want to be able to allow a relative tolerance for the values though.
The main logic comparison logic is handled by the xp_assert_* functions.
c                 8   > Tc  [        X5        g [        XTS9  g )NrT   )r-   r,   )r  rJ  rU   s     rA   assert_func(assert_really_equal.<locals>.assert_func  s    !%?1d3SrE   c                     [         R                  " U R                  5      (       a%  [         R                  " U R                  5      (       d   eg r5  )r`   r   r   rI  r  s    rA   assert_complex_nan/assert_really_equal.<locals>.assert_complex_nan  s0    xxBHHQVV$4$444$4rE   ztypes not equal: z, rT   re  N)
r  
isinstancer`   ndarrayr  zipre   assert_really_equalr   r1   )r  rJ  rU   r]  ra  elem_xelem_ys     `    rA   rf  rf    s    T5 7d1gG!247)2d1gYGG !RZZ  ww!''!!!A!!'')QWWY7NFT: 8	!!d1gs)C)C17"4Q"77 	ArE   c                      \ rS rSrS r\R                  R                  S/ SQ5      S 5       r\R                  R                  S/ SQ5      \R                  R                  SS	S
/5      S 5       5       r	\R                  R                  SS	S
/5      S 5       r
\R                  R                  S/ SQ5      S 5       r\R                  R                  SSS/5      \R                  R                  S/ SQ5      S 5       5       r\R                  R                  SS	S
/5      \R                  R                  SSS/5      \R                  R                  S\R                  \R                  " S5      \R                  \R                  S-  -   \R                   " S5      \R"                  \R"                  S-   \R"                  * \R"                  * S-   S\R$                  " S5      /
/ SQS9\R                  R                  S\R(                  \R*                  \R,                  /5      S  5       5       5       5       r\R                  R                  SSS!\R                  S"/5      S# 5       r\R                  R                  S$\" S%S&5      5      \R                  R                  SS	S
/5      S' 5       5       r\R                  R                  SS	S
/5      \R                  R                  S(S\\R8                  \R:                  \R<                  \R>                  \R@                  \RB                  \RD                  \RF                  /
5      \R                  R                  S)\" SS&5      5      S* 5       5       5       r$\R                  R                  SS	S
/5      \R                  R                  S+\" S%S&5      5      S, 5       5       r%\R                  RM                  S&5      \R                  R                  S(\R@                  \RB                  \RD                  \RF                  /5      \R                  R                  S/ SQ5      S- 5       5       5       r'\R                  R                  S\" S.S/S05      5      S1 5       r(\R                  R                  S\)" \" SS25      5      \)" \" S.S/S05      5      -   5      S3 5       r*S4 r+S5 r,\R                  R                  S(\R>                  \R                  \R                   \-/5      \R                  R                  SSS/5      \R                  R                  SS	S
/5      \R                  R                  S)\" SS&5      5      \R                  R                  S6/ S%/S!/\R                  /\R                  \R                  S-  -   /\R                  S%/// S7QS9S8 5       5       5       5       5       r.\R                  R                  SSS/5      \R                  R                  SS	S
/5      \R                  R                  SS%S!S9\R                  \R                  \R                  S-  -   S// S:QS9S; 5       5       5       r/\R                  R                  S\" S.S/S<5      5      S= 5       r0\R                  R                  S\)" \" SS25      5      \)" \" S.S/S<5      5      -   5      S> 5       r1S? r2\R                  R                  S(\R>                  \R                  \R                   \-/5      \R                  R                  SSS/5      \R                  R                  SS	S
/5      \R                  R                  S)\" SS&5      5      \R                  R                  S6/ S%/S!/\R                  /\R                  \R                  S-  -   /\R                  S%/// S7QS9S@ 5       5       5       5       5       r3\R                  R                  SSS/5      \R                  R                  SS	S
/5      \R                  R                  SS%S!S9\R                  \R                  \R                  S-  -   S// S:QS9SA 5       5       5       r4\R                  R                  SB\" S%S&5      5      \R                  R                  S\" SCSDSE5      5      SF 5       5       r5\R                  R                  SB\)" \" S%S&5      5      S0SD/-   5      \R                  R                  S\)" \" SS25      5      \)" \" S2SGS<5      5      -   5      SH 5       5       r6SI r7\R                  R                  S(\R>                  \R                  \R                   \-/5      \R                  R                  SSS/5      \R                  R                  SS	S
/5      \R                  R                  S)\" SS&5      5      \R                  R                  S6/ S%/S!/\R                  /\R                  \R                  S-  -   /\R                  S%/// S7QS9SJ 5       5       5       5       5       r8\R                  R                  SSS/5      \R                  R                  SS	S
/5      \R                  R                  SB\" S%S&5      5      \R                  R                  SS%S!S9\R                  \R                  \R                  S-  -   S// S:QS9SK 5       5       5       5       r9\R                  R                  SS	S
/5      \R                  R                  S/ SQ5      \R                  R                  SBSLSMSSNSS!\R                  /5      SO 5       5       5       r:\R                  R                  SS	S
/5      \R                  R                  S/ SQ5      \R                  R                  SBS"\R$                  " S5      /S"SP/S9SQ 5       5       5       r;\R                  R                  S/ SQ5      \R                  R                  SB\" S%SR5      5      SS 5       5       r<ST r=SUr>g)VTestFactorialFunctionsi  c                 R   U(       a  [         R                  " XSS9$ US:X  a  [        R                  " X5      OSn[        R                  " X!U-
  U-  5      [         R
                  " X-  S-   5      -  [         R                  " XR-  S-   5      -  nU[        R                  " US5      -  $ )NTrj   r  zeror[   )r   
factorialkr`   modpowerrt  ry  maximum)r@   ri   rj   r  extendrr  s          rA   factorialk_ref%TestFactorialFunctions.factorialk_ref  s    %%aD99"f,BFF1L!xxE19%acAg(>>PQPSVWPWAXXbjjA&&&rE   zexact,extend))Trm  )Frm  )Fr?  c                 6   XS.n[         R                  " [        R                  " S0 UD65      (       d   e[         R                  " [        R                  " S0 UD65      (       d   e[         R                  " [        R
                  " SSS0UD65      (       d   eg )Nr  rr  rj   r   r[   )r`   isscalarr   	factorial
factorial2rn  )r@   r  rr  kws       rA   "test_factorialx_scalar_return_type9TestFactorialFunctions.test_factorialx_scalar_return_type  sz     /{{7,,5"56666{{7--6267777{{7--;1;;<<<<rE   ri   )rP   r[  r  r  TFc                     SU0n[        [        R                  " U40 UD6S5        [        [        R                  " U40 UD6S5        [        [        R                  " U4SS0UD6S5        g )Nr  r   rj   r   )r   r   rz  r{  rn  )r@   r  ri   r|  s       rA   $test_factorialx_negative_extend_zero;TestFactorialFunctions.test_factorialx_negative_extend_zero  sa     uW&&q/B/3W''0R0!4W''5Q5"5q9rE   c                 :   SU0nSn/ SQn[         R                  " / SQU(       a  [        O[         R                  S9n[	        [
        R                  " U40 UD6XSS9  [	        [
        R                  " U40 UD6XSS9  [	        [
        R                  " U4SS0UD6XSS9  g )	Nr  r   )r  r   r[   )r   r   r[   r[   r  rT   rj   r   )	r`   r   
native_intr   rf  r   rz  r{  rn  )r@   r  r|  rU   ri   rL  s         rA   *test_factorialx_negative_extend_zero_arrayATestFactorialFunctions.test_factorialx_negative_extend_zero_array  s    u88Le
TG--a626LG..q7B7MG..q<A<<hRrE   gggffffff
c                    SS0nSSSS.nSSS	S.nS
SSS.nSn[        [        R                  " U40 UD6X1   US9  [        [        R                  " U40 UD6XA   US9  [        [        R                  " U4SS0UD6XQ   US9  [        [        R                  " U/40 UD6S   X1   US9  [        [        R                  " U/40 UD6S   XA   US9  [        [        R                  " U/4SS0UD6S   XQ   US9  g )Nrr  r?  gRc/a_%g:\Oag@g*BZ'r  go	08G)?goNb]gMxcQgNy?g=u?g7K [n<rT   rj   r   r   )r   r   rz  r{  rn  )r@   ri   r|  exp_1exp_2exp_krU   s          rA   'test_factorialx_negative_extend_complex>TestFactorialFunctions.test_factorialx_negative_extend_complex  s   	"-..0 .-.0 /--/ ))!2r2EH4H**133UXDI**188R8%(N))1#44Q7M**A35"5a8%(N**A3:!:r:1=uxdSrE   rI  r   r>  n_outerc                 J   ^ SS0mU4S jnU" X-   5        U" SU-  U-   5        g )Nrr  r?  c                 &  > [        [        U 5      S5      n[        R                  " S5      nU(       a  [        R                  " S5      O[        R                  " S5      n[        [        R                  " U 40 TD6U5        [        [        R                  " U S-  40 TD6U5        [        [        R                  " U S-  4SS0TD6U5        Sn[        [        R                  " X-  4SU0TD6U5        [        [        R                  " U /40 TD6S   U5        [        [        R                  " U S-  /40 TD6S   U5        [        [        R                  " U S-  /4SS0TD6S   U5        [        [        R                  " X-  /4SU0TD6S   U5        g )	Nre  nan+nanjr:  rM   r   rj   y      ?       r   )
r1   r  r`   
complex128r   rf  r   rz  r{  rn  )ri   
complexifycomplex_nanr   re  r|  s        rA   _checkTTestFactorialFunctions.test_factorialx_negative_extend_complex_poles.<locals>._check	  sU   %d1gs3J--
3K/9"--
+rzz%?PC 1 1! :r :C@ 2 21q5 ?B ?E 2 21q5 DA D DcJA 2 215 DA D DkR 1 11# < <Q ?E 2 2AE7 Ab A! DcJ 2 2AE7 Fa F2 Fq I3O 2 2AE7 Fa F2 Fq I;WrE   i r  )r@   r  rI  r  r|  s       @rA   -test_factorialx_negative_extend_complex_polesDTestFactorialFunctions.test_factorialx_negative_extend_complex_poles 	  s3     	"	X( 	w~w 4'(rE   boxedrr  rm  r?  r:  rH  r  Nnat)
NaNznp.float64('nan')	NaN+i*NaNznp.complex128('nan+nanj')r   zinf+0iz-infz-inf+0iNoneNaT)ids
factorialxc                    SUS.nU[         R                  :X  a  SUS'   U(       a  / SQOSSS[        S 5      /nU[         R                  :X  a  SOSS/n[	        [        U5      U5      (       d6  [
        R                  " [        S	S
9   U" U(       a  U/OU40 UD6  S S S 5        g [	        [        U5      U5      (       a<  US:w  a6  [
        R                  " [        SS
9   U" U(       a  U/OU40 UD6  S S S 5        g US:H  =(       a    [	        [        U5      S5      nU(       a  [        R                  " S5      O[        R                  " S5      n	[	        [        U5      S5      (       aW  [        R                  " U5      (       a<  [        R                  " US:X  a  SOS5      n
US:  a  [        R                  " S5      OU
n	U(       a  U" U/40 UD6S   OU" U40 UD6n[        X5        g ! , (       d  f       g = f! , (       d  f       g = f)NFrw  r   rj   r   r  re  r   r  re  Unsupported data type.*r  r?  In order to use non-integer.*r  r:  rm  r   r   )r   rn  r  rz  r1   r  r   r  r`   r  r   r  rf  )r@   r  ri   rr  r  r|  permissible_typestypes_need_complex_extr  rL  neg_inf_resultr  s               rA   test_factorialx_inf_nan.TestFactorialFunctions.test_factorialx_inf_nan	  s   & /+++BsG 05O3S$t*:U(2g6G6G(GcSVZDG%677z1JK%A3Q5"5 LK$q'#9::v?Rz1PQ%A3Q5"5 RQ !I-M<Q3MJ 5?r}}Z0BJJuDUHDGS))bhhqkk!#&F2BA!O12Q2::e,^16Z*r*1-Jq<OB<OF1% LK RQs   G'G8'
G58
Hr  stringc                    [         R                  " [        SS9   [        R                  " SUS9  S S S 5        [         R                  " [        SS9   [        R
                  " SUS9  S S S 5        [         R                  " [        SS9   [        R                  " SSSUS9  S S S 5        g ! , (       d  f       N= f! , (       d  f       NY= f! , (       d  f       g = f)Nzargument `extend` must be.*r  r[   )rr  r   Trj   r  rr  )r  r   r  r   rz  r{  rn  )r@   rr  s     rA   test_factorialx_raises_extend4TestFactorialFunctions.test_factorialx_raises_extendN	  s    ]]:-JKa/ L]]:-JKq0 L]]:-JKqAT&A LK	 LKKKKKs#   B)B:C)
B7:
C
Clevelsr[   r   c           	        ^^ SU4S jjmUU4S jn[         R                  " T" SS/TS95      nS[        R                  " S5      /S[        R
                  " SS	S
9/S[        R                  " SSS	S
9/S.nU" [        R                  " XBS
9US   5        U" [        R
                  " XBS
9US   5        U" [        R                  " USUS
9US   5        g )Nr[   c                 .   > US:X  a  U $ T" X /US-
  5      $ )zi
Double x and nest it k times

For example:
>>> _nest_me([3, 4], 2)
[[[3, 4], [3, 4]], [[3, 4], [3, 4]]]
r   r[   r  r  rj   _nest_mes     rA   r  DTestFactorialFunctions.test_factorialx_array_shape.<locals>._nest_meZ	  s$     Av!,,rE   c                    > [         R                  " T" UTS9[        S9n[        U R	                  [         R
                  5      UR                  " [         R
                  5      5        g )Nrj   r  )r`   r   objectr   r   r   )r  nucleusr   r  r  s      rA   r  BTestFactorialFunctions.test_factorialx_array_shape.<locals>._checkg	  s@    ((8Gv6fEC CJJrzz2CJJrzz4JKrE   r   r   r  r  r   Tr  rQ  r   r  rM   rx  )r`   r   mathrz  r   r{  rn  )r@   r  r  r  ri   exp_nucleusr  s    `    @rA   test_factorialx_array_shape2TestFactorialFunctions.test_factorialx_array_shapeW	  s    	-	L HHXq"g01r 23w11"DABw11"atDEG
 	w  0+a.Aw!!!1;q>Bw!!!Qe4k!nErE   r  dimc                 v   [         R                  " SX!S9nSSSS.n[        [        R                  " XCS9[         R                  " US   US	95        [        [        R
                  " XCS9[         R                  " US
   US	95        [        [        R                  " USUS9[         R                  " US   US	95        g )Nr   )r  ndminr  r   rQ  r  r  r[   r  rM   r   )r`   r   r   r   rz  r{  rn  )r@   r  r  r  ri   r   s         rA   test_factorialx_array_dimension6TestFactorialFunctions.test_factorialx_array_dimensionw	  s     HHQe/"$))!9Qs3	5**1:Qs3	5**1au=Qs3	5rE   levelc                   ^ SU4S jjmT" S/US-
  S9nSSSS.nU(       a  [         O[        nU" [        R                  " X2S	9[        R
                  " US   US
95        U" [        R                  " X2S	9[        R
                  " US   US
95        U" [        R                  " USUS	9[        R
                  " US   US
95        g )Nr[   c                 .   > US:X  a  U $ T" U /US-
  5      $ r  r  r  s     rA   r  CTestFactorialFunctions.test_factorialx_array_like.<locals>._nest_me	  s"    AvQqS))rE   r   r  r  r   rQ  r  r  r  rM   r   rx  )r   r   r   rz  r`   r   r{  rn  )r@   r  r  ri   r  r]  r  s         @rA   test_factorialx_array_like1TestFactorialFunctions.test_factorialx_array_like	  s    	* aSE!G$",,1(G%%a5HH[^59	;G&&q6HH[^59	;G&&q!59HH[^59	;rE   c                 p  ^^ XS.mU(       a  [         O[        mUU4S jnUU4S jnU" U" S5      5        U" U" S5      5        U" [        R                  " SUS95        U" [        R                  " SS/US95        U" [        R                  " U5      R
                  5      nU[        R                  :X  a  U(       a  g [        R                  R                  [        R                  5      S:  aO  U" U" US-
  5      5        U" [        R                  " US-
  US95        U" [        R                  " US-
  /US95        g g U[        R                  [        R                  4;   d  U(       dM  U" US-
  5        U" [        R                  " US-
  US95        U" [        R                  " US-
  US-
  /US95        g g )	Nrw  c                   > [        U [        R                  5      (       a  U R                  [        R                  5      O[        R                  " U 5      nT" [
        R                  " U 40 TD6[
        R                  " U40 TD65        T" [
        R                  " U 40 TD6[
        R                  " U40 TD65        T" [
        R                  " U 4SS0TD6[
        R                  " U4SS0TD65        g )Nrj   r   )	rc  r`   rd  r   r	  r   rz  r{  rn  )ri   n_refr]  r|  s     rA   r  ;TestFactorialFunctions.test_factorialx_uint.<locals>._check	  s    *4Q

*C*CAHHRXX&RSE))!2r2G4E4Ee4Rr4RS**133W5G5G5TQS5TU**188R8**5<A<<>rE   c                 \  > [         R                  " 5          [         R                  " S[        5        U S-  nS S S 5        T" [        R
                  " U 40 TD6W5        T" [        R                  " U 40 TD6U5        T" [        R                  " U 4SS0TD6U5        g ! , (       d  f       Nk= f)Nr`  r   rj   r   )ra  rb  simplefilterrd  r   rz  r{  rn  )ri   
shaped_infr]  r|  s     rA   
_check_inf?TestFactorialFunctions.test_factorialx_uint.<locals>._check_inf	  s    ((*%%h?U
 + ))!2r2J?**133Z@**188R8*E +*s   !B
B+r   r[   r  z2.0.0rM   )r   r   r`   r   r  r  uint64libNumpyVersion__version__uint8uint16)	r@   r  rr  r  r  r  r  r]  r|  s	          @@rA   test_factorialx_uint+TestFactorialFunctions.test_factorialx_uint	  sR    /,1(	>	F 	uQxuQxrxx'(rxxAe,-"((5/%%&BII$$R^^4?51:&288AaCu56288QqSE78	 @
 rxx++5 1Q3K288AaCu-.288QqS!A#Je45 49rE   rW   r  rQ  c           	      4   [         R                  S:X  a  SOSn[        [        [        R
                  " USS95      [        R
                  " USS9US9  [        [        R
                  " U/SS9R                  [        5      [        R
                  " U/SS9US9  g )Nr6   t0=r   Tr  FrT   )sysplatformr   r|   r   rz  r   r@   ri   rU   s      rA   test_factorial_accuracy.TestFactorialFunctions.test_factorial_accuracy	  s~    
 /uUg//>?))!59	F))1#T:AA%H))1#U;$	HrE      c                    [         R                  " U5      n[        U[        R                  " USS95        [        U[        R                  " U/SS9S   5        [        R
                  S:X  a  SOSn[        U5      n[        U[        R                  " USS9US9  [        U[        R                  " U/SS9S   US9  SS	S
.n[        U[        R                  " U40 UD6US9  [        U[        R                  " U/40 UD6S   US9  g )NTr  r   r6   +6=r   FrT   r?  rw  )r  rz  r   r   r  r  r|   r   r@   ri   r9  rU   r|  s        rA   test_factorial_int_reference3TestFactorialFunctions.test_factorial_int_reference	  s     ..#7G$5$5at$DE7G$5$5qc$Fq$IJ/uU.!2!21E!BN!2!2A3e!DQ!GdS 	2!2!21!;!;$G!2!2A3!="!=a!@tLrE   c                     S nU" SS5        U" SS5        U" SS5        U" SS	5        U" S
S5        U" SS5        U" SS5        U" SS5        U" SS5        g )Nc                    [         R                  S:X  a  SOSn[        [        R                  " U 5      XS9  [        [        R                  " U /5      S   XS9  [
        R                  " [        SS9   [        R                  " U SS	9  S S S 5        [
        R                  " [        SS9   [        R                  " U /SS	9  S S S 5        g ! , (       d  f       NG= f! , (       d  f       g = f)
Nr6   r  r   rT   r   `exact=True` only supports.*r  Tr  )r  r  r   r   rz  r  r   r  )ri   rL  rU   s      rA   r  ETestFactorialFunctions.test_factorial_float_reference.<locals>._check	  s    LLG35DG--a0(FG--qc215xKz1OP!!!40 Qz1OP!!1#T2 QP QPPPs   2C	)C	
C
C(r  gr?g(\?gc?g333333@g4s@g333333&@gމOAfffff@@g	²Gg     K@gC$JOglS@g }WgX@gX>%`g\CSe@gG=r  r@   r  s     rA   test_factorial_float_reference5TestFactorialFunctions.test_factorial_float_reference	  sl    	3 	t23t23t23t23t67t67t78t78x78rE   c                 P    S nU" SSS9  U" SSS9  U" SSS9  U" S	S
S9  U" SSS9  g )Nc                     [         R                  S:X  a  SOSnSSS.n[        [        R                  " U 40 UD6XS9  [        [        R                  " U /40 UD6S   XS9  g )	Nr6   r  V瞯<Fr?  rw  rT   r   )r  r  r   r   rz  ri   rL  rU   r|  s       rA   r  GTestFactorialFunctions.test_factorial_complex_reference.<locals>._check
  sY    LLG35D I6BG--a626LG--qc8R8;XQrE   r  gkﴑ[?rL                ykﴑ[?               @       @yB}ۿ?gH.gK	!@y      -C6?yI{xQr  r  s     rA    test_factorial_complex_reference7TestFactorialFunctions.test_factorial_complex_reference 
  sA    	R 	t34y#=>v QRw!56|&STrE   content)z[]z[1]z[1.1]z[NaN]z[NaN+i*NaN]z[NaN, 1]c                    U[         L a!  [        (       a  [        R                  " S5        U[        R
                  L a-  [        S U 5       5      (       a  [        R                  " S5        U[        R                  :X  a-  [        S U 5       5      (       a  [        R                  " S5        X4S.nUS:  d  [        U5      S:w  a  UOUS   n[        R                  " XUS9nS nUS	:X  aB  U(       a;  [        R                  " [        S
S9   [        R                  " U40 UD6  S S S 5        GO%[        UR                  / SQ5      (       d:  [        R                  " [        SS9   [        R                  " U40 UD6  S S S 5        O[        UR                  S5      (       a@  US	:w  a:  [        R                  " [        SS9   [        R                  " U40 UD6  S S S 5        OsU(       aU  [        UR                  S5      (       d:  [        R                  " [        SS9   [        R                  " U40 UD6  S S S 5        O[        R                  " U40 UD6nUb  UR!                  5        V	s/ s H  n	[        R                  " U	40 UD6PM     n
n	[        U
5      S:X  a  U
S   OU
n
UR"                  (       aV  US	:H  =(       a    [        UR                  S5      nU(       a  [        R$                  OU(       a  [&        O[        R                  n[        R                  " XUS9n[)        XSS9  g g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       GN= f! , (       d  f       GN= fs  sn	f )Nz+object arrays unsupported in array API modec              3   x   #    U  H0  n[         R                  " U5      =(       d    U[        U5      :g  v   M2     g 7fr5  r`   r   rz   .0r  s     rA   	<genexpr>KTestFactorialFunctions.test_factorial_array_corner_cases.<locals>.<genexpr>
  (     $S7aRXXa[%AQ#a&[%A7   8:impossible combinationc              3   L   #    U  H  n[        [        U5      S 5      v   M     g7fre  Nr1   r  r  s     rA   r  r  !
       &S7a|DGS'A'A7   "$rw  r   r[   r  r  r?  Incompatible options:.*r  r  r  re  r  r   r  r   rT   )r  r.   r  skipr`   r	  anyr   lenr   r   r  r   rz  r1   r  re   r	  r  r  rf  r@   r  r  r  rr  r  r|  ri   r  r  r|  cxrL  s                rA   !test_factorial_array_corner_cases8TestFactorialFunctions.test_factorial_array_corner_cases
  sy    F?KKEFBHH$S7$S!S!SKK01BJJ3&S7&S#S#SKK01/!AgW):'HHWu5Y5z1JK!!!*r* LKagg77z1JK!!!*r* LK!''3''Fi,?z1PQ!!!*r* RQ<55z1OP!!!*r* QP &&q/B/F78wwyAy!7$$Q-"-yCAHM#a&sC vv	)I|AGGS/I)+*2::xxe<Hu=  LK LK RQ QP Bs6   	L&!L7<MM%!M,&
L47
M
M
M)r  )1z1.1z2+2jr  r  r  c           	         X#S.nUS:X  aA  U(       a:  [         R                  " [        SS9   [        R                  " U40 UD6  S S S 5        g [        [        U5      SSS[        S 5      /5      (       d:  [         R                  " [        SS9   [        R                  " U40 UD6  S S S 5        g [        [        U5      S5      (       a@  US:w  a:  [         R                  " [        S	S9   [        R                  " U40 UD6  S S S 5        g Ub  [        R                  " U5      (       av  US:H  =(       a    [        [        U5      S5      nU(       a  [        R                  " S
5      O[        R                  " S5      n[        [        R                  " U40 UD6U5        g U(       aT  [        [        U5      S5      (       a:  [         R                  " [        SS9   [        R                  " U40 UD6  S S S 5        g [        [        R                  " U40 UD6[        R                  " US-   5      5        g ! , (       d  f       g = f! , (       d  f       g = f! , (       d  f       g = f! , (       d  f       g = f)Nrw  r?  r  r  r   r  re  r  r  r  r:  r  r[   )r  r   r  r   rz  r1   r  r`   r   r  r   rf  r   rt  r@   ri   r  rr  r|  r  rL  s          rA   "test_factorial_scalar_corner_cases9TestFactorialFunctions.test_factorial_scalar_corner_casesF
  s   
 /Y5z1JK!!!*r* LKd1gS#tDz'BCCz1JK!!!*r* LK$q'3''Fi,?z1PQ!!!*r* RQY"((1++ I-M<Q3MJ4>r}}Z0BJJuDUH 1 1! :r :HE|DGS11z1OP!!!*r* QP **133W]]1q55IJ# LK LK RQ QPs/   H/I &II"/
H= 
I
I"
I0rG  c           	      4   [         R                  S:X  a  SOSn[        [        [        R
                  " USS95      [        R
                  " USS9US9  [        [        R
                  " U/SS9R                  [        5      [        R
                  " U/SS9US9  g )Nr6   +=r   Tr  FrT   )r  r  r   r|   r   r{  r   r  s      rA   test_factorial2_accuracy/TestFactorialFunctions.test_factorial2_accuracya
  s~    
 /uUg00$?@**1E:	G**A3d;BB5I**A3e<4	IrE   c           
      h   [         R                  " [        R                  [	        [        USS5      5      S5      n[        U[        R                  " USS95        [        U[        R                  " U/SS9S   5        [        R                  S:X  a  SOSn[        U5      n[        U[        R                  " US	S9US
9  [        U[        R                  " U/S	S9S   US
9  S	SS.nUS-  S:X  aE  [        U[        R                  " U40 UD6US
9  [        U[        R                  " U/40 UD6S   US
9  g g )Nr   r[  r[   Tr  r6   r  r   FrT   r?  rw  rM   )	functoolsreduceoperatormulr  r{   r   r   r{  r  r  r|   r   r  s        rA   test_factorial2_int_reference4TestFactorialFunctions.test_factorial2_int_referencem
  s    ""8<<eAq"o1FJ7G$6$6q$EF7G$6$6s$$G$JK/uU.!3!3AU!C$O!3!3QCu!Ea!HtT 	2q5A:GW%7%7%@R%@tLGW%7%7%Br%B1%EDQ rE   c                 j   S nU" SSS9  U" S[         R                  " S5      [        R                  " S[        R                  -  5      -  S9  U" S[         R                  " S5      [        R                  " S[        R                  -  5      -  S9  U" SSS9  U" S	S
S9  U" SSS9  U" SSS9  U" SSS9  g )Nc                     SnSSS.n[        [        R                  " U 40 UD6XS9  [        [        R                  " U /40 UD6S   XS9  g )Nr  Fr?  rw  rT   r   )r   r   r{  r  s       rA   r  HTestFactorialFunctions.test_factorial2_complex_reference.<locals>._check
  sL    D I6BG..q7B7MG..s9b9!<hRrE   r   r  rK   rM   rr   r  g^D]?JO?r  y^D]?JO?        y      @      @y&0!:?gSt$gtQ*@y       -C6?yqj?x*)r   r{  r  r   r   r  s     rA   !test_factorial2_complex_reference8TestFactorialFunctions.test_factorial2_complex_reference
  s    	S 	q1q7--a0499Q[3IIJrG..r2TYYq477{5KKLt45y#>?v OPw!67|&UVrE   c                    U[         R                  :X  a-  [        S U 5       5      (       a  [        R                  " S5        U[         R
                  :X  a-  [        S U 5       5      (       a  [        R                  " S5        X4S.nUS:  d  [        U5      S:w  a  UOUS   n[         R                  " XUS9nS nUS:X  aA  U(       a:  [        R                  " [        S	S
9   [        R                  " U40 UD6  S S S 5        O[        UR                  / SQ5      (       d:  [        R                  " [        SS
9   [        R                  " U40 UD6  S S S 5        Ot[        UR                  SS/5      (       a@  US:w  a:  [        R                  " [        SS
9   [        R                  " U40 UD6  S S S 5        O[        R                  " U40 UD6nUb  UR                  5        V	s/ s H  n	[        R                  " U	40 UD6PM     n
n	[        U
5      S:X  a  U
S   OU
n
UR                  (       aV  US:H  =(       a    [        UR                  S5      nU(       a  [         R                   OU(       a  ["        O[         R
                  n[         R                  " XUS9n[%        XSS9  g g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       GN= fs  sn	f )Nc              3   x   #    U  H0  n[         R                  " U5      =(       d    U[        U5      :g  v   M2     g 7fr5  r  r  s     rA   r  LTestFactorialFunctions.test_factorial2_array_corner_cases.<locals>.<genexpr>
  r  r  r  c              3   L   #    U  H  n[        [        U5      S 5      v   M     g7fr  r  r  s     rA   r  r+  
  r	  r
  rw  r   r[   r  r?  r  r  r  r  r  re  r  r  rT   )r`   r	  r  r  r  r   r  r   r   r  r   r{  r1   r  re   r	  r  r  rf  r  s                rA   "test_factorial2_array_corner_cases9TestFactorialFunctions.test_factorial2_array_corner_cases
  s    BHH$S7$S!S!SKK01BJJ3&S7&S#S#SKK01/!AgW):'HHWu5Y5z1JK""1++ LKagg77z1JK""1++ LK!''C:..6Y3Fz1PQ""1++ RQ ''0R0F89	B	17%%a.2.	CBHM#a&sC vv	)I|AGGS/I)+*2::xxe<Hu=  LK LK RQ Cs*    J"7J3K!!K"
J03
K
Kc           	         X#S.nUS:X  aA  U(       a:  [         R                  " [        SS9   [        R                  " U40 UD6  S S S 5        g [        [        U5      SSS[        S 5      /5      (       d:  [         R                  " [        SS9   [        R                  " U40 UD6  S S S 5        g [        [        U5      SS/5      (       a@  US:w  a:  [         R                  " [        S	S9   [        R                  " U40 UD6  S S S 5        g Ub  [        R                  " U5      (       av  US:H  =(       a    [        [        U5      S5      nU(       a  [        R                  " S
5      O[        R                  " S5      n[        [        R                  " U40 UD6U5        g U R                  " U4SS0UD6n[        [        R                  " U40 UD6USS9  g ! , (       d  f       g = f! , (       d  f       g = f! , (       d  f       g = f)Nrw  r?  r  r  r   r  re  r  r  r  r:  rj   rM   r   rT   )r  r   r  r   r{  r1   r  r`   r   r  r   rf  rt  r  s          rA   #test_factorial2_scalar_corner_cases:TestFactorialFunctions.test_factorial2_scalar_corner_cases
  s   
 /Y5z1JK""1++ LKd1gS#tDz'BCCz1JK""1++ LK$q'C:..6Y3Fz1PQ""1++ RQY"((1++ I-M<Q3MJ4>r}}Z0BJJuDUH 2 21 ; ;XF**188R8H 2 21 ; ;XER LK LK RQs#   GG$(G5
G!$
G25
Hrj   r  rr   ic           
      8   [         R                  S:X  a  SOSn[        [        [        R
                  " XSS95      [        R
                  " XSS9US9  [        [        R
                  " U/USS9R                  [        5      [        R
                  " U/USS9US9  g )Nr6   r  r  Trl  FrT   )r  r  r   r|   r   rn  r   )r@   ri   rj   rU   s       rA   test_factorialk_accuracy/TestFactorialFunctions.test_factorialk_accuracy
  s     /uUg00tDE**1?d	L**A3!4@GGN**A3!5A	NrE   r  c           
      r   [         R                  " [        R                  [	        [        USU* 5      5      S5      n[        U[        R                  " XSS95        [        U[        R                  " U/USS9S   5        [        R                  S:X  a  SOSn[        U5      n[        U[        R                  " XSS9US	9  [        U[        R                  " U/USS9S   US	9  USS
S.nX-  S:X  aG  Sn[        U[        R                  " U40 UD6US	9  [        U[        R                  " U/40 UD6S   US	9  g g )Nr   r[   Tr  r6   gt =r  FrT   r?  r  r  )r  r  r   r!  r  r{   r   r   rn  r  r  r|   r   )r@   ri   rj   r9  rU   r|  s         rA   test_factorialk_int_reference4TestFactorialFunctions.test_factorialk_int_reference
  s    ""8<<eAq1"o1FJ7G$6$6q4$HI7G$6$6sAT$J1$MN/uU.!3!3A!FTR!3!3QC%!H!KRVW u	:5A:DGW%7%7%@R%@tLGW%7%7%Br%B1%EDQ rE   c           
      "   S nU" SS[         R                  " SSSS9S9  U" SSSS9  U" S	SS
S9  U" SSSS9  U" SSSS9  U" SSSS9  U" SSSS9  U" SSSS9  U" SSSS9  U" SSSS9  U" SSSS9  U" SSSS9  U" SSSS9  U" SSS S9  U" S!SS"S9  g )#Nc                     SnUSSS.n[        [        R                  " U 40 UD6X#S9  [        [        R                  " U /40 UD6S   X#S9  g )Nr  Fr?  r  rT   r   )r   r   rn  )ri   rj   r   rU   r|  s        rA   r  HTestFactorialFunctions.test_factorialk_complex_reference.<locals>._check  sN    D5I>BG..q7B7HG..s9b9!<cMrE   rK   r   Trl  )ri   rj   r   r   gD!)@g      @gNq53@r  gG`@rG  g     @y             @y            @y      @      @yRsU#[@y      @      y?M,a?y@/n?'?r  gyL_ǚZ?r  yyL_ǚZ?        g333333@gffffffyNV?*V7?g333333y)kh]bg):giߑT@y      -C6?y(5E?WT)r   rn  r  s     rA   !test_factorialk_complex_reference8TestFactorialFunctions.test_factorialk_complex_reference  s    	N 	aW//QdCDa0123c23s'W51"RSf"QR6'VW 67a%@A"RS#UVA#89(VWrE   c                    U[         R                  :X  a-  [        S U 5       5      (       a  [        R                  " S5        U[         R
                  :X  a-  [        S U 5       5      (       a  [        R                  " S5        SX4S.nUS:  d  [        U5      S:w  a  UOUS   n[         R                  " XUS9nS nUS	:X  aA  U(       a:  [        R                  " [        S
S9   [        R                  " U40 UD6  S S S 5        O[        UR                  / SQ5      (       d:  [        R                  " [        SS9   [        R                  " U40 UD6  S S S 5        Ot[        UR                  SS/5      (       a@  US	:w  a:  [        R                  " [        SS9   [        R                  " U40 UD6  S S S 5        O[        R                  " U40 UD6nUb  UR                  5        V	s/ s H  n	[        R                  " U	40 UD6PM     n
n	[        U
5      S:X  a  U
S   OU
n
UR                  (       aV  US	:H  =(       a    [        UR                  S5      nU(       a  [         R                   OU(       a  ["        O[         R
                  n[         R                  " XUS9n[%        XSS9  g g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       GN= fs  sn	f )Nc              3   x   #    U  H0  n[         R                  " U5      =(       d    U[        U5      :g  v   M2     g 7fr5  r  r  s     rA   r  LTestFactorialFunctions.test_factorialk_array_corner_cases.<locals>.<genexpr>8  r  r  r  c              3   L   #    U  H  n[        [        U5      S 5      v   M     g7fr  r  r  s     rA   r  r?  :  r	  r
  r   r  r   r[   r  r?  r  r  r  r  r  re  r  r  rT   )r`   r	  r  r  r  r   r  r   r   r  r   rn  r1   r  re   r	  r  r  rf  r  s                rA   "test_factorialk_array_corner_cases9TestFactorialFunctions.test_factorialk_array_corner_cases+  s    BHH$S7$S!S!SKK01BJJ3&S7&S#S#SKK01u7!AgW):'HHWu5Y5z1JK""1++ LKagg77z1JK""1++ LK!''C:..6Y3Fz1PQ""1++ RQ ''0R0F89	B	17%%a.2.	CBHM#a&sC vv	)I|AGGS/I)+*2::xxe<Hu=  LK LK RQ Cs*   !J#8J4K"!K#
J14
K
Kc           	      
   X#US.nUS:X  aA  U(       a:  [         R                  " [        SS9   [        R                  " U40 UD6  S S S 5        g [        [        U5      SSS[        S 5      /5      (       d:  [         R                  " [        SS9   [        R                  " U40 UD6  S S S 5        g [        [        U5      SS/5      (       a@  US:w  a:  [         R                  " [        S	S9   [        R                  " U40 UD6  S S S 5        g Ub  [        R                  " U5      (       av  US:H  =(       a    [        [        U5      S5      nU(       a  [        R                  " S
5      O[        R                  " S5      n[        [        R                  " U40 UD6U5        g U R                  " U40 UD6n[        [        R                  " U40 UD6USS9  g ! , (       d  f       g = f! , (       d  f       g = f! , (       d  f       g = f)Nr  r?  r  r  r   r  re  r  r  r  r:  r   rT   )r  r   r  r   rn  r1   r  r`   r   r  r   rf  rt  )r@   ri   rj   r  rr  r|  r  rL  s           rA   #test_factorialk_scalar_corner_cases:TestFactorialFunctions.test_factorialk_scalar_corner_cases\  s    7Y5z1JK""1++ LKd1gS#tDz'BCCz1JK""1++ LK$q'C:..6Y3Fz1PQ""1++ RQY"((1++ I-M<Q3MJ4>r}}Z0BJJuDUH 2 21 ; ;XF**133H 2 21 ; ;XER LK LK RQs#   GG#)G4
G #
G14
HrP   r   r   c                    U(       a  S/OSnXUS.nUS:X  a^  Sn[        [        U5      S5      (       a  US:  a  Sn[        R                  " [        US9   [
        R                  " U40 UD6  S S S 5        g US:X  a:  [        R                  " [        S	S9   [
        R                  " U40 UD6  S S S 5        g [
        R                  " U40 UD6  g ! , (       d  f       g = f! , (       d  f       g = f)
Nr[   r  rm  r  r   zFor `extend='zero'`.*r  r   zParameter k cannot be zero!)r1   r  r  r   r  r   rn  )r@   rj   r  rr  r  ri   r|  rQ  s           rA    test_factorialk_raises_k_complex7TestFactorialFunctions.test_factorialk_raises_k_complexu  s    
 QCa7V1CDGS))q1u-z5""1++ 65!Vz1NO""1++ PO q'B' 65 POs   CC
C
C-r  c                     U(       a  S/OSnXUS.n[         R                  " [        SS9   [        R                  " U40 UD6  S S S 5        g ! , (       d  f       g = f)Nr[   r  r  r  )r  r   r  r   rn  )r@   rj   r  rr  r  ri   r|  s          rA   test_factorialk_raises_k_other5TestFactorialFunctions.test_factorialk_raises_k_other  sH     QCa7]]:-FGq'B' HGGs   A
Ar  c                    XUS.nU(       Ga  U[         R                  " 5       ;   Ga  [        R                  " [        U   /5      n[        [        R                  " U40 UD6R                  [        5        [        [        R                  " US-   40 UD6R                  [        R                  5        [        R                  " US-   40 UD6[        R                  " [        R                  5      R                  :  d   e[        R                  " [         U   /5      n[        [        R                  " U40 UD6R                  [        R                  5        [        [        R                  " US-   40 UD6R                  [        5        [        R                  " US-   40 UD6[        R                  " [        R                  5      R                  :  d   eg [        R                  " [         R                  " US5      /5      nU(       a  [        O[        R                   n[        [        R                  " U40 UD6R                  U5        g )Nr  r[   )r/   keysr`   r   r0   r   r   rn  r  r*   r	  r  int32r  r  getr   )r@   rj   r  rr  r|  ri   r  s          rA   test_factorialk_dtype,TestFactorialFunctions.test_factorialk_dtype  s    7Q388::3A678A++A44::GD++AE8R8>>I%%a!e2r2RXXbhh5G5K5KKKK3A678A++A44::BHHE++AE8R8>>G%%a!e2r2RXXbhh5G5K5KKKK3771=>?A $FE++A44::EBrE   c                    [         R                  " [         R                  SSS[         R                  /5      n[         R                  " [         R                  SSS[         R                  /5      n[        [        R
                  " USS9U5        [        R                  " [        SS9   [        R
                  " US	S9  S S S 5        g ! , (       d  f       g = f)
Nr[   rM   r   rQ   Fr  r  r  T)	r`   r   r:  r   r   rz  r  r   r  r@   r  rL  s      rA   test_factorial_mixed_nan_inputs6TestFactorialFunctions.test_factorial_mixed_nan_inputs  s    HHbffaArvv./88RVVQ1bff56W&&q6A]]:-KLat, MLLs   'C
Cr  )?r  r  r  r  rt  r  r  r  r}  r  r  r  r  r`   r:  r   r  r   
datetime64r   rz  r{  rn  r  r  r{   r  rz   int8int16rN  r	  r  r  uint32r  r  r  r(  r  r  r  r  r  r  r  r  r  r  r"  r'  r-  r0  r3  r6  r;  rA  rD  rG  rJ  rP  rT  r  r  rE   rA   rj  rj    s   ' [[^RT=T= [[S,/[[WtUm4: 5 0: [[WtUm4S 5S [[S"45T 6T& [[VaW-[[Y5) 6 .)4 [[WtUm4[[X	':;[[FFBJJu%rvvr	'92==;TFFBFFRK"&&266'B,bmmE>R	

  
 [[			G..0B0BC2	
 < 5"2B [[X3'ABB CB [[XuQ{3[[WtUm4F 5 4F< [[WtUm4[[Wc277BHHbhh
"))RYY		'  [[UE!QK05 1	 55 [[WtUm4[[WeAqk2; 3 5;" [[1[[WrxxBIIryy&QR[[^RT)6T S )6X [[S%C"45	H 6	H [[S!%2,/$uRb7I2JJLMLM"9.U  [[Wrxx')}}f'> ?[[X	':;[[WtUm4[[UE!QK0[[	aS3%"&&BFFRVVb[$8#9BFFA;GF  
)> 1 5 <?)>V [[X	':;[[WtUm4[[S1c6266266BFF2I;Mt"T!Q  SKS 5 <K. [[S%C"45	I 6	I [[S!%2,/$uRb7I2JJLRLR,W* [[Wrxx')}}f'> ?[[X	':;[[WtUm4[[UE!QK0[[	aS3%"&&BFFRVVb[$8#9BFFA;GF  
$> 1 5 <?$>L [[X	':;[[WtUm4[[S1c6266266BFF2I;Mt"T!Q  SSS 5 <S( [[S%1+. [[S%R"56	N 7 /	N [[S$uQ{"3r2h">?[[S!%2,/$uRb7I2JJLRL @R0X< [[Wrxx')}}f'> ?[[X	':;[[WtUm4[[UE!QK0[[	aS3%"&&BFFRVVb[$8#9BFFA;GF  
$> 1 5 <?$>L [[X	':;[[WtUm4[[S%1+.[[S1c6266266BFF2I;Mt"T!Q  SSS / 5 <
S( [[WtUm4[[^RT[[S2tQVS"&&"IJ( KT 5(  [[WtUm4[[^RT [[S8R]]5-A"B"*E!2  4(4T 5( [[^RT[[S%2,/C 0TC(-rE   rj  c                       \ rS rSr\R
                  R                  SSSSSSSS	S
S\R                  SS4\R                  * SS4/5      S 5       r	S r
S rS rSrg)TestFresneli  z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                 n    [        [        R                  " U5      5      n[        U[        X#/5      SSS9  g )Nr  r   r^   )r   r   rn  r   )r@   rK  r  re  frss        rA   test_fresnel_valuesTestFresnel.test_fresnel_values  s,    @ GOOA&'UA6]a@rE   c                 $   [         R                  " S5      u  p[        U[        / SQ5      SSS9  [        U[        / SQ5      SSS9  [         R                  " U5      S   n[         R                  " U5      S   n[        USSSS9  [        USSSS9  g )	Nr   )y @X9v?y^I@48E?y=
ףp@+?y@eX?yO@Ǻ?~jtX?r   r^   )y.1?ǘ?yʡE6@:#J{/?yq-
@y&1?yh o@߾3?yW2q@qh?r[   rW  )r   fresnel_zerosr   r   rn  )r@   szoczovals1vals2s        rA   test_fresnel_zerosTestFresnel.test_fresnel_zeros  s    ((+U $4 5
 $!	- 	U $4 5
 $!	- $Q'$Q'qwQ7qwQ7rE   c                 v    [         R                  " S5      u  p[         R                  " S5      n[        X2SSS9  g )NrQ   Afcz=r   r^   )r   rf  fresnelc_zerosr   )r@   rg  rh  frcs       rA   test_fresnelc_zerosTestFresnel.test_fresnelc_zeros  0    ((+$$Q'wQ7rE   c                 v    [         R                  " S5      u  p[         R                  " S5      n[        X1SSS9  g )Nr   rn  r   r^   )r   rf  fresnels_zerosr   )r@   rg  rh  ra  s       rA   test_fresnels_zerosTestFresnel.test_fresnels_zeros  rs  rE   r  N)r  r  r  r  r  r  r  r`   r   rb  rk  rq  rv  r  r  rE   rA   r[  r[    sz    [[Y7=	

	
 	&,)/*	c
&&$;) >A?>A8&8
8rE   r[  c                      \ rS rSrS rS rS r\S 5       r\S 5       r	S r
S r\R                  R                  S	\R                   * \R                   /\R"                  \R                   /4S
S/\R                   * \R                   /4\" SS5      \R&                  " S\R"                  5      4\" SSS5      \R&                  " S\R"                  5      4S/\R"                  /4/5      S 5       rSrg)	TestGammai  c                 H    [         R                  " S5      n[        US5        g rr  )r   rt  r   )r@   gams     rA   ru  TestGamma.test_gamma  s    mmASrE   c                     [         R                  " S5      n[        [         R                  " S5      5      n[	        XSSS9  g )Nr   r  r   r^   )r   r|  r   rt  r   )r@   gamlnlngams      rA   r}  TestGamma.test_gammaln  s/    "GMM!$%6:rE   c                 v    [         R                  " SS5      n[         R                  " SS5      n[        XSSS9  g )Nr   r  r   r^   )r   rx  gammaincinvr   )r@   gccinvgcinvs      rA   ry  TestGamma.test_gammainccinv  s2    %%b,##Br*F;rE   c                 J   [         R                  " SS5      n[         R                  " SU5      n[        USSSS9  [         R                  " SS5      n[         R                  " SS5      n[        SUSSS9  [        USSSS9  [         R                  " SS	5      n[        S
USSS9  g )NrN   r  r   r^   rQ  g?g`	\;r  gmb<g      &@)r   r  gammaincr   r@   rJ  r  s      rA   test_gammaincinvTestGamma.test_gammaincinv  s    2&R"3W15R&$:;agA61aH$JKagA6rE   c                     S[         R                  " SS5      S[         R                  " SS5      S/nU H;  n[        R                  " SU5      n[        R                  " SU5      n[        XBSS9  M=     g )	Nrv  r   gCs?r[   g^F    ?rN   r   rT   )r`   r  r   r  r  r   )r@   ptsptrJ  r  s        rA   test_975TestGamma.test_975  sh    
 ||D!$l||D!$l4 B##B+A  a(AA. rE   c                 x    [         R                  " S5      nS[         R                  " S5      -  n[        XSSS9  g )Nrt  r[   r  r   r^   )r   ry  rt  r   )r@   rgamrlgams      rA   rz  TestGamma.test_rgamma   s/    ~~a '--""&q9rE   c                 D    [        [        R                  " S5      S5        g )NrP   r   )r   r   ry  r?   s    rA   test_infinityTestGamma.test_infinity%  s    W^^B'+rE   z
x,expectedr  r   ir       i c   rG  gP²Zdbc                 D    [        [        R                  " U5      U5        g r5  )r   r   rt  rS  s      rA   
test_polesTestGamma.test_poles(  s      	7==+X6rE   r  N)r  r  r  r  ru  r}  ry  r2   r  r  rz  r  r  r  r  r`   r   r:  r{   fullr  r  r  rE   rA   ry  ry    s    ;
<
 	7 	7 
/ 
/:
, [[ vvgrvv 01C[BFF7BFF+,3]BGGB/05#r"BGGB$78$%x0	
77rE   ry  c                   J    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rSrg)
TestHankeli;  c                 r    [        [        R                  " SS5      [        R                  " SS5      * SSS9  g Nr  rM   r   rW  r   r^   )r   r   r  r?   s    rA   
test_negv1TestHankel.test_negv1=  ,    A.A1F0F$1	.rE   c                     [         R                  " SS5      n[         R                  " SS5      [         R                  " SS5      S-  -   n[	        XSSS9  g Nr[   rE  rH  r  r   r^   )r   r  r
  r  r   )r@   hank1hankrls      rA   r  TestHankel.test_hankel1A  sC    "%**Qr"WZZ"%5b%88F;rE   c                 r    [        [        R                  " SS5      [        R                  " SS5      * SSS9  g r  )r   r   r  r?   s    rA   test_negv1eTestHankel.test_negv1eF  0    ((Q/'2B2B1a2H1H$1	.rE   c                     [         R                  " SS5      n[         R                  " SS5      [        S5      -  n[	        XSSS9  g )Nr[   rE  y       r  r   r^   )r   r  r  r   r   )r@   hank1ehankrles      rA   r  TestHankel.test_hankel1eJ  s9    !!!B'//!B'D	1f1=rE   c                 r    [        [        R                  " SS5      [        R                  " SS5      * SSS9  g r  )r   r   r  r?   s    rA   
test_negv2TestHankel.test_negv2O  r  rE   c                     [         R                  " SS5      n[         R                  " SS5      [         R                  " SS5      S-  -
  n[	        XSSS9  g r  )r   r  r
  r  r   )r@   hank2hankrl2s      rA   r  TestHankel.test_hankel2S  sC    "%::a#gjj2&6r&99V!<rE   c                 r    [        [        R                  " SS5      [        R                  " SS5      * SSS9  g r  )r   r   r  r?   s    rA   
test_neg2eTestHankel.test_neg2eX  r  rE   c                 v    [         R                  " SS5      n[         R                  " SS5      n[        XSSS9  g )Nr[   rE  r  r   r^   )r   r  r   )r@   hank2ehankrl2es      rA   test_hankl2eTestHankel.test_hankl2e\  s2    !!!B'##Ab)vA>rE   c                     [         R                  " SS5      n[        R                  " UR                  5      (       d   e[        R
                  " UR                  5      (       d   eg r<   )r   r  r`   r   r   isposinfrI  r@   r  s     rA   test_hankel2_gh4517TestHankel.test_hankel2_gh4517a  sD    ooa#xx!!!!{{388$$$$rE   r  N)r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rE   rA   r  r  ;  s/    .<
.>
.=
.?
%rE   r  c                   P    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rSrg)	TestHyperih  c                     [         R                  " SS5      n[         R                  " SS5      [         R                  " SS5      S-  -   n[	        XSSS9  g r  )r   h1vpjvpyvpr   )r@   h1h1reals      rA   	test_h1vpTestHyper.test_h1vpi  C    \\!B++a#gkk!B&7&::a8rE   c                     [         R                  " SS5      n[         R                  " SS5      [         R                  " SS5      S-  -
  n[	        XSSS9  g r  )r   h2vpr  r  r   )r@   h2h2reals      rA   	test_h2vpTestHyper.test_h2vpn  r  rE   c                    [        [        R                  " SS5      SSS9  [        [        R                  " SS5      SSS9  [        R                  " S	/ S
Q5      n[        R                  " / SQ5      n[        XSS9  [        R                  " S	[        R                  " / S
Q5      S-   5      n[        XR                  [        5      SS9  / SQn/ SQn[        R                  " X45      n/ SQn[        XSS9  [        R                  " [        R                  " U/S-  5      U5      n[        U[        R                  " U/S-  5      SS9  [        [        [        R                  [        R                  " U/S-  5      SS/5        g )Nr  r   Qvo?r   rT   r   r   r   r~  )g      rP   r   r[   ru  )g̷?g3|t-Ք?r   go?g{h?r>  r   ru  r  )r   r[   r   )r   gc?r  rM   r   r[   )
r   r   hyp0f1r`   r   r   r?  vstackassert_raisesr  )r@   r  rL  r  x2s        rA   test_hyp0f1TestHyper.test_hyp0f1s  s"   sC02BOsA.%@ NN3 5688 A B%0 NN3)> ?# EF??73%@ NN2">%0NN299bTAX.3299hZ!^45Aj'..iiq)Aq6	3rE   c                 J    [         R                  " SS5      n[        USSSS9  g )N皙?y      ?      ?y;EG?uM?r   r   r^   )r   r  r   r  s     rA   test_hyp0f1_gh5764TestHyper.test_hyp0f1_gh5764  s&     nnS,/H#!	-rE   c                     [         R                  " SSS5      n[        USSSS9  [        / / SQP/ SQP/ S	QP/ S
QP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ SQP/ S QP/ S!QP/ S"QP/ S#QP/ S$QP/ S%QP/ S&QP/ S'QP/ S(QP/ S)QP/ S*QP/ S+QP/ S,QP/ S-QP/ S.QP/ S/QP/ S0QP/ S1QP/ S2QP/ S3QP/ S4QP/ S5QP/ S6QP/ S7QP/ S8QP/ S9QP/ S:QP/ S;QP/ S<QP/ S=QP/ S>QP/ S?QP/ S@QP/ SAQP/ SBQP/ SCQP/ SDQP/ SEQP/ SFQP/ SGQP/ SHQP/ SIQP/ SJQP/ SKQP/ SLQP/ SMQP/ SNQP/ SOQP/ SPQP/ SQQP/ SRQP/ SSQP/ STQP/ SUQP/ SVQP/ SWQP/ SXQP/ SYQP/ SZQP/ S[QP/ S\QP/ S]QP/ S^QP/ S_QP/ S`QP/ SaQP/ SbQP/ ScQP/ SdQP/ SeQP/ SfQP/ SgQP/ ShQP/ SiQP/ SjQP5      nU H9  u  p4pV[         R                  " X4U5      n[	        [        Xg-
  5      U-  Sk:  5        M;     g )lNrE  rF  g?r   r   r^   )g{*= g˱a)g5=gvX@)g)AI@gDAhg$Pj)g~٭@)g,qUp,g@=&?gX 3@gZ@)g\@g88*@g\ֳ!=@g   ƞA)gAZ;gOFA'gxŝO<g_Dc D)g^g@g V*E7g4)3@g7-XtD)gΧU(@g2Tj8g$@g  LhB)ge;@gJgogr@g `屫B)g5'.@gqZ=g7߈Y.g8w)gB,@g"^#@grT[	R3@g  B)gYgN],*@g*!j,g1@)g#r @gq{874*gWs%o.@gMdD)g8|.2@g*!,g?I(#@gJ
r .)gu8g#=)@g*'1g)ψvA)g%0N:@gUx1@gx@gr),c@)g:M8@gGb+=@g3ҜV/@gX9ҙim@)g"dxz@gqKgv7##@g  >B)g kx-gD8L+8@g܈2g72LU@)gtd@Q4h6@g%@}gr3b @gu߯ѡ)g򋷺?g"p$`E2@gY|T3g\D?)gV-(+@g$[3@g;/@gEQwв@)g[fgLL4gQV@g0#.@)g;@g/?jvgx.<N&@g^I)g+9gX[?gbZSH%@g5/)@)g}RgŢ	@g},*@g6@g1w-@)gRA(g_@g5A} :=g   FA)gQz5@gq.#gTq&gc ?)gφ%#gZV@
g%@0@g   Syd)gB۽ܟ%@g*>8gV@'g	ʦ)g/H:gn@S g)bǙ9@g  9)gT쁹3!gD gkLFr%@g3333`4A)g:k
g\=)'gi,k9gbx?)giXwg-CwU5@g'jin9gX5@)gb@gTy4#/@g]pH=gIw?)g63@g2XxM:@g~?^0gW1?)g37g R{@gicx.4?gmm?)gv܏%7@g9Ma%=g}ygGr##@)gG8-xы.@gǂ@ghb(@g  A)gw1@gq2@gO],@g0ɷ-X@)g2@g́y#<@gͣx?g]?)g];˄f$@g1}0g_9g8ڃ@)g:!ω1g)q(@gg2gv%)A)gYN:+gn	Ȱ-?g>gZd|I.A)gr/K@g\}L9@g*gΙ?)gQq5V@g?)@g'@0@glۭ`@)gVn:gRQ0gT&g QC)gR4 8gi+gK @g{G)gtiq+g(O?3g	1=@g  8cB)g|>oϘg\!<@g"?4V?g%c\q?)g gpfP!gAO:@g,\)g=R8@g%;gz3@g~0G)g.CVl@ge< .@g9@gkq1A)g=~$gpR7@g 77g,ǆ@)g^g{)gRA2@g  dL)gf=4,R@gyO-g#ޕ~8@g)g|ݩ%P4g:<9@gKzs4g$(~O4@)g2y3@g1$6g&TpxA6gG!JA)gf^XH
^;@g7r:@g`,/@gi{dA)gihx@g!B8(@g7j*@gh@)glmF<gpO4@g`2"@g-)gnV3!2@g.mq1g!Z{.@grOE)gs`m@gzAUguC=V#@g  \)gPL-(@g,9$"9g6u7@geRF)gw8gv=5@gjRW+g(\-@)gyg~=@g4MVgwz:@)g^0g+7%g-@j81g5ׂ,j)gj4gz0g-</;gݽ]
D)gN43@g}W6@gLUS!9gɍF>)g Q4@g=}gȮ5@g]nhgF)gV9g9gf9,#gF|}fv?)g=^ee;@gy}2g'T> g#o@)g+5g;gN8Cg8@g   bkA)gSx+26@g@gI0gSMC)gT*0@g`<6gWy5@gǟRj)gӰk
g/:?gJLHR"@gxu-)gKu@g6gt8_x7@gd;=')g+:;@gBͤ10@g";gK$?)gp @g dg	=@g=6` F)gTbR.g9:g3@gUfgRbKZ@)g!g%P73;g]?gr	y?)g)Yv2gȹq@g/3g   A)g?j/|g7:@g#~oݽ?g8pE?)gPj/gS"X)gYgt0N?)ggo&	xT7@g-hT@#@g.;%r?)g'_@gɖ@7g:Kڞ$@g [B)gk5ں9gѼ:gk%tp;@g  .<^)gf:OI&gO/g#01|2gf`Y)gqv~@guFd9@gz+S7gF1/$?)gx3g~[6:g;s9@gKw*1@)gP@gv;K,gҬd&<@g!s)gֈ`|.gOwx=@g+MK<gUU@)gکI@g©jG1g4g؃66@g(4ν4E)gS>?gD-lgSL,c<gԉE4?)gd?A g3$)glx^?gs>|T?)g(%@g:ĉ$@g~^gv2gJHF&?)g}r":@g3\z;@go)@g+hA)g@')"gVv/@guQU-gfy2yt@)gM6y%$g/;R#@g):@gw%",6Կ)g%x'g$6g5gu$9?)glkC9g<tF8gp?g ?r  )r   r  r   r   r   r  )r@   hyp1ref_datar  r  re  rL  r  s           rA   r  TestHyper.test_hyp1f1  s   ~~bB'0vAF  e
Oe
Ne
 Ne
 M	e

 Pe
 Ne
 Ne
 Ne
 Pe
 Me
 Oe
 Ne
 Oe
 Oe
 Me
  M!e
" N#e
$ O%e
& O'e
( N)e
* M+e
, O-e
. O/e
0 N1e
2 M3e
4 O5e
6 O7e
8 P9e
: P;e
< P=e
> O?e
@ PAe
B OCe
D NEe
F NGe
H NIe
J OKe
L MMe
N MOe
P MQe
R OSe
T OUe
V OWe
X NYe
Z M[e
\ Q]e
^ P_e
` Oae
b Nce
d Pee
f Nge
h Mie
j Oke
l Pme
n Ooe
p Oqe
r Ose
t Mue
v Mwe
x Oye
z N{e
| O}e
~ Ne
@ OAe
B OCe
D QEe
F PGe
H NIe
J NKe
L PMe
N OOe
P OQe
R OSe
T OUe
V OWe
X OYe
Z N[e
\ N]e
^ O_e
` Oae
b Oce
d Nee
f Pge
h Nie
j Nke
l Pme
n Qoe
p Nqe
r Ose
t Oue
v Owe
x Nye
z O{e
| O}e
~ Ne
@ MAe
B OCe
D OEe
F PGe
H OIe
 eN 'NA^^A*FC)*83d:; 'rE   c                 z    [         R                  " SSS5      n[         R                  " SSS5      n[        XSSS9  g )Nr   ru  g7B.g|:B.rn  r   r^   r   r  r   )r@   r  hyp2s      rA   test_hyp1f1_gh2957TestHyper.test_hyp1f1_gh2957	  s2    ~~c38~~c38q9rE   c                 L    [         R                  " SSS5      n[        USSSS9  g )Nr   ru  ig<`?rn  r   r^   r  )r@   hyps     rA   test_hyp1f1_gh2282TestHyper.test_hyp1f1_gh2282  s#    nnS#u-1aHrE   c                 >   SSSSS[        S5      -  /SSSSS[        S	5      -  /SSS
S	S[        S5      -  // SQSSS[        S	5      S
-  [        S5      /SSSS[        R
                  " S5      [        R
                  " S5      -  [        R
                  " S5      -  [        R
                  " S5      -  /SS
S
SS[        [        5      -  [        R
                  " S
5      -  [        R
                  " S5      -  [        R
                  " S5      -  /SS
SSS[        [        5      -  [        R
                  " S5      -  [        R
                  " S5      -  [        R
                  " S5      -  /SSSSS[        R
                  " S5      -  [        R
                  " S5      -  [        R
                  " S5      -  [        R
                  " S5      -  // SQ/ S Q/ S!Q/ S"Q/ S#QS$S%/n[        U5       H0  u  nu  p4pVn[        R                  " X4XV5      n[        XS&S'S(U 3S)9  M2     g )*Nr   r[   ru  |Gz?r  g?g|Gzr   r   rM   r  r  )r   r  ru  r  gYi2?r  r   g433333?rK   rt  r   rP   r  r  g      ?r~        @g      gUUUUUUտg  @gUUUUUU?g)ru  r  r         $gEciH!@)r[  r   r[   ffffff?gzG?)rM   r  r[   r  gy&1|)r  r   r[   r  g"nN%@?)rM   r  r[   r  g!J)rQ  |      %@r  gzS;)rQ  r  g      %r  g[B.VP<r  r   test #r_   rU   err_msg)r   r   r	   r
   r   rt  r   r   r  r  r   )	r@   valuesr   r  r  re  r  r  cvs	            rA   r  TestHyper.test_hyp2f1  s    !S&'#o*>">?!S'6&+#561c6#e*,-MCS1c'l31a]]1e 44}}S!"$+MM#$678 5"T"Xe 44}}Y'(*1--	*BCD 5"T"Xe 44}}Y'(*1--	*BCD wGMM$//'--2HH}}T"#%,]]8%<=>
 ; &&GH9
< #,F"3AaAa+BBQ&M #4rE   c                 N   [         R                  " SSS5      n[        USSSS9  / SQ/ S	Qp2[        U5      [        U5      p2S
n[         R                  " X#U5      n[        [        [        U-  5      -  [         R                  " X#U5      [         R                  " SU-   U-
  5      [         R                  " U5      -  -  USU-
  -  [         R                  " SU-   U-
  SU-
  U5      -  [         R                  " U5      [         R                  " SU-
  5      -  -  -
  -  n[        XVSSS9  g )Nr[   rE  r  g D?r   r   r^   )rF  r  333333?g)ru  g	@r  g	r   rM   rn  )r   hyperur   r   r   r	   r  rt  )r@   val1r  r  rK  hypuhprls          rA   test_hyperuTestHyper.test_hyperu6  s    ~~aC(if1= !4!aj'!*!~~a!$3r!t9w~~a!4 'ac!e 4W]]15E E G 1Q3xqs1uQqS(CC")--"27==13E"E G G H 	q9rE   c                 H    [        [        R                  " SSS5      SSSS9  g )Nr[   ru  g3333334@g(¨?rn  r   r^   )r   r   r  r?   s    rA   test_hyperu_gh2287TestHyper.test_hyperu_gh2287C  s!    q#t46J$1	.rE   r  N)r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rE   rA   r  r  h  s9    9
9
34-r<h:
I"NH:.rE   r  c                      \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(S' r)S( r*S) r+S* r,S+ r-S, r.S- r/S. r0S/ r1S0 r2S1 r3S2 r4STS4 jr5\6Rn                  Rq                  \9Rt                  " 5       S5:H  S6S79S8 5       r;\6Rn                  Rq                  \9Rt                  " 5       S5:H  S6S79S9 5       r<S: r=S; r>\6Rn                  R~                  S< 5       r@S= rAS> rBS? rCS@ rDSA rESB rFSC rGSUSD jrHSE rISF rJSG rKSH rLSI rMSJ rNSK rOSL rPSM rQSN rRSO rSSP rTSQ rUSR rVSSrWg3)V
TestBesseliH  c                 p    [        [        R                  " S5      5      n[        U[        SS/5      SSS9  g )Nr   gbɃ?gΝJ ֿr  r   r^   )r   r   r  r   )r@   it0s     rA   r  TestBessel.test_itj0y0I  s2    GNN2&'U$79M#NO#!	-rE   c                 p    [        [        R                  " S5      5      n[        U[        SS/5      SSS9  g )Nr   gbqTtt?g/]ooۿr  r   r^   )r   r   r  r   )r@   it2s     rA   r  TestBessel.test_it2j0y0N  s2    GOOB'(U$9;O#PQ#!	-rE   c                 p    [        [        R                  " SS5      [        R                  " SS5      5        g Nr   rM   r  )r   r   r  r?   s    rA   test_negv_ivTestBessel.test_negv_ivS  s!    WZZ!_gjjA&67rE   c                 t    [         R                  " S5      n[         R                  " SS5      n[        XSSS9  g NrE  r   r  r^   )r   r  r  r   r@   ozozrs      rA   r  TestBessel.test_j0V  +    ZZ^jj2f15rE   c                 t    [         R                  " S5      n[         R                  " SS5      n[        XSSS9  g NrE  r[   r  r   r^   )r   r  r  r   r@   o1o1rs      rA   r  TestBessel.test_j1[  r  rE   c                 J    [         R                  " SS5      n[        USSSS9  g )Nr[   r   ;x?r  r   r^   )r   r  r   )r@   jnnrs     rA   r  TestBessel.test_jn`  s!    zz!B2aHrE   c                 r    [        [        R                  " SS5      [        R                  " SS5      * SSS9  g r  r   r   r
  r?   s    rA   test_negv_jvTestBessel.test_negv_jvd  s*    

2q)GJJq!,<+<7QRSrE   c           	          / SQ/ SQ/ SQ/ SQ/ SQ/n[        U5       H.  u  nu  p4n[        R                  " X45      n[        XeSSSU 3S	9  M0     g )
N)r   rE  g
Ye?)UUUUUU?:0yE>g˿+>)r*  r]   g)%->)g@r]   g5c)!9)r*  r4  g%,Ϳr  r   r  r  )r  r   r
  r   )r@   r  r   r  r  rJ  ycs          rA   r  TestBessel.test_jvg  sS    /5662	 &f-LAyaA!BBQ&M .rE   c                 r    [        [        R                  " SS5      [        R                  " SS5      * SSS9  g r  )r   r   r  r?   s    rA   test_negv_jveTestBessel.test_negv_jver  ,    B*W[[A->,>$1	.rE   c                     [         R                  " SS5      n[        USSSS9  [         R                  " SS5      nSn[         R                  " SU5      [	        [        UR                  5      * 5      -  n[        X$SSS9  g )Nr[   r   r"  r  r   r^   ?      ?)r   r  r   r
  r   r  rI  )r@   jvexpjvexp1rK  jvexprs        rA   r  TestBessel.test_jvev  se    Ab!3&qIQu%Aac!&&k\!22V!<rE   c                 p   [         R                  " SS5      n[         R                  " SS5      n[        U[        / SQ5      SSS9  [        U[        / SQ5      SSS9  [         R                  " SS5      n[        U[        / S	Q5      S
S9  [         R                  " SS5      n[        U[        / SQ5      S
S9  g )Nr   r   r[   )go@.=@gzj,[@glN!@g5/ D'@gh>-@r  r^   gW@g0@gQX$@g*@g8*5{x0@rZ   )gEk[@g~Cju]@gYrʝ^@g, `@gf	`@rS   rT   -  )gts@g&ǭr3t@gWt@g,$Y&u@gu@r   jn_zerosr   r   )r@   jn0jn1jn102jn301s        rA   test_jn_zerosTestBessel.test_jn_zeros~  s    q#q#U $3 4
 $!	- 	U $. /
 $!	-   Q'u &>  ? FK		L   Q'u &>  ? FK		LrE   c                 b   [         R                  " SS5      n[        US   SSS9  [        US   SSS9  [        US	   S
SS9  [         R                  " SS5      n[        US   SSS9  [        US   SSS9  [        US	   SSS9  [         R                  " SS5      n[        U[        / SQ5      SS9  g )Nr   rq   i  g;@rS   rT   i  g8v@i+  gׂMm@rQ  gxi@g	,@gи{>@i  r   )gUDX@g!@g*HS@gz5 @g@2;@r+  r;  )r@   r=  jn10jn3010s       rA   test_jn_zeros_slow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rE   c                 2  ^
 [         R                  m
U
4S jn[        SS5       Hp  n[         R                  " U5      u  p4pV[	        X4U5       HD  u  pxn	U	S:X  a  [        T
" X5      SSS9  M  U	S:X  a  [        U" X5      SSS9  M8  [        SU 35      e   Mr     g )Nc                 <   > T" U S-
  U5      T" U S-   U5      -
  S-  $ )Nr[   rM   r  )ri   r  r  s     rA   jnp(TestBessel.test_jnjnp_zeros.<locals>.jnp  s'    qs1I1Q3q	)1,,rE   r[   rW   r   r   r  zInvalid t return for nt=)r   r  r{   jnjnp_zerosre  r   AssertionError)r@   rJ  ntrK  ri   rp  tzznnttr  s             @rA   test_jnjnp_zerosTestBessel.test_jnjnp_zeros  s    ZZ	-2,B ,,R0JA!!!l
7#BrJ=1W#CK>(+CB4)HII + rE   c                     [         R                  " SS5      n[        U[        / SQ5      SSS9  [         R                  " SS5      n[        [         R                  " SU5      SSS	9  g )
Nr[   r   g(yu?gOXeS@ga!@gxi'@g'Nw(-@r  r   r^     r   r  )r   	jnp_zerosr   r   r  )r@   rJ  s     rA   test_jnp_zerosTestBessel.test_jnp_zeros  s\    !$U $. /
 $!	- A&C-qu=rE   c           
          [         R                  " SS5      n[        U[        / SQ5      [        / SQ5      [        / SQ5      [        / SQ5      4SSS	9  g )
Nr[   r   r9  rV  )"@g+@g-9(1!@gȘ'@g>tA}-@)g0v@gjt@gH.?$@g}"O*@gGŧp0@r;  r   r^   )r   
jnyn_zerosr   r   )r@   jnzs     rA   test_jnyn_zerosTestBessel.test_jnyn_zeros  sc      A&e %/ 0
 $ %/ 0
 $ %/ 0
 $ %/ 01( $!)	-rE   c                     [         R                  " SS5      n[         R                  " SS5      [         R                  " SS5      -
  S-  n[        XSSS9  g )NrM   r[   r   r  r   r^   )r   r  r
  r   )r@   jvprimjv0s      rA   test_jvpTestBessel.test_jvp  sA    Qq!zz!Awzz!A.1':rE   c                 t    [         R                  " S5      n[         R                  " SS5      n[        XSSS9  g r  )r   r  rR  r   )r@   ozkozkrs      rA   r  TestBessel.test_k0  +    jjnzz!BvA6rE   c                 t    [         R                  " S5      n[         R                  " SS5      n[        XSSS9  g r  )r   r  rV  r   )r@   ozkeozkers      rA   r  TestBessel.test_k0e  +    {{2Ab!&q9rE   c                 t    [         R                  " S5      n[         R                  " SS5      n[        XSSS9  g r  )r   r  rR  r   )r@   o1ko1krs      rA   r  TestBessel.test_k1  rj  rE   c                 t    [         R                  " S5      n[         R                  " SS5      n[        XSSS9  g r  )r   r!  rV  r   )r@   o1keo1kers      rA   r"  TestBessel.test_k1e  ro  rE   c                 "   S[         R                  R                  5       -  S-
  nS[         R                  R                  5       -  S-
  n[        R                  " SX5      n[        R                  " SX5      n[        R                  " SX5      n[        R                  " SX5      n[	        UR
                  S/SSS9  [	        UR
                  [        X-   S-   X-
  /5      S-  SSS9  X-   S-   X-   S	-   -  S	X-   S-   -  US-   -  S	US-   -  US-   -  /nUS   US   SUS   -  -
  US   US   -
  US   -   /n[	        UR
                  [        U5      S
-  SSS9  X-   S	-   X-   S-   -  X-   S-   -  SX-   S	-   -  X-   S-   -  US-   -  SX-   S	-   -  US-   -  US-   -  SUS-   -  US-   -  US-   -  /nUS   US   SUS   -  -
  US   SUS   -  -
  SUS   -  -   US   US   -
  US   -   US   -
  /n	[	        UR
                  [        U	5      S-  SSS9  g )Nr   r[   r   rM   r   r  r^   r  rK   g       @rQ   r  rt  g      H@)r`   rf   r   jacobir   re  r   )
r@   r  r  P0P1P2P3cpp2cp3cs
             rA   test_jacobiTestBessel.test_jacobi  s?   bii  1$bii  1$^^Aa"^^Aa"^^Aa"^^Aa"qca8eQUQY$67#=$1	.s1uqs1uoq!#a%y!A#1Q31>!uRU1RU7]2a5A;r!u#45eCj3.W1Es1uqs1uoqs1u%aQiQ&71&=!#a%j!A#!$Q!Wac]AaC%8:!uRU1RU7]2a52a5=2a5#8Ar!uRU9J2a59PQeCj4/gAFrE   c                 J    [         R                  " SS5      n[        USSSS9  g )Nr   r   _2?r  r^   )r   r9  r   )r@   kn1s     rA   r:  TestBessel.test_kn  s!    jj2/f1ErE   c                 p    [        [        R                  " SS5      [        R                  " SS5      5        g Nr~  rV  r  r   r   rR  r?   s    rA   test_negv_kvTestBessel.test_negv_kv  s"    WZZS)7::dC+@ArE   c                 J    [         R                  " SS5      n[        USSSS9  g )Nr   r   r  r  r^   r   rR  r   )r@   kv0s     rA   test_kv0TestBessel.test_kv0  s!    jj2/gAFrE   c                 J    [         R                  " SS5      n[        USSSS9  g )Nr[   r   gKދ@r  r   r^   r  )r@   kv1s     rA   test_kv1TestBessel.test_kv1  !    jj3.W1ErE   c                 J    [         R                  " SS5      n[        USSSS9  g )NrM   r   g)lHH@r  r   r^   r  )r@   kv2s     rA   test_kv2TestBessel.test_kv2  r  rE   c                 F    [        [        R                  " SS5      S5        g )Nr  r[   g.Ք"H)r   r   r9  r?   s    rA   test_kn_largeorderTestBessel.test_kn_largeorder  s    

2q)+ABrE   c                 F    [        [        R                  " SS5      S5        g )Nr   g =`XCr  r?   s    rA   test_kv_largeargTestBessel.test_kv_largearg"  s    WZZ4(!,rE   c                 p    [        [        R                  " SS5      [        R                  " SS5      5        g r  )r   r   rV  r?   s    rA   test_negv_kveTestBessel.test_negv_kve%  s"    W[[c*GKKc,BCrE   c                    [         R                  " SS5      n[         R                  " SS5      [        S5      -  n[	        XSSS9  Sn[         R                  " SU5      n[         R                  " SU5      [        U5      -  n[	        XESSS9  g )Nr   r   r  r^   r3  )r   rV  rR  r   r   )r@   kve1r  rK  kve2r  s         rA   rW  TestBessel.test_kve(  sp    {{1R jj2s2w&Q7{{1Qjj1oc!f$Q7rE   c           	      t    Sn[        [        R                  " SU5      * [        R                  " SUSS9SSS9  g )NrV  r[   r   ri   r  r^   )r   r   rR  kvp)r@   rK  s     rA   test_kvp_v0n1TestBessel.test_kvp_v0n11  s3    Aq))7;;q!q+A$1	.rE   c                     SnSn[         R                  " US-   U5      * X-  [         R                  " X5      -  -   n[         R                  " XSS9n[        X4SSS9  g )Nr~  rV  r[   r  r  r   r^   r   rR  r  r   r@   r  rK  xcr  s        rA   test_kvp_n1TestBessel.test_kvp_n16  sS    jj1Q!#gjjo"55KKq!G!4rE   c                     SnSnUS-  US-  -   U-
  US-  -  [         R                  " X5      -  [         R                  " US-   U5      U-  -   n[         R                  " XSS9n[        X4SSS9  g )	Nr~  rV  rM   r[   r  r  r   r^   r  r  s        rA   test_kvp_n2TestBessel.test_kvp_n2>  sl    d1a4ik1a4'**Q/1GJJqs14Ea4GGKK"G!4rE   c                 t    [         R                  " S5      n[         R                  " SS5      n[        XSSS9  g r  )r   r  r  r   r  s      rA   r  TestBessel.test_y0E  r  rE   c                 t    [         R                  " S5      n[         R                  " SS5      n[        XSSS9  g r  )r   r  r  r   r  s      rA   r  TestBessel.test_y1J  s+    ZZ^jj2V!4rE   c                 8   [         R                  " S5      u  p[         R                  " SSS9u  p4[        X4   n[        X$4   n[        [	        [         R
                  " SU5      5      SSSS9  [        [	        [         R
                  " SU5      U-
  5      SSSS9  g )NrM   r[   r?  r   r  r   r^   )r   y0_zerosr   r   r  r  )r@   yoypozozpor  allvals          rA   test_y0_zerosTestBessel.test_y0_zerosO  s    !!!$!!!A.iCGGJJsC013W1MGJJq#.78#GRSTrE   c                 t    [         R                  " S5      n[        U[        S/5      [        S/5      4SSS9  g )Nr[   r\  gѮBO?r;  r   r^   )r   y1_zerosr   r   )r@   r  s     rA   test_y1_zerosTestBessel.test_y1_zerosW  s6    a UG9-ugY/?@#!	-rE   c                 r    [         R                  " SSS9n[        U[        S/5      [        S/5      4SSS9  g )Nr[   r  yL
F%u?!rh?y;OnгY?re  r   r^   )r   	y1p_zerosr   r   )r@   y1ps     rA   test_y1p_zerosTestBessel.test_y1p_zeros\  s9    !,e]O4e_<M6NO#!	-rE   c                     [         R                  " SS5      n[        U[        SS/5      SSS9  [         R                  " SS	5      n[        U/ S
QSS9  g )NrK   rM   g3@g(A&"@r;  r   r^   rW  r   )g]E.+"|@gH(|@gff|}@g&b`~@gHO_~@r   rT   )r   yn_zerosr   r   )r@   ans     rA   test_yn_zerosTestBessel.test_yn_zerosa  sR    a"E7G"45FKc!$ 4
 #	%rE   c                 <   [         R                  " SS5      n[        U[        SS/5      SSS9  [         R                  " SS5      n[        [         R                  " SU5      SS	S
9  [         R                  " SS5      n[        [         R                  " SU5      SSS
9  g )Nr   rM   gQhվ@gzN@r  r^   +   r   r   r  rW  r   )r   	ynp_zerosr   r   r  r@   aos     rA   test_ynp_zerosTestBessel.test_ynp_zerosl  s~    q#E:z":;&qQr!$B+QU;s1%C,ad;rE   c                 r    [         R                  " SS5      n[        [         R                  " SU5      SSS9  g )NrW  r   r   r  r  )r   r  r   r  r  s     rA   test_ynp_zeros_large_order%TestBessel.test_ynp_zeros_large_ordert  s+    s1%C,ae<rE   c                 J    [         R                  " SS5      n[        USSSS9  g Nr[   r   5,1
r  r   r^   )r   r  r   )r@   yn2ns     rA   r  TestBessel.test_ynx  s!    zz!B1QGrE   c                 `    [         R                  " SS5      nU[        R                  * :X  d   eg )NrY   r[   )r=   r  r`   r   )r@   r  s     rA   test_yn_gh_20405TestBessel.test_yn_gh_20405|  s&    99S!$BFF7"""rE   c                 r    [        [        R                  " SS5      [        R                  " SS5      * SSS9  g r  )r   r   r  r?   s    rA   test_negv_yvTestBessel.test_negv_yv  s,    

2q)GJJq!,<+<$1	.rE   c                 J    [         R                  " SS5      n[        USSSS9  g r  )r   r  r   )r@   yv2s     rA   r  TestBessel.test_yv  s!    jj20vAFrE   c                 r    [        [        R                  " SS5      [        R                  " SS5      * SSS9  g r  )r   r   r  r?   s    rA   test_negv_yveTestBessel.test_negv_yve  r1  rE   c                     [         R                  " SS5      n[        USSSS9  [         R                  " SS5      [	        S5      -  n[         R                  " SS5      n[        X2SSS9  g )	Nr[   r   r  r  r   r^   r3  rP   )r   r  r   r  r   )r@   yve2yve2ryve22s       rA   r  TestBessel.test_yve  sV    {{1R 1QG

1U#CG+Ae$6:rE   c                     [         R                  " SS5      [         R                  " SS5      -
  S-  n[         R                  " SS5      n[        X!SSS9  g )	Nr[   r   r   r  rM   r  r   r^   )r   r  r  r   )r@   yvpryvp1s      rA   test_yvpTestBessel.test_yvp  sC    

1R 7::a#33S8{{1R q9rE   c              #      #    / SQn/ SQn[         R                  " X5       Sh  vN   [         R                  " S[        SS5      -   S/5       Sh  vN   g N2 N7f)z>Yield points at which to compare Cephes implementation to AMOS)ir        4r  r   r  r   r   {G(@r  r:  )irw  rP   r   r       i@g     y@g     Ă@g@  i'  Nr   ir  r  )	itertoolsproductr   )r@   r  rK  s      rA   _cephes_vs_amos_points!TestBessel._cephes_vs_amos_points  sX      K$$Q*** $$S6#r?%:SEBBB	 	+ 	Cs!   "AA,AAAANc           	         U R                  5        H  u  pgUb  U" Xg5      (       a  M  U" Xg5      U" XgS-   5      U" [        U5      U5      pn[        R                  " U5      (       a&  [	        [        R
                  " U	5      S:  Xg45        M|  [        R                  " U5      (       a  [	        U	R                  S:g  Xg45        M  [        XXg4X4S9  U[        U5      :X  d  M  [        XXg4X4S9  M     g )Nr>  u <7~r   )r  rU   r_   )	r  rz   r`   r  r   r  r   rI  r   )r@   r  f2rU   r_   r  r  rK  c1c2c3s              rA   check_cephes_vs_amosTestBessel.check_cephes_vs_amos  s    //1DADJJA2a":r#a&!}BBxx||r
e+aV4"1qf-TMA;#BQF*.; 2rE   ppc64lezfails on ppc64lerB  c                 `    U R                  [        R                  [        R                  SSS9  g )Nr]   u5% r  )r	  r   r
  r  r?   s    rA   test_jv_cephes_vs_amos!TestBessel.test_jv_cephes_vs_amos  #     	!!'**gjju6!RrE   c                 `    U R                  [        R                  [        R                  SSS9  g )Ndy=r
	  r  r	  r   r  r  r?   s    rA   test_yv_cephes_vs_amos!TestBessel.test_yv_cephes_vs_amos  r	  rE   c                 h    S nU R                  [        R                  [        R                  SSUS9  g )Nc                     [        U 5      S:  $ )Nr  )r  )r  rK  s     rA   skipperDTestBessel.test_yv_cephes_vs_amos_only_small_orders.<locals>.skipper  s    q6B;rE   r	  r
	  )rU   r_   r  r	  )r@   r	  s     rA   (test_yv_cephes_vs_amos_only_small_orders3TestBessel.test_yv_cephes_vs_amos_only_small_orders  s-    	!!'**gjju6'. 	" 	0rE   c                     [         R                  " SS9   U R                  [        R                  [        R                  SSS9  S S S 5        g ! , (       d  f       g = f)Nr`  r  g:0y5>r
	  r  )r`   r  r	  r   r  r?   s    rA   test_iv_cephes_vs_amos!TestBessel.test_iv_cephes_vs_amos  s9    [[X&%%gjj'**4f%U '&&s   /A
Ac                 j   Sn[         R                  R                  S5        [         R                  R                  SU5      S[         R                  R	                  SUS9-  -  n[         R                  R                  SU5      S[         R                  R	                  SUS9-  -  n[         R                  R	                  SUS9S	:H  nX$   R                  [         R                  5      X$'   [         R                  " S
S9   [        R                  " X#5      n[        R                  " X#S-   5      n[         R                  U[        U5      S:  '   [         R                  U[        U5      S:  '   S	U[        U5      S:  '   S	U[        U5      S:  '   [        XV-  S-
  5      nS	U[         R                  " U5      '   S S S 5        [         R                  " W5      n[        Xx   S:  X(   X8   [        R                  " X(   X8   5      [        R                  " X(   X8   S-   5      45        g ! , (       d  f       Ns= f)Ni@B r[   r   rP   rM   r	  r   rt  r   r`  r  r>  r	  gYngH׊>)r`   rf   rs   r  r  r   r	  r  r   r  r   r  r   argmaxr   )	r@   r  r  r  imskr	  r	  dcrj   s	            rA    test_iv_cephes_vs_amos_mass_test+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'..*[[X&A!BAt$B #%&&Bs2w"$&&Bs2w#$Bs2w #$Bs2w RUQYB Brxx| ' IIbM 	EDLT14AD!$/AD!$r'1JK	
# '&s   >B9H$$
H2c                     U R                  [        R                  [        R                  SSS9  U R                  [        R                  [        R                  SSS9  g )Nr   r
	  r  )r	  r   rR  r9  r?   s    rA   test_kv_cephes_vs_amos!TestBessel.test_kv_cephes_vs_amos  s@    !!'**gjjt&!Q!!'**gjjt&!QrE   c                     [        [        R                  " SS5      S5        [        [        R                  " SS5      S5        [        [        R                  " SS5      S5        g )	Nr   rK   gP?r:  r  g~Omʒ?gY8E@@gKSnr&  r?   s    rA   test_ticket_623TestBessel.test_ticket_623  sD    

1a(*=>

3-/AB

3	24GHrE   c           	      
   [        [        R                  " SS5      S5        [        [        R                  " SS5      S5        [        [        R                  " SS5      S5        [        [        R                  " SS5      S5        [        [        R                  " SS5      S5        [        [        R                  " SS5      S	5        [        [        R
                  " SS5      S
5        [        [        R
                  " SS5      S5        [        [        R                  " SS5      S5        [        [        R                  " SS5      S5        [        [        R                  " SS5      S5        [        [        R
                  " SS5      S5        [        [        R                  " SS5      S5        [        [        R                  " SS5      S5        [        [        R                  " SS5      S5        [        [        R                  " SS5      S5        [        [        R                  " SS5      S5        [        [        R                  " SS5      S	5        [        [        R
                  " SS5      S
5        [        [        R
                  " SS5      S5        [        [        R                  " SS5      S5        [        [        R                  " SS5      S5        [        [        R                  " SS5      S5        [        [        R                  " SS5      S5        [        [        R                  " SS5      S5        [        [        R                  " SS5      S5        [        [        R
                  " SS5      S5        [        [        R
                  " SS5      S5        [        [        R                  " SS5      [        R                  " SS5      [        S5      -  5        [        [        R                  " SS5      [        R                  " SS5      [        S5      -  5        [        [        R                  " SS5      [        R                  " SS5      [        S5      -  5        [        [        R                  " SS5      [        R
                  " SS5      [        S5      -  5        [        [        R                  " SS5      [        R                  " SS5      S[        R                  " SS5      -  -   5        [        [        R                  " SS5      [        R                  " SS5      S[        R                  " SS5      -  -
  5        g)zNegative-order BesselsrP   r[   gl)ܿr[  gPj?gk?g%E*2ig敋?gw--`?gÉB?gW?r  g޴?gz|?a?gpx%?y      ?        y      ?      ?yYD?`{1wy6x?B]#Ӯ?y ?b>?y.}9d?8kؿy      ?333333?r  y333333?      ?rH  N)r   r   r
  r  r  rR  r  r   r  r  rV  r  r  r?   s    rA   test_ticket_853TestBessel.test_ticket_853  s    	

2q)+>?

2q)+=>

2q)+=>

2q)+=>

2q)+=>

2q)+=>

2q)+=>

2q)+<=

4+-CD

4+-?@

4+->?

4+-?@

2t,.AB

2t,.@A

2t,.@A

2t,.@A

2t,.@A

2t,.@A

2t,.@A

2t,.?@

4.0FG

4.0UV

4.0BC

4.0UV

4.0AB

4.0RS

4.0BC

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

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

4(=%==	
rE   c                    [        [        [        R                  " SS5      5      5        [        [        [        R                  " SS5      5      5        [        [        [        R
                  " SS5      5      5        [        [        [        R
                  " SS5      5      5        [        [        [        R                  " SS5      5      5        [        [        [        R                  " SS5      5      5        [        [        [        R                  " SS5      5      5        [        [        [        R                  " SS5      5      5        [        [        [        R                  " SS5      5      5        [        [        [        R                  " SS5      5      5        [        [        [        R                  " SS5      5      5        [        [        [        R                  " SS5      5      5        [        [        [        R                  " S5      SS 5      R                  5       [        R                  " S5      5        [        [        [        R                  " S5      SS 5      R                  5       (       + [        R                  " S5      5        g)zReal-valued Bessel domainsr   rP   r[   r   rM   rK   N)r   r   r   r
  r  r  rR  r  r  r  rV  rG   r  r  r?   s    rA   test_ticket_854TestBessel.test_ticket_854#  s   gjjb)*+gjjb)*+gjjb)*+gjjB'()gjjb)*+gjjB'()gkk#r*+,gkk#r*+,gkk#r*+,gkk!R()*gkk#r*+,gkk!R()*gmmB'!,-113W]]25FGE'--+Aa015577r9JKrE   c                     [        [        R                  " SS5      [        R                  :H  5        [        [        R
                  " SS5      [        R                  :H  5        g )Nru  r   )r   r   rR  r`   r   rV  r?   s    rA   test_gh_7909TestBessel.test_gh_79094  s:    

3"bff,-C#rvv-.rE   c                     [        [        R                  " SS5      S5        [        [        R                  " SS5      S5        g)zReal-valued Bessel I overflowr[   i  g~rX   i`  g ?los~Nr   r   r  r?   s    rA   test_ticket_503TestBessel.test_ticket_5038  s.    

1c*,AB

4.0EFrE   c                 F    [        [        R                  " SS5      S5        g )Nr  r[   r*	  r4	  r?   s    rA   test_iv_hyperg_polesTestBessel.test_iv_hyperg_poles=  s    

4+->?rE   c                    [        SU5      R                  [        5      nUSU-  -   [        SU-  5      -  [        R
                  " US-   5      -
  [        R
                  " X-   S-   5      -
  n[        U[        U5      '   [        U5      n[        U5      R                  5       [        [        5      R                  -  U-  [        US   5      S-  -   nUR                  5       U4$ )Nr   rM   r   r[   rP   rQ  )r   r   r   r   r   r|  r   r   r   r  r  r   r  sumr@   r  rK  ri   rj   rs  r:  s          rA   	iv_seriesTestBessel.iv_series@  s    1aL'qsUC1I! 44wqs1u7MM%(F!fjjlU6]...2S2Z]Buuw|rE   c                 |    S H6  nU R                  SU5      u  p#[        [        R                  " U5      X#US9  M8     g )Nr   r  r  r   r_   r  )r=	  r   r   r  r@   rK  valuer:  s       rA   test_i0_seriesTestBessel.test_i0_seriesH  2    !A1-JEGJJqM5AF "rE   c                 |    S H6  nU R                  SU5      u  p#[        [        R                  " U5      X#US9  M8     g )Nr@	  r[   rA	  )r=	  r   r   r  rB	  s       rA   test_i1_seriesTestBessel.test_i1_seriesM  rF	  rE   c           	          S H?  nS H6  nU R                  X5      u  p4[        [        R                  " X5      X4X4S9  M8     MA     g )N)r  r  r   r   r   r  r  )r   r  r  y             @rA	  )r=	  r   r   r  r@   r  rK  rC	  r:  s        rA   test_iv_seriesTestBessel.test_iv_seriesR  s=    7A,!^^A1


1 0%A6R - 8rE   c           	          SS/SS/SS/SS/SS/S	S
/SS/SS//n[        U5       H:  u  nu  p4[        R                  " U5      [        U* 5      -  n[	        XTSSSU 3S9  M<     g )Nr   r   r]   rE  g0oO?r   g!?grb?r  gpH?r   gC~?      4@ggo?r  r   r  r  )r  r   r  r   r   r@   r  r   r  r  r  s         rA   r  TestBessel.test_i0X  s    *#,%%%%%& #6*IAvAaR(BBQ&M +rE   c                 t    [         R                  " S5      n[         R                  " SS5      n[        XSSS9  g r  )r   r  r  r   )r@   oizeoizers      rA   r  TestBessel.test_i0ef  +    {{2Ar"&q9rE   c           	          SS/SS/SS/SS/SS	/S
S/SS//n[        U5       H:  u  nu  p4[        R                  " U5      [        U* 5      -  n[	        XTSSSU 3S9  M<     g )Nr   r]   gj|=rE  gȕ![1?r   g;͘?r   gRΜ?r   g|?rO	  g}f?r  r   r  r  )r  r   r  r   r   rP	  s         rA   r  TestBessel.test_i1k  s    *01%%%%& #6*IAvAaR(BBQ&M +rE   c                 t    [         R                  " S5      n[         R                  " SS5      n[        XSSS9  g r  )r   r  r  r   )r@   oi1eoi1ers      rA   r  TestBessel.test_i1ex  rV	  rE   c                 p    [        [        R                  " S5      5      n[        U[        SS/5      SSS9  g )Nr   gїJB?@g*u?r;  r   r^   )r   r   r  r   )r@   iti0s     rA   r  TestBessel.test_iti0k0}  s2    W^^A&'e%79K$LM#!	-rE   c                 ^    [         R                  " S5      n[        U[        SS/5      SSS9  g )NrE  gݳɄ|T?gVƥ
@r  r   r^   )r   r  r   r   )r@   it2ks     rA   r  TestBessel.test_it2i0k0  s-    r"e%:<N$OP#!	-rE   c                 b    [         R                  " SS5      [        S5      -  n[        USSSS9  g )Nr   rE  皙gv M?r  r^   )r   r  r   r   )r@   iv1s     rA   r  TestBessel.test_iv  s*    jj2s3x'0wQGrE   c                 p    [        [        R                  " SS5      [        R                  " SS5      5        g r  )r   r   r  r?   s    rA   test_negv_iveTestBessel.test_negv_ive  s"    W[[1%w{{2a'89rE   c                     [         R                  " SS5      n[         R                  " SS5      [        S5      -  n[	        XSSS9  g )Nr   rE  rd	  r  r^   )r   r  r  r   r   )r@   ive1re	  s      rA   r  TestBessel.test_ive  s7    {{1R jj2s3x'a8rE   c                 p    [        [        R                  " SS5      [        R                  " SS5      SSS9  g )Nr[   rM   r   r  r^   )r   r   r  ivpr?   s    rA   	test_ivp0TestBessel.test_ivp0  s'    

1a('++a*;'PQRrE   c                     [         R                  " SS5      [         R                  " SS5      -   S-  n[         R                  " SS5      n[        X!SSS9  g )Nr   rM   r[   r  r^   )r   r  rn	  r   r  s      rA   test_ivpTestBessel.test_ivp  sA    ZZ!_wzz!A.1KK!73rE   r  )r	  r   N)   )Xr  r  r  r  r  r  r  r  r  r  r'  r  r/  r  rA  rF  rS  rY  r_  rd  r  r  r  r"  r  r:  r  r  r  r  r  r  r  rW  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  machiner	  r	  r	  r	  slowr!	  r$	  r'	  r+	  r.	  r1	  r5	  r8	  r=	  rD	  rH	  rL	  r  r  r  r  r  r  r  rh	  r  ro	  rr	  r  r  rE   rA   r	  r	  H  s,   -
-
86
6
IT	N.=L<G$J	>-0;
7
:
7
:
G&FBGFFC-D8.
556
5
U-
-
	%<=H#
.G.;:

C; [[x'')Y60  2S2S [[x'')Y60  2S2S0V [[
 
>RI
0
dL"/G
@G
G
SN:
N:
-
-
H:9
S4rE   r	  c                        \ rS rSrS rS rSrg)TestLaguerrei  c                    [         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[         R                  " S5      n[        UR                  S/SSS9  [        UR                  S	S/SSS9  [        UR                  [	        / S
Q5      S-  SSS9  [        UR                  [	        / SQ5      S-  SSS9  [        UR                  [	        / SQ5      S-  SSS9  [        UR                  [	        / SQ5      S-  SSS9  g )Nr   r[   rM   r   rK   r   r  r^   rP   )r[   r  rM   r  )rP   r  irQ   r-  )r[   iH   ir   rs  )rP   r   i8iX  ir  r  )r   laguerrer   re  r   )r@   lag0lag1lag2lag3lag4lag5s          rA   test_laguerreTestLaguerre.test_laguerre  s   """"""':QgA>i 03 6W1Mm 4S 8wQO&8 9$ >$1	.&D E M$1	.rE   c           
      b   S[         R                  R                  5       -  S-
  n[        R                  " SU5      n[        R                  " SU5      n[        R                  " SU5      n[        R                  " SU5      n[	        UR
                  S/5        [	        UR
                  SUS-   /5        [        UR
                  [        SSUS-   -  US	-   US
-   -  /5      S
-  SSS9  [        SSUS-   -  SUS-   -  US-   -  US-   US-   -  US-   -  /5      S-  n[        UR
                  USSS9  g )Nr   r  r   r[   rM   r   rP   r[  r   r  r   r^   r  r-  )r`   rf   r   r,  r   re  r   r   )r@   rj   r|	  r}	  r~	  r	  rL  s          rA   test_genlaguerreTestLaguerre.test_genlaguerre  s/   bii  3&""1Q'""1Q'""1Q'""1Q'TVVaS!TVVb!a%[)q"A,RAF8K&L MPS S#!	-"q1u+A,!a%0q5QU+q1u57 8 ;>> 	vA>rE   r  N)r  r  r  r  r	  r	  r  r  rE   rA   rx	  rx	    s    . ?rE   rx	  c                       \ rS rSrS rSrg)
TestLambdai  c           
      x   [         R                  " SS5      n[        [         R                  " SS5      S[         R                  " SS5      -  S-  /5      [        [         R                  " SS5      S[         R
                  " SS5      -  S-  S[         R                  " SS5      -  S-  -   /5      4n[        XSSS9  g )	Nr[   rE  r   rM   r[  r  r  r^   )r   lmbdar   r  r  r
  r   )r@   lamlamrs      rA   
test_lmbdaTestLambda.test_lmbda  s    mmAb!7::a#Qwzz!B'7%7%:;<7;;q$bAb)9&9#&='++aPRBS@STV@V&VWX
 	Q7rE   r  N)r  r  r  r  r	  r  r  rE   rA   r	  r	    s    8rE   r	  c                        \ rS rSrS rS rSrg)	TestLog1pi  c                     [         R                  " S5      [         R                  " S5      [         R                  " S5      4n[        S5      [        S5      [        S5      4n[        XSSS9  g )NrQ  rG  r  r2  r  r   r^   r   r\  r   r   )r@   l1pl1prls      rA   r]  TestLog1p.test_log1p  sM    }}R '--"3W]]25FGR#b'3r7+a8rE   c                     [         R                  " S5      [         R                  " S5      [         R                  " S5      4n[        S5      [        S5      [        S5      4n[        XSSS	9  g )
Nr[   r  r  rM   rU  rV  r  r   r^   r	  )r@   l1pml1pmrls      rA   test_log1pmoreTestLog1p.test_log1pmore  sM    a '--"4gmmC6HIa&S#c(+6:rE   r  N)r  r  r  r  r]  r	  r  r  rE   rA   r	  r	    s    9
;rE   r	  c           
         ^^ TS-  S:X  a  SOSnSU-  [        UU4S jU* S-  US-  SS[        R                  -  U -  U-  SS	9S   -  nU S:  a  US-  nU$ )
z
Compute the Fourier coefficient of the even Mathieu function.
The integral definition of a Fourier coefficient is used.
This function is used as an alternative implementation of
mathieu_even_coef().
rM   r   r  h  r[   c                 :   > [         R                  " TTU 5      S   $ r<   )r   r  rO  ri   r{  s    rA   r  7ce_fourier_coefficient_using_integral.<locals>.<lambda>      '"5"5aA">q"ArE   r
   r  weightwvarepsrelr5   r`   r   rj   ri   r{  periodre  s    ``  rA   %ce_fourier_coefficient_using_integralr	    sy     EQJSCF 
64A	6!8$1RUU719V+;EKKLN 	NA 	1u	QHrE   c           
         ^^ U S:X  a  gTS-  S:X  a  SOSnSU-  [        UU4S jU* S-  US-  SS[        R                  -  U -  U-  SS	9S   -  nU$ )
z
Compute the Fourier coefficient of the odd Mathieu function.
The integral definition of a Fourier coefficient is used.
This function is used as an alternative implementation of
mathieu_odd_coef().
r   r   rM   r  r	  c                 :   > [         R                  " TTU 5      S   $ r<   )r   r  r	  s    rA   r  7se_fourier_coefficient_using_integral.<locals>.<lambda>  r	  rE   r	   r  r	  r	  r	  s    ``  rA   %se_fourier_coefficient_using_integralr	    sq     	AvEQJSCF	
64A	6!8$1RUU719V+;EKKLN 	NA HrE   c                   4   \ rS rSr\R
                  R                  SSS/5      S 5       r\R
                  R                  SSS/5      S 5       r\R
                  R                  SS	S
/5      S 5       r	\R
                  R                  SSS/5      S 5       r
Srg)TestMathieui  zn, q)rK   r  )rt  g      @c                     [         R                  " X5      n[        S5       Vs/ s H  n[        XAU5      PM     nn[	        XSS [        U5       SS9  g s  snf )NrK   r]   rT   r   r(   r{   r	  r   r  r@   ri   r{  Arj   re  s         rA   .test_mathieu_even_coef_against_integral_n_even:TestMathieu.test_mathieu_even_coef_against_integral_n_even  sR    
 %%a+ FK1XNX21;XNWc!f:E2 Os   A)r   r  )rO   rM   c                     [         R                  " X5      n[        SSS5       Vs/ s H  n[        XAU5      PM     nn[	        XSS [        U5       SS9  g s  snf Nr[   r  rM   r]   rT   r	  r	  s         rA   -test_mathieu_even_coef_against_integral_n_odd9TestMathieu.test_mathieu_even_coef_against_integral_n_odd  sW     %%a+ FK1aQR^T^21;^TWc!f:E2 U   A)rM   r  )rQ  rM   c                     [         R                  " X5      n[        SS5       Vs/ s H  n[        XAU5      PM     nn[	        XSS [        U5       SS9  g s  snf )Nr[   r   r]   rT   r   r'   r{   r	  r   r  r@   ri   r{  Brj   re  s         rA   -test_mathieu_odd_coef_against_integral_n_even9TestMathieu.test_mathieu_odd_coef_against_integral_n_even  sT     $$Q* FK1a[Q[21;[QWc!f:E2 Rs   Ac                     [         R                  " X5      n[        SSS5       Vs/ s H  n[        XAU5      PM     nn[	        XSS [        U5       SS9  g s  snf r	  r	  r	  s         rA   ,test_mathieu_odd_coef_against_integral_n_odd8TestMathieu.test_mathieu_odd_coef_against_integral_n_odd  sW     $$Q* FK1aQR^T^21;^TWc!f:E2 Ur	  r  N)r  r  r  r  r  r  r  r	  r	  r	  r	  r  r  rE   rA   r	  r	    s    [[Vh	%:;3 <3 [[Vh%78	3 9	3 [[Vh%89	3 :	3 [[Vh%78	3 9	3rE   r	  c                        \ rS rSrS rS rSrg)TestFresnelIntegrali*  c                     g r5  r  r?   s    rA   r  $TestFresnelIntegral.test_modfresnelp,  r7  rE   c                     g r5  r  r?   s    rA   r  $TestFresnelIntegral.test_modfresnelm/  r7  rE   r  N)r  r  r  r  r  r  r  r  rE   rA   r	  r	  *  s    rE   r	  c                       \ rS rSrS rSrg)TestOblCvSeqi3  c                 b    [         R                  " SSS5      n[        U[        / SQ5      SSS9  g )Nr   r   r[   )g~T~Oֿgt_J?gm{@g@j'&@r;  r^   )r   
obl_cv_seqr   r   )r@   obls     rA   test_obl_cv_seqTestOblCvSeq.test_obl_cv_seq4  s3      1Q'U $/ 0 $!		-rE   r  N)r  r  r  r  r	  r  r  rE   rA   r	  r	  3      -rE   r	  c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)TestParabolicCylinderi=  c                 z    [         R                  " SS5      n[        U[        SS/5      [        SS/5      4SSS	9  g )
Nr[   rE  gQ?gx$(~?gx$(~g(\?r  r   r^   )r   pbdn_seqr   r   )r@   pbs     rA   test_pbdn_seq#TestParabolicCylinder.test_pbdn_seq>  sM    a$UF$*$, -"G$*$, -. $!		-rE   c                     [         R                  " SS5        S[         R                  " SS5      S   -  [         R                  " SS5      S   -
    g )Nr[   r   rE  r   )r   r6  r?   s    rA   r7  TestParabolicCylinder.test_pbdvF  s=    Qra#A&&a);A)>>rE   c                     [         R                  " SS5      n[         R                  " SS5      n[        U[	        US   5      [	        US   5      4SSS9  g )Nr[   rE  r   r  r^   )r   r	  pbdv_seqr   r   )r@   pbnpbvs      rA   test_pbdv_seq#TestParabolicCylinder.test_pbdv_seqJ  sI    q$q$d3q6lDQL9QOrE   c                    [         R                  " SSS5      nSUS-  -  [         R                  " [         R                  5      -  [        R
                  " SSU-  -
  5      -  n[        [        R                  " US5      S   USSS	9  [        [        R                  " S
S5      S   SSS9  [        [        R                  " SS5      S   SSS9  g )Nrw  rQ  r   rM   r   r   r   r  r  gGz$@gq=
ףp4@gHQ9r   rT   g(\#gQ@gkS a>)r`   r  r   r   r   ry  r   r6  )r@   etarK  s      rA   test_pbdv_points&TestParabolicCylinder.test_pbdv_pointsO  s    kk#r1%AJrwwruu~%gnnR3Y&??S"-a0!%eL 	UE2157JQVWUD1!46JQVWrE   c                 j   [         R                  " SSS5      S S 2S 4   n[         R                  " SSS5      S S S 24   n[        R                  " X!5      nSS[	        U5      -  -   n[        R                  " X!U-   5      S   [        R                  " X!U-
  5      S   -
  U-  S	-  n[        US
   USSS9  g Nr  rK   rt  rw  rQ  r   r  r   r  r[   r   r  )r`   r  r   r6  r  r   r@   r  r	  r[  r  dps         rA   test_pbdv_gradient(TestParabolicCylinder.test_pbdv_gradientY      KKAq!!D&)kk#r1%d1f-LL T#a&[ ll3C(+gll3C.H.KKsRUWW!bt$7rE   c                 j   [         R                  " SSS5      S S 2S 4   n[         R                  " SSS5      S S S 24   n[        R                  " X!5      nSS[	        U5      -  -   n[        R                  " X!U-   5      S   [        R                  " X!U-
  5      S   -
  U-  S	-  n[        US
   USSS9  g r	  )r`   r  r   r:  r  r   r	  s         rA   test_pbvv_gradient(TestParabolicCylinder.test_pbvv_gradientb  r	  rE   c                     [         R                  " SS5      u  p[        U[        R                  " / SQ5      5        [        U[        R                  " / SQ5      5        g )NrM   r   )g:4@g1{н?g7,%n?)gX@g=<'?gʠ?)r   pbvv_seqr   r`   r   )r@   res1res2s      rA   test_pbvv_seq#TestParabolicCylinder.test_pbvv_seqk  sL    %%a+
bhh (< = 	> 	bhh (; < 	=rE   r  N)r  r  r  r  r	  r7  r	  r	  r	  r	  r	  r  r  rE   rA   r	  r	  =  s'    -?P
X88=rE   r	  c                       \ rS rSrS rSrg)TestPolygammaiu  c           	      r   [         R                  " SS5      n[         R                  " SS5      n[        USSSS9  [        USSSS9  / S	Qn[        [         R                  " SU5      [         R                  " U5      S
SS9  / SQn/ SQn/ SQn[        [         R                  " XC5      US
SS9  [        R
                  " U/S-  5      n[        [         R                  " U[        R
                  " U/S-  5      5      US
SS9  [        [         R                  " [        R
                  " U/S-  5      U5      US
SS9  g )NrM   r[   r   gX];r  r   r^   gOV,@@)rM   r   g  8Br   rC  r  )g2}jg.M?g}2;ο)r   	polygammar   rq  r`   r  )r@   poly2poly3r  ri   rL  s         rA   test_polygammaTestPolygamma.test_polygammaw  s	   !!!Q'!!!Q'}7C|'B ))!Q/Q#!	- *))!/QO99hZ\*))!RYYs1u-=>#!	-))"))QCE*:A>#!	-rE   r  N)r  r  r  r  r	  r  r  rE   rA   r	  r	  u  s    -rE   r	  c                       \ rS rSrS rSrg)TestProCvSeqi  c                 b    [         R                  " SSS5      n[        U[        / SQ5      SSS9  g )Nr   r   r[   )g"~j?g6?Ң@g)u8F"@g2g)@r;  r^   )r   
pro_cv_seqr   r   )r@   prols     rA   test_pro_cv_seqTestProCvSeq.test_pro_cv_seq  s3    !!!Q*e %0 1 $!		-rE   r  N)r  r  r  r  r
  r  r  rE   rA   r	  r	    r	  rE   r	  c                       \ rS rSrS rSrg)TestPsii  c                 H    [         R                  " S5      n[        USSSS9  g )Nr[   goxr  r   r^   )r   rq  r   )r@   pss     rA   rr  TestPsi.test_psi  s    [[^0vAFrE   r  N)r  r  r  r  rr  r  r  rE   rA   r
  r
    s    GrE   r
  c                        \ rS rSrS rS rSrg)
TestRadiani  c                 Z    [         R                  " SSS5      n[        U[        S-  SSS9  g )Nr  r   r  r;  r^   r   ru  r   r   )r@   rads     rA   rv  TestRadian.test_radian  s&    nnRA&RV&q9rE   c                 `    [         R                  " SSS5      n[        U[        S-  S-   SSS9  g )	Nr  r[   r  rM   gC?r;  r   r^   r
  )r@   rad1s     rA   test_radianmoreTestRadian.test_radianmore  s,    ~~b!R(bd%::aPrE   r  N)r  r  r  r  rv  r
  r  r  rE   rA   r	
  r	
    s    :QrE   r	
  c                        \ rS rSrS rS rSrg)TestRiccatii  c                     Su  p[         R                  " X45      n[        U5       HC  n[        R                  " XB5      n[        R                  " XBSS9nX%-  USU4'   X&-  U-   USU4'   ME     [        U[        R                  " WU5      SSS9  g N)rM   r   T)
derivativer   r[   r  r^   )r`   emptyr{   r   spherical_jnr   
riccati_jn)r@   r  r  Sri   r  jps          rA   test_riccati_jnTestRiccati.test_riccati_jn      HHaVqA$$Q*A%%at<BSAacFTAXAacF	 
 	7--a3&qIrE   c                     Su  p[         R                  " X45      n[        U5       HC  n[        R                  " XB5      n[        R                  " XBSS9nX%-  USU4'   X&-  U-   USU4'   ME     [        U[        R                  " WU5      SSS9  g r
  )r`   r
  r{   r   spherical_ynr   
riccati_yn)r@   r  r  Cri   rJ  yps          rA   test_riccati_ynTestRiccati.test_riccati_yn  r
  rE   r  N)r  r  r  r  r
  r$
  r  r  rE   rA   r
  r
    s    JJrE   r
  c                        \ rS rSrS rS rSrg)TestSoftplusi  c                 <   SS K nUR                  R                  S5      nSnUR                  SSUS9nUR                  SSUS9nUR                  SSUS9nUR                  S	S
US9nUR                  " XEXg/5      n/ SQ/ SQ/ SQ/ SQ/n	[        U5      n
[        XSS9  g )Nr   l   (sr   iir	     r  g
ףp=@@r  )g%~B7gpNf7g8B8)gJR{?g6]=gXes>)g n@?@gWH;@glH.=@)g9lchPR@gS@gzsevB@r  rT   )numpyrf   default_rnguniformstackr&   r   )r@   r`   rm   ri   r.  r/  a3a4r  r|  r  s              rA   test_softplusTestSoftplus.test_softplus  s     	ii##M2[[s[+[[bq[)[[T[*[[![,HHbb%& TQKHJ
 qku-rE   c                     [         R                  " S5      S-
  n[         R                  " S5      nUR                  5       nUS:  n[	        XUS9  [	        X   5      X4'   [        X#5        g )Nr   rM   r   )outwhere)r`   r   onescopyr&   r   )r@   r  r3
  r|  r4
  s        rA   test_softplus_with_kwargs&TestSoftplus.test_softplus_with_kwargs  sU    IIaL1ggajhhjA5)ah'
!rE   r  N)r  r  r  r  r0
  r7
  r  r  rE   rA   r'
  r'
    s    .:"rE   r'
  c                       \ rS rSrS rSrg)	TestRoundi  c                     [        [        [        [        R                  " S5      [        R                  " S5      [        R                  " S5      [        R                  " S5      45      5      nSn[        X5        g )Ng333333$@g$@r  g333333%@)rQ  rQ  rQ  rG  )r  maprz   r   r  r   )r@   rndrndrls      rA   r  TestRound.test_round  sX    3sW]]40$]]40$]]40$]]402 3 4 3%rE   r  N)r  r  r  r  r  r  r  rE   rA   r:
  r:
    s    &rE   r:
  c                   0    \ rS rSrSS jrS rS rS rSrg)	
TestStruvei  c                 D   [        SU5      nSU-  SU-  SU-  U-   S-   -  -  [        R                  " US-   5      -  [        R                  " XA-   S-   5      -  n[        U5      R	                  5       [        [        5      R                  -  U-  nUR                  5       U4$ )z?Compute Struve function & error estimate from its power series.r   rP   r   rM   r[   ru  )	r   r   rt  r  r  r   r   r  r;	  r<	  s          rA   _seriesTestStruve._series  s    1aL!Gr!tqs1uQw''ae(<<W]]13s7=SS!fjjlU6]...2uuw|rE   c           	          S HB  nS H9  nU R                  X5      u  p4[        [        R                  " X5      USUS9X44  M;     MD     g)z-Check Struve function versus its power series)
irw  (\r  rP   r   r[   r}  r     )r[   rQ     r  rW   r   r  N)rC
  r   r   r  rK	  s        rA   test_vs_seriesTestStruve.test_vs_series  sG    BA(!\\!/
q 4e!#NQRPVV ) CrE   c                 `   [        [        R                  " SS5      SSS9  [        [        R                  " SS5      SSS9  [        [        R                  " S	S
5      SSS9  [        [        R                  " SS5      SSS9  [        [        R                  " SS5      [        R                  " SS5      * 5        [        [        R                  " SS5      [        R                  " SS5      * 5        [        [        R                  " SS5      [        R                  " SS5      75        [        [        R                  " SS5      [        R                  " SS5      75        [	        [        [        R                  " SS5      5      5        [	        [        [        R                  " SS5      5      5        g )NrF
  r  g;cv=?r  rT   gQ g< j?r+  r  rt	  g?r   g       igzz?r	  i)   r  r  rG  gffffffrP   g333333$)r   r   r  r   r   r   r?   s    rA   test_some_values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1rE   c                 H   [        [        R                  " SS5      [        R                  " SS5      5        [        [        R                  " SS5      [        R                  " SS5      5        [        [        R                  " SS5      [        R                  " SS5      5        g)zRegression test for #679r   g3@g*   4@r  g333333N)r   r   r  r?   s    rA   test_regression_679TestStruve.test_regression_679  sk    tY7tY7	9tY7tY7	9tY7tY7	9rE   r  N)r  )	r  r  r  r  rC
  rI
  rM
  rP
  r  r  rE   rA   rA
  rA
    s    W29rE   rA
  c                  F    [        [        R                  " SS5      SSSS9  g )Nr  r   gdX	
?r   r   r^   )r   r   r   r  rE   rA   test_chi2_smalldfrS
    s    GMM#q)+<6PQRrE   c                  b    [        [        R                  " S[        R                  5      S5        g )Nr  r   )r   r   r   r`   r   r  rE   rA   test_ch2_infrU
  !  s    s266*C0rE   r  r   r  r   c                     [         R                  " [        R                  " [         R                  U 5      5      (       d   eg r5  r`   r   r   r   r:  r`  s    rA   test_chi2_v_nanrX
  %  s&    88GMM"&&!,----rE   r  c                     [         R                  " [        R                  " U [         R                  5      5      (       d   eg r5  rW
  r  s    rA   test_chi2_x_nanr[
  *  s&    88GMM!RVV,----rE   c                     [         R                  " [        R                  " [         R                  U 5      5      (       d   eg r5  r`   r   r   r   r:  r`  s    rA   test_chi2c_v_nanr^
  /  s&    88GNN2661-....rE   c                     [         R                  " [        R                  " U [         R                  5      5      (       d   eg r5  r]
  rZ
  s    rA   test_chi2c_x_nanr`
  4  s&    88GNN1bff-....rE   c            	         [         R                  " SSSS[         R                  /5      S S 2[         R                  4   n [         R                  " [         R                  * SSS[         R                  /5      n[        R
                  " U S-  US-  5      nUS:  U S:  -  US:H  U S:H  -  -  [         R                  " U 5      [         R                  " U5      -  -  n[         R                  " [         R                  " X#   5      5      (       d   e[         R                  " [         R                  " X#)    5      5      (       d   e[        [        R                  " X5      U5        [        [        R                  " SU S-  US-  5      U5        [        S[        R                  " U S-  US-  5      -
  U5        [        S[        R                  " X5      -
  U5        [        S[        R                  " SU S-  US-  5      -
  U5        g )Ng{Gzr   r  r[   rM   )r`   r   r   r  r   r  r  r  r   r  r   r   r  	gammainccr   r  )r  r  r|  r  s       rA   test_chi2_edgecases_gh20972rc
  9  s    	

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


RVVGUAtRVV45A 

1q5!a%
(CEa!eQ1622RXXa[288A;5NND66"((39%&&&&66"++c%j)**** GMM!'-GLLAE1q5137A))!a%Q77=Aq,,c2AaQA66<rE   c                  F    [        [        R                  " SS5      SSSS9  g )Nr  r   yj_?r   r   r^   )r   r   r   r  rE   rA   test_chi2c_smalldfrf
  N  s    GNN3*,Aa)rE   c                  F    [        [        R                  " SS5      SSSS9  g )Nr  re
  r   r   r   r^   )r   r   r   r  rE   rA   test_chi2_inv_smalldfrh
  S  s    GNN3(=>a)rE   c            	         Sn [        S[        R                  " S[        R                  " S5      5      -  SU S9  SnSnSn[        [        R                  " S/S	/// S
Q5      SX/US	U//U S9  Sn[        [        R                  " SS5      X@S9  [        [        R                  " SS5      X@S9  [        [        R                  " SS5      U* U S9  [        [        R                  " SS5      SU S9  [        [        R                  " SS5      SU S9  [        [        R                  " SS5      SU S9  [        [        R                  " SS5      SU S9  [        [        R                  " SS5      SU S9  [        [        R                  " SS5      SU S9  [        [        R                  " SS5      SU S9  [        R
                  " S5      n[        [        R                  " UR                  UR                  5      S U S9  [        [        R                  " S!UR                  -  UR                  5      S"U S9  [        [        R                  " UR                  S	UR                  -  5      S#U S9  [        [        R                  " S$S$5      S$5        [        [        R                  " S%S$5      S$5        [        [        R                  " SS&5      [        R                  5        [        [        R                  " S$[        R                  5      [        R                  5        [        [        R                  " [        R                  S$5      [        R                  5        [        [        R                  " S$[        R                  * 5      [        R                  5        [        [        R                  " [        R                  * S$5      [        R                  5        [        [        R                  " [        R                  [        R                  * 5      [        R                  5        [        [        R                  " [        R                  * [        R                  5      [        R                  5        [        [        R                  " S[        R                  5      [        R                  5        [        [        R                  " [        R                  S5      [        R                  5        [        [        R                  " S[        R                  5      [        R                  5        [        [        R                  " [        R                  S5      [        R                  5        [        [        R                  " S[        R                  * 5      [        R                  * 5        [        [        R                  " [        R                  * S5      [        R                  * 5        g )'NrS   r[   rM   gDSYC?rT   gQ_?g?@g>;,
i}@r   )r[   r   r   g=O?rP   r[  r   rQ   gXs*@r2  g   V4oAgO1eAgꌠ9Y>)FgEg^ 9^;gd-?gP.5_gsTNNeg6dgu?j/ g]XC}KdgѧRg"!x{{ r   g][#!Rr  gٍS1gN_ r   r  rQ  )r   r   agmr`   r   r   r  r  r   r:  r   )rU   agm13agm15agm35agm12fis         rA   test_agm_simplerp
  X  s   D Agkk!RWWQZ002F
 EEEGKK!qc
I6&Q&(.24 EGKK1%u8GKK1%u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3rE   c            	      r   [         R                  " 5          [         R                  " SS[        5        [	        [
        R                  " SS5      [
        R                  " SS5      5        [	        [
        R                  " SSS5      [
        R                  " SSS5      5        [	        [
        R                  " SSS5      [
        R                  " SSS5      5        [	        [
        R                  " SSS5      [
        R                  " SSS5      5        [	        [
        R                  " SS5      [
        R                  " SS5      5        [	        [
        R                  " SS5      [
        R                  " SS5      5        [	        [
        R                  " SS5      [
        R                  " SS5      5        [	        [
        R                  " SS5      [
        R                  " SS5      5        [	        [
        R                  " SS5      [
        R                  " SS5      5        S S S 5        g ! , (       d  f       g = f)Nr`  rN  r[   rF  g?rM   gffffff@)ra  rb  rc  rd  r   r   expnr  r  r  rO  r9  r  r  r  r  rE   rA   test_legacyrs
    sa   		 	 	"E~	WW\\!S)7<<S+ABW^^Aq#.sC0MNW]]1a-w}}S#s/KLW^^Aq#.sC0MNW]]1c*GMM#s,CDWZZ3'C)=>WZZ3'C)=>W__Q,gooc3.GHW%%a-w/?/?S/IJ 
#	"	"s   H	H((
H6c                  *    SS K n U R                  5       $ r<   )	threadingLock)ru
  s    rA   errstate_lockrw
    s    >>rE   c                     U    [         R                  " SS9   [        [         R                  [         R                  SS5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr  r  r[   y        .B}T)r   r  r  r  r  )rw
  s    rA   test_error_raisingry
    sF    	'*'66

AuM + 
** 
s"   A%+AA%
A"	A%%
A3c                     S n [         R                  " SS[         R                  4S[         R                  4S/[        S9n[         R
                  USS/4   n[         R                  " U 5      " US S 2S4   US S 2S4   5      n[        [        R                  X1S	S	S
9  [         R                  " U 5      " US S 2S4   US S 2S4   5      n[        [        R                  XBS	S	S
9  g )Nc                     [         R                  " SS9   U S:X  a&  [         R                  " U5      (       d  U sS S S 5        $ U [         R                  " U5      -  sS S S 5        $ ! , (       d  f       g = fNr`  )invalidr   )r`   r  r   r   r  rJ  s     rA   xfunctest_xlogy.<locals>.xfunc  sI    [[*Avbhhqkk +* {	 +**   #A$A$$
A2r   r   r   r   r  r  )r   rH  )r[   rH  r[   rS   r  )
r`   r   r:  r   r|   r   r   r3   r   xlogy)r
  z1z2w1w2s        rA   
test_xlogyr
    s    # 
UQK!RVVjA	OB	rGW%%	&B	e	R!Wb1g	.BgmmR%eD	e	R!Wb1g	.BgmmR%eDrE   c                     S n [         R                  " SS[         R                  4S[         R                  4SS/[        S9n[         R
                  " U 5      " US S 2S4   US S 2S4   5      n[        [        R                  X!SSS	9  g )
Nc                     [         R                  " SS9   U S:X  a&  [         R                  " U5      (       d  U sS S S 5        $ U [         R                  " U5      -  sS S S 5        $ ! , (       d  f       g = fr|
  )r`   r  r   r\  r~
  s     rA   r
  test_xlog1py.<locals>.xfunc  sI    [[*Avbhhqkk +* 288A;	 +**r
  r
  r   r
  )r[   gKH9r  r[   rS   r  )	r`   r   r:  r   r|   r   r3   r   xlog1py)r
  r
  r
  s      rA   test_xlog1pyr
    sq    ' 
UQK!RVVj!(-
/B	e	R!Wb1g	.BgoorEFrE   c                  \   S n SSS[         R                  4nSS/n/ n[        R                  " X!5       H  u  pEUR	                  XE-  5        M     [         R
                  " U[        S9n[         R                  " U [         R                  /S9" U5      n[        [        R                  XvS	S	S
9  g )Nc                 ^    U S:  a  [         R                  * $ [        R                  " X 5      * $ r<   )r`   r   r   r
  r`  s    rA   r
  test_entr.<locals>.xfunc  s&    q5FF7NMM!'''rE   r   r   r   rP   r[   r  otypesrS   r  )r`   r   r  r  r  r   r|   r   r   r3   r   entr)r
  r  signsr  sgnr  rK  r  s           rA   	test_entrr
    s    (
 c266"FGE
C##E2

37 3
E"A
UBJJ<03AgllAu5ArE   c                  b   S n SnSS/n/ n[         R                  " X!X!5       H  u  pEpgUR                  XE-  Xg-  45        M     [        R                  " U[
        S9n[        R                  " U [        R                  /S9" US S 2S4   US S 2S4   5      n	[        [        R                  XSSS	9  g )
Nc                 ,   U S:  d  US:  d  US:X  a  U S:w  a  [         R                  $ [         R                  " U 5      (       d  [         R                  " U5      (       a  [         R                  $ U S:X  a  U$ [        R                  " X U-  5      U -
  U-   $ r<   )r`   r   r  r   r
  r~
  s     rA   r
  test_kl_div.<locals>.xfunc  so    q5AEa1fa66M[[^^r{{1~~66M!VH==aC(1,q00rE   r   r   r   rP   r[   r  r
  r   rS   r  )r  r  r  r`   r   r|   r   r   r3   r   kl_div
r
  r  r
  r  sgnavasgnbvbrK  r  s
             rA   test_kl_divr
    s    
1 FGE
C'//uM$

DGTW%& N
E"A
UBJJ<01Q31Q3@AgnnaUCrE   c                  b   S n SnSS/n/ n[         R                  " X!X!5       H  u  pEpgUR                  XE-  Xg-  45        M     [        R                  " U[
        S9n[        R                  " U [        R                  /S9" US S 2S4   US S 2S4   5      n	[        [        R                  XSSS	9  g )
Nc                     U S:  a  US:  a  [         R                  " X U-  5      $ U S:X  a  US:  a  g[        R                  $ r<   )r   r
  r`   r   r~
  s     rA   r
  test_rel_entr.<locals>.xfunc  s;    q5QU==aC((!VQ66MrE   r
  rP   r[   r  r
  r   rS   r  )r  r  r  r`   r   r|   r   r   r3   r   rel_entrr
  s
             rA   test_rel_entrr
    s     FGE
C'//uM$

DGTW%& N
E"A
UBJJ<01Q31Q3@Ag&&5uErE   c                      [         R                  " / SQ5      n / SQnU S S 2S4   nU S S 2S4   n[        [        R                  " X#5      USSS9  g )N))gpB?gĬB?)gtK&?gCtK&?)g>уO'?gvуO'?)ggQW"g    G=r   r[   rS   r  )r`   r   r   r   r
  inputsrL  r  rJ  s       rA    test_rel_entr_gh_20710_near_zeror
  
  sQ    XX  FH
 	q!tAq!tAG$$Q*H5qIrE   c                      [         R                  " SS9  [        R                  " / SQ5      n / SQnU S S 2S4   nU S S 2S4   n[	        [         R
                  " X#5      USSS9  g )	Nr`  r  ))rK   X )r  gZbti)r
  g  4&kC)gMG.@g)Z?g wa)r   r[   rS   r  )r   seterrr`   r   r   r
  r
  s       rA   test_rel_entr_gh_20710_overflowr
    s]    NNx XX  FH
 	q!tAq!tAG$$Q*H5qIrE   c                      [        [        R                  " SS5      [        R                  5        [        [        R                  " SS5      S[        R                  " S5      -  5        [        [        R                  " SS5      S5        S n [        R                  R                  SS5      n[        R                  " U [        R                  /S	9" US S 2S
4   US S 2S4   5      n[        [        R                  X!SSS9  g )NrP   ru  rM   r   r  r~  c                     U S:  a  [         R                  $ [         R                  " U5      U :  a  S[         R                  " U5      -  $ U [         R                  " U5      SU -  -
  -  $ )Nr   r   )r`   r   r  squaredeltars  s     rA   r
  test_huber.<locals>.xfunc8  sQ    1966MVVAY1%%BFF1Ie344rE   rQ  r
  r   r[   rS   r  )r   r   huberr`   r   r   r
  rf   randnr   r   r3   r
  rK  r  s      rA   
test_huberr
  3  s    r3'0GMM!S)33+?@GMM!S)+>?5 			AA
UBJJ<01Q31Q3@AgmmQEBrE   c                  F   S n [         R                  " [         R                  R                  SS5      R	                  5       SS/SS//-   5      n[         R
                  " U [         R                  /S9" US S 2S4   US S 2S4   5      n[        [        R                  X!SSS	9  g )
Nc                     U S:  a  [         R                  $ U (       a  U(       d  gU S-  [         R                  " SX-  S-  -   5      S-
  -  $ )Nr   rM   r[   )r`   r   r   r
  s     rA   r
   test_pseudo_huber.<locals>.xfuncF  sB    1966M!8rwwqAGa<'781<==rE   rQ  rM   r   r   r
  r[   rS   r  )
r`   r   rf   r
  tolistr   r   r3   r   pseudo_huberr
  s      rA   test_pseudo_huberr
  E  s    > 	Q'..0QHsAh3GGHA
UBJJ<01Q31Q3@Ag**Au5IrE   c                  P    Sn Sn[         R                  " X5      nSn[        X#SS9  g )Nr   gC]r2<gs.-De8rS   rT   )r   r
  r   )r
  rs  rJ  rL  s       rA   test_pseudo_huber_small_rr
  S  s-    EAU&A &HAe,rE   c                      [         R                  " [        SS9   [        SS5        S S S 5        [         R                  " [        SS9   [	        SS5        S S S 5        g ! , (       d  f       N== f! , (       d  f       g = f)NzToo many predicted coefficientsr  rX   )r  warnsrd  r'   r(   r  rE   rA   test_runtime_warningr
  `  sh    	n>
@t$
@ 
n>
@$%
@ 
@
@ 
@
@ 
@s   AA/
A,/
A=c                       \ rS rSrS/SS// SQ/ SQ/ SQ/ SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ/r\R                  R                  SS\0 4S\	SS04/5      S 5       r
\R                  R                  SS\0 4S\	SS04/5      S 5       r\R                  R                  SS\0 4S\	SS04/5      S 5       r\R                  R                  SS\0 4S\	SS04/5      S 5       r\R                  R                  SS\0 4S\	SS04/5      S 5       rS rS r\R                  R                  SSSSS\R$                  /5      \R                  R                  S/ S Q5      \R                  R                  S!SS/5      S" 5       5       5       r\R                  R                  S!SS/5      S# 5       r\R                  R                  SS\0 4S\	SS04/5      S$ 5       r\R                  R                  SS\0 4S\	SS04/5      S% 5       rS& rS'rg())TestStirling2ii  r[   r   )r   r[   r[   )r   r[   r   r[   )r   r[   rO   rQ   r[   )r   r[   r   r   rQ  r[   )r   r[      r  A   r   r[   )r   r[   ?   r:  i^     r  r[   )	r   r[      i  i    i
     r[   )
r   r[      i  iZ  i'  iV
  i  $   r[   )r   r[   r   r$  i9  i  i+Y    i  r   r[   zis_exact, comp, kwargsTFrU   r   c           
          [        S[        U R                  5      5       H<  n[        [        US-   5      5      nU R                  U   nU" U[	        U/XQS940 UD6  M>     g )Nr[   r  )r{   r  tabler  r)   )r@   is_exactcompkwargsri   k_valuesrows          rA   test_table_casesTestStirling2.test_table_casesx  sT    
 q#djj/*AE!A#J'H**Q-CiX>I&I +rE   c                     U" [        SSUS9U R                  S   S   40 UD6  U" [        SSUS9U R                  S   S   40 UD6  U" [        SSUS9S40 UD6  U" [        S/S/US9S/40 UD6  g )Nr   r  rK   rM   r   r   r   )r)   r
  r@   r
  r
  r
  s       rA   test_valid_single_integer'TestStirling2.test_valid_single_integer  s    
 	Yq!8,djjmA.>I&IYq!8,djjmA.>I&I 	Yq!8,b;F;YsQCx02$A&ArE   c                 v    U" [        SSUS9S40 UD6  U" [        SSUS9S40 UD6  U" [        SSUS9S40 UD6  g )NrP   r  r   rM   r)   r
  s       rA   test_negative_integer#TestStirling2.test_negative_integer  sL     	Yr2X.<V<Yr1H-q;F;Yq"H-q;F;rE   c           	         U R                   S   S   U R                   S   S   /nU" [        [        SS/5      [        SS/5      US9U5        U" [        SS/[        SS/5      US9U5        U" [        [        SS/5      SS/US9U5        g )NrQ  r   rK   r  )r
  r)   r   )r@   r
  r
  r
  anss        rA   test_array_inputsTestStirling2.test_array_inputs  s    
 zz"~a $**R."34YwBx(&1v%-/ 	 	YBx&1v%-/ 	 	YwBx( !1v%-/ 	rE   rS   c                 @    / SQn/ SQn/ SQnU" [        XVUS9U40 UD6  g )N)r   r[   r   r   r
  r
  r
  )rP   r   r   r   rt  rQ  rQ  )r[  r   rM   r   r   rO   r   r  r
  r@   r
  r
  r
  r
  ri   rj   s          rA   test_mixed_valuesTestStirling2.test_mixed_values  s)     .$"Yq8,c<V<rE   c                     S[         R                  " S5      p![        [        XSS9S-  U Vs/ s H'  n[        R
                  " XS-  -
  S-
  X-
  5      S-  PM)     sn5        gs  snf )zkTest parity follows well known identity.

en.wikipedia.org/wiki/Stirling_numbers_of_the_second_kind#Parity
r  e   Tr  rM   r[   N)r`   r   r   r)   r  r   )r@   ri   Krj   s       rA   test_correct_parity!TestStirling2.test_correct_parity  s\    
 BIIcN1a$'!+=>?QTYYqF|a'/!3Q?	
?s   .A#
c                     [        SS/5      nSS/nSS/n[        [        X#SS9U5      (       d   e[        S	S
/5      nSS/nSS/n[        [        X#SS9U5      (       d   eg )Nl   V^;. l   k4-Tr   rW   rL   rK   Tr  l	   D,"SBXp!N l   wY)H_1e_*   r     )r   r   r)   )r@   r
  ri   rj   s       rA   test_big_numbersTestStirling2.test_big_numbers  s    ~'89:HG9Q6<<<<<:< =HH9Q6<<<<rE   r  r  r~  y      @      ?12r
  )r  r   2Nr
  c                     [         R                  " [        5         [        XUS9  S S S 5        g ! , (       d  f       g = f)Nr  )r  r   	TypeErrorr)   )r@   r  r
  r
  s       rA   test_unsupported_input_types*TestStirling2.test_unsupported_input_types  s&    
 ]]9%a(+ &%%s   /
=c           	      
   [        U R                  S   SS  5      n[        / SQ[        S9n[        / SQ[        S9n[        R                  " [
        5         [        [        X4US9U5        S S S 5        g ! , (       d  f       g = f)NrK   r[   rK   rK   rK   rK   r  r[   rM   r   rK   r  )r   r
  r  r  r   r
  r   r)   )r@   r
  r
  ri   rj   s        rA   !test_numpy_array_int_object_dtype/TestStirling2.test_numpy_array_int_object_dtype  s^     djjmAB'(L/L/]]9%	!h7= &%%s   A44
Bc                     [        U R                  S   SS  5      n[        / SQ[        S9n[        / SQ[        S9nU" [        XVSS9U40 UD6  g )NrK   r[   r
  r  r
  Fr  )r   r
  r+   r)   r
  s          rA   #test_numpy_array_unsigned_int_dtype1TestStirling2.test_numpy_array_unsigned_int_dtype  sK     djjmAB'(L1L1Yq5)39&9rE   c                 F   [        / SQ/ SQ/5      n[        / SQ/ SQ/5      n[        / SQ5      nU" [        XVUS9U40 UD6  [        S/S/S/S/S//5      n[        / SQ5      n[        [        S	5       Vs/ s H  n/ S
QPM	     sn5      nU" [        XVSS9U40 UD6  g s  snf )N)r[   r   r   rQ  )r[   rO   rQ   r[   )r   r   r   r   r
  r
  r  rK   )r   r[   rM   r   rK   r   r   )r   r[   rO   rQ   r[   r   F)r   r)   r{   )r@   r
  r
  r
  r
  ri   rj   r  s           rA   "test_broadcasting_arrays_correctly0TestStirling2.test_broadcasting_arrays_correctly  s     56\<01L!Yq8,c<V<aS1#sQC!-.&'58<8a)8<=Yq5)39&9 =s   6Bc                    [        [        SSS5      5      nU Hh  n[        [        SUS-   5      5      n[        U/USS9nU[        U/USS9-
  n[        R                  " [        R
                  " XT-  5      5      S:  a  Mh   e   g )	N3   r
  r   r[   Tr  Fgh㈵>)r  r{   r)   r`   r  r  )r@   r  ri   	k_entriesdenomr}   s         rA   test_temme_rel_max_error&TestStirling2.test_temme_rel_max_error  s|     r3"#AU1ac]+Iqc9D9E)QC%@@C66"&&-.555	 rE   r  N)r  r  r  r  r
  r  r  r  r   r   r
  r
  r
  r
  r
  r
  r
  r`   r:  r
  r
  r  r  r
  r  r  rE   rA   r
  r
  i  s   	
	
A!(07@E [[5	|R 	&%18 J	J [[5	|R 	&%18 B	B [[5	|R 	&%18 <	< [[5	|R 	&%18 	 [[5	|R 	&%18 =	=	
= [[S3D$"?@[[S"56[[Z$7, 8 7 A,
 [[Z$7> 8> [[5	|R 	&%18 :	: [[5	|R 	&%18 :	:6rE   r
  r5  )r  r  r   r  r  ra  r*
  r`   r   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   scipyr   scipy.special._ufuncs_ufuncsr=   scipy.specialr   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   scipy._lib._utilr*   r+   scipy._lib._array_apir,   r-   r.   scipy.special._basicr/   r0   r1   scipy.special._testutilsr2   r3   r4   scipy.integrater5   r  architecturerN  r	  r  r9   r  r*  r3  r9  r  r  r  r  r1  rq  r  r  r  r  r.  r?  rf  rj  r[  ry  r  r  r	  rx	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r
  r	
  r
  r'
  r:
  rA
  rS
  rU
  r  r  r:  rX
  r[
  r^
  r`
  rc
  rf
  rh
  rp
  rs
  fixturerw
  ry
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r  rE   rA   <module>r     s<  "     
         *L L  & & 2 2 E E " H H . S S ! !    LLGq!W, XX 
xx n9 n9buG uGp8 8 
k- k-\	- 	-0 0<D3 D3NO/ O/dB; B;JH H:JT JTZG0 G0T)= )=X_B _BD; ;29 9@!Hj- j-ZA8 A8H@7 @7F*% *%Z]. ].@Q	4 Q	4h? ?D8 8	; 	;$$/3 /3d - -5= 5=p- -4- -G GQ QJ J,&" &"R& &#9 #9LS1 wdCHI. J. wdCHI. J. wdCHI/ J/ wdCHI/ J/=*)
)
:4zK"  
 N NE"GB D,F$J&J,C$J
-&[6 [6rE   