
    tKg!D              	       :   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 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jB                  jD                   eed       G d d                    Z#g dZ$ejB                  jK                  de$e$D  cg c]  } | d   	 c}       d        Z&d Z'ejB                  jQ                  d      d        Z)d Z*d Z+d  Z,y# e$ r  ed      ZY w xY wc c} w )"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y)ProbArgz*Generate a set of probabilities on [0, 1].c                      d| _         d| _        y )Nr      )abselfs    c/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/special/tests/test_cdflib.py__init__zProbArg.__init__)   s        c                 b   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    1a4L[[bhhsmQ/[[c1q559!"=RXXc]C33EE"b"*yy|r   N)__name__
__module____qualname____doc__r   r*    r   r   r   r   &   s    4
r   r   c                       e Zd Zd Zd Zy)EndpointFilterc                 <    || _         || _        || _        || _        y N)r   r   rtolatol)r   r   r   r4   r5   s        r   r   zEndpointFilter.__init__9   s    		r   c                    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    q466z"TYYrvvdff~%=		%IIq466z"TYYrvvdff~%=		%IIxxud33r   N)r+   r,   r-   r   r<   r/   r   r   r1   r1   8   s    4r   r1   c                   ,    e Zd Z	 	 	 ddZd Zd Zd Zy)_CDFDataNc                    || _         || _        || _        || _        || _        || _        || _        || _        |	| _        t        |t              sd | _        d | _        y |
|mt        |
t              r|
| _        n|
gt        | j                        z  | _        t        |t              r|| _        y |gt        | j                        z  | _        y d | _        d | _        y r3   )spfuncmpfuncindexargspecspfunc_firstdpsr$   r4   r5   
isinstancelist
endpt_rtol
endpt_atollen)r   r@   rA   rB   rC   rD   rE   r$   r4   r5   rH   rI   s               r   r   z_CDFData.__init__F   s     
(		'4("DO"DO#z'=*d+",#-,s4<</@"@*d+",#-,s4<</@"@"DO"DOr   c                    | j                   r | j                  | }t        j                  |      rt        j                  S t        |      }||| j                  <   t        j                  | j                        5   | j                  t        |       }t        |j                        }d d d        |S t        j                  | j                        5   | j                  | }t        |j                        }d d d        t        |      }|| j                  <    | j                  t        |       }|S # 1 sw Y   |S xY w# 1 sw Y   JxY wr3   )rD   r@   r   isnannanrG   rB   r   workdpsrE   rA   tupler   real)r   argsress      r   idmapz_CDFData.idmapc   s   $++t$Cxx}vv:D"D)!dkk5;/) * 
 )!dkk4() * :D"D$++uT{+C
 * 
 *)s   :.D2%D?2D<?Ec           	      D   | j                   | j                  y g }t        | j                   | j                  | j                        D ]V  \  }}}|||j	                  d        |d}n|d}|j	                  t        |j                  |j                  ||             X |S )N        )rH   rI   ziprC   appendr1   r   r   )r   filtersr4   r5   specs        r   get_param_filterz_CDFData.get_param_filterw   s    ??"t'> #DOOT__dll SD$|t$NN>$&&$&&$EF !T r   c           
         t        | j                  | j                        }| j                         }t	        t        |j                  d               }|j                  d   }t        j                  ||d d | j                  f   j                  |j                  d   d      f      }t        | j                  |||| j                  | j                  d|      j                          y )Nr   r   F)param_columnsresult_columnsr4   r5   
vectorizedparam_filter)r
   rC   r$   rZ   rO   rangeshaper   hstackrB   reshaper   rS   r4   r5   check)r   rQ   r_   r\   r]   s        r   rd   z_CDFData.check   s    dff-,,.eDJJqM23Ayy$Q

] 3 ; ;DJJqM1 MNOT,^iidiiE*	, -2EGr   )T   i  NNNN)r+   r,   r-   r   rS   rZ   rd   r/   r   r   r>   r>   E   s    DH15-1#:("
4r   r>   c                  :    t        | i |}|j                          y r3   )r>   rd   )r   kwds      r   _assert_invertsri      s    !rAGGIr   c                 V   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_cdfru      s    jjmVZZ]FJJqM!qAAvzz!}	
azz!}KK1D)E>>!a%Q5d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      Trl   )r   ro   rq   )dfndfdr9   ubrR   s        r   _f_cdfr{      ss    1uzz!}**S/6::c?FJJqMa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 Y   y xY w)N      ?r         ?rw   )	r   mprE   rN   ro   hyp2f1gammasqrtpi)dftrE   facs       r   _student_t_cdfr      s    
{iimm		

2

1AmmCb1fsQTE"H=qc26l+++v{{699R<(c"f)===Sy 
		s   B7C33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 )Nrw   r      r}   )r   besselir   exp)r   r   ncrR   s       r   _noncentral_chi_pdfr      sd    
..A6;;r!t#4
5C6::Bik"AbDBqD3J#7799CJr   c                 P   |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 Y   y xY w)Nc                     t        |       S r3   )r   )r   r   r   s    r   <lambda>z%_noncentral_chi_cdf.<locals>.<lambda>   s    $72r$Br   r   )r   r   rE   ro   rN   quad)r9   r   r   rE   rR   s    ``  r   _noncentral_chi_cdfr      sl    
{iimm

1vzz"~vzz"~IAr2		kkBQFK 
		s   4BB%c                 $    | |z  d| z
  |z  z
  |z  S )Nr   r/   )rs   lmbdas     r   _tukey_lmbda_quantiler      s    uHA~%u,,r   z0.19c                   @   e Zd Zej                  j                  d      d        Zd Zd Zd Z	ej                  j                  d      d        Z
d Zd	 Zd
 Zd Zd Zd Zej                  j                  d      d        Zd Zd Zej                  j                  d      d        Zej                  j                  d      d        Zd Zd Zd Zej                  j                  d      d        Zej                  j5                  dg d      d        Zy)
TestCDFlibF)runc           
          t        t        j                  t        dt	               t        dd      t	               gd       y )Nr   r     -C6?r4   )ri   spbdtrikru   r   r	   r   s    r   test_bdtrikzTestCDFlib.test_bdtrik   s-    II	6!T?GI6		r   c           	          t        t        j                  t        dt	        dd      t               t               gdg d       y )Nr   r   r   )NNư>r4   rI   )ri   r   bdtrinru   r	   r   r   s    r   test_bdtrinzTestCDFlib.test_bdtrin   s0    IIq$GI6"4		6r   c                     t        t        j                  d dt               t	        ddd      t	        dddd      gd	       y )
Nc                 4    t        j                  | ||d      S NTrl   r   rq   r   r   r9   s      r   r   z)TestCDFlib.test_btdtria.<locals>.<lambda>       FNN1aA4Hr   r         Y@Finclusive_ar   r   inclusive_br   r   )ri   r   btdtriar   r   r   s    r   test_btdtriazTestCDFlib.test_btdtria   s=    JJH	3q#59Aqe?A	r   c                     t        t        j                  d dt        ddd      t	               t        dddd      gdg d	
       y )Nc                 4    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   )ri   r   btdtribr   r   r   s    r   test_btdtribzTestCDFlib.test_btdtrib   s@    JJHCU+WYA5e<>+	-r   c                     t        t        j                  t        dt	        dd      t               t        ddd      gd       y )Nr   d   r   Fr   r   r   )ri   r   fdtridfdr{   r	   r   r   r   s    r   test_fdtridfdzTestCDFlib.test_fdtridfd   s5    KKAs^WYAs(FG	r   c                     t        t        j                  d dt               t	        ddd      t	        ddd      gdg d	       y )
Nc                 8    t        j                  || |z  d      S NTr   rn   r   gammaincr   s      r   r   z(TestCDFlib.test_gdtria.<locals>.<lambda>       FOOA1$Gr   r        @@Fr   g     @r   Nr   绽|=r   )ri   r   gdtriar   r   r   s    r   test_gdtriazTestCDFlib.test_gdtria   s>    IIGYAs6CU+-*	,r   c                     t        t        j                  d dt        ddd      t	               t        ddd      gd	       y )
Nc                 8    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   )ri   r   gdtribr   r   r   s    r   test_gdtribzTestCDFlib.test_gdtrib  s;    IIGCU+WYCU+-	r   c                     t        t        j                  d dt        ddd      t        ddd      t	               gdg d	       y )
Nc                 8    t        j                  || |z  d      S r   r   r   s      r   r   z(TestCDFlib.test_gdtrix.<locals>.<lambda>  r   r   rw   r   r   Fr   r   r   r   )ri   r   gdtrixr   r   r   s    r   test_gdtrixzTestCDFlib.test_gdtrix  s>    IIGCU+SCU-KY*	,r   c                     t        t        j                  d dt               t	        dt
        j                  dd      t	        dd      gd	       y )
Nc                 0    t        j                  || |      S r3   r   ncdfr9   yzs      r   r   z*TestCDFlib.test_nrdtrimn.<locals>.<lambda>#      FKK1a0r   r   皙?Fr   g    _g    _Br   r   )ri   r   nrdtrimnr   r   r   infr   s    r   test_nrdtrimnzTestCDFlib.test_nrdtrimn   sB    KK0Ybff%UC 	r   c                     t        t        j                  d dt        t        j
                   ddd      t               t        dd      gd       y )	Nc                 0    t        j                  || |      S r3   r   r   s      r   r   z*TestCDFlib.test_nrdtrisd.<locals>.<lambda>-  r   r   r   
   Fr   g}Ô%ITr   r   )ri   r   nrdtrisdr   r   r   r   r   s    r   test_nrdtrisdzTestCDFlib.test_nrdtrisd*  sC    KK0"&&"%UCYU^ 	r   c           	          t        t        j                  t        t	        dd      t        dt        j                        gd       y )Nr   r   r   r   r   )r   r   stdtrr   r	   r   r   r   r   s    r   
test_stdtrzTestCDFlib.test_stdtr4  s/    HHAs^S/0t	=r   c                 l    t        t        j                  t        dt	               t               gd       y )Nr   r   r   )ri   r   stdtridfr   r   r   r   s    r   test_stdtridfzTestCDFlib.test_stdtridf;  s$    KK	35!	.r   c           	      v    t        t        j                  t        dt	        dd      t               gdd dg       y )Nr   r   r   r   r   )ri   r   stdtritr   r	   r   r   s    r   test_stdtritzTestCDFlib.test_stdtritB  s/    JJq#	*e}		&r   c           
      j    t        t        j                  d dt               t	        dd      gd       y )Nc                 >    t        j                  | dz  |dz  d      S )Nrw   Tr   r   )r)   r9   s     r   r   z)TestCDFlib.test_chdtriv.<locals>.<lambda>L  s    1!Fr   r   r   r   r   r   )ri   r   chdtrivr   r	   r   s    r   test_chdtrivzTestCDFlib.test_chdtrivI  s(    JJF	6!S>*	7r   c                     t        t        j                  t        dt	        ddd      t               t	        ddd      gddd	       y )
Nr   r   r   Fr   r   r   r   r$   r4   r5   )ri   r   	chndtridfr   r   r   r   s    r   test_chndtridfzTestCDFlib.test_chndtridfO  s@     	LLAs.	As.0E	+r   c           
          t        t        j                  t        dt	        ddd      t        dd      t               gddd	
       y )Nrw   r   r   Fr   r   r   r   r   r   )ri   r   	chndtrincr   r   r	   r   r   s    r   test_chndtrinczTestCDFlib.test_chndtrincY  s:     	LL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	
       y )Nr   r   r   Fr   r   r   r   )r   NN)r$   r4   r5   rI   )ri   r   chndtrixr   r   r	   r   r   s    r   test_chndtrixzTestCDFlib.test_chndtrixb  s;    KK	6!S>3q#5+IJE)	+r   c                 h    t        j                  d      t        d fdt               gd       y )Nr   c                 .    t        j                  | d      S )Nr   )r   tklmbdar9   s    r   r   z4TestCDFlib.test_tklmbda_zero_shape.<locals>.<lambda>o  s    bjj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/0r   r   r   )r   ro   r   r   )r   r   s    @r   test_tklmbda_zero_shapez"TestCDFlib.test_tklmbda_zero_shapek  s'    jjm&0UG$	 r   c                 |    t        t        j                  t        dt	               t        ddd      gddddg       y )Nr   iF)r   r   g&.>)rD   r4   rI   ri   r   r   r   r   r   r   s    r   test_tklmbda_neg_shapez!TestCDFlib.test_tklmbda_neg_shapes  s5    JJ!	3sA59:Td|	%r   c                 v    t        t        j                  t        dt	               t        ddd      gdd       y )Nr   r   Fr   r   )rD   r4   r  r   s    r   test_tklmbda_pos_shapez!TestCDFlib.test_tklmbda_pos_shape{  s.    JJ!	3q#59:T		+r   r   )r}         ?g       @c                 X    d|z  }t        t        j                  | |g|      ddg       y )Nr   rU   r  )r   r   r   )r   r   bounds      r   test_tklmbda_lmbda1zTestCDFlib.test_tklmbda_lmbda1  s*    %RZZ%7#s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      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   rw   )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   )pdtrikrw   )r   rw   )r   rw   )r   rw   )nctdtrr   )nctdtritr   )	nctdtridfr   )	nctdtrincr   )r   rw   zfunc,numargs)idsc                    t         j                  j                  d      }t        t        |       } |j                  |      D cg c]<  }t        |      t         j                  t         j                  t         j                   f> }}t        j                  | D ]4  } | | }t        d |D              rt        |t         j                         56 y c c}w )Nl   7'}?J-0 c              3   F   K   | ]  }t        j                  |        y wr3   )r   rL   ).0r9   s     r   	<genexpr>z!test_nonfinite.<locals>.<genexpr>  s     )Dqrxx{Ds   !)r   randomdefault_rnggetattrr   floatrM   r   	itertoolsproductanyr   )funcnumargsrngr9   args_choicesrQ   rR   s          r   test_nonfiniter*    s     ))

 0
1C2tDADGATUATAU1Xrvvrvvw7ATLU!!<0Dk)D))bff%  1 Vs   ACc                  ~    t        j                  ddt        j                  d      dz         } g d}t	        | |       y )Ng!?rw   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   )rR   res_exps     r   test_chndtrix_gh2158r.    s4    
++h299S>$#6
7C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       y )N)\(\?皙#@b     )gffffffgRQ?gffffff@&   )~jtX?333333?r~      )@礎pFh?r8  gM/q?gea?g?gx$p?g0?gkeŧe?+1?r9  ga?gip#t?rU   rU   rU   g!Ȩm?r8  r8  g3v?r  g?g:-?gy0 ?gC?r9  r9  g@;?gN?rU   rU   rU   g   >r8  r8  g$?r  g\+aYҏ?g0ku+?g2{q?r  r9  r9  g@L7d?r  rU   rU   rU   rU   r8  r8  g?r  g׏?gڙ-?g_"?r  r9  r9  g fu?r  rU   rU   rU   rU   r   rU   r4   r5   )r#  r$  r   r  r   )dfarrpnoncarrtarrresarractarrr   rs   r   s           r   test_nctdtr_gh19896r@    sj     !E$H"D"F* F%%eXt<Aq299RA&'' = FFC8r   c                  p    g d} g d}g d}g d}t        j                  | ||      }t        ||dd       y )N)
MbP?r0  r1  r2  r3  i'  r2  r1  r0  rB  )
rB  r   r   皙?+?rB  r   r   rC  rD  )
r5  r6  r~   r7  ,  r5  r6  r~   r7  rE  )
K ˸@gtI?x9" @g.$Bt+@gO,oq@rF  gZc^?rG  g@gjgdy=rU   r:  )r   r  r   )r;  parrr=  desiredactuals        r   test_nctdtrinc_gh19896rK    s=     EEEDCD#G \\%t,FFG%c:r   c                     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 y )N      rU   r  )rU   g      ?r}   g      ?r  )r   allrL   r   r   r   r   r/   r   r   test_stdtr_stdtrit_neg_infrO    sp    66"((288RVVGrvvgtS#rvv-NOPQQQ66"((2::rvvg/JKLMMMr   c                  r   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 y )	Ng      $rM  rU   r   r}   gH.?r  g      $@)
r   arrayrM   r   
atleast_2drN  rL   r   r   r  )r   rs   s     r   test_bdtrik_nbdtrik_infrS    s    
	tS&"fc4P	RA	!D&	A
	"&&%sFBRVVD	FA66"((299Q2344466"((2::a34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>   ri   ru   r{   r   r   r   r   r
  slowr   funcsr  r*  r.  xfail_on_32bitr@  rK  rO  rS  r   s   0r   <module>r^     sX  &   7  , ,; ;%
 $
4 
4M4 M4`
D-
 vvxE xE  xEv 	F 54I5aQqT54IJ K$"" DE9 F9D;N6M  %8$F%V 5Js   D =DDD