
    (ph~                    *   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#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/J0r0  S SK-J1r1J2r2J3r3J4r4J5r5  S SK-J6r6  S S	K-J7r7J8r8J9r9  S S
K-J:r:J;r;J<r<  S SK=J>r>J?r?  S SK@JArAJBrBJCrC  S SKDJErEJFrFJGrG  S SKHJIrIJJrJJKrK  S SKLrL\R                  S:X  d  \R                  " 5       S    S:X  a  \R                  O\R                  rP " S S5      rQ " S S5      rR " S S5      rS " S S5      rT " S S5      rU " S S5      rV " S S5      rW " S S 5      rX " S! S"5      rY " S# S$5      rZ " S% S&5      r[ " S' S(5      r\ " S) S*5      r] " S+ S,5      r^ " S- S.5      r_ " S/ S05      r` " S1 S25      raSwS3 jrb " S4 S55      rc " S6 S75      rd " S8 S95      re " S: S;5      rf " S< S=5      rg " S> S?5      rh " S@ SA5      ri " SB SC5      rj " SD SE5      rk " SF SG5      rl " SH SI5      rm " SJ SK5      rn " SL SM5      ro " SN SO5      rp " SP SQ5      rq " SR SS5      rr " ST SU5      rs " SV SW5      rt " SX SY5      ru " SZ S[5      rvS\ rwS] rx " S^ S_5      ryS` rzSa r{Sb r|Sc r}Sd r~Se r\GR                   Sf 5       r\ISg 5       rSh rSi rSj rSk rSl rSm rSn rSo rSp rSq r\GR                  GR                  Sr 5       r " Ss St5      r " Su Sv5      rg)x    N)arrayisnanr_arangefinfopisincostanexplogzerossqrtasarrayinf
nan_to_numrealarctandoublearray_equal)raises)	assert_equalassert_almost_equalassert_array_equalassert_array_almost_equalassert_approx_equalassert_assert_allcloseassert_array_almost_equal_nulpsuppress_warnings)special)ellipeellipkellipkm1)elliprcelliprdelliprfelliprgelliprj)softplus)mathieu_odd_coefmathieu_even_coef	stirling2)lpnlpmnclpmn)np_longnp_ulong)xp_assert_closexp_assert_equalSCIPY_ARRAY_API)_FACTORIALK_LIMITS_64BITS_FACTORIALK_LIMITS_32BITS_is_subdtype)with_special_errorsassert_func_equalFuncDatawin3232bitc                   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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. r0\1Rd                  Rg                  S/S09S1 5       r4S2 r5S3 r6S4 r7\1Rd                  Rg                  S5S09S6 5       r8S7 r9S8 r:S9 r;S: r<S; r=S< r>S= r?S> r@S? rAS@ rBSA rCSB rDSC rESD rFSE rGSF rHSG rISH rJSI rKSJ rLSK rMSL rNSM rOSN rPSO rQSP rRSQ rSSR rTSS rUST rVSU rWSV rXSW rYSX rZSY r[SZ r\S[ r]S\ r^S] r_S^ r`S_ raS` rbSa rcSb rdSc reSd rfSe rgSf rhSg riSh rjSi rkSj rlSk rmSl rnSm roSn rpSo rqSp rrSq rsSr rtSs ruSt rvSu rwSv rxSw rySx rzSy r{Sz r|S{ r}S| r~S} rS~ rS rS rS rS rS r\1Rd                  Rg                  SS09S 5       r\1Rd                  Rg                  SS09S 5       r\1Rd                  Rg                  SS09S 5       rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSrg)
TestCephes?   c                 0    [         R                  " S5        g Nr   )cephesairyselfs    Q/var/www/html/venv/lib/python3.13/site-packages/scipy/special/tests/test_basic.py	test_airyTestCephes.test_airy@       A    c                 0    [         R                  " S5        g rB   )rC   airyerE   s    rG   
test_airyeTestCephes.test_airyeC   s    QrK   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
@rS   )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           ?绽|=atolr[   )npr   broadcast_arraysreshapeTr:   rC   binomravelrandomRandomStater   r   rand)rF   nknkrknownrngs         rG   
test_binomTestCephes.test_binomF   sl   HH()HH%&XXb))!AdF)QtAvY? 2qq 	 ##QF@B C 	&,,G ii##D)EE"))B#T#((2,%6%<<=IIaXXb))!AdF)QtAvY? 2qq 	 	&,, ,,r!A#w1Q390EF$5	2rK   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 )Nr\   ra   ,     r   r`   rS   rV   rb   rc   rd   )rf   rl   seedr   logspacer   r   rg   rh   ri   r:   rC   rj   )rF   ro   rp   rq   s       rG   test_binom_2TestCephes.test_binom_2]   s    
		tEE"++ab)*IIaXXb))!AdF)QtAvY? 2qq 	 	&,, ,,r!A#w1Q390EF$5	2rK   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      $ Nra   )intrangefloat)ro   rp   numdenis        rG   	binom_int.TestCephes.test_binom_exact.<locals>.binom_intk   sW    AAAACC1ac]1uqy  # >!rK   r\   ra      r   rS   rV   rd   )rf   	vectorizerl   ry   r   r   rg   rh   ri   r:   rC   rj   )rF   r   ro   rp   rq   s        rG   test_binom_exactTestCephes.test_binom_exactj   s    		" 
	" 			tIIaIIaXXb))!AdF)QtAvY? 2qq 	1Q32ac7"#&,,#BqsGR!W5 q	*rK   c                     / SQn[         R                  " U5      n[        [        R                  USSSS9R                  5         g )N))r^   r_   gwP~)i  i  gii9~)i  i  gyhY~)i  i  gpvy~)i  i  gzN~)i  i  gGTɳ~)i  i  g@jH~)i  i  gF:aYͦ~)  i  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   ra   rS   -q=rZ   )rf   r   r;   rC   rj   check)rF   datasets     rG   test_binom_nooverflow_8346%TestCephes.test_binom_nooverflow_8346   s6    
" **W%w>DDFrK   c                 H    [        [        R                  " SSS5      S5        g )Nra         ?      ?)r   rC   bdtrrE   s    rG   	test_bdtrTestCephes.test_bdtr   s    V[[1S)#.rK   c                 H    [        [        R                  " SSS5      S5        g Nra      r   )r   rC   bdtrirE   s    rG   
test_bdtriTestCephes.test_bdtri       V\\!Ac*3/rK   c                 H    [        [        R                  " SSS5      S5        g r   )r   rC   bdtrcrE   s    rG   
test_bdtrcTestCephes.test_bdtrc   r   rK   c                 H    [        [        R                  " SSS5      S5        g Nra   r         @)r   rC   bdtrinrE   s    rG   test_bdtrinTestCephes.test_bdtrin       V]]1Qq)#.rK   c                 4    [         R                  " SSS5        g r   )rC   bdtrikrE   s    rG   test_bdtrikTestCephes.test_bdtrik   s    a#rK   c                 D    [        [        R                  " S5      S5        g Nr           )r   rC   beirE   s    rG   test_beiTestCephes.test_bei       VZZ]3'rK   c                 D    [        [        R                  " S5      S5        g r   )r   rC   beiprE   s    rG   	test_beipTestCephes.test_beip       V[[^C(rK   c                 D    [        [        R                  " S5      S5        g Nr   r   )r   rC   berrE   s    rG   test_berTestCephes.test_ber   r   rK   c                 D    [        [        R                  " S5      S5        g r   )r   rC   berprE   s    rG   	test_berpTestCephes.test_berp   r   rK   c                 H    [        [        R                  " SSS5      S5        g r   )r   rC   
besselpolyrE   s    rG   test_besselpolyTestCephes.test_besselpoly   s    V&&q1-c2rK   c                 H    [        [        R                  " SSS5      S5        g Nra   r   )r   rC   btdtriarE   s    rG   test_btdtriaTestCephes.test_btdtria       V^^Aa*3/rK   c                 H    [        [        R                  " SSS5      S5        g r   )r   rC   btdtribrE   s    rG   test_btdtribTestCephes.test_btdtrib   r   rK   c                 D    [        [        R                  " S5      S5        g Nra   r   )r   rC   cbrtrE   s    rG   	test_cbrtTestCephes.test_cbrt   s    FKKN3/rK   c                 F    [        [        R                  " SS5      S5        g Nra   r   r   )r   rC   chdtrrE   s    rG   
test_chdtrTestCephes.test_chdtr   s    V\\!A&s+rK   c                 F    [        [        R                  " SS5      S5        g Nra   r   r   )r   rC   chdtrcrE   s    rG   test_chdtrcTestCephes.test_chdtrc       V]]1Q',rK   c                 F    [        [        R                  " SS5      S5        g Nra   r   )r   rC   chdtrirE   s    rG   test_chdtriTestCephes.test_chdtri   r   rK   c                 F    [        [        R                  " SS5      S5        g )Nr   r   )r   rC   chdtrivrE   s    rG   test_chdtrivTestCephes.test_chdtriv   s    V^^Aa(-rK   c                    [        [        R                  " SSS5      S5        [        R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ S	Q/ S
Q/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[        R                  " US S 2S4   US S 2S4   US S 2S4   5      n[        X!S S 2S4   SS9  [        [        R                  " [        R                  [        R                  S5      S5        [        [        R                  " SS[        R                  5      S5        [        [        R                  " [        R                  " [        R                  SS5      5      5        [        [        R                  " [        R                  " S[        R                  S5      5      5        [        [        R                  " [        R                  " SS[        R                  5      5      5        g )Nr   ra   r   )      9@      4@  gL94)r          @   g7Fh9)gMbP?r         D@ggåc;){Gz?r   r   g	;)r          @k   g8x@x>)g     6@r   r   gg1\>>)r   r   r   g`>)      @r   r   gp!P?)g     u@g     r@      $@g j
?)      Y@      +@r   g]?)g     @r   r   g4ۙ?)g     b@r   r   g?)g      d@r   r   r   rS   r   r   rZ   r      )r   rC   chndtrrf   r   r   r   r   r   r   nan)rF   valuescdfs      rG   test_chndtrTestCephes.test_chndtr   s3   V]]1Qq)#.
 999:999666666
  mmF1a4L&A,q!tEAqD\6FMM"&&"&&!<cBFMM!Q7=rvvq!456q"&&!456q!RVV456rK   c                 H    [        [        R                  " SSS5      S5        g Nr   ra   r   )r   rC   	chndtridfrE   s    rG   test_chndtridfTestCephes.test_chndtridf       V%%a!,S1rK   c                 H    [        [        R                  " SSS5      S5        g r  )r   rC   	chndtrincrE   s    rG   test_chndtrincTestCephes.test_chndtrinc   r  rK   c                 H    [        [        R                  " SSS5      S5        g Nr   ra   r   )r   rC   chndtrixrE   s    rG   test_chndtrixTestCephes.test_chndtrix       V__Qq+C0rK   c                 D    [        [        R                  " S5      S5        g r   )r   rC   cosdgrE   s    rG   
test_cosdgTestCephes.test_cosdg       V\\!_S)rK   c                 D    [        [        R                  " S5      S5        g r   )r   rC   cosm1rE   s    rG   
test_cosm1TestCephes.test_cosm1   r  rK   c                 D    [        [        R                  " S5      S5        g N-   r   )r   rC   cotdgrE   s    rG   
test_cotdgTestCephes.test_cotdg   s    FLL,S1rK   c                     [        [        R                  " S5      S5        [        [        R                  " S5      S5        g )Nr   r   gGz?gf?)r   rC   dawsnr   rE   s    rG   
test_dawsnTestCephes.test_dawsn   s(    V\\!_S)T*,?@rK   c                    / SQn[         R                  " S[         R                  -  S-   5      R                  [         R                  5      n[        [        R                  " X!5      SSS9  [         R                  " S[         R                  -  S-   5      R                  [         R                  5      n[        [        R                  " X!5      SSS9  [         R                  " S[         R                  -  S	-   5      R                  [         R                  5      n[        [        R                  " X!5      SSS9  [        [         S
5      (       af  [         R                  " S[         R                  -  S-   5      R                  [         R                  5      n[        [        R                  " X!5      SSS9  / SQn[         R                  " S[         R                  -  S-   5      R                  [         R                  5      n[        [        R                  " X#5      SSS9  [         R                  " S[         R                  -  S[         R                  -  S[         R                  -  5      n/ SQn[        [        R                  " US5      USS9  g )N)ra   r      rS   g-C6
?r   rU   decimal&.>r   V瞯<float128r      )rS   rQ            皙?)gg?gsOB?gsaL?g
7I^ʿr   )rf   r   r   astypefloat32r   r!   diricfloat64hasattrr*  r   )rF   n_oddxn_evenoctave_results        rG   
test_diricTestCephes.test_diric   s    HHQruuWt^$++BJJ7GMM!3S!DHHQruuWt^$++BJJ7GMM!3S"EHHQruuWu_%,,RZZ8GMM!3S"E2z""2555)00=Aa 7bIHHQruuWt^$++BJJ7GMM!4dBG IIc"%%iRUUCI6@GMM!Q/KrK   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   )ra   r   rU   )	rf   r   r   r   r!   r1  newaxisshapesize)rF   r5  ro   s      rG   test_diric_broadcasting"TestCephes.test_diric_broadcasting  sU    IIaLHHYa2::.288QVVQVV<LLMrK   c                 D    [        [        R                  " S5      S5        g r   )r   rC   r"   rE   s    rG   test_ellipeTestCephes.test_ellipe      V]]1%c*rK   c                 F    [        [        R                  " SS5      S5        g r  )r   rC   	ellipeincrE   s    rG   test_ellipeincTestCephes.test_ellipeinc      V%%a*3/rK   c                 2    [         R                  " SS5        g Nr   ra   )rC   ellipjrE   s    rG   test_ellipjTestCephes.test_ellipj"  s    arK   c                 <    [        [        S5      [        S-  5        g )Nr   rS   )r   r#   r   rE   s    rG   test_ellipkTestCephes.test_ellipk%  s    q	2a4(rK   c                 F    [        [        R                  " SS5      S5        g r   )r   rC   	ellipkincrE   s    rG   test_ellipkincTestCephes.test_ellipkinc(  rH  rK   c                 D    [        [        R                  " S5      S5        g r   r   rC   erfrE   s    rG   test_erfTestCephes.test_erf+  s    VZZ]C(rK   c                 x    Sn[        [        R                  " U5      [        R                  " U* 5      -   S5        g )Ng#8x@r   rV  rF   r5  s     rG   test_erf_symmetryTestCephes.test_erf_symmetry.  s(    VZZ]VZZ^3S9rK   c                 D    [        [        R                  " S5      S5        g r   )r   rC   erfcrE   s    rG   	test_erfcTestCephes.test_erfc2  s    V[[^S)rK   c                 D    [        [        R                  " S5      S5        g )NrS   r   )r   rC   exp10rE   s    rG   
test_exp10TestCephes.test_exp105  s    FLLOE2rK   c                 D    [        [        R                  " S5      S5        g )NrS         @)r   rC   exp2rE   s    rG   	test_exp2TestCephes.test_exp28  r   rK   c                    [        [        R                  " S5      S5        [        [        R                  " [        R                  5      [        R                  5        [        [        R                  " [        R                  * 5      S5        [        [        R                  " [        R
                  5      [        R
                  5        g )Nr   r   rV   )r   rC   expm1rf   r   r   rE   s    rG   
test_expm1TestCephes.test_expm1;  sc    V\\!_S)V\\"&&)2662V\\266'*B/V\\"&&)2662rK   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   ra   rS   rQ   r   rV   )rC   rl  r   complexrf   r   r   )rF   rl  s     rG   test_expm1_complexTestCephes.test_expm1_complexA  s   U6]F+U72661-.0BCU72661-.0GHU72661-.0HIU72661-."&&0IJU72661-.0HIU71bff-.0GHU71bff-.0GHU726626623WRVVRVV5LMU7BFF7BFF34gb!nEU7BFF7BFF34gb!nEU726626623WRVVRVV5LMU71bff-.0GHU71bff-.0GHU72661-.0GHU726626623WRVVRVV5LMrK   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      rx                 ?)y=Cw?yC7gg)gF<Ug?yQ<D*?yg:><sKy>񸣼$	Um>ly;Vl <@r   rx   )	rf   r   r   r
   rC   rl  r   imagr   )rF   yr5  zexpectedfounds         rG   test_expm1_complex_hard"TestCephes.test_expm1_complex_hardT  s     HH/0VVBFF1I1H 88 J K Q&uzz8==!D&uzz8=="ErK   c                     [        [        R                  " SSS5      S5        [        [        R                  " SSS5      SSS	9  g )
Nra   r   r   ư>r   
   g2?r   rZ   )r   rC   fdtrr   rE   s    rG   	test_fdtrTestCephes.test_fdtri  s6    V[[Aq)3/D!R02D"	$rK   c                     [        [        R                  " SSS5      S5        [        [        R                  " SSS5      SSS	9  g )
Nra   r   r   rS   rw  g    _BgDIXl?r   rZ   )r   rC   fdtrcr   rE   s    rG   
test_fdtrcTestCephes.test_fdtrco  s8    V\\!Q*C0 	QT24G"	$rK   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 )Nra   gV-?gx&1?g
}?g<zO'?r  rZ   g׀?rw  r   r   )r   rC   fdtrir   )rF   ps     rG   
test_fdtriTestCephes.test_fdtriv  sM    QE5>:y*56T	C %S!Q/?rK   zReturns nan on i686.c                 H    [        [        R                  " SSS5      S5        g )Nra   r   )r   rC   r  rE   s    rG   test_fdtri_mysterious_failure(TestCephes.test_fdtri_mysterious_failure~  s    Q3/3rK   c                 H    [        [        R                  " SSS5      S5        g r   )r   rC   fdtridfdrE   s    rG   test_fdtridfdTestCephes.test_fdtridfd  r  rK   c                 D    [        [        R                  " S5      S5        g Nr   r   r   )r   rC   fresnelrE   s    rG   test_fresnelTestCephes.test_fresnel  s    V^^A&y1rK   c                 D    [        [        R                  " S5      S5        g Nr         8@)r   rC   gammarE   s    rG   
test_gammaTestCephes.test_gamma  s    V\\!_T*rK   c                 F    [        [        R                  " SS5      S5        g )Nr   ra   r   )r   rC   gammainccinvrE   s    rG   test_gammainccinvTestCephes.test_gammainccinv  s    V((1-c2rK   c                 0    [         R                  " S5        g )Nr  )rC   gammalnrE   s    rG   test_gammalnTestCephes.test_gammaln  s    rrK   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   ra   g@r   r-  )rf   r   r   r2  r   r   rC   gammasgn)rF   vals	references      rG   test_gammasgnTestCephes.test_gammasgn  s    xxffWb$dCC@"**
 HHVVRVVS$c3SA2::
	 	6??40)<rK   c                 H    [        [        R                  " SSS5      S5        g r   )r   rC   gdtrrE   s    rG   	test_gdtrTestCephes.test_gdtr      V[[1Q',rK   c                 d    [        [        R                  " SS[        R                  5      S5        g r   )r   rC   r  rf   r   rE   s    rG   test_gdtr_infTestCephes.test_gdtr_inf  s    V[[1RVV,S1rK   c                 H    [        [        R                  " SSS5      S5        g r   )r   rC   gdtrcrE   s    rG   
test_gdtrcTestCephes.test_gdtrc      V\\!Aa(-rK   c                 H    [        [        R                  " SSS5      S5        g r  )r   rC   gdtriarE   s    rG   test_gdtriaTestCephes.test_gdtria  r   rK   c                 4    [         R                  " SSS5        g Nra   r   )rC   gdtribrE   s    rG   test_gdtribTestCephes.test_gdtrib  s    a!rK   c                 4    [         R                  " SSS5        g Nra   rw  )rC   gdtrixrE   s    rG   test_gdtrixTestCephes.test_gdtrix  s    a"rK   c                 2    [         R                  " SS5        g r   )rC   hankel1rE   s    rG   test_hankel1TestCephes.test_hankel1      qrK   c                 2    [         R                  " SS5        g r   )rC   hankel1erE   s    rG   test_hankel1eTestCephes.test_hankel1e      !rK   c                 2    [         R                  " SS5        g r   )rC   hankel2rE   s    rG   test_hankel2TestCephes.test_hankel2  r  rK   c                 2    [         R                  " SS5        g r   )rC   hankel2erE   s    rG   test_hankel2eTestCephes.test_hankel2e  r  rK   c                     [        [        R                  " SSS5      [        S5      5        [        [        R                  " SSS5      S5        [        R                  " SSS5        g )Nra   r   r   rQ   g㈮?)r   rC   hyp1f1r   rE   s    rG   test_hyp1f1TestCephes.test_hyp1f1  sE    FMM!Aa0#c(;FMM!Ab13JKa!rK   c                 J    [        [        R                  " SSSS5      S5        g r   )r   rC   hyp2f1rE   s    rG   test_hyp2f1TestCephes.test_hyp2f1      V]]1Qq+C0rK   c                 D    [        [        R                  " S5      S5        g r   )r   rC   i0rE   s    rG   test_i0TestCephes.test_i0      VYYq\#&rK   c                 D    [        [        R                  " S5      S5        g r   )r   rC   i0erE   s    rG   test_i0eTestCephes.test_i0e  r   rK   c                 D    [        [        R                  " S5      S5        g r   )r   rC   i1rE   s    rG   test_i1TestCephes.test_i1  r  rK   c                 D    [        [        R                  " S5      S5        g r   )r   rC   i1erE   s    rG   test_i1eTestCephes.test_i1e  r   rK   c                 0    [         R                  " S5        g r   )rC   it2i0k0rE   s    rG   test_it2i0k0TestCephes.test_it2i0k0      qrK   c                 0    [         R                  " S5        g r   )rC   it2j0y0rE   s    rG   test_it2j0y0TestCephes.test_it2j0y0  r  rK   c                 0    [         R                  " S5        g r   )rC   
it2struve0rE   s    rG   test_it2struve0TestCephes.test_it2struve0  s    !rK   c                 0    [         R                  " S5        g r   )rC   itairyrE   s    rG   test_itairyTestCephes.test_itairy      arK   c                 D    [        [        R                  " S5      S5        g r  )r   rC   iti0k0rE   s    rG   test_iti0k0TestCephes.test_iti0k0      V]]1%i0rK   c                 D    [        [        R                  " S5      S5        g r  )r   rC   itj0y0rE   s    rG   test_itj0y0TestCephes.test_itj0y0  r  rK   c                 D    [        [        R                  " S5      S5        g r   )r   rC   itmodstruve0rE   s    rG   test_itmodstruve0TestCephes.test_itmodstruve0  s    V((+C0rK   c                 D    [        [        R                  " S5      S5        g r   )r   rC   	itstruve0rE   s    rG   test_itstruve0TestCephes.test_itstruve0  s    V%%a(-rK   c                 F    [        [        R                  " SS5      S5        g r   )r   rC   ivrE   s    rG   test_ivTestCephes.test_iv      VYYq^C(rK   c                 F    [        [        R                  " SS5      S5        g r   )r   rC   iverE   s    rG   test_iveTestCephes.test_ive      VZZ!_S)rK   c                 D    [        [        R                  " S5      S5        g r   )r   rC   j0rE   s    rG   test_j0TestCephes.test_j0  r  rK   c                 D    [        [        R                  " S5      S5        g r   )r   rC   j1rE   s    rG   test_j1TestCephes.test_j1  r  rK   c                 F    [        [        R                  " SS5      S5        g r   )r   rC   jnrE   s    rG   test_jnTestCephes.test_jn  r$  rK   c                 F    [        [        R                  " SS5      S5        g r   )r   rC   jvrE   s    rG   test_jvTestCephes.test_jv  r$  rK   c                 F    [        [        R                  " SS5      S5        g r   )r   rC   jverE   s    rG   test_jveTestCephes.test_jve  r)  rK   c                 0    [         R                  " S5        g NrS   )rC   k0rE   s    rG   test_k0TestCephes.test_k0      		!rK   c                 0    [         R                  " S5        g r?  )rC   k0erE   s    rG   test_k0eTestCephes.test_k0e      

1rK   c                 0    [         R                  " S5        g r?  )rC   k1rE   s    rG   test_k1TestCephes.test_k1   rC  rK   c                 0    [         R                  " S5        g r?  )rC   k1erE   s    rG   test_k1eTestCephes.test_k1e  rH  rK   c                 0    [         R                  " S5        g r?  )rC   keirE   s    rG   test_keiTestCephes.test_kei  rH  rK   c                 D    [        [        R                  " S5      S5        g r   )r   rC   keiprE   s    rG   	test_keipTestCephes.test_keip	  r   rK   c                 0    [         R                  " S5        g r?  )rC   kerrE   s    rG   test_kerTestCephes.test_ker  rH  rK   c                 0    [         R                  " S5        g r?  )rC   kerprE   s    rG   	test_kerpTestCephes.test_kerp  rJ   rK   c                 0    [         R                  " S5        g r?  )rC   kelvinrE   s    rG   test_kelvinTestCephes.test_kelvin  r  rK   c                 2    [         R                  " SS5        g r   )rC   knrE   s    rG   test_knTestCephes.test_kn      		!ArK   c                     [        [        R                  " S5      S5        [        [        R
                  " [        R                  " [        R                  5      5      5        g r   )r   rC   kolmogir   rf   r   r   rE   s    rG   test_kolmogiTestCephes.test_kolmogi  s3    V^^A&s+/01rK   c                 D    [        [        R                  " S5      S5        g r   )r   rC   
kolmogorovrE   s    rG   test_kolmogorovTestCephes.test_kolmogorov  s    V&&q)3/rK   c                 D    [        [        R                  " S5      S5        g )Nr   r  )r   rC   _kolmogprE   s    rG   test_kolmogpTestCephes.test_kolmogp  s    V__Q'.rK   c                 D    [        [        R                  " S5      S5        g r   )r   rC   _kolmogcrE   s    rG   test_kolmogcTestCephes.test_kolmogc"  s    V__Q'-rK   c                     [        [        R                  " S5      S5        [        [        R
                  " [        R                  " [        R                  5      5      5        g r   )r   rC   	_kolmogcir   rf   r   r   rE   s    rG   test_kolmogciTestCephes.test_kolmogci%  s7    V%%a(#.))"&&123rK   c                 2    [         R                  " SS5        g r   )rC   kvrE   s    rG   test_kvTestCephes.test_kv)  ri  rK   c                 2    [         R                  " SS5        g r   )rC   kverE   s    rG   test_kveTestCephes.test_kve,      

1QrK   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   rV   )rC   log1pr   rf   r   r   )rF   r  s     rG   
test_log1pTestCephes.test_log1p/  sU    U1Xs#U2Y(U2Y'U266]BFF+rK   c           	      ,   [         R                  n[        n[        U" S5      S5        [        U" U" SS5      5      U" [        R
                  * S5      5        [        5        nUR                  [        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)	Nrp  rV   r   z%invalid value encountered in multiplyra   rS   r   rQ   )rC   r  rq  r   rf   r   r    filterRuntimeWarningr   r   r   )rF   r  csups       rG   test_log1p_complexTestCephes.test_log1p_complex6  sH   U6]F+U1R8_am4 CJJ~'NOE!Arvv,/26625571CDqBFF|,a.?@E!RVVGQ-0!BFFBEE2BCq|,al;E!RVVGRVV"45q2557KLE!BFFBFF"34aa6HIq011RVVRVV3DEq"&&"&&12Abffbff4EFq011RVVRVV3DEq|,a.?@q011RVVRVV3DE !  s   "NP
Pc                 H    [        [        R                  " SSS5      S5        g )Nr   ra   r   )r   rC   lpmvrE   s    rG   	test_lpmvTestCephes.test_lpmvI  r  rK   c                 F    [        [        R                  " SS5      S5        g r   )r   rC   	mathieu_arE   s    rG   test_mathieu_aTestCephes.test_mathieu_aL  rH  rK   c                 F    [        [        R                  " SS5      S5        g r   )r   rC   	mathieu_brE   s    rG   test_mathieu_bTestCephes.test_mathieu_bO  rH  rK   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 )Nra   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?ra   r   rS      r   rQ            ?)rf   r   r
   mqr}  s      rG   	ce_smallq.TestCephes.test_mathieu_cem.<locals>.ce_smallqV  s    sNAAv A1S1X$566a1v!c!A#h..a1Q3x!S1Xb[3%6"777 13x!S!A#q\1ac7%;c1Q3'lAqQRsG>T%T"UUUrK   d   r  rh|?+=r[   re   )	r   rC   mathieu_cemrf   r   r   r   rz   r   )rF   r  r  r  s       rG   test_mathieu_cemTestCephes.test_mathieu_cemR  s    V''!A.y9 
	V 
	V IIaEE!R[[b"--.**1QtV9aQiGJ!!AdF)QtAvY>"	,rK   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 )Nra   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  ra   r  r   rS   rQ   r  )rf   r   r	   r  s      rG   	se_smallq.TestCephes.test_mathieu_sem.<locals>.se_smallqo  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UrK   r  r  r  r  r  r  r  )	r   rC   mathieu_semrf   r   r   r   rz   r   )rF   r  r  r  s       rG   test_mathieu_semTestCephes.test_mathieu_semk  s    V''!A.y9 

	V 

	V IIaEE!R[[b"--.**1QtV9aQiGJ!!AdF)QtAvY>"	,rK   c                 H    [        [        R                  " SSS5      S5        g Nra   r   r  )r   rC   mathieu_modcem1rE   s    rG   test_mathieu_modcem1TestCephes.test_mathieu_modcem1      V++Aa29=rK   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 )
Nra   r   rQ   r  rS   r  rU   rc   rZ   )	rC   mathieu_modcem2rf   r   r   rz   linspacer  r   rF   r  r  r}  y1fry2s          rG   test_mathieu_modcem2TestCephes.test_mathieu_modcem2  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+rK   c                 H    [        [        R                  " SSS5      S5        g r  )r   rC   mathieu_modsem1rE   s    rG   test_mathieu_modsem1TestCephes.test_mathieu_modsem1  r  rK   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 )
Nra   rQ   r  rS   r  r   rU   rc   rZ   )	rC   mathieu_modsem2rf   r   r   rz   r  r  r   r  s          rG   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+rK   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?      ?)
r   rC   r  rf   r   r  r  r  r  r  rE   s    rG   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OrK   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<   rS   r  rV   r   g.dS?rc   rZ   ra   gGc?-C6?)r   rC   r  r   )rF   rp   vs      rG   test_mathieu_ticket_1847#TestCephes.test_mathieu_ticket_1847  sH     rA&&q#r2AAaD":GAaD":F	 rK   c                 0    [         R                  " S5        g rB   )rC   modfresnelmrE   s    rG   test_modfresnelmTestCephes.test_modfresnelm      1rK   c                 0    [         R                  " S5        g rB   )rC   modfresnelprE   s    rG   test_modfresnelpTestCephes.test_modfresnelp  r  rK   c                 F    [        [        R                  " SS5      S5        g r   )r   rC   	modstruverE   s    rG   test_modstruveTestCephes.test_modstruve  rH  rK   c                 H    [        [        R                  " SSS5      S5        g r   )r   rC   nbdtrrE   s    rG   
test_nbdtrTestCephes.test_nbdtr  r  rK   c                 H    [        [        R                  " SSS5      S5        g r   )r   rC   nbdtrcrE   s    rG   test_nbdtrcTestCephes.test_nbdtrc  r   rK   c                 H    [        [        R                  " SSS5      S5        g r   )r   rC   nbdtrirE   s    rG   test_nbdtriTestCephes.test_nbdtri  r   rK   c                 4    [         R                  " SSS5        g )Nra   rT   r   )rC   nbdtrikrE   s    rG   test_nbdtrikTestCephes.test_nbdtrik  s    qBrK   c                 H    [        [        R                  " SSS5      S5        g r   )r   rC   nbdtrinrE   s    rG   test_nbdtrinTestCephes.test_nbdtrin  r   rK   c                 J    [        [        R                  " SSSS5      S5        g r   )r   rC   ncfdtrrE   s    rG   test_ncfdtrTestCephes.test_ncfdtr  r  rK   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 )Nra   r   r   )r   ra   r  rS   r   r  )r   rC   ncfdtrir   r   )rF   fr  s      rG   test_ncfdtriTestCephes.test_ncfdtri  sM    V^^Aq!Q/5MM!QQ'q!S!4a8rK   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ra   rS   r   rS   r  r   )rC   r   r   
ncfdtridfd)rF   dfdr  s      rG   test_ncfdtridfdTestCephes.test_ncfdtridfd  s8     MM!S$+))!Qb93?rK   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)rw  ra   rS   r   g     @rS   r  r   gh㈵>rZ   )rC   r   r   
ncfdtridfn)rF   dfnr  s      rG   test_ncfdtridfnTestCephes.test_ncfdtridfn  s:     "MM#q$+))!Qb93TJrK   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   r  r   rS   r   r   )rC   r   r   	ncfdtrinc)rF   ncr  s      rG   test_ncfdtrincTestCephes.test_ncfdtrinc  s8     MM!QB'((Aq"5r:rK   c           	      f   [        [        R                  " SSS5      S5        [        [        R                  " SSS5      S5        [        [        R                  " [        R
                  SS5      SS	5        [        [        R                  " [        R                  " S
[        R
                  S5      5      5        [        [        R                  " S
S[        R
                  5      S5        [        [        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 )Nra   r   r   	   i   r  r   r   r   r   r   )	r   rC   nctdtrr   rf   r   r   r   r   rE   s    rG   test_nctdtrTestCephes.test_nctdtr  s    V]]1Qq)#.V]]1eR0#6FMM"&&"b93Br2663789FMM"b"&&92>rvvr2678r2662678r2rvv678rK   c                 4    [         R                  " SSS5        g )Nra   r   r   )rC   	nctdtridfrE   s    rG   test_nctdtridfTestCephes.test_nctdtridf  s    3q!rK   c                 4    [         R                  " SSS5        g r  )rC   	nctdtrincrE   s    rG   test_nctdtrincTestCephes.test_nctdtrinc
  s    1QrK   c                 4    [         R                  " SSS5        g )Nrw  r.  r   )rC   nctdtritrE   s    rG   test_nctdtritTestCephes.test_nctdtrit  s    3r"rK   c                 H    [        [        R                  " SSS5      S5        g )Nr   ra   r   )r   rC   nrdtrimnrE   s    rG   test_nrdtrimnTestCephes.test_nrdtrimn  s    FOOC!4S9rK   c                 H    [        [        R                  " SSS5      SSSS9  g )Nr   r   r   rd   )r   rC   nrdtrisdrE   s    rG   test_nrdtrisdTestCephes.test_nrdtrisd  s     C4ca	)rK   c                 6    [         R                  " SSSS5        g r  )rC   obl_ang1rE   s    rG   test_obl_ang1TestCephes.test_obl_ang1      !Aa rK   c                 t    [         R                  " SSSSS5      n[        US   S5        [        US   S5        g )Nra   r   r   r   )rC   obl_ang1_cvr   )rF   results     rG   test_obl_ang1_cvTestCephes.test_obl_ang1_cv  s6    ##Aa!A.F1Ic*F1Ic*rK   c                 H    [        [        R                  " SSS5      S5        g Nra   r   r   )r   rC   obl_cvrE   s    rG   test_obl_cvTestCephes.test_obl_cv  r   rK   c                 6    [         R                  " SSSS5        g r  )rC   obl_rad1rE   s    rG   test_obl_rad1TestCephes.test_obl_rad1"  r5  rK   c                 8    [         R                  " SSSSS5        g r  )rC   obl_rad1_cvrE   s    rG   test_obl_rad1_cvTestCephes.test_obl_rad1_cv%      1Qq1%rK   c                 6    [         R                  " SSSS5        g r  )rC   obl_rad2rE   s    rG   test_obl_rad2TestCephes.test_obl_rad2(  r5  rK   c                 8    [         R                  " SSSSS5        g r  )rC   obl_rad2_cvrE   s    rG   test_obl_rad2_cvTestCephes.test_obl_rad2_cv+  rH  rK   c                 F    [        [        R                  " SS5      S5        g )Nra   r   r  )r   rC   pbdvrE   s    rG   	test_pbdvTestCephes.test_pbdv.  s    V[[1%i0rK   c                 2    [         R                  " SS5        g r  )rC   pbvvrE   s    rG   	test_pbvvTestCephes.test_pbvv1      AarK   c                 2    [         R                  " SS5        g r  )rC   pbwarE   s    rG   	test_pbwaTestCephes.test_pbwa4  rY  rK   c                     [         R                  " SS5      n[        U[        R                  " S5      5        [         R                  " / SQS5      n[        U/ SQ5        g )Nr   ra   rV   r   ra   rS   )ra   ra   ra   )rC   pdtrr   rf   r   r   rF   vals     rG   	test_pdtrTestCephes.test_pdtr7  s>    kk!QC,kk)Q'3	*rK   c                     [         R                  " SS5      n[        US[        R                  " S5      -
  5        [         R                  " / SQS5      n[        U/ SQ5        g )Nr   ra   rV   r_  r   )r   r   r   )rC   pdtrcr   rf   r   r   ra  s     rG   
test_pdtrcTestCephes.test_pdtrc>  sB    ll1a CRVVBZ0ll9c*3	*rK   c                     [        5        nUR                  [        S5        [        R                  " SS5        S S S 5        g ! , (       d  f       g = f)N-floating point number truncated to an integerr   )r    r  r  rC   pdtri)rF   r  s     rG   
test_pdtriTestCephes.test_pdtriE  s3     CJJ~'VWLLS! !  s   .A
Ac                     [         R                  " SS5      n[        [         R                  " US-   S5      S5        [         R                  " S/S/S/// SQ5      n[	        U[
        R                  " S5      5        g )Nr   ra   r   r  ffffff?)r   #B;r  )r   r   )rC   pdtrikr   	gammainccr   rf   r   )rF   rp   s     rG   test_pdtrikTestCephes.test_pdtrikJ  s^    MM#q!F,,QUA6<MMA3/1AB1bhhv./rK   c                 6    [         R                  " SSSS5        g r  )rC   pro_ang1rE   s    rG   test_pro_ang1TestCephes.test_pro_ang1Q  r5  rK   c           	      ^    [        [        R                  " SSSSS5      [        S5      5        g )Nra   r   r  )r   rC   pro_ang1_cvr   rE   s    rG   test_pro_ang1_cvTestCephes.test_pro_ang1_cvT  s'    !&"4"4Qq1Q"?"'	"2	4rK   c                 H    [        [        R                  " SSS5      S5        g r<  )r   rC   pro_cvrE   s    rG   test_pro_cvTestCephes.test_pro_cvX  r   rK   c                 6    [         R                  " SSSS5        g r  )rC   pro_rad1rE   s    rG   test_pro_rad1TestCephes.test_pro_rad1[  s    !Ac"rK   c                 8    [         R                  " SSSSS5        g r  )rC   pro_rad1_cvrE   s    rG   test_pro_rad1_cvTestCephes.test_pro_rad1_cv^  rH  rK   c                 6    [         R                  " SSSS5        g r  )rC   pro_rad2rE   s    rG   test_pro_rad2TestCephes.test_pro_rad2a  r5  rK   c                 8    [         R                  " SSSSS5        g r  )rC   pro_rad2_cvrE   s    rG   test_pro_rad2_cvTestCephes.test_pro_rad2_cvd  rH  rK   c                 0    [         R                  " S5        g r   )rC   psirE   s    rG   test_psiTestCephes.test_psig  rH  rK   c                 H    [        [        R                  " SSS5      S5        g rB   )r   rC   radianrE   s    rG   test_radianTestCephes.test_radianj  s    V]]1Qq)!,rK   c                 D    [        [        R                  " S5      S5        g r   )r   rC   rgammarE   s    rG   test_rgammaTestCephes.test_rgammam  rC  rK   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@r   333333      g@rg  gg            @r  )r   rC   roundrE   s    rG   
test_roundTestCephes.test_roundp  st    V\\#&s+V\\$'-V\\#&s+V\\$'-V\\#&s+V\\$'-rK   c                 0    [         R                  " S5        g r   )rC   shichirE   s    rG   test_shichiTestCephes.test_shichix  r  rK   c                    [         R                  " S5        [         R                  " [        R                  5      u  p[	        U[        R
                  S-  5        [	        US5        [         R                  " [        R                  * 5      u  p[	        U[        R
                  * S-  5        [        [        R                  " U5      S5        g )Nra   r   r   z cosine integral(-inf) is not nan)rC   sicirf   r   r   r   r   r   )rF   sr  s      rG   	test_siciTestCephes.test_sici{  sz    A{{266"Aruus{+Aq!{{BFF7#Av|,?@rK   c                 D    [        [        R                  " S5      S5        g NZ   r   )r   rC   sindgrE   s    rG   
test_sindgTestCephes.test_sindg      V\\"%c*rK   c                     [        [        R                  " SS5      S5        [        [        R
                  " [        R                  " S[        R                  5      5      5        g )Nra   rw  ?)r   rC   smirnovr   rf   r   r   rE   s    rG   test_smirnovTestCephes.test_smirnov  s7    V^^Ab)#."&&123rK   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 )	Nra   rw  rV   rS         ?      r   g      ȿ)r   rC   	_smirnovpr   rf   r   r   rE   s    rG   test_smirnovpTestCephes.test_smirnovp  sk    V%%a,b1V%%a.0@AV%%a.0@A))!RVV456rK   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      -
  5        [        R                  " SSSSS9n[        [        R                  " S	U5      S[        R                  " S	U5      -
  5        g )
Nra   rw  r   ry  Tendpointr   r   rQ   )
r   rC   	_smirnovcr   rf   r   r   r  r   r  )rF   x10x4s      rG   test_smirnovcTestCephes.test_smirnovc  s    V%%a+C0))!BFF345kk!QT2F,,Q4aq#8N6NO[[Aq40F,,Q3Qv~~a7L5LMrK   c           	      `   [        [        R                  " S[        R                  " SS5      5      S5        [        [        R                  " S[        R                  " SS5      5      S5        [	        [
        R                  " [        R                  " S[
        R                  5      5      5        g Nra   rT   333333?)r   rC   r  smirnovir   rf   r   r   rE   s    rG   test_smirnoviTestCephes.test_smirnovi  sb    FNN1V__Qs-CDSIFNN1V__Qs-CDSI266234rK   c           	      `   [        [        R                  " S[        R                  " SS5      5      S5        [        [        R                  " S[        R                  " SS5      5      S5        [	        [
        R                  " [        R                  " S[
        R                  5      5      5        g r  )r   rC   r  
_smirnovcir   rf   r   r   rE   s    rG   test_smirnovciTestCephes.test_smirnovci  sl    F,,Qv/@/@3/GHMF,,Qv/@/@3/GHM**1RVV456rK   c                 D    [        [        R                  " S5      S5        g r   )r   rC   spencerE   s    rG   test_spenceTestCephes.test_spence  rC  rK   c                     [        [        R                  " SS5      S5        [        [        R                  " SS5      S5        [        [        R                  " SS5      S5        g )Nra   r   r   r  rS   gMoF?)r   rC   stdtrr   rE   s    rG   
test_stdtrTestCephes.test_stdtr  sA    V\\!A&s+FLL1-t4FLL1-~>rK   c                 2    [         R                  " SS5        g )Nffffff?ra   )rC   stdtridfrE   s    rG   test_stdtridfTestCephes.test_stdtridf  s    ArK   c                 2    [         R                  " SS5        g )Nra   r  )rC   stdtritrE   s    rG   test_stdtritTestCephes.test_stdtrit  s    qrK   c                 F    [        [        R                  " SS5      S5        g r   )r   rC   struverE   s    rG   test_struveTestCephes.test_struve  r   rK   c                 D    [        [        R                  " S5      S5        g r  )r   rC   tandgrE   s    rG   
test_tandgTestCephes.test_tandg  r  rK   c                 F    [        [        R                  " SS5      S5        g r   )r   rC   tklmbdarE   s    rG   test_tklmbdaTestCephes.test_tklmbda  s    FNN1Q/4rK   c                 0    [         R                  " S5        g r   )rC   y0rE   s    rG   test_y0TestCephes.test_y0  rC  rK   c                 0    [         R                  " S5        g r   )rC   r  rE   s    rG   test_y1TestCephes.test_y1  rC  rK   c                 2    [         R                  " SS5        g r   )rC   ynrE   s    rG   test_ynTestCephes.test_yn  ri  rK   c                 2    [         R                  " SS5        g r   )rC   yvrE   s    rG   test_yvTestCephes.test_yv  ri  rK   c                 2    [         R                  " SS5        g r   )rC   yverE   s    rG   test_yveTestCephes.test_yve  r  rK   c                    [        SS5      [        SS5      [        SS5      [        SS5      [        SS	5      [        SS
5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      [        SS5      /n[        SS5      [        SS 5      [        S!S"5      [        S#S$5      [        S%S&5      [        S'S(5      [        S)S*5      [        S+S,5      [        S-S.5      [        S/S5      [        S0S15      [        S2S35      [        S4S55      [        S6S75      [        S8S95      [        S:S:5      /n[        [        R                  X!S;S<9  g )=Ng@g+п皙ٿr   r  r   r-  r   g      "g      "@g4׵/Yg8EGr?r  gffffff@ig>@r   g|Pk?ry  ra   ir  r  i   ig     j@  ļBg0"bgpتO#M?gMF>?g5-g`?g	S+?g6U?gǗʿgjD{?/,Gg` 0Gg!^?gnF5o{gI\Y?g7f8goC9	?gyhgEbr?g{g.
?ga~gT-s?gɤ,P&?g|bgޗY3g!ؑ-@gi$bghgy(V@^gһ>g>gx\h<rY   rZ   )rq  r:   rC   wofz)rF   r}  ws      rG   	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%8rK    N)__name__
__module____qualname____firstlineno__rH   rN   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"  r8  r>  rA  rF  rL  rO  rS  rX  r\  r`  rd  ri  rm  rr  pytestmarkxfailr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r'  r,  r0  r4  r8  r<  rA  rF  rK  rO  rS  rW  r[  r_  rc  rg  rl  rp  rt  rx  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r#  r'  r+  r/  r3  r9  r>  rB  rF  rK  rO  rS  rW  r\  rc  rg  rl  rs  rw  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  __static_attributes__r
  rK   rG   r?   r?   ?   sa   2.2*.G,/00/()()3000,--.7<221**2AL2N
+0)0):*3)3N& [[MNF OF($$@ [[454 6412+3=-2./
1'('(111.)*''))*)20/.4,F&-00,2,,>, >,	PG0.// 019 [[I  @@
 [[I  KK
 [[I  ;;

9" #:)!+
/!&!&1++"
0!4/#&!&-+.	A+47N5
7
+?
-+5*9rK   r?   c                       \ rS rSrS rS rS rS r\R                  R                  S5      S 5       r\R                  R                  S5      S 5       rS	rg
)TestAiryr   c                    [         R                  " S5      n[        U[        / SQ5      S5        [         R                  " S5      n[        U[        / SQ5      S5        [         R                  " S5      n[        U[        / SQ5      S5        g )NGz?)g*?gTk'kPĿge+?gyCyt?r  g=
ףp=?)g'$'?geοgL?g
HVV?g
ףp=
׿)gl@D|?gV~׭ͿgU?g3{ɔ?)r!   rD   r   r   r[  s     rG   rH   TestAiry.test_airy  sw     LL!@A	

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

 LL!@A	
rK   c                 h   [         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5        g )Nr   rQ   rS   gN贁N{?rW   )	r!   rM   rD   r   r   r   absr   r   )rF   abb1ro   s        rG   rN   TestAiry.test_airye  s    MM$LLVAXqAD\$t*455BE qADc$|DJ'>"?@@AABE !!q)rK   c                    [         R                  " S5      n[        SS/5      [        SS/5      [        SS/5      [        SS	/5      4n[        XS
5        [         R                  " S5      n[        US   [        / SQ5      S5        [        US   [        / SQ5      S5        [        US   [        / SQ5      S5        [        US   [        / SQ5      S5        g )NrS   glgoe2+
g(0[g X*JgUfݿg˰zU`?g4c1=C?gCuTrQ   r   r   )g&g(.2+
gRg}`g%́ry  ra   )g7;1[ge*JgVwgL g<3r  )gNݿg3%IQ`?gZyΌ׿gʀ11^?g33tտr   )gqM0=C?g7uTg\G`?gp⍞vg$.m?)r!   bi_zerosr   r   )rF   bibias      rG   test_bi_zerosTestAiry.test_bi_zeros  s    a k:./k;/0k:./j+./1 	""+a !"Q% /C )D EG		H 	""Q% /C )D EG		H 	""Q% /C )D EG		H 	""Q% /B )C DF		GrK   c           	          [         R                  " S5      n[        U[        S/5      [        S/5      [        S/5      [        S/5      4S5        g )Nra   gcqg!xLgMSt$?g ~:p?rQ   )r!   ai_zerosr   r   )rF   ais     rG   test_ai_zerosTestAiry.test_ai_zeros:  sK    a !"e[M&:%*K=%9%*F8_%*F8_&6 78	9rK   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 )NP  ra   r  rc   rZ   r   rd   rW   )guqgqHkZg4g9Ζ%gB~gL")gLgQO	gMQnGg3:g)}g )r!   r%  rD   r  r   )rF   r}  zpai_zpxaip_zxai_zaip_z_ai_zpaip_zpai_envelopeaip_envelopes               rG   test_ai_zeros_bigTestAiry.test_ai_zeros_bigA  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rK   c                 |   [         R                  " S5      u  pp4[         R                  " U5      u    pVn[         R                  " U5      u    pXn	S[        U5      S-  -  n
[        U5      S-  n[	        X8SS9  [	        XGSS9  [	        Xj-  SSSS9  [	        X-  SSSS9  [	        US S / S	QSS9  [	        US S / S
QSS9  g )Nr*  ra   r  rc   rZ   r   rd   rW   )gx&gg-2+
gRgg`gu%́g{ )g K;1[g*JgVwg<w gd
3g/{
")r!   r  rD   r  r   )rF   r}  r+  bi_zpxbip_zxr0  bi_zbip_zbi_zpbip_zpbi_envelopebip_envelopes               rG   test_bi_zeros_bigTestAiry.test_bi_zeros_bigZ  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rK   r
  N)r  r  r  r  rH   rN   r"  r'  r  r  	fail_slowr5  r@  r  r
  rK   rG   r  r    sb    
,*GB9 [[1G G0 [[1G GrK   r  c                       \ rS rSrS rSrg)TestAssocLaguerreit  c                     [         R                  " SS5      n[         R                  " SSS5      n[        X!" S5      S5        [         R                  " SSS5      n[        X!" S5      S5        g )Nry  ra   r.  r  )r!   genlaguerreassoc_laguerrer   )rF   a1a2s      rG   test_assoc_laguerre%TestAssocLaguerre.test_assoc_laguerreu  s\      A&##Br!,!"RVA.##Ab+!"RU1-rK   r
  N)r  r  r  r  rJ  r  r
  rK   rG   rD  rD  t  s    .rK   rD  c                       \ rS rSrS rSrg)TestBesselpolyi}  c                     g Nr
  rE   s    rG   r   TestBesselpoly.test_besselpoly~      rK   r
  N)r  r  r  r  r   r  r
  rK   rG   rM  rM  }  s    rK   rM  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)
TestKelvini  c                 J    [         R                  " S5      n[        USS5        g )NrS   gT?r   )r!   r   r   )rF   mbeis     rG   r   TestKelvin.test_bei  s    {{1~D"4Q7rK   c                 J    [         R                  " S5      n[        USS5        g )NrS   gD,X?r   )r!   r   r   )rF   mbeips     rG   r   TestKelvin.test_beip      QE"5a8rK   c                 J    [         R                  " S5      n[        USS5        g )NrS   gPA4?r   )r!   r   r   )rF   mbers     rG   r   TestKelvin.test_ber  s    {{1~D!4Q7rK   c                 J    [         R                  " S5      n[        USS5        g )NrS   gii߿r   )r!   r   r   )rF   mberps     rG   r   TestKelvin.test_berp      QE"6q9rK   c                 `    [         R                  " S5      n[        U[        / SQ5      S5        g )Nr   g&jj@g+"@g(rw+@gU2@g`<6@rQ   )r!   	bei_zerosr   r   )rF   r   s     rG   test_bei_zerosTestKelvin.test_bei_zeros  s-    q!!"U ,6 &7 89		:rK   c                 `    [         R                  " S5      n[        U[        / SQ5      S5        g )Nr   )gyWo.@g╲ݏ @gנ{)@gK11@gWc"5@r  )r!   
beip_zerosr   r   )rF   bips     rG   test_beip_zerosTestKelvin.test_beip_zeros  s2      #!#e -C 'D EF		GrK   c                 `    [         R                  " S5      n[        U[        / SQ5      S5        g )Nr   g\@g6ُ@gӟHY'@g>"D0@ggaO;4@rQ   )r!   	ber_zerosr   r   )rF   r   s     rG   test_ber_zerosTestKelvin.test_ber_zeros  s-    "!#e -7 '8 9:		;rK   c                 `    [         R                  " S5      n[        U[        / SQ5      S5        g )Nr   g '@gs%@gF ^-@gvۅj3@gB7@rQ   )r!   
berp_zerosr   r   )rF   brps     rG   test_berp_zerosTestKelvin.test_berp_zeros  s-      #!#e -7 '8 9:		;rK   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5        g )NrS   rz  r  )r!   rb  r   r   r   rZ  rR  r   r   r^  rV  )rF   mkelvs     rG   rc  TestKelvin.test_kelvin  s    q!!%Q'++a.:K)K)0Q'++a.:K)K)0a7<<?2;M)M)0a7<<?2;M)M)O PQ	RrK   c                 J    [         R                  " S5      n[        USS5        g )NrS   g>ɿr   )r!   rR  r   )rF   mkeis     rG   rS  TestKelvin.test_kei  s    {{1~D!5a8rK   c                 J    [         R                  " S5      n[        USS5        g )NrS   gr@d"?r   )r!   rV  r   )rF   mkeips     rG   rW  TestKelvin.test_keip  rZ  rK   c                 J    [         R                  " S5      n[        USS5        g )NrS   gܙUr   )r!   rZ  r   )rF   mkers     rG   r[  TestKelvin.test_ker  s    {{1~D!6q9rK   c                 J    [         R                  " S5      n[        USS5        g )NrS   g^.n3Jr   )r!   r^  r   )rF   mkerps     rG   r_  TestKelvin.test_kerp  ra  rK   c                 `    [         R                  " S5      n[        U[        / SQ5      S5        g )Nr   gE>Q@gB= @gPN)@gm91@g
%5@rQ   )r!   	kei_zerosr   r   )rF   rR  s     rG   test_kei_zerosTestKelvin.test_kei_zeros  s-    "!#e -8 '9 :;		<rK   c                 `    [         R                  " S5      n[        U[        / SQ5      S5        g )Nr   gWf,@g?"@gFZ*o+@gOpN2@gEa6@rQ   )r!   
keip_zerosr   r   )rF   rV  s     rG   test_keip_zerosTestKelvin.test_keip_zeros  -    !!!$!$u .: (; <=		>rK   c                    [         R                  " S5      nUu  p#pEpgp[        U[        / SQ5      S5        [        U[        / SQ5      S5        [        U[        / SQ5      S5        [        U[        / SQ5      S5        [        U[        / SQ5      S5        [        U[        / SQ5      S5        [        U[        / S	Q5      S5        [        U	[        / S
Q5      S5        g )Nr   rm  rQ   rc  )#?Q5U@q89 %@ol`.@gO0q3@r  rr  )gum.@gݏ @gs{)@g䠄11@gN(D!5@gS@g89@@g^C'@g1ZG0@g+ڇ4@r  )r!   kelvin_zerosr   r   )
rF   tmpberzbeizkerzkeizberpzbeipzkerpzkeipzs
             rG   test_kelvin_zerosTestKelvin.test_kelvin_zeros  s   ""1%693$E!$u .9 (: ;<		=
 	"$u .9 (: ;<		=
 	"$u .9 (: ;<		=
 	"$u .9 (: ;<		=
 	"% /: ); <=		>
 	"% /: ); <=	> 	"% /: ); <=		>
 	"% /: ); <=		>rK   c                 `    [         R                  " S5      n[        U[        / SQ5      S5        g )Nr   )r  r  r  r  gD;q3@rQ   )r!   	ker_zerosr   r   )rF   rZ  s     rG   test_ker_zerosTestKelvin.test_ker_zeros
  s-    "!#e -9 ': ;<		=rK   c                 `    [         R                  " S5      n[        U[        / SQ5      S5        g )Nr   r  rQ   )r!   
kerp_zerosr   r   )rF   r^  s     rG   test_kerp_zerosTestKelvin.test_kerp_zeros  r  rK   r
  N)r  r  r  r  r   r   r   r   re  rj  ro  ru  rc  rS  rW  r[  r_  r  r  r  r  r  r  r
  rK   rG   rS  rS    s_    898::G;;R99::<>,>\=>rK   rS  c                       \ rS rSrS rSrg)TestBernoullii  c                 `    [         R                  " S5      n[        U[        / SQ5      S5        g )Nr   )r   r  g-!lV?r   g镲r   rQ   )r!   	bernoullir   r   )rF   brns     rG   test_bernoulliTestBernoulli.test_bernoulli  s-    "!#e -5 '6
 78	9rK   r
  N)r  r  r  r  r  r  r
  rK   rG   r  r    s    9rK   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 )Nra   r   33333YN~h?   g6.8@rY   r   r  rS   rQ   rW   rZ   )r   r!   betar   r  )rF   betbetgs      rG   	test_betaTestBeta.test_beta+  s    W\\!Q'-VV4gmmF6KLVS13E"	, ll1a a q!117==3CC.rK   c                 l    [        [        R                  " [        R                  " SS5      5      5        g )NrV   rS   )r   rf   isinfr!   r  rE   s    rG   test_beta_infTestBeta.test_beta_inf5  s    b!,-.rK   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 )Nra   r   r  r  r     gIs	@r  r   r  rS   rQ   rY   rZ   )r   r!   betalnr   r  r   r  r  )rF   betlnr  s      rG   test_betalnTestBeta.test_betaln8  s    W^^Aq)3/vv6/	1vs35G"	, q!$#gll1a()*/rK   r
  N)	r  r  r  r  __doc__r  r  r  r  r
  rK   rG   r  r  &  s    //	0rK   r  c                   D   \ 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                   /5      \R                  R                  S/ SQ5      S 5       5       r\R                  R                  S\R&                  \R(                  /5      S 5       rSrg)TestBetaInciD  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   r  ra   ra   )rf   r   r   r!   betainc
betaincinvbetainccbetainccinvr[  s     rG   
test_a1_b1TestBetaInc.test_a1_b1I  sz    HH\"W__Q1-q1W''1a0!4W%%aA.A6W((Aq11q59rK   z
a, b, x, p))rS   rQ   g@w?r   )r  g     `e@rc   g*?)r  r  g"Yx;r  )g   `1?g    ئAg\aY4g    ?)rQ   i g-߇)?g;?c                     [         R                  " XU5      n[        XTSS9  [         R                  " XU5      n[        XcSS9  g )Nr)  rZ   g-a=)r!   r  r   r  rF   r  r  r5  r  p1x1s          rG   test_betainc_betaincinv#TestBetaInc.test_betainc_betaincinv`  s:     __Q1%E*a(E*rK   ))      @r   r  g     ?)      @g     *@      ?g&?)      ?r  g333333?gFoE?)r        2@r  gg2$Z?)r  r  gZd;?g6)r  r  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+<rZ   gV瞯=)r!   r  r   r  r  s          rG   test_betaincc_betainccinv%TestBetaInc.test_betaincc_betainccinvu  s<     aA&E*  q)E*rK   za, b, y, ref))cj,@r  ghHISOa gڭ Y;)g      ,@g      -@g둤g}c]춫;)r        .@gUv \U,gS^%:)r   g      ?gMoigKB;)rg  g    i@g1$-g\_cp:c                 F    [         R                  " XU5      n[        XTSS9  g )Nr  rZ   )r!   r  r   )rF   r  r  r|  refr5  s         rG   test_betaincinv_tiny_y"TestBetaInc.test_betaincinv_tiny_y  s     2 qQ'U+rK   funcargs))r-  rS   r   )r   rS   r   )r         r   )r  r   r   )r  r   333333ӿ)r  r   皙?c                     [         R                  " SS9   [        R                  " [         R                  SS9   [         R
                  " 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   SpecialFunctionErrorr  )rF   r  r  s      rG   test_betainc_domain_errors&TestBetaInc.test_betainc_domain_errors  sP     W-w;;8L& M .-LL .-s"   $A/AA/
A,	(A//
A=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   r  rZ   )rf   r   r!   r  r   r   eps)rF   r  r  r5  r8  s        rG   test_gh21426TestBetaInc.test_gh21426  sW     HHbT'HHcU%(##A!,RXXe_-@-@(@ArK   r
  N)r  r  r  r  r  r  r  r  parametrizer  r  r  r!   r  r  r  r  r  rf   r0  r2  r  r  r
  rK   rG   r  r  D  s.   :. [[	6
7+
7+ [[\
<=+=+ [[	7,,& [[Vgoow7I7I&-&6&68K8K&M N[[V &I J'JN
'
 [[Wrzz2::&>?B @BrK   r  c                       \ rS rSrS rS rS r\R                  R                  S 5       r
S rS r\R                  R                  S 5       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 )Nr  r   rQ         ^@g     @j@Texactx   )r  
repetition   r  rx   r)  re   ra   l   hU7`S?Q r  2   )
r   r!   combr   r   listrf   iinfor   max)rF   rp   iir~  s       rG   	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   r]   Tr  )rf   int64r!   r	  )rF   ro   rp   np_nnp_kres_npres_pys          rG   test_comb_with_np_int64)TestCombinatorics.test_comb_with_np_int64  sR    xx{xx{d5a$/rK   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 )NrS   r   Tr  r   rV   FrS   rV   rS   r  r   r   rV   r   )r   r   r   r  )r   r!   r	  r   rE   s    rG   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XrK   c                     Sn[         R                  " US9   [        R                  " SSSS9  S S S 5        g ! , (       d  f       g = f)Nz`exact=True`r  r  rQ   Tr  )r  deprecated_callr!   r	  )rF   msgs     rG   test_comb_exact_non_int_dep-TestCombinatorics.test_comb_exact_non_int_dep  s1    ###.LLat, /..s	   7
Ac                     [        [        R                  " SS/SS/5      SS/5        [        [        R                  " SS5      S5        [	        [        R                  " SSSS9S5        g )	Nr  r   rQ        @g     @Tr  i  )r   r!   permr   r   rE   s    rG   	test_permTestCombinatorics.test_perm  sO    b"X1v6uFGLLQ/6W\\"at4c:rK   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 )NrS   r   Tr  r   rV   Fr  r  )r   r   r   r%  )r   r!   r&  r   rE   s    rG   test_perm_zeros!TestCombinatorics.test_perm_zeros  r  rK   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  ra   rS   rQ   r   Tr  zNon-integergffffff@rW   gffffffr   g333333      @)r  r   
ValueErrorr!   r&  r   rE   s    rG   test_perm_ivTestCombinatorics.test_perm_iv  s     ]]:->?LL!Q!Qt4 @
 ##-8LLat, 9##-8LLq- 9##-8LLD- 9
 ]]:];LLc. <; @?
 988888
 <;s;   DD D17E/E
D 
D.1
D?
E
E!r
  N)r  r  r  r  r  r  r  r  r  thread_unsafer"  r'  r*  r/  r  r
  rK   rG   r  r    sY    = Y [[- -
;
Y [[/ /rK   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)TestTrigonometrici  c                 J    [         R                  " S5      nSn[        X5        g )N   r   )r!   r   r   )rF   cbcbrls      rG   r   TestTrigonometric.test_cbrt  s    \\"B$rK   c                 L    [         R                  " S5      nSn[        XS5        g )Ngfffff;@g鎖C@r  )r!   r   r   )rF   cb1cbrl1s      rG   test_cbrtmoreTestTrigonometric.test_cbrtmore  s    ll4 Ca(rK   c                 l    [         R                  " S5      n[        [        S-  5      n[	        XS5        g )Nr  r   r  r!   r  r
   r   r   )rF   cdgcdgrls      rG   r  TestTrigonometric.test_cosdg  s'    mmBBsFCa(rK   c                 l    [         R                  " S5      n[        [        S-  5      n[	        XS5        g Nr]   r-  r  r?  )rF   cdgmcdgmrls      rG   test_cosdgmore TestTrigonometric.test_cosdgmore  s'    }}R RVD*rK   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5        g )Nr   rx  r  ra   r  )r!   r  r   r
   r   )rF   cscsrls      rG   r  TestTrigonometric.test_cosm1  s_    mmAw}}R0r"u1EFAqR3r"u:a<0!"!,rK   c                 r    [         R                  " S5      n[        [        S-  5      S-  n[	        XS5        g )Nr]   r-  rV   r  r!   r  r   r   r   )rF   ctctrls      rG   r  TestTrigonometric.test_cotdg  s,    ]]22c6{R BA&rK   c                 r    [         R                  " S5      n[        [        S-  5      S-  n[	        XS5        g )Nr  rg  rV   r  rN  )rF   ct1ctrl1s      rG   test_cotdgmore TestTrigonometric.test_cotdgmore  s,    mmBBsFb!Ca(rK   c                 ^   [        [        R                  " S5      SS5        [        [        R                  " S5      SS5        [        [        R                  " S5      SS5        [        [        R                  " S5      SS5        [        [        R                  " S	5      SS5        [        [        R                  " S
5      SS5        [        [        R                  " S5      SS5        [        [        R                  " S5      SS5        [        [        R                  " S5      SS5        [        [        R                  " S5      SS5        [        [        R                  " S5      SS5        [        [        R                  " S5      SS5        [        [        R                  " S5      SS5        g )Nr  r      r-  r  r   i   y   i  i;  i  )r   r!   r  rE   s    rG   test_specialpoints$TestTrigonometric.test_specialpoints!  s   GMM"-sB7GMM#.b9GMM"-sB7GMM#.R8GMM#.b9GMM$/b9GMM#.R8GMM$/r:GMM#.R8GMM$/b9GMM#.b9GMM$/b9GMM#.R8rK   c                     [        [        R                  " S/5      S5        [        [        R                  " S5      S5        g )Nr   ra   r   r   )r   r!   sincr   rE   s    rG   	test_sincTestTrigonometric.test_sinc0  s*    7<<,a0W\\#&,rK   c                 H    [         R                  " S5      n[        US5        g r  )r!   r  r   )rF   sns     rG   r  TestTrigonometric.test_sindg5  s    ]]2RrK   c                     [         R                  " S5      n[        [        S-  5      n[	        XS5        [         R                  " S5      n[        [        S-  5      n[	        X4S5        g )Nr]   r-  r  r  rg  )r!   r  r	   r   r   )rF   snmsnmrlsnm1snmrl1s        rG   test_sindgmore TestTrigonometric.test_sindgmore9  L    mmBBsFCa(}}R RVD*rK   r
  N)r  r  r  r  r   r<  r  rG  r  r  rU  r`  rd  r  rn  r  r
  rK   rG   r3  r3    s9    %
)
)
+
-
'
)
9-
+rK   r3  c                   &    \ rS rSrS rS rS rSrg)	TestTandgiB  c                 l    [         R                  " S5      n[        [        S-  5      n[	        XS5        g rD  r!   r  r   r   r   )rF   tntnrls      rG   r  TestTandg.test_tandgD  s'    ]]22c6{BA&rK   c                     [         R                  " S5      n[        [        S-  5      n[	        XS5        [         R                  " S5      n[        [        S-  5      n[	        X4S5        g )Nr  rg  r  r  r   rt  )rF   tnmtnmrltnm1tnmrl1s        rG   test_tandgmoreTestTandg.test_tandgmoreI  rp  rK   c                    [        [        R                  " S5      SS5        [        [        R                  " S5      SS5        [        [        R                  " S5      SS5        [        [        R                  " S5      SS5        [        [        R                  " S	5      SS5        [        [        R                  " S
5      SS5        [        [        R                  " S5      SS5        [        [        R                  " S5      SS5        [        [        R                  " S5      SS5        [        [        R                  " S5      SS5        [        [        R                  " S5      SS5        g )Nr   r   rX  r  r   rY  r-  rZ  r[  r  iLr\  r]  r^  r_  )r   r!   r  rE   s    rG   r`  TestTandg.test_specialpointsQ  s    GMM!,c26GMM"-sB7GMM#.b9GMM#.b9GMM$/b9GMM#.R8GMM$/b9GMM#.R8GMM$/r:GMM#.b9GMM$/b9rK   r
  N)r  r  r  r  r  r}  r`  r  r
  rK   rG   rr  rr  B  s    '
+:rK   rr  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!   rK  rf   r   rE   s    rG   test_ellipj_nanTestEllip.test_ellipj_nan`  s    sBFF#rK   c                 z    [         R                  " SS5      n[        S5      [        S5      SS/n[	        XS5        g )Nr.  r   r      )r!   rK  r	   r
   r   )rF   elrels      rG   rL  TestEllip.test_ellipjd  s2    ^^C"3xCT*!",rK   c                 d   [         R                  " S5      n[        USS5        [        [         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э?ry  r   r   rS   rV   gN?)
r!   r#   r   r   r$   rf   r   r   r   r   )rF   elks     rG   rO  TestEllip.test_ellipki  s    nnR C 1"5W%%c*BFF3W%%c*BqD1W%%bff-s3W%%bff-rvv6W%%b)2662s+-?@rK   c                 n   [         R                  " [        S-  S5      n[         R                  " S5      n[	        XS5        S[        -  S-  nS[        -  S-  n[        U5      S-  n[         R                  " XE5      n[	        USS5        [        [         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 )NrS   r.  r   rx   r  r  gfoKh?r  r   r   r   r   gt?ra   rT   r  rZ   6<R!?r  gfON?)r!   rR  r   r#   r   r	   r   rf   r   r   r   )rF   elkincr  alphaphir  s         rG   rS  TestEllip.test_ellipkinct  sw   ""2a4+nnS!Fr*2c	eCiJM""3)F:a0 	W&&r!tS12a48W&&r!tS1266:W&&r!tbffW5s;W&&r!tRVV4bff=W&&r!tQ/8W&&q#.4W&&rvvs3RVV<W&&w4rvvg>W&&rvvrvv6?W&&rvvw7@W&&w8"&&AW&&w7@W&&rvvs3RVV<W&&rvvrvv6?))*=qA3US))&#68KLrK   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   r  ra   gV^8j?g,j6Ƅ@rS   )	rf   	nextafterr   appendr!   rR  r   	full_liker   rF   mbadr  r  mvalsjr  f1s           rG   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SrK   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<rw  rS   Fr  ra   r  rZ   )rf   rz   r  r   r   r!   rR  arcsinhr   r   r   )rF   xlogxlinxlin2s       rG   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<rK   c                 f   [         R                  " S5      n[        USS5        [        [         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   rS   r   r  g?eg@)	r!   r"   r   r   r   rf   r   r   r   )rF   eles     rG   rA  TestEllip.test_ellipe  s    nnR C 215W^^C("Q$/W^^C(#.W^^RVVG,bff5W^^BFF+RVV4W^^A&/s+-?@rK   c                 .   [         R                  " [        S-  S5      n[         R                  " S5      n[	        XS5        S[        -  S-  S[        -  S-  pC[        U5      S-  n[         R                  " XE5      n[	        USS5        [        [         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 )NrS   r.  rX  4   r  #   g'?r  r   r   r   r   r  r  gL@)r!   rE  r   r"   r   r	   r   rf   r   r   r   )rF   eleincr  r  r  r  s         rG   rF  TestEllip.test_ellipeinc  sZ   ""2a4+nnS!Fr*U3Yr"uSysJM""3)FJ2W&&r!tS12a48W&&r!tS137W&&r!tbffW5rvv>W&&r!tRVV4bff=W&&r!tQ/8W&&q#.4W&&rvvs3RVV<W&&w4rvvg>W&&rvvw7@W&&w8266'BW&&rvvrvv6?W&&w7@W&&rvvs3RVV<W&&rvvrvv6?))&#68JKrK   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   r  ra   g%?rS   gXo
@rQ   )	rf   r  r   r  r!   rE  r   r  r   r  s           rG   test_ellipeinc_2TestEllip.test_ellipeinc_2  s     # LLq!rALLOQ"A  c)&q",,q:M*NPQRsRx/&r2<<<N+OQRSrK   r
  N)r  r  r  r  r  rL  rO  rS  r  r  rA  rF  r  r  r
  rK   rG   r  r  _  s5    $-
	AM:T =*	AL4TrK   r  c                   t    \ rS rSrSrS rS rS rS rS r	\
R                  R                  SS	9S
 5       rSrg)TestEllipCarlsoni  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 )Nra   r   r   r  g      @r   rz               r  r-  y
c?
cy=B?CGֿr   y檠f?P9lb?)
r   r%   r   r   rq  r   rf   r   r   	enumeraterF   r  expected_resultsr   arrs        rG   test_elliprcTestEllipCarlson.test_elliprc  s    1q)q##%%%WQ]####q'!S/*c111sDkSkDkdmTlTl$ % !"%%"$&&+">"C"$&&+"3"D"F G  oFAGSM+;+>? &rK   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 )Nra   r   rS   r   g`C+?r   r   rV   )r   r   r   r   r   rg  rz  r  r   r   rz  r  )r               ?rz  )y             r  r  )gfe_?gi+"?gP$M?ytgFU?7?@yR<8*y{62?z)r   r&   r   rf   r  rq  r   r   r2  tinyr   r  r  s        rG   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+;+>? &rK   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 )Nra   r   rS   gPO?r   rV   )r   r   r   )rz  r  r   )r   r   r   r  rz  r   r  r  )r  rz        ?      )geQO?ʞu5J?r  yp\y?kg2ΰ?gHwд?y|pF?-6Fj)	r   r'   r   rf   r  r   rq  r   r  r  s        rG   test_elliprfTestEllipCarlson.test_elliprf  s   1a(!,1a(*@Aq#q!S(((xx1a())))WQ2&''''ws|Q*c111WQ7C4#345555o(%,%(13 4 ! "F G  oFAGSM+;+>? &rK   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 )Nra   r   r   )r   r  r  r  r  r  )r  r  rz  )r   g8d`?rg  gL+?g}^?y旮0?ʋW?yjN?^?gt?)	r   r(   rf   r  r   rq  r   r   r  r  s        rG   test_elliprgTestEllipCarlson.test_elliprg6  s    1a(!,1a(#.1a(!,xx3*++++xxa34444'%(,.(* + !"%%"1"2"D"D"1"3 4  oFAGSM+;+>? &rK   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 )Nra   r   r   rV   )r   r   r   r   )r   r   rg  r   )r   r   rg  r  )rz  r  r   r   )r              r   r   )rz  r  r   r  )r  r  r   y            ?)r   r   rg  r  )r   r   rg        )	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        rG   test_elliprjTestEllipCarlson.test_elliprjK  s    1a+Q/q!S!$+++WQ1a())))WRAq)****q!Q$+++**0-62<++- . ! "5 6  oFAGSM+;+>? &rK   zInsufficient accuracy on 32-bitrt  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  rp  r  g   ,@g    x=g   @e:g   `ݽ>g(HR)A)r   r)   rE   s    rG   test_elliprj_hard"TestEllipCarlson.test_elliprj_hardf  sN     5 6 3 13 ;"	0 	 2 5 4 57 <"	0rK   r
  N)r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  rK   rG   r  r    sM    @(@0@2@*@6 [[?@0 A0rK   r  c                   0    \ rS rSrSrS rS rS rS rSr	g)	"TestEllipLegendreCarlsonIdentitiesiv  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   rV   r   )rf   r   m_n1_1r   r   minmax_neglog2
very_neg_mconcatenate
ms_up_to_1rE   s    rG   setup_class.TestEllipLegendreCarlsonIdentities.setup_class|  s    iiR.V}((F2+-77DLL=+A,BCE+.%0 !0 0 ..4<<.*.//*.++*7 8rK   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'   rF   r  s     rG   test_k)TestEllipLegendreCarlsonIdentities.test_k  s(     OOq	72r!tR#89rK   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   rf   r  r   r$   r'   )rF   r  m1s      rG   test_km1+TestEllipLegendreCarlsonIdentities.test_km1  sJ     V}!!BrBGGDM>222gb"b&9:rK   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(   r  s     rG   test_e)TestEllipLegendreCarlsonIdentities.test_e  s-     OOq	2gb"Q$&;#;<rK   )r  r  r  r  N)
r  r  r  r  r  r  r  r  r  r  r
  rK   rG   r  r  v  s    

8:	;=rK   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                 J    [         R                  " S5      n[        USS5        g )Nr  g);T?r  )r!   rW  r   )rF   ers     rG   rX  TestErf.test_erf  s    [[B|A.rK   c                 b    [         R                  " S5      n[        / SQ5      n[        XS5        g )Nr   )yTcJ5?=W?yo@n@y'ʷ@g	@y"[

@,y]+@yld&@-;'j'>@rQ   )r!   	erf_zerosr   r   )rF   erzerzrs      rG   test_erf_zerosTestErf.test_erf_zeros  s-    " - .
 	"#1-rK   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)Nr\   r  g{Gz?rS   r   ra   rz  ignoreallr  )	rf   rl   rm   paretorandintr  r   isfiniter:   )rF   r  
other_funcr[   re   rs   ro   r5  r|  r}  r  w_realmasks                rG   _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      -
  $ r   rC   rW  r}  s    rG   <lambda>.TestErf.test_erfc_consistent.<locals>.<lambda>  s    a&**Q-'rK   r   r  r  )r  rC   r_  rE   s    rG   test_erfc_consistentTestErf.test_erfc_consistent  s%      KK'	 	! 	rK   c                 D    U R                  [        R                  S SS9  g )Nc                 `    [         R                  " X -  5      [        R                  " U 5      -  $ rO  )rf   r   rC   r_  r  s    rG   r	  /TestErf.test_erfcx_consistent.<locals>.<lambda>  s    bffQSkFKKN2rK   r   rZ   )r  rC   erfcxrE   s    rG   test_erfcx_consistentTestErf.test_erfcx_consistent  s"      LL2 	! 	rK   c                 D    U R                  [        R                  S SS9  g )Nc                 :    S[         R                  " SU -  5      -  $ )Nr  rz  r  r  s    rG   r	  .TestErf.test_erfi_consistent.<locals>.<lambda>  s    cFJJr!t,,rK   r   rZ   )r  rC   erfirE   s    rG   test_erfi_consistentTestErf.test_erfi_consistent  s"      KK, 	! 	rK   c                 D    U R                  [        R                  S SS9  g )Nc                     [        [        5      S-  [        R                  " U * U -  5      -  [        R
                  " U 5      -  $ r?  )r   r   rf   r   rC   r  r  s    rG   r	  /TestErf.test_dawsn_consistent.<locals>.<lambda>  s,    d2hqj2661"Q$</&++a.@rK   r   rZ   )r  rC   r!  rE   s    rG   test_dawsn_consistentTestErf.test_dawsn_consistent  s"      LL@ 	! 	rK   c                     [         R                  [         R                  * [         R                  /n[         R                  SS/n[        [        R
                  " U5      USS9  g )NrV   ra   r)  rZ   )rf   r   r   r   r!   rW  rF   r  r~  s      rG   test_erf_nan_infTestErf.test_erf_nan_inf  s@    (FFB?D)8%@rK   c                     [         R                  [         R                  * [         R                  /n[         R                  SS/n[        [        R
                  " U5      USS9  g )NrS   r   r)  rZ   )rf   r   r   r   r!   r_  r  s      rG   test_erfc_nan_infTestErf.test_erfc_nan_inf  s@    (FFAq>T*H5ArK   c                     [         R                  [         R                  * [         R                  /n[         R                  [         R                  S/n[        [        R
                  " U5      USS9  g )Nr   r)  rZ   )rf   r   r   r   r!   r  r  s      rG   test_erfcx_nan_infTestErf.test_erfcx_nan_inf  sE    (FFBFFA&d+XEBrK   c                    [         R                  [         R                  * [         R                  /n[         R                  [         R                  * [         R                  /n[        [        R
                  " U5      USS9  g )Nr)  rZ   )rf   r   r   r   r!   r  r  s      rG   test_erfi_nan_infTestErf.test_erfi_nan_inf  sK    (FFRVVGRVV,T*H5ArK   c                     [         R                  [         R                  * [         R                  /n[         R                  SS/n[        [        R
                  " U5      USS9  g )Nr  r   r)  rZ   )rf   r   r   r   r!   r!  r  s      rG   test_dawsn_nan_infTestErf.test_dawsn_nan_inf  sA    (FFD#&d+XEBrK   c                     [         R                  [         R                  * [         R                  /n[         R                  [         R                  S-  -   SS/n[        [        R
                  " U5      USS9  g )Nrz  rp  r)  rZ   )rf   r   r   r   r!   r  r  s      rG   test_wofz_nan_infTestErf.test_wofz_nan_inf  sN    (FFRVVc\)66:T*H5ArK   r
  N)r   )r  r  r  r  rX  r  r  r  r  r  r  r   r#  r&  r)  r,  r/  r  r
  rK   rG   r  r    sJ    /.E.A
B
C
B
C
BrK   r  c                       \ rS rSrS rSrg)	TestEuleri  c                 X   [         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5        g ! , (       d  f       N= f)Nr   ra   rS   r)  rZ   )ra   r   rV   r,  )ra   ra   r   =   ii  iY  i=) il   Q~ l   10[l   $8gC
 l   2l   v}Ju: )r%  dr  r  r  r   rX  )r!   eulerr   r   r   r   rf   r  r   r  r   )
rF   eu0eu1eu2eu24	mathworldcorrectrp   errerrmaxs
             rG   
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 ' 	FC, '&s   )D
D)r
  N)r  r  r  r  r?  r  r
  rK   rG   r2  r2    s    -rK   r2  c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
TestExpi  c                 J    [         R                  " S5      nSn[        X5        g )NrS   rQ   )r!   rh  r   rF   exexrls      rG   ri  TestExp.test_exp2  s    \\!_RrK   c                 L    [         R                  " S5      nSn[        XS5        g )Nr  g;f@r  )r!   rh  r   rF   exmexmrls      rG   test_exp2moreTestExp.test_exp2more#  s    ll3Ca(rK   c                 J    [         R                  " S5      nSn[        X5        g )NrS   r  )r!   rc  r   rD  s      rG   rd  TestExp.test_exp10(  s    ]]1B$rK   c                 L    [         R                  " S5      nSn[        XS5        g )Nr  gYs@r  )r!   rc  r   rI  s      rG   test_exp10moreTestExp.test_exp10more-  s    mmC Ca(rK   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5        g )NrS   r   rQ   ra   r  r!   rl  r   r   rD  s      rG   rm  TestExp.test_expm12  sW    mmAw}}Q/a0@AAqQ#a&(+!"!,rK   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5        g )NrS    @皙@ra   r  rT  )rF   ex1exrl1s      rG   test_expm1moreTestExp.test_expm1more7  sW    }}Qc 27==3EFQ#c(1*SXaZ0!#A.rK   r
  N)r  r  r  r  ri  rL  rd  rQ  rm  r[  r  r
  rK   rG   rB  rB    s     
)
%
)
-
/rK   rB  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 )NrZ   )r4   r3   )r5  r|  r[   s     rG   assert_func(assert_really_equal.<locals>.assert_funcI  s    !%?1d3SrK   c                     [         R                  " U R                  5      (       a%  [         R                  " U R                  5      (       d   eg rO  )rf   r   r   r{  r5  s    rG   assert_complex_nan/assert_really_equal.<locals>.assert_complex_nanL  s0    xxBHHQVV$4$444$4rK   ztypes not equal: z, rZ   r  N)
type
isinstancerf   ndarrayr  ziprk   assert_really_equalr   r8   )r5  r|  r[   r_  rc  elem_xelem_ys     `    rG   ri  ri  =  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rK   c                      \ rS rSrS r\R                  R                  S/ SQ5      S 5       r\R                  R                  S/ SQ5      \R                  R                  SS	S
/5      S 5       5       r	\R                  R                  SS	S
/5      S 5       r
\R                  R                  S/ SQ5      S 5       r\R                  R                  SSS/5      \R                  R                  S/ SQ5      S 5       5       r\R                  R                  SS	S
/5      \R                  R                  SSS/5      \R                  R                  S\R                  \R                  " S5      \R                  \R                  S-  -   \R                   " S5      \R"                  \R"                  S-   \R"                  * \R"                  * S-   S\R$                  " S5      /
/ SQS9\R                  R                  S\R(                  \R*                  \R,                  /5      S  5       5       5       5       r\R                  R                  SSS!\R                  S"/5      S# 5       r\R                  R                  S$\" S%S&5      5      \R                  R                  SS	S
/5      S' 5       5       r\R                  R                  SS	S
/5      \R                  R                  S(S\\R8                  \R:                  \R<                  \R>                  \R@                  \RB                  \RD                  \RF                  /
5      \R                  R                  S)\" SS&5      5      S* 5       5       5       r$\R                  R                  SS	S
/5      \R                  R                  S+\" S%S&5      5      S, 5       5       r%\R                  R                  S(\R@                  \RB                  \RD                  \RF                  /5      \R                  R                  S/ SQ5      S- 5       5       r&\R                  R                  S\" S.S/S05      5      S1 5       r'\R                  R                  S\(" \" SS25      5      \(" \" S.S/S05      5      -   5      S3 5       r)S4 r*S5 r+\R                  R                  S(\R>                  \R                  \R                   \,/5      \R                  R                  SSS/5      \R                  R                  SS	S
/5      \R                  R                  S)\" SS&5      5      \R                  R                  S6/ S%/S!/\R                  /\R                  \R                  S-  -   /\R                  S%/// S7QS9S8 5       5       5       5       5       r-\R                  R                  SSS/5      \R                  R                  SS	S
/5      \R                  R                  SS%S!S9\R                  \R                  \R                  S-  -   S// S:QS9S; 5       5       5       r.\R                  R                  S\" S.S/S<5      5      S= 5       r/\R                  R                  S\(" \" SS25      5      \(" \" S.S/S<5      5      -   5      S> 5       r0S? r1\R                  R                  S(\R>                  \R                  \R                   \,/5      \R                  R                  SSS/5      \R                  R                  SS	S
/5      \R                  R                  S)\" SS&5      5      \R                  R                  S6/ S%/S!/\R                  /\R                  \R                  S-  -   /\R                  S%/// S7QS9S@ 5       5       5       5       5       r2\R                  R                  SSS/5      \R                  R                  SS	S
/5      \R                  R                  SS%S!S9\R                  \R                  \R                  S-  -   S// S:QS9SA 5       5       5       r3\R                  R                  SB\" S%S&5      5      \R                  R                  S\" SCSDSE5      5      SF 5       5       r4\R                  R                  SB\(" \" S%S&5      5      S0SD/-   5      \R                  R                  S\(" \" SS25      5      \(" \" S2SGS<5      5      -   5      SH 5       5       r5SI r6\R                  R                  S(\R>                  \R                  \R                   \,/5      \R                  R                  SSS/5      \R                  R                  SS	S
/5      \R                  R                  S)\" SS&5      5      \R                  R                  S6/ S%/S!/\R                  /\R                  \R                  S-  -   /\R                  S%/// S7QS9SJ 5       5       5       5       5       r7\R                  R                  SSS/5      \R                  R                  SS	S
/5      \R                  R                  SB\" S%S&5      5      \R                  R                  SS%S!S9\R                  \R                  \R                  S-  -   S// S:QS9SK 5       5       5       5       r8\R                  R                  SS	S
/5      \R                  R                  S/ SQ5      \R                  R                  SBSLSMSSNSS!\R                  /5      SO 5       5       5       r9\R                  R                  SS	S
/5      \R                  R                  S/ SQ5      \R                  R                  SBS"\R$                  " S5      /S"SP/S9SQ 5       5       5       r:\R                  R                  S/ SQ5      \R                  R                  SB\" S%SR5      5      SS 5       5       r;ST r<SUr=g)VTestFactorialFunctionsia  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rp   r  zerora   )r!   
factorialkrf   modpowerr  r  maximum)rF   ro   rp   r  extendrr  s          rG   factorialk_ref%TestFactorialFunctions.factorialk_refb  s    %%aD99"f,BFF1L!xxE19%acAg(>>PQPSVWPWAXXbjjA&&&rK   zexact,extend))Trp  )Frp  )Frq  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  ru  rp   r   ra   )rf   isscalarr!   	factorial
factorial2rq  )rF   r  ru  kws       rG   "test_factorialx_scalar_return_type9TestFactorialFunctions.test_factorialx_scalar_return_typek  sz     /{{7,,5"56666{{7--6267777{{7--;1;;<<<<rK   ro   )rV   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   rp   r   )r   r!   r}  r~  rq  )rF   r  ro   r  s       rG   $test_factorialx_negative_extend_zero;TestFactorialFunctions.test_factorialx_negative_extend_zeros  sa     uW&&q/B/3W''0R0!4W''5Q5"5q9rK   c                 :   SU0nSn/ SQn[         R                  " / SQU(       a  [        O[         R                  S9n[	        [
        R                  " U40 UD6XSS9  [	        [
        R                  " U40 UD6XSS9  [	        [
        R                  " U4SS0UD6XSS9  g )	Nr  r)  )r  r   ra   )r   r   ra   ra   r  rZ   rp   r   )	rf   r   
native_intr2  ri  r!   r}  r~  rq  )rF   r  r  r[   ro   r~  s         rG   *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RrK   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 )Nru  rq  gRc/a_%g:\Oag@g*BZ'r  go	08G)?goNb]gMxcQgNy?g=u?g7K [n<rZ   rp   r   r   )r   r!   r}  r~  rq  )rF   ro   r  exp_1exp_2exp_kr[   s          rG   '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SrK   r{  r   rp  n_outerc                 J   ^ SS0mU4S jnU" X-   5        U" SU-  U-   5        g )Nru  rq  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+nanjr   rS   r   rp   y      ?       r   )
r8   re  rf   
complex128r2  ri  r!   r}  r~  rq  )ro   
complexifycomplex_nanr   r  r  s        rG   _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;WrK   i r
  )rF   r  r{  r  r  s       @rG   -test_factorialx_negative_extend_complex_polesDTestFactorialFunctions.test_factorialx_negative_extend_complex_poles  s3     	"	X( 	w~w 4'(rK   boxedru  rp  rq  r   rz  r  Nnat)
NaNznp.float64('nan')	NaN+i*NaNznp.complex128('nan+nanj')r   zinf+0iz-infz-inf+0iNoneNaT)ids
factorialxc                    SUS.nU[         R                  :X  a  SUS'   U(       a  / SQOSSS[        S 5      /nU[         R                  :X  a  SOSS/n[	        [        U5      U5      (       d6  [
        R                  " [        S	S
9   U" U(       a  U/OU40 UD6  S S S 5        g [	        [        U5      U5      (       a<  US:w  a6  [
        R                  " [        SS
9   U" U(       a  U/OU40 UD6  S S S 5        g US:H  =(       a    [	        [        U5      S5      nU(       a  [        R                  " S5      O[        R                  " S5      n	[	        [        U5      S5      (       aW  [        R                  " U5      (       a<  [        R                  " US:X  a  SOS5      n
US:  a  [        R                  " S5      OU
n	U(       a  U" U/40 UD6S   OU" U40 UD6n[        X5        g ! , (       d  f       g = f! , (       d  f       g = f)NFrz  r   rp   r   r  r  r   r  r  Unsupported data type.*r  rq  In order to use non-integer.*r  r   rp  r   r   )r!   rq  re  r}  r8   r  r   r.  rf   r  r2  r  ri  )rF   r  ro   ru  r  r  permissible_typestypes_need_complex_extr  r~  neg_inf_resultr8  s               rG   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  ra   )ru  r   Trp   r  ru  )r  r   r.  r!   r}  r~  rq  )rF   ru  s     rG   test_factorialx_raises_extend4TestFactorialFunctions.test_factorialx_raises_extend  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levelsra   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 )Nra   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   ra   r
  r5  rp   _nest_mes     rG   r  DTestFactorialFunctions.test_factorialx_array_shape.<locals>._nest_me  s$     Av!,,rK   c                    > [         R                  " T" UTS9[        S9n[        U R	                  [         R
                  5      UR                  " [         R
                  5      5        g )Nrp   r  )rf   r   objectr   r/  r2  )resnucleusr   r  r  s      rG   r  BTestFactorialFunctions.test_factorialx_array_shape.<locals>._check	  s@    ((8Gv6fEC CJJrzz2CJJrzz4JKrK   r   r%  r  r  r   Tr  r  r   r	  rS   r{  )rf   r   mathr}  r!   r~  rq  )rF   r  r  r  ro   exp_nucleusr  s    `    @rG   test_factorialx_array_shape2TestFactorialFunctions.test_factorialx_array_shape  s    	-	L HHXq"g01r 23w11"DABw11"atDEG
 	w  0+a.Aw!!!1;q>Bw!!!Qe4k!nErK   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   r  r	  r  ra   r  rS   r   )rf   r   r   r!   r}  r~  rq  )rF   r  r  r  ro   r   s         rG   test_factorialx_array_dimension6TestFactorialFunctions.test_factorialx_array_dimension	  s     HHQe/"$))!9Qs3	5**1:Qs3	5**1au=Qs3	5rK   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 )Nra   c                 .   > US:X  a  U $ T" U /US-
  5      $ rJ  r
  r  s     rG   r  CTestFactorialFunctions.test_factorialx_array_like.<locals>._nest_me$	  s"    AvQqS))rK   r   r  r  r   r  r	  r  r  rS   r   r{  )r   r   r!   r}  rf   r   r~  rq  )rF   r  r  ro   r  r_  r  s         @rG   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	;rK   c                    ^^ XS.mU(       a  [         O[        m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        g )Nrz  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 )Nrp   r   )	rf  rf   rg  r/  r  r!   r}  r~  rq  )ro   n_refr_  r  s     rG   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<<>rK   r   ra   r  )r   r   rf   r   )rF   r  ru  r  r  r_  r  s        @@rG   test_factorialx_uint+TestFactorialFunctions.test_factorialx_uint4	  s`    
 /,1(	> 	uQxuQxrxx'(rxxAe,-rK   r]   r  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 )Nr<   t0=r)  Tr  FrZ   )sysplatformr   r   r!   r}  r/  rF   ro   r[   s      rG   test_factorial_accuracy.TestFactorialFunctions.test_factorial_accuracyG	  s~    
 /uUg//>?))!59	F))1#T:AA%H))1#U;$	HrK      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   r<   +6=r)  FrZ   rq  rz  )r  r}  r   r!   r  r  r   r   rF   ro   r<  r[   r  s        rG   test_factorial_int_reference3TestFactorialFunctions.test_factorial_int_referenceS	  s     ..#7G$5$5at$DE7G$5$5qc$Fq$IJ/uU.!2!21E!BN!2!2A3e!DQ!GdS 	2!2!21!;!;$G!2!2A3!="!=a!@tLrK   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)
Nr<   r  r)  rZ   r   `exact=True` only supports.*r  Tr  )r  r  r   r!   r}  r  r   r.  )ro   r~  r[   s      rG   r  ETestFactorialFunctions.test_factorial_float_reference.<locals>._checkg	  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
  rF   r  s     rG   test_factorial_float_reference5TestFactorialFunctions.test_factorial_float_referencef	  sl    	3 	t23t23t23t23t67t67t78t78x78rK   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 )	Nr<   r  V瞯<Frq  rz  rZ   r   )r  r  r   r!   r}  ro   r~  r[   r  s       rG   r  GTestFactorialFunctions.test_factorial_complex_reference.<locals>._check~	  sY    LLG35D I6BG--a626LG--qc8R8;XQrK   r  gkﴑ[?r~                ykﴑ[?               @       @yB}ۿ?gH.gK	!@y      -C6?yI{xQr
  r  s     rG    test_factorial_complex_reference7TestFactorialFunctions.test_factorial_complex_reference}	  sA    	R 	t34y#=>v QRw!56|&STrK   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rO  rf   r   r   .0r5  s     rG   	<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r8   re  r  s     rG   r  r  	       &S7a|DGS'A'A7   "$rz  r   ra   r  r  rq  Incompatible options:.*r  r  r  r  r  r   r  r)  rZ   )r  r5   r  skiprf   r  anyr2  lenr   r   r.  r!   r}  r8   r  rk   r=  r  r  ri  rF   r  r  r  ru  r  r  ro   r8  r5  r  cxr~  s                rG   !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)Nrz  rq  r  r  r   r  r  r  r  r  r   r  ra   )r  r   r.  r!   r}  r8   re  rf   r   r  r2  ri  r   r  rF   ro   r  ru  r  r  r~  s          rG   "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ry  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 )Nr<   +=r)  Tr  FrZ   )r  r  r   r   r!   r~  r/  r  s      rG   test_factorial2_accuracy/TestFactorialFunctions.test_factorial2_accuracy	  s~    
 /uUg00$?@**1E:	G**A3d;BB5I**A3e<4	IrK   c           
      h   [         R                  " [        R                  [	        [        USS5      5      S5      n[        U[        R                  " USS95        [        U[        R                  " U/SS9S   5        [        R                  S:X  a  SOSn[        U5      n[        U[        R                  " US	S9US
9  [        U[        R                  " U/S	S9S   US
9  S	SS.nUS-  S:X  aE  [        U[        R                  " U40 UD6US
9  [        U[        R                  " U/40 UD6S   US
9  g g )Nr   r  ra   Tr  r<   r  r)  FrZ   rq  rz  rS   )	functoolsreduceoperatormulr
  r   r   r!   r~  r  r  r   r   r  s        rG   test_factorial2_int_reference4TestFactorialFunctions.test_factorial2_int_reference	  s    ""8<<eAq"o1FJ7G$6$6q$EF7G$6$6s$$G$JK/uU.!3!3AU!C$O!3!3QCu!Ea!HtT 	2q5A:GW%7%7%@R%@tLGW%7%7%Br%B1%EDQ rK   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  Frq  rz  rZ   r   )r   r!   r~  r  s       rG   r  HTestFactorialFunctions.test_factorial2_complex_reference.<locals>._check
  sL    D I6BG..q7B7MG..s9b9!<hRrK   r   r  rQ   rS   rx   r  g^D]?JO?r  y^D]?JO?        y      @      @y&0!:?gSt$gtQ*@y       -C6?yqj?x*)r!   r~  r  r   r   r  s     rG   !test_factorial2_complex_reference8TestFactorialFunctions.test_factorial2_complex_reference
  s    	S 	q1q7--a0499Q[3IIJrG..r2TYYq477{5KKLt45y#>?v OPw!67|&UVrK   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rO  r  r  s     rG   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     rG   r  r%  &
  r  r  rz  r   ra   r  rq  r  r  r  r  r  r  r  r  rZ   )rf   r  r  r  r  r2  r	  r   r   r.  r!   r~  r8   r  rk   r=  r  r  ri  r
  s                rG   "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)Nrz  rq  r  r  r   r  r  r  r  r  r   rp   rS   r)  rZ   )r  r   r.  r!   r~  r8   re  rf   r   r  r2  ri  rw  r  s          rG   #test_factorial2_scalar_corner_cases:TestFactorialFunctions.test_factorial2_scalar_corner_casesH
  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rp   r  rx   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 )Nr<   r  r  Tro  FrZ   )r  r  r   r   r!   rq  r/  )rF   ro   rp   r[   s       rG   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rK   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   ra   Tr  r<   gt =r  FrZ   rq  r  r  )r  r  r  r  r
  r   r   r!   rq  r  r  r   r   )rF   ro   rp   r<  r[   r  s         rG   test_factorialk_int_reference4TestFactorialFunctions.test_factorialk_int_referenceo
  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 rK   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  Frq  r  rZ   r   )r   r!   rq  )ro   rp   r   r[   r  s        rG   r  HTestFactorialFunctions.test_factorialk_complex_reference.<locals>._check
  sN    D5I>BG..q7B7HG..s9b9!<cMrK   rQ   r   Tro  )ro   rp   r   r   gD!)@g      @gNq53@r  gG`@ry  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!   rq  r  s     rG   !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WrK   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rO  r  r  s     rG   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     rG   r  r9  
  r  r  r   r  r   ra   r  rq  r  r  r  r  r  r  r  r  rZ   )rf   r  r  r  r  r2  r	  r   r   r.  r!   rq  r8   r  rk   r=  r  r  ri  r
  s                rG   "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  rq  r  r  r   r  r  r  r  r  r   r)  rZ   )r  r   r.  r!   rq  r8   re  rf   r   r  r2  ri  rw  )rF   ro   rp   r  ru  r  r  r~  s           rG   #test_factorialk_scalar_corner_cases:TestFactorialFunctions.test_factorialk_scalar_corner_cases
  s    7Y5z1JK""1++ LKd1gS#tDz'BCCz1JK""1++ LK$q'C:..6Y3Fz1PQ""1++ RQY"((1++ I-M<Q3MJ4>r}}Z0BJJuDUH 2 21 ; ;XF**133H 2 21 ; ;XER LK LK RQs#   GG#)G4
G #
G14
HrV   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)
Nra   r  rp  r  r   zFor `extend='zero'`.*r  r   zParameter k cannot be zero!)r8   re  r  r   r.  r!   rq  )rF   rp   r  ru  r  ro   r  r!  s           rG    test_factorialk_raises_k_complex7TestFactorialFunctions.test_factorialk_raises_k_complex
  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)Nra   r  r  r  )r  r   r.  r!   rq  )rF   rp   r  ru  r  ro   r  s          rG   test_factorialk_raises_k_other5TestFactorialFunctions.test_factorialk_raises_k_other  sH     QCa7]]:-FGq'B' HGGs   A
Ar  c                    XUS.nU(       Ga  U[         R                  " 5       ;   Ga  [        R                  " [        U   /5      n[        [        R                  " U40 UD6R                  [        5        [        [        R                  " US-   40 UD6R                  [        R                  5        [        R                  " US-   40 UD6[        R                  " [        R                  5      R                  :  d   e[        R                  " [         U   /5      n[        [        R                  " U40 UD6R                  [        R                  5        [        [        R                  " US-   40 UD6R                  [        5        [        R                  " US-   40 UD6[        R                  " [        R                  5      R                  :  d   eg [        R                  " [         R                  " US5      /5      nU(       a  [        O[        R                   n[        [        R                  " U40 UD6R                  U5        g )Nr  ra   )r6   keysrf   r   r7   r   r!   rq  r  r1   r  r  int32r  r  getr2  )rF   rp   r  ru  r  ro   r  s          rG   test_factorialk_dtype,TestFactorialFunctions.test_factorialk_dtype  s    7Q388::3A678A++A44::GD++AE8R8>>I%%a!e2r2RXXbhh5G5K5KKKK3A678A++A44::BHHE++AE8R8>>G%%a!e2r2RXXbhh5G5K5KKKK3771=>?A $FE++A44::EBrK   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)
Nra   rS   r   rW   Fr  r  r  T)	rf   r   r   r   r!   r}  r  r   r.  rF   r5  r~  s      rG   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  rw  r  r  r  r  r  r  r  r  rf   r   r2  r  r   
datetime64r!   r}  r~  rq  r  r  r   r  r   int8int16rH  r  uint8uint16uint32uint64r  r  r  r  r
  r  r  r  r  r  r  r  r  r!  r'  r*  r-  r0  r5  r;  r>  rA  rD  rJ  rN  r  r
  rK   rG   rm  rm  a  s   ' [[^RT=T= [[S,/[[WtUm4: 5 0: [[WtUm4S 5S [[S"45T 6T& [[VaW-[[Y5) 6 .)4 [[WtUm4[[X	':;[[FFBJJu%rvvr	'92==;TFFBFFRK"&&266'B,bmmE>R	

  
 [[			G..0B0BC2	
 < 5"2B [[X3'ABB CB [[XuQ{3[[WtUm4F 5 4F< [[WtUm4[[Wc277BHHbhh
"))RYY		'  [[UE!QK05 1	 55 [[WtUm4[[WeAqk2; 3 5;" [[WrxxBIIryy&QR[[^RT.T S.  [[S%C"45	H 6	H [[S!%2,/$uRb7I2JJLMLM"9.U  [[Wrxx')}}f'> ?[[X	':;[[WtUm4[[UE!QK0[[	aS3%"&&BFFRVVb[$8#9BFFA;GF  
)> 1 5 <?)>V [[X	':;[[WtUm4[[S1c6266266BFF2I;Mt"T!Q  SKS 5 <K. [[S%C"45	I 6	I [[S!%2,/$uRb7I2JJLRLR,W* [[Wrxx')}}f'> ?[[X	':;[[WtUm4[[UE!QK0[[	aS3%"&&BFFRVVb[$8#9BFFA;GF  
$> 1 5 <?$>L [[X	':;[[WtUm4[[S1c6266266BFF2I;Mt"T!Q  SSS 5 <S( [[S%1+. [[S%R"56	N 7 /	N [[S$uQ{"3r2h">?[[S!%2,/$uRb7I2JJLRL @R0X< [[Wrxx')}}f'> ?[[X	':;[[WtUm4[[UE!QK0[[	aS3%"&&BFFRVVb[$8#9BFFA;GF  
$> 1 5 <?$>L [[X	':;[[WtUm4[[S%1+.[[S1c6266266BFF2I;Mt"T!Q  SSS / 5 <
S( [[WtUm4[[^RT[[S2tQVS"&&"IJ( KT 5(  [[WtUm4[[^RT [[S8R]]5-A"B"*E!2  4(4T 5( [[^RT[[S%2,/C 0TC(-rK   rm  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)TestFresneli1  zz, s, c)r   gN?ց[?)y      ?        rY  rZ  )y       ?yn<ӿj<Cy)BR;߿ux7Q?)y      yھ|}-2?y/?!ۿ)r-  GM?pBR?)y      @        r[  r\  )y              @y       GMܿy        pBR?)y              gGMܿgpBR߿)y             y        GM?y       pBR߿r   r  c                 p    [        [        R                  " U5      5      n[        U[        X#/5      S5        g )Nr  )r   r!   r  r   )rF   r}  r  r  frss        rG   test_fresnel_valuesTestFresnel.test_fresnel_values2  s*    @ GOOA&'!#uaV}a8rK   c                 ,   [         R                  " S5      u  p[        U[        / SQ5      S5        [        U[        / SQ5      S5        [         R                  " U5      S   n[         R                  " U5      S   n[        USS5        [        USS5        g )Nr   )y @X9v?y^I@48E?y=
ףp@+?y@eX?yO@Ǻ?r   )y.1?ǘ?yʡE6@:#J{/?yq-
@y&1?yh o@߾3?yW2q@qh?r   ra   rX  )r!   fresnel_zerosr   r   r  )rF   szoczovals1vals2s        rG   test_fresnel_zerosTestFresnel.test_fresnel_zerosW  s    ((+!#"' ): #; <=	> 	"#"' ): #; <=	> $Q'$Q'!%"-!%"-rK   c                 x    [         R                  " S5      u  p[         R                  " S5      n[        X2S5        g )NrW   r  )r!   rb  fresnelc_zerosr   )rF   rc  rd  frcs       rG   test_fresnelc_zerosTestFresnel.test_fresnelc_zerosj  .    ((+$$Q'!#"-rK   c                 x    [         R                  " S5      u  p[         R                  " S5      n[        X1S5        g )Nr   r  )r!   rb  fresnels_zerosr   )rF   rc  rd  r^  s       rG   test_fresnels_zerosTestFresnel.test_fresnels_zeroso  rn  rK   r
  N)r  r  r  r  r  r  r  rf   r   r_  rg  rl  rq  r  r
  rK   rG   rX  rX  1  sx    [[Y7=	

	
 	&,)/*	c
&&$;) >9?>9.&.
.rK   rX  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)	TestGammaiu  c                 H    [         R                  " S5      n[        US5        g r  )r!   r  r   )rF   gams     rG   r  TestGamma.test_gammav  s    mmASrK   c                     [         R                  " S5      n[        [         R                  " S5      5      n[	        XS5        g )Nr   r  )r!   r  r   r  r   )rF   gamlnlngams      rG   r  TestGamma.test_gammalnz  s-    "GMM!$%E*rK   c                 x    [         R                  " SS5      n[         R                  " SS5      n[        XS5        g )Nr   r  )r!   r  gammaincinvr   )rF   gccinvgcinvs      rG   r  TestGamma.test_gammainccinv  s0    %%b,##Br*F+rK   c                 F   [         R                  " SS5      n[         R                  " SU5      n[        USS5        [         R                  " SS5      n[         R                  " SS5      n[        SUSS9  [        USSS9  [         R                  " SS5      n[        S	USS9  g )
NrT   ra   r  g?g`	\;r&  r  gmb<g      &@)r!   r}  gammaincr   rF   r|  r5  s      rG   test_gammaincinvTestGamma.test_gammaincinv  s    2&R"Ac!$R&$:;D!R0A5rB$JKD!R0rK   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 )	Nr  r   gCs?ra   g^F    ?rT   r   rZ   )rf   r  r!   r}  r  r   )rF   ptsxpr|  r5  s        rG   test_975TestGamma.test_975  sh    
 ||D!$l||D!$l4 B##B+A  a(AA. rK   c                 z    [         R                  " S5      nS[         R                  " S5      -  n[        XS5        g )Nr  ra   )r!   r  r  r   )rF   rgamrlgams      rG   r  TestGamma.test_rgamma  s-    ~~a '--""Dq)rK   c                 D    [        [        R                  " S5      S5        g )NrV   r   )r   r!   r  rE   s    rG   test_infinityTestGamma.test_infinity  s    W^^B'+rK   z
x,expectedr  r   ir       i c   ry  gP²Zdbc                 D    [        [        R                  " U5      U5        g rO  )r   r!   r  rM  s      rG   
test_polesTestGamma.test_poles  s      	7==+X6rK   r
  N)r  r  r  r  r  r  r  r9   r  r  r  r  r  r  r  rf   r   r   r   fullr  r  r
  rK   rG   rt  rt  u  s    +
,
 	1 	1 
/ 
/*
, [[ vvgrvv 01C[BFF7BFF+,3]BGGB/05#r"BGGB$78$%x0	
77rK   rt  c                   J    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rSrg)
TestHankeli  c                 t    [        [        R                  " SS5      [        R                  " SS5      * S5        g Nr  rS   r   rX  )r   r!   r  rE   s    rG   
test_negv1TestHankel.test_negv1  '    GOOBq1GOOAa4H3H"MrK   c                     [         R                  " SS5      n[         R                  " SS5      [         R                  " SS5      S-  -   n[	        XS5        g Nra   rw  rz  r  )r!   r  r7  r  r   )rF   hank1hankrls      rG   r  TestHankel.test_hankel1  sA    "%**Qr"WZZ"%5b%88E+rK   c                 t    [        [        R                  " SS5      [        R                  " SS5      * S5        g r  )r   r!   r  rE   s    rG   test_negv1eTestHankel.test_negv1e  +    G,,R2W5E5Ea5J4JBOrK   c                     [         R                  " SS5      n[         R                  " SS5      [        S5      -  n[	        XS5        g )Nra   rw  y       r  )r!   r  r  r   r   )rF   hank1ehankrles      rG   r  TestHankel.test_hankel1e  s7    !!!B'//!B'D	1F1-rK   c                 t    [        [        R                  " SS5      [        R                  " SS5      * S5        g r  )r   r!   r  rE   s    rG   
test_negv2TestHankel.test_negv2  r  rK   c                     [         R                  " SS5      n[         R                  " SS5      [         R                  " SS5      S-  -
  n[	        XS5        g r  )r!   r  r7  r  r   )rF   hank2hankrl2s      rG   r  TestHankel.test_hankel2  sA    "%::a#gjj2&6r&99E!,rK   c                 t    [        [        R                  " SS5      [        R                  " SS5      * S5        g r  )r   r!   r  rE   s    rG   
test_neg2eTestHankel.test_neg2e  r  rK   c                 x    [         R                  " SS5      n[         R                  " SS5      n[        XS5        g )Nra   rw  r  )r!   r  r   )rF   hank2ehankrl2es      rG   test_hankl2eTestHankel.test_hankl2e  s0    !!!B'##Ab)FA.rK   c                     [         R                  " SS5      n[        R                  " UR                  5      (       d   e[        R
                  " UR                  5      (       d   eg rB   )r!   r  rf   r   r   isposinfr{  rF   r  s     rG   test_hankel2_gh4517TestHankel.test_hankel2_gh4517  sD    ooa#xx!!!!{{388$$$$rK   r
  N)r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  rK   rG   r  r    s3    N,
P.
N-
P/
%rK   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5        g r  )r!   h1vpjvpyvpr   )rF   h1h1reals      rG   	test_h1vpTestHyper.test_h1vp  A    \\!B++a#gkk!B&7&::Ba(rK   c                     [         R                  " SS5      n[         R                  " SS5      [         R                  " SS5      S-  -
  n[	        XS5        g r  )r!   h2vpr  r  r   )rF   h2h2reals      rG   	test_h2vpTestHyper.test_h2vp  r  rK   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   rZ   r   r   r)  r   )g      rV   r   ra   r  )g̷?g3|t-Ք?r   go?g{h?rp  r   r  r  )r   ra   r   )r   gc?r  rS   r   ra   )
r   r!   hyp0f1rf   r   r/  rq  vstackassert_raisesr.  )rF   r5  r~  r  x2s        rG   test_hyp0f1TestHyper.test_hyp0f1  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	3rK   c                 J    [         R                  " SS5      n[        US5        g )N皙?y      ?      ?y;EG?uM?)r!   r  r   r  s     rG   test_hyp0f1_gh5764TestHyper.test_hyp0f1_gh5764  s     nnS,/C!LMrK   c                    [         R                  " SSS5      n[        USS5        [        / / 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/ 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5      nU H9  u  p4pV[         R                  " X4U5      n[	        [        Xg-
  5      U-  Si:  5        M;     g )jNrw  rx  g?rU   )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  )rF   hyp1ref_datar  r  r  r~  r8  s           rG   r  TestHyper.test_hyp1f1  s   ~~bB'D"4Q7  e
Oe
Ne
 Ne
 M	e

 Pe
 Ne
 Ne
 Ne
 Pe
 Me
 Oe
 Ne
 Oe
 Oe
 Me
  M!e
" N#e
$ O%e
& O'e
( N)e
* M+e
, O-e
. O/e
0 N1e
2 M3e
4 O5e
6 O7e
8 P9e
: P;e
< P=e
> O?e
@ PAe
B OCe
D NEe
F NGe
H NIe
J OKe
L MMe
N MOe
P MQe
R OSe
T OUe
V OWe
X NYe
Z M[e
\ Q]e
^ P_e
` Oae
b Nce
d Pee
f Nge
h Mie
j Oke
l Pme
n Ooe
p Oqe
r Ose
t Mue
v Mwe
x Oye
z N{e
| O}e
~ Ne
@ OAe
B OCe
D QEe
F PGe
H NIe
J NKe
L PMe
N OOe
P OQe
R OSe
T OUe
V OWe
X OYe
Z N[e
\ N]e
^ O_e
` Oae
b Oce
d Nee
f Pge
h Nie
j Nke
l Pme
n Qoe
p Nqe
r Ose
t Oue
v Owe
x Nye
z O{e
| O}e
~ Ne
@ MAe
B OCe
D OEe
F PGe
H OIe
 eN 'NA^^A*FC)*83d:; 'rK   c                 |    [         R                  " SSS5      n[         R                  " SSS5      n[        XS5        g )Nr   r  g7B.g|:B.r  r!   r  r   )rF   r  hyp2s      rG   test_hyp1f1_gh2957TestHyper.test_hyp1f1_gh2957  s0    ~~c38~~c38D+rK   c                 N    [         R                  " SSS5      n[        USS5        g )Nr   r  ig<`?r  r  )rF   hyps     rG   test_hyp1f1_gh2282TestHyper.test_hyp1f1_gh2282  s!    nnS#u-C!5r:rK   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       H/  u  nu  p4pVn[        R                  " X4XV5      n[        XSS&U-  S'9  M1     g )(Nr   ra   r  |Gz?r  g?g|Gzr   r.  rS   r  r  )r   r  r  r  gYi2?r  r   g433333?rQ   r  r   rV   r  r   g      ?r         @g      gUUUUUUտg  @gUUUUUU?g)r  r  r         $gEciH!@)r  r   ra   ro  gzG?)rS   r  ra   ro  gy&1|)r  r   ra   ro  g"nN%@?)rS   r  ra   ro  g!J)r  |      %@r  gzS;)r  r  g      %r  g[B.VP<test #%derr_msg)r   r   r	   r
   r!   r  r   r   r  r  r   )	rF   r   r   r  r  r  r5  r  cvs	            rG   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q*q.A #4rK   c                 R   [         R                  " SSS5      n[        USS5        / 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
5        g )Nra   rw  r  g D?rU   )rx  r  333333?g)r  g	@r  g	r   rS   r  )	r!   hyperur   r   r   r	   r  r  r   )rF   val1r  r  r}  hypuhprls          rG   test_hyperuTestHyper.test_hyperu  s    ~~aC(D1- !4!aj'!*!~~a!$3r!t9w~~a!4 'ac!e 4W]]15E E G 1Q3xqs1uQqS(CC")--"27==13E"E G G H 	"$B/rK   c                 J    [        [        R                  " SSS5      SS5        g )Nra   r  g3333334@g(¨?r  )r   r!   r  rE   s    rG   test_hyperu_gh2287TestHyper.test_hyperu_gh2287  s    GNN1c480"	6rK   r
  N)r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  rK   rG   r  r    s9    )
)
34Nr<h,
;"BH06rK   r  c                      \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(S' r)S( r*S) r+S* r,S+ r-S, r.S- r/S. r0S/ r1S0 r2S1 r3S2 r4STS4 jr5\6Rn                  Rq                  \9Rt                  " 5       S5:H  S6S79S8 5       r;\6Rn                  Rq                  \9Rt                  " 5       S5:H  S6S79S9 5       r<S: r=S; r>\6Rn                  R~                  S< 5       r@S= rAS> rBS? rCS@ rDSA rESB rFSC rGSUSD jrHSE rISF rJSG rKSH rLSI rMSJ rNSK rOSL rPSM rQSN rRSO rSSP rTSQ rUSR rVSSrWg3)V
TestBesseli  c                 r    [        [        R                  " S5      5      n[        U[        SS/5      S5        g )Nr.  gbɃ?gΝJ ֿr  )r   r!   r  r   )rF   it0s     rG   r  TestBessel.test_itj0y0  s2    GNN2&'!&(<=>	
rK   c                 r    [        [        R                  " S5      5      n[        U[        SS/5      S5        g )Nr.  gbqTtt?g/]ooۿr  )r   r!   r  r   )rF   it2s     rG   r  TestBessel.test_it2j0y0  s2    GOOB'(!(*>?@	
rK   c                 p    [        [        R                  " SS5      [        R                  " SS5      5        g Nr   rS   r  )r   r!   r!  rE   s    rG   test_negv_ivTestBessel.test_negv_iv  s!    WZZ!_gjjA&67rK   c                 v    [         R                  " S5      n[         R                  " SS5      n[        XS5        g Nrw  r   r  )r!   r+  r3  r   rF   ozozrs      rG   r,  TestBessel.test_j0  )    ZZ^jj2B1%rK   c                 v    [         R                  " S5      n[         R                  " SS5      n[        XS5        g Nrw  ra   r  )r!   r/  r3  r   rF   o1o1rs      rG   r0  TestBessel.test_j1  r  rK   c                 L    [         R                  " SS5      n[        USS5        g )Nra   r.  ;x?r  )r!   r3  r   )rF   jnnrs     rG   r4  TestBessel.test_jn  s    zz!BD!5a8rK   c                 t    [        [        R                  " SS5      [        R                  " SS5      * S5        g r  )r   r!   r7  rE   s    rG   test_negv_jvTestBessel.test_negv_jv  &    GJJr!,wzz!A.>CrK   c                     / SQ/ SQ/ SQ/ SQ/ SQ/n[        U5       H-  u  nu  p4n[        R                  " X45      n[        XeSSU-  S9  M/     g )	N)r   rw  g
Ye?)UUUUUU?:0yE>g˿+>)r#  rc   g)%->)g@rc   g5c)!9)r#  rg  g%,Ϳr  r  r  )r  r!   r7  r   )rF   r   r   r  r5  r|  ycs          rG   r8  TestBessel.test_jv  sO    /5662	 &f-LAyaA!Bq*q.A .rK   c                 t    [        [        R                  " SS5      [        R                  " SS5      * S5        g r  )r   r!   r;  rE   s    rG   test_negv_jveTestBessel.test_negv_jve  '    GKK1-Aa0@/@"ErK   c                    [         R                  " SS5      n[        USS5        [         R                  " SS5      nSn[         R                  " SU5      [	        [        UR                  5      * 5      -  n[        X$S5        g )Nra   r.  r  r  ?      ?)r!   r;  r   r7  r   r  r{  )rF   jvexpjvexp1r}  jvexprs        rG   r<  TestBessel.test_jve  sa    Ab!E"6q9Qu%Aac!&&k\!22F!,rK   c                 t   [         R                  " SS5      n[         R                  " SS5      n[        U[        / SQ5      S5        [        U[        / SQ5      S5        [         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   ra   )go@.=@gzj,[@glN!@g5/ D'@gh>-@rQ   gW@g0@gQX$@g*@g8*5{x0@r`   )gEk[@g~Cju]@gYrʝ^@g, `@gf	`@rY   rZ   -  )gts@g&ǭr3t@gWt@g,$Y&u@gu@)r!   jn_zerosr   r   r   )rF   jn0jn1jn102jn301s        rG   test_jn_zerosTestBessel.test_jn_zeros  s    q#q#!#e -= '> ?@		A
 	"#e -8 '9 :;		<   Q'u &>  ? FK		L   Q'u &>  ? FK		LrK   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   rw   i  g;@rY   rZ   i  g8v@i+  gׂMm@r  gxi@g	,@gи{>@i  r   )gUDX@g!@g*HS@gz5 @g@2;@r$  )r!   r4  r   r   )rF   r5  jn10jn3010s       rG   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rK   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-  5      e   Mr     g )Nc                 <   > T" U S-
  U5      T" U S-   U5      -
  S-  $ )Nra   rS   r
  )ro   r5  r3  s     rG   jnp(TestBessel.test_jnjnp_zeros.<locals>.jnp,  s'    qs1I1Q3q	)1,,rK   ra   r]   r   r  r  zInvalid t return for nt=%d)r!   r3  r   jnjnp_zerosrh  r   AssertionError)rF   rB  ntr}  ro   r  tzznnttr3  s             @rG   test_jnjnp_zerosTestBessel.test_jnjnp_zeros)  s    ZZ	-2,B ,,R0JA!!!l
7#BrJ=1W#CK>()E)JKK + rK   c                     [         R                  " SS5      n[        U[        / SQ5      S5        [         R                  " SS5      n[	        [         R
                  " SU5      SSS9  g )	Nra   r   g(yu?gOXeS@ga!@gxi'@g'Nw(-@rQ     r   r)  r  )r!   	jnp_zerosr   r   r   r  )rF   rB  s     rG   test_jnp_zerosTestBessel.test_jnp_zeros8  sZ    !$!#u .: (; <=		>
 A&C-qu=rK   c           
          [         R                  " SS5      n[        U[        / SQ5      [        / SQ5      [        / SQ5      [        / SQ5      4S5        g )Nra   r   r2  rN  )"@g+@g-9(1!@gȘ'@g>tA}-@)g0v@gjt@gH.?$@g}"O*@gGŧp0@)r!   
jnyn_zerosr   r   )rF   jnzs     rG   test_jnyn_zerosTestBessel.test_jnyn_zerosB  sa      1%!#u .: (;
 (- .: (;
 (- .: (;
 (- .: (;'<& =>'	?rK   c                     [         R                  " SS5      n[         R                  " SS5      [         R                  " SS5      -
  S-  n[        XS5        g )NrS   ra   r   r  )r!   r  r7  r   )rF   jvprimjv0s      rG   test_jvpTestBessel.test_jvpY  s?    Qq!zz!Awzz!A.1Fr*rK   c                 v    [         R                  " S5      n[         R                  " SS5      n[        XS5        g r  )r!   r@  r  r   )rF   ozkozkrs      rG   rA  TestBessel.test_k0^  )    jjnzz!BCQ'rK   c                 v    [         R                  " S5      n[         R                  " SS5      n[        XS5        g r  )r!   rE  r  r   )rF   ozkeozkers      rG   rF  TestBessel.test_k0ec  )    {{2Ab!Dq)rK   c                 v    [         R                  " S5      n[         R                  " SS5      n[        XS5        g r  )r!   rJ  r  r   )rF   o1ko1krs      rG   rK  TestBessel.test_k1h  rb  rK   c                 v    [         R                  " S5      n[         R                  " SS5      n[        XS5        g r  )r!   rN  r  r   )rF   o1keo1kers      rG   rO  TestBessel.test_k1em  rg  rK   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5        [	        UR
                  [        X-   S-   X-
  /5      S-  S5        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5        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5        g )Nr   ra   r   rS   r   r  r   rQ   r   rW   r  r  g      H@)rf   rl   r!   jacobir   r  r   )
rF   r  r  P0P1P2P3cpp2cp3cs
             rG   test_jacobiTestBessel.test_jacobir  s1   bii  1$bii  1$^^Aa"^^Aa"^^Aa"^^Aa"!"$$s2.!"$$uac!eAC['9#'=bAs1uqs1uoq!#a%y!A#1Q31>!uRU1RU7]2a5A;r!u#45!"$$uSz#~b9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!"$$uSz$r:rK   c                 L    [         R                  " SS5      n[        USS5        g )Nr   r.  _2?r  )r!   rf  r   )rF   kn1s     rG   rg  TestBessel.test_kn  s    jj2C 215rK   c                 p    [        [        R                  " SS5      [        R                  " SS5      5        g Nr   rX  r  r   r!   r  rE   s    rG   test_negv_kvTestBessel.test_negv_kv  s"    WZZS)7::dC+@ArK   c                 L    [         R                  " SS5      n[        USS5        g )Nr   r.  r|  r  r!   r  r   )rF   kv0s     rG   test_kv0TestBessel.test_kv0  s    jj2C!3R8rK   c                 L    [         R                  " SS5      n[        USS5        g )Nra   r.  gKދ@r  r  )rF   kv1s     rG   test_kv1TestBessel.test_kv1      jj3C!2B7rK   c                 L    [         R                  " SS5      n[        USS5        g )NrS   r.  g)lHH@r  r  )rF   kv2s     rG   test_kv2TestBessel.test_kv2  r  rK   c                 F    [        [        R                  " SS5      S5        g )Nr  ra   g.Ք"H)r   r!   rf  rE   s    rG   test_kn_largeorderTestBessel.test_kn_largeorder  s    

2q)+ABrK   c                 F    [        [        R                  " SS5      S5        g )Nr   g =`XCr  rE   s    rG   test_kv_largeargTestBessel.test_kv_largearg  s    WZZ4(!,rK   c                 p    [        [        R                  " SS5      [        R                  " SS5      5        g r  )r   r!   r  rE   s    rG   test_negv_kveTestBessel.test_negv_kve  s"    W[[c*GKKc,BCrK   c                     [         R                  " SS5      n[         R                  " SS5      [        S5      -  n[	        XS5        Sn[         R                  " SU5      n[         R                  " SU5      [        U5      -  n[	        XES5        g )Nr   r.  r  r,  )r!   r  r  r   r   )rF   kve1r  r}  kve2r  s         rG   r  TestBessel.test_kve  sl    {{1R jj2s2w&DQ'{{1Qjj1oc!f$DQ'rK   c           	      v    Sn[        [        R                  " SU5      * [        R                  " SUSS9S5        g )NrX  ra   r   ro   r  )r   r!   r  kvp)rF   r}  s     rG   test_kvp_v0n1TestBessel.test_kvp_v0n1  s-    WZZ!_,gkk!A.CRHrK   c                     SnSn[         R                  " US-   U5      * X-  [         R                  " X5      -  -   n[         R                  " XSS9n[        X4S5        g )Nr   rX  ra   r  r  r!   r  r  r   rF   r  r}  xcr5  s        rG   test_kvp_n1TestBessel.test_kvp_n1  sQ    jj1Q!#gjjo"55KKq!B2&rK   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5        g )Nr   rX  rS   ra   r  r  r  r  s        rG   test_kvp_n2TestBessel.test_kvp_n2  sj    d1a4ik1a4'**Q/1GJJqs14Ea4GGKK"B2&rK   c                 v    [         R                  " S5      n[         R                  " SS5      n[        XS5        g r  )r!   r  r  r   r  s      rG   r  TestBessel.test_y0  r  rK   c                 v    [         R                  " S5      n[         R                  " SS5      n[        XS5        g r  )r!   r  r  r   r  s      rG   r  TestBessel.test_y1  r  rK   c                 <   [         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5        [        [	        [         R
                  " SU5      U-
  5      SS5        g )NrS   ra   rq  r   ry  )r!   y0_zerosr   r   r  r  )rF   yoypozozpor  allvals          rG   test_y0_zerosTestBessel.test_y0_zeros  s{    !!!$!!!A.iCG!#gjjS&9":3rB!#gjj3&7&>"?BGrK   c                 v    [         R                  " S5      n[        U[        S/5      [        S/5      4S5        g )Nra   rT  gѮBO?r   )r!   y1_zerosr   r   )rF   r  s     rG   test_y1_zerosTestBessel.test_y1_zeros  s1    a !"eWI&6ugY7G%HKrK   c                 t    [         R                  " SSS9n[        U[        S/5      [        S/5      4S5        g )Nra   r  yL
F%u?!rh?y;OnгY?r   )r!   	y1p_zerosr   r   )rF   y1ps     rG   test_y1p_zerosTestBessel.test_y1p_zeros  s9    !,!M?#UO+<%=>	
rK   c                     [         R                  " SS5      n[        U[        SS/5      S5        [         R                  " SS5      n[	        U/ SQSS	9  g )
NrQ   rS   g3@g(A&"@r   rO  )g]E.+"|@gH(|@gff|}@g&b`~@gHO_~@r)  rZ   )r!   yn_zerosr   r   r   )rF   ans     rG   test_yn_zerosTestBessel.test_yn_zeros  sP    a"!"UGW+=%>qAc!$ 4
 #	%rK   c                 >   [         R                  " SS5      n[        U[        SS/5      S5        [         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   rS   gQhվ@gzN@rW   +   r   r)  r  rO  r(  )r!   	ynp_zerosr   r   r   r  rF   aos     rG   test_ynp_zerosTestBessel.test_ynp_zeros  s|    q#!"UJ
+C%DQGr!$B+QU;s1%C,ad;rK   c                 r    [         R                  " SS5      n[        [         R                  " SU5      SSS9  g )NrO  r   r   r  r  )r!   r  r   r  r  s     rG   test_ynp_zeros_large_order%TestBessel.test_ynp_zeros_large_order  s+    s1%C,ae<rK   c                 L    [         R                  " SS5      n[        USS5        g Nra   r.  5,1
r  )r!   r  r   )rF   yn2ns     rG   r  TestBessel.test_yn  s    zz!BD!4Q7rK   c                 `    [         R                  " SS5      nU[        R                  * :X  d   eg )Nr_   ra   )rC   r  rf   r   )rF   observeds     rG   test_yn_gh_20405TestBessel.test_yn_gh_20405  s&    99S!$BFF7"""rK   c                 t    [        [        R                  " SS5      [        R                  " SS5      * S5        g r  )r   r!   r  rE   s    rG   test_negv_yvTestBessel.test_negv_yv  r!  rK   c                 L    [         R                  " SS5      n[        USS5        g r  )r!   r  r   )rF   yv2s     rG   r  TestBessel.test_yv  s    jj2C 3A6rK   c                 t    [        [        R                  " SS5      [        R                  " SS5      * S5        g r  )r   r!   r  rE   s    rG   test_negv_yveTestBessel.test_negv_yve   r*  rK   c                     [         R                  " SS5      n[        USS5        [         R                  " SS5      [	        S5      -  n[         R                  " SS5      n[        X2S5        g )Nra   r.  r  r  r,  rV   )r!   r  r   r  r   )rF   yve2yve2ryve22s       rG   r   TestBessel.test_yve  sR    {{1R D!4Q7

1U#CG+Ae$E*rK   c                     [         R                  " SS5      [         R                  " SS5      -
  S-  n[         R                  " SS5      n[        X!S5        g )Nra   r.  r   r   rS   r  )r!   r  r  r   )rF   yvpryvp1s      rG   test_yvpTestBessel.test_yvp
  sA    

1R 7::a#33S8{{1R !$B/rK   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  r3  )ir  rV   r   r        i@g     y@g     Ă@g@  i'  Nr   ir  r  )	itertoolsproductr   )rF   r  r}  s      rG   _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 )Nrp  u <7~r   )r  r[   re   )	r  r   rf   r  r   r  r   r{  r   )rF   r  f2r[   re   r  r  r}  c1c2c3s              rG   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*.; 2rK   ppc64lezfails on ppc64lert  c                 `    U R                  [        R                  [        R                  SSS9  g )Nrc   u5% r  )r  r!   r7  r3  rE   s    rG   test_jv_cephes_vs_amos!TestBessel.test_jv_cephes_vs_amos*  #     	!!'**gjju6!RrK   c                 `    U R                  [        R                  [        R                  SSS9  g )Ndy=r	  r  r  r!   r  r  rE   s    rG   test_yv_cephes_vs_amos!TestBessel.test_yv_cephes_vs_amos/  r	  rK   c                 h    S nU R                  [        R                  [        R                  SSUS9  g )Nc                     [        U 5      S:  $ )Nr  )r  )r  r}  s     rG   skipperDTestBessel.test_yv_cephes_vs_amos_only_small_orders.<locals>.skipper5  s    q6B;rK   r	  r	  )r[   re   r  r		  )rF   r	  s     rG   (test_yv_cephes_vs_amos_only_small_orders3TestBessel.test_yv_cephes_vs_amos_only_small_orders4  s-    	!!'**gjju6'. 	" 	0rK   c                     [         R                  " SS9   U R                  [        R                  [        R                  SSS9  S S S 5        g ! , (       d  f       g = f)Nr  r  g:0y5>r	  r  )rf   r  r  r!   r!  rE   s    rG   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 ra   r   rV   rS   r=  r.  r  r   r  r  rp  r  gYngH׊>)rf   rl   ry   r  r  r/  r  r  r!   r!  r   r  r   argmaxr   )	rF   Nr  r5  imskr  r  dcrp   s	            rG    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!   r  rf  rE   s    rG   test_kv_cephes_vs_amos!TestBessel.test_kv_cephes_vs_amos^  s@    !!'**gjjt&!Q!!'**gjjt&!QrK   c                     [        [        R                  " SS5      S5        [        [        R                  " SS5      S5        [        [        R                  " SS5      S5        g )	Nr   rQ   gP?r3  r  g~Omʒ?gY8E@@gKSn)r   r!   r7  rE   s    rG   test_ticket_623TestBessel.test_ticket_623b  sD    

1a(*=>

3-/AB

3	24GHrK   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 BesselsrV   ra   gl)ܿr  gPj?gk?g%E*2ig敋?gw--`?gÉB?gW?r  g޴?gz|?a?gpx%?y      ?        y      ?      ?yYD?`{1wy6x?B]#Ӯ?y ?b>?y.}9d?8kؿy      ?333333?r  y333333?      ?rz  N)r   r!   r7  r  r!  r  r;  r   r  r&  r  r  r  rE   s    rG   test_ticket_853TestBessel.test_ticket_853g  s    	

2q)+>?

2q)+=>

2q)+=>

2q)+=>

2q)+=>

2q)+=>

2q)+=>

2q)+<=

4+-CD

4+-?@

4+->?

4+-?@

2t,.AB

2t,.@A

2t,.@A

2t,.@A

2t,.@A

2t,.@A

2t,.@A

2t,.?@

4.0FG

4.0UV

4.0BC

4.0UV

4.0AB

4.0RS

4.0BC

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

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

4(=%==	
rK   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   rV   ra   r   rS   rQ   N)r   r   r!   r7  r!  r  r  r;  r&  r  r  rM   r  r  rE   s    rG   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KrK   c                     [        [        R                  " SS5      [        R                  :H  5        [        [        R
                  " SS5      [        R                  :H  5        g )Nr  r   )r   r!   r  rf   r   r  rE   s    rG   test_gh_7909TestBessel.test_gh_7909  s:    

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

1c*,AB

4.0EFrK   c                 F    [        [        R                  " SS5      S5        g )Nr  ra   r$	  r.	  rE   s    rG   test_iv_hyperg_polesTestBessel.test_iv_hyperg_poles  s    

4+->?rK   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   rS   r   ra   rV   r  )r   r/  r   r   r!   r  r   r   r   r  r  r   r  sumrF   r  r}  ro   rp   rv  r=  s          rG   	iv_seriesTestBessel.iv_series  s    1aL'qsUC1I! 44wqs1u7MM%(F!fjjlU6]...2S2Z]Buuw|rK   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   re   r  )r7	  r   r!   r  rF   r}  valuer=  s       rG   test_i0_seriesTestBessel.test_i0_series  2    !A1-JEGJJqM5AF "rK   c                 |    S H6  nU R                  SU5      u  p#[        [        R                  " U5      X#US9  M8     g )Nr:	  ra   r;	  )r7	  r   r!   r  r<	  s       rG   test_i1_seriesTestBessel.test_i1_series  r@	  rK   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;	  )r7	  r   r!   r!  rF   r  r}  r=	  r=  s        rG   test_iv_seriesTestBessel.test_iv_series  s=    7A,!^^A1


1 0%A6R - 8rK   c           	          SS/SS/SS/SS/SS/S	S
/SS/SS//n[        U5       H9  u  nu  p4[        R                  " U5      [        U* 5      -  n[	        XTSSU-  S9  M;     g )Nr   r   rc   rw  g0oO?r   g!?grb?r  gpH?r   gC~?r   ggo?r  r  r  )r  r!   r  r   r   rF   r   r   r5  r  r  s         rG   r  TestBessel.test_i0  s    *#,%%%%%& #6*IAvAaR(Bq*q.A +rK   c                 v    [         R                  " S5      n[         R                  " SS5      n[        XS5        g r  )r!   r  r&  r   )rF   oizeoizers      rG   r  TestBessel.test_i0e  rg  rK   c                     SS/SS/SS/SS/SS	/S
S/SS//n[        U5       H9  u  nu  p4[        R                  " U5      [        U* 5      -  n[	        XTSSU-  S9  M;     g )Nr   rc   gj|=rw  gȕ![1?r   g;͘?r   gRΜ?r   g|?r   g}f?r  r  r  )r  r!   r  r   r   rI	  s         rG   r  TestBessel.test_i1  s    *01%%%%& #6*IAvAaR(Bq*q.A +rK   c                 v    [         R                  " S5      n[         R                  " SS5      n[        XS5        g r  )r!   r  r&  r   )rF   oi1eoi1ers      rG   r  TestBessel.test_i1e  rg  rK   c                 r    [        [        R                  " S5      5      n[        U[        SS/5      S5        g )Nr   gїJB?@g*u?)r   r!   r  r   )rF   iti0s     rG   r  TestBessel.test_iti0k0  s2    W^^A&'!%'9:;	
rK   c                 `    [         R                  " S5      n[        U[        SS/5      S5        g )Nrw  gݳɄ|T?gVƥ
@rW   )r!   r  r   r   )rF   it2ks     rG   r  TestBessel.test_it2i0k0  s-    r"!(*<=>	
rK   c                 d    [         R                  " SS5      [        S5      -  n[        USS5        g )Nr   rw  皙gv M?r  )r!   r!  r   r   )rF   iv1s     rG   r"  TestBessel.test_iv  s(    jj2s3x'C 3B7rK   c                 p    [        [        R                  " SS5      [        R                  " SS5      5        g r
  )r   r!   r&  rE   s    rG   test_negv_iveTestBessel.test_negv_ive  s"    W[[1%w{{2a'89rK   c                     [         R                  " SS5      n[         R                  " SS5      [        S5      -  n[	        XS5        g )Nr   rw  r\	  r  )r!   r&  r!  r   r   )rF   ive1r]	  s      rG   r'  TestBessel.test_ive
  s5    {{1R jj2s3x'DR(rK   c                 r    [        [        R                  " SS5      [        R                  " SS5      S5        g )Nra   rS   r   r  )r   r!   r!  ivprE   s    rG   	test_ivp0TestBessel.test_ivp0  s#    GJJqOW[[1-=rBrK   c                     [         R                  " SS5      [         R                  " SS5      -   S-  n[         R                  " SS5      n[        X!S5        g )Nr   rS   ra   r  )r!   r!  rf	  r   r  s      rG   test_ivpTestBessel.test_ivp  s?    ZZ!_wzz!A.1KK!A#rK   r
  )r	  r   N)   )Xr  r  r  r  r  r  r  r,  r0  r4  r  r8  r(  r<  r9  r>  rK  rQ  rW  r\  rA  rF  rK  rO  ry  rg  r  r  r  r  r  r  r  r  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/	  r2	  r7	  r>	  rB	  rF	  r  r  r  r  r  r  r"  r`	  r'  rg	  rj	  r  r
  rK   rG   r  r    s(   

8&
&
9D	BF-L8G$L>?.+
(
*
(
*
;$6B988C-D(I''&
&
HL
	%<=8#
D7F+0

C; [[x'')Y60  2S2S [[x'')Y60  2S2S0V [[
 
>RI
0
dL"/G
@G
G
SB*
B*


8:)
C$rK   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5        [        UR                  SS/S5        [        UR                  [	        / S	Q5      S
-  S5        [        UR                  [	        / SQ5      S-  S5        [        UR                  [	        / SQ5      S-  S5        [        UR                  [	        / SQ5      S-  S5        g )Nr   ra   rS   r   rQ   r   r  rV   )ra   r  rS   r   )rV   r  irW   r-  )ra   iH   ir,  r  )rV   r%  i8iX  ir  r  )r!   laguerrer   r  r   )rF   lag0lag1lag2lag3lag4lag5s          rG   test_laguerreTestLaguerre.test_laguerre  s    """"""!$&&!R0!$&&"Q3!$&&x)<R@!$&&|)<S)@D!$&&/@)A$)FrJ!$&&/H)I%)OPRSrK   c                 ^   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
-  5        [        UR
                  [        SSUS-   -  SUS-   -  US-   -  US-   US-   -  US-   -  /5      S-  5        g )Nr   r  r   ra   rS   r   rV   r  r   r   r  r-  )rf   rl   r!   rF  r   r  r   r   )rF   rp   rt	  ru	  rv	  rw	  s         rG   test_genlaguerreTestLaguerre.test_genlaguerre'  s   bii  3&""1Q'""1Q'""1Q'""1Q'TVVaS!TVVb!a%[)FF1R1Xqtadm,-c1	
 	FF2a1gb!A#h!nacAaC[!A#->?@D	
rK   r
  N)r  r  r  r  rz	  r}	  r  r
  rK   rG   rp	  rp	    s    T
rK   rp	  c                       \ rS rSrS rSrg)
TestLambdai9  c           
      z   [         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5        g )Nra   rw  r   rS   r  r   r  )r!   lmbdar   r3  r  r7  r   )rF   lamlamrs      rG   
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
 	"#1-rK   r
  N)r  r  r  r  r	  r  r
  rK   rG   r	  r	  9  s    .rK   r	  c                        \ rS rSrS rS rSrg)	TestLog1piC  c                     [         R                  " S5      [         R                  " S5      [         R                  " S5      4n[        S5      [        S5      [        S5      4n[        XS5        g )Nr  ry  r  r  r  r!   r  r   r   )rF   l1pl1prls      rG   r  TestLog1p.test_log1pD  sK    }}R '--"3W]]25FGR#b'3r7+!#A.rK   c                     [         R                  " S5      [         R                  " S5      [         R                  " S5      4n[        S5      [        S5      [        S5      4n[        XS5        g )Nra   r  r  rS   rW  rX  r  r	  )rF   l1pml1pmrls      rG   test_log1pmoreTestLog1p.test_log1pmoreI  sK    a '--"4gmmC6HIa&S#c(+!$a0rK   r
  N)r  r  r  r  r  r	  r  r
  rK   rG   r	  r	  C  s    /
1rK   r	  c                   &    \ rS rSrS rS rS rSrg)TestMathieuiO  c                     g rO  r
  rE   s    rG   r  TestMathieu.test_mathieu_aQ  rQ  rK   c                 2    [         R                  " SS5        g )NrS   r   )r!   r,   rE   s    rG   test_mathieu_even_coef"TestMathieu.test_mathieu_even_coefT  s    !!!A&rK   c                     g rO  r
  rE   s    rG   test_mathieu_odd_coef!TestMathieu.test_mathieu_odd_coefX  s    rK   r
  N)r  r  r  r  r  r	  r	  r  r
  rK   rG   r	  r	  O  s    'rK   r	  c                        \ rS rSrS rS rSrg)TestFresnelIntegrali]  c                     g rO  r
  rE   s    rG   r  $TestFresnelIntegral.test_modfresnelp_  rQ  rK   c                     g rO  r
  rE   s    rG   r  $TestFresnelIntegral.test_modfresnelmb  rQ  rK   r
  N)r  r  r  r  r  r  r  r
  rK   rG   r	  r	  ]  s    rK   r	  c                       \ rS rSrS rSrg)TestOblCvSeqif  c                 d    [         R                  " SSS5      n[        U[        / SQ5      S5        g )Nr   r   ra   )g~T~Oֿgt_J?gm{@g@j'&@r   )r!   
obl_cv_seqr   r   )rF   obls     rG   test_obl_cv_seqTestOblCvSeq.test_obl_cv_seqg  s1      1Q'!#e -9 ': ;<	=rK   r
  N)r  r  r  r  r	  r  r
  rK   rG   r	  r	  f  s    =rK   r	  c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)TestParabolicCylinderio  c                 |    [         R                  " SS5      n[        U[        SS/5      [        SS/5      4S5        g )Nra   rw  gQ?gx$(~?gx$(~g(\?rQ   )r!   pbdn_seqr   r   )rF   pbs     rG   test_pbdn_seq#TestParabolicCylinder.test_pbdn_seqp  sK    a#!"eV.4-6 '7&+W-3-5 '6&7 89	:rK   c                     [         R                  " SS5        S[         R                  " SS5      S   -  [         R                  " SS5      S   -
    g )Nra   r.  rw  r   )r!   rR  rE   s    rG   rS  TestParabolicCylinder.test_pbdvw  s=    Qra#A&&a);A)>>rK   c                     [         R                  " SS5      n[         R                  " SS5      n[        U[	        US   5      [	        US   5      4S5        g )Nra   rw  r   rQ   )r!   r	  pbdv_seqr   r   )rF   pbnpbvs      rG   test_pbdv_seq#TestParabolicCylinder.test_pbdv_seq{  sG    q$q$!#tCF|DQL&A!DrK   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 )Nr  r  r   rS   r   r   r   r  r  gGz$@gq=
ףp4@gHQ9r   rZ   g(\#gQ@gkS a>)rf   r  r   r   r!   r  r   rR  )rF   etar}  s      rG   test_pbdv_points&TestParabolicCylinder.test_pbdv_points  s    kk#r1%AJrwwruu~%gnnR3Y&??S"-a0!%eL 	UE2157JQVWUD1!46JQVWrK   c                 j   [         R                  " SSS5      S S 2S 4   n[         R                  " SSS5      S S S 24   n[        R                  " X!5      nSS[	        U5      -  -   n[        R                  " X!U-   5      S   [        R                  " X!U-
  5      S   -
  U-  S	-  n[        US
   USSS9  g Nr  rQ   r  r  r  r   r  r   r   ra   r  r  )rf   r  r!   rR  r  r   rF   r5  r	  r  r  dps         rG   test_pbdv_gradient(TestParabolicCylinder.test_pbdv_gradient      KKAq!!D&)kk#r1%d1f-LL T#a&[ ll3C(+gll3C.H.KKsRUWW!bt$7rK   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	  )rf   r  r!   rV  r  r   r	  s         rG   test_pbvv_gradient(TestParabolicCylinder.test_pbvv_gradient  r	  rK   c                     [         R                  " SS5      u  p[        U[        R                  " / SQ5      5        [        U[        R                  " / SQ5      5        g )NrS   r   )g:4@g1{н?g7,%n?)gX@g=<'?gʠ?)r!   pbvv_seqr   rf   r   )rF   res1res2s      rG   test_pbvv_seq#TestParabolicCylinder.test_pbvv_seq  sL    %%a+
bhh (< = 	> 	bhh (; < 	=rK   r
  N)r  r  r  r  r	  rS  r	  r	  r	  r	  r	  r  r
  rK   rG   r	  r	  o  s'    :?E
X88=rK   r	  c                       \ rS rSrS rSrg)TestPolygammai  c           	      v   [         R                  " SS5      n[         R                  " SS5      n[        USS5        [        USS5        / SQn[        [         R                  " SU5      [         R                  " U5      5        / S	Qn/ S
Qn/ SQn[        [         R                  " XC5      U5        [        R
                  " U/S-  5      n[        [         R                  " U[        R
                  " U/S-  5      5      U5        [        [         R                  " [        R
                  " U/S-  5      U5      U5        g )NrS   ra   r   gX];r  gOV,@@)rS   r   g  8Br   r_  r  )g2}jg.M?g}2;ο)r!   	polygammar   r  rf   r  )rF   poly2poly3r5  ro   r~  s         rG   test_polygammaTestPolygamma.test_polygamma  s    !!!A&!!!A&E-3E,r2 G--a3W[[^D *G--a3X>99hZ\*G--aA3q51AB$	&G--biiA.>B$	&rK   r
  N)r  r  r  r  r	  r  r
  rK   rG   r	  r	    s    &rK   r	  c                       \ rS rSrS rSrg)TestProCvSeqi  c                 d    [         R                  " SSS5      n[        U[        / SQ5      S5        g )Nr   r   ra   )g"~j?g6?Ң@g)u8F"@g2g)@r   )r!   
pro_cv_seqr   r   )rF   prols     rG   test_pro_cv_seqTestProCvSeq.test_pro_cv_seq  s1    !!!Aa(!$u .: (; <=	>rK   r
  N)r  r  r  r  r	  r  r
  rK   rG   r	  r	    s    >rK   r	  c                       \ rS rSrS rSrg)TestPsii  c                 J    [         R                  " S5      n[        USS5        g )Nra   goxr  )r!   r  r   )rF   pss     rG   r  TestPsi.test_psi  s    [[^B3A6rK   r
  N)r  r  r  r  r  r  r
  rK   rG   r	  r	    s    7rK   r	  c                        \ rS rSrS rS rSrg)
TestRadiani  c                 \    [         R                  " SSS5      n[        U[        S-  S5        g )Nr  r   r   r   r!   r  r   r   )rF   rads     rG   r  TestRadian.test_radian  s$    nnR!$C3q)rK   c                 b    [         R                  " SSS5      n[        U[        S-  S-   S5        g )Nr  ra   r  rS   gC?r   r	  )rF   rad1s     rG   test_radianmoreTestRadian.test_radianmore  s*    ~~b2&DA&;!;A>rK   r
  N)r  r  r  r  r  r	  r  r
  rK   rG   r	  r	    s    *?rK   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5        g N)rS   r.  T)
derivativer   ra   r  )rf   emptyr   r!   spherical_jnr   
riccati_jn)rF   r	  r5  Sro   r  jps          rG   test_riccati_jnTestRiccati.test_riccati_jn      HHaVqA$$Q*A%%at<BSAacFTAXAacF	 
 	"!W%7%71%=qArK   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5        g r	  )rf   r	  r   r!   spherical_ynr   
riccati_yn)rF   r	  r5  Cro   r|  yps          rG   test_riccati_ynTestRiccati.test_riccati_yn  r	  rK   r
  N)r  r  r  r  r	  r	  r  r
  rK   rG   r	  r	    s    BBrK   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  rZ   )numpyrl   default_rnguniformstackr*   r   )rF   rf   rs   ro   rH  rI  a3a4r  r  r  s              rG   test_softplusTestSoftplus.test_softplus  s     	ii##M2[[s[+[[bq[)[[T[*[[![,HHbb%& TQKHJ
 qku-rK   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   rS   r   )outwhere)rf   r   onescopyr*   r   )rF   r5  r
  r  r
  s        rG   test_softplus_with_kwargs&TestSoftplus.test_softplus_with_kwargs  sU    IIaL1ggajhhjA5)ah'
!rK   r
  N)r  r  r  r  r	
  r
  r  r
  rK   rG   r 
  r 
    s    .:"rK   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%@)r  r  r  ry  )r
  mapr   r!   r  r   )rF   rndrndrls      rG   r  TestRound.test_round  sX    3sW]]40$]]40$]]40$]]402 3 4 3%rK   r
  N)r  r  r  r  r  r  r
  rK   rG   r
  r
    s    &rK   r
  c            
         [         R                  n [        R                  n[        R                  n[        R
                  n[        R                  n[        R                  n[        5        nUR                  [        S9  [        U " SSSS5      SU" U5      -  5        [        U " SSSUS-  5      SU" S	S
U-  -  5      -  U" US-  5      S
-  -  5        [        U " SSSUS-  5      SU" S	S
U-  -  5      -  5        [        U " SSXS-  5      SU" SS
U-  -  5      -  U" SS
U-  S-  -   5      -  U" US
-  5      S
-  -  5        [        U " SSUS-  US-  5      SU" SS
U-  -  5      -  U" SS
U-  S-  S-  -   5      -  U" US-  5      S
-  -  SU" US-  5      S
-  -  S-
  -  5        [        U " SSUS-  US-  5      SU" SS
U-  -  5      -  U" SSU-  S-  S-  -   5      -  U" US-  5      S-  -  5        S S S 5        g ! , (       d  f       g = f)Ncategoryr   r   r  rS   r   rQ   r  r  r   r   rz  rg  r   r  r   g      @ra   r   r-  g      ?g     A@)r!   sph_harmrf   r   r   r   r	   r
   r    r  DeprecationWarningr   )shr   r   r   r	   r
   r  s          rG   test_sph_harmr
  )  s1    
		B	B
&&C77D
&&C
&&C		

.
/!"Qq1+48|	!"R"RT"2Dbe%%BqD	B	  	""R"RT"2Dbe%%	'!"QqqD/DRU$$1RU2X:"2b5z2~.	/ 	""QqBr"u"5tB2J''1RU2Xb[=!"2b5z2~ 3r"u:r>!!#%	&
 	""QqBr"u"5S"R%[))1RU2Xb[=!""%be*b.1	2# 
		s   +FG;;
H	c            	         [         R                  " [         R                  5      n [        5        nUR	                  [
        S9  [        [        R                  " SSSS5      R                  U 5        [        [        R                  " S/SSS5      R                  U 5        [        [        R                  " SS/SS5      R                  U 5        [        [        R                  " SSS/S5      R                  U 5        [        [        R                  " SSSS/5      R                  U 5        [        [        R                  " S/S/S/S/5      R                  U 5        S S S 5        g ! , (       d  f       g = f)Nr
  r   )	rf   r  r  r    r  r
  r   r!   r
  )dtr  s     rG   "test_sph_harm_ufunc_loop_selectionr"
  H  s   	"--	 B		

.
/W%%aAq177<W%%qc1a3992>W%%a!a3992>W%%aQC3992>W%%aAs3992>W%%qcA3aS9??D 
		s   D*E""
E0c                   0    \ rS rSrSS jrS rS rS rSrg)	
TestStruveiU  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   rV   r   rS   ra   r  )	r   r!   r  r  r  r   r   r  r5	  r6	  s          rG   _seriesTestStruve._seriesV  s    1aL!Gr!tqs1uQw''ae(<<W]]13s7=SS!fjjlU6]...2uuw|rK   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)
ir  (\r  rV   r   ra   r  r     )ra   r  r+  r  r]   r   r  N)r&
  r   r!   r  rE	  s        rG   test_vs_seriesTestStruve.test_vs_series]  sG    BA(!\\!/
q 4e!#NQRPVV ) CrK   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 )Nr)
  r  g;cv=?r  rZ   gQ g< j?r$  r  rl	  g?r   g       igzz?r	  i)   r  r  ry  gffffffrV   g333333$)r   r!   r  r   r   r   rE   s    rG   test_some_valuesTestStruve.test_some_valuesd  s   ub1?Nub1?NtS1?OtS1?OW^^C-sB0G/GHW^^C-sB0G/GHW^^C-sB0G/GHW^^C-sB0G/GHgnnT2./0gnnUB/01rK   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  rE   s    rG   test_regression_679TestStruve.test_regression_679q  sk    tY7tY7	9tY7tY7	9tY7tY7	9rK   r
  N)r  )	r  r  r  r  r&
  r+
  r/
  r2
  r  r
  rK   rG   r$
  r$
  U  s    W29rK   r$
  c                  F    [        [        R                  " SS5      S5        g )Nr  r   gdX	
?)r   r!   r   r
  rK   rG   test_chi2_smalldfr5
  {  s    c!,.?@rK   c                  b    [        [        R                  " S[        R                  5      S5        g )Nr  r   )r   r!   r   rf   r   r
  rK   rG   test_ch2_infr7
    s    s266*C0rK   c                  F    [        [        R                  " SS5      S5        g )Nr  r   yj_?)r   r!   r   r
  rK   rG   test_chi2c_smalldfr:
    s    s1-/BCrK   c                  F    [        [        R                  " SS5      S5        g )Nr  r9
  r   )r   r!   r   r
  rK   rG   test_chi2_inv_smalldfr<
    s    s+>?CrK   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 )'NrY   ra   rS   gDSYC?rZ   gQ_?g?@g>;,
i}@r   )ra   r   r   g=O?rV   r  r,  rW   gXs*@r  g   V4oAgO1eAgꌠ9Y>)FgEg^ 9^;gd-?gP.5_gsTNNeg6dgu?j/ g]XC}KdgѧRg"!x{{ r   g][#!Rr  gٍS1gN_ r   r  r  )r   r!   agmrf   r   r   r  r  r   r   r   )r[   agm13agm15agm35agm12fis         rG   test_agm_simplerD
    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3rK   c            	      P   [        5        n U R                  [        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)Nrj  ra   rx  g?rS   gffffff@)r    r  r  r   r!   expnr  r  r  rk  rf  r  r  r  )r  s    rG   test_legacyrG
    sU   		

>#RSW\\!S)7<<S+ABW^^Aq#.sC0MNW]]1a-w}}S#s/KLW^^Aq#.sC0MNW]]1c*GMM#s,CDWZZ3'C)=>WZZ3'C)=>W__Q,gooc3.GHW%%a-w/?/?S/IJ 
		s   HH
H%c                  *    SS K n U R                  5       $ rB   )	threadingLock)rI
  s    rG   errstate_lockrK
    s    >>rK   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  ra   y        .B}T)r!   r  r  r  r!  )rK
  s    rG   test_error_raisingrM
    sF    	'*'66

AuM + 
** 
s"   A%+AA%
A"	A%%
A3c                     S n [         R                  " SS[         R                  4S[         R                  4S/[        S9n[         R
                  USS/4   n[         R                  " U 5      " US S 2S4   US S 2S4   5      n[        [        R                  X1S	S	S
9  [         R                  " U 5      " US S 2S4   US S 2S4   5      n[        [        R                  XBS	S	S
9  g )Nc                     [         R                  " SS9   U S:X  a&  [         R                  " U5      (       d  U sS S S 5        $ U [         R                  " U5      -  sS S S 5        $ ! , (       d  f       g = fNr  )invalidr   )rf   r  r   r   r5  r|  s     rG   xfunctest_xlogy.<locals>.xfunc  sI    [[*Avbhhqkk +* {	 +**   #A$A$$
A2r   r   r   r   r   r  )r   rz  )ra   rz  ra   rY   r  )
rf   r   r   r   r   r   r   r:   r!   xlogy)rS
  z1z2w1w2s        rG   
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DrK   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rP
  )rf   r  r   r  rR
  s     rG   rS
  test_xlog1py.<locals>.xfunc  sI    [[*Avbhhqkk +* 288A;	 +**rU
  rV
  r   rW
  )ra   gKH9r  ra   rY   r  )	rf   r   r   r   r   r   r:   r!   xlog1py)rS
  rY
  r[
  s      rG   test_xlog1pyrb
    sq    ' 
UQK!RVVj!(-
/B	e	R!Wb1g	.BgoorEFrK   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      * $ rB   )rf   r   r!   rX
  rb  s    rG   rS
  test_entr.<locals>.xfunc  s&    q5FF7NMM!'''rK   r   r   r   rV   ra   r  otypesrY   r  )rf   r   r  r  r  r   r   r   r2  r:   r!   entr)rS
  r   signsr  sgnr  r}  r  s           rG   	test_entrrk
    s    (
 c266"FGE
C##E2

37 3
E"A
UBJJ<03AgllAu5ArK   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-   $ rB   )rf   r   r  r!   rX
  rR
  s     rG   rS
  test_kl_div.<locals>.xfunc  so    q5AEa1fa66M[[^^r{{1~~66M!VH==aC(1,q00rK   r   r   r   rV   ra   r  rf
  r   rY   r  )r  r  r  rf   r   r   r   r2  r:   r!   kl_div
rS
  r   ri
  r  sgnavasgnbvbr}  r  s
             rG   test_kl_divrv
    s    
1 FGE
C'//uM$

DGTW%& N
E"A
UBJJ<01Q31Q3@AgnnaUCrK   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                  $ rB   )r!   rX
  rf   r   rR
  s     rG   rS
  test_rel_entr.<locals>.xfunc+  s;    q5QU==aC((!VQ66MrK   ro
  rV   ra   r  rf
  r   rY   r  )r  r  r  rf   r   r   r   r2  r:   r!   rel_entrrq
  s
             rG   test_rel_entrr{
  *  s     FGE
C'//uM$

DGTW%& N
E"A
UBJJ<01Q31Q3@Ag&&5uErK   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   ra   rY   r  )rf   r   r   r!   rz
  inputsr~  r5  r|  s       rG    test_rel_entr_gh_20710_near_zeror
  <  sQ    XX  FH
 	q!tAq!tAG$$Q*H5qIrK   c                      [         R                  " SS9  [        R                  " / SQ5      n / SQnU S S 2S4   nU S S 2S4   n[	        [         R
                  " X#5      USSS9  g )	Nr  r  ))rQ   X )r  gZbti)r
  g  4&kC)gMG.@g)Z?g wa)r   ra   rY   r  )r!   seterrrf   r   r   rz
  r}
  s       rG   test_rel_entr_gh_20710_overflowr
  O  s]    NNx XX  FH
 	q!tAq!tAG$$Q*H5qIrK   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 )NrV   r  rS   r   r  r   c                     U S:  a  [         R                  $ [         R                  " U5      U :  a  S[         R                  " U5      -  $ U [         R                  " U5      SU -  -
  -  $ )Nr   r   )rf   r   r  squaredeltarv  s     rG   rS
  test_huber.<locals>.xfuncj  sQ    1966MVVAY1%%BFF1Ie344rK   r  rf
  r   ra   rY   r  )r   r!   huberrf   r   r   r
  rl   randnr   r2  r:   rS
  r}  r  s      rG   
test_huberr
  e  s    r3'0GMM!S)33+?@GMM!S)+>?5 			AA
UBJJ<01Q31Q3@AgmmQEBrK   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   rS   ra   )rf   r   r   r
  s     rG   rS
   test_pseudo_huber.<locals>.xfuncx  sB    1966M!8rwwqAGa<'781<==rK   r  rS   r   r   rf
  ra   rY   r  )
rf   r   rl   r
  tolistr   r2  r:   r!   pseudo_huberr
  s      rG   test_pseudo_huberr
  w  s    > 	Q'..0QHsAh3GGHA
UBJJ<01Q31Q3@Ag**Au5IrK   c                  P    Sn Sn[         R                  " X5      nSn[        X#SS9  g )Nr   gC]r2<gs.-De8rY   rZ   )r!   r
  r   )r
  rv  r|  r~  s       rG   test_pseudo_huber_small_rr
    s-    EAU&A &HAe,rK   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  r^   )r  warnsr  r+   r,   r
  rK   rG   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())TestStirling2i  ra   r   )r   ra   ra   )r   ra   r   ra   )r   ra   rU   rW   ra   )r   ra   r   r%  r  ra   )r   ra      r  A   r   ra   )r   ra   r@   r3  i^     r  ra   )	r   ra      i  i    i
     ra   )
r   ra      i  iZ  i'  iV
  i  $   ra   )r   ra   r   r$  i9  i  i+Y    i  r  ra   zis_exact, comp, kwargsTFr[   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 )Nra   r  )r   r	  tabler
  r-   )rF   is_exactcompkwargsro   k_valuesrows          rG   test_table_casesTestStirling2.test_table_cases  sT    
 q#djj/*AE!A#J'H**Q-CiX>I&I +rK   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  rQ   rS   r   r   r%  )r-   r
  rF   r
  r
  r
  s       rG   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&ArK   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 )NrV   r  r   rS   r-   r
  s       rG   test_negative_integer#TestStirling2.test_negative_integer  sL     	Yr2X.<V<Yr1H-q;F;Yq"H-q;F;rK   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 )Nr  r   rQ   r  )r
  r-   r   )rF   r
  r
  r
  anss        rG   test_array_inputsTestStirling2.test_array_inputs  s    
 zz"~a $**R."34YwBx(&1v%-/ 	 	YBx&1v%-/ 	 	YwBx( !1v%-/ 	rK   rY   c                 @    / SQn/ SQn/ SQnU" [        XVUS9U40 UD6  g )N)r   ra   r   r%  r
  r
  r
  )rV   r   r   r   r  r  r  )r  r   rS   r   r   rU   r   r  r
  rF   r
  r
  r
  r
  ro   rp   s          rG   test_mixed_valuesTestStirling2.test_mixed_values  s)     .$"Yq8,c<V<rK   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  rS   ra   N)rf   r   r   r-   r  r	  )rF   ro   Krp   s       rG   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%  r]   rR   rQ   Tr  l	   D,"SBXp!N l   wY)H_1e_*   r     )r   r   r-   )rF   r
  ro   rp   s       rG   test_big_numbersTestStirling2.test_big_numbers  s    ~'89:HG9Q6<<<<<:< =HH9Q6<<<<rK   r	  r  r   y      @      ?12r
  )r  r   2Nr
  c                     [         R                  " [        5         [        XUS9  S S S 5        g ! , (       d  f       g = f)Nr  )r  r   	TypeErrorr-   )rF   r	  r
  r
  s       rG   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)NrQ   ra   rQ   rQ   rQ   rQ   r  ra   rS   r   rQ   r  )r   r
  r  r  r   r
  r   r-   )rF   r
  r
  ro   rp   s        rG   !test_numpy_array_int_object_dtype/TestStirling2.test_numpy_array_int_object_dtype	  s^     djjmAB'(L/L/]]9%	!h7= &%%s   A44
Bc                     [        U R                  S   SS  5      n[        / SQ[        S9n[        / SQ[        S9nU" [        XVSS9U40 UD6  g )NrQ   ra   r
  r  r
  Fr  )r   r
  r2   r-   r
  s          rG   #test_numpy_array_unsigned_int_dtype1TestStirling2.test_numpy_array_unsigned_int_dtype  sK     djjmAB'(L1L1Yq5)39&9rK   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)ra   r   r%  r  )ra   rU   rW   ra   )r   r   r   r   r
  r
  r  rQ   )r   ra   rS   r   rQ   r   r   )r   ra   rU   rW   ra   r   F)r   r-   r   )rF   r
  r
  r
  r
  ro   rp   r0  s           rG   "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   ra   Tr  Fgh㈵>)r
  r   r-   rf   r  r  )rF   r5  ro   	k_entriesdenomr   s         rG   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	 rK   r
  N)r  r  r  r  r
  r  r  r  r   r   r
  r
  r
  r
  r
  r
  r
  rf   r   r
  r
  r
  r
  r
  r  r
  rK   rG   r
  r
    s   	
	
A!(07@E [[5	|R 	&%18 J	J [[5	|R 	&%18 B	B [[5	|R 	&%18 <	< [[5	|R 	&%18 	 [[5	|R 	&%18 =	=	
= [[S3D$"?@[[S"56[[Z$7, 8 7 A,
 [[Z$7> 8> [[5	|R 	&%18 :	: [[5	|R 	&%18 :	:6rK   r
  c                   h    \ rS rSrS r\R                  R                  S\\	/5      S 5       r
S rSrg)TestLegendreDeprecationi:  c                 |    Sn[         R                  " US9   [        SS5      nS S S 5        g ! , (       d  f       g = f)Nz$`scipy.special.lpn` is deprecated...r  ra   r   )r  r   r.   rF   r!  r0  s      rG   test_warn_lpn%TestLegendreDeprecation.test_warn_lpn<  s,    4###.Aq	A /..s   -
;xlpmnc                     SUR                    S3n[        R                  " US9   U" SSS5      nS S S 5        g ! , (       d  f       g = f)Nz`scipy.special.z` is deprecated...r  ra   r   )r  r  r   )rF   r
  messager0  s       rG   test_warn_xlpmn'TestLegendreDeprecation.test_warn_xlpmnA  s=    #ENN#33EF##'2aAA 322s	   9
Ac                     Sn[         R                  " US9   [        R                  " SSSS5      nS S S 5        g ! , (       d  f       g = f)Nz)`scipy.special.sph_harm` is deprecated...r  ra   r   )r  r   r!   r
  r
  s      rG   test_warn_sph_harm*TestLegendreDeprecation.test_warn_sph_harmG  s7    9###.  Aq!,A /..s	   :
Ar
  N)r  r  r  r  r
  r  r  r  r/   r0   r
  r
  r  r
  rK   rG   r
  r
  :  s5    
 [[WtUm4 5
-rK   r
  rO  )r  r  r  r  r  r
  rf   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   r   r   r   r    scipyr!   scipy.special._ufuncs_ufuncsrC   scipy.specialr"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   scipy._lib._utilr1   r2   scipy._lib._array_apir3   r4   r5   scipy.special._basicr6   r7   r8   scipy.special._testutilsr9   r:   r;   r  architecturerH  r  r  r?   r  rD  rM  rS  r  r  r  r  r3  rr  r  r  r  r  r2  rB  ri  rm  rX  rt  r  r  r  rp	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r 
  r
  r
  r"
  r$
  r5
  r7
  r:
  r<
  rD
  rG
  fixturerK
  rM
  r]
  rb
  rk
  rv
  r{
  r
  r
  r
  r
  r
  r  r1  r
  r
  r
  r
  rK   rG   <module>r
     sZ  (     
        *  
  & & 2 2 E E " H H * * . S S ! !  LLGq!W, XX 
xx v9 v9ryG yGx. . 
V> V>r9 90 0<oB oBdD/ D/NB+ B+J: ::JT JTZG0 G0T)= )=X_B _BD- -2/ /@!HM- M-`A. A.H@7 @7F&% &%R\6 \6~U	$ U	$p
 
B. .	1 	1  = =4= 4=n& &2> >7 7? ?B B,&" &"R& &$2>
E#9 #9LA1DD:4zK   
 N NE"GB D,F$J&J,C$J
- & &[6 [6|- -rK   