o
    8VaA                     @   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mZmZ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#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/m0Z1m2Z2m3Z4m5Z5m6Z6m7Z7m8Z8m9Z9 d dl:m;Z;m<Z<m=Z= d d	l>m?Z? ed
\Z@ZAZBZCZDdd ZEdd ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd  ZOd!d" ZPe<d#d$ ZQd%d& ZRd'd( ZSd)d* ZTd+d, ZUd-d. ZVd/S )0    )symbolspiooSexpsqrtbesselkIndexedSumsimplifyRational	factorialgamma	PiecewiseEqProductIntervalIndexedBaseRisingFactorial
polar_lift
ProductSetRangeeyeDeterminant)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)import_modulez	x y z a bc               
      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s"J t ddddt  ks1J  jjjttj	tj	ks?J t
t fdd t dg dg d	g d
g dg}t dtddgtddgddgg}t ttt|ttks{J t|ddddddt  ksJ t
t fdd tt tttt tftt tf dksJ 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sJ t
tdd  tddd}td|d}td||}t d||}t|t||ks	J t
t fdd d}td||}td|d}td|d}td||}t|}	|	||td|tg d|tg di }
|	ddd|td|tg di }|
tddttd   ksoJ |tddttd   ksJ t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sJ d S )NA      r   c                      s    d S )Nr9    r:   mr:   A/usr/lib/python3/dist-packages/sympy/stats/tests/test_joint_rv.py<lambda>       ztest_Normal.<locals>.<lambda>B)r8   r9      r8   r   r   r   r8   r   r   r   r8   Cc                         t  S N)r!   r:   r;   r:   r=   r>       r?   N   c                   S   s   t dddgddgddggS )NMr8   r9   )r"   r:   r:   r:   r=   r>   %       nT)ZnaturalmusigmaXc                      rF   rG   )r    r:   r;   r:   r=   r>   ,   r?   rA   Sgobsr   r   r   g      ?rK   ) r"   r1   r   r   pspacedistributionsetr   r   Realsr3   
ValueErrorr   xyr!   r   r   evalfr   r   r   r   r'   NotImplementedErrorsubsr   Zdoitr   r   Tr   )r7   rM   prH   rN   rO   rP   rQ   rR   Z	density_XZeval_aZeval_bZdensity_X_at_obsZexpected_densityr:   r;   r=   test_Normal   s`   "$ "2D*"",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J | jjjttjtjks,J t	t| t
tt
t tftt tf dksEJ 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spJ d S )	Nr^   r   r8   r9      c                   S   s   t dddgddgddggdS )Nr^   r8   r9   rK   )r)   r:   r:   r:   r=   r>   W   s    z(test_MultivariateTDist.<locals>.<lambda>t2)r)   r   r   rT   rU   rV   r   r   rW   r   rY   rZ   r   r[   r3   rX   r   )t1rb   r:   r:   r=   test_MultivariateTDistQ   s   
.rd   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s9J 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soJ | jjjttjtjks}J | jj|jjksJ d S )Nc                   S   s   t dddgddgddggS )Nr^   r8   r9   )r#   r:   r:   r:   r=   r>   \   rL   z+test_multivariate_laplace.<locals>.<lambda>Lr8   r   L2r9   rA   '   L1rI   )r3   rX   r#   r2   r   r   r   r   r   rY   rZ   rT   rU   rV   r   r   rW   )re   rf   rh   r:   r:   r=   test_multivariate_laplace[   s   ,<ri   c                  C   s  t ddddd} t| dddtd tt ksJ | jjjtt	j
tdtks+J ttd	d
  t| dddtd ttdd dtt ttdd  ksUJ t| tdttddd ksgJ t| ddgttd tt d  d ksJ d S )NGr8   r9   rA   rI       r   c                   S   s   t dddddS )Nrj   r8   r9   rA   rK   )r*   r:   r:   r:   r=   r>   j       z"test_NormalGamma.<locals>.<lambda>
         rK      )r*   r   r   r   r   rT   rU   rV   r   r   rW   r   r   r3   rX   r!   r   r   rZ   rY   )Zngr:   r:   r=   test_NormalGammaf   s   & 2$4rr   c               
      s  t j} td| | | g| d| | g| | d| g| | | dggdg dg d tddd\}}}}tddd}td	 }td
| }d}tt||||||ksXJ d}	tt||||||	ksiJ d}
tt||d ||
kszJ 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g d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 )!Nr8   rI   )r8   r9   rA   rI   zy_1:5T)realdpositiverj   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   r9      v_fFrv   rs   rA   )r8   r9   rA   rI   rp   c                         t d S Nrj   GMVLGOr:   )lrN   omega_f1vr:   r=   r>      rm   zBtest_GeneralizedMultivariateLogGammaDistribution.<locals>.<lambda>c                      r{   r|   r}   r:   )r   rN   omega_f2r   r:   r=   r>      rm   c                      r{   r|   r}   r:   )r   rN   omega_f3r   r:   r=   r>      rm   c                      r{   r|   r}   r:   )r   rN   omegary   r:   r=   r>      rm   c                      r{   r|   r}   r:   )l_frN   r   r   r:   r=   r>      rm   c                      r{   r|   r}   r:   )r   m_fr   r   r:   r=   r>      rm   c                      r{   r|   r}   r:   )r   rN   omega_f4r   r:   r=   r>      rm   c                      r{   r|   r}   r:   )l_f1rN   r   r   r:   r=   r>      rm   c                      r{   r|   r}   r:   )l_f5mu_f5omega_f5r   r:   r=   r>      rm   c                      s   t dtdd S )Nrj   rA   r9   )GMVLGr   r:   )r   rN   r   r:   r=   r>      s    )r   Halfr   r   r~   r   strr   r!   r3   rX   )hZy_1Zy_2Zy_3Zy_4Zdeltarj   rw   ZdenddenZmargr:   )r   r   r   r   r   rN   r   r   r   r   r   r   r   r   ry   r=   0test_GeneralizedMultivariateLogGammaDistributionp   sd   









r   c                     s.  t ddd\ t dddd\td g} td }t| dd	td	d  t   t t  ks=J t|d
dtd d  t   t  t  ks^J 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sJ d S )Nza1, a2Tru   Frz   r@   rE   r8   r9   r   rA   c                         t d gS )Nb1r,   r:   )a1_fa2r:   r=   r>          z'test_MultivariateBeta.<locals>.<lambda>c                      r   Nb2r   r:   )a1a2_fr:   r=   r>      r   c                   S   s   t dddgS )Nb3r   r   r:   r:   r:   r=   r>      r   c                      r   )NZb4r   r:   )r   r   r:   r=   r>      r   )r   r,   r   r   r   r!   r3   rX   rT   rU   rV   r   r   )ZmbZmb_cr:   )r   r   r   r   r=   test_MultivariateBeta   s   &
&
(r   c            	   
      sh  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sJ t||d |d tdd|d    ||d   |d |d  t|d   td|d  d d	fdksJ tt fdd |j	j
jttd
ddtd
ddtd
ddksJ td| |}td}t d\}}tt| t|||  |d ||    t||  |d
| d f t||  t| t|d ||  |d
| d ffd}t|||s2J d S )Nz	n theta iTru   Zt_fnegativeza_1:4)rv   integerr$   rA   r   r8   r9   rx   r   Tc                      s   t dd S )NZe1rp   )r.   r:   Ztheta_fr:   r=   r>          z(test_MultivariateEwens.<locals>.<lambda>rI   azj, k)r   r.   r   r   r   r   r!   r3   rX   rT   rU   rV   r   r   r   r   r   r
   Zdummy_eq)	rM   Zthetair   ZedZedsjkr   r:   r   r=   test_MultivariateEwens   sv   :







&



&
$r   c                     st  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soJ t||d | | dd
 d  d    d
 d   ksJ tt	fdd tt	fdd tt	 fdd d S )Nzn, x1, x2, x3, x4TZnonnegativer   p1, p2, p3, p4ru   z	p1_f, n_fr   rJ   rE   rA   r   r   r8   r9   rx   c                         t dd gS Nr   rp   r/   r:   p1p1_fp2p3r:   r=   r>          z"test_Multinomial.<locals>.<lambda>c                      s   t d gS r   r   r:   )n_fr   r   r   p4r:   r=   r>      r   c                      s   t d ddddS )Nr         ?皙?333333?皙?r   r:   )rM   r:   r=   r>          )
r   r/   r   r   r   r   r!   r]   r3   rX   )x1x2x3x4rJ   rE   fr:   )rM   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u s}J tt	||d d
 ddsJ 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sJ d S )Nzk0, x1, x2, x3, x4Tr   r   ru   r   r   rH   rI   rE   r   皙?r   r8   rx   r   gQ?{Gz?c                      r   r   r0   r:   r   r:   r=   r>      r   z*test_NegativeMultinomial.<locals>.<lambda>c                      s   t d ddddS )Nr   r   r   r   r   r:   )k0r:   r=   r>      r   )r   r0   r   r   r   r   r   ZZeror   r!   r[   r3   rX   rT   rU   rV   r   r   r   )	r   r   r   r   r   rH   rE   gr   r:   )r   r   r   r   r   r=   test_NegativeMultinomial   s4   @""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ttd d d tdd   ks5J tt| dttt tfdksGJ t dg dg dg d	g d
gd}tt|dd	 ddshJ d S )Nr^   r   r8   r9   ra   rp   rS   rB   rC   rD   rA   r   r   )
r)   r!   rY   r   r   r   r   r   r   r[   )r^   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s7J t|jjt	s@J t
|ddtdt td	d dtt  ksZJ d S )
Nc                 s       | ]}t d |V  qdS rY   Nr	   .0r   r:   r:   r=   	<genexpr>      ztest_JointRV.<locals>.<genexpr>r8   r9   r9   rY   r8   r   rK   )r   r   r   r   r&   r   
isinstancerT   rU   r(   r!   r   r   )r   r   pdfrP   r:   r:   r=   test_JointRV  s   0
"8r   c                  C   s8   t dttgddgddgg} tt| d tksJ d S Nr7   r8   r   )r"   rY   rZ   r   r$   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sJ d S r   )r"   rY   rZ   r$   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g dtdd	g d
g} d}td}|s*td d S | D ]}t||dd}|D ]}t||jjj	v sDJ q7q,t
ddddd tt fdd d S )NrJ   rA   rI   r9   r8   r@   )r   rp      2      rH   r   )r   r   r   g      ?g333333?numpyz6Numpy is not installed. Abort tests for _sample_numpy.sizelibraryr   c                         t  ddS )Nr   r   r%   r:   ZN_cr:   r=   r>   %  r   z#test_sample_numpy.<locals>.<lambda>)r1   r,   r/   r6   r5   r%   tuplerT   rU   rV   r0   r3   r\   )Zdistribs_numpyr   r   rP   sampssamr:   r   r=   test_sample_numpy  s   r   c            	         s   t dddgddgddggtdg dtddg d	g} d
}td}|s*td d S | D ];}t||d}t|dd}|D ]}t||jjj	v sIJ q<t
dD ]}t
dD ]}t|| | |jjj	v seJ qTqNq,tdd
ddd tt fdd d S )NrJ   r   r   g?r@   r   rp   r   rH   ra   r   r   r   r   rA   scipyz3Scipy not installed. Abort tests for _sample_scipy.r   )r9   r9   r9   c                      rF   rG   r   r:   r   r:   r=   r>   <  r?   z#test_sample_scipy.<locals>.<lambda>)r1   r,   r/   r6   r5   r%   r   rT   rU   rV   ranger0   r3   r\   )	Zdistribs_scipyr   r   rP   r   Zsamps2r   r   r   r:   r   r=   test_sample_scipy'  s(    r   c                     s   t dddgddgddggtdg dtdd	g d
g} d}td}|s*td d S | D ]}t||dd}|D ]}t| |jj	j
v sFJ q7q,tddddd tt fdd d S )NrJ   rp   r9   r8   r   r@   r   rH   rI   r   rA   pymc3z6PyMC3 is not installed. Abort tests for _sample_pymc3.r   r   c                      r   )Nr   r   r   r:   r   r:   r=   r>   O  r   z#test_sample_pymc3.<locals>.<lambda>)r1   r,   r/   r6   r5   r%   r   flattenrT   rU   rV   r0   r3   r\   )Zdistribs_pymc3r   r   rP   r   r   r:   r   r=   test_sample_pymc3?  s   r   c            
   	   C   s   dd dD \} }t | d  d |  |d d  tj dt  }td|}g d}|D ]C}z8t|}|reg g g }}}	t|d|dd	}t|d|dd	}t|d|d
d	}	t||ks]J t||	kseJ W q, tyo   Y q,w d S )Nc                 s   r   r   r   r   r:   r:   r=   r   R  r   z#test_sample_seed.<locals>.<genexpr>r   r9   rY   r   r   r   rn   r   )r   r   Zseedr8   )	r   r   r   r   r&   r6   r%   allr\   )
r   r   r   rP   	librarieslibimported_libZs0s1s2r:   r:   r=   test_sample_seedQ  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s0J g d}|D ]E}z:t|}|rqt| dd}t|dd}t|dd}t| t| ks_J |D ]}	t|	 |jjjv spJ qaW q6 t	y{   Y q6w d S )NrY   r   r8   r   ra   r   )
r"   r1   r6   r%   r   r   rT   rU   rV   r\   )
r<   rM   r_   r   r   r   r   r   Zs3sr:   r:   r=   test_issue_21057e  s(   r   N)WZsympyr   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zsympy.core.numbersr   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   Zsympy.externalr6   rY   rZ   zr   br`   rd   ri   rr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r:   r:   r:   r=   <module>   s:   h $<<

:	
