
    doii~                        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S@S jrS rS@S 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/\RD                  RM                  S5S6S7/5      S8 5       r0 " S9 S:5      r1\RD                  RM                  S;SSS\Rd                  4SSS<\Rd                  4S\Rf                  S\Rd                  4S\Rf                  S<\Rd                  4\Rf                  SS\Rd                  4\Rf                  SS<\Rd                  4\Rf                  \Rf                  S\Rd                  4\Rf                  \Rf                  S<\Rd                  4/5      S= 5       r4\RD                  RM                  S>SSS\Rd                  4SS\Rf                  \Rd                  4SS<S\Rd                  4SS<\Rf                  S4\Rf                  SS\Rd                  4\Rf                  S\Rf                  \Rd                  4\Rf                  S<S\Rd                  4\Rf                  S<\Rf                  \Rd                  4/5      S? 5       r5g! \ a    \" S5      r GN5f = fs  sn f )Az
Test cdflib functions versus mpmath, if available.

The following functions still need tests:

- ncfdtridfn
- ncfdtridfd
- ncfdtrinc
- nbdtrik
- nbdtrin
- 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/land-ocr/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)EndpointFilter3   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__4   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__:   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   3   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__A   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_filterr   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\R
                  R                  SS9S 5       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
                  R7                  S/ SQ5      S 5       rSrg)
TestCDFlib   F)runc           
      |    [        [        R                  [        S[	        5       [        SS5      [	        5       /SS9  g )Nr   r     -C6?r<   )rx   spbdtrikr   r   r
   r   s    r   test_bdtrikTestCDFlib.test_bdtrik   s-    II	6!T?GI6		r   c           	          [        [        R                  [        S[	        SS5      [        5       [        5       /S/ SQS9  g )Nr   r   r   )NNư>r<   rT   )rx   r   bdtrinr   r
   r   r   s    r   test_bdtrinTestCDFlib.test_bdtrin   s0    IIq$GI6"4		6r   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_b-q=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   c                 ~    [        [        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_stdtridf6  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_stdtrit=  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>G  s    1!Fr   r   r   r   r   r   )rx   r   chdtrivr   r
   r   s    r   test_chdtrivTestCDFlib.test_chdtrivD  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<   r=   )rx   r   	chndtridfr   r	   r   r   s    r   test_chndtridfTestCDFlib.test_chndtridfK  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_chndtrincU  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_chndtrix^  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>k  s    bjjA&r   c                 >   > T[         R                  " U * 5      T-   -  $ r;   )r   r   )rB   ones    r   r   r+  l  s    c6::qb>C/0r   r   r   )r   r~   r   r	   )r   r-  s    @r   test_tklmbda_zero_shape"TestCDFlib.test_tklmbda_zero_shapeg  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_shapeo  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<   r2  r   s    r   test_tklmbda_pos_shape!TestCDFlib.test_tklmbda_pos_shapew  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   r8  )r   r   r)  )r   r   bounds      r   test_tklmbda_lmbda1TestCDFlib.test_tklmbda_lmbda1  s*    %RZZ%7#sDr   r6   N)r0   r1   r2   r3   pytestmarkxfailr   r   r   r   r   r   r   r   r   r  r
  r  r  r  r  r!  r%  r.  r3  r6  parametrizer<  r5   r6   r   r   r   r      sS    [[5! "6	- [[5! ",, = [[5!. ".&7 [[5!+ "+ [[5!+ "++ % [[5!+ "+ [[Wo6E 7Er   r   ))r   r   )r   r   )r   r   )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_nonfinitera    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_gh2158rf    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'  rk  rj  ri  rh  )
rh  r   r   皙?+?rh  r   r   rm  rn  )
~jtX?333333?r      ,  ro  rp  r   rq  rr  )
K ˸@gtI?x9" @g.$Bt+@gO,oq@rs  gZc^?rt  g@gjdy=rb   r<   r=   )r   rN  r   )dfarrparrtarrdesiredactuals        r   test_nctdtrinc_gh19896r|    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   r8  )rb         ?r   g      ?r8  )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.?r8        $@)
r"   arrayrY   r   
atleast_2dr  rX   r   r   rH  )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  r8  r   g%g{E?)r   r   r  r  g 	
1)r8  r   r   r   gڞ^)k;)r8  r  r   r  glB?)r8  r  r  r  g)Dt^\,?)r  r8  r   r   g|?)r   r   r8  r8  g?)r   r   r   r  r8  )r8  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   rv  r   g|=r   )r   r   rC  rD  )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SpecialFunctionErrorrD  )r]   s    r   test_ncfdtri_domain_errorr  .  sN     
G	$]]222(CJJ D 
%	$CC 
%	$s"   $A/AA/
A,	(A//
A=c                      \ rS rSr\R
                  R                  S/ SPSPSPSPSPSPS	PS
PSPSPSPSPSPSPSPSPSPSPSPSPSPSPSPSPSPSPSPSPSPS PS!PS"PS#PS$PS%PS&PS'PS(PS)PS*PS+PS,PS-PS.PS/PS0PS1PS2PS3PS4PS5PS6PS7PS8PS9PS:PS;PS<PS=PS>PS?PS@P\R                  " SASBSCSD\R
                  R                  SESF9SG9PSHP5      SI 5       r	SJ r
\R
                  R                  SK/ SLQ/ SMQ/ SNQ/ SOQSPSP\R                  SPSQ/SPSP\R                  * SQSQ//5      SR 5       r\R
                  R                  S/ SSQ5      ST 5       rSUrgV)WTestNoncentralTFunctionsi;  zdf, nc, x, expected_cdf)ri  ffffffro  gD i?)ri  r  rp  g?)ri  r  r   g7?ri  r  rq  gU?)ri  RQ?ro  g?)ri  r  rp  gx$p?)ri  r  r   g7?)ri  r  rq  g]ŧe?)ri  ffffff@ro  g樼?)ri  r  rp  g:GF ?)ri  r  r   gpa?)ri  r  rq  gfO!t?)ri  &   ro  g    )ri  r  rp  gQb] ri  r  r   gy+)ri  r  rq  guQRm?)rj  r  ro  g/C*i?)rj  r  rp  g.b?)rj  r  r   gI'v?)rj  r  rq  g?)rj  r  ro  g?)rj  r  rp  gD-?)rj  r  r   gy0 ?)rj  r  rq  gC?)rj  r  ro  g?)rj  r  rp  g:e!?)rj  r  r   gh?)rj  r  rq  g?)rj  r  ro  g+    )rj  r  rp  gPDp   )rj  r  r   gMrj  r  rq  ggS>^X#>)rk  r  ro  gNG0i?)rk  r  rp  g%Wح?)rk  r  r   g?)rk  r  rq  r8  )rk  r  ro  g aYҏ?)rk  r  rp  gpku+?)rk  r  r   gZVq?)rk  r  rq  r8  )rk  r  ro  g_a?)rk  r  rp  g+,!?)rk  r  r   gqgb?)rk  r  rq  g?)rk  r  ro  gQ    )rk  r  rp  g%Q   )rk  r  r   gTh-1)rk  r  rq  g¤5)rl  r  ro  geK0i?)rl  r  rp  g?)rl  r  r   gjS?)rl  r  rq  r8  )rl  r  ro  g|S׏?)rl  r  rp  gfG-?)rl  r  r   g^"?)rl  r  rq  r8  )rl  r  ro  gm?)rl  r  rp  g|q]/!?)rl  r  r   g+%αs?)rl  r  rq  r8  )rl  r  ro  gn    )rl  r  rp  gm   rl  r  r   gDdz+Bug in underlying Boost math implementation)reason)marks)rl  r  rq  g>H*c                 H    [         R                  " XU5      n[        XTSSS9  g )Nr  grv  )r   rK  r   )r   r   r   rB   r  nctdtr_results         r   test_gh19896%TestNoncentralTFunctions.test_gh19896c  s!    V 		"!,%fMr   c                 R    Su  pnSn[        [        R                  " XU5      USS9  g )N)  r   r   -^?g+=r   r   r   rK  )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  r8  g'$ <r  )r   g             @gjx?r  )r  rc  rp  ge*mt-r  r8  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   rL  )r   r   r   rB   r  s        r   test_nctdtrit&TestNoncentralTFunctions.test_nctdtrit  s     	BL915Ir   r6   N)r0   r1   r2   r3   r>  r?  rA  paramr@  r  r  r"   r   r  r  r5   r6   r   r   r  r  ;  s   P [[6 E90E9.E9 	.E9 	-	E9
 	/E9 	0E9 	-E9 	-E9 	2E9 	2E9 	/E9 	,E9 	,E9 	1E9 	/E9  	-!E9" 	0#E9$ 	.%E9& 	-'E9( 	,)E9* 	0+E9, 	/-E9. 	-/E90 	,1E92 	23E94 	15E96 	.7E98 	*9E9: 	+;E9< 	,=E9> 	0?E9@ 	-AE9B 	/CE9D 	-EE9F 	,GE9H 	IE9J 	0KE9L 	.ME9N 	,OE9P 	QE9R 	1SE9T 	/UE9V 	-WE9X 	*YE9Z 	*[E9\ 	*]E9^ 	/_E9` 	-aE9b 	0cE9d 	.eE9f 	-gE9h 	iE9j 	0kE9l 	.mE9n 	-oE9p 	qE9r 	2sE9t 	1uE9v 	.wE9x 	yE9z 	*{E9| 	+}E9B 	S"c#:!;;,,L - N	OCE9H 	.IE9 ELNMELND [[# 
5	8	3	7
b"&&#s	#
b266'3	$	
	CC [[6 9 JJr   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@rc    gL94)r  r9     g7Fh9)rh  r9        D@ggåc;)r  r9  r  g	;)rc  r  k   g8x@x>)g     6@r  r  gg1\>>)r  r  r  g`>)r  r  r8  gp!P?)g     u@r   r  g j
?)r         +@r  g]?)g     @rc  r  g4ۙ?)g     b@r  r  g?)g      d@r  r  r8  r   r   r   r   r  r   g:0yE>)r"   r  r   rB  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   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\\"ru  ru  )   r   r   gk?-a=r  )  rr  r   g;?r  r   )ix  r  r   g.?r  r1  )r  r  r   g#%?r  gdy=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   rB  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   rB  chdtr)r   rB   r   s      r   %test_chndtr_with_nc_zero_equals_chdtrGTestNoncentralChiSquaredFunctions.test_chndtr_with_nc_zero_equals_chdtr  s#     			!+RXXb_5Ir   funr]   ))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   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_error$  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;   rR  )r   r  r]   s      r   test_nan_propagation6TestNoncentralChiSquaredFunctions.test_nan_propagation0  s     xxT
####r   zx, df, nc, expectedr   c                 D    [        [        R                  " XU5      USS9  g Nr   r   )r   r   rB  )r   rB   r   r   r  s        r   test_chndtr_edge_cases8TestNoncentralChiSquaredFunctions.test_chndtr_edge_cases;  s     			!,hUCr   r6   N)r0   r1   r2   r3   r  r>  r?  rA  r  r"   r   r  r   rB  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  K  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)
TestPdtrikiP  zp, m, expected)r   r   r   )r   r   r   c                 <    [         R                  " X5      U:X  d   eg r;   )r   rJ  )r   r   r)   r  s       r   test_edge_casesTestPdtrik.test_edge_casesQ  s     yy(***r   r)   )r   r   r  c                 h    [         R                  " [        R                  " SU5      5      (       d   eg r   )r"   rX   r   rJ  )r   r)   s     r   test_p_equals_1_returns_nan&TestPdtrik.test_p_equals_1_returns_nanW  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   rJ  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   pdtrr   rJ  )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   rJ  )r   r   r)   r   s       r   test_accuracyTestPdtrik.test_accuracyf  s     			!7r   r6   N)r0   r1   r2   r3   r>  r?  rA  r  r  r  r  r  r5   r6   r   r   r  r  P  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  p       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   r;   )6r4   rZ  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   funcsrA  ra  rf  r|  r  r  r  r  r  r  r  r  rY   r   r  r  r*  s   0r   <module>r     s     K K  , ,; ;%
 $
4 
4M4 M4`
D-
 vvyE yE  yEx 	F 54I5aqT54IJ K$"$;N6 263175310-#1/"/O#"/Ob 

SJ SJl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	* 	*	*U  %8$F%X 5Js   M  M5 M21M2