o
    8Va                     @   s  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mZmZ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%m&Z& d dl'm(Z( d dl)m*Z*m+Z+ d dl,m-Z- ed	Z.d
d Z/dd Z0dd Z1dd Z2dd Z3dd Z4dS )    )symbolsSerfsqrtpiexpgammaIntervaloobetaEq	PiecewiseIntegralAbsargDummySum	factorial)NormalPEdensityGammaPoissonRayleighvariance	BernoulliBetaUniformcdf)CompoundDistributionCompoundPSpace)NormalDistribution)PoissonDistribution)BernoulliDistribution)raisesignore_warnings)MultivariateNormalDistributionxc                  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s3J t|dks;J t	|dktdd ksIJ t	|dk tdd t
tdd d  kscJ t|t| d	 ksoJ d S )
NX         
   (            )r   r   r(   simplifyr   r   r   r   r   r   r   r   )r)   Y r4   D/usr/lib/python3/dist-packages/sympy/stats/tests/test_compound_rv.pytest_normal_CompoundDist   s   N4r6   c                  C   s   t dddd\} }}td| |}td|}t|| || |d |  |   t| |  t| t|d   ks<J t| | | ksHJ d S )Nzk t yTZpositiverealGr   r*   )r   r   r   r   r2   r   r   )ktyr9   Dr4   r4   r5   test_poisson_CompoundDist   s
   
Nr>   c                  C   sR  t ddd} td| }t|jtdd tdd dksJ t|tt|d  kr5tdd ks8J  J t|tdd ksDJ t	|tdd ddksSJ tdtdd }td	|}t|jtdd tdd dksuJ t|d
ktdd ksJ t
ddd} td| }t|tdd ksJ tt|dt|ksJ d S )Nr)   r*   r+   r3      )r   r*   	   abg      ?r   )r   r   r   dictr   r   r   r   r   r   r   )r)   r3   rA   rB   r4   r4   r5   test_bernoulli_CompoundDist#   s   
(2
(
rD   c            
   	   C   s  t dd} tdd| }td}tttdd td  d dtttd  t	d kft
dtt|d dtd d    d	|d   |d
tf d	t
t	  df}t|t | sbJ t|tt
dt|d  d	  t|d d  d|d    d	t
t	  |d
tf |t tf}tt t|ddt|sJ W d    n1 sw   Y  tdd}td|}td|}tdtt| |t  tt| ||  t|t|  |d
tf |d
tf tt }t|t |ksJ tddd}tddd}td||}	tt
dt|d d  d  tt| t d  d|d   t|d d  d	  dt	 |  |t tf dt
t	  |t tf}t|	ddt|sbJ d S )NRr,   r)   r?   r:      r+   r1       r   TFZevaluater*   r3   ZNMr=   )r   r   r   r   r   r   r(   r   r   r   r   r   r
   r   r2   Zdummy_eqr&   UserWarningr   Zrewriter   r   r   )
rE   r)   Z_kZexprdZexprer3   rI   rK   rL   r=   r4   r4   r5   test_unevaluated_CompoundDist7   sj   
80
<





:*




 rN   c            	         s
  t ddd} t| d}t|}|jsJ |jtt tksJ |jtdd	 t
td  d td  tdd  d	tt  ksCJ tttdd
trOJ 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szJ |jddhksJ 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sJ tdddd\}}}td||}t|} t| }|jsJ |jtjksJ |j|dd	 || |d | |   t||  t|t|d   ksJ d S )Nr)   r+   r,   TrH   @   r1   r*   rF   r?   c                      s   t  S )N)r    r4   rL   r4   r5   <lambda>a   s    z,test_Compound_Distribution.<locals>.<lambda>r   r<   F)negativeZinteger   <   )r   Tzk t zr7   r9   )r   r"   r    Zis_Continuoussetr	   r
   Zpdfr(   r2   r   r   r   r   
isinstancer'   r%   NotImplementedErrorr   r$   Z	is_Finiter   r   r   r   r   r#   Zis_DiscreteZ	Naturals0r   )	r)   rK   CBr<   r:   r;   zr9   r4   rP   r5   test_Compound_DistributionV   s>   

H
, 

,r[   c                     s  t ddd} t ddd}t|jtrJ tdd}td}tddd	}td
|}td|}td|}t|tr9J t|tr@J t|trGJ tddgddgddgg tt	 fdd t d| d}t|jtskJ |jj
tt| dksxJ |jjjtt tksJ d S )Nr)   r+   r,   r3   r?      r*   g?r   rK   r=   rY   c                      s
   t d S )NrL   )r!   r4   rP   r4   r5   rQ      s   
 z&test_compound_pspace.<locals>.<lambda>)r   rV   Zpspacer!   r"   r#   r$   r'   r%   
ValueErrorZdistributionr    domainrU   r	   r
   )r)   r3   rK   r=   rY   Zpspace1Zpspace2Zpspace3r4   rP   r5   test_compound_pspacev   s$   



r_   N)5Zsympyr   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   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'   r(   r6   r>   rD   rN   r[   r_   r4   r4   r4   r5   <module>   s   P 8	 