
    Cpjӈ                     P
   S r SSKrSSKrSSKJrJrJr  SSKrSSK	J
r  SSKJrJrJr  SSKJrJrJrJrJr   SSKr " S S5      r " S	 S
5      r " S S5      rS rS rS rSKS jrS rSKS jr S r!\RD                  RF                  \" \S5       " S S5      5       5       r$/ SQr%\RD                  RM                  S\%\% V s/ s H  o S   PM	     sn S9S 5       r'S r(S r)S r*S r+\RD                  RM                  S/ 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      S- 5       r,\RD                  RM                  S./ S/Q5      S0 5       r- " S1 S25      r. " S3 S45      r/ " S5 S65      r0\RD                  RM                  S7S8S9/5      S: 5       r1 " S; S<5      r2\RD                  RM                  S=SSS\Rf                  4SSS>\Rf                  4S\Rh                  S\Rf                  4S\Rh                  S>\Rf                  4\Rh                  SS\Rf                  4\Rh                  SS>\Rf                  4\Rh                  \Rh                  S\Rf                  4\Rh                  \Rh                  S>\Rf                  4/5      S? 5       r5\RD                  RM                  S@SSS\Rf                  4SS\Rh                  \Rf                  4SS>S\Rf                  4SS>\Rh                  S4\Rh                  SS\Rf                  4\Rh                  S\Rh                  \Rf                  4\Rh                  S>S\Rf                  4\Rh                  S>\Rh                  \Rf                  4/5      SA 5       r6\RD                  RM                  SB/ SCQ5      SD 5       r7\RD                  RM                  SESS8S\Rf                  4S8\Rh                  S>\Rh                  4S8S>\Rh                  \Rh                  4S8S>\Rh                  * \Rh                  * 4S8\Rh                  \Rh                  \Rh                  4S8S8\Rh                  \Rh                  4S8S>\Rh                  * \Rh                  * 4SFSGS>\Rf                  4/5      SH 5       r8\RD                  RM                  SISSS\Rf                  4SS>S\Rf                  4SS>\Rh                  \Rf                  4S8S>S>\Rf                  4S8S8\Rh                  \Rh                  * 4S8S8\Rh                  * \Rh                  4/5      SJ 5       r9g! \ a    \" S5      r GNf = fs  sn f )Lz
Test cdflib functions versus mpmath, if available.

The following functions still need tests:

- ncfdtridfn
- ncfdtridfd
- ncfdtrinc
- nctdtridf
- nctdtrinc

    N)assert_equalassert_allcloseassert_array_equal)MissingModulecheck_versionFuncData)ArgIntArgget_args	mpf2floatassert_mpmath_equalmpmathc                   $    \ rS rSrSrS rS rSrg)ProbArg   z*Generate a set of probabilities on [0, 1].c                      SU l         SU l        g )Nr      abselfs    [/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/scipy/special/tests/test_cdflib.py__init__ProbArg.__init__"   s        c                 f   [        SUS-  5      n[        R                  " S[        R                  " S5      U5      n[        R                  " SSUS-   SS9SS nS[        R                  " [        R                  " S5      S	U5      -
  n[        R
                  X4U4   n[        R                  " U5      $ )
z3Return an array containing approximately n numbers.r      i333333?gffffff?F)endpointNi)maxnplogspacelog10linspacer_unique)r   nmv1v2v3vs          r   valuesProbArg.values'   s    1a4L[[bhhsmQ/[[c1q559!"=RXXc]C33EE""*yy|r   r   N)__name__
__module____qualname____firstlineno____doc__r   r.   __static_attributes__ r   r   r   r      s    4
r   r   c                        \ rS rSrS rS rSrg)EndpointFilter1   c                 4    Xl         X l        X0l        X@l        g N)r   r   rtolatol)r   r   r   r<   r=   s        r   r   EndpointFilter.__init__2   s    		r   c                    [         R                  " XR                  -
  5      U R                  [         R                  " U R                  5      -  U R                  -   :  n[         R                  " XR
                  -
  5      U R                  [         R                  " U R
                  5      -  U R                  -   :  n[         R                  " X#-  SS5      $ )NFT)r"   absr   r<   r=   r   where)r   xmask1mask2s       r   __call__EndpointFilter.__call__8   s    q66z"TYYrvvdff~%=		%IIq66z"TYYrvvdff~%=		%IIxxud33r   )r   r=   r   r<   N)r0   r1   r2   r3   r   rE   r5   r6   r   r   r8   r8   1   s    4r   r8   c                   6    \ rS rSr   SS jrS rS rS rSrg)	_CDFData>   Nc                    Xl         X l        X0l        X@l        XPl        X`l        Xpl        Xl        Xl        [        U[        5      (       d  S U l        S U l        g U
c  Ubu  [        U
[        5      (       a  Xl        OU
/[        U R                  5      -  U l        [        U[        5      (       a  Xl        g U/[        U R                  5      -  U l        g S U l        S U l        g r;   )spfuncmpfuncindexargspecspfunc_firstdpsr(   r<   r=   
isinstancelist
endpt_rtol
endpt_atollen)r   rK   rL   rM   rN   rO   rP   r(   r<   r=   rS   rT   s               r   r   _CDFData.__init__?   s     
(		'4(("DO"DO#z'=*d++",#-,s4<</@"@*d++",#-,s4<</@"@"DO"DOr   c                    U R                   (       a  U R                  " U6 n[        R                  " U5      (       a  [        R                  $ [        U5      nX!U R                  '   [        R                  " U R                  5         U R                  " [        U5      6 n[        UR                  5      nS S S 5        U$ [        R                  " U R                  5         U R                  " U6 n[        UR                  5      nS S S 5        [        U5      nWXR                  '   U R                  " [        U5      6 nU$ ! , (       d  f       U$ = f! , (       d  f       NS= fr;   )rO   rK   r"   isnannanrR   rM   r   workdpsrP   rL   tupler   real)r   argsress      r   idmap_CDFData.idmap\   s    ++t$Cxx}}vv:D")kk5;/) * 
 )kk4() * :D"D++uT{+C
 *) 
 *)s   .D=%E=
E
Ec           	      R   U R                   c  U R                  c  g / n[        U R                   U R                  U R                  5       HZ  u  p#nUc  Uc  UR	                  S 5        M  Uc  SnOUc  SnUR	                  [        UR                  UR                  X#5      5        M\     U$ )N        )rS   rT   ziprN   appendr8   r   r   )r   filtersr<   r=   specs        r   get_param_filter_CDFData.get_param_filterp   s    ??"t'> #DOOT__dll SD|t$NN>$&&$&&$EF !T r   c                    [        U R                  U R                  5      nU R                  5       n[	        [        UR                  S   5      5      nUR                  S   n[        R                  " XS S 2U R                  4   R                  UR                  S   S5      45      n[        U R                  UX4U R                  U R                  SUS9R                  5         g )Nr   r   F)param_columnsresult_columnsr<   r=   
vectorizedparam_filter)r   rN   r(   rg   r[   rangeshaper"   hstackrM   reshaper   r_   r<   r=   check)r   r]   rm   rj   rk   s        r   rr   _CDFData.check   s    dff-,,.eDJJqM23Ayy$Q

] 3 ; ;DJJqM1 MNOT,iidiiE*	, -2EGr   )rN   r=   rP   rT   rS   rM   rL   r(   r<   rK   rO   )T   i  NNNN)	r0   r1   r2   r3   r   r_   rg   rr   r5   r6   r   r   rH   rH   >   s    DH15-1#:("
4r   rH   c                  :    [        U 0 UD6nUR                  5         g r;   )rH   rr   )r   kwds      r   _assert_invertsrx      s    !rAGGIr   c                 V   [         R                  " U 5      [         R                  " U5      [         R                  " U5      p!n U S::  a  [         R                  " S5      $ X:  a  [         R                  " S5      $ [         R                  " SUSS9n[         R                  " X-
  U S-   USS9$ )Nr   r   T)exactx2regularized)r   mpffsubbetainc)kr(   ponemps       r   _binomial_cdfr      sz    jjmVZZ]FJJqM!AAvzz!}	
zz!}KK1D)E>>!%Q5dCCr   c                    US:  a  [         R                  " S5      $ [         R                  " U 5      [         R                  " U5      [         R                  " U5      p!n X-  X-  U-   -  n[         R                  " U S-  US-  USS9nU$ )Nr      Tr{   )r   r~   r   )dfndfdrB   ubr^   s        r   _f_cdfr      sm    1uzz!}**S/6::c?FJJqMaC		B
..QA"$
?CJr   c                    Uc  [         R                  R                  n[         R                  " U5         [         R                  " U 5      [         R                  " U5      p[         R
                  " SSU S-   -  SUS-  * U -  5      nX1[         R                  " SU S-   -  5      -  -  nU[         R                  " [         R                  U -  5      [         R                  " SU -  5      -  -  nSU-   sS S S 5        $ ! , (       d  f       g = f)N      ?r         ?r   )	r   mprP   rZ   r~   hyp2f1gammasqrtpi)dftrP   facs       r   _student_t_cdfr      s    
{iimm		

2

1AmmCb1fsQTE"H=c26l+++v{{699R<(c"f)===Sy 
		s   B;C99
Dc                     [         R                  " US-  S-
  [         R                  " X -  5      5      nU[         R                  " X-   * S-  5      X-  US-  S-
  -  -  S-  -  nU$ )Nr   r      r   )r   besselir   exp)r   r   ncr^   s       r   _noncentral_chi_pdfr      s^    
..A6;;rt#4
5C6::ik"ADBqD3J#7799CJr   c                 h  ^^ Uc  [         R                  R                  n[         R                  " U 5      [         R                  " T5      [         R                  " T5      sn mm[         R                  " U5         [         R
                  " UU4S jSU /5      nUsS S S 5        $ ! , (       d  f       g = f)Nc                    > [        U TT5      $ r;   )r   )r   r   r   s    r   <lambda>%_noncentral_chi_cdf.<locals>.<lambda>   s    $72r$Br   r   )r   r   rP   r~   rZ   quad)rB   r   r   rP   r^   s    ``  r   _noncentral_chi_cdfr      sl    
{iimm

1vzz"~vzz"~IAr2		kkBQFK 
		s   9 B##
B1c                 "    X-  SU -
  U-  -
  U-  $ Nr   r6   )r   lmbdas     r   _tukey_lmbda_quantiler      s    HA~%u,,r   z0.19c                      \ rS rSrS rS rS r\R                  R                  SS9S 5       r
S rS	 rS
 rS rS rS r\R                  R                  SS9S 5       rS rS r\R                  R                  SS9S 5       r\R                  R                  SS9S 5       rS rS rS r\R                  R                  SS9S 5       r\R                  R5                  S/ SQ5      S 5       rSrg)
TestCDFlib   c           	          [        [        R                  [        S[	        SS5      [        5       [        5       /S/ SQS9  g )Nr     -q=)NNư>r<   rT   )rx   spbdtrinr   r
   r   r   s    r   test_bdtrinTestCDFlib.test_bdtrin   s0    IIq$GI6#5		7r   c                 x    [        [        R                  S S[        5       [	        SSSS9[	        SSSSS9/SS	9  g )
Nc                 .    [         R                  " XUSS9$ NTr{   r   r   r   r   rB   s      r   r   )TestCDFlib.test_btdtria.<locals>.<lambda>       FNN1A4Hr   r        r@Finclusive_ar   r   inclusive_br   r<   )rx   r   btdtriar   r	   r   s    r   test_btdtriaTestCDFlib.test_btdtria   s=    JJH	3q#59Aqe?A	r   c                 ~    [        [        R                  S S[        SSSS9[	        5       [        SSSSS9/S/ S	QS
9  g )Nc                 .    [         R                  " XUSS9$ r   r   r   s      r   r   )TestCDFlib.test_btdtrib.<locals>.<lambda>   r   r   r   r         Y@Fr   r   Hz>)NgC]r2<V瞯<r   )rx   r   btdtribr	   r   r   s    r   test_btdtribTestCDFlib.test_btdtrib   s@    JJHCU+WYA5e<>+	-r   F)runc                 ~    [        [        R                  [        S[	        SS5      [        5       [        SSSS9/SS9  g )Nr   d   r   Fr   r   r   )rx   r   fdtridfdr   r
   r   r	   r   s    r   test_fdtridfdTestCDFlib.test_fdtridfd   s5    KKAs^WYAs(FG	r   c                 |    [        [        R                  S S[        5       [	        SSSS9[	        SSSS9/S/ SQS	9  g )
Nc                 2    [         R                  " XU-  SS9$ NTr   r}   r   gammaincr   s      r   r   (TestCDFlib.test_gdtria.<locals>.<lambda>       FOOA1$Gr   r        @@Fr   g     @r   Nr   绽|=r   )rx   r   gdtriar   r	   r   s    r   test_gdtriaTestCDFlib.test_gdtria   s>    IIGYAs6CU+-*	,r   c                 v    [        [        R                  S S[        SSSS9[	        5       [        SSSS9/SS	9  g )
Nc                 2    [         R                  " XU-  SS9$ r   r   r   s      r   r   (TestCDFlib.test_gdtrib.<locals>.<lambda>   r   r   r   r   r   Fr   r   h㈵>r   )rx   r   gdtribr	   r   r   s    r   test_gdtribTestCDFlib.test_gdtrib   s;    IIGCU+WYCU+-	r   c                 |    [        [        R                  S S[        SSSS9[        SSSS9[	        5       /S/ SQS	9  g )
Nc                 2    [         R                  " XU-  SS9$ r   r   r   s      r   r   (TestCDFlib.test_gdtrix.<locals>.<lambda>  r   r   r   r   r   Fr   r   r   r   )rx   r   gdtrixr	   r   r   s    r   test_gdtrixTestCDFlib.test_gdtrix  s>    IIGCU+SCU-KY*	,r   c                     [        [        R                  S S[        5       [	        S[
        R                  SSS9[	        SS5      /SS	9  g )
Nc                 0    [         R                  " X U5      $ r;   r   ncdfrB   yzs      r   r   *TestCDFlib.test_nrdtrimn.<locals>.<lambda>      FKKa0r   r   皙?Fr   g    _g    _Br   r   )rx   r   nrdtrimnr   r	   r"   infr   s    r   test_nrdtrimnTestCDFlib.test_nrdtrimn  sB    KK0Ybff%UC 	r   c                     [        [        R                  S S[        [        R
                  * SSSS9[        5       [        SS5      /SS9  g )	Nc                 0    [         R                  " X U5      $ r;   r   r   s      r   r   *TestCDFlib.test_nrdtrisd.<locals>.<lambda>  r   r   r   
   Fr   }Ô%ITr   r   )rx   r   nrdtrisdr	   r"   r   r   r   s    r   test_nrdtrisdTestCDFlib.test_nrdtrisd  sC    KK0"&&"%UCYU^ 	r   c           	          [        [        R                  [        [	        SS5      [        S[        R                  5      /SS9  g )Nr   r   r   r   r   )r   r   stdtrr   r
   r	   r"   r   r   s    r   
test_stdtrTestCDFlib.test_stdtr%  s/    HHAs^S/0t	=r   c                 f    [        [        R                  [        S[	        5       [        5       /SS9  g )Nr   r   r   )rx   r   stdtridfr   r   r	   r   s    r   test_stdtridfTestCDFlib.test_stdtridf,  s$    KK	35!	.r   c           	      p    [        [        R                  [        S[	        SS5      [        5       /SS S/S9  g )Nr   r   r   r   r   )rx   r   stdtritr   r
   r   r   s    r   test_stdtritTestCDFlib.test_stdtrit3  s/    JJq#	*e}		&r   c           
      d    [        [        R                  S S[        5       [	        SS5      /SS9  g )Nc                 :    [         R                  " U S-  US-  SS9$ )Nr   Tr   r   )r-   rB   s     r   r   )TestCDFlib.test_chdtriv.<locals>.<lambda>=  s    1!Fr   r   r   r   -C6?r   )rx   r   chdtrivr   r
   r   s    r   test_chdtrivTestCDFlib.test_chdtriv:  s(    JJF	6!S>*	7r   c                     [        [        R                  [        S[	        SSSS9[        5       [	        SSSS9/SSSS	9  g )
Nr   r   r   Fr     r  r   r(   r<   r=   )rx   r   	chndtridfr   r	   r   r   s    r   test_chndtridfTestCDFlib.test_chndtridfA  s@     	LLAs.	As.0E	+r   c                     [        [        R                  [        S[	        SSSS9[        SS5      [        5       /SSS	S
9  g )Nr   r   r   Fr   r   r  r  r   r  )rx   r   	chndtrincr   r	   r
   r   r   s    r   test_chndtrincTestCDFlib.test_chndtrincK  s:     	LLAs.q#	JE		+r   c                     [        [        R                  [        S[	        5       [        SS5      [        SSSS9/SSS/ S	QS
9  g )Nr   r   r   Fr   r  r  r   )r   NN)r(   r<   r=   rT   )rx   r   chndtrixr   r   r
   r	   r   s    r   test_chndtrixTestCDFlib.test_chndtrixT  s;    KK	6!S>3q#5+IJE)	+r   c                 f   ^ [         R                  " S5      m[        S U4S j[        5       /SS9  g )Nr   c                 0    [         R                  " U S5      $ )Nr   )r   tklmbdarB   s    r   r   4TestCDFlib.test_tklmbda_zero_shape.<locals>.<lambda>a  s    bjjA&r   c                 >   > T[         R                  " U * 5      T-   -  $ r;   )r   r   )rB   ones    r   r   r(  b  s    c6::qb>C/0r   r   r   )r   r~   r   r	   )r   r*  s    @r   test_tklmbda_zero_shape"TestCDFlib.test_tklmbda_zero_shape]  s'    jjm&0UG$	 r   c                 p    [        [        R                  [        S[	        5       [        SSSS9/SSSS/S9  g )Nr   iF)r   r   &.>)rO   r<   rT   rx   r   r&  r   r   r	   r   s    r   test_tklmbda_neg_shape!TestCDFlib.test_tklmbda_neg_shapee  s5    JJ!	3sA59:Td|	%r   c                 j    [        [        R                  [        S[	        5       [        SSSS9/SSS9  g )Nr   r   Fr   r   )rO   r<   r/  r   s    r   test_tklmbda_pos_shape!TestCDFlib.test_tklmbda_pos_shapem  s.    JJ!	3q#59:T		+r   r   )r         ?       @c                 Z    SU-  n[        [        R                  " U* U/U5      SS/5        g )Nr   rb   r5  )r   r   r&  )r   r   bounds      r   test_tklmbda_lmbda1TestCDFlib.test_tklmbda_lmbda1v  s*    %RZZ%7#sDr   r6   N)r0   r1   r2   r3   r   r   r   pytestmarkxfailr   r   r   r   r   r  r  r	  r  r  r  r  r"  r+  r0  r3  parametrizer9  r5   r6   r   r   r   r      s-   7	- [[5! ",, = [[5!. ".&7 [[5!+ "+ [[5!+ "++ % [[5!+ "+ [[Wo6E 7Er   r   ))r   r   )r   r   )bdtrikr   )r   r   )r  r   )chndtrr   )r!  r   )r  r   )r  r   )r   r   )ncfdtrr   )ncfdtrir   )
ncfdtridfnr   )
ncfdtridfdr   )	ncfdtrincr   )r   r   )r   r   )r   r   )nbdtrikr   )nbdtrinr   )r   r   )r   r   )pdtrikr   )r  r   )r  r   )r  r   )nctdtrr   )nctdtritr   )	nctdtridfr   )	nctdtrincr   )r&  r   zfunc,numargs)idsc                    [         R                  R                  S5      n[        [        U 5      n UR                  U5       Vs/ s H=  n[        U5      [         R                  [         R                  [         R                  * 4PM?     nn[        R                  " U6  H;  nU " U6 n[        S U 5       5      (       a  [        U[         R                  5        M;  M=     g s  snf )Nl   7'}?J-0 c              3   N   #    U  H  n[         R                  " U5      v   M     g 7fr;   r"   rX   ).0rB   s     r   	<genexpr>!test_nonfinite.<locals>.<genexpr>  s     )Dqrxx{{Ds   #%)r"   randomdefault_rnggetattrr   floatrY   r   	itertoolsproductanyr   )funcnumargsrngrB   args_choicesr]   r^   s          r   test_nonfiniter_    s     ))

 0
1C2tDADGATUATAU1Xrvvrvvw7ATLU!!<0Dk)D)))bff%  1 Vs   ACc                      [         R                  " SS[        R                  " S5      S-   5      n / SQn[	        X5        g )Ng!?r         4@r   )gyY;@gA@gʾC@g-E@g-oG@gNCEI@g0_{J@gY-L@gjrM@gZǧ9N@g-]fP@gmj#P@ggAQ@gl@Q@gndhR@g$܂R@g@FTxS@gēT@g]gϖT@gc$U@)r   r!  r"   aranger   )r^   res_exps     r   test_chndtrix_gh2158rd    s2    
++h299S>$#6
7C5G C!r   c                  h    / SQn / SQn/ SQn/ SQn[         R                  " XU5      n[        XCSSS9  g )N)
MbP?\(\?皙#@b     i'  ri  rh  rg  rf  )
rf  r   r   皙?+?rf  r   r   rk  rl  )
~jtX?333333?r      ,  rm  rn  r   ro  rp  )
K ˸@gtI?x9" @g.$Bt+@gO,oq@rq  gZc^?rr  g@gjdy=rb   r<   r=   )r   rL  r   )dfarrparrtarrdesiredactuals        r   test_nctdtrinc_gh19896rz    s9     EEEDCD#G \\%t,FF%c:r   c                     [         R                  " [         R                  " [        R                  " [         R
                  * [         R
                  * SSS[         R
                  /5      5      5      (       d   e[         R                  " [         R                  " [        R                  " [         R
                  * / SQ5      5      5      (       d   eg )N      rb   r5  )rb         ?r   g      ?r5  )r"   allrX   r   r  r   r  r6   r   r   test_stdtr_stdtrit_neg_infr    sv    66"((288RVVGrvvgtS#rvv-NOPQQQQ66"((2::rvvg/JKLMMMMr   c                     [         R                  " [         R                  [         R                  * SSSSSSSS[         R                  /5      n U S S 2S 4   n [         R                  " [         R                  [         R                  * SSSSSS[         R                  /	5      n[         R
                  " [         R                  " [        R                  " U [         R                  U5      5      5      (       d   e[         R
                  " [         R                  " [        R                  " U [         R                  U5      5      5      (       d   eg )	Ng      $r|  rb   r   r   gH.?r5        $@)
r"   arrayrY   r   
atleast_2dr~  rX   r   r?  rF  )r   r   s     r   test_bdtrik_nbdtrik_infr    s    
	tS&"fc4P	RA	!D&	A
	"&&%sFBRVVD	FA66"((299Q23444466"((2::a345555r   zdfn,dfd,nc,f,expected_cdf)r   r   r   r   g,]?)r   r   {Gz?r   gsCr:)r   r  r   r  gnhUg?)r  r  r5  r   g%g{E?)r   r   r  r  g 	
1)r5  r   r   r   gڞ^)k;)r5  r  r   r  glB?)r5  r  r  r  g)Dt^\,?)r  r5  r   r   g|?)r   r   r5  r5  g?)r   r   r   r  r5  )r5  r   r   r  g*}?)g0.++r   r   r   g0J?c                     [        [        R                  " XX#5      USSS9  SUs=:  a  S:  a$  O  g [        [        R                  " XX$5      USS9  g g )NvIh%<=r   rt  r   g|=r   )r   r   rA  rB  )r   r   r   fexpected_cdfs        r   test_ncfdtr_ncfdtrir    sI    x BIIc.5qQ 	<!

3R>N r   r]   ))r|  r   r   r   )r   r|  r   r   )r   r   r|  r   )r   r   r   r   )r   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;  raisesSpecialFunctionErrorrB  )r]   s    r   test_ncfdtri_domain_errorr  $  sN     
G	$]]222(CJJ D 
%	$CC 
%	$"   $A/AA/
A,	(A//
A=c                   N   \ rS rSr\R
                  R                  S/ SQ5      S 5       rS rS r	\R
                  R                  S/ SQ/ S	Q/ S
Q/ SQSS\
R                  SS/SS\
R                  * SS//5      S 5       r\R
                  R                  S/ SQ5      S 5       rSrg)TestNoncentralTFunctionsi1  zdf, nc, x, expected_cdf)?)rg  ffffffrm  gD i?)rg  r  rn  g?)rg  r  r   g7?rg  r  ro  gU?)rg  RQ?rm  g?)rg  r  rn  gx$p?)rg  r  r   g7?)rg  r  ro  g]ŧe?)rg  ffffff@rm  g樼?)rg  r  rn  g:GF ?)rg  r  r   gpa?)rg  r  ro  gfO!t?)rg  &   rm  g    )rg  r  rn  gQb] rg  r  r   gy+)rg  r  ro  guQRm?)rh  r  rm  g/C*i?)rh  r  rn  g.b?)rh  r  r   gI'v?)rh  r  ro  g?)rh  r  rm  g?)rh  r  rn  gD-?)rh  r  r   gy0 ?)rh  r  ro  gC?)rh  r  rm  g?)rh  r  rn  g:e!?)rh  r  r   gh?)rh  r  ro  g?)rh  r  rm  g+    )rh  r  rn  gPDp   )rh  r  r   gMrh  r  ro  ggS>^X#>)ri  r  rm  gNG0i?)ri  r  rn  g%Wح?)ri  r  r   g?)ri  r  ro  r5  )ri  r  rm  g aYҏ?)ri  r  rn  gpku+?)ri  r  r   gZVq?)ri  r  ro  r5  )ri  r  rm  g_a?)ri  r  rn  g+,!?)ri  r  r   gqgb?)ri  r  ro  g?)ri  r  rm  gQ    )ri  r  rn  g%Q   )ri  r  r   gTh-1)ri  r  ro  g¤5)rj  r  rm  geK0i?)rj  r  rn  g?)rj  r  r   gjS?)rj  r  ro  r5  )rj  r  rm  g|S׏?)rj  r  rn  gfG-?)rj  r  r   g^"?)rj  r  ro  r5  )rj  r  rm  gm?)rj  r  rn  g|q]/!?)rj  r  r   g+%αs?)rj  r  ro  r5  )rj  r  rm  gn    )rj  r  rn  gm   )rj  r  ro  g>H*c                 H    [         R                  " XU5      n[        XTSSS9  g )Nr  grt  )r   rI  r   )r   r   r   rB   r  nctdtr_results         r   test_gh19896%TestNoncentralTFunctions.test_gh19896Y  s!    L 		"!,%fMr   c                 F    [        [        R                  " SSS5      SSS9  g )Nrj  r  r   gDd:0yE>r   r   r   rI  r   s    r   test_gh19896_loose_tolerance5TestNoncentralTFunctions.test_gh19896_loose_tolerance  s    		#r3/1HtTr   c                 R    Su  pnSn[        [        R                  " XU5      USS9  g )N)r   r   r   -^?+=r   r  )r   r   r   rB   expecteds        r   test_nctdtr_gh8344+TestNoncentralTFunctions.test_nctdtr_gh8344  s'     	(		"!,hUCr   zdf, nc, x, expected, rtol)      @g      @g       gG>g:0yU>)r   r  r5  g'$ <r  )r   g             @gjx?r  )r  ra  rn  ge*mt-r  r5  rb   c                 B    [        [        R                  " XU5      XES9  g )Nr   r  )r   r   r   rB   r  r<   s         r   test_nctdtr_accuracy-TestNoncentralTFunctions.test_nctdtr_accuracy  s     			"!,hBr   )r  )r   r   r   r  r  r  c                 D    [        [        R                  " XU5      USS9  g )Nr   r   )r   r   rJ  )r   r   r   rB   r  s        r   test_nctdtrit&TestNoncentralTFunctions.test_nctdtrit  s     	BL915Ir   r6   N)r0   r1   r2   r3   r;  r<  r>  r  r  r  r"   r   r  r  r5   r6   r   r   r  r  1  s    P [[6 @9 @BNC@BNUD [[#	4	8	3	7
b"&&#s	#
b266'3	$	
	C	C [[6 9 JJr   r  c                      \ rS rSr\R
                  R                  S\R                  \R                  /5      \R
                  R                  S\
R                  SS4S\
R                  S4SS\
R                  4\
R                  \
R                  S4\
R                  S\
R                  4S\
R                  \
R                  4\
R                  \
R                  \
R                  4/5      S 5       5       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Srg)TestNegativeBinomialFunctionsi  functionr]   r   c                 D    [         R                  " U" U6 5      (       d   eg r;   rP  )r   r  r]   s      r   test_nan_propagation2TestNegativeBinomialFunctions.test_nan_propagation  s     xx$((((r   )	r  r   r   r   r  r   r   r   r  r  r  r   r  r   r  r   r  r  r  r  r  )r   皙??r   r  r  c                     [         R                  " 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r  )r   r  r;  r  r  rG  r   r]   s     r   test_domain_error_nbdtrin7TestNegativeBinomialFunctions.test_domain_error_nbdtrin  N     [[(r66hG

D! H )(GG )(r  )r  r  r  r  r  r  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r  )r   r  r;  r  r  rF  r  s     r   test_domain_error_nbdtrik7TestNegativeBinomialFunctions.test_domain_error_nbdtrik  r  r  zk, y, p, n, rtol))   g    ?r}  r   V瞯<)r   gq51rn  r   r   )r   gC8{7?rn  r   r  )r   g΋gל0rf     g+<)r   gj?rl  ro  r   )  g_?r   ro  r  )r   g|=r   r   r  c                     [        [        R                  " XU5      XE5        [        [        R                  " X$U5      X5        g r;   )r   r   rG  rF  )r   r   r   r   r(   r<   s         r   test_inverses+TestNegativeBinomialFunctions.test_inverses  s.    " 	

1+Q5

1+Q5r   r6   N)r0   r1   r2   r3   r;  r<  r>  r   rG  rF  r"   rY   r  r  r  r  r5   r6   r   r   r  r    s?   [[Z"**bjj)AB[[V
&&!Q!RVVQ!Q
&&"&&!	rvvq"&&1Arvvrvv3F
&&"&&"&&	!	#
) C) [[V	'
"
"
 [[V	
"
"
 [[/	67
67
6r   r  c                      \ rS rSrS r\R                  R                  S/ SQ5      S 5       r\R                  R                  SSSS	\	R                  4\	R                  S	4/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                  \R                  \R                   /5      \R                  R                  S\	R$                  S	S	4S	\	R$                  S	4S	S	\	R$                  4\	R$                  \	R$                  S	4\	R$                  S	\	R$                  4S	\	R$                  \	R$                  4\	R$                  \	R$                  \	R$                  4/5      S 5       5       r\R                  R                  SS	SS	\	R$                  4S	S\	R                  \	R$                  4S	\	R                  S	\	R$                  4S	\	R                  \	R                  S4S	S	\	R                  S4\	R                  SS	\	R$                  4\	R                  S	\	R                  \	R$                  4\	R                  S	S	S	4\	R                  \	R                  \	R                  \	R$                  4/	5      S 5       rSrg)!TestNoncentralChiSquaredFunctionsi  c                    [         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
                  " US S 2S4   US S 2S4   US S 2S4   5      n[	        US S US S2S4   SS9  [        R                  " US S 2S4   US S 2S4   US S 2S4   5      n[	        US S US S2S4   SS9  [        R                  " US S 2S4   US S 2S4   US S 2S4   5      n[	        US S US S2S4   SS9  g )N)      9@ra    gL94)r  r6     g7Fh9)rf  r6        D@ggåc;)r  r6  r  g	;)ra  r  k   g8x@x>)g     6@r  r  gg1\>>)r  r  r  g`>)r  r  r5  gp!P?)g     u@r   r  g j
?)r         +@r  g]?)g     @ra  r  g4ۙ?)g     b@r  r  g?)g      d@r  r  r5  r   r   r   r   r  r   r  )r"   r  r   r@  r   r!  r  r  )r   r.   cdfrB   r   r   s         r   .test_chndtr_and_inverses_against_wolfram_alphaPTestNoncentralChiSquaredFunctions.test_chndtr_and_inverses_against_wolfram_alpha  sV    999:999666666
  iiq!tfQTlF1a4LAAqD\6 KKq!tfQTlF1a4LA#2ssAvT:\\&A,q!tfQTlC3BQd;\\&A,q!tfQTlC3BQd;r   z+x, df, nc, expected_cdf, rtol_cdf, rtol_inv))r      2   g
8DLr  r  )r   rt   r  g"r  r  )r   r  r  ggI˘r  r  )g     @g     j@r   grd\\"rs  rs  )   r   r   gk?-a=r  )r  rp  r   g;?r  r   )ix  r  r   g.?r  r.  )r  r  r  g#%?r  dy=c                    [         R                  " XU5      n[        XtUS9  [        [         R                  " XBU5      XS9  [        [         R                  " XU5      X&S9  [        [         R
                  " XU5      X6S9  [        [         R                  " XrU5      XS9  [        [         R                  " XU5      USS9  [        [         R
                  " XU5      USS9  g )Nr   r   r   )r   r@  r   r!  r  r  )r   rB   r   r   r  rtol_cdfrtol_invchndtr_results           r   
test_tails,TestNoncentralChiSquaredFunctions.test_tails.  s     		!,(CLb91LQb92MQL92M 	Mr:AMQr:BTJQM:BTJr   zx, df)r   r   )r   r   r   c                 l    [        [        R                  " XS5      [        R                  " X!5      SS9  g )Nr   r   r   )r   r   r@  chdtr)r   rB   r   s      r   %test_chndtr_with_nc_zero_equals_chdtrGTestNoncentralChiSquaredFunctions.test_chndtr_with_nc_zero_equals_chdtrE  s#     			!+RXXb_5Ir   funr]   )r  r  r  r  r  r  r  c                     [         R                  " SS9   [        R                  " [         R                  SS9   U" U6   S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = fr  )r   r  r;  r  r  )r   r]   r  s      r   test_domain_error3TestNoncentralChiSquaredFunctions.test_domain_errorK  sI     [[(r66hGT
 H )(GG )(s!   $A!AA!
A	A!!
A/c                 D    [         R                  " U" U6 5      (       d   eg r;   rP  )r   r  r]   s      r   r  6TestNoncentralChiSquaredFunctions.test_nan_propagationW  s     xxT
####r   zx, df, nc, expectedr   c                 D    [        [        R                  " XU5      USS9  g Nr   r   )r   r   r@  )r   rB   r   r   r  s        r   test_chndtr_edge_cases8TestNoncentralChiSquaredFunctions.test_chndtr_edge_casesb  s     			!,hUCr   r6   N)r0   r1   r2   r3   r  r;  r<  r>  r  r"   r   r  r   r@  r!  r  r  r  rY   r  r  r5   r6   r   r   r  r    s   <h [[5	;

K

K [[W	!RVVrvvqk2JJ [[U	BKKr||< [[V	1	
 [[U	BKKr||< [[V
&&!Q!RVVQ!Q
&&"&&!	rvvq"&&1Arvvrvv3F
&&"&&"&&	!	#
$$ [[
Q266	
Q	
RVVQ	
RVVRVVQ	
Q	
&&!Q	
&&!RVVRVV	$
&&!Q	
&&"&&"&&"&&	)	+DDr   r  rB   r   r   c                 >    [         R                  " SU 5      S:X  d   eg )Nr   r   )r   r  r'  s    r   !test_chdtriv_p_equals_1_returns_0r  r  s    ::aq   r   c                       \ rS rSr\R
                  R                  SSS/5      S 5       r\R
                  R                  SS5      S 5       rS	 r	S
 r
\R
                  R                  S/ SQ5      S 5       rSrg)
TestPdtrikiw  zp, m, expected)r   r   r   )r   r   r   c                 <    [         R                  " X5      U:X  d   eg r;   )r   rH  )r   r   r)   r  s       r   test_edge_casesTestPdtrik.test_edge_casesx  s     yy(***r   r)   )r   r   r   c                 h    [         R                  " [        R                  " SU5      5      (       d   eg r   )r"   rX   r   rH  )r   r)   s     r   test_p_equals_1_returns_nan&TestPdtrik.test_p_equals_1_returns_nan~  s!    xx		!Q((((r   c                     [         R                  " S/S/S/// SQ5      n[        U[        R                  " S5      5        g )Nr   r}  gffffff?)r   g#B;r   )r   r   )r   rH  r   r"   zeros)r   r   s     r   test_small_probabilities#TestPdtrik.test_small_probabilities  s3    IIsTFTF+-=>1bhhv./r   c                 z    / SQnSn[         R                  " X!5      n[        [         R                  " X15      USS9  g )N)r   r  r  r  r   r   )r   pdtrr   rH  )r   r)   r   r   s       r   test_roundtrip_against_pdtr&TestPdtrik.test_roundtrip_against_pdtr  s-    GGAM		!7r   zp, m, k))gG:Ї7r   r   )g;(&?r   c   )gkͧ1r  r  )g-i i_ c                 B    [        [        R                  " X5      USS9  g r  )r   r   rH  )r   r   r)   r   s       r   test_accuracyTestPdtrik.test_accuracy  s     			!7r   r6   N)r0   r1   r2   r3   r;  r<  r>  r   r  r  r  r  r5   r6   r   r   r  r  w  s    [[-))+,+,+ [[S,/) 0)0
8 [[YIJ
8J
8r   r  za, b, p, refr   c                 F    [        [        R                  " XU5      U5        g r;   )r   r   r   )r   r   r   refs       r   test_gdtrix_edge_casesr         1#S)r   zp, b, x, refc                 F    [        [        R                  " XU5      U5        g r;   )r   r   r   )r   r   rB   r  s       r   test_gdtria_edge_casesr    r  r   z
y, n, p, k))ga/r   r  r   )gUr  r  r  )gcR?r  r   iD  )gW"K?r   r  r  c                 D    [        [        R                  " XU5      USS9  g )Nr  r   )r   r   r?  )r   r(   r   r   s       r   test_bdtrikr    s     BIIaA&6r   zp, std, x, refr   r  c                 F    [        [        R                  " XU5      U5        g r;   )r   r   r   )r   stdrB   r  s       r   test_nrdtrimn_edge_casesr    s     QQ'-r   zmn, p, x, refc                 F    [        [        R                  " XU5      U5        g r;   )r   r   r   )mnr   rB   r  s       r   test_nrdtrisd_edge_casesr    s     RA&,r   r;   ):r4   rX  numpyr"   numpy.testingr   r   r   r;  scipy.specialspecialr   scipy.special._testutilsr   r   r   scipy.special._mptestutilsr	   r
   r   r   r   r   ImportErrorr   r8   rH   rx   r   r   r   r   r   r   r<  slowr   funcsr>  r_  rd  rz  r  r  r  r  r  r  r  r  r  rY   r   r  r  r  r  r  r'  s   0r   <module>r(     s3     K K  , ,; ;%
 $
4 
4M4 M4`
D-
 vvqE qE  qEh 	F 54I5aqT54IJ K$"$;N6 263175310-#1/"/O#"/Ob 

PJ PJf16 16hwD wDt sCj)! *!8 8@ 1bff1bff266266VVQ266VVQ266VVRVVQVVRVVQ	* 	*	* 1bff2662661bff2661VVQ266VVQVVQ266VVQ	* 	*	*  ( 77 )Q"&&!RVV!RVVRVV!bffWrvvg"&&"&&"&&!#rvvrvv!bffWrvvg"a	, 	.	. 1bff1bff266266!Q#rvvw#w+ --q  %8$F%H 5Js   T T#T T 