a
    BCCf!D                     @   sz  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 zddlZW n ey   edZY n0 G dd dZG d	d
 d
ZG dd dZdd Zdd Zdd Zd0ddZdd Zd1ddZdd Z ej!j"eedG dd dZ#g dZ$ej!j%de$d d! e$D d"d#d$ Z&d%d& Z'ej!(d'd(d) Z)d*d+ Z*d,d- Z+d.d/ Z,dS )2z
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                   @   s    e Zd ZdZdd Zdd ZdS )ProbArgz*Generate a set of probabilities on [0, 1].c                 C   s   d| _ d| _d S )Nr      )abself r   [/var/www/html/django/DPS/env/lib/python3.9/site-packages/scipy/special/tests/test_cdflib.py__init__)   s    zProbArg.__init__c                 C   sr   t d|d }tdtd|}tjdd|d dddd }dttdd	| }tj|||f }t|S )
z3Return an array containing approximately n numbers.r      i333333?gffffff?F)ZendpointNi)maxnpZlogspacelog10ZlinspaceZr_unique)r   nmv1v2Zv3vr   r   r   values.   s    zProbArg.valuesN)__name__
__module____qualname____doc__r   r!   r   r   r   r   r   &   s   r   c                   @   s   e Zd Zdd Zdd ZdS )EndpointFilterc                 C   s   || _ || _|| _|| _d S N)r   r   rtolatol)r   r   r   r(   r)   r   r   r   r   9   s    zEndpointFilter.__init__c                 C   sb   t || j | jt | j | j k }t || j | jt | j | j k }t ||B ddS )NFT)r   absr   r(   r)   r   where)r   xZmask1Zmask2r   r   r   __call__?   s    ((zEndpointFilter.__call__N)r"   r#   r$   r   r-   r   r   r   r   r&   8   s   r&   c                   @   s.   e Zd ZdddZdd Zd	d
 Zdd ZdS )_CDFDataT     Nc                 C   s   || _ || _|| _|| _|| _|| _|| _|| _|	| _t	|t
sNd | _d | _nf|
d us^|d urt	|
t
rp|
| _n|
gt| j | _t	|t
r|| _q|gt| j | _nd | _d | _d S r'   )spfuncmpfuncindexargspecspfunc_firstdpsr   r(   r)   
isinstancelist
endpt_rtol
endpt_atollen)r   r1   r2   r3   r4   r5   r6   r   r(   r)   r9   r:   r   r   r   r   F   s*    


z_CDFData.__init__c                 G   s   | j rx| j| }t|r tjS t|}||| j< t| j	( | j
t| }t|j}W d    q1 sl0    Y  n`t| j	$ | j
| }t|j}W d    n1 s0    Y  t|}||| j< | jt| }|S r'   )r5   r1   r   isnannanr8   r3   r   workdpsr6   r2   tupler
   real)r   argsresr   r   r   idmapc   s     


*
(
z_CDFData.idmapc                 C   s   | j d u r| jd u rd S g }t| j | j| jD ]Z\}}}|d u rV|d u rV|d  q.n|d u rdd}n|d u rpd}|t|j|j|| q.|S )N        )r9   r:   zipr4   appendr&   r   r   )r   filtersr(   r)   specr   r   r   get_param_filterw   s    
z_CDFData.get_param_filterc              
   C   s   t | j| j}|  }tt|jd }|jd }t||d d | j	f 
|jd df}t| j|||| j| jd|d  d S )Nr   r   F)param_columnsresult_columnsr(   r)   Z
vectorizedparam_filter)r	   r4   r   rI   r?   rangeshaper   Zhstackr3   Zreshaper   rC   r(   r)   check)r   rA   rL   rJ   rK   r   r   r   rO      s    
*
z_CDFData.check)Tr/   r0   NNNN)r"   r#   r$   r   rC   rI   rO   r   r   r   r   r.   E   s      
r.   c                  O   s   t | i |}|  d S r'   )r.   rO   )r   kwdr   r   r   _assert_inverts   s    rR   c                 C   sp   t | t |t |  } }}| dkr4t dS | |krFt dS t jd|dd}t j||  | d |ddS )Nr   r   T)exactZx2regularized)r   mpfZfsubbetainc)kr   pZonempr   r   r   _binomial_cdf   s    "

rZ   c                 C   sf   |dk rt dS t | t |t |  } }}| | | | |  }t j| d |d |dd}|S )Nr      TrT   )r   rV   rW   )dfnZdfdr,   ZubrB   r   r   r   _f_cdf   s    
"r]   c                 C   s   |d u rt jj}t | t | t | } }t dd| d  d|d  |  }||t d| d   9 }|t t j|  t d|    }d| W  d    S 1 s0    Y  d S )N      ?r         ?r[   )	r   mpr6   r>   rV   Zhyp2f1gammasqrtpi)dftr6   Zfacr   r   r   _student_t_cdf   s    ""rf   c                 C   sR   t |d d t ||  }|t | |  d | | |d d   d 9 }|S )Nr[   r      r^   )r   Zbesselirb   exp)re   rd   ncrB   r   r   r   _noncentral_chi_pdf   s    0rj   c                    s~   |d u rt jj}t | t  t   }  t |. t  fddd| g}|W  d    S 1 sp0    Y  d S )Nc                    s   t |  S r'   )rj   )re   rd   ri   r   r   <lambda>       z%_noncentral_chi_cdf.<locals>.<lambda>r   )r   r`   r6   rV   r>   quad)r,   rd   ri   r6   rB   r   rk   r   _noncentral_chi_cdf   s    "ro   c                 C   s   | | d|  |  | S )Nr   r   )rY   lmbdar   r   r   _tukey_lmbda_quantile   s    rq   z0.19c                   @   s  e Zd Zejjdddd Zdd Zdd Zd	d
 Z	ejjdddd Z
dd Zdd Zdd Zdd Zdd Zdd Zejjdddd Zdd Zdd Zejjdddd  Zejjddd!d" Zd#d$ Zd%d& Zd'd( Zejjddd)d* Zejd+g d,d-d. Zd/S )0
TestCDFlibF)runc                 C   s(   t tjtdt tddt gdd d S )Nr   r     -C6?r(   )rR   spbdtrikrZ   r   r   r   r   r   r   test_bdtrik   s    zTestCDFlib.test_bdtrikc                 C   s.   t tjtdtddt t gdg dd d S )Nr   rt   ru   )NNư>r(   r:   )rR   rw   bdtrinrZ   r   r   r   r   r   r   test_bdtrin   s    zTestCDFlib.test_bdtrinc                 C   s:   t tjdd dt tddddtdddddgd	d
 d S )Nc                 S   s   t j| ||ddS NTrT   r   rW   r   r   r,   r   r   r   rl      rm   z)TestCDFlib.test_btdtria.<locals>.<lambda>r         Y@Finclusive_ar   r   inclusive_brz   rv   )rR   rw   btdtriar   r   r   r   r   r   test_btdtria   s    zTestCDFlib.test_btdtriac                 C   s@   t tjdd dtddddt tdddddgd	g d
d d S )Nc                 S   s   t j| ||ddS r~   r   r   r   r   r   rl      rm   z)TestCDFlib.test_btdtrib.<locals>.<lambda>r   r   r   Fr   r   Hz>)NgC]r2<V瞯<r{   )rR   rw   btdtribr   r   r   r   r   r   test_btdtrib   s    zTestCDFlib.test_btdtribc                 C   s0   t tjtdtddt tddddgdd d S )Nr   d   r   Fr   r   rv   )rR   rw   fdtridfdr]   r   r   r   r   r   r   r   test_fdtridfd   s    zTestCDFlib.test_fdtridfdc                 C   s>   t tjdd dt tddddtddddgdg d	d
 d S )Nc                 S   s   t j|| | ddS NTr   rU   r   Zgammaincr   r   r   r   rl      rm   z(TestCDFlib.test_gdtria.<locals>.<lambda>r        @@Fr   g     @r   Nr   绽|=r{   )rR   rw   gdtriar   r   r   r   r   r   test_gdtria   s    zTestCDFlib.test_gdtriac                 C   s8   t tjdd dtddddt tddddgd	d
 d S )Nc                 S   s   t j|| | ddS r   r   r   r   r   r   rl   
  rm   z(TestCDFlib.test_gdtrib.<locals>.<lambda>r   r   r   Fr   r   h㈵>rv   )rR   rw   gdtribr   r   r   r   r   r   test_gdtrib  s    zTestCDFlib.test_gdtribc              
   C   s>   t tjdd dtddddtddddt gdg d	d
 d S )Nc                 S   s   t j|| | ddS r   r   r   r   r   r   rl     rm   z(TestCDFlib.test_gdtrix.<locals>.<lambda>r[   r   r   Fr   r   r   r{   )rR   rw   gdtrixr   r   r   r   r   r   test_gdtrix  s    zTestCDFlib.test_gdtrixc                 C   s8   t tjdd dt tdtjdddtddgd	d
 d S )Nc                 S   s   t || |S r'   r   Zncdfr,   yzr   r   r   rl   #  rm   z*TestCDFlib.test_nrdtrimn.<locals>.<lambda>r   皙?Fr   g    _g    _Br   rv   )rR   rw   nrdtrimnr   r   r   infr   r   r   r   test_nrdtrimn   s    zTestCDFlib.test_nrdtrimnc              
   C   s:   t tjdd dttj ddddt tddgdd	 d S )
Nc                 S   s   t || |S r'   r   r   r   r   r   rl   -  rm   z*TestCDFlib.test_nrdtrisd.<locals>.<lambda>r   
   Fr   g}Ô%ITr   rv   )rR   rw   nrdtrisdr   r   r   r   r   r   r   r   test_nrdtrisd*  s    zTestCDFlib.test_nrdtrisdc                 C   s(   t tjttddtdtjgdd d S )Nr   r   r   r   rv   )r   rw   stdtrrf   r   r   r   r   r   r   r   r   
test_stdtr4  s
    zTestCDFlib.test_stdtrc                 C   s    t tjtdt t gdd d S )Nr   r   rv   )rR   rw   stdtridfrf   r   r   r   r   r   r   test_stdtridf;  s
    zTestCDFlib.test_stdtridfc                 C   s*   t tjtdtddt gdd dgd d S )Nr   r   r   r   r{   )rR   rw   stdtritrf   r   r   r   r   r   r   test_stdtritB  s    zTestCDFlib.test_stdtritc                 C   s(   t tjdd dt tddgdd d S )Nc                 S   s   t j| d |d ddS )Nr[   Tr   r   )r    r,   r   r   r   rl   L  rm   z)TestCDFlib.test_chdtriv.<locals>.<lambda>r   r   r   ru   rv   )rR   rw   chdtrivr   r   r   r   r   r   test_chdtrivI  s
    zTestCDFlib.test_chdtrivc                 C   s8   t tjtdtddddt tddddgdddd	 d S )
Nr   r   r   Fr   rt   ru   r   r   r(   r)   )rR   rw   	chndtridfro   r   r   r   r   r   r   test_chndtridfO  s    zTestCDFlib.test_chndtridfc              	   C   s4   t tjtdtddddtddt gddd	d
 d S )Nr[   r   r   Fr   r   rt   ru   r   r   )rR   rw   	chndtrincro   r   r   r   r   r   r   r   test_chndtrincY  s    zTestCDFlib.test_chndtrincc                 C   s:   t tjtdt tddtddddgdddg d	d
 d S )Nr   r   r   Fr   rt   ru   r   )rz   NN)r   r(   r)   r:   )rR   rw   chndtrixro   r   r   r   r   r   r   r   test_chndtrixb  s    zTestCDFlib.test_chndtrixc                    s.   t d tdd  fddt gdd d S )Nr   c                 S   s   t | dS )Nr   )rw   tklmbdar,   r   r   r   rl   o  rm   z4TestCDFlib.test_tklmbda_zero_shape.<locals>.<lambda>c                    s    t |     S r'   )r   rh   r   oner   r   rl   p  rm   r   rv   )r   rV   r   r   r   r   r   r   test_tklmbda_zero_shapek  s    

z"TestCDFlib.test_tklmbda_zero_shapec              
   C   s0   t tjtdt tddddgddddgd d S )Nr   iF)r   r   g&.>)r5   r(   r:   rR   rw   r   rq   r   r   r   r   r   r   test_tklmbda_neg_shapes  s    z!TestCDFlib.test_tklmbda_neg_shapec              
   C   s*   t tjtdt tddddgddd d S )Nr   r   Fr   r   )r5   r(   r   r   r   r   r   test_tklmbda_pos_shape{  s    z!TestCDFlib.test_tklmbda_pos_shaperp   )r^         ?g       @c                 C   s(   d| }t t| |g|ddg d S )Nr   rD   r   )r   rw   r   )r   rp   boundr   r   r   test_tklmbda_lmbda1  s    zTestCDFlib.test_tklmbda_lmbda1N)r"   r#   r$   pytestmarkZxfailry   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   parametrizer   r   r   r   r   rr      s8   







	
	
rr   ))r   r   )r   r   )rx   r   )r|   r   )r   r[   )Zchndtrr   )r   r   )r   r   )r   r   )r   r   )Zncfdtrrg   )Zncfdtrirg   )Z
ncfdtridfnrg   )Z
ncfdtridfdrg   )Z	ncfdtrincrg   )r   r   )r   r   )r   r   )nbdtrikr   )Znbdtrinr   )r   r   )r   r   )Zpdtrikr[   )r   r[   )r   r[   )r   r[   )nctdtrr   )Znctdtritr   )Z	nctdtridfr   )	nctdtrincr   )r   r[   zfunc,numargsc                 C   s   g | ]}|d  qS )r   r   .0r,   r   r   r   
<listcomp>  rm   r   )Zidsc                 C   sf   t jd}tt| } dd ||D }tj| D ],}| | }tdd |D r4t|t j	 q4q4d S )Nl   7'}?J-0 c                 S   s$   g | ]}t |tjtjtj fqS r   )floatr   r=   r   r   r   r   r   r     rm   z"test_nonfinite.<locals>.<listcomp>c                 s   s   | ]}t |V  qd S r'   )r   r<   r   r   r   r   	<genexpr>  rm   z!test_nonfinite.<locals>.<genexpr>)
r   randomZdefault_rnggetattrrw   	itertoolsproductanyr   r=   )funcZnumargsrngZargs_choicesrA   rB   r   r   r   test_nonfinite  s    
r   c                  C   s.   t ddtdd } g d}t| | d S )Ng!?r[   g      4@rz   )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@)rw   r   r   Zaranger   )rB   Zres_expr   r   r   test_chndtrix_gh2158  s    r   z&32bit fails due to algorithm thresholdc                  C   sf   g d} g d}g d}g d}g }t | ||D ]\}}}|t|||g7 }q2t||ddd d S )N)\(\?皙#@b     )gffffffgRQ?gffffff@&   )~jtX?333333?r_      )@礎pFh?r   gM/q?gea?g?gx$p?g0?gkeŧe?+1?r   ga?gip#t?rD   rD   rD   g!Ȩm?r   r   g3v?r   g?g:-?gy0 ?gC?r   r   g@;?gN?rD   rD   rD   g   >r   r   g$?r   g\+aYҏ?g0ku+?g2{q?r   r   r   g@L7d?r   rD   rD   rD   rD   r   r   g?r   g׏?gڙ-?g_"?r   r   r   g fu?r   rD   rD   rD   rD   rz   rD   r(   r)   )r   r   rw   r   r   )dfarrZpnoncarrtarrZresarrZactarrrd   rY   re   r   r   r   test_nctdtr_gh19896  s    r   c                  C   sB   g d} g d}g d}g d}t | ||}t||ddd d S )N)
MbP?r   r   r   r   i'  r   r   r   r   )
r   r   r   皙?+?r   r   r   r   r   )
r   r   r_   r   ,  r   r   r_   r   r   )
K ˸@gtI?x9" @g.$Bt+@gO,oq@r   gZc^?r   g@gjgdy=rD   r   )rw   r   r   )r   Zparrr   Zdesiredactualr   r   r   test_nctdtrinc_gh19896  s    r   c                   C   sX   t t tt j t j dddt jgs0J t t tt j g dsTJ d S )N      rD   r   )rD   g      ?r^   g      ?r   )r   allr<   rw   r   r   r   r   r   r   r   test_stdtr_stdtrit_neg_inf  s    0r   c                  C   s   t t jt j ddddddddt jg} | d d d f } t t jt j ddddddt jg	}t t t| t j|s|J t t t	| t j|sJ d S )	Ng      $r   rD   r   r^   gH.?r   g      $@)
r   arrayr=   r   Z
atleast_2dr   r<   rw   rx   r   )r   rY   r   r   r   test_bdtrik_nbdtrik_inf  s      r   )N)N)-r%   r   numpyr   Znumpy.testingr   r   r   Zscipy.specialZspecialrw   Zscipy.special._testutilsr   r   r   Zscipy.special._mptestutilsr   r   r	   r
   r   r   ImportErrorr   r&   r.   rR   rZ   r]   rf   rj   ro   rq   r   Zslowrr   funcsr   r   r   Zxfail_on_32bitr   r   r   r   r   r   r   r   <module>   sD   P	

	 <#


"