
    ^Mh[                        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d0dZd Zd0dZd Z ej!        j"         eed           G d d                                  Z#g dZ$ej!        %                    de$d e$D                       d             Z&d Z'd Z(d Z)d Z*ej!        %                    d g d!g d"g d#g d$g d%g d&g d'g d(g d)g d*g d+g d,g          d-             Z+ G d. d/          Z,dS )1z
Test cdflib functions versus mpmath, if available.

The following functions still need tests:

- ncfdtri
- ncfdtridfn
- ncfdtridfd
- ncfdtrinc
- nbdtrik
- nbdtrin
- pdtrik
- 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/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/special/tests/test_cdflib.py__init__zProbArg.__init__'   s        c                 f   t          d|dz            }t          j        dt          j        d          |          }t          j        dd|dz   d          dd         }dt          j        t          j        d          d	|          z
  }t          j        |||f         }t          j        |          S )
z3Return an array containing approximately n numbers.r      i333333?gffffff?F)endpointNi)maxnplogspacelog10linspacer_unique)r   nmv1v2v3vs          r   valueszProbArg.values,   s    1a4LL[bhsmmQ//[c1q55999!""=RXc]]C333E"b"*y||r   N)__name__
__module____qualname____doc__r   r*    r   r   r   r   $   s8        44  
    r   r   c                       e Zd Zd Zd ZdS )EndpointFilterc                 >    || _         || _        || _        || _        d S N)r   r   rtolatol)r   r   r   r4   r5   s        r   r   zEndpointFilter.__init__7   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   6   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__D   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.idmapa   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_filteru   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>   C   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_stdtr2  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_stdtridf9  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_stdtrit@  sJ    Jq#		*e}		& 	& 	& 	& 	& 	&r   c           
      |    t          t          j        d dt                      t	          dd          gd           d S )Nc                 <    t          j        | dz  |dz  d          S )Nrx   Tr   r   )r)   r9   s     r   r   z)TestCDFlib.test_chdtriv.<locals>.<lambda>J  s    1!FFF r   r   r   r   r   r   )rj   r   chdtrivr   r	   r   s    r   test_chdtrivzTestCDFlib.test_chdtrivG  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_chndtridfM  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_chndtrincW  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_chndtrix`  sb    K		6!S>>3q#5+I+I+IJE)))	+ 	+ 	+ 	+ 	+ 	+r   c                 x    t          j        d          t          d fdt                      gd           d S )Nr   c                 ,    t          j        | d          S )Nr   )r   tklmbda)r9   s    r   r   z4TestCDFlib.test_tklmbda_zero_shape.<locals>.<lambda>m  s    bjA&& r   c                 :    t          j        |            z   z  S r3   )r   r   )r9   ones    r   r   z4TestCDFlib.test_tklmbda_zero_shape.<locals>.<lambda>n  s    c6:qb>>C/0 r   r   r   )r   rp   r   r   )r   r   s    @r   test_tklmbda_zero_shapez"TestCDFlib.test_tklmbda_zero_shapei  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_shapeq  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_shapey  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         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_gh2158r3    sK    
+h29S>>$#6
7
7C5 5 5G C!!!!!r   c                  x    g d} g d}g d}g d}t          j        | ||          }t          ||dd           d S )N)
MbP?\(\?皙#@b     i'  r8  r7  r6  r5  )
r5  r   r   皙?+?r5  r   r   r:  r;  )
~jtX?333333?r      ,  r<  r=  r   r>  r?  )
K ˸@gtI?x9" @g.$Bt+@gO,oq@r@  gZc^?rA  g@gjgdy=rW   r4   r5   )r   r  r   )dfarrparrtarrdesiredactuals        r   test_nctdtrinc_gh19896rH    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_infrL    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      $rJ  rW   r   r~   gH.?r        $@)
r   arrayrO   r   
atleast_2drK  rN   r   r   r  )r   rt   s     r   test_bdtrik_nbdtrik_infrQ    s    
	tS&"fc4P	R 	RA	!!!D&	A
	"&%sFBRVD	F 	FA6"(29Q2233444446"(2:a33445555555r   zdfn,dfd,nc,f,expected)r   r   r   r   g,]?)r   r   {Gz?r   gsCr:)r   rR  r   rR  gnhUg?)rN  rR  r  r   g%g{E?)r   r   rR  rR  g 	
1)r  r   r   r   gڞ^)k;)r  rR  r   rN  glB?)r  rR  rN  rR  g)Dt^\,?)rN  r  r   r   g|?)r   r   r  r  g?)r   r   r   rN  r  )r  r   r   rN  g*}?c                 V    t          t          j        | |||          |dd           d S )NvIh%<=r   rB  )r   r   r  )ry   rz   r   fexpecteds        r   test_ncfdtrrW    s2    t BIc3A..u1MMMMMMr   c                   B   e Zd Zej                            dg dddddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d? ej        d@dAdBdCej                            dDE          F          dG          dH             ZdI Z	ej                            dJg dKg dLg dMg dNdOdOe
j        dOdPgdOdOe
j         dPdPgg          dQ             ZdRS )S
TestNctdtrzdf, nc, x, expected)r6  ffffffr<  gD i?)r6  rZ  r=  g?)r6  rZ  r   g7?)r6  rZ  r>  gU?)r6  RQ?r<  g?)r6  r[  r=  gx$p?)r6  r[  r   g7?)r6  r[  r>  g]ŧe?)r6  ffffff@r<  g樼?)r6  r\  r=  g:GF ?)r6  r\  r   gpa?)r6  r\  r>  gfO!t?)r6  &   r<  g    )r6  r]  r=  gQb] )r6  r]  r   gy+)r6  r]  r>  guQRm?)r7  rZ  r<  g/C*i?)r7  rZ  r=  g.b?)r7  rZ  r   gI'v?)r7  rZ  r>  g?)r7  r[  r<  g?)r7  r[  r=  gD-?)r7  r[  r   gy0 ?)r7  r[  r>  gC?)r7  r\  r<  g?)r7  r\  r=  g:e!?)r7  r\  r   gh?)r7  r\  r>  g?)r7  r]  r<  g+    )r7  r]  r=  gPDp   )r7  r]  r   gM)r7  r]  r>  ggS>^X#>)r8  rZ  r<  gNG0i?)r8  rZ  r=  g%Wح?)r8  rZ  r   g?)r8  rZ  r>  r  )r8  r[  r<  g aYҏ?)r8  r[  r=  gpku+?)r8  r[  r   gZVq?)r8  r[  r>  r  )r8  r\  r<  g_a?)r8  r\  r=  g+,!?)r8  r\  r   gqgb?)r8  r\  r>  g?)r8  r]  r<  gQ    )r8  r]  r=  g%Q   )r8  r]  r   gTh-1)r8  r]  r>  g¤5)r9  rZ  r<  geK0i?)r9  rZ  r=  g?)r9  rZ  r   gjS?)r9  rZ  r>  r  )r9  r[  r<  g|S׏?)r9  r[  r=  gfG-?)r9  r[  r   g^"?)r9  r[  r>  r  )r9  r\  r<  gm?)r9  r\  r=  g|q]/!?)r9  r\  r   g+%αs?)r9  r\  r>  r  )r9  r]  r<  gn    )r9  r]  r=  gm   r9  r]  r   gDdz+Bug in underlying Boost math implementation)reason)marks)r9  r]  r>  g>H*c                 X    t          j        |||          }t          ||dd           d S )NrT  grB  )r   r  r   )r   r   r   r9   rV  results         r   test_gh19896zTestNctdtr.test_gh19896S  s5    R 2r1%%u6BBBBBBr   c                 b    d\  }}}d}t          t          j        |||          |d           d S )N)i  r   r   g-^?g+=r   r   r   r  )r   r   r   r9   rV  s        r   test_nctdtr_gh8344zTestNctdtr.test_nctdtr_gh8344  s;     	B(	"b!,,hUCCCCCCr   zdf, nc, x, expected, rtol)g      @g      @g       gG>g:0y5>)r   rN  r  g'$ <rT  )r   g      g       @gjx?rT  )rN  r0  r=  ge*mt-rT  r  rW   c                 R    t          t          j        |||          ||           d S )Nr   rd  )r   r   r   r9   rV  r4   s         r   test_accuracyzTestNctdtr.test_accuracy  s-     		"b!,,hTBBBBBBr   N)r+   r,   r-   r	  r
  r  paramr  rb  re  r   r   rg  r/   r   r   rY  rY  +  s)       P [2 C50C5.C5 	.C5 	-	C5
 	/C5 	0C5 	-C5 	-C5 	2C5 	2C5 	/C5 	,C5 	,C5 	1C5 	/C5  	-!C5" 	0#C5$ 	.%C5& 	-'C5( 	,)C5* 	0+C5, 	/-C5. 	-/C50 	,1C52 	23C54 	15C56 	.7C58 	*9C5: 	+;C5< 	,=C5> 	0?C5@ 	-AC5B 	/CC5D 	-EC5F 	,GC5H 	IC5J 	0KC5L 	.MC5N 	,OC5P 	QC5R 	1SC5T 	/UC5V 	-WC5X 	*YC5Z 	*[C5\ 	*]C5^ 	/_C5` 	-aC5b 	0cC5d 	.eC5f 	-gC5h 	iC5j 	0kC5l 	.mC5n 	-oC5p 	qC5r 	2sC5t 	1uC5v 	.wC5x 	yC5z 	*{C5| 	+}C5~ 	S"c#:!;,,L - N N	O 	O 	OC5D 	.EC5 C CHC CIC CHCD D D [#	4	4	4	8	8	8	3	3	3	7	7	7
b"&#s	#
b26'3	$	
	 	C C	 	C C Cr   rY  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.  r3  rH  rL  rQ  rW  rY  r/   r   r   <module>rr     s   "         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$" " "$; ; ;N N N6 6 6 222666333111777555333111000---###1113 +N +N +N\EC EC EC EC EC EC EC EC EC ECs   ; AA