
    Ug!D                     J   d Z ddlZddlZddl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d"dZd Zd"d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'ej!        (                    d          d             Z)d Z*d  Z+d! Z,dS )#z
Test cdflib functions versus mpmath, if available.

The following functions still need tests:

- ncfdtr
- ncfdtri
- ncfdtridfn
- ncfdtridfd
- ncfdtrinc
- nbdtrik
- nbdtrin
- pdtrik
- nctdtr
- nctdtrit
- nctdtridf
- nctdtrinc

    N)assert_equalassert_allclose)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    ^/var/www/surfInsights/venv3-11/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   r4   r5   s        r   r   zEndpointFilter.__init__9   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   r4   r5   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<   r/   r   r   r1   r1   8   s2          4 4 4 4 4r   r1   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 r3   )spfuncmpfuncindexargspecspfunc_firstdpsr$   r4   r5   
isinstancelist
endpt_rtol
endpt_atollen)r   rB   rC   rD   rE   rF   rG   r$   r4   r5   rJ   rK   s               r   r   z_CDFData.__init__F   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 r3   )rF   rB   r   isnannanrI   rD   r   workdpsrG   rC   tupler   real)r   argsress      r   idmapz_CDFData.idmapc   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        )rJ   rK   ziprE   appendr1   r   r   )r   filtersr4   r5   specs        r   get_param_filterz_CDFData.get_param_filterw   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_columnsr4   r5   
vectorizedparam_filter)r
   rE   r$   r\   rQ   rangeshaper   hstackrD   reshaper   rU   r4   r5   check)r   rS   ra   r^   r_   s        r   rf   z_CDFData.check   s    df--,,..eDJqM2233Ay$QQQ
] 3 ; ;DJqM1 M MNOOT,^idiE*	, 	, 	, -2EGGGGGr   )Tr?   r@   NNNN)r+   r,   r-   r   rU   r\   rf   r/   r   r   r>   r>   E   s^        DH15-1# # # #:  (  "
4 
4 
4 
4 
4r   r>   c                  F    t          | i |}|                                 d S r3   )r>   rf   )r   kwds      r   _assert_invertsrj      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_cdfrv      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      Trm   )r   rp   rr   )dfndfdr9   ubrT   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         ?rx   )	r   mprG   rP   rp   hyp2f1gammasqrtpi)dftrG   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 )Nrx   r      r~   )r   besselir   exp)r   r   ncrT   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 r3   )r   )r   r   r   s    r   <lambda>z%_noncentral_chi_cdf.<locals>.<lambda>   s    $72r$B$B r   r   )r   r   rG   rp   rP   quad)r9   r   r   rG   rT   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   r/   )rt   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?r4   )rj   spbdtrikrv   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ư>r4   rK   )rj   r   bdtrinrv   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 NTrm   r   rr   r   r   r9   s      r   r   z)TestCDFlib.test_btdtria.<locals>.<lambda>       FN1aA4HHH r   r         Y@Finclusive_ar   r   inclusive_br   r   )rj   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   r   Fr   r   Hz>)NgC]r2<V瞯<r   )rj   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   )rj   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   ro   r   gammaincr   s      r   r   z(TestCDFlib.test_gdtria.<locals>.<lambda>       FOA1$GGG r   r        @@Fr   g     @r   Nr   绽|=r   )rj   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   )rj   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   rx   r   r   Fr   r   r   r   )rj   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 r3   r   ncdfr9   yzs      r   r   z*TestCDFlib.test_nrdtrimn.<locals>.<lambda>#      FK1a00 r   r   皙?Fr   g    _g    _Br   r   )rj   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 r3   r   r   s      r   r   z*TestCDFlib.test_nrdtrisd.<locals>.<lambda>-  r   r   r   
   Fr   g}Ô%ITr   r   )rj   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_stdtr4  sI    HAs^^S//0t	= 	= 	= 	= 	= 	=r   c                     t          t          j        t          dt	                      t                      gd           d S )Nr   r   r   )rj   r   stdtridfr   r   r   r   s    r   test_stdtridfzTestCDFlib.test_stdtridf;  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   )rj   r   stdtritr   r	   r   r   s    r   test_stdtritzTestCDFlib.test_stdtritB  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 )Nrx   Tr   r   )r)   r9   s     r   r   z)TestCDFlib.test_chdtriv.<locals>.<lambda>L  s    1!FFF r   r   r   r   r   r   )rj   r   chdtrivr   r	   r   s    r   test_chdtrivzTestCDFlib.test_chdtrivI  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$   r4   r5   )rj   r   	chndtridfr   r   r   r   s    r   test_chndtridfzTestCDFlib.test_chndtridfO  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 )Nrx   r   r   Fr   r   r   r   r   r   )rj   r   	chndtrincr   r   r	   r   r   s    r   test_chndtrinczTestCDFlib.test_chndtrincY  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$   r4   r5   rK   )rj   r   chndtrixr   r   r	   r   r   s    r   test_chndtrixzTestCDFlib.test_chndtrixb  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)r9   s    r   r   z4TestCDFlib.test_tklmbda_zero_shape.<locals>.<lambda>o  s    bjA&& r   c                 :    t          j        |            z   z  S r3   )r   r   )r9   ones    r   r   z4TestCDFlib.test_tklmbda_zero_shape.<locals>.<lambda>p  s    c6:qb>>C/0 r   r   r   )r   rp   r   r   )r   r   s    @r   test_tklmbda_zero_shapez"TestCDFlib.test_tklmbda_zero_shapek  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   g&.>)rF   r4   rK   rj   r   r   r   r   r   r   s    r   test_tklmbda_neg_shapez!TestCDFlib.test_tklmbda_neg_shapes  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   )rF   r4   r  r   s    r   test_tklmbda_pos_shapez!TestCDFlib.test_tklmbda_pos_shape{  sM    J!		3q#5999:T		+ 	+ 	+ 	+ 	+ 	+r   r   )r~         ?g       @c                 `    d|z  }t          t          j        | |g|          ddg           d S )Nr   rW   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  r/   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   rx   )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   )pdtrikrx   )r   rx   )r   rx   )r   rx   )nctdtrr   )nctdtritr   )	nctdtridfr   )	nctdtrincr   )r   rx   zfunc,numargsc                     g | ]
}|d          S )r   r/   .0r9   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 r/   )floatr   rO   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 r3   )r   rN   r  s     r   	<genexpr>z!test_nonfinite.<locals>.<genexpr>  s*      ))qrx{{))))))r   )
r   randomdefault_rnggetattrr   	itertoolsproductanyr   rO   )funcnumargsrngargs_choicesrS   rT   s         r   test_nonfiniter.    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!?rx   g      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   )rT   res_exps     r   test_chndtrix_gh2158r2    sK    
+h29S>>$#6
7
7C5 5 5G C!!!!!r   z&32bit fails due to algorithm thresholdc                      g d} g d}g d}g d}g }t          j        | ||          D ] \  }}}|t          j        |||          gz  }!t	          ||dd           d S )N)\(\?皙#@b     )gffffffgRQ?gffffff@&   )~jtX?333333?r      )@礎pFh?r<  gM/q?gea?g?gx$p?g0?gkeŧe?+1?r=  ga?gip#t?rW   rW   rW   g!Ȩm?r<  r<  g3v?r  g?g:-?gy0 ?gC?r=  r=  g@;?gN?rW   rW   rW   g   >r<  r<  g$?r  g\+aYҏ?g0ku+?g2{q?r  r=  r=  g@L7d?r  rW   rW   rW   rW   r<  r<  g?r  g׏?gڙ-?g_"?r  r=  r=  g fu?r  rW   rW   rW   rW   r   rW   r4   r5   )r'  r(  r   r  r   )dfarrpnoncarrtarrresarractarrr   rt   r   s           r   test_nctdtr_gh19896rD    s     !  E$$$H"""D" " "F* F%eXt<< ( (Aq29RA&&''FFC888888r   c                  x    g d} g d}g d}g d}t          j        | ||          }t          ||dd           d S )N)
MbP?r4  r5  r6  r7  i'  r6  r5  r4  rF  )
rF  r   r   皙?+?rF  r   r   rG  rH  )
r9  r:  r   r;  ,  r9  r:  r   r;  rI  )
K ˸@gtI?x9" @g.$Bt+@gO,oq@rJ  gZc^?rK  g@gjgdy=rW   r>  )r   r  r   )r?  parrrA  desiredactuals        r   test_nctdtrinc_gh19896rO    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      rW   r  )rW   g      ?r~   g      ?r  )r   allrN   r   r   r   r   r/   r   r   test_stdtr_stdtrit_neg_infrS    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      $rQ  rW   r   r~   gH.?r  g      $@)
r   arrayrO   r   
atleast_2drR  rN   r   r   r  )r   rt   s     r   test_bdtrik_nbdtrik_infrW    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   r3   )-r.   r'  numpyr   numpy.testingr   r   r	  scipy.specialspecialr   scipy.special._testutilsr   r   r   scipy.special._mptestutilsr   r	   r
   r   r   r   ImportErrorr   r1   r>   rj   rv   r|   r   r   r   r   r
  slowr   funcsr  r.  r2  xfail_on_32bitrD  rO  rS  rW  r/   r   r   <module>rb     s8   &         7 7 7 7 7 7 7 7       , , , , , , , , , ,; ; ; ; ; ; ; ; ; ; ; ; ; ;%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xE xE xE xE xE xE xE  xEv 	  	  	F 4I4I54I4I4IJJ  KJ$" " "" DEE9 9 FE9D; ; ;N N N6 6 6 6 6s   ; AA