U
    ZÊ¹j´)  ã                   @   s(  d dl m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mZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dl m!Z! d dl"m#Z#m$Z$ d dlm%Z% d dl&m'Z' d dl(m)Z) d dl*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 d dl6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZB d dlCmDZDmEZEmFZF d dlGmHZH e
dƒZIdd„ ZJdd„ ZKdd„ ZLeDdd „ ƒZMd!d"„ ZNd#d$„ ZOeEd%d&„ ƒZPd'd(„ ZQd)d*„ ZRd+d,„ ZSd-d.„ ZTd/d0„ ZUd1d2„ ZVd3d4„ ZWd5d6„ ZXd7d8„ ZYd9d:„ ZZd;d<„ Z[d=S )>é    )ÚSum)ÚIÚRationalÚooÚpi©ÚS)ÚSymbol)ÚimÚre)Úlog)Úfloor)Úsqrt)Ú	Piecewise)Úbesseli)Úbeta)Úzeta)Ú	FiniteSet)Úsimplify)Úlambdify)ÚEqÚNe)Úexp)ÚOr)ÚRange)ÚPÚEÚvarianceÚdensityÚcharacteristic_functionÚwhereÚmoment_generating_functionÚskewnessÚcdfÚkurtosisÚ
coskewness)ÚPoissonDistributionÚGeometricDistributionÚFlorySchulzÚPoissonÚ	GeometricÚHermiteÚLogarithmicÚNegativeBinomialÚSkellamÚ	YuleSimonÚZetaÚ
DiscreteRV)ÚslowÚnocache_failÚraises)ÚExpectationÚxc                  C   sˆ   d} t | ƒ}t| d¡ ¡ d ƒdk s*t‚t| d¡ ¡ d ƒdk sHt‚| tt¡| ks\t‚| td t¡| tt¡d  | ks„t‚d S )Né   é
   é   çü©ñÒMbP?gÍÌÌÌÌÌ$@é   )r&   Úabsr#   ÚevalfÚAssertionErrorÚexpectationr6   )ÚlÚp© rB   úa/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/stats/tests/test_discrete_rv.pyÚtest_PoissonDistribution!   s    rD   c                  C   s¢   d} t d| ƒ}t|ƒ| kst‚td| ƒd|  ks6t‚t|ƒ| ksFt‚t|ƒt| ƒksZt‚tt|dd�tƒspt‚ttd| dd�tƒsŠt‚|j 	d¡dksžt‚d S )Nr7   r6   r;   F©Úevaluater9   )
r)   r   r>   r   r   r&   Ú
isinstancer5   ÚpspaceZcompute_expectation)r@   r6   rB   rB   rC   Útest_Poisson*   s    
rI   c                  C   sŽ   t dƒ} t dƒ}td| ƒ}t|ƒd|  |  ks2t‚t|ƒdd|   | d    ¡ tdƒks^t‚t|ƒ|ƒ| d | d|  |d   ksŠt‚d S )NÚaÚzr6   r;   r9   r   )r	   r(   r   r>   r   r   r   r   )rJ   rK   r6   rB   rB   rC   Útest_FlorySchulz7   s    
,rL   c                  C   s2  t jd } t| ƒ}| tt¡d|  ks*t‚| td t¡| tt¡d  d|  | d  ks^t‚t| d¡ ¡ d ƒdk s|t‚t| d¡ ¡ d ƒdk sšt‚t	dt dƒd d	�}t|ƒt d
ƒd ƒt
|t d
ƒd kƒksÚt‚t	dtddƒƒ}t	dtddƒƒ}t||| |d|  ƒ ¡ tdƒtddƒ k�s.t‚d S )Né   r9   r;   i N  r:   g33333ˆÓ@ÚGé   )rA   é   ÚXÚYr7   r8   éæ   éQ   i~  )r   ÚOner'   r?   r6   r>   r<   r#   r=   r*   r   r   r%   r   r   )rA   ÚdrN   rQ   rR   rB   rB   rC   Útest_GeometricDistribution@   s    
4,rW   c                     s˜  t ddd�‰ t ddd�‰tt‡ ‡fdd„ƒ t ddd�‰ t ddd�‰tt‡ ‡fdd„ƒ t ddd�‰ t d	ƒ} td
ˆ ˆƒ}t|ƒ| ƒtˆ t| ƒd  ˆtd|  ƒd   ƒks°t‚t|ƒ| ƒtˆ tt|  ƒd  ˆtdt |  ƒd   ƒksðt‚t	|ƒˆ dˆ  k�s
t‚td
ddd�}t
|ƒdƒdtdƒ d k�s:t‚t	|ƒdk�sLt‚t|ƒdk�s^t‚t|ƒtddƒk�svt‚t|ƒdtdƒ d k�s”t‚d S )NÚa1T)ÚpositiveÚa2)Únegativec                      s   t dˆ ˆƒS ©NÚH©r+   rB   ©rX   rZ   rB   rC   Ú<lambda>S   ó    ztest_Hermite.<locals>.<lambda>c                      s   t dˆ ˆƒS r\   r^   rB   r_   rB   rC   r`   W   ra   r6   r]   r9   r;   rM   rO   r_   é!   i÷ÿÿÿé   é   iÐ  é“   é%   i¹  )r	   r4   Ú
ValueErrorr+   r!   r   r>   r   r   r   r   r   r$   r   r"   r   )r6   r]   rB   r_   rC   Útest_HermiteP   s,    ÿÿ"rh   c                  C   s¨   t j} td| ƒ}t|ƒ|  d|  td|  ƒ  ks6t‚t|ƒdtdƒd  dtdƒ  ks^t‚td|d  d|  d ƒddtdƒ  ksŽt‚tt|dd	�tƒs¤t‚d S )
Nr6   r9   éÿÿÿÿr;   r7   rO   rP   FrE   )	r   ÚHalfr,   r   r   r>   r   rG   r5   )rA   r6   rB   rB   rC   Útest_Logarithmici   s    
&(0rk   c                  C   s–   d} t jd }td| |ƒ}t|ƒ||  d|  ks6t‚t|ƒ||  d| d  ksVt‚t|d d|  d ƒtddƒks|t‚tt|dd	�tƒs’t‚d S )
NrM   r7   r6   r9   r;   i÷#  rO   FrE   )	r   rU   r-   r   r>   r   r   rG   r5   )ÚrrA   r6   rB   rB   rC   Útest_negative_binomialr   s    
 &rm   c                  C   sh  t dƒ} t dƒ}t dƒ}td| |ƒ}t|ƒ|ƒ| | |d  t|  | ƒ t|dt| | ƒ ƒ ksht‚t|ƒ ¡ | | t| | ƒ |t| | ƒ   || t| | ƒ |t| | ƒ    ksÀt‚t	|ƒ ¡ | | ksØt‚t
|ƒ| | ksìt‚t|ƒ|ƒt| tt| ƒ |  | |tt | ƒ  ƒk�s,t‚t|ƒ|ƒt| t|ƒ |  | |t| ƒ  ƒk�sdt‚d S )NÚmu1Úmu2rK   r6   r;   )r	   r.   r   r   r   r   r>   r"   Úexpandr   r   r   r   r!   )rn   ro   rK   rQ   rB   rB   rC   Útest_skellam~   s,    ÿÿ

ÿ"ÿ
(ÿ ÿrq   c                  C   sº   ddl m}  | dƒ}td|ƒ}tt|ƒƒ||d  ks:t‚tt|ƒƒ|d |d d |d   ksft‚tt|dd�tƒs|t‚t	|ƒ|ƒt
tt|ƒd	ƒ t|ƒ d |dkfd
ƒks¶t‚d S )Nr   r   r7   r6   r9   r;   FrE   rO   )r   T)Úsympy.core.singletonr   r/   r   r   r>   r   rG   r5   r#   r   r   r   )r   Úrhor6   rB   rB   rC   Útest_yule_simon�   s    
,rt   c                  C   sv   t dƒ} td| ƒ}t|ƒt| d ƒt| ƒ ks2t‚tt|ƒƒt| ƒt| d ƒ t| d ƒd  t| ƒd  ksrt‚d S )NrM   r6   r9   r;   )r   r0   r   r   r>   r   r   )Úsr6   rB   rB   rC   Ú	test_zeta›   s    
 
" 
ÿrv   c                  C   sj  t dtddƒƒ} tddƒ}t dtƒ}tt| dƒƒtdd	ƒks@t‚t| dk ƒtd
dƒksZt‚t| dkƒtdd	ƒkstt‚t| dkƒtddƒksŽt‚t| dkƒtdd	ƒks¨t‚tt| dƒƒtdd	ƒksÄt‚tt|dƒƒdtdƒ d ksæt‚t|dk ƒdtdƒ k�st‚t|dkƒ 	dtddƒdtdƒ d   tdƒ d ¡�sBt‚t|dkƒ 	dtddƒdtdƒ d   tdƒ d ¡�s€t‚t|dkƒdtdƒ d k�s¢t‚tt|dƒƒ 	dtdƒ dtddƒdtdƒ d   tdƒ d  ¡�sît‚t| t
jk ƒt
jk�st‚t| t
jkƒt
jk�s"t‚t|dk ƒtdt  k�s@t‚tt|dƒƒtt d d  k�sft‚d S )NrQ   r9   rM   rR   rO   Úer7   é   é}   é	   é   é@   é=   ém   é    éüÿÿÿrc   i¹ÿÿÿiÙÿÿÿéG   r;   )r*   r   r)   r6   r   r   r>   r   r   Úequalsr   ÚInfinityrU   ZZero)rQ   rR   rN   rB   rB   rC   Útest_discrete_probability£   s*    

">>"4ÿ
r„   c                     sì   t dƒd } tdddd�‰ | d|  ˆ d   }tˆ |t jdd�}t|ƒttdt dƒd ƒƒ  krjdkspn t‚t|dkƒt dƒd	 ksŒt‚|jj	j
t jks t‚tt‡ fd
d„ƒ tˆ dˆ  t jƒ}t|dk ƒdksØt‚t|ƒtksèt‚d S )Nr9   r;   r6   T)ÚintegerrY   )ÚsetÚcheckrN   r7   é   c                      s   t ˆ ˆ ttdƒŽ dd�S )NrO   T)r‡   )r1   r   ÚrangerB   ©r6   rB   rC   r`   Â   ra   z!test_DiscreteRV.<locals>.<lambda>)r   r	   r1   ZNaturalsr   r*   r>   r   rH   Údomainr†   r4   rg   r   )rA   ÚpdfÚDrQ   rB   rŠ   rC   Útest_DiscreteRVº   s    0rŽ   c                     s¤   dd l ‰ ‡ fdd„} | tdtddƒƒdˆ jƒ | tdtddƒƒdˆ jƒ | td	dtdd
ƒƒdˆ jƒ | tddƒdˆ jƒ | tddƒdˆ jƒ | tddƒdˆ jƒ d S )Nr   c                    sº   t | ƒ}tdƒ}tdƒ}t|gt| ƒ|ƒdƒ}t||g||ƒtt| | ƒ dƒ‰ ‡ ‡‡‡fdd„}dD ]L}||ƒ}	||ƒ}
tt|	ƒt|
ƒ ƒdk s˜t‚tt	|	ƒt	|
ƒ ƒdk sht‚qhd S )NÚtr6   Úmpmathc                    s   ˆj ‡‡ fdd„ˆˆgdd�S )Nc                    s
   ˆ | ˆƒS )NrB   rŠ   )Úfr�   rB   rC   r`   ×   ra   z^test_precomputed_characteristic_functions.<locals>.test_cf.<locals>.<lambda>.<locals>.<lambda>r8   )Z	maxdegree)Znsum©r�   )r‘   r�   Úsupport_lower_limitÚsupport_upper_limitr’   rC   r`   ×   s
    ÿÿzLtest_precomputed_characteristic_functions.<locals>.test_cf.<locals>.<lambda>)r;   rM   rˆ   é   gê-�™—q=)
r   r   r   r   r   r   r<   r   r>   r
   )Údistr“   r”   rŒ   r�   r6   Zcf1Zcf2Z
test_pointZn1Zn2©r�   )r‘   r“   r”   rC   Útest_cfÍ   s    $z:test_precomputed_characteristic_functions.<locals>.test_cfÚgr9   r7   r@   rM   ÚnrP   rA   ÚyrK   )	r�   r*   r   Úinfr,   r-   r)   r/   r0   )r˜   rB   r—   rC   Ú)test_precomputed_characteristic_functionsÊ   s    r�   c                  C   s¢  t dƒ} ttdt jƒƒ| ƒ}| | ¡ | d¡dks6t‚ttdt jƒƒ| ƒ}| | ¡ | d¡dtdƒ kslt‚tt	ddt
dd	ƒƒƒ| ƒ}| | ¡ | d¡t
ddƒks¦t‚ttd
dƒƒ| ƒ}| | ¡ | d¡dksÒt‚ttdddƒƒ| ƒ}| | ¡ | d¡tdƒ tdƒ tdtdƒ tdƒ ƒ k�s(t‚ttdd	ƒƒ| ƒ}t| | ¡ | d¡ƒt
d	dƒk�s`t‚ttddƒƒ| ƒ}| | ¡ | d¡td dtdƒ  k�sžt‚d S )Nr�   r™   r   r;   r@   r9   rš   rM   r7   rA   ru   éþÿÿÿr›   rK   rO   éZ   )r   r!   r*   rj   ÚdiffÚsubsr>   r,   r   r-   r   r)   r.   r   r/   r   r0   r   r   )r�   Zgeometric_mgfZlogarithmic_mgfZnegative_binomial_mgfZpoisson_mgfZskellam_mgfZyule_simon_mgfZzeta_mgfrB   rB   rC   Ú test_moment_generating_functionsê   s0    "ÿÿ 
 ÿ(ÿ
&r¢   c                  C   sx   t dtjƒ} tt| dk | dkƒƒtddƒks0t‚tt| dk| dkƒƒt| dkƒksVt‚tt| dk| dk ƒƒdkstt‚d S )NrQ   r7   rO   rc   rx   r;   r9   )r*   r   rj   r   r   r   r>   )rQ   rB   rB   rC   Útest_Or  s    $&r£   c                  C   sª   t dtddƒƒ} tddƒ}t| d dkƒjtdtjdƒks>t‚t| d dkƒjtdtjdƒksbt‚t|d dk ƒjtd	ddƒks„t‚t|d dkƒjtd	ddƒks¦t‚d S )
NrQ   r9   rM   rR   rO   r;   r7   rz   r   )	r*   r   r)   r    r†   r   r   rƒ   r>   ©rQ   rR   rB   rB   rC   Ú
test_where  s    
$$"r¥   c                  C   sð   t dtddƒƒ} tddƒ}t| dk| dkƒdks4t‚t| dk| dkƒtddƒksTt‚t|dk|dk ƒdksnt‚tt|dƒ|dkƒdtdƒ d ks–t‚tt|dƒt|dƒƒdks´t‚t| dk t| dƒƒdksÐt‚t| dkt| dƒƒdksìt‚d S )	NrQ   r;   r7   rR   r9   r   rz   éýÿÿÿ)r*   r   r)   r   r>   r   r   r¤   rB   rB   rC   Útest_conditional  s    
 (r§   c                  C   s„   t dtjƒ} t dtddƒƒ}tt| | dk ƒ t¡ƒdks>t‚tt| | dkƒ t¡ƒdks`t‚tt	| | dƒƒtddƒks€t‚d S )NÚX1ÚX2r9   r7   z@Sum(Piecewise((1/(4*2**n), n >= -1), (0, True)), (n, -oo, -1))/3zdSum(Piecewise((2**(X2 - n - 2)*(3/2)**(1 - X2)/6, X2 - n <= 2), (0, True)), (X2, 1, oo), (n, 1, oo))é   )
r*   r   rj   r   Ústrr   Zrewriter   r>   r   )r¨   r©   rB   rB   rC   Útest_product_spaces!  s    ÿÿr¬   N)\Zsympy.concrete.summationsr   Zsympy.core.numbersr   r   r   r   rr   r   Zsympy.core.symbolr	   Z$sympy.functions.elementary.complexesr
   r   Z&sympy.functions.elementary.exponentialr   Z#sympy.functions.elementary.integersr   Z(sympy.functions.elementary.miscellaneousr   Z$sympy.functions.elementary.piecewiser   Zsympy.functions.special.besselr   Z&sympy.functions.special.beta_functionsr   Z&sympy.functions.special.zeta_functionsr   Zsympy.sets.setsr   Zsympy.simplify.simplifyr   Zsympy.utilities.lambdifyr   Zsympy.core.relationalr   r   r   Zsympy.logic.boolalgr   Zsympy.sets.fancysetsr   Zsympy.statsr   r   r   r   r   r    r!   r"   r#   r$   r%   Zsympy.stats.drv_typesr&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   Zsympy.testing.pytestr2   r3   r4   Z sympy.stats.symbolic_probabilityr5   r6   rD   rI   rL   rW   rh   rk   rm   rq   rt   rv   r„   rŽ   r�   r¢   r£   r¥   r§   r¬   rB   rB   rB   rC   Ú<module>   sV   48		
	
 	