
    -iii~                        d Z ddlZddlZddlmZmZmZ ddlZddl	m
Z ddlmZmZmZ ddlmZmZmZmZmZ 	 ddlZn# e$ r  ed          ZY nw xY w G d d          Z G d	 d
          Z G d d          Zd Zd Zd ZdAdZd ZdAdZ d Z!ej"        j#         eed           G d d                                  Z$g dZ%ej"        &                    de%d e%D                       d             Z'd Z(d Z)d Z*d Z+ej"        &                    d g d!g d"g d#g d$g d%g d&g d'g d(g d)g d*g d+g d,g d-g          d.             Z,ej"        &                    d/g d0          d1             Z- G d2 d3          Z. G d4 d5          Z/ej"        &                    d6d7d8g          d9             Z0 G d: d;          Z1ej"        &                    d<dddej2        fddd=ej2        fdej3        dej2        fdej3        d=ej2        fej3        ddej2        fej3        dd=ej2        fej3        ej3        dej2        fej3        ej3        d=ej2        fg          d>             Z4ej"        &                    d?dddej2        fddej3        ej2        fdd=dej2        fdd=ej3        dfej3        ddej2        fej3        dej3        ej2        fej3        d=dej2        fej3        d=ej3        ej2        fg          d@             Z5dS )Bz
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                       e Zd ZdZd Zd ZdS )ProbArgz*Generate a set of probabilities on [0, 1].c                 "    d| _         d| _        d S )Nr      )abselfs    e/var/www/html/bet.cuttalo.com/ml/venv/lib/python3.11/site-packages/scipy/special/tests/test_cdflib.py__init__zProbArg.__init__$   s        c                 f   t          d|dz            }t          j        dt          j        d          |          }t          j        dd|dz   d          dd         }dt          j        t          j        d          d	|          z
  }t          j        |||f         }t          j        |          S )
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   valueszProbArg.values)   s    1a4LL[bhsmmQ//[c1q55999!""=RXc]]C333E"b"*y||r   N)__name__
__module____qualname____doc__r   r+    r   r   r   r   !   s8        44  
    r   r   c                       e Zd Zd Zd ZdS )EndpointFilterc                 >    || _         || _        || _        || _        d S N)r   r   rtolatol)r   r   r   r5   r6   s        r   r   zEndpointFilter.__init__4   s"    				r   c                 P   t          j        || j        z
            | j        t          j        | j                  z  | j        z   k     }t          j        || j        z
            | j        t          j        | j                  z  | j        z   k     }t          j        ||z  dd          S )NFT)r   absr   r5   r6   r   where)r   xmask1mask2s       r   __call__zEndpointFilter.__call__:   s~    q46z""TYrvdf~~%=	%IIq46z""TYrvdf~~%=	%IIxud333r   N)r,   r-   r.   r   r=   r0   r   r   r2   r2   3   s2          4 4 4 4 4r   r2   c                   .    e Zd Z	 	 	 d	dZd Zd Zd ZdS )
_CDFDataT     Nc                    || _         || _        || _        || _        || _        || _        || _        || _        |	| _        t          |t                    sd | _        d | _        d S |
|wt          |
t                    r|
| _        n|
gt          | j                  z  | _        t          |t                    r	|| _        d S |gt          | j                  z  | _        d S d | _        d | _        d S r4   )spfuncmpfuncindexargspecspfunc_firstdpsr%   r5   r6   
isinstancelist
endpt_rtol
endpt_atollen)r   rC   rD   rE   rF   rG   rH   r%   r5   r6   rK   rL   s               r   r   z_CDFData.__init__A   s     
(		'4(( 	#"DO"DOOO#z'=*d++ A",#-,s4</@/@"@*d++ A",#-,s4</@/@"@"DO"DOOOr   c                 R   | j         r | j        | }t          j        |          rt          j        S t          |          }||| j        <   t          j        | j	                  5   | j
        t          |           }t          |j                  }d d d            n# 1 swxY w Y   nt          j        | j	                  5   | j
        | }t          |j                  }d d d            n# 1 swxY w Y   t          |          }||| j        <    | j        t          |           }|S r4   )rG   rC   r   isnannanrJ   rE   r   workdpsrH   rD   tupler   real)r   argsress      r   idmapz_CDFData.idmap^   s    	,$+t$Cx}} v::D"D)) * *!dk5;;/))* * * * * * * * * * * * * * *
 )) * *!dk4())* * * * * * * * * * * * * * * ::D"D$+uT{{+C
s$   $,BB #B C,,C03C0c           	         | j         	| j        d S g }t          | j         | j        | j                  D ]X\  }}}|||                    d             |d}n|d}|                    t          |j        |j        ||                     Y|S )N        )rK   rL   ziprF   appendr2   r   r   )r   filtersr5   r6   specs        r   get_param_filterz_CDFData.get_param_filterr   s    ?"t'>4 #DOT_dl S S 		G 		GD$|t$$$NN>$&$&$EEFFFFr   c           
         t          | j        | j                  }|                                 }t	          t          |j        d                             }|j        d         }t          j        ||d d | j	        f         
                    |j        d         d          f          }t          | j        |||| j        | j        d|                                           d S )Nr   r   F)param_columnsresult_columnsr5   r6   
vectorizedparam_filter)r   rF   r%   r]   rR   rangeshaper   hstackrE   reshaper   rV   r5   r6   check)r   rT   rb   r_   r`   s        r   rg   z_CDFData.check   s    df--,,..eDJqM2233Ay$QQQ
] 3 ; ;DJqM1 M MNOOT,^idiE*	, 	, 	, -2EGGGGGr   )Tr@   rA   NNNN)r,   r-   r.   r   rV   r]   rg   r0   r   r   r?   r?   @   s^        DH15-1# # # #:  (  "
4 
4 
4 
4 
4r   r?   c                  F    t          | i |}|                                 d S r4   )r?   rg   )r   kwds      r   _assert_invertsrk      s%    !rAGGIIIIIr   c                 L   t          j        |           t          j        |          t          j        |          }}} | dk    rt          j        d          S | |k    rt          j        d          S t          j        d|d          }t          j        || z
  | dz   |d          S )Nr   r   T)exactx2regularized)r   mpffsubbetainc)kr%   ponemps       r   _binomial_cdfrw      s    jmmVZ]]FJqMM!qAAvvz!}}	
az!}}K1D)))E>!a%Q5dCCCCr   c                 
   |dk     rt          j        d          S t          j        |           t          j        |          t          j        |          }}} | |z  | |z  |z   z  }t          j        | dz  |dz  |d          }|S )Nr      Trn   )r   rq   rs   )dfndfdr:   ubrU   s        r   _f_cdfr}      sy    1uuz!}}*S//6:c??FJqMMaC	QA	B
.QA"$
?
?
?CJr   c                    |t           j        j        }t          j        |          5  t          j        |           t          j        |          }} t          j        dd| dz   z  d|dz   | z            }||t          j        d| dz   z            z  z  }|t          j        t           j        | z            t          j        d| z            z  z  }d|z   cd d d            S # 1 swxY w Y   d S )N      ?r         ?ry   )	r   mprH   rQ   rq   hyp2f1gammasqrtpi)dftrH   facs       r   _student_t_cdfr      s   
{im			  
2
1AmCb1fsQTE"H==qc26l++++v{69R<((c"f)=)===Sy                 s   B-C""C&)C&c                     t          j        |dz  dz
  t          j        || z                      }|t          j        | |z    dz            | |z  |dz  dz
  z  z  dz  z  }|S )Nry   r      r   )r   besselir   exp)r   r   ncrU   s       r   _noncentral_chi_pdfr      sg    
.A6;r!t#4#4
5
5C6:Bik""AbDBqD3J#7799CJr   c                 <   |t           j        j        }t          j        |           t          j                  t          j                  c} t          j        |          5  t          j        fdd| g          }|cd d d            S # 1 swxY w Y   d S )Nc                 &    t          |           S r4   )r   )r   r   r   s    r   <lambda>z%_noncentral_chi_cdf.<locals>.<lambda>   s    $72r$B$B r   r   )r   r   rH   rq   rQ   quad)r:   r   r   rH   rU   s    ``  r   _noncentral_chi_cdfr      s    
{im
1vz"~~vz"~~IAr2			  kBBBBBQFKK                 s   'BBBc                 $    | |z  d| z
  |z  z
  |z  S Nr   r0   )ru   lmbdas     r   _tukey_lmbda_quantiler      s    uHA~%u,,r   z0.19c                   ^   e Zd Zej                            d          d             Zd Zd Zd Z	ej                            d          d             Z
d Zd	 Zd
 Zd Zd Zd Zej                            d          d             Zd Zd Zej                            d          d             Zej                            d          d             Zd Zd Zd Zej                            d          d             Zej                            dg d          d             ZdS )
TestCDFlibF)runc           
          t          t          j        t          dt	                      t          dd          t	                      gd           d S )Nr   r     -C6?r5   )rk   spbdtrikrw   r   r
   r   s    r   test_bdtrikzTestCDFlib.test_bdtrik   sJ    I		6!T??GII6		 	 	 	 	 	r   c           	          t          t          j        t          dt	          dd          t                      t                      gdg d           d S )Nr   r   r   )NNư>r5   rL   )rk   r   bdtrinrw   r
   r   r   s    r   test_bdtrinzTestCDFlib.test_bdtrin   sS    Iq$GII6"4"4"4		6 	6 	6 	6 	6 	6r   c                     t          t          j        d dt                      t	          ddd          t	          dddd          gd	           d S )
Nc                 2    t          j        | ||d          S NTrn   r   rs   r   r   r:   s      r   r   z)TestCDFlib.test_btdtria.<locals>.<lambda>       FN1aA4HHH r   r        r@Finclusive_ar   r   inclusive_b-q=r   )rk   r   btdtriar   r	   r   s    r   test_btdtriazTestCDFlib.test_btdtria   se    JHH		3q#5999Aqe???A	 	 	 	 	 	r   c                     t          t          j        d dt          ddd          t	                      t          dddd          gdg d	
           d S )Nc                 2    t          j        | ||d          S r   r   r   s      r   r   z)TestCDFlib.test_btdtrib.<locals>.<lambda>   r   r   r   r         Y@Fr   r   Hz>)NgC]r2<V瞯<r   )rk   r   btdtribr	   r   r   s    r   test_btdtribzTestCDFlib.test_btdtrib   sn    JHHCU+++WYYA5e<<<>+++	- 	- 	- 	- 	- 	-r   c                     t          t          j        t          dt	          dd          t                      t          ddd          gd           d S )Nr   d   r   Fr   r   r   )rk   r   fdtridfdr}   r
   r   r	   r   s    r   test_fdtridfdzTestCDFlib.test_fdtridfd   sV    KAs^^WYYAs(F(F(FG	 	 	 	 	 	r   c                     t          t          j        d dt                      t	          ddd          t	          ddd          gdg d	           d S )
Nc                 6    t          j        || |z  d          S NTr   rp   r   gammaincr   s      r   r   z(TestCDFlib.test_gdtria.<locals>.<lambda>       FOA1$GGG r   r        @@Fr   g     @r   Nr   绽|=r   )rk   r   gdtriar   r	   r   s    r   test_gdtriazTestCDFlib.test_gdtria   sl    IGGYYAs666CU+++-***	, 	, 	, 	, 	, 	,r   c                     t          t          j        d dt          ddd          t	                      t          ddd          gd	           d S )
Nc                 6    t          j        || |z  d          S r   r   r   s      r   r   z(TestCDFlib.test_gdtrib.<locals>.<lambda>  r   r   r   r   r   Fr   r   h㈵>r   )rk   r   gdtribr	   r   r   s    r   test_gdtribzTestCDFlib.test_gdtrib  sc    IGGCU+++WYYCU+++-	 	 	 	 	 	r   c                     t          t          j        d dt          ddd          t          ddd          t	                      gdg d	           d S )
Nc                 6    t          j        || |z  d          S r   r   r   s      r   r   z(TestCDFlib.test_gdtrix.<locals>.<lambda>  r   r   ry   r   r   Fr   r   r   r   )rk   r   gdtrixr	   r   r   s    r   test_gdtrixzTestCDFlib.test_gdtrix  sl    IGGCU+++SCU-K-K-KYY***	, 	, 	, 	, 	, 	,r   c                     t          t          j        d dt                      t	          dt
          j        dd          t	          dd          gd	           d S )
Nc                 .    t          j        || |          S r4   r   ncdfr:   yzs      r   r   z*TestCDFlib.test_nrdtrimn.<locals>.<lambda>      FK1a00 r   r   皙?Fr   g    _g    _Br   r   )rk   r   nrdtrimnr   r	   r   infr   s    r   test_nrdtrimnzTestCDFlib.test_nrdtrimn  se    K00YYbf%UCCC 	 	 	 	 	 	r   c                     t          t          j        d dt          t          j         ddd          t                      t          dd          gd           d S )	Nc                 .    t          j        || |          S r4   r   r   s      r   r   z*TestCDFlib.test_nrdtrisd.<locals>.<lambda>(  r   r   r   
   Fr   }Ô%ITr   r   )rk   r   nrdtrisdr	   r   r   r   r   s    r   test_nrdtrisdzTestCDFlib.test_nrdtrisd%  se    K00"&"%UCCCYYU^^ 	 	 	 	 	 	r   c           	          t          t          j        t          t	          dd          t          dt          j                  gd           d S )Nr   r   r   r   r   )r   r   stdtrr   r
   r	   r   r   r   s    r   
test_stdtrzTestCDFlib.test_stdtr/  sI    HAs^^S//0t	= 	= 	= 	= 	= 	=r   c                     t          t          j        t          dt	                      t                      gd           d S )Nr   r   r   )rk   r   stdtridfr   r   r	   r   s    r   test_stdtridfzTestCDFlib.test_stdtridf6  s?    K		355!	. 	. 	. 	. 	. 	.r   c           	          t          t          j        t          dt	          dd          t                      gdd dg           d S )Nr   r   r   r   r   )rk   r   stdtritr   r
   r   r   s    r   test_stdtritzTestCDFlib.test_stdtrit=  sJ    Jq#		*e}		& 	& 	& 	& 	& 	&r   c           
      |    t          t          j        d dt                      t	          dd          gd           d S )Nc                 <    t          j        | dz  |dz  d          S )Nry   Tr   r   )r*   r:   s     r   r   z)TestCDFlib.test_chdtriv.<locals>.<lambda>G  s    1!FFF r   r   r   r   r   r   )rk   r   chdtrivr   r
   r   s    r   test_chdtrivzTestCDFlib.test_chdtrivD  sF    JFF		6!S>>*	7 	7 	7 	7 	7 	7r   c                     t          t          j        t          dt	          ddd          t                      t	          ddd          gddd	           d S )
Nr   r   r   Fr   r   r   r   r%   r5   r6   )rk   r   	chndtridfr   r	   r   r   s    r   test_chndtridfzTestCDFlib.test_chndtridfK  se     	LAs...		As...0E	+ 	+ 	+ 	+ 	+ 	+r   c           
          t          t          j        t          dt	          ddd          t          dd          t                      gddd	
           d S )Nry   r   r   Fr   r   r   r   r   r   )rk   r   	chndtrincr   r	   r
   r   r   s    r   test_chndtrinczTestCDFlib.test_chndtrincU  s[     	LAs...q#		JE		+ 	+ 	+ 	+ 	+ 	+r   c                     t          t          j        t          dt	                      t          dd          t          ddd          gdddg d	
           d S )Nr   r   r   Fr   r   r   r   )r   NN)r%   r5   r6   rL   )rk   r   chndtrixr   r   r
   r	   r   s    r   test_chndtrixzTestCDFlib.test_chndtrix^  sb    K		6!S>>3q#5+I+I+IJE)))	+ 	+ 	+ 	+ 	+ 	+r   c                 x    t          j        d          t          d fdt                      gd           d S )Nr   c                 ,    t          j        | d          S )Nr   )r   tklmbdar:   s    r   r   z4TestCDFlib.test_tklmbda_zero_shape.<locals>.<lambda>k  s    bjA&& r   c                 :    t          j        |            z   z  S r4   )r   r   )r:   ones    r   r   z4TestCDFlib.test_tklmbda_zero_shape.<locals>.<lambda>l  s    c6:qb>>C/0 r   r   r   )r   rq   r   r	   )r   r  s    @r   test_tklmbda_zero_shapez"TestCDFlib.test_tklmbda_zero_shapeg  sN    jmm&&0000UUG$	  	  	  	  	  	 r   c                     t          t          j        t          dt	                      t          ddd          gddddg           d S )Nr   iF)r   r   &.>)rG   r5   rL   rk   r   r  r   r   r	   r   s    r   test_tklmbda_neg_shapez!TestCDFlib.test_tklmbda_neg_shapeo  sT    J!		3sA5999:Td|	% 	% 	% 	% 	% 	%r   c                     t          t          j        t          dt	                      t          ddd          gdd           d S )Nr   r   Fr   r   )rG   r5   r  r   s    r   test_tklmbda_pos_shapez!TestCDFlib.test_tklmbda_pos_shapew  sM    J!		3q#5999:T		+ 	+ 	+ 	+ 	+ 	+r   r   )r         ?       @c                 `    d|z  }t          t          j        | |g|          ddg           d S )Nr   rX   r  )r   r   r  )r   r   bounds      r   test_tklmbda_lmbda1zTestCDFlib.test_tklmbda_lmbda1  s7    %RZ%77#sDDDDDr   N)r,   r-   r.   pytestmarkxfailr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r	  r  parametrizer  r0   r   r   r   r      s7        [5!!  "!6 6 6  	- 	- 	- [5!!  "!, , ,  , , ,     = = = [5!!. . "!.& & &7 7 7 [5!!+ + "!+ [5!!+ + "!++ + +     % % % [5!!+ + "!+ [Wooo66E E 76E E Er   r   ))r   r   )r   r   )r   r   )r   r   )r   ry   )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   )pdtrikry   )r   ry   )r   ry   )r   ry   )nctdtrr   )nctdtritr   )	nctdtridfr   )	nctdtrincr   )r  ry   zfunc,numargsc                     g | ]
}|d          S )r   r0   .0r:   s     r   
<listcomp>r%    s    4I4I4IaQqT4I4I4Ir   )idsc                 @   t           j                            d          }t          t          |           } d |                    |          D             }t          j        | D ];} | | }t          d |D                       rt          |t           j	                   ;<d S )Nl   7'}?J-0 c                 r    g | ]4}t          |          t          j        t          j        t          j         f5S r0   )floatr   rP   r   r#  s     r   r%  z"test_nonfinite.<locals>.<listcomp>  s/    UUUAU1XXrvrvw7UUUr   c              3   >   K   | ]}t          j        |          V  d S r4   r   rO   r#  s     r   	<genexpr>z!test_nonfinite.<locals>.<genexpr>  s*      ))qrx{{))))))r   )
r   randomdefault_rnggetattrr   	itertoolsproductanyr   rP   )funcnumargsrngargs_choicesrT   rU   s         r   test_nonfiniter7    s     )

 0
1
1C2tDUUGATATUUUL!<0 	 	dDk))D))))) 	bf%%%% 	 	r   c                      t          j        ddt          j        d          dz             } g d}t	          | |           d S )Ng!?ry         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   )rU   res_exps     r   test_chndtrix_gh2158r<    sK    
+h29S>>$#6
7
7C5 5 5G C!!!!!r   c                  x    g d} g d}g d}g d}t          j        | ||          }t          ||dd           d S )N)
MbP?\(\?皙#@b     i'  rA  r@  r?  r>  )
r>  r   r   皙?+?r>  r   r   rC  rD  )
~jtX?333333?r      ,  rE  rF  r   rG  rH  )
K ˸@gtI?x9" @g.$Bt+@gO,oq@rI  gZc^?rJ  g@gjdy=rX   r5   r6   )r   r!  r   )dfarrparrtarrdesiredactuals        r   test_nctdtrinc_gh19896rR    si     EDDEEEEDCCCD# # #G \%t,,FFG%c::::::r   c                  V   t          j        t          j        t          j        t           j         t           j         dddt           j        g                              sJ t          j        t          j        t          j        t           j         g d                              sJ d S )N      rX   r  )rX         ?r   g      ?r  )r   allrO   r   r   r   r   r0   r   r   test_stdtr_stdtrit_neg_infrW    s    6"(28RVGrvgtS#rv-NOOPPQQQQQ6"(2:rvg/J/J/JKKLLMMMMMMMr   c                  *   t          j        t           j        t           j         ddddddddt           j        g          } | d d d f         } t          j        t           j        t           j         ddddddt           j        g	          }t          j        t          j        t          j        | t           j        |                              sJ t          j        t          j        t          j	        | t           j        |                              sJ d S )	Ng      $rT  rX   r   r   gH.?r        $@)
r   arrayrP   r   
atleast_2drV  rO   r   r   r  )r   ru   s     r   test_bdtrik_nbdtrik_infr\    s    
	tS&"fc4P	R 	RA	!!!D&	A
	"&%sFBRVD	F 	FA6"(29Q2233444446"(2:a3344555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?)rY  r]  r  r   g%g{E?)r   r   r]  r]  g 	
1)r  r   r   r   gڞ^)k;)r  r]  r   rY  glB?)r  r]  rY  r]  g)Dt^\,?)rY  r  r   r   g|?)r   r   r  r  g?)r   r   r   rY  r  )r  r   r   rY  g*}?)g0.++r   r   r   g0J?c                     t          t          j        | |||          |dd           d|cxk     rdk     r-n d S t          t          j        | |||          |d           d S d S )NvIh%<=r   rL  r   g|=r   )r   r   r  r  )rz   r{   r   fexpected_cdfs        r   test_ncfdtr_ncfdtrirb    s    x BIc3A..5qQQQQ 	<!
3R>>NNNNNN r   rT   ))rT  r   r   r   )r   rT  r   r   )r   r   rT  r   )r   r   r   r   )r   r   r   c                     t          j        d          5  t          j        t           j        d          5  t          j        |   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S Nraise)domainrg  )match)r   errstater  raisesSpecialFunctionErrorr  )rT   s    r   test_ncfdtri_domain_errorrl  .  s     
G	$	$	$  ]22(CCC 	 	J	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 s4   !A*AA*A	A*A	A**A.1A.c                      e Zd Zej                            dg dddddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d? ej        d@dAdBdCej                            dDE          F          dG          dH             ZdI Z	ej                            dJg dKg dLg dMg dNdOdOe
j        dOdPgdOdOe
j         dPdPgg          dQ             Zej                            dg dR          dS             ZdTS )UTestNoncentralTFunctionszdf, nc, x, expected_cdf)r?  ffffffrE  gD i?)r?  ro  rF  g?)r?  ro  r   g7?r?  ro  rG  gU?)r?  RQ?rE  g?)r?  rq  rF  gx$p?)r?  rq  r   g7?)r?  rq  rG  g]ŧe?)r?  ffffff@rE  g樼?)r?  rr  rF  g:GF ?)r?  rr  r   gpa?)r?  rr  rG  gfO!t?)r?  &   rE  g    )r?  rs  rF  gQb] r?  rs  r   gy+)r?  rs  rG  guQRm?)r@  ro  rE  g/C*i?)r@  ro  rF  g.b?)r@  ro  r   gI'v?)r@  ro  rG  g?)r@  rq  rE  g?)r@  rq  rF  gD-?)r@  rq  r   gy0 ?)r@  rq  rG  gC?)r@  rr  rE  g?)r@  rr  rF  g:e!?)r@  rr  r   gh?)r@  rr  rG  g?)r@  rs  rE  g+    )r@  rs  rF  gPDp   )r@  rs  r   gMr@  rs  rG  ggS>^X#>)rA  ro  rE  gNG0i?)rA  ro  rF  g%Wح?)rA  ro  r   g?)rA  ro  rG  r  )rA  rq  rE  g aYҏ?)rA  rq  rF  gpku+?)rA  rq  r   gZVq?)rA  rq  rG  r  )rA  rr  rE  g_a?)rA  rr  rF  g+,!?)rA  rr  r   gqgb?)rA  rr  rG  g?)rA  rs  rE  gQ    )rA  rs  rF  g%Q   )rA  rs  r   gTh-1)rA  rs  rG  g¤5)rB  ro  rE  geK0i?)rB  ro  rF  g?)rB  ro  r   gjS?)rB  ro  rG  r  )rB  rq  rE  g|S׏?)rB  rq  rF  gfG-?)rB  rq  r   g^"?)rB  rq  rG  r  )rB  rr  rE  gm?)rB  rr  rF  g|q]/!?)rB  rr  r   g+%αs?)rB  rr  rG  r  )rB  rs  rE  gn    )rB  rs  rF  gm   rB  rs  r   gDdz+Bug in underlying Boost math implementation)reason)marks)rB  rs  rG  g>H*c                 X    t          j        |||          }t          ||dd           d S )Nr_  grL  )r   r  r   )r   r   r   r:   ra  nctdtr_results         r   test_gh19896z%TestNoncentralTFunctions.test_gh19896c  s5    V 	"b!,,|%fMMMMMMr   c                 b    d\  }}}d}t          t          j        |||          |d           d S )N)  r   r   -^?g+=r   r   r   r  )r   r   r   r:   expecteds        r   test_nctdtr_gh8344z+TestNoncentralTFunctions.test_nctdtr_gh8344  s;     	B(	"b!,,hUCCCCCCr   zdf, nc, x, expected, rtol)      @g      @g       gG>g:0yU>)r   rY  r  g'$ <r_  )r   g             @gjx?r_  )rY  r9  rF  ge*mt-r_  r  rX   c                 R    t          t          j        |||          ||           d S )Nr   r~  )r   r   r   r:   r  r5   s         r   test_nctdtr_accuracyz-TestNoncentralTFunctions.test_nctdtr_accuracy  s-     		"b!,,hTBBBBBBr   )rt  )r|  r   r   r}  rp  ru  c                 R    t          t          j        |||          |d           d S )Nr   r   )r   r   r  )r   r   r   r:   ra  s        r   test_nctdtritz&TestNoncentralTFunctions.test_nctdtrit  s-     	BL9915IIIIIIr   N)r,   r-   r.   r  r  r  paramr  rz  r  r   r   r  r  r0   r   r   rn  rn  ;  sp       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 N	O 	O 	OCE9H 	.IE9 E ELN NME ELND D D [# 
5	4	4	8	8	8	3	3	3	7	7	7
b"&#s	#
b26'3	$	
	 C C C [6 9 9 9  J J J J Jr   rn  c                   J   e Zd Zd Zej                            dg d          d             Zej                            ddddej	        fej	        dfg          d	             Z
ej                            d
ej        ej        ej        ej        g          ej                            dg d          d                         Zej                            d
ej        ej        ej        ej        g          ej                            dej        ddfdej        dfddej        fej        ej        dfej        dej        fdej        ej        fej        ej        ej        fg          d                         Zej                            ddddej        fddej	        ej        fdej	        dej        fdej	        ej	        dfddej	        dfej	        ddej        fej	        dej	        ej        fej	        dddfej	        ej	        ej	        ej        fg	          d             ZdS )!TestNoncentralChiSquaredFunctionsc                 ,   t          j        g dg dg dg dg dg dg dg dg d	g d
g dg dg dg          }t          j        |d d df         |d d df         |d d df                   }t	          ||d d df         d           t          j        |d d df         |d d df         |d d df                   }t	          |d d         |d ddf         d           t          j        |d d df         |d d df         |d d df                   }t	          |d d         |d ddf         d           t          j        |d d df         |d d df         |d d df                   }t	          |d d         |d ddf         d           d S )N)      9@r9    gL94)r  r     g7Fh9)r>  r        D@ggåc;)r]  r  r  g	;)r9  r  k   g8x@x>)g     6@r  r  gg1\>>)r  r  r  g`>)r  r  r  gp!P?)g     u@r   rY  g j
?)r         +@rY  g]?)g     @r9  r  g4ۙ?)g     b@r  rY  g?)g      d@r  rY  r  r   r   ry   r   r_  r   g:0yE>)r   rZ  r   r  r   r   r   r   )r   r+   cdfr:   r   r   s         r   .test_chndtr_and_inverses_against_wolfram_alphazPTestNoncentralChiSquaredFunctions.test_chndtr_and_inverses_against_wolfram_alpha  s    999999999:::999999999666666666666666666
   iqqq!tfQQQTlF111a4LAAVAAAqD\6666 Kqqq!tfQQQTlF111a4LAA#2#ssAvT::::\&A,qqq!tfQQQTlCC3B3Qd;;;;\&A,qqq!tfQQQTlCC3B3Qd;;;;;;r   z+x, df, nc, expected_cdf, rtol_cdf, rtol_inv))r      2   g
8DLr_  r_  )r   r@   r  g"r_  r_  )r   r  r  ggI˘r_  r_  )g     @g     j@r   grd\\"rK  rK  )   r   r   gk?-a=r  )  rH  r   g;?r_  r   )ix  r  r   g.?r_  r  )r  r  r  g#%?r_  gdy=c                    t          j        |||          }t          |||           t          t          j        |||          ||           t          t          j        |||          ||           t          t          j        |||          ||           t          t          j        |||          ||           t          t          j        |||          |d           t          t          j        |||          |d           d S )Nr   r   r   )r   r  r   r   r   r   )r   r:   r   r   ra  rtol_cdfrtol_invchndtr_results           r   
test_tailsz,TestNoncentralChiSquaredFunctions.test_tails  s    	!R,,|(CCCCL"b9918LLLLQb992HMMMMQL992HMMMM 	M2r::AHMMMMQr::BTJJJJQM::BTJJJJJJr   zx, df)r   r   )r   r   r   c                 x    t          t          j        ||d          t          j        ||          d           d S )Nr   r   r   )r   r   r  chdtr)r   r:   r   s      r   %test_chndtr_with_nc_zero_equals_chdtrzGTestNoncentralChiSquaredFunctions.test_chndtr_with_nc_zero_equals_chdtr  s7     		!R++RXb!__5IIIIIIr   funrT   ))rc  r   r   )r   rc  r   )r   r   rc  )rc  rc  r   )rc  r   rc  )r   rc  rc  )rc  rc  rc  c                     t          j        d          5  t          j        t           j        d          5   ||  d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S re  )r   ri  r  rj  rk  )r   rT   r  s      r   test_domain_errorz3TestNoncentralChiSquaredFunctions.test_domain_error$  s     [((( 	 	r6hGGG  T

              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s3   !A!A	A!	A	A!A	A!!A%(A%c                 8    t          j         ||           sJ d S r4   r+  )r   r  rT   s      r   test_nan_propagationz6TestNoncentralChiSquaredFunctions.test_nan_propagation0  s&     xT
#######r   zx, df, nc, expectedr   c                 R    t          t          j        |||          |d           d S Nr   r   )r   r   r  )r   r:   r   r   r  s        r   test_chndtr_edge_casesz8TestNoncentralChiSquaredFunctions.test_chndtr_edge_cases;  s-     		!R,,hUCCCCCCr   N)r,   r-   r.   r  r  r  r  r  r   r   r  r   r  r   r   r   r  rP   r  r  r0   r   r   r  r    s       < < <h [5	; 	; 	;
 

K 
K
 

K [W	!RVrvqk2 J J J [U	BKr|<  [V	1 	1 	1  	  
 [U	BKr|<  [V
&!Q!RVQ!Q
&"&!	rvq"&1Arvrv3F
&"&"&	!	# 
$ $  $ [
Q26	
Q	
RVQ	
RVRVQ	
Q	
&!Q	
&!RVRV	$
&!Q	
&"&"&"&	)	+ D D D D Dr   r  r:   r   r   c                 <    t          j        d|           dk    sJ d S )Nr   r   )r   r   r  s    r   !test_chdtriv_p_equals_1_returns_0r  K  s%    :aq      r   c                       e Zd Zej                            dddg          d             Zej                            dd          d             Zd Zd	 Z	ej                            d
g d          d             Z
dS )
TestPdtrikzp, m, expected)r   r   r   )r   r   r   c                 <    t          j        ||          |k    sJ d S r4   )r   r  )r   ru   r&   r  s       r   test_edge_caseszTestPdtrik.test_edge_casesQ  s%     yA(******r   r&   )r   r   r   c                 X    t          j        t          j        d|                    sJ d S r   )r   rO   r   r  )r   r&   s     r   test_p_equals_1_returns_nanz&TestPdtrik.test_p_equals_1_returns_nanW  s(    x	!Q(((((((r   c                     t          j        dgdgdggg d          }t          |t          j        d                     d S )Nr   rU  gffffff?)r   g#B;r   )r   r   )r   r  r   r   zeros)r   rt   s     r   test_small_probabilitiesz#TestPdtrik.test_small_probabilities[  sG    IsTFTF+-=-=-=>>1bhv../////r   c                     g d}d}t          j        ||          }t          t          j        ||          |d           d S )N)r   r  r     r   r   )r   pdtrr   r  )r   r&   rt   ru   s       r   test_roundtrip_against_pdtrz&TestPdtrik.test_roundtrip_against_pdtr`  sD    MMGAqMM	!Q777777r   zp, m, k))gG:Ї7r   ry   )g;(&?r   c   )gkͧ1r   r  )g-i i_ c                 P    t          t          j        ||          |d           d S r  )r   r   r  )r   ru   r&   rt   s       r   test_accuracyzTestPdtrik.test_accuracyf  s)     		!Q777777r   N)r,   r-   r.   r  r  r  r  r  r  r  r  r0   r   r   r  r  P  s        [-))+, ,+ +, ,+ [S,//) ) 0/)0 0 0
8 8 8 [YI I IJ J
8 8J J
8 8 8r   r  za, b, p, refr   c                 N    t          t          j        | ||          |           d S r4   )r   r   r   )r   r   ru   refs       r   test_gdtrix_edge_casesr  p  (     1a##S)))))r   zp, b, x, refc                 N    t          t          j        | ||          |           d S r4   )r   r   r   )ru   r   r:   r  s       r   test_gdtria_edge_casesr  }  r  r   r4   )6r/   r0  numpyr   numpy.testingr   r   r   r  scipy.specialspecialr   scipy.special._testutilsr   r   r   scipy.special._mptestutilsr	   r
   r   r   r   r   ImportErrorr   r2   r?   rk   rw   r}   r   r   r   r   r  slowr   funcsr  r7  r<  rR  rW  r\  rb  rl  rn  r  r  r  rP   r   r  r  r0   r   r   <module>r     s;            K K K K K K K K K K       , , , , , , , , , ,; ; ; ; ; ; ; ; ; ; ; ; ; ;%MMMM % % %]8$$FFF%       $
4 
4 
4 
4 
4 
4 
4 
4M4 M4 M4 M4 M4 M4 M4 M4`  
D D D          - - -
 vvyE yE yE yE yE yE yE  yEx 	  	  	F 4I4I54I4I4IJJ  KJ$" " "$; ; ;N N N6 6 6 222666333111777555333111000---###111/// "/O /O# "/Ob 
     
SJ SJ SJ SJ SJ SJ SJ SJlwD wD wD wD wD wD wD wDt sCj))! ! *)!8 8 8 8 8 8 8 8@ 1bf1bf2626VQ26VQ26VRVQVRVQ	* 	 	* *	 	* 1bf26261bf261VQ26VQVQ26VQ	* 	 	* *	 	* * *s   = AA