U
    	-eH                     @   sh  d dl mZ d dlmZ d dlmZ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 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)m*Z* d dlm+Z+ d dl,m-Z- d dl.m/Z/m0Z0 d dl1m2Z2 d dl3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: d dl;m<Z<m=Z=m>Z>m?Z?m@Z@mAZBmCZCmDZEmFZFmGZGmHZHmIZImJZJ d dlKmLZLmMZMmNZNmOZO d dlPmQZQ d dlRmSZSmTZT dd ZUdd  ZVd!d" ZWd#d$ ZXd%d& ZYd'd( ZZd)d* Z[d+d, Z\d-d. Z]eOd/d0 Z^d1d2 Z_d3d4 Z`eMd5d6 Zad7d8 Zbd9d: Zcd;d< Zdd=d> Zed?d@ ZfeMdAdB ZgdCS )D    )Product)Sum)Rationaloopi)Eq)S)symbols)RisingFactorial	factorial)
polar_lift)exp)sqrt)	Piecewise)besselk)gamma)eye)Determinant)Range)Interval
ProductSet)simplify)IndexedIndexedBase)comp)	integrate)MatrixMatrixSymbol)MatrixElement)densitymedianmarginal_distributionNormalLaplaceEsample)JointRVMultivariateNormalDistributionJointDistributionHandmadeMultivariateTNormalGamma$GeneralizedMultivariateLogGammaOmegaMultivariateBetaGeneralizedMultivariateLogGammaMultivariateEwensMultinomialNegativeMultinomialMultivariateNormalMultivariateLaplace)raisesXFAILskipslow)import_module)xyc                     s  t dddgddgddgg tdddgddgddgg}  | ksDtt ddddt  ksbt jjjtt	j
t	j
ks~ttt fdd t ddddgdddgdddgdddgg}t d	tddgtddgddgg}t ttt|ttkstt|ddddddt  ks"ttt fd
d tt tttt tftt tf dkshtt dddgtdgdtgg}t|ddtdt t dt t   dt ttt   kstttdd  tdddd}td|d}td||}t d||}t|t||ks"ttt fdd d}td||}td|d}td|d}td||}t|}	|	||td|tdddg|tdddgi }
|	ddd|td|tdddgi }|
tddttd   kst|tddttd   ksttdddd}td||}td|d}td|d}td||}t||}ttt	dd |j|j  |d  | |  tdt | t |  dd}||kstd S )NA      r   c                      s    d S )Nr<    r=   mr=   `/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/sympy/stats/tests/test_joint_rv.py<lambda>,       ztest_Normal.<locals>.<lambda>B   Cc                      s   t  S N)r!   r=   r>   r=   r@   rA   1   rB         ?N   c                   S   s   t dddgddgddggS )NMr;   r<   )r"   r=   r=   r=   r@   rA   6   rB   nT)integerpositivemusigmaXc                      s   t  S rF   )r    r=   r>   r=   r@   rA   =   rB   Sgobsg      ?rK   )!r"   r1   AssertionErrorr   r   pspacedistributionsetr   r   Realsr3   
ValueErrorr   r8   r9   r!   r   r   evalfr   r   r	   r   r'   NotImplementedErrorsubsr   Zdoitr   r   Tr   )r:   rL   prH   rO   rP   rQ   rR   rS   Z	density_XZeval_aZeval_bZdensity_X_at_obsZexpected_densityr=   r>   r@   test_Normal&   sd    *$ $4F   
,"", r_   c                  C   s   t dddgddgddggd} t| ddddt  ks<t| jjjttj	tj	ksXtt
t| tttt tftt tf dkstttdd  t d	ddgtdgdtggd}t|ddddt ttt   kstd S )
Nr]   r   r;   r<      rG   c                   S   s   t dddgddgddggdS )Nr]   r;   r<   rK   )r)   r=   r=   r=   r@   rA   i   rB   z(test_MultivariateTDist.<locals>.<lambda>t2)r)   r   r   rT   rU   rV   rW   r   r   rX   r   r8   r9   r   rZ   r3   rY   r   )t1ra   r=   r=   r@   test_MultivariateTDistc   s    
rc   c                  C   s  t tdd  tdddgddgddgg} tdddgddgddgg}t| ddtdtdtd	 t ksrt	td
ddgt
dgdtgg}t|ddtdt tdtddt  dt
  t  ttt
t   kst	| jjjttjtjkst	| jj|jjkst	d S )Nc                   S   s   t dddgddgddggS )Nr]   r;   r<   )r#   r=   r=   r=   r@   rA   o   rB   z+test_multivariate_laplace.<locals>.<lambda>Lr;   r   L2r<   rD   '   L1rI   )r3   rY   r#   r2   r   r   r   r   r   rT   r8   r9   rU   rV   rW   r   r   rX   )rd   re   rg   r=   r=   r@   test_multivariate_laplacen   s    ,<rh   c                  C   s  t ddddd} t| dddtd tt ks6t| jjjt	t
jtdtksVtttd	d
  t| dddtd ttdd dtt ttdd  kstt| tdttddd kstt| ddgttd tt d  d kstd S )NGr;   r<   rD   rI       r   c                   S   s   t dddddS )Nri   r;   r<   rD   rK   )r*   r=   r=   r=   r@   rA   ~   rB   z"test_NormalGamma.<locals>.<lambda>
         rK      )r*   r   r   r   r   rT   rU   rV   rW   r   r   rX   r   r   r3   rY   r!   r   r   r9   r8   )ngr=   r=   r@   test_NormalGammaz   s    & 2$rq   c               
      s  t j} td| | | g| d| | g| | d| g| | | dggdddddgddddg   tddd\}}}}tddd	}td
 }td| }d}tt||||||kstd}	tt||||||	kstd}
tt	||d ||
ksttd| | ggtd| | | g| dd| g| | d| g| | | dgg	td| | | g| dd| g| | d| g| | | dgg
tdddddddgdddgtd| | | | g| d| | | g| | d| | g| | | d| g| | | | dggdddddgtdggdg t
t fdd t
t 	fdd t
t 
fdd t
t fdd t
tfdd t
t fdd t
t fdd t
tfdd t
tfdd t
t fdd d S ) Nr;   rI   r<   rD   zy_1:5T)realdrN   ri   Gdzd**4*Sum(4*24**(-n - 4)*(1 - d)**n*exp((n + 4)*(y_1 + 2*y_2 + 3*y_3 + 4*y_4) - exp(y_1) - exp(2*y_2)/2 - exp(3*y_3)/3 - exp(4*y_4)/4)/(gamma(n + 1)*gamma(n + 4)**3), (n, 0, oo))z5*2**(2/3)*5**(1/3)*Sum(4*24**(-n - 4)*(-2**(2/3)*5**(1/3)/4 + 1)**n*exp((n + 4)*(y_1 + 2*y_2 + 3*y_3 + 4*y_4) - exp(y_1) - exp(2*y_2)/2 - exp(3*y_3)/3 - exp(4*y_4)/4)/(gamma(n + 1)*gamma(n + 4)**3), (n, 0, oo))/64ay  5*2**(2/3)*5**(1/3)*exp(4*y_1)*exp(-exp(y_1))*Integral(exp(-exp(4*G[3])/4)*exp(16*G[3])*Integral(exp(-exp(3*G[2])/3)*exp(12*G[2])*Integral(exp(-exp(2*G[1])/2)*exp(8*G[1])*Sum((-1/4)**n*(-4 + 2**(2/3)*5**(1/3))**n*exp(n*y_1)*exp(2*n*G[1])*exp(3*n*G[2])*exp(4*n*G[3])/(24**n*gamma(n + 1)*gamma(n + 4)**3), (n, 0, oo)), (G[1], -oo, oo)), (G[2], -oo, oo)), (G[3], -oo, oo))/5308416r      v_fFrN   rr   rn   c                      s   t d S Nri   GMVLGOr=   )lrO   omega_f1vr=   r@   rA      rB   zBtest_GeneralizedMultivariateLogGammaDistribution.<locals>.<lambda>c                      s   t d S ry   rz   r=   )r|   rO   omega_f2r~   r=   r@   rA      rB   c                      s   t d S ry   rz   r=   )r|   rO   omega_f3r~   r=   r@   rA      rB   c                      s   t d S ry   rz   r=   )r|   rO   omegarw   r=   r@   rA      rB   c                      s   t d S ry   rz   r=   )l_frO   r   r~   r=   r@   rA      rB   c                      s   t d S ry   rz   r=   )r|   m_fr   r~   r=   r@   rA      rB   c                      s   t d S ry   rz   r=   )r|   rO   omega_f4r~   r=   r@   rA      rB   c                      s   t d S ry   rz   r=   )l_f1rO   r   r~   r=   r@   rA      rB   c                      s   t d S ry   rz   r=   )l_f5mu_f5omega_f5r~   r=   r@   rA      rB   c                      s   t dtdd S )Nri   rD   r<   )GMVLGr   r=   )r|   rO   r~   r=   r@   rA      rB   )r   Halfr   r	   r{   r   strr   rT   r!   r3   rY   )hZy_1Zy_2Zy_3Zy_4deltari   ru   ZdenddenZmargr=   )r|   r   r   r   r   rO   r   r   r}   r   r   r   r   r~   rw   r@   0test_GeneralizedMultivariateLogGammaDistribution   sd    


 






r   c                     s0  t ddd\ t dddd\td g} td }t| dd	td	d  t   t t  ksztt|d
dtd d  t   t  t  kstttfdd tt fdd ttdd  ttfdd | j	j
jttd
dtd
dks,td S )Nza1, a2Trt   Frx   rC   rE   r;   r<   r   rD   c                      s   t d gS )Nb1r,   r=   )a1_fa2r=   r@   rA      rB   z'test_MultivariateBeta.<locals>.<lambda>c                      s   t d gS Nb2r   r=   )a1a2_fr=   r@   rA      rB   c                   S   s   t dddgS )Nb3r   r   r=   r=   r=   r@   rA      rB   c                      s   t d gS )NZb4r   r=   )r   r   r=   r@   rA      rB   )r	   r,   r   r   r   rT   r!   r3   rY   rU   rV   rW   r   r   )mbZmb_cr=   )r   r   r   r   r@   test_MultivariateBeta   s    &
&
r   c            	   
      sn  t ddd\} }}t ddd t dddd}tdd	|}t||d
 |d |d tdd|d    d	|d    ||d
   ||d   ||d   ||d  |d  t|d
  t|d  t|d   t|d
 d|d   d	|d   d	fdkstt||d |d tdd|d    ||d   |d |d  t|d   td|d  d d	fdkstttt	 fdd |j
jjttd
ddtd
ddtd
ddksttd| |}td}t d\}}tt| t|||  |d ||    t||  |d
| d f t||  t| t|d ||  |d
| d ffd}t|||sjtd S )Nz	n theta iTrt   Zt_fnegativeza_1:4)rN   rM   r$   rD   r   r;   r<   rv   r   Tc                      s   t dd S )Ne1rn   )r.   r=   Ztheta_fr=   r@   rA      rB   z(test_MultivariateEwens.<locals>.<lambda>rI   azj, k)r	   r.   r   r   r   r   rT   r!   r3   rY   rU   rV   rW   r   r   r   r   r
   r   Zdummy_eq)	rL   thetair   ZedZedsjkr   r=   r   r@   test_MultivariateEwens   sx    :






&


 
&
$r   c                     sv  t dddd\ } }}}t ddd\t ddd\td g}td	d
}t}t|| |||t|  |  |  |  |  || || || ||  t | | | | fdkstt||d | | dd
 d  d    d
 d   ks.tt	t
fdd t	t
fdd t	t
 fdd d S )Nzn, x1, x2, x3, x4TZnonnegativerM   p1, p2, p3, p4rt   z	p1_f, n_fr   rJ   rE   rD   r   r   r;   r<   rv   c                      s   t dd gS Nr   rn   r/   r=   p1p1_fp2p3r=   r@   rA      rB   z"test_Multinomial.<locals>.<lambda>c                      s   t d gS r   r   r=   )n_fr   r   r   p4r=   r@   rA      rB   c                      s   t d ddddS )Nr         ?皙?333333?皙?r   r=   )rL   r=   r@   rA      rB   )r	   r/   r   r   r   r   rT   r!   r\   r3   rY   )x1x2x3x4rJ   rE   fr=   )rL   r   r   r   r   r   r   r@   test_Multinomial   s2    0

r   c            	   	      s  t dddd\ } }}}t ddd\}t dddtdd	|g}td
d	ddd}t}t}tt|| ||||  |  |  ||     | d d	  || | | | d	  d||  || || ||   tjkstt	t
||d d ddstttfdd tt fdd |jjjttdtdtdtdtdtdtdtdkstd S )Nzk0, x1, x2, x3, x4Tr   r   rt   r   r   rH   rI   rE   r   皙?r   r;   rv   r   gQ?{Gz?c                      s   t dd gS r   r0   r=   r   r=   r@   rA     rB   z*test_NegativeMultinomial.<locals>.<lambda>c                      s   t d ddddS )Nr   r   r   r   r   r=   )k0r=   r@   rA     rB   )r	   r0   r   r   r   r   r   ZZerorT   r   r!   rZ   r3   rY   rU   rV   rW   r   r   r   )	r   r   r   r   r   rH   rE   gr   r=   )r   r   r   r   r   r@   test_NegativeMultinomial  s8    @"$
 
 
r   c                  C   s   t dddgddgddggd} t| | d t}tdtd d d  dttd d d tdd    }||ks|t|tt| dttt tfdkstt ddddgdddgdddgdddggd}t	t|dd
 dd	std S )
Nr]   r   r;   r<   rI   rn   rD   r   r   )r)   r!   r8   r   r   r   rT   r   r   r   rZ   )r]   gotZanstr=   r=   r@   &test_JointPSpace_marginal_distribution  s    <$,r   c                  C   s   dd dD \} }t | d  d |  |d d  tj dt  }td|}t|ddt ddt  ksntt|jj	t
stt|ddtdt td	d dtt  kstd S )
Nc                 s   s   | ]}t d |V  qdS r8   Nr   .0r   r=   r=   r@   	<genexpr>!  s     ztest_JointRV.<locals>.<genexpr>r;   r<   r<   r8   r;   r   rK   )r   r   r   r   r&   r   rT   
isinstancerU   rV   r(   r!   r   r   )r   r   pdfrQ   r=   r=   r@   test_JointRV   s    0
"r   c                  C   s8   t dttgddgddgg} tt| d tks4td S Nr:   r;   r   )r"   r8   r9   r   r$   rT   r>   r=   r=   r@   test_expectation)  s    r   c                  C   s4   t dttgddgddgg} t| ttfks0td S r   )r"   r8   r9   r$   rT   r>   r=   r=   r@   test_joint_vector_expectation.  s    r   c               
      s   t dddgddgddggtdddd	d
dgtdd
dddddgg} d}td}|s^td nZ| D ]2}t||dd}|D ]}t||jjj	ksxt
qxqbtddddd tt fdd d S )NrJ   rD   rI   r<   r;   rC   r   rn      2      rH   r   r   r   g      ?g333333?numpyz6Numpy is not installed. Abort tests for _sample_numpy.sizelibraryc                      s   t  ddS )Nr   r   r%   r=   ZN_cr=   r@   rA   D  rB   z#test_sample_numpy.<locals>.<lambda>)r1   r,   r/   r7   r5   r%   tuplerU   rV   rW   rT   r0   r3   r[   )Zdistribs_numpyr   r   rQ   sampssamr=   r   r@   test_sample_numpy4  s    
r   c            	   	      s   t dddgddgddggtddddgtd	d
ddddgg} d}td}|sXtd n| D ]v}t||d}t|dd}|D ]}t||jjj	ks|t
q|tdD ]0}tdD ]"}t|| | |jjj	kst
qqq\td	dddd tt fdd d S )NrJ   r   r   g?rC   r   rn   r   rH   r`   r   r   rD   scipyz3Scipy not installed. Abort tests for _sample_scipy.)r   )r<   r<   r<   c                      s   t  S rF   r   r=   r   r=   r@   rA   \  rB   z#test_sample_scipy.<locals>.<lambda>)r1   r,   r/   r7   r5   r%   r   rU   rV   rW   rT   ranger0   r3   r[   )	Zdistribs_scipyr   r   rQ   r   Zsamps2r   r   r   r=   r   r@   test_sample_scipyG  s$    
$r   c               	      s   t dddgddgddggtddddgtd	d
ddddgg} d}td}|sXtd n^| D ]6}t||dd}|D ]}t| |jj	j
ksrtqrq\td	dddd tt fdd d S )NrJ   rn   r<   r;   r   rC   r   r   rH   rI   r   r   r   rD   pymcz4PyMC is not installed. Abort tests for _sample_pymc.r   c                      s   t  ddS )Nr   r   r   r=   r   r=   r@   rA   o  rB   z"test_sample_pymc.<locals>.<lambda>)r1   r,   r/   r7   r5   r%   r   flattenrU   rV   rW   rT   r0   r3   r[   )Zdistribs_pymcr   r   rQ   r   r   r=   r   r@   test_sample_pymc_  s    
r   c            
   	   C   s   dd dD \} }t | d  d |  |d d  tj dt  }td|}dddg}|D ]}zpt|}|rg g g   }}}	t|d	|d
d}t|d	|d
d}t|d	|dd}	t||kstt||	kstW qZ t	k
r   Y qZY qZX qZd S )Nc                 s   s   | ]}t d |V  qdS r   r   r   r=   r=   r@   r   s  s     z#test_sample_seed.<locals>.<genexpr>r   r<   r8   r   r   r   rl   r   )r   r   seedr;   )
r   r   r   r   r&   r7   r%   allrT   r[   )
r   r   r   rQ   	librarieslibimported_libs0s1s2r=   r=   r@   test_sample_seedr  s     0

r   c            
   	   C   s  t dddgddgddgg} tdddgddgddgg}t dddgddgddgg}| |ks`td}|D ]}zzt|}|rt| d|d}t|d|d}t|d|d}t| t| kst|D ]}	t|	 |jjj	kstqW qh t
k
r   Y qhY qhX qhd S )Nr8   r   r;   )r   r   r`   r   r"   r1   rT   r7   r%   r   r   rU   rV   rW   r[   
r?   rL   r^   r   r   r   r   r   Zs3sr=   r=   r@   test_issue_21057  s"     r   c            
   	   C   s  t dddgddgddgg} tdddgddgddgg}t dddgddgddgg}| |ks`td}|D ]}zzt|}|rt| d|d}t|d|d}t|d|d}t| t| kst|D ]}	t|	 |jjj	kstqW qh t
k
r   Y qhY qhX qhd S )Nr8   r   r;   )r   r`   r   r   r   r=   r=   r@   test_issue_21057_pymc  s"     r   N)hZsympy.concrete.productsr   Zsympy.concrete.summationsr   Zsympy.core.numbersr   r   r   Zsympy.core.relationalr   Zsympy.core.singletonr   Zsympy.core.symbolr	   Z(sympy.functions.combinatorial.factorialsr
   r   Z$sympy.functions.elementary.complexesr   Z&sympy.functions.elementary.exponentialr   Z(sympy.functions.elementary.miscellaneousr   Z$sympy.functions.elementary.piecewiser   Zsympy.functions.special.besselr   Z'sympy.functions.special.gamma_functionsr   Zsympy.matrices.denser   Z&sympy.matrices.expressions.determinantr   Zsympy.sets.fancysetsr   Zsympy.sets.setsr   r   Zsympy.simplify.simplifyr   Zsympy.tensor.indexedr   r   r   Zsympy.integrals.integralsr   Zsympy.matricesr   r   Z"sympy.matrices.expressions.matexprr   Zsympy.statsr   r    r!   r"   r#   r$   r%   Zsympy.stats.joint_rv_typesr&   r'   r(   r)   r*   r+   r{   r,   r-   r   r.   r/   r0   r1   r2   Zsympy.testing.pytestr3   r4   r5   r6   Zsympy.externalr7   Z	sympy.abcr8   r9   r_   rc   rh   rq   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r=   r=   r=   r@   <module>   sb   $<=;
	
