
    Cpj             	          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
K7J8r8J9r9J:r:  S SK;J<r<J=r=J>r>  S SK?J@r@JArAJBrB  S SKCJDrD  S SKErE\R                  S:X  d  \R                  " 5       S    S:X  a  \R                  O\R                  rI " S S5      rJ " S S5      rK " S S5      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 " S0 S15      rZS~S2 jr[ " S3 S45      r\ " S5 S65      r] " S7 S85      r^ " S9 S:5      r_ " S; S<5      r` " S= S>5      ra " S? S@5      rb " SA SB5      rc " SC SD5      rdSE reSF rf " SG SH5      rg " SI SJ5      rh " SK SL5      ri " SM SN5      rj " SO SP5      rk " SQ SR5      rl " SS ST5      rm " SU SV5      rn " SW SX5      ro " SY SZ5      rp " S[ S\5      rq " S] S^5      rrS_ rsS` rt\R                  R                  Sa\R,                  * SbScSd\R,                  \R                  /5      Se 5       rx\R                  R                  Sf\R,                  * SbScSd\R,                  \R                  /5      Sg 5       ry\R                  R                  Sa\R,                  * SbScSd\R,                  \R                  /5      Sh 5       rz\R                  R                  Sf\R,                  * SbScSd\R,                  \R                  /5      Si 5       r{Sj r|Sk r}Sl r~Sm rSn r\GR                  So 5       r\@Sp 5       rSq rSr rSs rSt rSu rSv rSw rSx rSy rSz 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)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)\*RV                  RY                  S(S)9S* 5       r-S+ 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 rl\*RV                  R                  Sj/ SkQ5      Sl 5       rnSm ro\*RV                  R                  Sj/ SnQ5      So 5       rpSp rqSq rrSr rsSs rtSt ruSu rvSv rwSw rxSx rySy rzSz r{S{ r|S| r}S} r~S~ rS rS r\*RV                  RY                  SS)9S 5       r\*RV                  RY                  SS)9S 5       r\*RV                  RY                  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 rSrg)
TestCephes:   c                 0    [         R                  " S5        g Nr   )cephesairyselfs    Z/var/www/html/pdf-tiff/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    r?   
test_airyeTestCephes.test_airye>   s    QrC   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
@rK   )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           ?绽|=atolrS   )npr   broadcast_arraysreshapeTr1   r;   binomravelrandomRandomStater   r   rand)r>   nknkrknownrngs         r?   
test_binomTestCephes.test_binomA   sl   HH()HH%&XXb))!AdF)QtAvY? 2qq 	 ##QF@B C 	&,,G ii##D)EE"))B#T#((2,%6%<<=IIaXXb))!AdF)QtAvY? 2qq 	 	&,, ,,r!A#w1Q390EF$5	2rC   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 )NrT   rY   ,     r   rX   rK   rN   rZ   r[   r\   )r^   rd   seedr   logspacer   r   r_   r`   ra   r1   r;   rb   )r>   rg   rh   ri   s       r?   test_binom_2TestCephes.test_binom_2X   s    
		tEE"++ab)*IIaXXb))!AdF)QtAvY? 2qq 	 	&,, ,,r!A#w1Q390EF$5	2rC   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      $ NrY   )intrangefloat)rg   rh   numdenis        r?   	binom_int.TestCephes.test_binom_exact.<locals>.binom_intf   sW    AAAACC1ac]1uqy  # >!rC   rT   rY      r   rK   rN   r\   )r^   	vectorizerd   rq   r   r   r_   r`   ra   r1   r;   rb   )r>   r~   rg   rh   ri   s        r?   test_binom_exactTestCephes.test_binom_exacte   s    		" 
	" 			tIIaIIaXXb))!AdF)QtAvY? 2qq 	1Q32ac7"#&,,#BqsGR!W5 q	*rC   c                     / SQn[         R                  " U5      n[        [        R                  USSSS9R                  5         g )N))rV   rW   gwP~)i  i  gii9~)i  i  gyhY~)i  i  gpvy~)i  i  gzN~)i  i  gGTɳ~)i  i  g@jH~)i  i  gF:aYͦ~)i  i  gɸV)i  i  g
{9)i  i  gyVxY)i    g*I y)i   i   gI)i  i  gW@N)i  i  g5y)r   rY   rK   -q=rR   )r^   r   r2   r;   rb   check)r>   datasets     r?   test_binom_nooverflow_8346%TestCephes.test_binom_nooverflow_8346|   s6    
" **W%w>DDFrC   c                 H    [        [        R                  " SSS5      S5        g )NrY         ?      ?)r   r;   bdtrr=   s    r?   	test_bdtrTestCephes.test_bdtr   s    V[[1S)#.rC   c                 H    [        [        R                  " SSS5      S5        g NrY      r   )r   r;   bdtrir=   s    r?   
test_bdtriTestCephes.test_bdtri       V\\!Ac*3/rC   c                 H    [        [        R                  " SSS5      S5        g r   )r   r;   bdtrcr=   s    r?   
test_bdtrcTestCephes.test_bdtrc   r   rC   c                 4    [         R                  " SSS5        g r   )r;   bdtrikr=   s    r?   test_bdtrikTestCephes.test_bdtrik   s    a#rC   c                 D    [        [        R                  " S5      S5        g Nr           )r   r;   beir=   s    r?   test_beiTestCephes.test_bei       VZZ]3'rC   c                 D    [        [        R                  " S5      S5        g r   )r   r;   beipr=   s    r?   	test_beipTestCephes.test_beip       V[[^C(rC   c                 D    [        [        R                  " S5      S5        g Nr   r   )r   r;   berr=   s    r?   test_berTestCephes.test_ber   r   rC   c                 D    [        [        R                  " S5      S5        g r   )r   r;   berpr=   s    r?   	test_berpTestCephes.test_berp   r   rC   c                 H    [        [        R                  " SSS5      S5        g r   )r   r;   
besselpolyr=   s    r?   test_besselpolyTestCephes.test_besselpoly   s    V&&q1-c2rC   c                 D    [        [        R                  " S5      SSSS9  g )NrY   r   ư>r   r\   )r   r;   cbrtr=   s    r?   	test_cbrtTestCephes.test_cbrt   s    A$Q?rC   c                 F    [        [        R                  " SS5      S5        g NrY   r   r   )r   r;   chdtrr=   s    r?   
test_chdtrTestCephes.test_chdtr   s    V\\!A&s+rC   c                 F    [        [        R                  " SS5      S5        g NrY   r   r   )r   r;   chdtrcr=   s    r?   test_chdtrcTestCephes.test_chdtrc       V]]1Q',rC   c                 F    [        [        R                  " SS5      S5        g NrY   r   )r   r;   chdtrir=   s    r?   test_chdtriTestCephes.test_chdtri   r   rC   c                 H    [        [        R                  " SSS5      S5        g Nr   rY   r   )r   r;   chndtrixr=   s    r?   test_chndtrixTestCephes.test_chndtrix       V__Qq+C0rC   c                 D    [        [        R                  " S5      S5        g r   )r   r;   cosdgr=   s    r?   
test_cosdgTestCephes.test_cosdg       V\\!_S)rC   c                 D    [        [        R                  " S5      S5        g r   )r   r;   cosm1r=   s    r?   
test_cosm1TestCephes.test_cosm1   r   rC   c                 D    [        [        R                  " S5      SSSS9  g )N-   r   v!>r   r\   )r   r;   cotdgr=   s    r?   
test_cotdgTestCephes.test_cotdg   s    R(#FCrC   c                     [        [        R                  " S5      S5        [        [        R                  " S5      S5        g )Nr   r   gGz?gf?)r   r;   dawsnr   r=   s    r?   
test_dawsnTestCephes.test_dawsn   s(    V\\!_S)T*,?@rC   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)rY         rK   g-C6
?r   r   r   r\   &.> [n<V瞯<float128r   g"<)rK   rI            皙?)gg?gsOB?gsaL?g
7I^ʿr   )r^   r   r   astypefloat32r   r   diricfloat64hasattrr   r   )r>   n_oddxn_evenoctave_results        r?   
test_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QrC   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   )rY   r   rM   )	r^   r   r   r   r   r   newaxisshapesize)r>   r   rg   s      r?   test_diric_broadcasting"TestCephes.test_diric_broadcasting   sU    IIaLHHYa2::.288QVVQVV<LLMrC   c                 D    [        [        R                  " S5      S5        g NrY   r   )r   r;   r   r=   s    r?   test_ellipeTestCephes.test_ellipe       V]]1%c*rC   c                 F    [        [        R                  " SS5      S5        g r   )r   r;   	ellipeincr=   s    r?   test_ellipeincTestCephes.test_ellipeinc       V%%a*3/rC   c                 2    [         R                  " SS5        g Nr   rY   )r;   ellipjr=   s    r?   test_ellipjTestCephes.test_ellipj   s    arC   c                 <    [        [        S5      [        S-  5        g )Nr   rK   )r   r   r   r=   s    r?   test_ellipkTestCephes.test_ellipk   s    q	2a4(rC   c                 F    [        [        R                  " SS5      S5        g r   )r   r;   	ellipkincr=   s    r?   test_ellipkincTestCephes.test_ellipkinc   r  rC   c                 D    [        [        R                  " S5      S5        g r   r   r;   erfr=   s    r?   test_erfTestCephes.test_erf   s    VZZ]C(rC   c                 x    Sn[        [        R                  " U5      [        R                  " U* 5      -   S5        g )Ng#8x@r   r  r>   r   s     r?   test_erf_symmetryTestCephes.test_erf_symmetry   s(    VZZ]VZZ^3S9rC   c                 D    [        [        R                  " S5      S5        g r   )r   r;   erfcr=   s    r?   	test_erfcTestCephes.test_erfc   s    V[[^S)rC   c                 D    [        [        R                  " S5      SSSS9  g )NrK   g      Y@r   r   r\   )r   r;   exp10r=   s    r?   
test_exp10TestCephes.test_exp10   s    QTBrC   c                 D    [        [        R                  " S5      S5        g )NrK         @)r   r;   exp2r=   s    r?   	test_exp2TestCephes.test_exp2  r   rC   c                    [        [        R                  " S5      S5        [        [        R                  " [        R                  5      [        R                  5        [        [        R                  " [        R                  * 5      S5        [        [        R                  " [        R
                  5      [        R
                  5        g )Nr   r   rN   )r   r;   expm1r^   r   nanr=   s    r?   
test_expm1TestCephes.test_expm1  sc    V\\!_S)V\\"&&)2662V\\266'*B/V\\"&&)2662rC   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   rY   rK   rI   r   rN   )r;   r/  r   complexr^   r   r0  )r>   r/  s     r?   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MrC   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      rp                 ?)y=Cw?yC7gg)gF<Ug?yQ<D*?yg:><sKy>񸣼$	Um>ly;Vl <@r   rp   )	r^   r   r   r
   r;   r/  r   imagr   )r>   yr   zexpectedfounds         r?   test_expm1_complex_hard"TestCephes.test_expm1_complex_hard  s     HH/0VVBFF1I1H 88 J K Q&uzz8==!D&uzz8=="ErC   c                     [        [        R                  " SSS5      S5        [        [        R                  " SSS5      SSS	9  g )
NrY   r   r   r   r   
   g2?r   rR   )r   r;   fdtrr   r=   s    r?   	test_fdtrTestCephes.test_fdtr4  s6    V[[Aq)3/D!R02D"	$rC   c                     [        [        R                  " SSS5      S5        [        [        R                  " SSS5      SSS	9  g )
NrY   r   r   rK   r;  g    _BgDIXl?r   rR   )r   r;   fdtrcr   r=   s    r?   
test_fdtrcTestCephes.test_fdtrc:  s8    V\\!Q*C0 	QT24G"	$rC   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 )NrY   gV-?gx&1?g
}?g<zO'?r   rR   g׀?r;  r   r   )r   r;   fdtrir   )r>   ps     r?   
test_fdtriTestCephes.test_fdtriA  sM    QE5>:y*56T	C %S!Q/?rC   c                 x    Su  pn[        [        R                  " X[        R                  " XU5      5      USS9  g )N)rY   P  g\/չ=@r   rR   )r   r;   rP  rH  )r>   dfddfnr   s       r?   test_gh20835TestCephes.test_gh20835I  s.    1!Sv{{3Q/GH!RWXrC   c                 H    [        [        R                  " SSS5      S5        g )NrY   r   )r   r;   rP  r=   s    r?   test_fdtri_mysterious_failure(TestCephes.test_fdtri_mysterious_failureN  s    Q3/3rC   c                 H    [        [        R                  " SSS5      S5        g )NrY   r         @)r   r;   fdtridfdr=   s    r?   test_fdtridfdTestCephes.test_fdtridfdQ  r   rC   c                 D    [        [        R                  " S5      S5        g Nr   r   r   )r   r;   fresnelr=   s    r?   test_fresnelTestCephes.test_fresnelT  s    V^^A&y1rC   c                 D    [        [        R                  " S5      S5        g Nr         8@)r   r;   gammar=   s    r?   
test_gammaTestCephes.test_gammaW  s    V\\!_T*rC   c                 F    [        [        R                  " SS5      S5        g )Nr   rY   r   )r   r;   gammainccinvr=   s    r?   test_gammainccinvTestCephes.test_gammainccinvZ  s    V((1-c2rC   c                 0    [         R                  " S5        g )NrG  )r;   gammalnr=   s    r?   test_gammalnTestCephes.test_gammaln]  s    rrC   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   rY   g@r   r   )r^   r   r   r   r0  r   r;   gammasgn)r>   vals	references      r?   test_gammasgnTestCephes.test_gammasgn`  s    xxffWb$dCC@"**
 HHVVRVVS$c3SA2::
	 	6??40)<rC   c                 H    [        [        R                  " SSS5      S5        g r   )r   r;   gdtrr=   s    r?   	test_gdtrTestCephes.test_gdtri      V[[1Q',rC   c                 d    [        [        R                  " SS[        R                  5      S5        g r  )r   r;   r  r^   r   r=   s    r?   test_gdtr_infTestCephes.test_gdtr_infl  s    V[[1RVV,S1rC   c                 H    [        [        R                  " SSS5      S5        g r   )r   r;   gdtrcr=   s    r?   
test_gdtrcTestCephes.test_gdtrco      V\\!Aa(-rC   c                 H    [        [        R                  " SSS5      S5        g r   )r   r;   gdtriar=   s    r?   test_gdtriaTestCephes.test_gdtriar      V]]1Qq)#.rC   c                 4    [         R                  " SSS5        g NrY   r   )r;   gdtribr=   s    r?   test_gdtribTestCephes.test_gdtribu  s    a!rC   c                 4    [         R                  " SSS5        g NrY   r;  )r;   gdtrixr=   s    r?   test_gdtrixTestCephes.test_gdtrixy  s    a"rC   c                 2    [         R                  " SS5        g rw   )r;   hankel1r=   s    r?   test_hankel1TestCephes.test_hankel1|      qrC   c                 2    [         R                  " SS5        g rw   )r;   hankel1er=   s    r?   test_hankel1eTestCephes.test_hankel1e      !rC   c                 2    [         R                  " SS5        g rw   )r;   hankel2r=   s    r?   test_hankel2TestCephes.test_hankel2  r  rC   c                 2    [         R                  " SS5        g rw   )r;   hankel2er=   s    r?   test_hankel2eTestCephes.test_hankel2e  r  rC   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 )
NrY   r   r   r   r\   r   rI   g㈮?)r   r;   hyp1f1r   r=   s    r?   test_hyp1f1TestCephes.test_hyp1f1  sP    aA.Ct!LaB/1H!	+a!rC   c                 J    [        [        R                  " SSSS5      S5        g r   )r   r;   hyp2f1r=   s    r?   test_hyp2f1TestCephes.test_hyp2f1      V]]1Qq+C0rC   c                 D    [        [        R                  " S5      S5        g r   )r   r;   i0r=   s    r?   test_i0TestCephes.test_i0      VYYq\#&rC   c                 D    [        [        R                  " S5      S5        g r   )r   r;   i0er=   s    r?   test_i0eTestCephes.test_i0e  r   rC   c                 D    [        [        R                  " S5      S5        g r   )r   r;   i1r=   s    r?   test_i1TestCephes.test_i1  r  rC   c                 D    [        [        R                  " S5      S5        g r   )r   r;   i1er=   s    r?   test_i1eTestCephes.test_i1e  r   rC   c                 0    [         R                  " S5        g rw   )r;   it2i0k0r=   s    r?   test_it2i0k0TestCephes.test_it2i0k0      qrC   c                 0    [         R                  " S5        g rw   )r;   it2j0y0r=   s    r?   test_it2j0y0TestCephes.test_it2j0y0  r  rC   c                 0    [         R                  " S5        g rw   )r;   
it2struve0r=   s    r?   test_it2struve0TestCephes.test_it2struve0  s    !rC   c                 0    [         R                  " S5        g rw   )r;   itairyr=   s    r?   test_itairyTestCephes.test_itairy      arC   c                 D    [        [        R                  " S5      S5        g rc  )r   r;   iti0k0r=   s    r?   test_iti0k0TestCephes.test_iti0k0      V]]1%i0rC   c                 D    [        [        R                  " S5      S5        g rc  )r   r;   itj0y0r=   s    r?   test_itj0y0TestCephes.test_itj0y0  r  rC   c                 D    [        [        R                  " S5      S5        g r   )r   r;   itmodstruve0r=   s    r?   test_itmodstruve0TestCephes.test_itmodstruve0  s    V((+C0rC   c                 D    [        [        R                  " S5      S5        g r   )r   r;   	itstruve0r=   s    r?   test_itstruve0TestCephes.test_itstruve0  s    V%%a(-rC   c                 F    [        [        R                  " SS5      S5        g r   )r   r;   ivr=   s    r?   test_ivTestCephes.test_iv      VYYq^C(rC   c                 F    [        [        R                  " SS5      S5        g r   )r   r;   iver=   s    r?   test_iveTestCephes.test_ive      VZZ!_S)rC   c                 D    [        [        R                  " S5      S5        g r   )r   r;   j0r=   s    r?   test_j0TestCephes.test_j0  r  rC   c                 D    [        [        R                  " S5      S5        g r   )r   r;   j1r=   s    r?   test_j1TestCephes.test_j1  r  rC   c                 F    [        [        R                  " SS5      S5        g r   )r   r;   jnr=   s    r?   test_jnTestCephes.test_jn  r  rC   c                 F    [        [        R                  " SS5      S5        g r   )r   r;   jvr=   s    r?   test_jvTestCephes.test_jv  r  rC   c                 F    [        [        R                  " SS5      S5        g r   )r   r;   jver=   s    r?   test_jveTestCephes.test_jve  r  rC   c                 0    [         R                  " S5        g NrK   )r;   k0r=   s    r?   test_k0TestCephes.test_k0      		!rC   c                 0    [         R                  " S5        g r
  )r;   k0er=   s    r?   test_k0eTestCephes.test_k0e      

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

1QrC   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   rN   )r;   log1pr   r^   r   r0  )r>   rT  s     r?   
test_log1pTestCephes.test_log1p  sU    U1Xs#U2Y(U2Y'U266]BFF+rC   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)
Nr4  rN   r   ignorez%invalid value encountered in multiplyrY   rK   r   rI   )r;   rT  r5  r   r^   r   warningscatch_warningsfilterwarningsRuntimeWarningr   r   r0  )r>   rT  cs      r?   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   rY   r   )r   r;   lpmvr=   s    r?   	test_lpmvTestCephes.test_lpmv  r  rC   c                 |    [         R                  " / SQ5      n[        [        R                  " US5      US-  5        g N)rY   rK   r   r   rK   )r^   r   r   r;   	mathieu_ar>   ms     r?   test_mathieu_a_q0TestCephes.test_mathieu_a_q0  +    HHYV%%a+QT2rC   z	m, q, ref))r      gs66%)r         ?g:$Zb"@)r         ?g5`VU 9@)rl  gq^A3P@c                 D    [         R                  " X5      n[        XCSS9  g Nr   rR   )r;   rf  r   r>   rh  qrefr@  s        r?   test_mathieu_aTestCephes.test_mathieu_a$       Q"U+rC   c                 |    [         R                  " / SQ5      n[        [        R                  " US5      US-  5        g re  )r^   r   r   r;   	mathieu_brg  s     r?   test_mathieu_b_q0TestCephes.test_mathieu_b_q0/  rk  rC   ))rY   r   g*|2T6)r   r   gkBv/9@)	   rn  ggf@T@)rG  gY@c                 D    [         R                  " X5      n[        XCSS9  g rq  )r;   ry  r   rr  s        r?   test_mathieu_bTestCephes.test_mathieu_b6  rw  rC   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 )NrY   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?rY   r   rK   rl  r   rI      rn  )r^   r   r
   rh  rs  rA  s      r?   	ce_smallq.TestCephes.test_mathieu_cem.<locals>.ce_smallqE  s    sNAAv A1S1X$566a1v!c!A#h..a1Q3x!S1Xb[3%6"777 13x!S!A#q\1ac7%;c1Q3'lAqQRsG>T%T"UUUrC   d   rG  rh|?+=rS   r]   )	r   r;   mathieu_cemr^   r   r   r   rr   r   )r>   r  rh  rs  s       r?   test_mathieu_cemTestCephes.test_mathieu_cemA  s    V''!A.y9 
	V 
	V IIaEE!R[[b"--.**1QtV9aQiGJ!!AdF)QtAvY>"	,rC   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 )NrY   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  rY   rl  r   rK   rI   r  )r^   r   r	   r  s      r?   	se_smallq.TestCephes.test_mathieu_sem.<locals>.se_smallq^  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UrC   r  r  r  rG  r  r  r  )	r   r;   mathieu_semr^   r   r   r   rr   r   )r>   r  rh  rs  s       r?   test_mathieu_semTestCephes.test_mathieu_semZ  s    V''!A.y9 

	V 

	V IIaEE!R[[b"--.**1QtV9aQiGJ!!AdF)QtAvY>"	,rC   c                 H    [        [        R                  " SSS5      S5        g NrY   r   rd  )r   r;   mathieu_modcem1r=   s    r?   test_mathieu_modcem1TestCephes.test_mathieu_modcem1p      V++Aa29=rC   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 )
NrY   r   rI   rS  rK   rG  rM   r[   rR   )	r;   mathieu_modcem2r^   r   r   rr   linspacer  r   r>   rh  rs  rA  y1fry2s          r?   test_mathieu_modcem2TestCephes.test_mathieu_modcem2s  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+rC   c                 H    [        [        R                  " SSS5      S5        g r  )r   r;   mathieu_modsem1r=   s    r?   test_mathieu_modsem1TestCephes.test_mathieu_modsem1  r  rC   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 )
NrY   rI   rS  rK   rG  r   rM   r[   rR   )	r;   mathieu_modsem2r^   r   r   rr   r  r  r   r  s          r?   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+rC   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?rm  )
r   r;   r  r^   r0  r  r  r  r  r  r=   s    r?   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OrC   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<   rK   r  rN   r   g.dS?r[   rR   rY   gGc?-C6?)ry   r;   r  r   )r>   rh   vs      r?   test_mathieu_ticket_1847#TestCephes.test_mathieu_ticket_1847  sH     rA&&q#r2AAaD":GAaD":F	 rC   c                 0    [         R                  " S5        g r:   )r;   modfresnelmr=   s    r?   test_modfresnelmTestCephes.test_modfresnelm      1rC   c                 0    [         R                  " S5        g r:   )r;   modfresnelpr=   s    r?   test_modfresnelpTestCephes.test_modfresnelp  r  rC   c                 F    [        [        R                  " SS5      S5        g r   )r   r;   	modstruver=   s    r?   test_modstruveTestCephes.test_modstruve  r  rC   c                 H    [        [        R                  " SSS5      S5        g r  )r   r;   nbdtrr=   s    r?   
test_nbdtrTestCephes.test_nbdtr  r  rC   c                 H    [        [        R                  " SSS5      S5        g r   )r   r;   nbdtrcr=   s    r?   test_nbdtrcTestCephes.test_nbdtrc  r  rC   c                 H    [        [        R                  " SSS5      S5        g r  )r   r;   nbdtrir=   s    r?   test_nbdtriTestCephes.test_nbdtri  r  rC   c                 4    [         R                  " SSS5        g )NrY   rL   r   )r;   nbdtrikr=   s    r?   test_nbdtrikTestCephes.test_nbdtrik  s    qBrC   c                 J    [        [        R                  " SSSS5      S5        g r   )r   r;   ncfdtrr=   s    r?   test_ncfdtrTestCephes.test_ncfdtr  r  rC   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 )NrY   r   r   )r   rY   rm  rK   r   rm  )r   r;   ncfdtrir  r   )r>   frQ  s      r?   test_ncfdtriTestCephes.test_ncfdtri  sM    V^^Aq!Q/5MM!QQ'q!S!4a8rC   zpncfdtr uses a Boost math implementation but ncfdtridfdinverts the less accurate cdflib implementation of ncfdtr.c                     / SQn[         R                  " SUSS5      n[        [         R                  " SUSS5      U5        g )NrY   rK   r   rK   rn  r   )r;   r  r   
ncfdtridfd)r>   rV  rQ  s      r?   test_ncfdtridfdTestCephes.test_ncfdtridfd  s8     MM!S$+))!Qb93?rC   zpncfdtr uses a Boost math implementation but ncfdtridfninverts the less accurate cdflib implementation of ncfdtr.c                     / SQn[         R                  " USSS5      n[        [         R                  " USSS5      USS9  g )N)r;  rY   rK   r   g     @rK   rn  r   gh㈵>rR   )r;   r  r   
ncfdtridfn)r>   rW  rQ  s      r?   test_ncfdtridfnTestCephes.test_ncfdtridfn  s:     "MM#q$+))!Qb93TJrC   zoncfdtr uses a Boost math implementation but ncfdtrincinverts the less accurate cdflib implementation of ncfdtr.c                     / SQn[         R                  " SSUS5      n[        [         R                  " SSUS5      U5        g )N)r   rm         @rK   r   r   )r;   r  r   	ncfdtrinc)r>   ncrQ  s      r?   test_ncfdtrincTestCephes.test_ncfdtrinc  s8     MM!QB'((Aq"5r:rC   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 )NrY   r   r   r|  i   r   r   r   r  r\   r        $@r   )	r   r;   nctdtrr   r^   r   r   r   r0  r=   s    r?   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8rC   c                 4    [         R                  " SSS5        g )NrY   r   r   )r;   	nctdtridfr=   s    r?   test_nctdtridfTestCephes.test_nctdtridf  s    3q!rC   c                 4    [         R                  " SSS5        g r  )r;   	nctdtrincr=   s    r?   test_nctdtrincTestCephes.test_nctdtrinc  s    1QrC   c                 4    [         R                  " SSS5        g )Nr;  r   r   )r;   nctdtritr=   s    r?   test_nctdtritTestCephes.test_nctdtrit  s    3r"rC   c                 H    [        [        R                  " SSS5      SSSS9  g )Nr   rY   r   r   r   r\   )r   r;   nrdtrimnr=   s    r?   test_nrdtrimnTestCephes.test_nrdtrimn  s    Q2CdKrC   c                 6    [         R                  " SSSS5        g r  )r;   obl_ang1r=   s    r?   test_obl_ang1TestCephes.test_obl_ang1      !Aa rC   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 )NrY   r   r   r   r\   r   )r;   obl_ang1_cvr   )r>   results     r?   test_obl_ang1_cvTestCephes.test_obl_ang1_cv  s>    ##Aa!A.q	3V!<q	3V!<rC   c                 H    [        [        R                  " SSS5      S5        g NrY   r   r  )r   r;   obl_cvr=   s    r?   test_obl_cvTestCephes.test_obl_cv  r  rC   c                 6    [         R                  " SSSS5        g r  )r;   obl_rad1r=   s    r?   test_obl_rad1TestCephes.test_obl_rad1
  r	  rC   c                 8    [         R                  " SSSSS5        g r  )r;   obl_rad1_cvr=   s    r?   test_obl_rad1_cvTestCephes.test_obl_rad1_cv      1Qq1%rC   c                 6    [         R                  " SSSS5        g r  )r;   obl_rad2r=   s    r?   test_obl_rad2TestCephes.test_obl_rad2  r	  rC   c                 8    [         R                  " SSSSS5        g r  )r;   obl_rad2_cvr=   s    r?   test_obl_rad2_cvTestCephes.test_obl_rad2_cv  r  rC   c                 F    [        [        R                  " SS5      S5        g )NrY   r   r  )r   r;   pbdvr=   s    r?   	test_pbdvTestCephes.test_pbdv  s    V[[1%i0rC   c                 2    [         R                  " SS5        g r  )r;   pbvvr=   s    r?   	test_pbvvTestCephes.test_pbvv      AarC   c                 2    [         R                  " SS5        g r  )r;   pbwar=   s    r?   	test_pbwaTestCephes.test_pbwa  r-  rC   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   rY   rN   r   r\   r   rY   rK   )rY   rY   rY   )r;   pdtrr   r^   r   r   r>   vals     r?   	test_pdtrTestCephes.test_pdtr  sB    kk!QRVVBZf1=kk)Q'3	*rC   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   rY   rN   r   r\   r3  r   )r   r   r   )r;   pdtrcr   r^   r   r   r5  s     r?   
test_pdtrcTestCephes.test_pdtrc&  sF    ll1a Q^&qAll9c*3	*rC   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 integerrX  r   )rY  rZ  r[  r\  r;   pdtrir>   msgs     r?   
test_pdtriTestCephes.test_pdtri-  s?    $$&AC##Hc>BLLS! '&&s   6A
A#c                 6    [         R                  " SSSS5        g r  )r;   pro_ang1r=   s    r?   test_pro_ang1TestCephes.test_pro_ang14  r	  rC   c           	      ^    [        [        R                  " SSSSS5      [        S5      SSS9  g )NrY   r   r  r   r\   )r   r;   pro_ang1_cvr   r=   s    r?   test_pro_ang1_cvTestCephes.test_pro_ang1_cv7  s+    **1aAq95;L#!	-rC   c                 H    [        [        R                  " SSS5      S5        g r  )r   r;   pro_cvr=   s    r?   test_pro_cvTestCephes.test_pro_cv;  r  rC   c                 6    [         R                  " SSSS5        g r  )r;   pro_rad1r=   s    r?   test_pro_rad1TestCephes.test_pro_rad1>  s    !Ac"rC   c                 8    [         R                  " SSSSS5        g r  )r;   pro_rad1_cvr=   s    r?   test_pro_rad1_cvTestCephes.test_pro_rad1_cvA  r  rC   c                 6    [         R                  " SSSS5        g r  )r;   pro_rad2r=   s    r?   test_pro_rad2TestCephes.test_pro_rad2D  r	  rC   c                 8    [         R                  " SSSSS5        g r  )r;   pro_rad2_cvr=   s    r?   test_pro_rad2_cvTestCephes.test_pro_rad2_cvG  r  rC   c                 0    [         R                  " S5        g rw   )r;   psir=   s    r?   test_psiTestCephes.test_psiJ  r  rC   c                 H    [        [        R                  " SSS5      S5        g r:   )r   r;   radianr=   s    r?   test_radianTestCephes.test_radianM  s    V]]1Qq)!,rC   c                 D    [        [        R                  " S5      S5        g r  )r   r;   rgammar=   s    r?   test_rgammaTestCephes.test_rgammaP  r  rC   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@r*  gg            @rx  )r   r;   roundr=   s    r?   
test_roundTestCephes.test_roundS  st    V\\#&s+V\\$'-V\\#&s+V\\$'-V\\#&s+V\\$'-rC   c                 0    [         R                  " S5        g rw   )r;   shichir=   s    r?   test_shichiTestCephes.test_shichi[  r  rC   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 )NrY   r   r   r   r\   z cosine integral(-inf) is not nan)r;   sicir^   r   r   r   r   r   )r>   sr]  s      r?   	test_siciTestCephes.test_sici^  s    A{{266"2553;V!<162{{BFF7#BEE6C<f1=?@rC   c                 D    [        [        R                  " S5      S5        g NZ   r   )r   r;   sindgr=   s    r?   
test_sindgTestCephes.test_sindgi      V\\"%c*rC   c                     [        [        R                  " SS5      S5        [        [        R
                  " [        R                  " S[        R                  5      5      5        g )NrY   r;  ?)r   r;   smirnovr   r^   r   r0  r=   s    r?   test_smirnovTestCephes.test_smirnovl  s7    V^^Ab)#."&&123rC   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 )	NrY   r;  rN   rK         ?      r   g      ȿ)r   r;   	_smirnovpr   r^   r   r0  r=   s    r?   test_smirnovpTestCephes.test_smirnovpp  sk    V%%a,b1V%%a.0@AV%%a.0@A))!RVV456rC   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 )NrY   r;  r   r=  Tendpointr   r   r\   r   rI   )
r   r;   	_smirnovcr   r^   r   r0  r  r   r  )r>   x10x4s      r?   test_smirnovcTestCephes.test_smirnovcv  s    V%%a+C0))!BFF345kk!QT2((C0!fnnQ6L2L#!	-[[Aq40((B/V^^Ar5J1J#!	-rC   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 NrY   rL   r   r   r\   333333?)r   r;   r  smirnovir   r^   r   r0  r=   s    r?   test_smirnoviTestCephes.test_smirnovi  sp    q&//!S*ABC#!	-q&//!S*ABC#!	-266234rC   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   r0  r=   s    r?   test_smirnovciTestCephes.test_smirnovci  sz    ((F,=,=a,EF#!	-((F,=,=a,EF#!	-**1RVV456rC   c                 D    [        [        R                  " S5      S5        g r   )r   r;   spencer=   s    r?   test_spenceTestCephes.test_spence  r  rC   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 )	NrY   r   r   r  r   r\   rK   gMoF?)r   r;   stdtrr   r=   s    r?   
test_stdtrTestCephes.test_stdtr  sI    V\\!A&s+Q*DvAFQ*NaPrC   c                 2    [         R                  " SS5        g )Nffffff?rY   )r;   stdtridfr=   s    r?   test_stdtridfTestCephes.test_stdtridf  s    ArC   c                 2    [         R                  " SS5        g )NrY   r  )r;   stdtritr=   s    r?   test_stdtritTestCephes.test_stdtrit  s    qrC   c                 F    [        [        R                  " SS5      S5        g r   )r   r;   struver=   s    r?   test_struveTestCephes.test_struve  r   rC   c                 D    [        [        R                  " S5      S5        g )Nr   r   )r   r;   tandgr=   s    r?   
test_tandgTestCephes.test_tandg  r  rC   c                 F    [        [        R                  " SS5      SSSS9  g )NrY   r   r   r   r\   )r   r;   tklmbdar=   s    r?   test_tklmbdaTestCephes.test_tklmbda  s    q!,cQGrC   c                 0    [         R                  " S5        g rw   )r;   y0r=   s    r?   test_y0TestCephes.test_y0  r  rC   c                 0    [         R                  " S5        g rw   )r;   r  r=   s    r?   test_y1TestCephes.test_y1  r  rC   c                 2    [         R                  " SS5        g rw   )r;   ynr=   s    r?   test_ynTestCephes.test_yn  r4  rC   c                 2    [         R                  " SS5        g rw   )r;   yvr=   s    r?   test_yvTestCephes.test_yv  r4  rC   c                 2    [         R                  " SS5        g rw   )r;   yver=   s    r?   test_yveTestCephes.test_yve  rQ  rC   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+п皙ٿrn  r  r  r   r   g      "g      "@g4׵/Yg8EGr?rp  gffffff@ig>@r   g|Pk?r=  rY   irS  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<rQ   rR   )r5  r1   r;   wofz)r>   rA  ws      r?   	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%8rC    N)__name__
__module____qualname____firstlineno__r@   rF   rl   rs   r   r   r   r   r   r   r   r   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  pytestmarkxfailrD  rI  rM  rR  rX  r[  r`  rf  rl  rp  rt  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  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  r7  r;  r?  rC  rG  rK  rO  rU  r^  rb  ri  parametrizeru  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r#  r'  r+  r0  r7  r;  rB  rF  rJ  rN  rR  rV  rZ  r^  rb  rf  rj  rs  rw  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  __static_attributes__r  rC   r?   r7   r7   :   sn   2.2*.G,/00()()3@,--1**DAR2N
+0)0):*C)3N& [[MNF OF($$@Y
412+3=-2./1'('(111.)*''))*)20/.4,F(-3 [[	.,,3 [[	,,,,2,,>, >,	PG0.// 19 [[I  @@
 [[I  KK
 [[I  ;;

9" #L!=
/!&!&1++"!-/#&!&-+.	A+47-57+Q
-+H*9rC   r7   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
)TestAiryi  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     r?   r@   TestAiry.test_airy  ss     LL5!RS#!	-LL5!QR#!	-LL5!OP#!	-rC   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?rI   rK   gN贁N{?Tqs*>r   r\   )	r   rE   r<   ry   r   r   absr   r   )r>   abb1rg   s        r?   rF   TestAiry.test_airye  s    MM$LLVAXqAD\$t*455BE qADc$|DJ'>"?@@AABE F3rC   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 )NrK   glgoe2+
g(0[g X*JgUfݿg˰zU`?g4c1=C?gCuTa2U0*#?r   r\   r   )g&g(.2+
gRg}`g%́p~=rY   )g7;1[ge*JgVwgL g<3La㧝=)gNݿg3%IQ`?gZyΌ׿gʀ11^?g33tտr   )gqM0=C?g7uTg\G`?gp⍞vg$.m?)r   bi_zerosr   r   )r>   bibias      r?   test_bi_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	.rC   c           	          [         R                  " S5      n[        U[        S/5      [        S/5      [        S/5      [        S/5      4SSS9  g )	NrY   gcqg!xLgMSt$?g ~:p?r  r   r\   )r   ai_zerosr   r   )r>   ais     r?   test_ai_zerosTestAiry.test_ai_zeros  sM    a UK=1"K=1"F8_"F8_. $!		-rC   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 )NrU  rY   rn  r[   rR   r   r\   rO   )guqgqHkZg4g9Ζ%gB~gL")gLgQO	gMQnGg3:g)}g )r   r  r<   r  r   )r>   rA  zpai_zpxaip_zxai_zaip_z_ai_zpaip_zpai_envelopeaip_envelopes               r?   test_ai_zeros_bigTestAiry.test_ai_zeros_big&  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rC   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 )NrU  rY   rn  r[   rR   r   r\   rO   )gx&gg-2+
gRgg`gu%́g{ )g K;1[g*JgVwg<w gd
3g/{
")r   r  r<   r  r   )r>   rA  r  bi_zpxbip_zxr  bi_zbip_zbi_zpbip_zpbi_envelopebip_envelopes               r?   test_bi_zeros_bigTestAiry.test_bi_zeros_big?  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rC   r  N)r  r  r  r  r@   rF   r  r  r  r  	fail_slowr  r  r  r  rC   r?   r  r    sa    -4#.J- [[1G G0 [[1G GrC   r  c                       \ rS rSrS rSrg)TestAssocLaguerreiY  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 )Nr=  rY   r   r  r   r\   )r   genlaguerreassoc_laguerrer   )r>   a1a2s      r?   test_assoc_laguerre%TestAssocLaguerre.test_assoc_laguerreZ  s`      A&##Br!,BrFa8##Ab+BqEQ7rC   r  N)r  r  r  r  r   r  r  rC   r?   r  r  Y  s    8rC   r  c                       \ rS rSrS rSrg)TestBesselpolyib  c                     g Nr  r=   s    r?   r   TestBesselpoly.test_besselpolyc      rC   r  N)r  r  r  r  r   r  r  rC   r?   r#  r#  b  s    rC   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g)
TestKelvinig  c                 H    [         R                  " S5      n[        USSSS9  g )NrK   gT?iUMu>r   r\   )r   r   r   )r>   mbeis     r?   r   TestKelvin.test_beih  s    {{1~0vAFrC   c                 H    [         R                  " S5      n[        USSSS9  g )NrK   gD,X?r+  r   r\   )r   r   r   )r>   mbeips     r?   r   TestKelvin.test_beipm  s    Q2aHrC   c                 H    [         R                  " S5      n[        USSSS9  g )NrK   gPA4?r+  r   r\   )r   r   r   )r>   mbers     r?   r   TestKelvin.test_berr  s    {{1~1QGrC   c                 H    [         R                  " S5      n[        USSSS9  g )NrK   gii߿r+  r   r\   )r   r   r   )r>   mberps     r?   r   TestKelvin.test_berpw  s    Q3&qIrC   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     r?   test_bei_zerosTestKelvin.test_bei_zeros|  s/    q!E #- .
 $!	-rC   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     r?   test_beip_zerosTestKelvin.test_beip_zeros  s/      #U $8 9
 $!	-rC   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     r?   test_ber_zerosTestKelvin.test_ber_zeros  /    "U $. /
 $!	-rC   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     r?   test_berp_zerosTestKelvin.test_berp_zeros  s/      #U $. /
 $!	-rC   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 )NrK   r>  r  r   r\   )r   r-  r   r   r   r%  r  r   r   r)  r!  )r>   mkelvs     r?   r.  TestKelvin.test_kelvin  s    q!AQ1B B 'AQ1B B 'Q',,q/"2D D 'Q',,q/"2D D F $!		-rC   c                 H    [         R                  " S5      n[        USSSS9  g )NrK   g>ɿr+  r   r\   )r   r  r   )r>   mkeis     r?   r  TestKelvin.test_kei  s    {{1~2aHrC   c                 H    [         R                  " S5      n[        USSSS9  g )NrK   gr@d"?r+  r   r\   )r   r!  r   )r>   mkeips     r?   r"  TestKelvin.test_keip  s    Q2aHrC   c                 H    [         R                  " S5      n[        USSSS9  g )NrK   gܙUr+  r   r\   )r   r%  r   )r>   mkers     r?   r&  TestKelvin.test_ker  s    {{1~3&qIrC   c                 H    [         R                  " S5      n[        USSSS9  g )NrK   g^.n3Jr+  r   r\   )r   r)  r   )r>   mkerps     r?   r*  TestKelvin.test_kerp  s    Q3&qIrC   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     r?   test_kei_zerosTestKelvin.test_kei_zeros  rF  rC   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     r?   test_keip_zerosTestKelvin.test_keip_zeros  /    !!!$e %/ 0
 $!	-rC   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   rB  r  r   r\   r8  )#?Q5U@q89 %@ol`.@gO0q3@r]  rH  )gum.@gݏ @gs{)@g䠄11@gN(D!5@gS@g89@@g^C'@g1ZG0@g+ڇ4@rb  )r   kelvin_zerosr   r   )
r>   tmpberzbeizkerzkeizberpzbeipzkerpzkeipzs
             r?   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
 $!	-rC   c                 ^    [         R                  " S5      n[        U[        / SQ5      SSS9  g )Nr   )rh  ri  rj  rk  gD;q3@r  r   r\   )r   	ker_zerosr   r   )r>   r%  s     r?   test_ker_zerosTestKelvin.test_ker_zeros  rF  rC   c                 ^    [         R                  " S5      n[        U[        / SQ5      SSS9  g )Nr   rl  r  r   r\   )r   
kerp_zerosr   r   )r>   r)  s     r?   test_kerp_zerosTestKelvin.test_kerp_zeros  rf  rC   r  N)r  r  r  r  r   r   r   r   r:  r?  rD  rK  r.  r  r"  r&  r*  r_  rd  rw  r{  r  r  r  rC   r?   r)  r)  g  se    G
I
H
J
-----IIJJ--4-l--rC   r)  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     r?   test_bernoulliTestBernoulli.test_bernoulli  s/    "U $, - $!	-rC   r  N)r  r  r  r  r  r  r  rC   r?   r  r    s    -rC   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 )NrY   r   33333YN~h?   g6.8@rQ   r   r  rK   rI   rO   rR   )r   r   betar   rk  )r>   betbetgs      r?   	test_betaTestBeta.test_beta&  s    W\\!Q'-VV4gmmF6KLVS13E"	, ll1a a q!117==3CC.rC   c                 l    [        [        R                  " [        R                  " SS5      5      5        g )NrN   rK   )r   r^   isinfr   r  r=   s    r?   test_beta_infTestBeta.test_beta_inf0  s    b!,-.rC   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 )NrY   r   r  r  r     gIs	@r  r   r  rK   rI   rQ   rR   )r   r   betalnr   rs  r   r  r  )r>   betlnr  s      r?   test_betalnTestBeta.test_betaln3  s    W^^Aq)3/vv6/	1vs35G"	, q!$#gll1a()*/rC   r  N)	r  r  r  r  __doc__r  r  r  r  r  rC   r?   r  r  !  s    //	0rC   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TestBetaInci?  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   rn  rY   rY   )r^   r   r   r   betainc
betaincinvbetainccbetainccinvr  s     r?   
test_a1_b1TestBetaInc.test_a1_b1D  sz    HH\"W__Q1-q1W''1a0!4W%%aA.A6W((Aq11q59rC   z
a, b, x, p))rK   rI   g@w?r   )r  g     `e@r[   g*?)r  r  g"Yx;rn  )g   `1?g    ئAg\aY4g    ?)rI   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   rR   g-a=rQ   )r   r  r   r  btdtriabtdtrib)	r>   r  r  r   rQ  p1x1r  r  s	            r?   test_betainc_and_inverses%TestBetaInc.test_betainc_and_inverses[  sn     __Q1%E*a(E*__Q1%E*__Q1%E*rC   ))      @rn  rn  g     ?)      @g     *@g      ?g&?)      ?r  g333333?gFoE?)r        2@r   gg2$Z?)r  r  gZd;?g6)r  rj  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+<rR   gV瞯=)r   r  r   r  )r>   r  r  r   rQ  r  r  s          r?   test_betaincc_betainccinv%TestBetaInc.test_betaincc_betainccinvt  s<     aA&E*  q)E*rC   za, b, y, ref))cj,@r  ghHISOa gڭ Y;)g      ,@g      -@g둤g}c]춫;)rq  g      .@gUv \U,gS^%:)r  g      ?gMoigKB;)r*  g    i@g1$-g\_cp:c                 F    [         R                  " XU5      n[        XTSS9  g )Nr  rR   )r   r  r   )r>   r  r  r@  rt  r   s         r?   test_betaincinv_tiny_y"TestBetaInc.test_betaincinv_tiny_y  s     2 qQ'U+rC   funcargs))r   rK   r   )rm         r   )rm  r  333333ӿ)rm  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      r?   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 r%  )r   r  r   r>   r  rB  observeds       r?   test_betainc_edge_cases#TestBetaInc.test_betainc_edge_cases  s    < ??D)X(rC   )r  r   )r  r   )r  r   )r  r   )r  r   )r  r   c                 @    [         R                  " U6 n[        X25        g r%  )r   r  r   r  s       r?   test_betaincc_edge_cases$TestBetaInc.test_betaincc_edge_cases  s    < ##T*X(rC   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   rG  rR   )r^   r   r   r  r   r   eps)r>   r  r  r   r  s        r?   test_gh21426TestBetaInc.test_gh21426  sW     HHbT'HHcU%(##A!,RXXe_-@-@(@ArC   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  rR   )r^   r   r   r  r   )r>   r  r  r   r|  r  rS   ress           r?   test_gh22682TestBetaInc.test_gh22682  sH     HHQ$HHQ$HHQ$ooaA&T2rC   r  N)r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r^   r0  r   r  r  r   r   r  r  r  r  rC   r?   r  r  ?  s   :. [[	6
7+
7+ [[\
<=+=+ [[	7,,& [[Vgoow7I7I&-oow&-&6&68K8K&M N [[V &I JJN

 [[bff%bff%bff%ffbffc"BFF+ffbffc"BFF+ffbffc"BFF+""""""2663%2663%2663%ffc3%ffc3%ffc3%2663%2663%2663%ffc3%ffc3%ffc3%1	
:);:) [[bff%bff%bff%ffbffc"BFF+ffbffc"BFF+ffbffc"BFF+""""""2663%2663%2663%ffc3%ffc3%ffc3%2663%2663%2663%ffc3%ffc3%ffc3%1	
:);:) [[Wrzz2::&>?B @B [[]!zz40!zz5134 [[1EFHI3I43rC   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 )NrG  r   rI         ^@g     @j@Texactx   r  
repetition   r  rp   r   r]   rY   l   hU7`S?Q r  2   )
r   r   combr   ry   listr^   iinforx   max)r>   rh   iirB  s       r?   	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   rU   Tr  )r^   int64r   r  )r>   rg   rh   np_nnp_kres_npres_pys          r?   test_comb_with_np_int64)TestCombinatorics.test_comb_with_np_int64  sR    xx{xx{d5a$/rC   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 )NrK   r   Tr  r   rN   FrK   rN   rK   rG  r   r   rN   r   )r   r   r   r  )r   r   r  r   r=   s    r?   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XrC   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  rm  rI   Tr  r   g@)r  r   
ValueErrorr   r  r@  s     r?   test_comb_exact_non_int_error/TestCombinatorics.test_comb_exact_non_int_error&  s`    ]]:S1LLat, 2]]:S1LLCt, 21 2111s   A4B4
B
BNr   r   rG  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  rY   )r   r  typerx   r^   r   )r>   r
  r  actuals       r?   test_comb_repetition_k_zero-TestCombinatorics.test_comb_repetition_k_zero-  sI    
 a%DA{{&+tF|s";;;;"rC   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  rB  s       r?   !test_comb_repetition_k_zero_array3TestCombinatorics.test_comb_repetition_k_zero_array6  s:    HHZ a%DA88O,V&rC   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 )NrG  r   rI        @g     @r   r   r\   Tr  i  )r   r   permr   r=   s    r?   	test_permTestCombinatorics.test_perm=  sS    b"X1v6uFR+TQGW\\"at4c:rC   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 )NrK   r   Tr  r   rN   Fr  r  )r   r   r   r  )r   r   r  r   r=   s    r?   test_perm_zeros!TestCombinatorics.test_perm_zerosB  r  rC   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  rY   rK   rI   r   Tr  zNon-integergffffff@rO   gffffffr   g333333      @)r  r   r  r   r  r=   s    r?   test_perm_ivTestCombinatorics.test_perm_ivI  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  rC   r?   r  r    sn    = Y- [[S*-[[WtUm4< 5 .<';
Y/rC   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)TestTrigonometriciX  c                 J    [         R                  " S5      nSn[        XSSS9  g )N   rn  r   r   r\   r   r   r   )r>   cbcbrls      r?   r   TestTrigonometric.test_cbrtY  s!    \\"vA6rC   c                 J    [         R                  " S5      nSn[        XSSS9  g )Ngfffff;@g鎖C@r  r   r\   r$  )r>   cb1cbrl1s      r?   test_cbrtmoreTestTrigonometric.test_cbrtmore^  s!    ll4 a8rC   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      r?   r   TestTrigonometric.test_cosdgc  s)    mmBBsFa8rC   c                 j    [         R                  " S5      n[        [        S-  5      n[	        XSSS9  g NrU   r  r  r   r\   r.  )r>   cdgmcdgmrls      r?   test_cosdgmore TestTrigonometric.test_cosdgmoreh  s)    }}R RV6:rC   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   r<  rG  rY   r  r\   )r   r   r   r
   r   )r>   cscsrls      r?   r   TestTrigonometric.test_cosm1m  sa    mmAw}}R0r"u1EFAqR3r"u:a<0vA6rC   c                 p    [         R                  " S5      n[        [        S-  5      S-  n[	        XSSS9  g )NrU   r  rN   r  r   r\   r   r   r   r   r   )r>   ctctrls      r?   r   TestTrigonometric.test_cotdgr  s.    ]]22c6{R vA6rC   c                 p    [         R                  " S5      n[        [        S-  5      S-  n[	        XSSS9  g )Nr   r*  rN   r  r   r\   r=  )r>   ct1ctrl1s      r?   test_cotdgmore TestTrigonometric.test_cotdgmorew  s.    mmBBsFb!a8rC   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    r?   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FrC   c                     [        [        R                  " S/5      S5        [        [        R                  " S5      S5        g )Nr   rY   r   r   )r   r   sincr   r=   s    r?   	test_sincTestTrigonometric.test_sinc  s*    7<<,a0W\\#&,rC   c                 H    [         R                  " S5      n[        US5        g r  )r   r  r   )r>   sns     r?   r  TestTrigonometric.test_sindg  s    ]]2RrC   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 )NrU   r  r  r   r\   r   r*  )r   r  r	   r   r   )r>   snmsnmrlsnm1snmrl1s        r?   test_sindgmore TestTrigonometric.test_sindgmore  P    mmBBsFa8}}R RV6:rC   r  N)r  r  r  r  r   r+  r   r6  r   r   rD  rO  rS  r  r]  r  r  rC   r?   r!  r!  X  s:    7
9
9
;
7
7
9
G-
;rC   r!  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 r3  r   r  r   r   r   )r>   tntnrls      r?   r  TestTandg.test_tandg  s)    ]]22c6{vA6rC   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   r*  r  r   r\   r  rn  rc  )r>   tnmtnmrltnm1tnmrl1s        r?   test_tandgmoreTestTandg.test_tandgmore  r_  rC   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   rG  r\   r   r   rH  r   rI  rJ  r  iLrK  rL  rM  rN  )r   r   r  r=   s    r?   rO  TestTandg.test_specialpoints  s    a(#G!Db)3W1Ec*DwQGc*DwQGd+SwQGc*CgAFd+SwQGc*CgAFd+TaHc*DwQGd+SwQGrC   r  N)r  r  r  r  r  rl  rO  r  r  rC   r?   ra  ra    s    7
;HrC   ra  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^   r0  r=   s    r?   test_ellipj_nanTestEllip.test_ellipj_nan  s    sBFF#rC   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      r?   r  TestEllip.test_ellipj  s4    ^^C"3xCT*gA6rC   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   rK   rN   ro  gN?)	r   r   r   r   r    r^   r   r   r0  )r>   elks     r?   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+-?@rC   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 )NrK   r   r   r   r\   rp   r  r   gfoKh?r  r   r   r   gt?rY   rL   r  rR   6<R!?ro  gfON?)
r   r  r   r   r   r	   r   r^   r   r0  )r>   elkincr{  alphaphirh  s         r?   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LrC   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   rG  rY   gV^8j?g,j6Ƅ@rK   )	r^   	nextafterry   appendr   r  r   	full_liker   r>   mbadr  rh  mvalsjr  f1s           r?   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SrC   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<r;  rK   Fr  rY   r  rR   )r^   rr   r  r   r   r   r  arcsinhr   r   r   )r>   xlogxlinxlin2s       r?   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<rC   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   rK   r   ro  g?eg@)r   r   r   r   r   r^   r   r0  )r>   eles     r?   r  TestEllip.test_ellipe  s    nnR /f1EW^^C("Q$/W^^C(#.W^^RVVG,bff5W^^BFF+RVV4W^^A&/s+-?@rC   c                 *   [         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 )NrK   r   rG  r   r\   4   r  #   g'?r  r   r   r   r~  ro  gL@)
r   r  r   r   r   r	   r   r^   r   r0  )r>   eleincr  r  r  rh  s         r?   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KrC   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   rG  rY   g%?rK   gXo
@rI   )	r^   r  ry   r  r   r  r   r  r   r  s           r?   test_ellipeinc_2TestEllip.test_ellipeinc_26  s     # LLq!rALLOQ"A  c)&q",,q:M*NPQRsRx/&r2<<<N+OQRSrC   r  N)r  r  r  r  rs  r  r  r  r  r  r  r	  r  r  r  rC   r?   rq  rq    s5    $7
	AM:T =*	AL4TrC   rq  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)TestEllipCarlsoniG  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 )NrY   r   r   rn  g      @r  r>               r  r   y
c?
cy=B?CGֿrn  y檠f?P9lb?)
r   r!   r   r   r5  r   r^   r   r   	enumerater>   r  expected_resultsr}   arrs        r?   test_elliprcTestEllipCarlson.test_elliprcL  s    1q)q##%%%WQ]####q'!S/*c111sDkSkDkdmTlTl$ % !"%%"$&&+">"C"$&&+"3"D"F G  oFAGSM+;+>? &rC   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 )NrY   r   rK   rn  g`C+?r   r  rN   )r   r  r   r  rn  r*  r>  r  r  r   r>  r  )r               ?r>  )y             r  r  )gfe_?gi+"?gP$M?ytgFU?7?@yR<8*y{62?z)r   r"   r   r^   r  r5  r   r   r   tinyr   r  r  s        r?   test_elliprdTestEllipCarlson.test_elliprd`  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+;+>? &rC   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 )NrY   r   rK   gPO?r   rN   )r   r  r   )r>  r  r   )r   r   r   r  r>  r   r  r  )r  r>        ?      )geQO?ʞu5J?r  yp\y?kg2ΰ?gHwд?y|pF?-6Fj)	r   r#   r   r^   r  r   r5  r   r  r  s        r?   test_elliprfTestEllipCarlson.test_elliprfx  s   1a(!,1a(*@Aq#q!S(((xx1a())))WQ2&''''ws|Q*c111WQ7C4#345555o(%,%(13 4 ! "F G  oFAGSM+;+>? &rC   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 )NrY   r   r   )r   r  r  r  r  r  )r  r  r>  )r   g8d`?r*  gL+?g}^?y旮0?ʋW?yjN?^?gt?)	r   r$   r^   r  r   r5  r   r   r  r  s        r?   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+;+>? &rC   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 )NrY   r   r   rN   )r   r   r  rn  )r  rn  r*  r^  )r  rn  r*  r  )r>  r  r   r  )r              r   r  )r>  r  r   r  )r  r  r   y            ?)r  rn  r*  r  )r  rn  r*        )	g @?gviM?ym?\Isؿg'4Ob?go0 ?yW7?xfOA?ybv㿘ܶ.gHQ?gjߡB7E)r   r%   r   r   r   r  r  s        r?   test_elliprjTestEllipCarlson.test_elliprj  s    1a+Q/q!S!$+++WQ1a())))WRAq)****q!Q$+++**0-62<++- . ! "5 6  oFAGSM+;+>? &rC   zInsufficient accuracy on 32-bitr8  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    r?   test_elliprj_hard"TestEllipCarlson.test_elliprj_hard  sN     5 6 3 13 ;"	0 	 2 5 4 57 <"	0rC   r  N)r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rC   r?   r  r  G  sM    @(@0@2@*@6 [[?@0 A0rC   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  rN   r   )r^   r   m_n1_1r   r   minmax_neglog2
very_neg_mconcatenate
ms_up_to_1r=   s    r?   setup_class.TestEllipLegendreCarlsonIdentities.setup_class  s    iiR.V}((F2+-77DLL=+A,BCE+.%0 !0 0 ..4<<.*.//*.++*7 8rC   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#   rg  s     r?   test_k)TestEllipLegendreCarlsonIdentities.test_k  s(     OOq	72r!tR#89rC   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      r?   test_km1+TestEllipLegendreCarlsonIdentities.test_km1  sJ     V}!!BrBGGDM>222gb"b&9:rC   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$   rg  s     r?   test_e)TestEllipLegendreCarlsonIdentities.test_e  s-     OOq	2gb"Q$&;#;<rC   )r  r  r  r  N)
r  r  r  r  r  r  r  r  r  r  r  rC   r?   r  r    s    

8:	;=rC   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 )Nrn  g);T?r  r   r\   )r   r  r   )r>   ers     r?   r  TestErf.test_erf  s    [[LvA>rC   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      r?   test_erf_zerosTestErf.test_erf_zeros  s/    " - .
 	Q7rC   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)NrT   r  g{Gz?rK   r   rY   r>  rX  allr  )	r^   rd   re   paretorandintr  r   isfiniter1   )r>   r  
other_funcrS   r]   rk   rg   r   r@  rA  r  w_realmasks                r?   _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      -
  $ rw   r;   r  rA  s    r?   <lambda>.TestErf.test_erfc_consistent.<locals>.<lambda>&  s    a&**Q-'rC   r   r  r  )r  r;   r"  r=   s    r?   test_erfc_consistentTestErf.test_erfc_consistent#  s%      KK'	 	! 	rC   c                 D    U R                  [        R                  S SS9  g )Nc                 `    [         R                  " X -  5      [        R                  " U 5      -  $ r%  )r^   r   r;   r"  r  s    r?   r  /TestErf.test_erfcx_consistent.<locals>.<lambda>.  s    bffQSkFKKN2rC   r   rR   )r  r;   erfcxr=   s    r?   test_erfcx_consistentTestErf.test_erfcx_consistent+  s"      LL2 	! 	rC   c                 D    U R                  [        R                  S SS9  g )Nc                 :    S[         R                  " SU -  5      -  $ )Nr  r>  r  r  s    r?   r  .TestErf.test_erfi_consistent.<locals>.<lambda>5  s    cFJJr!t,,rC   r   rR   )r  r;   erfir=   s    r?   test_erfi_consistentTestErf.test_erfi_consistent2  s"      KK, 	! 	rC   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    r?   r  /TestErf.test_dawsn_consistent.<locals>.<lambda><  s,    d2hqj2661"Q$</&++a.@rC   r   rR   )r  r;   r   r=   s    r?   test_dawsn_consistentTestErf.test_dawsn_consistent9  s"      LL@ 	! 	rC   c                     [         R                  [         R                  * [         R                  /n[         R                  SS/n[        [        R
                  " U5      USS9  g )NrN   rY   r   rR   )r^   r0  r   r   r   r  r>   r{  rB  s      r?   test_erf_nan_infTestErf.test_erf_nan_inf@  s@    (FFB?D)8%@rC   c                     [         R                  [         R                  * [         R                  /n[         R                  SS/n[        [        R
                  " U5      USS9  g )NrK   r   r   rR   )r^   r0  r   r   r   r"  r  s      r?   test_erfc_nan_infTestErf.test_erfc_nan_infE  s@    (FFAq>T*H5ArC   c                     [         R                  [         R                  * [         R                  /n[         R                  [         R                  S/n[        [        R
                  " U5      USS9  g )Nr   r   rR   )r^   r0  r   r   r   r  r  s      r?   test_erfcx_nan_infTestErf.test_erfcx_nan_infJ  sE    (FFBFFA&d+XEBrC   c                    [         R                  [         R                  * [         R                  /n[         R                  [         R                  * [         R                  /n[        [        R
                  " U5      USS9  g rq  )r^   r0  r   r   r   r  r  s      r?   test_erfi_nan_infTestErf.test_erfi_nan_infO  sK    (FFRVVGRVV,T*H5ArC   c                     [         R                  [         R                  * [         R                  /n[         R                  SS/n[        [        R
                  " U5      USS9  g )Nry  r   r   rR   )r^   r0  r   r   r   r   r  s      r?   test_dawsn_nan_infTestErf.test_dawsn_nan_infT  sA    (FFD#&d+XEBrC   c                     [         R                  [         R                  * [         R                  /n[         R                  [         R                  S-  -   SS/n[        [        R
                  " U5      USS9  g )Nr>  r4  r   rR   )r^   r0  r   r   r   r  r  s      r?   test_wofz_nan_infTestErf.test_wofz_nan_infY  sN    (FFRVVc\)66:T*H5ArC   r  N)r   )r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rC   r?   r  r    sJ    ?8E.A
B
C
B
C
BrC   r  c                       \ rS rSrS rSrg)	TestEuleri_  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   rY   rK   r   rR   )rY   r   rN   r   )rY   rY   r   =   ii  iY  i=) il   Q~ l   10[l   $8gC
 l   2l   v}Ju: )r   d   rX  r  r   rG  r\   )
r   eulerr   r   ry   rz   r^   r  r   r  )
r>   eu0eu1eu2eu24	mathworldcorrectrh   errerrmaxs
             r?   
test_eulerTestEuler.test_euler`  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  rC   r?   r  r  _  s    ;rC   r  c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
TestExpix  c                 J    [         R                  " S5      nSn[        X5        g )NrK   rI   )r   r+  r   r>   exexrls      r?   r,  TestExp.test_exp2y  s    \\!_RrC   c                 J    [         R                  " S5      nSn[        XSSS9  g )Nr  g;f@r  r   r\   )r   r+  r   r>   exmexmrls      r?   test_exp2moreTestExp.test_exp2more~  s!    ll3a8rC   c                 J    [         R                  " S5      nSn[        XSSS9  g )NrK   r  r   r   r\   r   r&  r   r1  s      r?   r'  TestExp.test_exp10  s!    ]]1t!4rC   c                 J    [         R                  " S5      nSn[        XSSS9  g )Nr  gYs@r  r   r\   r<  r6  s      r?   test_exp10moreTestExp.test_exp10more  s!    mmC a8rC   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 )NrK   r   rI   rY   r  r   r\   r   r/  r   r   r1  s      r?   r1  TestExp.test_expm1  sY    mmAa 0'--2BCA
CFQJA
3vA6rC   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 )NrK    @皙@rY   r  r   r\   rB  )r>   ex1exrl1s      r?   test_expm1moreTestExp.test_expm1more  sY    }}Qs!3W]]35GHQ!SX\3s8a<8a8rC   r  N)r  r  r  r  r,  r9  r'  r?  r1  rI  r  r  rC   r?   r/  r/  x  s     
9
5
9
7
9rC   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 )NrR   )r+   r*   )r   r@  rS   s     r?   assert_func(assert_really_equal.<locals>.assert_func  s    !%?1d3SrC   c                     [         R                  " U R                  5      (       a%  [         R                  " U R                  5      (       d   eg r%  )r^   r   r   r?  r   s    r?   assert_complex_nan/assert_really_equal.<locals>.assert_complex_nan  s0    xxBHHQVV$4$444$4rC   ztypes not equal: z, rR   r]  N)
r  
isinstancer^   ndarrayr  ziprc   assert_really_equalr   r/   )r   r@  rS   rM  rQ  elem_xelem_ys     `    r?   rV  rV    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rC   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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/S0S15      5      S2 5       r(\R                  R                  S\)" \" SS35      5      \)" \" S/S0S15      5      -   5      S4 5       r*S5 r+S6 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                  S7/ S&/S"/\R                  /\R                  \R                  S-  -   /\R                  S&/// S8QS9S9 5       5       5       5       5       r.\R                  R                  SSS/5      \R                  R                  SS	S
/5      \R                  R                  SS&S"S:\R                  \R                  \R                  S-  -   S// S;QS9S< 5       5       5       r/\R                  R                  S\" S/S0S=5      5      S> 5       r0\R                  R                  S\)" \" SS35      5      \)" \" S/S0S=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                  S7/ S&/S"/\R                  /\R                  \R                  S-  -   /\R                  S&/// S8QS9SA 5       5       5       5       5       r3\R                  R                  SSS/5      \R                  R                  SS	S
/5      \R                  R                  SS&S"S:\R                  \R                  \R                  S-  -   S// S;QS9SB 5       5       5       r4\R                  R                  SC\" S&S'5      5      \R                  R                  S\" SDSESF5      5      SG 5       5       r5\R                  R                  SC\)" \" S&S'5      5      S1SE/-   5      \R                  R                  S\)" \" SS35      5      \)" \" S3SHS=5      5      -   5      SI 5       5       r6SJ 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                  S7/ S&/S"/\R                  /\R                  \R                  S-  -   /\R                  S&/// S8QS9SK 5       5       5       5       5       r8\R                  R                  SSS/5      \R                  R                  SS	S
/5      \R                  R                  SC\" S&S'5      5      \R                  R                  SS&S"S:\R                  \R                  \R                  S-  -   S// S;QS9SL 5       5       5       5       r9\R                  R                  SS	S
/5      \R                  R                  S/ SQ5      \R                  R                  SCSMSNSSOSS"\R                  /5      SP 5       5       5       r:\R                  R                  SS	S
/5      \R                  R                  S/ SQ5      \R                  R                  SCS#\R$                  " SS5      /S#SQ/S9SR 5       5       5       r;\R                  R                  S/ SQ5      \R                  R                  SC\" S&SS5      5      ST 5       5       r<SU r=SVr>g)W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rh   r  zerorY   )r   
factorialkr^   modpowerrk  ri  maximum)r>   rg   rh   r  extendrr{  s          r?   factorialk_ref%TestFactorialFunctions.factorialk_ref  s    %%aD99"f,BFF1L!xxE19%acAg(>>PQPSVWPWAXXbjjA&&&rC   zexact,extend))Tr]  )Fr]  )Fr5  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  rb  rh   r   rY   )r^   isscalarr   	factorial
factorial2r^  )r>   r  rb  kws       r?   "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;;<<<<rC   rg   )rN   rS  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   rh   r   )r   r   rj  rk  r^  )r>   r  rg   rl  s       r?   $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9rC   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   )rw  r   rY   )r   r   rY   rY   r  rR   rh   r   )	r^   r   
native_intr   rV  r   rj  rk  r^  )r>   r  rl  rS   rg   rB  s         r?   *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RrC   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 )Nrb  r5  gRc/a_%g:\Oag@g*BZ'rw  go	08G)?goNb]gMxcQgNy?g=u?g7K [n<rR   rh   r   r   )r   r   rj  rk  r^  )r>   rg   rl  exp_1exp_2exp_krS   s          r?   '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SrC   r?  r   r4  n_outerc                 J   ^ SS0mU4S jnU" X-   5        U" SU-  U-   5        g )Nrb  r5  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 )	Nr]  nan+nanjr0  rK   r   rh   y      ?       r   )
r/   r  r^   
complex128r   rV  r   rj  rk  r^  )rg   
complexifycomplex_nanr   r]  rl  s        r?   _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;WrC   i r  )r>   r  r?  r  rl  s       @r?   -test_factorialx_negative_extend_complex_polesDTestFactorialFunctions.test_factorialx_negative_extend_complex_poles  s3     	"	X( 	w~w 4'(rC   boxedrb  r]  r5  r0  r>  r  Nnatr{  )
NaNznp.float64('nan')	NaN+i*NaNznp.complex128('nan+nanj')r   zinf+0iz-infz-inf+0iNoneNaT)ids
factorialxc                    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)NFrg  r   rh   r}   r  r]  r}   r  r]  Unsupported data type.*r  r5  In order to use non-integer.*r  r0  r]  r   r   )r   r^  r  rj  r/   r  r   r  r^   r  r   r  rV  )r>   r  rg   rb  r  rl  permissible_typestypes_need_complex_extr  rB  neg_inf_resultr  s               r?   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  rY   )rb  r   Trh   r  rb  )r  r   r  r   rj  rk  r^  )r>   rb  s     r?   test_factorialx_raises_extend4TestFactorialFunctions.test_factorialx_raises_extendC	  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levelsrY   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 )NrY   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   rY   r  r   rh   _nest_mes     r?   r  DTestFactorialFunctions.test_factorialx_array_shape.<locals>._nest_meO	  s$     Av!,,rC   c                    > [         R                  " T" UTS9[        S9n[        U R	                  [         R
                  5      UR                  " [         R
                  5      5        g )Nrh   r  )r^   r   objectr   r   r   )r  nucleusr   r  r  s      r?   r  BTestFactorialFunctions.test_factorialx_array_shape.<locals>._check\	  s@    ((8Gv6fEC CJJrzz2CJJrzz4JKrC   r   r   r  r  r   Tr  rG  r   r  rK   rh  )r^   r   mathrj  r   rk  r^  )r>   r  r  r  rg   exp_nucleusr  s    `    @r?   test_factorialx_array_shape2TestFactorialFunctions.test_factorialx_array_shapeL	  s    	-	L HHXq"g01r 23w11"DABw11"atDEG
 	w  0+a.Aw!!!1;q>Bw!!!Qe4k!nErC   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   rG  r  r  rY   r  rK   r   )r^   r   r   r   rj  rk  r^  )r>   r  r  r  rg   r   s         r?   test_factorialx_array_dimension6TestFactorialFunctions.test_factorialx_array_dimensionl	  s     HHQe/"$))!9Qs3	5**1:Qs3	5**1au=Qs3	5rC   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 )NrY   c                 .   > US:X  a  U $ T" U /US-
  5      $ r  r  r  s     r?   r  CTestFactorialFunctions.test_factorialx_array_like.<locals>._nest_me	  s"    AvQqS))rC   r   r  r  r   rG  r  r  r  rK   r   rh  )r   r   r   rj  r^   r   rk  r^  )r>   r  r  rg   r  rM  r  s         @r?   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	;rC   c                   ^^ 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  aW  U(       a  g U" U" US-
  5      5        U" [        R                  " US-
  US95        U" [        R                  " US-
  /US95        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 )Nrg  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 )Nrh   r   )	rS  r^   rT  r   r  r   rj  rk  r^  )rg   n_refrM  rl  s     r?   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<<>rC   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)NrX  r   rh   r   )rY  rZ  simplefilterr\  r   rj  rk  r^  )rg   
shaped_infrM  rl  s     r?   
_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   rY   r  rK   )	r   r   r^   r   r  r  uint64uint8uint16)	r>   r  rb  r  r  r  r
  rM  rl  s	          @@r?   test_factorialx_uint+TestFactorialFunctions.test_factorialx_uint	  s1    /,1(	>	F 	uQxuQxrxx'(rxxAe,-"((5/%%&BII 51:&288AaCu56288QqSE78rxx++5 1Q3K288AaCu-.288QqS!A#Je45 49rC   rU   r  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 )Nr4   t0=r   Tr  FrR   )sysplatformr   rz   r   rj  r   r>   rg   rS   s      r?   test_factorial_accuracy.TestFactorialFunctions.test_factorial_accuracy	  s~    
 /uUg//>?))!59	F))1#T:AA%H))1#U;$	HrC      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   r4   +6=r   FrR   r5  rg  )r  rj  r   r   r  r  rz   r   r>   rg   r)  rS   rl  s        r?   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LrC   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)
Nr4   r  r   rR   r   `exact=True` only supports.*r  Tr  )r  r  r   r   rj  r  r   r  )rg   rB  rS   s      r?   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     r?   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8rC   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 )	Nr4   ry  V瞯<Fr5  rg  rR   r   )r  r  r   r   rj  rg   rB  rS   rl  s       r?   r  GTestFactorialFunctions.test_factorial_complex_reference.<locals>._check	  sY    LLG35D I6BG--a626LG--qc8R8;XQrC   r  gkﴑ[?rB                ykﴑ[?               @       @yB}ۿ?gH.gK	!@y      -C6?yI{xQr  r  s     r?    test_factorial_complex_reference7TestFactorialFunctions.test_factorial_complex_reference	  sA    	R 	t34y#=>v QRw!56|&STrC   content)z[]z[1]z[1.1]z[NaN]z[NaN+i*NaN]z[NaN, 1]c                    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r%  r^   r   rx   .0r   s     r?   	<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r]  Nr/   r  r  s     r?   r  r  
       &S7a|DGS'A'A7   "$rg  r   rY   r  r  r5  Incompatible options:.*r  r  r  r]  r  r}   r  r   rR   )r  r,   r  skipr^   r  anyr   lenr   r   r  r   rj  r/   r  rc   r   r  rt  rV  r>   r  r  r  rb  r  rl  rg   r  r   rt  cxrB  s                r?   !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)Nrg  r5  r  r  r}   r  r]  r  r  r  r0  r  rY   )r  r   r  r   rj  r/   r  r^   r   r  r   rV  r   rk  r>   rg   r  rb  rl  r  rB  s          r?   "test_factorial_scalar_corner_cases9TestFactorialFunctions.test_factorial_scalar_corner_cases;
  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r=  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 )Nr4   +=r   Tr  FrR   )r  r  r   rz   r   rk  r   r  s      r?   test_factorial2_accuracy/TestFactorialFunctions.test_factorial2_accuracyV
  s~    
 /uUg00$?@**1E:	G**A3d;BB5I**A3e<4	IrC   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   rS  rY   Tr  r4   r  r   FrR   r5  rg  rK   )	functoolsreduceoperatormulr  ry   r   r   rk  r  r  rz   r   r  s        r?   test_factorial2_int_reference4TestFactorialFunctions.test_factorial2_int_referenceb
  s    ""8<<eAq"o1FJ7G$6$6q$EF7G$6$6s$$G$JK/uU.!3!3AU!C$O!3!3QCu!Ea!HtT 	2q5A:GW%7%7%@R%@tLGW%7%7%Br%B1%EDQ rC   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  Fr5  rg  rR   r   )r   r   rk  r  s       r?   r  HTestFactorialFunctions.test_factorial2_complex_reference.<locals>._check|
  sL    D I6BG..q7B7MG..s9b9!<hRrC   r   r  rI   rK   rp   r  g^D]?JO?r  y^D]?JO?        y      @      @y&0!:?gSt$gtQ*@y       -C6?yqj?x*)r   rk  r  r   r   r  s     r?   !test_factorial2_complex_reference8TestFactorialFunctions.test_factorial2_complex_referencez
  s    	S 	q1q7--a0499Q[3IIJrG..r2TYYq477{5KKLt45y#>?v OPw!67|&UVrC   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r%  r  r  s     r?   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     r?   r  r  
  r  r  rg  r   rY   r  r5  r  r  r  r  r  r]  r  r  rR   )r^   r  r  r  r  r   r  r   r   r  r   rk  r/   r  rc   r   r  rt  rV  r  s                r?   "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)Nrg  r5  r  r  r}   r  r]  r  r  r  r0  rh   rK   r   rR   )r  r   r  r   rk  r/   r  r^   r   r  r   rV  rd  r  s          r?   #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rh   r  rp   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 )Nr4   r  r  Tr\  FrR   )r  r  r   rz   r   r^  r   )r>   rg   rh   rS   s       r?   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rC   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   rY   Tr  r4   gt =r  FrR   r5  r  r  )r  r  r  r  r  ry   r   r   r^  r  r  rz   r   )r>   rg   rh   r)  rS   rl  s         r?   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 rC   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  Fr5  r  rR   r   )r   r   r^  )rg   rh   r   rS   rl  s        r?   r  HTestFactorialFunctions.test_factorialk_complex_reference.<locals>._check  sN    D5I>BG..q7B7HG..s9b9!<cMrC   rI   r   Tr\  )rg   rh   r   r   gD!)@g      @gNq53@r  gG`@r=  g     @y             @y            @y      @      @yRsU#[@y      @      y?M,a?y@/n?'?r  gyL_ǚZ?r  yyL_ǚZ?        g333333@gffffffyNV?*V7?g333333y)kh]bg):giߑT@y      -C6?y(5E?WT)r   r^  r  s     r?   !test_factorialk_complex_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WrC   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r%  r  r  s     r?   r  LTestFactorialFunctions.test_factorialk_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     r?   r  r,  /  r  r  r   r  r   rY   r  r5  r  r  r  r  r  r]  r  r  rR   )r^   r  r  r  r  r   r  r   r   r  r   r^  r/   r  rc   r   r  rt  rV  r  s                r?   "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  r5  r  r  r}   r  r]  r  r  r  r0  r   rR   )r  r   r  r   r^  r/   r  r^   r   r  r   rV  rd  )r>   rg   rh   r  rb  rl  r  rB  s           r?   #test_factorialk_scalar_corner_cases:TestFactorialFunctions.test_factorialk_scalar_corner_casesQ  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rN   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)
NrY   r  r]  r  r}   zFor `extend='zero'`.*r  r   zParameter k cannot be zero!)r/   r  r  r   r  r   r^  )r>   rh   r  rb  r  rg   rl  rA  s           r?    test_factorialk_raises_k_complex7TestFactorialFunctions.test_factorialk_raises_k_complexj  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)NrY   r  r  r  )r  r   r  r   r^  )r>   rh   r  rb  r  rg   rl  s          r?   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                  [        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  rY   )r-   keysr^   r   r.   r   r   r^  r  longr  r  int32r  r  getr   )r>   rh   r  rb  rl  rg   r  s          r?   test_factorialk_dtype,TestFactorialFunctions.test_factorialk_dtype  s    7Q388::3A678A++A44::BGGD++AE8R8>>I%%a!e2r2RXXbhh5G5K5KKKK3A678A++A44::BHHE++AE8R8>>G%%a!e2r2RXXbhh5G5K5KKKK3771=>?A $FE++A44::EBrC   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)
NrY   rK   r   rO   Fr  r  r  T)	r^   r   r0  r   r   rj  r  r   r  r>   r   rB  s      r?   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  rd  r  r  r  rm  rp  ru  r}  r  r^   r0  r   r  r   
datetime64r   rj  rk  r^  r  r  ry   r  rx   int8int16r<  r  r  r  uint32r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r#  r(  r.  r1  r4  r7  r>  rB  r  r  rC   r?   rZ  rZ    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,bmmESV>W	

  
 [[			G..0B0BC2	
 < 5"2B [[X3'ABB CB [[XuQ{3[[WtUm4F 5 4F< [[WtUm4[[Wc277BHHbhh
"))RYY		'  [[UE!QK05 1	 55 [[WtUm4[[WeAqk2; 3 5;" [[1[[WrxxBIIryy&QR[[^RT)6T S )6X [[S%C"45	H 6	H [[S!%2,/$uRb7I2JJLMLM"9.U  [[Wrxx')}}f'> ?[[X	':;[[WtUm4[[UE!QK0[[	aS3%"&&BFFRVVb[$8#9BFFA;GF  
)> 1 5 <?)>V [[X	':;[[WtUm4[[S1c6266266BFF2I;Mt"T!Q  SKS 5 <K. [[S%C"45	I 6	I [[S!%2,/$uRb7I2JJLRLR,W* [[Wrxx')}}f'> ?[[X	':;[[WtUm4[[UE!QK0[[	aS3%"&&BFFRVVb[$8#9BFFA;GF  
$> 1 5 <?$>L [[X	':;[[WtUm4[[S1c6266266BFF2I;Mt"T!Q  SSS 5 <S( [[S%1+. [[S%R"56	N 7 /	N [[S$uQ{"3r2h">?[[S!%2,/$uRb7I2JJLRL @R0X< [[Wrxx')}}f'> ?[[X	':;[[WtUm4[[UE!QK0[[	aS3%"&&BFFRVVb[$8#9BFFA;GF  
$> 1 5 <?$>L [[X	':;[[WtUm4[[S%1+.[[S1c6266266BFF2I;Mt"T!Q  SSS / 5 <
S( [[WtUm4[[^RT[[S2tQVS"&&"IJ( KT 5(  [[WtUm4[[^RT [[S8R]]5#-F"G"*E!2  4(4T 5( [[^RT[[S%2,/C 0TC(-rC   rZ  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      ?        rJ  rK  )y       ?yn<ӿj<Cy)BR;߿ux7Q?)y      yھ|}-2?y/?!ۿ)r  GM?pBR?)y      @        rL  rM  )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   re  r   )r>   rA  r{  r]  frss        r?   test_fresnel_valuesTestFresnel.test_fresnel_values  s,    @ GOOA&'UA6]a@rC   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?rY   rG  )r   fresnel_zerosr   r   re  )r>   szoczovals1vals2s        r?   test_fresnel_zerosTestFresnel.test_fresnel_zeros  s    ((+U $4 5
 $!	- 	U $4 5
 $!	- $Q'$Q'qwQ7qwQ7rC   c                 v    [         R                  " S5      u  p[         R                  " S5      n[        X2SSS9  g )NrO   Afcz=r   r\   )r   rT  fresnelc_zerosr   )r>   rU  rV  frcs       r?   test_fresnelc_zerosTestFresnel.test_fresnelc_zeros  0    ((+$$Q'wQ7rC   c                 v    [         R                  " S5      u  p[         R                  " S5      n[        X1SSS9  g )Nr   r\  r   r\   )r   rT  fresnels_zerosr   )r>   rU  rV  rO  s       r?   test_fresnels_zerosTestFresnel.test_fresnels_zeros  ra  rC   r  N)r  r  r  r  r  r  r  r^   r   rP  rY  r_  rd  r  r  rC   r?   rI  rI    sz    [[Y7=	

	
 	&,)/*	c
&&$;) >A?>A8&8
8rC   rI  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 ri  )r   rk  r   )r>   gams     r?   rl  TestGamma.test_gamma  s    mmASrC   c                     [         R                  " S5      n[        [         R                  " S5      5      n[	        XSSS9  g )Nr   r  r   r\   )r   rs  r   rk  r   )r>   gamlnlngams      r?   rt  TestGamma.test_gammaln  s/    "GMM!$%6:rC   c                 v    [         R                  " SS5      n[         R                  " SS5      n[        XSSS9  g )Nr   r  r   r\   )r   ro  gammaincinvr   )r>   gccinvgcinvs      r?   rp  TestGamma.test_gammainccinv  s2    %%b,##Br*F;rC   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 )NrL   r  r   r\   rG  g?g`	\;r  gmb<g      &@)r   rp  gammaincr   r>   r@  r   s      r?   test_gammaincinvTestGamma.test_gammaincinv  s    2&R"3W15R&$:;agA61aH$JKagA6rC   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 )	Nrn  r   gCs?rY   g^F    ?rL   r   rR   )r^   r  r   rp  ru  r   )r>   ptsptr@  r   s        r?   test_975TestGamma.test_975  sh    
 ||D!$l||D!$l4 B##B+A  a(AA. rC   c                 x    [         R                  " S5      nS[         R                  " S5      -  n[        XSSS9  g )Nrl  rY   r  r   r\   )r   ri  rk  r   )r>   rgamrlgams      r?   rj  TestGamma.test_rgamma  s/    ~~a '--""&q9rC   c                 D    [        [        R                  " S5      S5        g )NrN   r   )r   r   ri  r=   s    r?   test_infinityTestGamma.test_infinity  s    W^^B'+rC   z
x,expectedry  r   ir       i c   r=  gP²Zdbc                 D    [        [        R                  " U5      U5        g r%  )r   r   rk  rA  s      r?   
test_polesTestGamma.test_poles  s      	7==+X6rC   r  N)r  r  r  r  rl  rt  rp  r0   rw  r|  rj  r  r  r  r  r^   r   r0  ry   fullr  r  r  rC   r?   rg  rg    s    ;
<
 	7 	7 
/ 
/:
, [[ vvgrvv 01C[BFF7BFF+,3]BGGB/05#r"BGGB$78$%x0	
77rC   rg  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)
TestHankeli0  c                 r    [        [        R                  " SS5      [        R                  " SS5      * SSS9  g Nr}  rK   r   rG  r   r\   )r   r   r  r=   s    r?   
test_negv1TestHankel.test_negv12  ,    A.A1F0F$1	.rC   c                     [         R                  " SS5      n[         R                  " SS5      [         R                  " SS5      S-  -   n[	        XSSS9  g NrY   r;  r>  r  r   r\   )r   r  r  r  r   )r>   hank1hankrls      r?   r  TestHankel.test_hankel16  sC    "%**Qr"WZZ"%5b%88F;rC   c                 r    [        [        R                  " SS5      [        R                  " SS5      * SSS9  g r  )r   r   r  r=   s    r?   test_negv1eTestHankel.test_negv1e;  0    ((Q/'2B2B1a2H1H$1	.rC   c                     [         R                  " SS5      n[         R                  " SS5      [        S5      -  n[	        XSSS9  g )NrY   r;  y       r  r   r\   )r   r  r  r   r   )r>   hank1ehankrles      r?   r  TestHankel.test_hankel1e?  s9    !!!B'//!B'D	1f1=rC   c                 r    [        [        R                  " SS5      [        R                  " SS5      * SSS9  g r  )r   r   r  r=   s    r?   
test_negv2TestHankel.test_negv2D  r  rC   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      r?   r  TestHankel.test_hankel2H  sC    "%::a#gjj2&6r&99V!<rC   c                 r    [        [        R                  " SS5      [        R                  " SS5      * SSS9  g r  )r   r   r  r=   s    r?   
test_neg2eTestHankel.test_neg2eM  r  rC   c                 v    [         R                  " SS5      n[         R                  " SS5      n[        XSSS9  g )NrY   r;  r  r   r\   )r   r  r   )r>   hank2ehankrl2es      r?   test_hankl2eTestHankel.test_hankl2eQ  s2    !!!B'##Ab)vA>rC   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   isposinfr?  r>   r  s     r?   test_hankel2_gh4517TestHankel.test_hankel2_gh4517V  sD    ooa#xx!!!!{{388$$$$rC   r  N)r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rC   r?   r  r  0  s/    .<
.>
.=
.?
%rC   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)	TestHyperi]  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      r?   	test_h1vpTestHyper.test_h1vp^  C    \\!B++a#gkk!B&7&::a8rC   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      r?   	test_h2vpTestHyper.test_h2vpc  r  rC   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   rR   r   r   r   rn  )g      rN   r   rY   rm  )g̷?g3|t-Ք?r   go?g{h?r4  r   rm  r  )r   rY   r   )r   gc?r  rK   r   rY   )
r   r   hyp0f1r^   r   r   r5  vstackassert_raisesr  )r>   r   rB  r  x2s        r?   test_hyp0f1TestHyper.test_hyp0f1h  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	3rC   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     r?   test_hyp0f1_gh5764TestHyper.test_hyp0f1_gh5764  s&     nnS,/H#!	-rC   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 )lNr;  r<  g?r   r   r\   )g{*= g˱a)g5=gvX@)g)AI@gDAhg$Pj)g~٭@)g,qUp,g@=&?gX 3@gZ@)g\@g88*@g\ֳ!=@g   ƞA)gAZ;gOFA'gxŝO<g_Dc D)g^g@g V*E7g4)3@g7-XtD)gΧU(@g2Tj8g$@g  LhB)ge;@gJgogr@g `屫B)g5'.@gqZ=g7߈Y.g8w)gB,@g"^#@grT[	R3@g  B)gYgN],*@g*!j,g1@)g#r @gq{874*gWs%o.@gMdD)g8|.2@g*!,g?I(#@gJ
r .)gu8g#=)@g*'1g)ψvA)g%0N:@gUx1@gx@gr),c@)g:M8@gGb+=@g3ҜV/@gX9ҙim@)g"dxz@gqKgv7##@g  >B)g kx-gD8L+8@g܈2g72LU@)gtd@Q4h6@g%@}gr3b @gu߯ѡ)g򋷺?g"p$`E2@gY|T3g\D?)gV-(+@g$[3@g;/@gEQwв@)g[fgLL4gQV@g0#.@)g;@g/?jvgx.<N&@g^I)g+9gX[?gbZSH%@g5/)@)g}RgŢ	@g},*@g6@g1w-@)gRA(g_@g5A} :=g   FA)gQz5@gq.#gTq&gc ?)gφ%#gZV@
g%@0@g   Syd)gB۽ܟ%@g*>8gV@'g	ʦ)g/H:gn@S g)bǙ9@g  9)gT쁹3!gD gkLFr%@g3333`4A)g:k
g\=)'gi,k9gbx?)giXwg-CwU5@g'jin9gX5@)gb@gTy4#/@g]pH=gIw?)g63@g2XxM:@g~?^0gW1?)g37g R{@gicx.4?gmm?)gv܏%7@g9Ma%=g}ygGr##@)gG8-xы.@gǂ@ghb(@g  A)gw1@gq2@gO],@g0ɷ-X@)g2@g́y#<@gͣx?g]?)g];˄f$@g1}0g_9g8ڃ@)g:!ω1g)q(@gg2gv%)A)gYN:+gn	Ȱ-?g>gZd|I.A)gr/K@g\}L9@g*gΙ?)gQq5V@g?)@g'@0@glۭ`@)gVn:gRQ0gT&g QC)gR4 8gi+gK @g{G)gtiq+g(O?3g	1=@g  8cB)g|>oϘg\!<@g"?4V?g%c\q?)g gpfP!gAO:@g,\)g=R8@g%;gz3@g~0G)g.CVl@ge< .@g9@gkq1A)g=~$gpR7@g 77g,ǆ@)g^g{)gRA2@g  dL)gf=4,R@gyO-g#ޕ~8@g)g|ݩ%P4g:<9@gKzs4g$(~O4@)g2y3@g1$6g&TpxA6gG!JA)gf^XH
^;@g7r:@g`,/@gi{dA)gihx@g!B8(@g7j*@gh@)glmF<gpO4@g`2"@g-)gnV3!2@g.mq1g!Z{.@grOE)gs`m@gzAUguC=V#@g  \)gPL-(@g,9$"9g6u7@geRF)gw8gv=5@gjRW+g(\-@)gyg~=@g4MVgwz:@)g^0g+7%g-@j81g5ׂ,j)gj4gz0g-</;gݽ]
D)gN43@g}W6@gLUS!9gɍF>)g Q4@g=}gȮ5@g]nhgF)gV9g9gf9,#gF|}fv?)g=^ee;@gy}2g'T> g#o@)g+5g;gN8Cg8@g   bkA)gSx+26@g@gI0gSMC)gT*0@g`<6gWy5@gǟRj)gӰk
g/:?gJLHR"@gxu-)gKu@g6gt8_x7@gd;=')g+:;@gBͤ10@g";gK$?)gp @g dg	=@g=6` F)gTbR.g9:g3@gUfgRbKZ@)g!g%P73;g]?gr	y?)g)Yv2gȹq@g/3g   A)g?j/|g7:@g#~oݽ?g8pE?)gPj/gS"X)gYgt0N?)ggo&	xT7@g-hT@#@g.;%r?)g'_@gɖ@7g:Kڞ$@g [B)gk5ں9gѼ:gk%tp;@g  .<^)gf:OI&gO/g#01|2gf`Y)gqv~@guFd9@gz+S7gF1/$?)gx3g~[6:g;s9@gKw*1@)gP@gv;K,gҬd&<@g!s)gֈ`|.gOwx=@g+MK<gUU@)gکI@g©jG1g4g؃66@g(4ν4E)gS>?gD-lgSL,c<gԉE4?)gd?A g3$)glx^?gs>|T?)g(%@g:ĉ$@g~^gv2gJHF&?)g}r":@g3\z;@go)@g+hA)g@')"gVv/@guQU-gfy2yt@)gM6y%$g/;R#@g):@gw%",6Կ)g%x'g$6g5gu$9?)glkC9g<tF8gp?g ?r  )r   r  r   r   r   r  )r>   hyp1ref_datar  r  r]  rB  r  s           r?   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:; 'rC   c                 z    [         R                  " SSS5      n[         R                  " SSS5      n[        XSSS9  g )Nr   rm  g7B.g|:B.r\  r   r\   r   r  r   )r>   r  hyp2s      r?   test_hyp1f1_gh2957TestHyper.test_hyp1f1_gh2957  s2    ~~c38~~c38q9rC   c                 L    [         R                  " SSS5      n[        USSSS9  g )Nr   rm  ig<`?r\  r   r\   r  )r>   hyps     r?   test_hyp1f1_gh2282TestHyper.test_hyp1f1_gh2282  s#    nnS#u-1aHrC   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   rY   rm  |Gz?r  g?g|Gzr^  r   rK   r  r  )r   rq  rm  r  gYi2?r}  r   g433333?rI   rl  r   rN   r  r  g      ?rn        @g      gUUUUUUտg  @gUUUUUU?g)rm  r  r         $gEciH!@)rS  r   rY   ffffff?gzG?)rK   r}  rY   r  gy&1|)r  r   rY   r  g"nN%@?)rK   rs  rY   r  g!J)rG  |      %@r  gzS;)rG  r  g      %r  g[B.VP<r  r   test #r]   rS   err_msg)r   r   r	   r
   r   rk  r   r   r  r  r   )	r>   valuesr}   r  r  r]  r   r  cvs	            r?   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 #4rC   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 )NrY   r;  r  g D?r   r   r\   )r<  r  333333?g)rm  g	@r  g	r   rK   r\  )r   hyperur   r   r   r	   r  rk  )r>   val1r  r  rA  hypuhprls          r?   test_hyperuTestHyper.test_hyperu+  s    ~~aC(if1= !4!aj'!*!~~a!$3r!t9w~~a!4 'ac!e 4W]]15E E G 1Q3xqs1uQqS(CC")--"27==13E"E G G H 	q9rC   c                 H    [        [        R                  " SSS5      SSSS9  g )NrY   rm  g3333334@g(¨?r\  r   r\   )r   r   r  r=   s    r?   test_hyperu_gh2287TestHyper.test_hyperu_gh22878  s!    q#t46J$1	.rC   r  N)r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rC   r?   r  r  ]  s9    9
9
34-r<h:
I"NH:.rC   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 r4SXS4 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 rGSYSD jrHSE rISF rJSG rKSH rLSI rMSJ rNSK rOSL rPSM rQSN rRSO rSSP rTSQ rUSR rV\6Rn                  R                  SSSTSU/5      SV 5       rXSWrYg3)Z
TestBesseli=  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     r?   r  TestBessel.test_itj0y0>  s2    GNN2&'U$79M#NO#!	-rC   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     r?   r  TestBessel.test_it2j0y0C  s2    GOOB'(U$9;O#PQ#!	-rC   c                 p    [        [        R                  " SS5      [        R                  " SS5      5        g Nr   rK   r}  )r   r   r  r=   s    r?   test_negv_ivTestBessel.test_negv_ivH  s!    WZZ!_gjjA&67rC   c                 t    [         R                  " S5      n[         R                  " SS5      n[        XSSS9  g Nr;  r   r  r\   )r   r  r  r   r>   ozozrs      r?   r  TestBessel.test_j0K  +    ZZ^jj2f15rC   c                 t    [         R                  " S5      n[         R                  " SS5      n[        XSSS9  g Nr;  rY   r  r   r\   )r   r  r  r   r>   o1o1rs      r?   r  TestBessel.test_j1P  r  rC   c                 J    [         R                  " SS5      n[        USSSS9  g )NrY   r   ;x?r  r   r\   )r   r  r   )r>   jnnrs     r?   r  TestBessel.test_jnU  s!    zz!B2aHrC   c                 r    [        [        R                  " SS5      [        R                  " SS5      * SSS9  g r  r   r   r  r=   s    r?   test_negv_jvTestBessel.test_negv_jvY  s*    

2q)GJJq!,<+<7QRSrC   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   r;  g
Ye?)UUUUUU?:0yE>g˿+>)r  r[   g)%->)g@r[   g5c)!9)r  r*  g%,Ϳr  r   r  r  )r  r   r  r   )r>   r  r}   r  r   r@  ycs          r?   r  TestBessel.test_jv\  sS    /5662	 &f-LAyaA!BBQ&M .rC   c                 r    [        [        R                  " SS5      [        R                  " SS5      * SSS9  g r  )r   r   r  r=   s    r?   test_negv_jveTestBessel.test_negv_jveg  ,    B*W[[A->,>$1	.rC   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 )NrY   r   r  r  r   r\   ?      ?)r   r  r   r  r   r  r?  )r>   jvexpjvexp1rA  jvexprs        r?   r  TestBessel.test_jvek  se    Ab!3&qIQu%Aac!&&k\!22V!<rC   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   rY   )go@.=@gzj,[@glN!@g5/ D'@gh>-@r  r\   gW@g0@gQX$@g*@g8*5{x0@rX   )gEk[@g~Cju]@gYrʝ^@g, `@gf	`@rQ   rR   -  )gts@g&ǭr3t@gWt@g,$Y&u@gu@r   jn_zerosr   r   )r>   jn0jn1jn102jn301s        r?   test_jn_zerosTestBessel.test_jn_zeross  s    q#q#U $3 4
 $!	- 	U $. /
 $!	-   Q'u &>  ? FK		L   Q'u &>  ? FK		LrC   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   ro   i  g;@rQ   rR   i  g8v@i+  gׂMm@rG  gxi@g	,@gи{>@i  r   )gUDX@g!@g*HS@gz5 @g@2;@r  r)  )r>   r+  jn10jn3010s       r?   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rC   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-  $ )NrY   rK   r  )rg   r   r  s     r?   jnp(TestBessel.test_jnjnp_zeros.<locals>.jnp  s'    qs1I1Q3q	)1,,rC   rY   rU   r   r   r  zInvalid t return for nt=)r   r  ry   jnjnp_zerosrU  r   AssertionError)r>   r8  ntrA  rg   rh  tzznnttr  s             @r?   test_jnjnp_zerosTestBessel.test_jnjnp_zeros  s    ZZ	-2,B ,,R0JA!!!l
7#BrJ=1W#CK>(+CB4)HII + rC   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 )
NrY   r   g(yu?gOXeS@ga!@gxi'@g'Nw(-@r  r   r\     r   r  )r   	jnp_zerosr   r   r  )r>   r8  s     r?   test_jnp_zerosTestBessel.test_jnp_zeros  s\    !$U $. /
 $!	- A&C-qu=rC   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 )
NrY   r   r'  rD  )"@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     r?   test_jnyn_zerosTestBessel.test_jnyn_zeros  sc      A&e %/ 0
 $ %/ 0
 $ %/ 0
 $ %/ 01( $!)	-rC   c                     [         R                  " SS5      n[         R                  " SS5      [         R                  " SS5      -
  S-  n[        XSSS9  g )NrK   rY   r   r  r   r\   )r   r  r  r   )r>   jvprimjv0s      r?   test_jvpTestBessel.test_jvp  sA    Qq!zz!Awzz!A.1':rC   c                 t    [         R                  " S5      n[         R                  " SS5      n[        XSSS9  g r  )r   r  rJ  r   )r>   ozkozkrs      r?   r  TestBessel.test_k0  +    jjnzz!BvA6rC   c                 t    [         R                  " S5      n[         R                  " SS5      n[        XSSS9  g r  )r   r  rN  r   )r>   ozkeozkers      r?   r  TestBessel.test_k0e  +    {{2Ab!&q9rC   c                 t    [         R                  " S5      n[         R                  " SS5      n[        XSSS9  g r
  )r   r  rJ  r   )r>   o1ko1krs      r?   r  TestBessel.test_k1  rX  rC   c                 t    [         R                  " S5      n[         R                  " SS5      n[        XSSS9  g r
  )r   r  rN  r   )r>   o1keo1kers      r?   r  TestBessel.test_k1e  r]  rC   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   rY   r   rK   r   rv  r\   r  rI   g       @rO   r  rl  g      H@)r^   rd   r   jacobir   r]  r   )
r>   r  r  P0P1P2P3cpp2cp3cs
             r?   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FrC   c                 J    [         R                  " SS5      n[        USSSS9  g )Nr   r   _2?r  r\   )r   r1  r   )r>   kn1s     r?   r2  TestBessel.test_kn  s!    jj2/f1ErC   c                 p    [        [        R                  " SS5      [        R                  " SS5      5        g Nrn  rF  rp  r   r   rJ  r=   s    r?   test_negv_kvTestBessel.test_negv_kv  s"    WZZS)7::dC+@ArC   c                 J    [         R                  " SS5      n[        USSSS9  g )Nr   r   rr  r  r\   r   rJ  r   )r>   kv0s     r?   test_kv0TestBessel.test_kv0  s!    jj2/gAFrC   c                 J    [         R                  " SS5      n[        USSSS9  g )NrY   r   gKދ@r  r   r\   r{  )r>   kv1s     r?   test_kv1TestBessel.test_kv1  !    jj3.W1ErC   c                 J    [         R                  " SS5      n[        USSSS9  g )NrK   r   g)lHH@r  r   r\   r{  )r>   kv2s     r?   test_kv2TestBessel.test_kv2  r  rC   c                 F    [        [        R                  " SS5      S5        g )Nr  rY   g.Ք"H)r   r   r1  r=   s    r?   test_kn_largeorderTestBessel.test_kn_largeorder  s    

2q)+ABrC   c                 F    [        [        R                  " SS5      S5        g )Nr   g =`XCrw  r=   s    r?   test_kv_largeargTestBessel.test_kv_largearg  s    WZZ4(!,rC   c                 p    [        [        R                  " SS5      [        R                  " SS5      5        g rv  )r   r   rN  r=   s    r?   test_negv_kveTestBessel.test_negv_kve  s"    W[[c*GKKc,BCrC   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\   r!  )r   rN  rJ  r   r   )r>   kve1r  rA  kve2r  s         r?   rO  TestBessel.test_kve  sp    {{1R jj2s2w&Q7{{1Qjj1oc!f$Q7rC   c           	      t    Sn[        [        R                  " SU5      * [        R                  " SUSS9SSS9  g )NrF  rY   r   rg   r  r\   )r   r   rJ  kvp)r>   rA  s     r?   test_kvp_v0n1TestBessel.test_kvp_v0n1&  s3    Aq))7;;q!q+A$1	.rC   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 )Nrn  rF  rY   r  r  r   r\   r   rJ  r  r   r>   r  rA  xcr   s        r?   test_kvp_n1TestBessel.test_kvp_n1+  sS    jj1Q!#gjjo"55KKq!G!4rC   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 )	Nrn  rF  rK   rY   r  r  r   r\   r  r  s        r?   test_kvp_n2TestBessel.test_kvp_n23  sl    d1a4ik1a4'**Q/1GJJqs14Ea4GGKK"G!4rC   c                 t    [         R                  " S5      n[         R                  " SS5      n[        XSSS9  g r  )r   r  r  r   r  s      r?   r  TestBessel.test_y0:  r  rC   c                 t    [         R                  " S5      n[         R                  " SS5      n[        XSSS9  g r
  )r   r  r  r   r  s      r?   r  TestBessel.test_y1?  s+    ZZ^jj2V!4rC   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 )NrK   rY   r5  r   r  r   r\   )r   y0_zerosr   r   r  r  )r>   yoypozozpor  allvals          r?   test_y0_zerosTestBessel.test_y0_zerosD  s    !!!$!!!A.iCGGJJsC013W1MGJJq#.78#GRSTrC   c                 t    [         R                  " S5      n[        U[        S/5      [        S/5      4SSS9  g )NrY   rJ  gѮBO?r+  r   r\   )r   y1_zerosr   r   )r>   r  s     r?   test_y1_zerosTestBessel.test_y1_zerosL  s6    a UG9-ugY/?@#!	-rC   c                 r    [         R                  " SSS9n[        U[        S/5      [        S/5      4SSS9  g )NrY   r  yL
F%u?!rh?y;OnгY?rS  r   r\   )r   	y1p_zerosr   r   )r>   y1ps     r?   test_y1p_zerosTestBessel.test_y1p_zerosQ  s9    !,e]O4e_<M6NO#!	-rC   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 )NrI   rK   g3@g(A&"@r+  r   r\   rE  r   )g]E.+"|@gH(|@gff|}@g&b`~@gHO_~@r   rR   )r   yn_zerosr   r   )r>   ans     r?   test_yn_zerosTestBessel.test_yn_zerosV  sR    a"E7G"45FKc!$ 4
 #	%rC   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   rK   gQhվ@gzN@r  r\   +   r   r   r  rE  r   )r   	ynp_zerosr   r   r  r>   aos     r?   test_ynp_zerosTestBessel.test_ynp_zerosa  s~    q#E:z":;&qQr!$B+QU;s1%C,ad;rC   c                 r    [         R                  " SS5      n[        [         R                  " SU5      SSS9  g )NrE  r   r   r  r  )r   r  r   r  r  s     r?   test_ynp_zeros_large_order%TestBessel.test_ynp_zeros_large_orderi  s+    s1%C,ae<rC   c                 J    [         R                  " SS5      n[        USSSS9  g NrY   r   5,1
r  r   r\   )r   r  r   )r>   yn2ns     r?   r  TestBessel.test_ynm  s!    zz!B1QGrC   c                 `    [         R                  " SS5      nU[        R                  * :X  d   eg )NrW   rY   )r;   r  r^   r   )r>   r  s     r?   test_yn_gh_20405TestBessel.test_yn_gh_20405q  s&    99S!$BFF7"""rC   c                 r    [        [        R                  " SS5      [        R                  " SS5      * SSS9  g r  )r   r   r  r=   s    r?   test_negv_yvTestBessel.test_negv_yvv  s,    

2q)GJJq!,<+<$1	.rC   c                 J    [         R                  " SS5      n[        USSSS9  g r  )r   r  r   )r>   yv2s     r?   r  TestBessel.test_yvz  s!    jj20vAFrC   c                 r    [        [        R                  " SS5      [        R                  " SS5      * SSS9  g r  )r   r   r  r=   s    r?   test_negv_yveTestBessel.test_negv_yve~  r  rC   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 )	NrY   r   r  r  r   r\   r!  rN   )r   r  r   r  r   )r>   yve2yve2ryve22s       r?   r  TestBessel.test_yve  sV    {{1R 1QG

1U#CG+Ae$6:rC   c                     [         R                  " SS5      [         R                  " SS5      -
  S-  n[         R                  " SS5      n[        X!SSS9  g )	NrY   r   r   r  rK   r  r   r\   )r   r  r  r   )r>   yvpryvp1s      r?   test_yvpTestBessel.test_yvp  sC    

1R 7::a#33S8{{1R q9rC   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(  )iro  rN   r   r       i@g     y@g     Ă@g@  i'  Nr   ir  rq  )	itertoolsproductr   )r>   r  rA  s      r?   _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 )Nr4  u <7~r   )r  rS   r]   )	r  rx   r^   r  r   r  r   r?  r   )r>   r  f2rS   r]   r  r  rA  c1c2c3s              r?   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*.; 2rC   ppc64lezfails on ppc64ler8  c                 `    U R                  [        R                  [        R                  SSS9  g )Nr[   u5% r  )r  r   r  r  r=   s    r?   test_jv_cephes_vs_amos!TestBessel.test_jv_cephes_vs_amos  #     	!!'**gjju6!RrC   c                 `    U R                  [        R                  [        R                  SSS9  g )Ndy=r  r  r  r   r  r  r=   s    r?   test_yv_cephes_vs_amos!TestBessel.test_yv_cephes_vs_amos  r  rC   c                 h    S nU R                  [        R                  [        R                  SSUS9  g )Nc                     [        U 5      S:  $ )Nr  )r  )r  rA  s     r?   skipperDTestBessel.test_yv_cephes_vs_amos_only_small_orders.<locals>.skipper  s    q6B;rC   r  r  )rS   r]   r  r  )r>   r	  s     r?   (test_yv_cephes_vs_amos_only_small_orders3TestBessel.test_yv_cephes_vs_amos_only_small_orders  s-    	!!'**gjju6'. 	" 	0rC   c                     [         R                  " SS9   U R                  [        R                  [        R                  SSS9  S S S 5        g ! , (       d  f       g = f)NrX  r  g:0y5>r  r  )r^   r  r  r   r  r=   s    r?   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 rY   r   rN   rK   r   r   rl  r   rX  r  r4  r  gYngH׊>)r^   rd   rq   r  r  r   r  r  r   r  r   r  r   argmaxr   )	r>   r
  r  r   imskr  r  dcrh   s	            r?    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   rJ  r1  r=   s    r?   test_kv_cephes_vs_amos!TestBessel.test_kv_cephes_vs_amos  s@    !!'**gjjt&!Q!!'**gjjt&!QrC   c                     [        [        R                  " SS5      S5        [        [        R                  " SS5      S5        [        [        R                  " SS5      S5        g )	Nr   rI   gP?r(  r  g~Omʒ?gY8E@@gKSnr  r=   s    r?   test_ticket_623TestBessel.test_ticket_623  sD    

1a(*=>

3-/AB

3	24GHrC   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 BesselsrN   rY   gl)ܿrS  gPj?gk?g%E*2ig敋?gw--`?gÉB?gW?r  g޴?gz|?a?gpx%?y      ?        y      ?      ?yYD?`{1wy6x?B]#Ӯ?y ?b>?y.}9d?8kؿy      ?333333?r  y333333?      ?r>  N)r   r   r  r  r  rJ  r  r   r  r  rN  r  r  r=   s    r?   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(=%==	
rC   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   rN   rY   r   rK   rI   N)r   r   r   r  r  r  rJ  r  r  r  rN  rE   r  r  r=   s    r?   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KrC   c                     [        [        R                  " SS5      [        R                  :H  5        [        [        R
                  " SS5      [        R                  :H  5        g )Nrm  r   )r   r   rJ  r^   r   rN  r=   s    r?   test_gh_7909TestBessel.test_gh_7909)  s:    

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

1c*,AB

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

4+->?rC   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   rK   r   rY   rN   rG  )r   r   r   r   r   rs  r   r   r   r  r  r   r  sumr>   r  rA  rg   rh   rc  r*  s          r?   	iv_seriesTestBessel.iv_series5  s    1aL'qsUC1I! 44wqs1u7MM%(F!fjjlU6]...2S2Z]Buuw|rC   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>   rA  valuer*  s       r?   test_i0_seriesTestBessel.test_i0_series=  2    !A1-JEGJJqM5AF "rC   c                 |    S H6  nU R                  SU5      u  p#[        [        R                  " U5      X#US9  M8     g )Nr.	  rY   r/	  )r+	  r   r   r  r0	  s       r?   test_i1_seriesTestBessel.test_i1_seriesB  r4	  rC   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             @r/	  )r+	  r   r   r  r>   r  rA  r1	  r*  s        r?   test_iv_seriesTestBessel.test_iv_seriesG  s=    7A,!^^A1


1 0%A6R - 8rC   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[   r;  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         r?   r  TestBessel.test_i0M  s    *#,%%%%%& #6*IAvAaR(BBQ&M +rC   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      r?   r  TestBessel.test_i0e[  +    {{2Ar"&q9rC   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|=r;  gȕ![1?r   g;͘?r   gRΜ?r^  g|?r=	  g}f?r  r   r  r  )r  r   r  r   r   r>	  s         r?   r  TestBessel.test_i1`  s    *01%%%%& #6*IAvAaR(BBQ&M +rC   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      r?   r  TestBessel.test_i1em  rD	  rC   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     r?   r  TestBessel.test_iti0k0r  s2    W^^A&'e%79K$LM#!	-rC   c                 ^    [         R                  " S5      n[        U[        SS/5      SSS9  g )Nr;  gݳɄ|T?gVƥ
@r  r   r\   )r   r  r   r   )r>   it2ks     r?   r  TestBessel.test_it2i0k0w  s-    r"e%:<N$OP#!	-rC   c                 b    [         R                  " SS5      [        S5      -  n[        USSSS9  g )Nr   r;  皙gv M?r  r\   )r   r  r   r   )r>   iv1s     r?   r  TestBessel.test_iv|  s*    jj2s3x'0wQGrC   c                 p    [        [        R                  " SS5      [        R                  " SS5      5        g r  )r   r   r  r=   s    r?   test_negv_iveTestBessel.test_negv_ive  s"    W[[1%w{{2a'89rC   c                     [         R                  " SS5      n[         R                  " SS5      [        S5      -  n[	        XSSS9  g )Nr   r;  rR	  r  r\   )r   r  r  r   r   )r>   ive1rS	  s      r?   r  TestBessel.test_ive  s7    {{1R jj2s3x'a8rC   c                 p    [        [        R                  " SS5      [        R                  " SS5      SSS9  g )NrY   rK   r   r  r\   )r   r   r  ivpr=   s    r?   	test_ivp0TestBessel.test_ivp0  s'    

1a('++a*;'PQRrC   c                     [         R                  " SS5      [         R                  " SS5      -   S-  n[         R                  " SS5      n[        X!SSS9  g )Nr   rK   rY   r  r\   )r   r  r\	  r   rv  s      r?   test_ivpTestBessel.test_ivp  sA    ZZ!_wzz!A.1KK!73rC   zx, expected)  4&kCgeAKq:>)ꌠ9Y>)Fg/"ļc                 B    [        [        R                  " U5      USS9  g )Nr  rR   )r   r   r  rA  s      r?   test_gh22705TestBessel.test_gh22705  s     	

1xe<rC   r  )r  r   N)   )Zr  r  r  r  r  r  r   r  r  r  r  r  r  r  r/  r4  rA  rG  rM  rR  r  r  r  r  ro  r2  rx  r}  r  r  r  r  r  rO  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  machiner  r  r	  r	  slowr	  r	  r	  r	  r	  r	  r#	  r&	  r+	  r2	  r6	  r:	  r  r  r  r  r  r  r  rV	  r  r]	  r`	  r  re	  r  r  rC   r?   r  r  =  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4
 [[]	&	'	
=	=rC   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   rY   rK   r   rI   r   rv  r\   rN   )rY   rw  rK   r  )rN   r|  irO   r  )rY   iH   ir   rj  )rN   r   i8iX  ir  r  )r   laguerrer   r]  r   )r>   lag0lag1lag2lag3lag4lag5s          r?   test_laguerreTestLaguerre.test_laguerre  s   """"""':QgA>i 03 6W1Mm 4S 8wQO&8 9$ >$1	.&D E M$1	.rC   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   rY   rK   r   rN   rS  r   r  r   r\   r}  r  )r^   rd   r   r  r   r]  r   r   )r>   rh   ro	  rp	  rq	  rr	  rB  s          r?   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>rC   r  N)r  r  r  r  ru	  rx	  r  r  rC   r?   rk	  rk	    s    . ?rC   rk	  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 )	NrY   r;  r   rK   rS  r  r  r\   )r   lmbdar   r  r  r  r   )r>   lamlamrs      r?   
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7rC   r  N)r  r  r  r  r	  r  r  rC   r?   r{	  r{	    s    8rC   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 )NrG  r=  r  r"  r  r   r\   r   rT  r   r   )r>   l1pl1prls      r?   rU  TestLog1p.test_log1p  sM    }}R '--"3W]]25FGR#b'3r7+a8rC   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 )
NrY   r  r  rK   rE  rF  r  r   r\   r	  )r>   l1pml1pmrls      r?   test_log1pmoreTestLog1p.test_log1pmore  sM    a '--"4gmmC6HIa&S#c(+6:rC   r  N)r  r  r  r  rU  r	  r  r  rC   r?   r	  r	    s    9
;rC   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().
rK   r   r  h  rY   c                 :   > [         R                  " TTU 5      S   $ r:   )r   r  r=  rg   rs  s    r?   r  7ce_fourier_coefficient_using_integral.<locals>.<lambda>      '"5"5aA">q"ArC   r
   r  weightwvarepsrelr3   r^   r   rh   rg   rs  periodr]  s    ``  r?   %ce_fourier_coefficient_using_integralr	    sy     EQJSCF 
64A	6!8$1RUU719V+;EKKLN 	NA 	1u	QHrC   c           
         ^^ 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   rK   r  r	  c                 :   > [         R                  " TTU 5      S   $ r:   )r   r  r	  s    r?   r  7se_fourier_coefficient_using_integral.<locals>.<lambda>  r	  rC   r	   r  r	  r	  r	  s    ``  r?   %se_fourier_coefficient_using_integralr	    sq     	AvEQJSCF	
64A	6!8$1RUU719V+;EKKLN 	NA HrC   c                   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)rI   rq  )rl  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 )NrI   r[   rR   r   r(   ry   r	  r   r  r>   rg   rs  Arh   r]  s         r?   .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   rq  )rM   rK   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 NrY   r|  rK   r[   rR   r	  r	  s         r?   -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)rK   rq  )rG  rK   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 )NrY   r   r[   rR   r   r'   ry   r	  r   r  r>   rg   rs  Brh   r]  s         r?   -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         r?   ,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  rC   r?   r	  r	    s    [[Vh	%:;3 <3 [[Vh%78	3 9	3 [[Vh%89	3 :	3 [[Vh%78	3 9	3rC   r	  c                        \ rS rSrS rS rSrg)TestFresnelIntegrali*  c                     g r%  r  r=   s    r?   r  $TestFresnelIntegral.test_modfresnelp,  r'  rC   c                     g r%  r  r=   s    r?   r  $TestFresnelIntegral.test_modfresnelm/  r'  rC   r  N)r  r  r  r  r  r  r  r  rC   r?   r	  r	  *  s    rC   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   rY   )g~T~Oֿgt_J?gm{@g@j'&@r+  r\   )r   
obl_cv_seqr   r   )r>   obls     r?   test_obl_cv_seqTestOblCvSeq.test_obl_cv_seq4  s3      1Q'U $/ 0 $!		-rC   r  N)r  r  r  r  r	  r  r  rC   r?   r	  r	  3      -rC   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 )
NrY   r;  gQ?gx$(~?gx$(~g(\?r  r   r\   )r   pbdn_seqr   r   )r>   pbs     r?   test_pbdn_seq#TestParabolicCylinder.test_pbdn_seq>  sM    a$UF$*$, -"G$*$, -. $!		-rC   c                     [         R                  " SS5        S[         R                  " SS5      S   -  [         R                  " SS5      S   -
    g )NrY   r   r;  r   )r   r&  r=   s    r?   r'  TestParabolicCylinder.test_pbdvF  s=    Qra#A&&a);A)>>rC   c                     [         R                  " SS5      n[         R                  " SS5      n[        U[	        US   5      [	        US   5      4SSS9  g )NrY   r;  r   r  r\   )r   r	  pbdv_seqr   r   )r>   pbnpbvs      r?   test_pbdv_seq#TestParabolicCylinder.test_pbdv_seqJ  sI    q$q$d3q6lDQL9QOrC   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 )Nro  rG  r   rK   r   r   r   r  r  gGz$@gq=
ףp4@gHQ9r   rR   g(\#gQ@gkS a>)r^   r  r   r   r   ri  r   r&  )r>   etarA  s      r?   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WrC   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 Nrw  rI   rl  ro  rG  r   r  r   r  rY   r   r  )r^   r  r   r&  r  r   r>   r   r	  rQ  r  dps         r?   test_pbdv_gradient(TestParabolicCylinder.test_pbdv_gradientY      KKAq!!D&)kk#r1%d1f-LL T#a&[ ll3C(+gll3C.H.KKsRUWW!bt$7rC   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         r?   test_pbvv_gradient(TestParabolicCylinder.test_pbvv_gradientb  r	  rC   c                     [         R                  " SS5      u  p[        U[        R                  " / SQ5      5        [        U[        R                  " / SQ5      5        g )NrK   r   )g:4@g1{н?g7,%n?)gX@g=<'?gʠ?)r   pbvv_seqr   r^   r   )r>   res1res2s      r?   test_pbvv_seq#TestParabolicCylinder.test_pbvv_seqk  sL    %%a+
bhh (< = 	> 	bhh (; < 	=rC   r  N)r  r  r  r  r	  r'  r	  r	  r	  r	  r	  r  r  rC   r?   r	  r	  =  s'    -?P
X88=rC   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 )NrK   rY   r   gX];r  r   r\   gOV,@@)rK   r   g  8Br   r3  r  )g2}jg.M?g}2;ο)r   	polygammar   ra  r^   r  )r>   poly2poly3r   rg   rB  s         r?   test_polygammaTestPolygamma.test_polygammaw  s	   !!!Q'!!!Q'}7C|'B ))!Q/Q#!	- *))!/QO99hZ\*))!RYYs1u-=>#!	-))"))QCE*:A>#!	-rC   r  N)r  r  r  r  r	  r  r  rC   r?   r	  r	  u  s    -rC   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   rY   )g"~j?g6?Ң@g)u8F"@g2g)@r+  r\   )r   
pro_cv_seqr   r   )r>   prols     r?   test_pro_cv_seqTestProCvSeq.test_pro_cv_seq  s3    !!!Q*e %0 1 $!		-rC   r  N)r  r  r  r  r	  r  r  rC   r?   r	  r	    r	  rC   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 )NrY   goxr  r   r\   )r   ra  r   )r>   pss     r?   rb  TestPsi.test_psi  s    [[^0vAFrC   r  N)r  r  r  r  rb  r  r  rC   r?   r	  r	    s    GrC   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   re  r   r   )r>   rads     r?   rf  TestRadian.test_radian  s&    nnRA&RV&q9rC   c                 `    [         R                  " SSS5      n[        U[        S-  S-   SSS9  g )	Nr  rY   r  rK   gC?r+  r   r\   r	  )r>   rad1s     r?   test_radianmoreTestRadian.test_radianmore  s,    ~~b!R(bd%::aPrC   r  N)r  r  r  r  rf  r
  r  r  rC   r?   r	  r	    s    :QrC   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)rK   r   T)
derivativer   rY   r  r\   )r^   emptyry   r   spherical_jnr   
riccati_jn)r>   r
  r   Srg   r  jps          r?   test_riccati_jnTestRiccati.test_riccati_jn      HHaVqA$$Q*A%%at<BSAacFTAXAacF	 
 	7--a3&qIrC   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

  ry   r   spherical_ynr   
riccati_yn)r>   r
  r   Crg   r@  yps          r?   test_riccati_ynTestRiccati.test_riccati_yn  r
  rC   r  N)r  r  r  r  r
  r
  r  r  rC   r?   r
  r
    s    JJrC   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  rR   )numpyrd   default_rnguniformstackr&   r   )r>   r^   rk   rg   r  r  a3a4r  rt  r  s              r?   test_softplusTestSoftplus.test_softplus  s     	ii##M2[[s[+[[bq[)[[T[*[[![,HHbb%& TQKHJ
 qku-rC   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   rK   r   )outwhere)r^   r   onescopyr&   r   )r>   r   r&
  rt  r'
  s        r?   test_softplus_with_kwargs&TestSoftplus.test_softplus_with_kwargs  sU    IIaL1ggajhhjA5)ah'
!rC   r  N)r  r  r  r  r#
  r*
  r  r  rC   r?   r
  r
    s    .:"rC   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%@)rG  rG  rG  r=  )r  maprx   r   rr  r   )r>   rndrndrls      r?   rs  TestRound.test_round  sX    3sW]]40$]]40$]]40$]]402 3 4 3%rC   r  N)r  r  r  r  rs  r  r  rC   r?   r-
  r-
    s    &rC   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   rN   r   rK   rY   rm  )	r   r   rk  r  r  r   r   r  r)	  r*	  s          r?   _seriesTestStruve._series  s    1aL!Gr!tqs1uQw''ae(<<W]]13s7=SS!fjjlU6]...2uuw|rC   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)
iro  (\ro  rN   r   rY   rm  r     )rY   rG     r  rU   r   r  N)r6
  r   r   r  r9	  s        r?   test_vs_seriesTestStruve.test_vs_series  sG    BA(!\\!/
q 4e!#NQRPVV ) CrC   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 )Nr9
  r  g;cv=?r  rR   gQ g< j?r  rp  rg	  g?r   g       igzz?r  i)   r  r  r=  gffffffrN   g333333$)r   r   r  r   r   r   r=   s    r?   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1rC   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    r?   test_regression_679TestStruve.test_regression_679  sk    tY7tY7	9tY7tY7	9tY7tY7	9rC   r  N)r  )	r  r  r  r  r6
  r<
  r@
  rC
  r  r  rC   r?   r4
  r4
    s    W29rC   r4
  c                  F    [        [        R                  " SS5      SSSS9  g )Nr  r   gdX	
?r   r   r\   )r   r   r   r  rC   r?   test_chi2_smalldfrF
    s    GMM#q)+<6PQRrC   c                  b    [        [        R                  " S[        R                  5      S5        g )Nr  r   )r   r   r   r^   r   r  rC   r?   test_ch2_infrH
  !  s    s266*C0rC   r   r   ry  r   c                     [         R                  " [        R                  " [         R                  U 5      5      (       d   eg r%  r^   r   r   r   r0  rP  s    r?   test_chi2_v_nanrK
  %  s&    88GMM"&&!,----rC   r  c                     [         R                  " [        R                  " U [         R                  5      5      (       d   eg r%  rJ
  r  s    r?   test_chi2_x_nanrN
  *  s&    88GMM!RVV,----rC   c                     [         R                  " [        R                  " [         R                  U 5      5      (       d   eg r%  r^   r   r   r   r0  rP  s    r?   test_chi2c_v_nanrQ
  /  s&    88GNN2661-....rC   c                     [         R                  " [        R                  " U [         R                  5      5      (       d   eg r%  rP
  rM
  s    r?   test_chi2c_x_nanrS
  4  s&    88GNN1bff-....rC   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  rY   rK   )r^   r   r   r   r   ru  r  r  r   r  r   r   r  	gammainccr   r  )r  r   rt  r  s       r?   test_chi2_edgecases_gh20972rV
  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<rC   c                  F    [        [        R                  " SS5      SSSS9  g )Nr  r   yj_?r   r   r\   )r   r   r   r  rC   r?   test_chi2c_smalldfrY
  N  s    GNN3*,Aa)rC   c                  F    [        [        R                  " SS5      SSSS9  g )Nr  rX
  r   r   r   r\   )r   r   r   r  rC   r?   test_chi2_inv_smalldfr[
  S  s    GNN3(=>a)rC   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 )'NrQ   rY   rK   gDSYC?rR   gQ_?g?@g>;,
i}@r   )rY   r   r   g=O?rN   rS  r   rO   gXs*@r"  g   V4oAgO1eArc	  gEg^ 9^;gd-?gP.5_gsTNNeg6dgu?j/ g]XC}KdgѧRg"!x{{ r   g][#!Rr  gٍS1gN_ r   r  rG  )r   r   agmr^   r   r   r  r  r   r0  r   )rS   agm13agm15agm35agm12fis         r?   test_agm_simplerc
  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3rC   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)NrX  r>  rY   r<  g?rK   gffffff@)rY  rZ  r[  r\  r   r   expnr  r  r  r?  r1  r  r  r  r  rC   r?   test_legacyrf
    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)rh
  s    r?   errstate_lockrj
    s    >>rC   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  rY   y        .B}T)r   r  r  r  r  )rj
  s    r?   test_error_raisingrl
    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NrX  )invalidr   )r^   r  r   r   r   r@  s     r?   xfunctest_xlogy.<locals>.xfunc  sI    [[*Avbhhqkk +* {	 +**   #A$A$$
A2r   r   r   r   r  r  )r   r>  )rY   r>  rY   rQ   r  )
r^   r   r0  r   rz   r   r   r1   r   xlogy)rr
  z1z2w1w2s        r?   
test_xlogyr|
    s    # 
UQK!RVVjA	OB	rGW%%	&B	e	R!Wb1g	.BgmmR%eD	e	R!Wb1g	.BgmmR%eDrC   c                     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ro
  )r^   r  r   rT  rq
  s     r?   rr
  test_xlog1py.<locals>.xfunc  sI    [[*Avbhhqkk +* 288A;	 +**rt
  ru
  r   rv
  )rY   gKH9r  rY   rQ   r  )	r^   r   r0  r   rz   r   r1   r   xlog1py)rr
  rx
  rz
  s      r?   test_xlog1pyr
    sq    ' 
UQK!RVVj!(-
/B	e	R!Wb1g	.BgoorEFrC   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   rw
  rP  s    r?   rr
  test_entr.<locals>.xfunc  s&    q5FF7NMM!'''rC   r   r   r   rN   rY   r  otypesrQ   r  )r^   r   r  r  r  r   rz   r   r   r1   r   entr)rr
  r  signsr  sgnr  rA  r  s           r?   	test_entrr
    s    (
 c266"FGE
C##E2

37 3
E"A
UBJJ<03AgllAu5ArC   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   rw
  rq
  s     r?   rr
  test_kl_div.<locals>.xfunc  so    q5AEa1fa66M[[^^r{{1~~66M!VH==aC(1,q00rC   r   r   r   rN   rY   r  r
  r   rQ   r  )r  r  r  r^   r   rz   r   r   r1   r   kl_div
rr
  r  r
  r  sgnavasgnbvbrA  r  s
             r?   test_kl_divr
    s    
1 FGE
C'//uM$

DGTW%& N
E"A
UBJJ<01Q31Q3@AgnnaUCrC   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   rw
  r^   r   rq
  s     r?   rr
  test_rel_entr.<locals>.xfunc  s;    q5QU==aC((!VQ66MrC   r
  rN   rY   r  r
  r   rQ   r  )r  r  r  r^   r   rz   r   r   r1   r   rel_entrr
  s
             r?   test_rel_entrr
    s     FGE
C'//uM$

DGTW%& N
E"A
UBJJ<01Q31Q3@Ag&&5uErC   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   rY   rQ   r  )r^   r   r   r   r
  inputsrB  r   r@  s       r?    test_rel_entr_gh_20710_near_zeror
  
  sQ    XX  FH
 	q!tAq!tAG$$Q*H5qIrC   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 )	NrX  r  ))rI   X )r  gZbti)r
  rb	  )gMG.@g)Z?g wa)r   rY   rQ   r  )r   seterrr^   r   r   r
  r
  s       r?   test_rel_entr_gh_20710_overflowr
    s]    NNx XX  FH
 	q!tAq!tAG$$Q*H5qIrC   c                      [        [        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 )NrN   rm  rK   r   r  rn  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deltarc  s     r?   rr
  test_huber.<locals>.xfunc8  sQ    1966MVVAY1%%BFF1Ie344rC   rG  r
  r   rY   rQ   r  )r   r   huberr^   r   r   r
  rd   randnr   r   r1   rr
  rA  r  s      r?   
test_huberr
  3  s    r3'0GMM!S)33+?@GMM!S)+>?5 			AA
UBJJ<01Q31Q3@AgmmQEBrC   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   rK   rY   )r^   r   r   r
  s     r?   rr
   test_pseudo_huber.<locals>.xfuncF  sB    1966M!8rwwqAGa<'781<==rC   rG  rK   r   r   r
  rY   rQ   r  )
r^   r   rd   r
  tolistr   r   r1   r   pseudo_huberr
  s      r?   test_pseudo_huberr
  E  s    > 	Q'..0QHsAh3GGHA
UBJJ<01Q31Q3@Ag**Au5IrC   c                  P    Sn Sn[         R                  " X5      nSn[        X#SS9  g )Nr   gC]r2<gs.-De8rQ   rR   )r   r
  r   )r
  rc  r@  rB  s       r?   test_pseudo_huber_small_rr
  S  s-    EAU&A &HAe,rC   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  rV   )r  warnsr\  r'   r(   r  rC   r?   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  rY   r   )r   rY   rY   )r   rY   r   rY   )r   rY   rM   rO   rY   )r   rY   r   r   rG  rY   )r   rY      r  A   r   rY   )r   rY   ?   r(  i^     r  rY   )	r   rY      i  i    i
     rY   )
r   rY      i  iZ  i'  iV
  i  $   rY   )r   rY   r   r$  i9  i  i+Y    i  r   rY   zis_exact, comp, kwargsTFrS   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 )NrY   r  )ry   r  tabler  r)   )r>   is_exactcompkwargsrg   k_valuesrows          r?   test_table_casesTestStirling2.test_table_casesx  sT    
 q#djj/*AE!A#J'H**Q-CiX>I&I +rC   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  rI   rK   r   r   r   )r)   r
  r>   r
  r
  r
  s       r?   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&ArC   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 )NrN   r  r   rK   r)   r
  s       r?   test_negative_integer#TestStirling2.test_negative_integer  sL     	Yr2X.<V<Yr1H-q;F;Yq"H-q;F;rC   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 )NrG  r   rI   r  )r
  r)   r   )r>   r
  r
  r
  anss        r?   test_array_inputsTestStirling2.test_array_inputs  s    
 zz"~a $**R."34YwBx(&1v%-/ 	 	YBx&1v%-/ 	 	YwBx( !1v%-/ 	rC   rQ   c                 @    / SQn/ SQn/ SQnU" [        XVUS9U40 UD6  g )N)r   rY   r   r   r
  r
  r
  )rN   r   r   r   rl  rG  rG  )rS  r   rK   r   r   rM   r   r  r
  r>   r
  r
  r
  r
  rg   rh   s          r?   test_mixed_valuesTestStirling2.test_mixed_values  s)     .$"Yq8,c<V<rC   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  rK   rY   N)r^   r   r   r)   r  r  )r>   rg   Krh   s       r?   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   rU   rJ   rI   Tr  l	   D,"SBXp!N l   wY)H_1e_*   r     )r   r   r)   )r>   r
  rg   rh   s       r?   test_big_numbersTestStirling2.test_big_numbers  s    ~'89:HG9Q6<<<<<:< =HH9Q6<<<<rC   r
  r  rn  y      @      ?12r
  )rq  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       r?   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)NrI   rY   rI   rI   rI   rI   r  rY   rK   r   rI   r  )r   r
  r  r  r   r
  r   r)   )r>   r
  r
  rg   rh   s        r?   !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[        R                  S9n[        / SQ[        R                  S9nU" [	        XVSS9U40 UD6  g )NrI   rY   r
  r  r
  Fr  )r   r
  r^   ulongr)   r
  s          r?   #test_numpy_array_unsigned_int_dtype1TestStirling2.test_numpy_array_unsigned_int_dtype  sS     djjmAB'(L1L1Yq5)39&9rC   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)rY   r   r   rG  )rY   rM   rO   rY   )r   r   r   r   r
  r
  r  rI   )r   rY   rK   r   rI   r   r   )r   rY   rM   rO   rY   r   F)r   r)   ry   )r>   r
  r
  r
  r
  rg   rh   r  s           r?   "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   rY   Tr  Fgh㈵>)r  ry   r)   r^   r  r  )r>   r   rg   	k_entriesdenomr{   s         r?   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	 rC   r  N)r  r  r  r  r
  r  r  r  r   r   r
  r
  r
  r
  r
  r
  r
  r^   r0  r
  r
  r
  r
  r
  r  r  rC   r?   r
  r
  i  s   	
	
A!(07@E [[5	|R 	&%18 J	J [[5	|R 	&%18 B	B [[5	|R 	&%18 <	< [[5	|R 	&%18 	 [[5	|R 	&%18 =	=	
= [[S3D$"?@[[S"56[[Z$7, 8 7 A,
 [[Z$7> 8> [[5	|R 	&%18 :	: [[5	|R 	&%18 :	:6rC   r
  r%  )r  r  r  r  r  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  numpy.testingr   r   r   r   r   scipyr   scipy.special._ufuncs_ufuncsr;   scipy.specialr   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   scipy._lib._array_apir*   r+   r,   scipy.special._basicr-   r.   r/   scipy.special._testutilsr0   r1   r2   scipy.integrater3   r  architecturer<  r  rt  r7   r  r  r#  r)  r  r  r  r  r!  ra  rq  r  r  r  r  r/  rV  rZ  rI  rg  r  r  r  rk	  r{	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r
  r
  r-
  r4
  rF
  rH
  r  r  r0  rK
  rN
  rQ
  rS
  rV
  rY
  r[
  rc
  rf
  fixturerj
  rl
  r|
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r
  r  rC   r?   <module>r     s9  "     
         *L L  & & 2 2 E E " H H S S ! !    LLGq!W, XX 
xx d9 d9NuG uGp8 8 
k- k-\	- 	-0 0<D3 D3NO/ O/dB; B;JH H:JT JTZG0 G0T)= )=X_B _BD; ;29 9@!Hj- j-ZA8 A8H@7 @7F*% *%Z]. ].@\	= \	=~? ?D8 8	; 	;$$/3 /3d - -5= 5=p- -4- -G GQ QJ J,&" &"R& &#9 #9LS1 wdCHI. J. wdCHI. J. wdCHI/ J/ wdCHI/ J/=*)
)
:4zK"  
 N NE"GB D,F$J&J,C$J
-&[6 [6rC   