o
    Ö­j­b  ã                   @   sB  d dl Z d dlZd dlmZ d dlmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZ d dlZd dlmZmZmZmZ d dlmZ d dlmZ d dlm Z  e j! "dg d	¢¡d
d„ ƒZ#e j! "dddg¡dd„ ƒZ$dd„ Z%dd„ Z&dd„ Z'dd„ Z(dd„ Z)dd„ Z*dd„ Z+dd„ Z,e j! "d ej-e.e/fgd! Ž ¡d"d#„ ƒZ0d$d%„ Z1d&d'„ Z2d(d)„ Z3d*d+„ Z4d,d-„ Z5d.d/„ Z6d0d1„ Z7e j! "d2g d3¢¡d4d5„ ƒZ8d6d7„ Z9d8d9„ Z:d:d;„ Z;d<d=„ Z<d>d?„ Z=G d@dA„ dAƒZ>G dBdC„ dCƒZ?e j! "dDg dE¢g dF¢g¡dGdH„ ƒZ@dIdJ„ ZAG dKdL„ dLƒZBG dMdN„ dNƒZCdOdP„ ZDG dQdR„ dRƒZEG dSdT„ dTƒZFdS )Ué    N)Ústats)Ú	betabinomÚ
betanbinomÚ	hypergeomÚ
nhypergeomÚ	bernoulliÚ	boltzmannÚskellamÚzipfÚzipfianÚbinomÚnbinomÚnchypergeom_fisherÚnchypergeom_walleniusÚrandintÚpoisson_binom)Úassert_almost_equalÚassert_equalÚassert_allcloseÚsuppress_warnings)r   )Úroot_scalar)Úquadzk, M, n, N, expected, rtol))é   é
   é   é   gÏó<Ïó<ï?çVçž¯Ò<)ék   é'  é¸  é×   gŒâÙÿÿÿï?r   )r   r   r   r    gŸåèS©;ç»½×Ùß|Ë=c                 C   ó"   t  | |||¡}t|||d� d S ©N©Úrtol)r   Úcdfr   ©ÚkÚMÚnÚNÚexpectedr%   Úp© r.   úc/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/stats/tests/test_discrete_distns.pyÚtest_hypergeom_cdf   s   r0   )é   r   r   r    gäûòÿÿÿï?r   )é}   r   r   r    g«™Çö!˜:<r!   c                 C   r"   r#   )r   Úsfr   r'   r.   r.   r/   Útest_hypergeom_sf#   s   r4   c            
      C   sÌ   d} d}d}d}t  | |||¡}t  ||  ||| |¡}t  ||  |||| ¡}t  | |||¡}t||dd� t||dd� t||dd� d} d}d}d}t  | |||¡}t | || ¡}	t||	dd� d S )Nr   é2   r   é   )Údecimalé   é   )r   Úlogpmfr   r   )
r(   r+   ÚKr*   Úlogpmf1Úlogpmf2Úlogpmf3Úlogpmf4Úhypergeom_logpmfÚbernoulli_logpmfr.   r.   r/   Útest_hypergeom_logpmf-   s$   rB   c                  C   sh   d\} }}d}t  || ||¡}t || ||| d ¡| | |d   | || d   }t||dd� d S )N)é-   é   é   é   r8   ç»½×Ùß|Û=r$   )r   Úpmfr   r   )r)   r*   Úrr(   ÚNHGÚHGr.   r.   r/   Útest_nhypergeom_pmfG   s
   
8rL   c                  C   sb   d} d}d}t  |d ¡}t || ||¡}t || ||¡}t|g d¢dd� t|g d¢dd� d S )	NrE   r   r   r8   )ç’$I’$I²?gÛ¶mÛ¶mË?ç·mÛ¶mÛÖ?rN   ç‚vIhÂ%<=r$   )rM   ç’$I’$IÒ?g%I’$I’ä?ç      ð?)ÚnpÚaranger   rH   r&   r   )r)   r*   rI   ÚsupportrH   r&   r.   r.   r/   Útest_nhypergeom_pmfcdfP   s   rU   c                  C   sF   d} d}d}t  g d¢g d¢g| ||¡}t|g d¢g d¢gdd	� d S )
Nr   r   r   )r   r8   é   r   )r8   rV   r   r   )r8   r   r   r8   )r   r   r8   r   rO   r$   )r   rH   r   )r)   r*   rI   rH   r.   r.   r/   Útest_nhypergeom_r0\   s
   rW   c                  C   s0   t jdg d¢dgdggdd�} | jdksJ ‚d S )Né   )r9   rE   é	   r6   rD   ©r   r8   rV   r   ©Úsize)r   ÚrvsÚshape)Úxr.   r.   r/   Útest_nhypergeom_rvs_shapee   s   r`   c                  C   sV   t j d¡ tjddddd�} t j d¡ t jjdd�}t |ddd¡}t| |ƒ d S )Nr   rX   r9   é   éd   r[   )rR   ÚrandomÚseedr   r]   ÚuniformÚppfr   )r_   r-   Úyr.   r.   r/   Útest_nhypergeom_accuracym   s   rh   c                  C   sŠ   t  dd¡} d}t | d|¡}| dk}t||ƒ t  d¡}d}t | ||¡}g d¢}t||d	d
� t | ||¡}g d¢}t||d	d
� d S )Néýÿÿÿr   r8   g°rh‘í|¿?r   rV   r   )r   r   r   ç’$I’$Iâ?rP   g’$I’$IÂ?r   r   rO   r$   )r   r   r   rj   gÛ¶mÛ¶më?r8   r8   r8   )rR   rS   r   rH   r   Úlogr   r&   )r(   r+   r-   r,   ÚlamÚcr.   r.   r/   Útest_boltzmann_upper_boundx   s   

rn   c                  C   sJ   d} t  | d ¡}t| ddƒ |¡}t  d| d  | d ¡}t||ƒ d S )Né   r8   )rR   rS   r   rH   Úrepeatr   )r*   r(   r-   r,   r.   r.   r/   Útest_betabinom_a_and_b_unity‹   s
   rq   Údtypesr   c                 C   sB   | \}}}|dƒ|dƒ|dƒ}}}t tj|||dd�dƒ d S )Nr   rV   r   r(   ©Úmomentsgˆa†aæ¿)r   r   r   )rr   Ún_typeÚa_typeÚb_typer*   ÚaÚbr.   r.   r/   Ú-test_betabinom_stats_a_and_b_integers_gh18026•   s   
rz   c                  C   sH   d} d}t  d¡}td| |ƒ |¡}t| | |  ƒ |¡}t||ƒ d S )Ngffffff@g)\�Âõ(ä?rV   r8   )rR   rS   r   rH   r   r   )rx   ry   r(   r-   r,   r.   r.   r/   Útest_betabinom_bernoulliž   s   
r{   c                  C   ó$   d\} }}t tj| ||d�dƒ d S )N)gÍÌÌÌÌÌì?r   r8   ©Ú
confidencer*   r-   ©r   r   )r   r   Úinterval©Úalphar*   r-   r.   r.   r/   Útest_issue_10317¨   ó   
rƒ   c                  C   r|   )N)gffffffî?r   r   r}   r   )r   r   r€   r�   r.   r.   r/   Útest_issue_11134­   r„   r…   c                   C   sT   t j d¡ tt t j d¡dd¡dƒ tt ddd¡dƒ tt ddd¡dƒ d S )Nr   r   ç      à?éÿÿÿÿr8   )rR   rc   rd   r   r   rf   Úrandr.   r.   r.   r/   Útest_issue_7406²   s   r‰   c                  C   sv   d} t jjddd�}d}t ||| ¡}t|dƒ t  ddd¡}t ||| ¡}t|dƒ d}t ||| ¡}t||ƒ d S )	Nr   rb   r   r[   r‡   ç{®Gáz„?ç®Gáz®ï?r8   )rR   rc   r   r   rf   r   Úlinspace)r-   r*   r_   rf   r.   r.   r/   Útest_issue_5122»   s   

r�   c                   C   s"   t tdt dd¡ƒ d¡dƒ d S )Néè  ri   iœÿÿÿrŠ   r   )r   r   rR   Úlogspacerf   r.   r.   r.   r/   Útest_issue_1603Ì   ó   "r�   c                  C   s2   d} t  ddd¡}tt |d| | ¡ddd� d S )Nr†   r   é   r6   rV   rŠ   )Úatol)rR   r�   r   r   r&   )r-   r_   r.   r.   r/   Útest_issue_5503Ð   s    r”   zx, n, p, cdf_desired)	)i,  rŽ   ç333333Ó?g’24û½à?)r   r   r•   gUž…7i(à?)i0u  i † r•   gÎ­Ì‘Çà?)ià“ i@B r•   g8@¨�
à?)iÀÆ- é€–˜ r•   gfø‡(Gà?)i€ÃÉé áõr•   gÓwàtg à?)i�êÉr—   r•   g¥Vç}Öˆï?)ipœÉr—   r•   g¢°�ÿzÌ�?)i0 Ér—   r•   g¡éÉnåC:c                 C   s   t t | ||¡|ƒ d S ©N©r   r   r&   )r_   r*   r-   Úcdf_desiredr.   r.   r/   Útest_issue_5503pt2Ö   s   r›   c                   C   ó   t t ddd¡dƒ d S )NrV   l    J)£gê-�™—q=gB.¸Ã+ní?r™   r.   r.   r.   r/   Útest_issue_5503pt3å   s   r�   c                   C   rœ   )Néú   r5   gAAà?g_[CË®i³8)r   r   r3   r.   r.   r.   r/   Útest_issue_6682ê   s   rŸ   c                  C   s.   t  g d¢dd¡} dtj dg}t| |ƒ d S )N)r   r‡   r8   r   r†   g¬¥ÂÐÑGÞ¿g1DÊ&+´À)r   ÚlogcdfrR   Úinfr   )ÚresultÚ	referencer.   r.   r/   Útest_issue_19747ñ   s   r¤   c                  C   s$   d} d}d}t t || |¡dƒ d S )NrŽ   rŠ   iä  ç        )r   r   rH   )r*   r-   r(   r.   r.   r/   Ú%test_boost_divide_by_zero_issue_15101ø   s   r¦   c                  C   s,   g d¢} t  d| | ¡}g d¢}t||ƒ d S )N)	r8   r   rb   rŽ   éˆ  iº  iì  i‚  ip  r   )	gâ–>l¦ïä?g‹ëõz½oá?gVr�Ržsà?g°�ˆŠ$à?gVWêCWà?g4y�Bà?g4ö€.à?g.ÚLròà?gDáøÅêà?)r	   r&   r   )Úmur&   Úcdf_expectedr.   r.   r/   Útest_skellam_gh11474ÿ   s   rª   c                   @   st   e Zd Zdd„ Zdd„ Zdd„ Zej d¡ e 	e 
dd	d
¡ej ddd
¡f¡jZej de¡dd„ ƒZdd„ ZdS )ÚTestZipfianc                 C   sŒ   d}d}t  dd¡}tt |||¡t ||¡ƒ tt |||¡t ||¡ƒ tt |||¡t ||¡ƒ ttj||dd�tj|dd�ƒ d S )Ng      @r–   r8   é   Úmsvkrs   )	rR   rS   r   r   rH   r
   r&   r3   r   )Úselfrx   r+   r(   r.   r.   r/   Útest_zipfian_asymptotic  s   ÿz#TestZipfian.test_zipfian_asymptoticc                 C   s¬   d\}}d}t  d|d ¡}tt |||¡t |||¡dd� tt |||¡t |||¡dd� tt |||¡t |||¡dd� ttj||dd�tj||dd�dd� d S )N)gGœ¡úÿÿï?gÜ1¯  ð?é   r8   g�íµ ÷Æ >r$   r­   rs   )rR   rS   r   r   rH   r&   r3   r   )r®   Úalt1Úagt1r+   r(   r.   r.   r/   Útest_zipfian_continuity  s   ÿÿÿ
ÿz#TestZipfian.test_zipfian_continuityc                 C   s¨   t j d¡ t jjdddd�}t j d¡d d }t jjdddd�}g d¢}g d¢}tt |||¡dd … |dd … d	d
� tt |||¡dd … |dd … dd
� d S )Nr   r8   ro   r   r[   rb   )
g÷Ä¹Ô¨Š€?gØ¡–Ÿkïþ>ç	]x�[ï?gÿÇ™ûÊ>g	¤W¿³4?gÂ€
-ä?g˜$fhnåý=g9´’±[.Ä>g±`ý€Ö”Ø>gn²màì ?)
gÉaæñj¯ì?gZ›k=èþï?r´   gõ…�óþÿï?g90×þï?gÉ¸˜UŽÿï?rQ   gJ_9ïÿï?g2h2-ûÿï?gB0ýÅþï?ç�íµ ÷Æ°>r$   g-Cëâ6
?)	rR   rc   rd   r   rˆ   r   r   rH   r&   )r®   r(   rx   r*   rH   r&   r.   r.   r/   Útest_zipfian_R)  s   (,zTestZipfian.test_zipfian_Rr   éþÿÿÿr8   r   rV   é(   za, nc                    sò   t jdd„ ƒ‰ t j‡ fdd„ƒ}t  |d ¡}||||ƒ}t  |¡}t j||d�}t j|| d |d�}|d }	t j|| |	 d	 |d�}
t j|| |	 d
 |d�d	 }tt |||¡|ƒ tt |||¡|ƒ ttj	||dd�|||
|gƒ d S )Nc                 S   s   dt  d| d ¡|   ¡ S )z$Naive implementation of harmonic sumr8   )rR   rS   Úsum)r*   Úsr.   r.   r/   ÚHnsI  s   z+TestZipfian.test_zipfian_naive.<locals>.Hnsc                    s*   | dk s| |kr
dS d| |  ˆ ||ƒ S )z#Naive implementation of zipfian pmfr8   r¥   r.   )r(   rx   r*   ©r»   r.   r/   ÚpzipN  s   z,TestZipfian.test_zipfian_naive.<locals>.pzipr8   )ÚweightsrV   r†   r   r   Úmvskrs   )
rR   Ú	vectorizerS   ÚcumsumÚaverager   r   rH   r&   r   )r®   rx   r*   r½   r(   rH   r&   ÚmeanÚvarÚstdÚskewÚkurtosisr.   r¼   r/   Útest_zipfian_naiveE  s"   


ÿzTestZipfian.test_zipfian_naivec                 C   sD   t  dd¡}| t j¡}tddƒ}| |¡}| |¡}t||ƒ d S )Nr   rŽ   éo   rX   )rR   rS   ÚastypeÚint32r   rH   r   ©r®   r(   Úk_int32ÚdistrH   Úpmf_k_int32r.   r.   r/   Útest_pmf_integer_kc  s   


zTestZipfian.test_pmf_integer_kN)Ú__name__Ú
__module__Ú__qualname__r¯   r³   r¶   rR   rc   rd   Úvstackr�   r   ÚTÚnaive_testsÚpytestÚmarkÚparametrizerÈ   rÐ   r.   r.   r.   r/   r«     s    ÿÿ
r«   c                   @   sê   e Zd Zej d¡ dZdZejjdeed�Z	ejjdeed�Z
e	e
 Zejdeejd�Ze dee
 ¡Ze ee	¡Zejeeejd�ZejjejŽ d Zej ddd	g¡d
d„ ƒZdd„ Zdd„ Zdd„ Zej ddd	g¡dd„ ƒZdS )ÚTestNCHrV   ©rV   r   r   rb   r8   r[   r   Ú	dist_namer   r   c                 C   sX   t tdœ}|| }| j| j| j| jf\}}}}t|j||||dd�t ||||¡ƒ d S )N©r   r   r8   )Úodds)	r   r   r_   r+   Úm1r*   r   rH   r   )r®   rÜ   ÚdistsrÎ   r_   r+   rß   r*   r.   r.   r/   Útest_nch_hypergeomz  s   ÿÿzTestNCH.test_nch_hypergeomc           
      C   s–   | j | j| j| j| jf\}}}}}tjdd„ ƒ}||||||ƒ\}}}	tt 	|||||¡|ƒ ttj
||||dd�|ƒ ttj
||||dd�|	ƒ d S )Nc                    s�   |ˆ ‰t  dˆˆ ¡‰t  ˆˆ¡‰‡‡‡‡fdd„‰ ‡ ‡‡fdd„}|dƒ}|dƒ}|dƒ}ˆ | ƒ| }	|| }
|| || d  }|	|
|fS )Nr   c                    s(   t ˆ | ƒ}t ˆˆ|  ƒ}|| ˆ|   S r˜   )Úspecial_binom)r_   Út1Út2©rß   Úm2r*   Úwr.   r/   Úf‘  s   
zFTestNCH.test_nchypergeom_fisher_naive.<locals>.pmf_mean_var.<locals>.fc                    s"   t ‡‡ fdd„tˆˆd ƒD ƒƒS )Nc                 3   s    � | ]}ˆ |ƒ|ˆ  V  qd S r˜   r.   )Ú.0rg   )rè   r(   r.   r/   Ú	<genexpr>—  s   € zYTestNCH.test_nchypergeom_fisher_naive.<locals>.pmf_mean_var.<locals>.P.<locals>.<genexpr>r8   )r¹   Úrange©r(   )rè   ÚxlÚxurì   r/   ÚP–  r‘   zFTestNCH.test_nchypergeom_fisher_naive.<locals>.pmf_mean_var.<locals>.Pr8   rV   ©rR   ÚmaximumÚminimum)r_   r+   rß   r*   rç   rï   ÚP0ÚP1ÚP2rH   rÃ   rÄ   r.   )rè   rß   ræ   r*   rç   rí   rî   r/   Úpmf_mean_varŠ  s   
z;TestNCH.test_nchypergeom_fisher_naive.<locals>.pmf_mean_varÚmrs   Úv)r_   r+   rß   r*   rÞ   rR   rÀ   r   r   rH   r   )
r®   r_   r+   rß   r*   rÞ   rö   rH   rÃ   rÄ   r.   r.   r/   Útest_nchypergeom_fisher_naive†  s   "
ÿÿz%TestNCH.test_nchypergeom_fisher_naivec              	      s†  t j d¡ d}d}t jjd||d�}t jjd||d�}|| }tjd||jd�}t  d|| ¡}t  ||¡}tj|||jd�}	t jj|	jŽ d }
dd„ ‰t j	‡fd	d
„ƒ‰ t
ƒ �!}|jtdd� tt ||||
¡ˆ ||||
ƒdd� W d   ƒ n1 s}w   Y  t j	‡ fdd„ƒ}t
ƒ �#}|jtdd� ttj||||
dd�|||||
ƒdd� W d   ƒ n1 s´w   Y  t j	‡fdd„ƒ}||	||||
ƒ}t |	||||
¡}d\}}t  || ¡||t  |¡  k }| ¡ t  |¡d ksôJ ‚t||  ||  ||  |
|  ƒD ]9\}}}}
|| }ˆ||||
ƒ\}}t  ||d ¡}	||	||||
ƒ ¡ dk �s1J ‚tt |	||||
¡ ¡ dƒ �qd S )NrV   rÛ   rb   r8   r[   r   c                 S   s,   | | }t  d|| ¡}t  ||¡}||fS )Nr   rð   )r+   rß   r*   rç   ræ   rí   rî   r.   r.   r/   rT   ·  s   z9TestNCH.test_nchypergeom_wallenius_naive.<locals>.supportc                    s>   | ˆ  ‰ˆ| ˆ ˆˆƒ\}}‡ ‡‡‡fdd„}t |||fd�jS )Nc                    s    | ˆ  dˆ|  ˆ  ˆ  d S ©Nr8   r.   )Úurå   r.   r/   ÚfunÂ  s    zCTestNCH.test_nchypergeom_wallenius_naive.<locals>.mean.<locals>.fun)Úbracket)r   Úroot)r+   rß   r*   rç   rí   rî   rü   ©rT   rå   r/   rÃ   ½  s   z6TestNCH.test_nchypergeom_wallenius_naive.<locals>.meanz!invalid value encountered in mean)Úmessageg{®Gáz”?r$   c                    sZ   | | }ˆ | |||ƒ}|||  }|| || |  }| | | | d || ||    S rú   r.   )r+   rß   r*   rç   ræ   rû   rx   ry   )rÃ   r.   r/   ÚvarianceÍ  s
   $z:TestNCH.test_nchypergeom_wallenius_naive.<locals>.variancerø   rs   gš™™™™™©?c                    sH   |ˆ ‰ˆ|ˆˆˆƒ\}}‡‡‡‡‡fdd„‰ ‡ ‡‡‡fdd„}|ˆƒS )Nc                    sH   ˆˆ ˆ  ˆˆˆ   }d| ˆ|   ˆ d| d|   ˆˆ   }|S rú   r.   )ÚtÚDÚres)rß   ræ   r*   rç   r_   r.   r/   Ú	integrandã  s   ,zHTestNCH.test_nchypergeom_wallenius_naive.<locals>.pmf.<locals>.integrandc                    s:   t ˆ| ƒ}t ˆˆ|  ƒ}tˆ ddddd�}|| |d  S )Nr   r8   g¼‰Ø—²Òœ<)ÚepsrelÚepsabs)râ   r   )r_   rã   rä   Úthe_integral)r  rß   ræ   r*   r.   r/   rè   è  s   
ÿz@TestNCH.test_nchypergeom_wallenius_naive.<locals>.pmf.<locals>.fr.   )r_   r+   rß   r*   rç   rí   rî   rè   rÿ   )r  rß   ræ   r*   rç   r_   r/   rH   Þ  s
   z5TestNCH.test_nchypergeom_wallenius_naive.<locals>.pmf)rµ   rµ   r†   )rR   rc   rd   r   r]   r^   rñ   rò   rˆ   rÀ   r   ÚfilterÚRuntimeWarningr   r   rÃ   r   rH   Úabsr¹   ÚprodÚziprS   )r®   r^   Úmax_mrß   ræ   r+   r*   rí   rî   r_   rç   Úsupr  rH   Úpmf0Úpmf1r“   r%   Úir.   )rÃ   rT   r/   Ú test_nchypergeom_wallenius_naive¨  s`   	ÿÿýÿýý	 2 ÷z(TestNCH.test_nchypergeom_wallenius_naivec           	      C   s†   d}d}d}d}t  d¡}t  g d¢¡}d}d}tt |||||¡|d	d	d
� tt ||||¡|d	d� tt ||||¡|dd� d S )Nr5   r°   ro   g      @r¬   )g9”T€ÆÕå;g»��rþü�<gÝD,P=g³4À VŒ=g'±	,îñð=gC�åõ‹ŒG>gyzžtj…”>gÁÙë«t•×>gÃ+k…†?g ‰Me´GD?gqNZVÉ’o?gœcø2nž‘?g~Z€ÄN¬?g¼EŸ}?YÀ?gõÛÀ¢ßöÊ?gËÎ‡aQÏ?gè€]?…É?gr”…)‚‚º?gÌáÙp{¡?g3Í9	·†y?gµ Ñmç>?gJ®ò•´�-@gñihÞ@rO   )r%   r“   r$   g•dyáý¥=)rR   rS   Úarrayr   r   rH   rÃ   rÄ   )	r®   r)   r*   r+   rÞ   r  rH   rÃ   rÄ   r.   r.   r/   Útest_wallenius_against_mpmath  s"   
ÿÿ
ÿz%TestNCH.test_wallenius_against_mpmathc                 C   sD   t tdœ}|| }|jdddgdggg d¢dd�}|jdks J ‚d S )	NrÝ   r5   r°   r   ro   )r†   rQ   g       @rZ   r[   )r   r   r]   r^   )r®   rÜ   rà   rÎ   r_   r.   r.   r/   Útest_rvs_shape.  s   ÿ zTestNCH.test_rvs_shapeN)rÑ   rÒ   rÓ   rR   rc   rd   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.   r/   rÚ   l  s.    ÿ

"\*ÿrÚ   zmu, q, expected)r   éx   g@	›#á¸)iÜ  r   g"q³V§UÀc                 C   s.   d}||||   }}t t |||¡|ƒ d S )Nro   )r   r   r    )r¨   Úqr,   r\   r*   r-   r.   r.   r/   Útest_nbinom_11465;  s   r  c                  C   s`   t  ddd¡} d}t|ƒ | ¡}| d dk}t|d |ƒ t|d d| ƒ t||  dƒ d S )Nr   r8   ra   gš™™™™™é?r‡   )rR   rŒ   r   rH   r   r   )r_   r-   rH   r  r.   r.   r/   Útest_gh_17146H  s   r  c                   @   s\   e Zd Zej dg d¢g d¢g d¢g¡dd„ ƒZej dg d¢g d	¢g d
¢g¡dd„ ƒZdS )ÚTestBetaNBinomzx, n, a, b, ref)r   g    ÐSAr   ro   g:[Y³³»))rb   r5   r   ro   g ôÍødg?)r   rŽ   r   ro   gL&¸[šô>c                 C   s   t t ||||¡|dd� d S )NrG   r$   )r   r   rH   )r®   r_   r*   rx   ry   Úrefr.   r.   r/   Útest_betanbinom_pmfU  s   z"TestBetaNBinom.test_betanbinom_pmfzn, a, b, ref)r   r§   r5   g—Í:ÑèoÀ?)r   rY   rY   gÍ>["”°@)rb   rŽ   r   gÑ Å>ÿ[ù?c                 C   s    t tj|||dd�|dd� d S )Nr(   rs   g [n‡ë<r$   )r   r   r   )r®   r*   rx   ry   r  r.   r.   r/   Útest_betanbinom_kurtosish  s   
ÿz'TestBetaNBinom.test_betanbinom_kurtosisN)rÑ   rÒ   rÓ   r×   rØ   rÙ   r  r  r.   r.   r.   r/   r  T  s    þÿ
þÿr  c                   @   ó   e Zd Zdd„ ZdS )ÚTestZipfc                 C   sB   t  dd¡}| t j¡}tdƒ}| |¡}| |¡}t||ƒ d S )Nr   rŽ   rY   )rR   rS   rÊ   rË   r
   rH   r   rÌ   r.   r.   r/   Útest_gh20692‚  s   

zTestZipf.test_gh20692N)rÑ   rÒ   rÓ   r!  r.   r.   r.   r/   r   �  ó    r   c                  C   s`   G dd„ dt jƒ} | tjd�}d}tjt|d�� | d¡ W d   ƒ d S 1 s)w   Y  d S )Nc                   @   r  )z#test_gh20048.<locals>.test_dist_genc                 S   s   t |d dƒS )Nrb   r‹   )Úmin)r®   r(   r.   r.   r/   Ú_cdf�  s   z(test_gh20048.<locals>.test_dist_gen._cdfN)rÑ   rÒ   rÓ   r$  r.   r.   r.   r/   Útest_dist_gen�  r"  r%  )ry   zArguments that bracket...)Úmatchg+‡ÙÎ÷ï?)r   Úrv_discreterR   r¡   r×   ÚraisesÚRuntimeErrorrf   )r%  Ú	test_distr   r.   r.   r/   Útest_gh20048Œ  s   "ÿr+  c                   @   r  )ÚTestPoissonBinomialc                 C   sP   t j d¡}| d¡}t  |d ¡}| |¡}t ||¡}g d¢}t||ƒ d S )Nl   ®zb}ñ r   r8   )gc«¡µÆ™¡?g!)@*ç—ä?gŒ/_“èÊÒ?g§?TxY^œ?gg–	ÎSUH?)rR   rc   Údefault_rngÚintegersrS   r   rH   r   )r®   Úrngr*   r(   r-   r  r  r.   r.   r/   Útest_pmf›  s   

zTestPoissonBinomial.test_pmfN)rÑ   rÒ   rÓ   r0  r.   r.   r.   r/   r,  š  r"  r,  c                   @   r  )ÚTestRandIntc                    sf   d‰ t ˆ ƒ}‡ fdd„t|ƒD ƒ}t dˆ |¡}|dk ¡ s J ‚dtj|tjd�ˆ   }t||ƒ d S )Nižþÿÿc                    s   g | ]}ˆ d  | ‘qS )l        r.   )ré   r  ©rx   r.   r/   Ú
<listcomp>¸  s    z,TestRandInt.test_gh19759.<locals>.<listcomp>iE  r   r8   )Údtype)	r  rë   r   rH   ÚallrR   ÚasarrayÚfloat64r   )r®   Ú	max_rangeÚall_b_1r  r  r.   r2  r/   Útest_gh19759´  s   zTestRandInt.test_gh19759N)rÑ   rÒ   rÓ   r:  r.   r.   r.   r/   r1  ³  r"  r1  )Gr×   Ú	itertoolsÚscipyr   Úscipy.statsr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   ÚnumpyrR   Únumpy.testingr   r   r   r   Úscipy.specialrâ   Úscipy.optimizer   Úscipy.integrater   rØ   rÙ   r0   r4   rB   rL   rU   rW   r`   rh   rn   rq   ÚproductÚintÚfloatrz   r{   rƒ   r…   r‰   r�   r�   r”   r›   r�   rŸ   r¤   r¦   rª   r«   rÚ   r  r  r  r   r+  r,  r1  r.   r.   r.   r/   Ú<module>   st    Dÿ
þÿ
		


	
^ Pÿÿ

-