
    >qjӈ                     L
   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 G d d      Z G d	 d
      Z G d d      Zd Zd Zd ZdKdZd ZdKdZ d Z!ejD                  jF                   eed       G d d                    Z$g dZ%ejD                  jM                  de%e%D  cg c]  } | d   	 c}       d        Z'd Z(d Z)d Z*d Z+ejD                  jM                  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jD                  jM                  d.g d/      d0        Z- G d1 d2      Z. G d3 d4      Z/ G d5 d6      Z0ejD                  jM                  d7d8d9g      d:        Z1 G d; d<      Z2ejD                  jM                  d=dddejf                  fddd>ejf                  fdejh                  dejf                  fdejh                  d>ejf                  fejh                  ddejf                  fejh                  dd>ejf                  fejh                  ejh                  dejf                  fejh                  ejh                  d>ejf                  fg      d?        Z5ejD                  jM                  d@dddejf                  fddejh                  ejf                  fdd>dejf                  fdd>ejh                  dfejh                  ddejf                  fejh                  dejh                  ejf                  fejh                  d>dejf                  fejh                  d>ejh                  ejf                  fg      dA        Z6ejD                  jM                  dBg dC      dD        Z7ejD                  jM                  dEdd8dejf                  fd8ejh                  d>ejh                  fd8d>ejh                  ejh                  fd8d>ejh                   ejh                   fd8ejh                  ejh                  ejh                  fd8d8ejh                  ejh                  fd8d>ejh                   ejh                   fdFdGd>ejf                  fg      dH        Z8ejD                  jM                  dIdddejf                  fdd>dejf                  fdd>ejh                  ejf                  fd8d>d>ejf                  fd8d8ejh                  ejh                   fd8d8ejh                   ejh                  fg      dJ        Z9y# e$ r  ed      ZY w xY wc c} w )Lz
Test cdflib functions versus mpmath, if available.

The following functions still need tests:

- ncfdtridfn
- ncfdtridfd
- ncfdtrinc
- nctdtridf
- nctdtrinc

    N)assert_equalassert_allcloseassert_array_equal)MissingModulecheck_versionFuncData)ArgIntArgget_args	mpf2floatassert_mpmath_equalmpmathc                       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    ^/opt/rentech/trading_bot/.venv/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   r5   r6   s        r   r   zEndpointFilter.__init__2   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   r5   r6   r   where)r   xmask1mask2s       r   __call__zEndpointFilter.__call__8   s    q466z"TYYrvvdff~%=		%IIq466z"TYYrvvdff~%=		%IIxxud33r   N)r,   r-   r.   r   r=   r0   r   r   r2   r2   1   s    4r   r2   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 r4   )spfuncmpfuncindexargspecspfunc_firstdpsr%   r5   r6   
isinstancelist
endpt_rtol
endpt_atollen)r   rA   rB   rC   rD   rE   rF   r%   r5   r6   rI   rJ   s               r   r   z_CDFData.__init__?   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r4   )rE   rA   r   isnannanrH   rC   r   workdpsrF   rB   tupler   real)r   argsress      r   idmapz_CDFData.idmap\   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        )rI   rJ   ziprD   appendr2   r   r   )r   filtersr5   r6   specs        r   get_param_filterz_CDFData.get_param_filterp   s    ??"t'> #DOOT__dll S 		GD$|t$NN>$&&$&&$EF		G 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_columnsr5   r6   
vectorizedparam_filter)r   rD   r%   r[   rP   rangeshaper   hstackrC   reshaper   rT   r5   r6   check)r   rR   r`   r]   r^   s        r   re   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   rT   r[   re   r0   r   r   r?   r?   >   s    DH15-1#:("
4r   r?   c                  :    t        | i |}|j                          y r4   )r?   re   )r   kwds      r   _assert_invertsrj      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_cdfrv      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      Trm   )r   rp   rr   )dfndfdr:   ubrS   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         ?rx   )	r   mprF   rO   rp   hyp2f1gammasqrtpi)dftrF   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 )Nrx   r      r~   )r   besselir   exp)r   r   ncrS   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 r4   )r   )r   r   r   s    r   <lambda>z%_noncentral_chi_cdf.<locals>.<lambda>   s    $72r$B r   r   )r   r   rF   rp   rO   quad)r:   r   r   rF   rS   s    ``  r   _noncentral_chi_cdfr      su    
{iimm

1vzz"~vzz"~IAr2		 kkBQFK  s   4BB%c                 $    | |z  d| z
  |z  z
  |z  S Nr   r0   )rt   lmbdas     r   _tukey_lmbda_quantiler      s    uHA~%u,,r   z0.19c                      e Z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                  j3                  dg d      d        Zy)
TestCDFlibc           	          t        t        j                  t        dt	        dd      t               t               gdg d       y )Nr     -q=)NNư>r5   rJ   )rj   spbdtrinrv   r
   r   r   s    r   test_bdtrinzTestCDFlib.test_bdtrin   s0    IIq$GI6#5		7r   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 NTrm   r   rr   r   r   r:   s      r   r   z)TestCDFlib.test_btdtria.<locals>.<lambda>       FNN1aA4H r   r        r@Finclusive_ar   r   inclusive_br   r5   )rj   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         Y@Fr   r   Hz>)NgC]r2<V瞯<r   )rj   r   btdtribr	   r   r   s    r   test_btdtribzTestCDFlib.test_btdtrib   s@    JJHCU+WYA5e<>+	-r   F)runc                     t        t        j                  t        dt	        dd      t               t        ddd      gd       y )Nr   d   r   Fr   r   r   )rj   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   ro   r   gammaincr   s      r   r   z(TestCDFlib.test_gdtria.<locals>.<lambda>       FOOA1$G r   r        @@Fr   g     @r   Nr   绽|=r   )rj   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   )rj   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   rx   r   r   Fr   r   r   r   )rj   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 r4   r   ncdfr:   yzs      r   r   z*TestCDFlib.test_nrdtrimn.<locals>.<lambda>      FKK1a0 r   r   皙?Fr   g    _g    _Br   r   )rj   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 r4   r   r   s      r   r   z*TestCDFlib.test_nrdtrisd.<locals>.<lambda>  r   r   r   
   Fr   }Ô%ITr   r   )rj   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_stdtr%  s/    HHAs^S/0t	=r   c                 l    t        t        j                  t        dt	               t               gd       y )Nr   r   r   )rj   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   )rj   r   stdtritr   r
   r   r   s    r   test_stdtritzTestCDFlib.test_stdtrit3  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 )Nrx   Tr   r   )r*   r:   s     r   r   z)TestCDFlib.test_chdtriv.<locals>.<lambda>=  s    1!F r   r   r   r   -C6?r   )rj   r   chdtrivr   r
   r   s    r   test_chdtrivzTestCDFlib.test_chdtriv:  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%   r5   r6   )rj   r   	chndtridfr   r	   r   r   s    r   test_chndtridfzTestCDFlib.test_chndtridfA  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 )Nrx   r   r   Fr   r   r   r   r   r   )rj   r   	chndtrincr   r	   r
   r   r   s    r   test_chndtrinczTestCDFlib.test_chndtrincK  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%   r5   r6   rJ   )rj   r   chndtrixr   r   r
   r	   r   s    r   test_chndtrixzTestCDFlib.test_chndtrixT  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r:   s    r   r   z4TestCDFlib.test_tklmbda_zero_shape.<locals>.<lambda>a  s    bjjA& r   c                 <    t        j                  |        z   z  S r4   )r   r   )r:   ones    r   r   z4TestCDFlib.test_tklmbda_zero_shape.<locals>.<lambda>b  s    c6::qb>C/0 r   r   r   )r   rp   r   r	   )r   r  s    @r   test_tklmbda_zero_shapez"TestCDFlib.test_tklmbda_zero_shape]  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   &.>)rE   r5   rJ   rj   r   r   r   r   r	   r   s    r   test_tklmbda_neg_shapez!TestCDFlib.test_tklmbda_neg_shapee  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   )rE   r5   r  r   s    r   test_tklmbda_pos_shapez!TestCDFlib.test_tklmbda_pos_shapem  s.    JJ!	3q#59:T		+r   r   )r~         ?       @c                 X    d|z  }t        t        j                  | |g|      ddg       y )Nr   rV   r	  )r   r   r   )r   r   bounds      r   test_tklmbda_lmbda1zTestCDFlib.test_tklmbda_lmbda1v  s*    %RZZ%7#sDr   N)r,   r-   r.   r   r   r   pytestmarkxfailr   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  parametrizer  r0   r   r   r   r      s-   7	- [[5! ",, = [[5!. ".&7 [[5!+ "+ [[5!+ "++ % [[5!+ "+ [[Wo6E 7Er   r   ))r   r   )r   r   )bdtrikr   )r   r   )r   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,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r4   r   rM   ).0r:   s     r   	<genexpr>z!test_nonfinite.<locals>.<genexpr>  s     )qrxx{)s   !)r   randomdefault_rnggetattrr   floatrN   r   	itertoolsproductanyr   )funcnumargsrngr:   args_choicesrR   rS   s          r   test_nonfiniter1    s     ))

 0
1C2tDADGATUAU1Xrvvrvvw7ULU!!<0 	Dk)D))bff% 	 Vs   ACc                  ~    t        j                  ddt        j                  d      dz         } g d}t	        | |       y )Ng!?rx         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   )rS   res_exps     r   test_chndtrix_gh2158r6    s4    
++h299S>$#6
7C5G C!r   c                  p    g d} g d}g d}g d}t        j                  | ||      }t        ||dd       y )N)
MbP?\(\?皙#@b     i'  r;  r:  r9  r8  )
r8  r   r   皙?+?r8  r   r   r=  r>  )
~jtX?333333?r      ,  r?  r@  r   rA  rB  )
K ˸@gtI?x9" @g.$Bt+@gO,oq@rC  gZc^?rD  g@gjdy=rV   r5   r6   )r   r  r   )dfarrparrtarrdesiredactuals        r   test_nctdtrinc_gh19896rL    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      rV   r	  )rV         ?r~   g      ?r	  )r   allrM   r   r   r   r   r0   r   r   test_stdtr_stdtrit_neg_infrQ    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      $rN  rV   r   r~   gH.?r	        $@)
r   arrayrN   r   
atleast_2drP  rM   r   r  r  )r   rt   s     r   test_bdtrik_nbdtrik_infrV    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   zdfn,dfd,nc,f,expected_cdf)r   r   r   r   g,]?)r   r   {Gz?r   gsCr:)r   rW  r   rW  gnhUg?)rS  rW  r	  r   g%g{E?)r   r   rW  rW  g 	
1)r	  r   r   r   gڞ^)k;)r	  rW  r   rS  glB?)r	  rW  rS  rW  g)Dt^\,?)rS  r	  r   r   g|?)r   r   r	  r	  g?)r   r   r   rS  r	  )r	  r   r   rS  g*}?)g0.++r   r   r   g0J?c                     t        t        j                  | |||      |dd       d|cxk  rdk  r(n y t        t        j                  | |||      |d       y y )NvIh%<=r   rF  r   g|=r   )r   r   r  r  )ry   rz   r   fexpected_cdfs        r   test_ncfdtr_ncfdtrir\    sQ    x BIIc3A.5qQ 	<!

3R>N r   rR   ))rN  r   r   r~   )r   rN  r   r~   )r   r   rN  r~   )r   r   r   r   )r   r   r   c                     t        j                  d      5  t        j                  t         j                  d      5  t        j
                  |   d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wNraise)domainra  )match)r   errstater  raisesSpecialFunctionErrorr  )rR   s    r   test_ncfdtri_domain_errorrf  $  s_     
G	$ ]]222(C 	JJ	 	 	 "   &A-A!A-!A*	&A--A6c                   F   e Zd Zej                  j                  dg d      d        Zd Zd Zej                  j                  dg dg dg d	g d
dde	j                  ddgdde	j                   ddgg      d        Zej                  j                  dg d      d        Zy)TestNoncentralTFunctionszdf, nc, x, expected_cdf)?)r9  ffffffr?  gD i?)r9  rj  r@  g?)r9  rj  r   g7?r9  rj  rA  gU?)r9  RQ?r?  g?)r9  rl  r@  gx$p?)r9  rl  r   g7?)r9  rl  rA  g]ŧe?)r9  ffffff@r?  g樼?)r9  rm  r@  g:GF ?)r9  rm  r   gpa?)r9  rm  rA  gfO!t?)r9  &   r?  g    )r9  rn  r@  gQb] r9  rn  r   gy+)r9  rn  rA  guQRm?)r:  rj  r?  g/C*i?)r:  rj  r@  g.b?)r:  rj  r   gI'v?)r:  rj  rA  g?)r:  rl  r?  g?)r:  rl  r@  gD-?)r:  rl  r   gy0 ?)r:  rl  rA  gC?)r:  rm  r?  g?)r:  rm  r@  g:e!?)r:  rm  r   gh?)r:  rm  rA  g?)r:  rn  r?  g+    )r:  rn  r@  gPDp   )r:  rn  r   gMr:  rn  rA  ggS>^X#>)r;  rj  r?  gNG0i?)r;  rj  r@  g%Wح?)r;  rj  r   g?)r;  rj  rA  r	  )r;  rl  r?  g aYҏ?)r;  rl  r@  gpku+?)r;  rl  r   gZVq?)r;  rl  rA  r	  )r;  rm  r?  g_a?)r;  rm  r@  g+,!?)r;  rm  r   gqgb?)r;  rm  rA  g?)r;  rn  r?  gQ    )r;  rn  r@  g%Q   )r;  rn  r   gTh-1)r;  rn  rA  g¤5)r<  rj  r?  geK0i?)r<  rj  r@  g?)r<  rj  r   gjS?)r<  rj  rA  r	  )r<  rl  r?  g|S׏?)r<  rl  r@  gfG-?)r<  rl  r   g^"?)r<  rl  rA  r	  )r<  rm  r?  gm?)r<  rm  r@  g|q]/!?)r<  rm  r   g+%αs?)r<  rm  rA  r	  )r<  rn  r?  gn    )r<  rn  r@  gm   )r<  rn  rA  g>H*c                 P    t        j                  |||      }t        ||dd       y )NrY  grF  )r   r  r   )r   r   r   r:   r[  nctdtr_results         r   test_gh19896z%TestNoncentralTFunctions.test_gh19896Y  s%    L 		"b!,|%fMr   c                 J    t        t        j                  ddd      dd       y )Nr<  rn  r   gDd:0yE>r   r   r   r  r   s    r   test_gh19896_loose_tolerancez5TestNoncentralTFunctions.test_gh19896_loose_tolerance  s    		#r3/1HtTr   c                 Z    d\  }}}d}t        t        j                  |||      |d       y )N)r   r   r   -^?+=r   rv  )r   r   r   r:   expecteds        r   test_nctdtr_gh8344z+TestNoncentralTFunctions.test_nctdtr_gh8344  s+     	B(		"b!,hUCr   zdf, nc, x, expected, rtol)      @g      @g       gG>g:0yU>)r   rS  r	  g'$ <rY  )r   g             @gjx?rY  )rS  r3  r@  ge*mt-rY  r	  rV   c                 J    t        t        j                  |||      ||       y )Nr   rv  )r   r   r   r:   r{  r5   s         r   test_nctdtr_accuracyz-TestNoncentralTFunctions.test_nctdtr_accuracy  s     			"b!,hTBr   )ro  )r   r   r   ry  rk  rp  c                 J    t        t        j                  |||      |d       y )Nr   r   )r   r   r  )r   r   r   r:   r[  s        r   test_nctdtritz&TestNoncentralTFunctions.test_nctdtrit  s     	BL915Ir   N)r,   r-   r.   r  r  r  rs  rw  r|  r   r   r  r  r0   r   r   ri  ri  1  s    P [[6 @9 @BNC@BNUD [[#	4	8	3	7
b"&&#s	#
b266'3	$	
	C	C [[6 9 JJr   ri  c                      e Zd Zej                  j                  dej                  ej                  g      ej                  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                  j                  dg d      d        Zej                  j                  dg d      d        Zej                  j                  d	g d
      d        Zy)TestNegativeBinomialFunctionsfunctionrR   r   c                 8    t        j                   ||       sJ y r4   r#  )r   r  rR   s      r   test_nan_propagationz2TestNegativeBinomialFunctions.test_nan_propagation  s     xx$(((r   )	r]  r   r   r   r]  r   r   r   r]  r]  r]  r   r]  r   r]  r   r]  r]  r]  r]  r]  )r   皙??r   r  r  c                     t        j                  d      5  t        j                  t         j                  d      5  t        j
                  |  d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wr_  )r   rc  r  rd  re  r  r   rR   s     r   test_domain_error_nbdtrinz7TestNegativeBinomialFunctions.test_domain_error_nbdtrin  _     [[( 	"r66hG "

D!"	" 	"" "	" 	"rg  )r  r  r  r  r  r  r  r  c                     t        j                  d      5  t        j                  t         j                  d      5  t        j
                  |  d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wr_  )r   rc  r  rd  re  r  r  s     r   test_domain_error_nbdtrikz7TestNegativeBinomialFunctions.test_domain_error_nbdtrik  r  rg  zk, y, p, n, rtol))   g    ?rO  r   V瞯<)r   gq51r@  r   r   )r   gC8{7?r@  r   rz  )rx   g΋gל0r8     g+<)rx   gj?r>  rA  r   )  g_?r   rA  ru  )r   g|=r   r   r  c                     t        t        j                  |||      ||       t        t        j                  |||      ||       y r4   )r   r   r  r  )r   rs   r   rt   r%   r5   s         r   test_inversesz+TestNegativeBinomialFunctions.test_inverses  s6    " 	

1a+Q5

1a+Q5r   N)r,   r-   r.   r  r  r  r   r  r  r   rN   r  r  r  r  r0   r   r   r  r    s?   [[Z"**bjj)AB[[V
&&!Q!RVVQ!Q
&&"&&!	rvvq"&&1Arvvrvv3F
&&"&&"&&	!	#
) C) [[V	'
"
"
 [[V	
"
"
 [[/	67
67
6r   r  c                      e Zd Zd Zej
                  j                  dg d      d        Zej
                  j                  ddddej                  fej                  dfg      d	        Z
ej
                  j                  d
ej                  ej                  ej                  ej                  g      ej
                  j                  dg d      d               Zej
                  j                  d
ej                  ej                  ej                  ej                  g      ej
                  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
                  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y)!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       y )N)      9@r3    gL94)r  r
     g7Fh9)r8  r
        D@ggåc;)rW  r
  r  g	;)r3  r~  k   g8x@x>)g     6@r~  r  gg1\>>)r  r~  r  g`>)r}  r~  r	  gp!P?)g     u@r   rS  g j
?)r         +@rS  g]?)g     @r3  r  g4ۙ?)g     b@r  rS  g?)g      d@r  rS  r	  r   r   rx   r   rY  r   ru  )r   rT  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  sX    999:999666666
  iiq!tfQTlF1a4LAVAqD\6 KKq!tfQTlF1a4LA#2ssAvT:\\&A,q!tfQTlC3BQd;\\&A,q!tfQTlC3BQd;r   z+x, df, nc, expected_cdf, rtol_cdf, rtol_inv))r      2   g
8DLrY  rY  )r   rf   r  g"rY  rY  )r   r  r  ggI˘rY  rY  )g     @g     j@r   grd\\"rE  rE  )   r   r   gk?-a=r  )r  rB  r   g;?rY  r   )ix  r  r   g.?rY  r  )r  r  r  g#%?rY  dy=c                    t        j                  |||      }t        |||       t        t        j                  |||      ||       t        t        j                  |||      ||       t        t        j
                  |||      ||       t        t        j                  |||      ||       t        t        j                  |||      |d       t        t        j
                  |||      |d       y )Nr   r   r   )r   r  r   r   r   r   )r   r:   r   r   r[  rtol_cdfrtol_invchndtr_results           r   
test_tailsz,TestNoncentralChiSquaredFunctions.test_tails.  s     		!R,|(CL"b918LQb92HMQL92HM 	M2r:AHMQr:BTJQM:BTJr   zx, df)r   r   )r   r   r   c                 r    t        t        j                  ||d      t        j                  ||      d       y )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_chdtrE  s'     			!R+RXXb!_5Ir   funrR   )r  r  r  r  r  r  r  c                     t        j                  d      5  t        j                  t         j                  d      5   ||  d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wr_  )r   rc  r  rd  re  )r   rR   r  s      r   test_domain_errorz3TestNoncentralChiSquaredFunctions.test_domain_errorK  sZ     [[( 	r66hG T
	 	 	 	s"   &A AA A	A  A)c                 8    t        j                   ||       sJ y r4   r#  )r   r  rR   s      r   r  z6TestNoncentralChiSquaredFunctions.test_nan_propagationW  s     xxT
###r   zx, df, nc, expectedr   c                 J    t        t        j                  |||      |d       y Nr   r   )r   r   r  )r   r:   r   r   r{  s        r   test_chndtr_edge_casesz8TestNoncentralChiSquaredFunctions.test_chndtr_edge_casesb  s     			!R,hUCr   N)r,   r-   r.   r  r  r  r  r  r   r   r  r   r  r   r   r   r  rN   r  r  r0   r   r   r  r    s   <h [[5	;

K

K [[W	!RVVrvvqk2JJ [[U	BKKr||< [[V	1	
 [[U	BKKr||< [[V
&&!Q!RVVQ!Q
&&"&&!	rvvq"&&1Arvvrvv3F
&&"&&"&&	!	#
$$ [[
Q266	
Q	
RVVQ	
RVVRVVQ	
Q	
&&!Q	
&&!RVVRVV	$
&&!Q	
&&"&&"&&"&&	)	+DDr   r  r:   r   r   c                 :    t        j                  d|       dk(  sJ y )Nr   r   )r   r   r   s    r   !test_chdtriv_p_equals_1_returns_0r  r  s    ::aq   r   c                       e Zd Zej                  j                  dddg      d        Zej                  j                  dd      d        Zd Zd	 Z	ej                  j                  d
g d      d        Z
y)
TestPdtrikzp, m, expected)r   r~   r   )r~   r   r   c                 :    t        j                  ||      |k(  sJ y r4   )r   r  )r   rt   r&   r{  s       r   test_edge_caseszTestPdtrik.test_edge_casesx  s     yyA(***r   r&   )r   r   r   c                 Z    t        j                  t        j                  d|            sJ y r   )r   rM   r   r  )r   r&   s     r   test_p_equals_1_returns_nanz&TestPdtrik.test_p_equals_1_returns_nan~  s    xx		!Q(((r   c                 ~    t        j                  dgdgdggg d      }t        |t        j                  d             y )Nr   rO  gffffff?)r   g#B;r   )r   r   )r   r  r   r   zeros)r   rs   s     r   test_small_probabilitiesz#TestPdtrik.test_small_probabilities  s3    IIsTFTF+-=>1bhhv./r   c                     g d}d}t        j                  ||      }t        t        j                  ||      |d       y )N)r   r  r  r  r   r   )r   pdtrr   r  )r   r&   rs   rt   s       r   test_roundtrip_against_pdtrz&TestPdtrik.test_roundtrip_against_pdtr  s1    GGAqM		!Q7r   zp, m, k))gG:Ї7r   rx   )g;(&?r   c   )gkͧ1r   r  )g-i i_ c                 H    t        t        j                  ||      |d       y r  )r   r   r  )r   rt   r&   rs   s       r   test_accuracyzTestPdtrik.test_accuracy  s     			!Q7r   N)r,   r-   r.   r  r  r  r  r  r  r  r  r0   r   r   r  r  w  s    [[-))+,+,+ [[S,/) 0)0
8 [[YIJ
8J
8r   r  za, b, p, refr   c                 F    t        t        j                  | ||      |       y r4   )r   r   r   )r   r   rt   refs       r   test_gdtrix_edge_casesr         1a#S)r   zp, b, x, refc                 F    t        t        j                  | ||      |       y r4   )r   r   r   )rt   r   r:   r  s       r   test_gdtria_edge_casesr    r  r   z
y, n, p, k))ga/r   r  r   )gUr   r  r  )gcR?r   r~   iD  )gW"K?r   r  r  c                 J    t        t        j                  | ||      |d       y )Nr  r   )r   r   r  )r   r%   rt   rs   s       r   test_bdtrikr    s     BIIaA&6r   zp, std, x, refr   r]  c                 F    t        t        j                  | ||      |       y r4   )r   r   r   )rt   stdr:   r  s       r   test_nrdtrimn_edge_casesr    s     QQ'-r   zmn, p, x, refc                 F    t        t        j                  | ||      |       y r4   )r   r   r   )mnrt   r:   r  s       r   test_nrdtrisd_edge_casesr    s     RA&,r   r4   ):r/   r*  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?   rj   rv   r|   r   r   r   r   r  slowr   funcsr  r1  r6  rL  rQ  rV  r\  rf  ri  r  r  r  r  rN   r   r  r  r  r  r  r   s   0r   <module>r     s1     K K  , ,; ;%
 $
4 
4M4 M4`
D-
 vvqE qE  qEh 	F 54IaQqT4IJ K$"$;N6 263175310-#1/"/O#"/Ob 

PJ PJf16 16hwD wDt sCj)! *!8 8@ 1bff1bff266266VVQ266VVQ266VVRVVQVVRVVQ	* 	*	* 1bff2662661bff2661VVQ266VVQVVQ266VVQ	* 	*	*  ( 77 )Q"&&!RVV!RVVRVV!bffWrvvg"&&"&&"&&!#rvvrvv!bffWrvvg"a	, 	.	. 1bff1bff266266!Q#rvvw#w+ --q  %8$F%H 5Js   T ?T!TT