U
    ZÊ¹jw  ã                   @   s¸  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 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) d dl*m+Z+m,Z, d dl-m.Z. d dl/m0Z0 d dl1m2Z2 d dl3m4Z4m5Z5 d dl6m7Z7 d dl8m9Z9 dd„ Z:dd„ Z;e;e9e9ƒ�s`t<‚e;e9dƒ�spt<‚e;e9e9d ƒ�r„t<‚dd„ Z=dd„ Z>d d!„ Z?d"d#„ Z@d$d%„ ZAd&d'„ ZBd(S ))é    )ÚSum)ÚooÚpi)ÚEq)ÚS)Úsymbols)Ú	factorial)Úexp)Úsqrt)Ú	Piecewise)Úbeta)Úerf)Úgamma)ÚIntegral)ÚInterval)ÚNormalÚPÚEÚdensityÚGammaÚPoissonÚRayleighÚvarianceÚ	BernoulliÚBetaÚUniformÚcdf)ÚCompoundDistributionÚCompoundPSpace)ÚNormalDistribution)ÚPoissonDistribution)ÚBernoulliDistribution)ÚraisesÚignore_warnings)ÚMultivariateNormalDistribution)Úxc                 C   s   d  t| ƒ ¡ ¡S )NÚ )ÚjoinÚstrÚsplit)Ús© r+   úa/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/stats/tests/test_compound_rv.pyÚ<lambda>   ó    r-   c                  G   s   t ttt| ƒƒƒdkS )Né   )ÚlenÚsetÚmapÚflat)Úar+   r+   r,   r-      r.   r%   r/   c                  C   sâ   t dddƒ} t d| dƒ}t|ƒtƒ ¡ tdƒttd  d td  tdƒd  ƒ dttƒ  ksft‚t	|ƒdksvt‚t
|dkƒtdƒd ks’t‚t
|dkƒ ¡ tdƒd ttdƒd ƒd  ksÆt‚t|ƒt| ƒd	 ksÞt‚d S )
NÚXr/   é   é   é
   é(   é   é   é   )r   r   r%   Úsimplifyr
   r	   r   r   ÚAssertionErrorr   r   r   r   )r5   ÚYr+   r+   r,   Útest_normal_CompoundDist#   s    N4r@   c                  C   s”   t dddd�\} }}td| |ƒ}td|ƒ}t|ƒ|ƒ ¡ || |d |  |   t| | ƒ t| ƒt|d ƒ  ksxt‚t|ƒ ¡ | | ks�t‚d S )Nzk t yT©ZpositiveÚrealÚGr   r/   )r   r   r   r   r=   r   r>   r   )ÚkÚtÚyrC   ÚDr+   r+   r,   Útest_poisson_CompoundDist/   s
    
NrH   c                  C   sV  t dddƒ} td| ƒ}t|ƒjtdƒd tdƒd dœks>t‚t|ƒtt|dƒƒ  krhtdƒd ksnn t‚t	|ƒtdƒd ks†t‚t
|ƒtdƒd ddœks¤t‚tdtdƒd ƒ}td	|ƒ}t|ƒjtdƒd tdƒd dœksèt‚t|d
kƒtdƒd k�st‚tdddƒ} td| ƒ}t|ƒtdƒd k�s6t‚tt|dƒƒt|ƒk�sRt‚d S )Nr5   r/   r6   r?   é   )r   r/   é	   r4   Úbg      à?r   )r   r   r   Údictr   r>   r   r   r   r   r   r   )r5   r?   r4   rK   r+   r+   r,   Útest_bernoulli_CompoundDist8   s    
(0
(
rM   c            
   	   C   s:  t ddƒ} tdd| ƒ}d}tt|ƒtƒ|ƒs0t‚d}ttƒ�" tt|dd� 	t
¡|ƒsZt‚W 5 Q R X tdd	ƒ}td
|ƒ}td|ƒ}tt| ƒ|t  ttdƒt| ƒ ||  t|ƒt|ƒ  |dtfƒ ttƒ |dtfƒ}t|ƒtƒ|ksòt‚tdd	dƒ}tdddƒ}td||ƒ}	d}tt|	dd�tƒ|ƒ�s6t‚d S )NÚRr7   r5   rI   zá
        Piecewise(((-sqrt(pi)*sinh(x/4 - 3/4) + sqrt(pi)*cosh(x/4 - 3/4))/(
        8*sqrt(pi)), Abs(arg(x - 3)) <= pi/4), (Integral(sqrt(2)*exp(-(x - 3)
        **2/(2*R**2))*exp(-R**2/32)/(32*sqrt(pi)), (R, 0, oo)), True))zw
        Integral(X*Integral(sqrt(2)*exp(-(X-3)**2/(2*R**2))*exp(-R**2/32)/(32*
        sqrt(pi)),(R,0,oo)),(X,-oo,oo))F©Úevaluater/   r?   ÚZéÿÿÿÿr   ÚNr6   ÚMrG   z”
        Integral(sqrt(2)*exp(-(N-1)**2/8)*Integral(exp(-(x-M)**2/(2*N**2))*exp
        (-(M-3)**2/32)/(8*pi*N),(M,-oo,oo))/(4*sqrt(pi)),(N,-oo,oo)))r   r   Ústreqr   r%   r>   r#   ÚUserWarningr   Zrewriter   r   r   r	   r   r   )
rN   r5   ZansZexprer?   rQ   ZexprdrS   rT   rG   r+   r+   r,   Útest_unevaluated_CompoundDistL   s.    

&


<ÿÿÿrW   c            	         s  t dddƒ} t| dƒ}t|ƒ}|js(t‚|jtt tƒks>t‚|jt	dd� 
¡ tt	d  d t	d  tdƒd  ƒd	ttƒ  ks†t‚tttdd
ƒƒtƒržt‚tddgddgddggƒ‰ tt‡ fdd„ƒ tdddƒ} t| ddƒ}t|ƒ}|jsôt‚|jddhk�st‚tdddd�}|j|dd�ttdƒdtddƒ  t|dƒftdƒdtddƒ  t|dƒfdƒk�snt‚tdddd�\}}}td||ƒ}t|ƒ} t| ƒ}|j�sªt‚|jtjk�s¼t‚|j|dd� 
¡ || |d | |   t|| ƒ t|ƒt|d ƒ  k�st‚d S )Nr5   r6   r7   TrO   é@   r<   r/   é   rI   c                      s   t ˆ ƒS )N)r   r+   ©rT   r+   r,   r-   x   r.   z,test_Compound_Distribution.<locals>.<lambda>r   rF   F)ÚnegativeÚintegeré   é<   )r   Tzk t zrA   rC   )r   r   r   Zis_Continuousr>   r1   r   r   Zpdfr%   r=   r	   r   r
   r   Ú
isinstancer$   r"   ÚNotImplementedErrorr   r!   Z	is_Finiter   r   r   r   r   r    Zis_DiscreteZ	Naturals0r   )	r5   rS   ÚCÚBrF   rD   rE   ÚzrC   r+   rZ   r,   Útest_Compound_Distributionm   s@    

Hÿ
, ÿ,ÿÿrd   c                     s  t dddƒ} t dddƒ}t|jtƒr(t‚tddƒ}tdƒ}tddd	ƒ}td
|ƒ}td|ƒ}td|ƒ}t|tƒrrt‚t|tƒr€t‚t|tƒrŽt‚tddgddgddggƒ‰ t	t
‡ fdd„ƒ t d| dƒ}t|jtƒsÖt‚|jjtt| dƒƒksðt‚|jjjtt tƒk�st‚d S )Nr5   r6   r7   r?   rI   é   r/   gš™™™™™É?r   rS   rG   rb   c                      s
   t dˆ ƒS )NrT   )r   r+   rZ   r+   r,   r-   ›   r.   z&test_compound_pspace.<locals>.<lambda>)r   r_   Zpspacer   r>   r   r    r!   r$   r"   Ú
ValueErrorÚdistributionr   Údomainr1   r   r   )r5   r?   rS   rG   rb   Zpspace1Zpspace2Zpspace3r+   rZ   r,   Útest_compound_pspace�   s$    



ri   N)CZsympy.concrete.summationsr   Zsympy.core.numbersr   r   Zsympy.core.relationalr   Zsympy.core.singletonr   Zsympy.core.symbolr   Z(sympy.functions.combinatorial.factorialsr   Z&sympy.functions.elementary.exponentialr	   Z(sympy.functions.elementary.miscellaneousr
   Z$sympy.functions.elementary.piecewiser   Z&sympy.functions.special.beta_functionsr   Z'sympy.functions.special.error_functionsr   Z'sympy.functions.special.gamma_functionsr   Zsympy.integrals.integralsr   Zsympy.sets.setsr   Zsympy.statsr   r   r   r   r   r   r   r   r   r   r   r   Zsympy.stats.compound_rvr   r   Zsympy.stats.crv_typesr   Zsympy.stats.drv_typesr    Zsympy.stats.frv_typesr!   Zsympy.testing.pytestr"   r#   Zsympy.stats.joint_rv_typesr$   Z	sympy.abcr%   r3   rU   r>   r@   rH   rM   rW   rd   ri   r+   r+   r+   r,   Ú<module>   s@   8	! 