o
    Ö­jä[  ã                   @   sÒ  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yG   edƒZY nw G dd„ dƒZG d	d
„ d
ƒZG dd„ dƒZdd„ Zdd„ Zdd„ Zd>dd„Zdd„ Zd>d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'd'd(„ Z(d)d*„ Z)d+d,„ Z*ej! %d-g d.¢g d/¢g d0¢g d1¢g d2¢g d3¢g d4¢g d5¢g d6¢g d7¢g d8¢g d9¢g¡d:d;„ ƒZ+G d<d=„ d=ƒZ,dS )?zÑ
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                   @   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/CropPilot/venv/lib/python3.10/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   é   iâÿÿÿç333333Ó?gffffffæ?F)ÚendpointNiñÿÿÿ)ÚmaxÚnpÚlogspaceÚlog10ÚlinspaceÚr_Úunique)r   ÚnÚmÚv1Úv2Ú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   7   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   ÚxÚmask1Úmask2r   r   r   Ú__call__=   s   ((zEndpointFilter.__call__N)r'   r(   r)   r   r4   r   r   r   r   r+   6   s    r+   c                   @   s4   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
ƒs(d | _d | _d S |
d us0|d urWt	|
t
ƒr9|
| _n	|
gt| jƒ | _t	|t
ƒrL|| _d S |gt| jƒ | _d S d | _d | _d S r,   )ÚspfuncÚmpfuncÚindexÚargspecÚspfunc_firstÚdpsr    r-   r.   Ú
isinstanceÚlistÚ
endpt_rtolÚ
endpt_atolÚlen)r   r8   r9   r:   r;   r<   r=   r    r-   r.   r@   rA   r   r   r   r   D   s*   





z_CDFData.__init__c                 G   sà   | j r>| j|Ž }t |¡rtjS t|ƒ}||| j< t | j	¡� | j
t|ƒŽ }t|jƒ}W d   ƒ |S 1 s7w   Y  |S t | j	¡� | j
|Ž }t|jƒ}W d   ƒ n1 sYw   Y  t|ƒ}||| j< | jt|ƒŽ }|S r,   )r<   r8   r   ÚisnanÚnanr?   r:   r   Úworkdpsr=   r9   Útupler
   Úreal)r   ÚargsÚresr   r   r   Úidmapa   s*   



ýõú
þ
z_CDFData.idmapc                 C   sŒ   | j d u r| jd u rd S g }t| j | j| jƒD ],\}}}|d u r*|d u r*| d ¡ q|d u r1d}n|d u r7d}| t|j|j||ƒ¡ q|S )Nç        )r@   rA   Úzipr;   Úappendr+   r   r   )r   Úfiltersr-   r.   Úspecr   r   r   Úget_param_filteru   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.   Ú
vectorizedÚparam_filter)r	   r;   r    rP   rF   ÚrangeÚshaper   Úhstackr:   Úreshaper   rJ   r-   r.   Úcheck)r   rH   rT   rQ   rR   r   r   r   rY   †   s   
*
ý
z_CDFData.check)Tr6   r7   NNNN)r'   r(   r)   r   rJ   rP   rY   r   r   r   r   r5   C   s    
þr5   c                  O   s   t | i |¤Ž}| ¡  d S r,   )r5   rY   )r   ÚkwÚdr   r   r   Ú_assert_inverts“   s   r\   c                 C   sp   t  | ¡t  |¡t  |¡} }}| dkrt  d¡S | |kr#t  d¡S t jd|dd�}t j||  | d |dd�S )Nr   r   T)Úexact©Úx2Úregularized)r   ÚmpfÚfsubÚbetainc)Úkr    ÚpÚonempr   r   r   Ú_binomial_cdf˜   s   "

rg   c                 C   sf   |dk r	t  d¡S t  | ¡t  |¡t  |¡} }}| | | | |  }t j| d |d |dd�}|S )Nr   é   Tr^   )r   ra   rc   )ÚdfnÚdfdr1   ÚubrI   r   r   r   Ú_f_cdf£   s   
"rl   c                 C   sº   |d u rt jj}t  |¡�F t  | ¡t  |¡} }t  dd| d  d|d  |  ¡}||t  d| d  ¡ 9 }|t  t j|  ¡t  d|  ¡  }d| W  d   ƒ S 1 sVw   Y  d S )Nç      à?r   ç      ø?rh   )	r   Úmpr=   rE   ra   Úhyp2f1ÚgammaÚsqrtÚpi)ÚdfÚtr=   Úfacr   r   r   Ú_student_t_cdf¬   s   ""$ûrw   c                 C   sR   t  |d d t  ||  ¡¡}|t  | |  d ¡| | |d d   d 9 }|S )Nrh   r   é   rm   )r   Úbesselirr   Úexp)ru   rt   ÚncrI   r   r   r   Ú_noncentral_chi_pdf·   s   0r|   c                    s~   |d u rt jj}t  | ¡t  ˆ ¡t  ˆ¡} ‰ ‰t  |¡� t  ‡ ‡fdd„d| g¡}|W  d   ƒ S 1 s8w   Y  d S )Nc                    s   t | ˆ ˆƒS r,   )r|   )ru   ©rt   r{   r   r   Ú<lambda>Â   ó    z%_noncentral_chi_cdf.<locals>.<lambda>r   )r   ro   r=   ra   rE   Úquad)r1   rt   r{   r=   rI   r   r}   r   Ú_noncentral_chi_cdf½   s   "$þr�   c                 C   s   | | d|  |  | S )Nr   r   )re   Úlmbdar   r   r   Ú_tukey_lmbda_quantileÆ   s   rƒ   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-   )r\   ÚspÚbdtrikrg   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   r†   r‡   )NNç�íµ ÷Æ°>©r-   rA   )r\   r‰   Úbdtrinrg   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   ó   t j| ||dd�S ©NTr^   ©r   rc   ©r   r   r1   r   r   r   r~   á   ó    z)TestCDFlib.test_btdtria.<locals>.<lambda>r   ç      Y@F©Úinclusive_ar   ©r—   Úinclusive_brŒ   rˆ   )r\   r‰   Ú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   r�   r‘   r’   r“   r   r   r   r~   ê   r”   z)TestCDFlib.test_btdtrib.<locals>.<lambda>r   r   r•   Fr–   r˜   çH¯¼šò×z>)Ng¬CÒÑ]r2<çVçž¯Ò<r�   )r\   r‰   Ú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œ   rˆ   )r\   r‰   Úfdtridfdrl   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   ó   t j|| | dd�S ©NT©r   r`   ©r   Úgammaincr“   r   r   r   r~   ý   ó    z(TestCDFlib.test_gdtria.<locals>.<lambda>r   ç     @�@Fr–   g     ˆÃ@rœ   ©Nrœ   ç»½×Ùß|Û=r�   )r\   r‰   Ú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   r£   r¤   r¦   r“   r   r   r   r~     r¨   z(TestCDFlib.test_gdtrib.<locals>.<lambda>r   r   r•   Fr–   r©   çñhãˆµøä>rˆ   )r\   r‰   Ú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   r£   r¤   r¦   r“   r   r   r   r~     r¨   z(TestCDFlib.test_gdtrix.<locals>.<lambda>rh   r   r©   Fr–   rœ   rª   r�   )r\   r‰   Ú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   ó   t  || |¡S r,   ©r   Úncdf©r1   ÚyÚzr   r   r   r~   !  ó    z*TestCDFlib.test_nrdtrimn.<locals>.<lambda>r   çš™™™™™¹?Fr˜   g    _ Âg    _ Br®   rˆ   )r\   r‰   Ú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   r³   r,   r´   r¶   r   r   r   r~   +  r¹   z*TestCDFlib.test_nrdtrisd.<locals>.<lambda>r   é
   Fr˜   g}Ã”%­I²Tr®   rˆ   )r\   r‰   Ú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œ   rˆ   )r   r‰   Ústdtrrw   r   r   r   r¼   r   r   r   r   Ú
test_stdtr2  s
   
ýzTestCDFlib.test_stdtrc                 C   s    t tjtdtƒ tƒ gdd� d S )Nr   rœ   rˆ   )r\   r‰   Ústdtridfrw   r   r   r   r   r   r   Útest_stdtridf9  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�   )r\   r‰   Ústdtritrw   r   r   r   r   r   r   Útest_stdtrit@  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 )Nrh   Tr¥   r¦   )r%   r1   r   r   r   r~   J  s    z)TestCDFlib.test_chdtriv.<locals>.<lambda>r   r   r    r‡   rˆ   )r\   r‰   Úchdtrivr   r   r   r   r   r   Útest_chdtrivG  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–   r†   r‡   r�   ©r    r-   r.   )r\   r‰   Ú	chndtridfr�   r   r   r   r   r   r   Útest_chndtridfM  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 )Nrh   r   r    Fr–   r   r†   r‡   r�   rÉ   )r\   r‰   Ú	chndtrincr�   r   r   r   r   r   r   r   Útest_chndtrincW  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–   r†   r‡   r�   )rŒ   NN)r    r-   r.   rA   )r\   r‰   Úchndtrixr�   r   r   r   r   r   r   r   Útest_chndtrix`  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   )r‰   Útklmbda©r1   r   r   r   r~   m  r   z4TestCDFlib.test_tklmbda_zero_shape.<locals>.<lambda>c                    s   ˆ t  |  ¡ˆ   S r,   )r   rz   rÑ   ©Úoner   r   r~   n  r¨   rœ   rˆ   )r   ra   r   r   r   r   rÒ   r   Útest_tklmbda_zero_shapei  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   içÿÿÿF)r™   r®   g•Ö&è.>)r<   r-   rA   ©r\   r‰   rÐ   rƒ   r   r   r   r   r   r   Útest_tklmbda_neg_shapeq  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®   )r<   r-   rÕ   r   r   r   r   Útest_tklmbda_pos_shapey  s   
üz!TestCDFlib.test_tklmbda_pos_shaper‚   )rm   ç      ð?g       @c                 C   s(   d| }t t | |g|¡ddgƒ d S )Nr   rK   rØ   )r   r‰   rÐ   )r   r‚   Úboundr   r   r   Útest_tklmbda_lmbda1‚  s    zTestCDFlib.test_tklmbda_lmbda1N)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„   Ë   s:    







	
	
r„   ))rš   r   )rž   r   )rŠ   r   )rŽ   r   )rÇ   rh   )Úchndtrr   )rÎ   r   )rÊ   r   )rÌ   r   )r¡   r   )Úncfdtrrx   )Úncfdtrirx   )Ú
ncfdtridfnrx   )Ú
ncfdtridfdrx   )Ú	ncfdtrincrx   )r±   r   )r¯   r   )r¬   r   )Únbdtrikr   )Únbdtrinr   )r»   r   )r¿   r   )Úpdtrikrh   )rÁ   rh   )rÅ   rh   )rÃ   rh   )Únctdtrr   )Únctdtritr   )Ú	nctdtridfr   )Ú	nctdtrincr   )rÐ   rh   zfunc,numargsc                 C   s   g | ]}|d  ‘qS )r   r   ©Ú.0r1   r   r   r   Ú
<listcomp>«  r¨   rî   )Úidsc                 C   sh   t j d¡}tt| ƒ} dd„ | |¡D ƒ}tj|Ž D ]}| |Ž }tdd„ |D ƒƒr0t|t j	ƒ q	 qd S )Nl   7'}?J-0 c                 S   s$   g | ]}t |ƒtjtjtj f‘qS r   )Úfloatr   rD   r¼   rì   r   r   r   rî   °  s   $ z"test_nonfinite.<locals>.<listcomp>c                 s   s   � | ]}t  |¡V  qd S r,   )r   rC   rì   r   r   r   Ú	<genexpr>µ  s   € z!test_nonfinite.<locals>.<genexpr>)
r   ÚrandomÚdefault_rngÚgetattrr‰   Ú	itertoolsÚproductÚanyr   rD   )ÚfuncÚnumargsÚrngÚargs_choicesrH   rI   r   r   r   Útest_nonfinite«  s   
÷rü   c                  C   s.   t  ddt d¡d ¡} g d¢}t| |ƒ d S )Ngé!çýÿï?rh   ç      4@rŒ   )gyY�‹¡;@gŽ¾î A@g‹Ê¾ªüC@g‡�-â®ðE@g�×-o­G@gN—„•CEI@gŸ0¹_{ÃJ@gY¨×ÉÜ-L@gjŸ­ðrˆM@gZÇ§9ÖN@g-¤]˜fP@gmj€#©P@gÓgè±ÃAQ@glÖ@€ÝÖQ@gÕn¦dÎhR@g$®Ü‚ê÷R@g@ÏFTx„S@gìÄ“³T@g†]±gÏ–T@gc$øU@)r‰   rÎ   r   Úaranger   )rI   Úres_expr   r   r   Útest_chndtrix_gh2158¾  s   r   c                  C   sB   g d¢} g d¢}g d¢}g d¢}t  | ||¡}t||ddd� d S )N)
çü©ñÒMbP?ç\�Âõ(\ï?çš™™™™™#@éb   éÔ  i'  r  r  r  r  )
r  rº   r   çš™™™™™é?ç+‡ÙÎ÷ï?r  rº   r   r  r  )
çú~j¼t“X?ç333333Ã?rn   é   é,  r  r	  rn   r
  r  )
ç�K ·Ë¸@gtúIŽö?çx9ô" @g.$Bt+@gÜO, oq@r  gZcÖ^æö?r  g„… ¬²³@gÂ¥j²Àg•dyáý•=rK   ©r-   r.   )r‰   rë   r   )ÚdfarrÚparrÚtarrÚ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¡¡¡sJ ‚t  t  t t j g d¢¡¡¡s*J ‚d S )Nç      ð¿rK   rØ   )rK   g      Ð?rm   g      è?rØ   )r   ÚallrC   r‰   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|¡¡¡sNJ ‚d S )	Ng      $Àr  rK   r®   rm   g§èH.ÿï?rØ   ç      $@)
r   ÚarrayrD   r¼   Ú
atleast_2dr  rC   r‰   rŠ   rå   )r·   re   r   r   r   Útest_bdtrik_nbdtrik_infä  s    ÿÿ $r  zdfn,dfd,nc,f,expected)r•   rº   rº   r•   gÉ,‰õ]Ó?)r•   r•   ç{®Gáz„?rº   gŸÔsC´r«:)r•   r  rº   r  gn¼ähûUg?)r  r  rØ   rº   g³%g{E‰?)r•   r•   r  r  gû 	�À
1)rØ   r•   r•   rº   gÚž^)Ãk;)rØ   r  r•   r  gl€öñB‰?)rØ   r  r  r  g)Dt^\Ã,?)r  rØ   rº   r•   gµ�žå|€í?)rº   rº   rØ   rØ   g�º²•’Ô?)r•   r•   rº   r  rØ   )rØ   rº   r•   r  g„*}€ö�?c                 C   s    t t | |||¡|ddd� d S )Nç‚vIhÂ%<=r   r  )r   r‰   rà   )ri   rj   r{   ÚfÚexpectedr   r   r   Útest_ncfdtrî  s    :r   c                   @   s�  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jdDdE�dF�‘dG‘¡dHdI„ ƒZdJdK„ Z	ej dLg dM¢g dN¢g dO¢g dP¢dQdQe
jdQdRgdQdQe
j dRdRgg¡dSdT„ ƒZdUS )VÚ
TestNctdtrzdf, nc, x, expected)r  çffffffÀr  gDÁŸ iÿï?)r  r"  r	  gì‘�ÿï?)r  r"  rn   g7ùàìÿï?)r  r"  r
  g’Uõýÿï?)r  çR¸…ëQØ?r  g�¢Žù�Ö?)r  r#  r	  g�‚x$—pÙ?)r  r#  rn   g7´ü˜Šðæ?)r  r#  r
  gÙ]Å§eæî?)r  çffffff@r  gæ¨¼¶¢?)r  r$  r	  g:ëô›GF ?)r  r$  rn   g›‡¦pa¢?)r  r$  r
  gÅfO!˜té?)r  é&   r  gö¥    )r  r%  r	  gQýb] )r  r%  rn   g¡•˜˜y·á+)r  r%  r
  guàQ‡Rmˆ?)r  r"  r  g/C÷*iÿï?)r  r"  r	  g.b†ý«ÿï?)r  r"  rn   gI'vÿÿï?)r  r"  r
  gòÿÿÿÿÿï?)r  r#  r  gÅÑ•��Ö?)r  r#  r	  gDñ¶-¡Ú?)r  r#  rn   gÂy�0 ë?)r  r#  r
  g¹£CÚÿÿï?)r  r$  r  g¾ýî¦í?)r  r$  r	  g:ÇÓýe!?)r  r$  rn   g®ÿáhš‹?)r  r$  r
  gö�¾Åþï?)r  r%  r  g‘+®    )r  r%  r	  g¬PDp   )r  r%  rn   gÜÓý‰§úM)r  r%  r
  gµgS>^X#>)r  r"  r  gËNG0iÿï?)r  r"  r	  g%WØ­ÿï?)r  r"  rn   g�©¬Úÿÿï?)r  r"  r
  rØ   )r  r#  r  g� aYÒ�Ö?)r  r#  r	  g—pk„u+Ú?)r  r#  rn   gZVq˜ºë?)r  r#  r
  rØ   )r  r$  r  g·_a¨—?)r  r$  r	  gþÐ+³,!?)r  r$  rn   gqgÕb‚†?)r  r$  r
  göÿÿÿÿÿï?)r  r%  r  gQ¯    )r  r%  r	  g%µåQ   )r  r%  rn   g®Th- 1)r  r%  r
  g¹ÅÂ¤5)r  r"  r  geKÑ0iÿï?)r  r"  r	  gº®ÿï?)r  r"  rn   gjÍSàÿÿï?)r  r"  r
  rØ   )r  r#  r  g|Så³×�Ö?)r  r#  r	  gfG¾—’-Ú?)r  r#  rn   gî^œ"Êë?)r  r#  r
  rØ   )r  r$  r  gm‡ôç¨?)r  r$  r	  g¨|q¢]/!?)r  r$  rn   g+%Î±s†?)r  r$  r
  rØ   )r  r%  r  gèn¯    )r  r%  r	  gmÓ   r  r%  rn   gÒDd‡™‡z+Bug in underlying Boost math implementation)Úreason)Úmarks)r  r%  r
  g>ø�ØéÍH*c                 C   s"   t  |||¡}t||ddd� d S )Nr  gÃ‚Êñr  )r‰   rè   r   )r   rt   r{   r1   r  Úresultr   r   r   Útest_gh19896S  s   IzTestNctdtr.test_gh19896c                 C   s*   d\}}}d}t t |||¡|dd� d S )N)i¸  r   rº   g-ö£‘^?g›+¡†›„=rˆ   ©r   r‰   rè   )r   rt   r{   r1   r  r   r   r   Útest_nctdtr_gh8344Ÿ  s   
zTestNctdtr.test_nctdtr_gh8344zdf, nc, x, expected, rtol)g      @g      @g       ÀgÂéGƒèà>g:Œ0âŽy5>)r©   r  rØ   g³ÿ™'$ö <r  )r®   g      Àg       @g¡jxÿÿÿï?r  )r  rý   r	  ge¸*ömtÔ-r  rØ   rK   c                 C   s   t t |||¡||d� d S )Nrˆ   r*  )r   rt   r{   r1   r  r-   r   r   r   Útest_accuracy¥  s   zTestNctdtr.test_accuracyN)r'   r(   r)   rÛ   rÜ   rÞ   ÚparamrÝ   r)  r+  r   r¼   r,  r   r   r   r   r!  +  s&   
(ÿþýüûúùø	÷
öõôóòñðïîíìëêéèçæåäãâá à!ß"Þ#Ý$Ü%Û&Ú'Ù(Ø)×*Ö+Õ,Ô-Ó.Ò/Ñ0Ð1Ï2Î3Í4Ì5Ë6Ê7É8È9Ç:Æ;Å<Ä=Ã>Â?ÿÿÁB¾
Dûþ
r!  r,   )-r*   rõ   Únumpyr   Únumpy.testingr   r   rÛ   Úscipy.specialÚspecialr‰   Úscipy.special._testutilsr   r   r   Úscipy.special._mptestutilsr   r   r	   r
   r   r   ÚImportErrorr   r+   r5   r\   rg   rl   rw   r|   r�   rƒ   rÜ   Úslowr„   ÚfuncsrÞ   rü   r   r  r  r  r   r!  r   r   r   r   Ú<module>   sh    ÿP
	
	 <#

õþ
.