a
    lhH                     @   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sDJ t ddddt  ksbJ  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sJ t|ddddddt  ksJ t
t fdd tt tttt tftt tf dks`J 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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sJ |tddttd   ksJ 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sJ d S )NA      r   c                      s    d S )Nr<    r=   mr=   M/var/www/auris/lib/python3.9/site-packages/sympy/stats/tests/test_joint_rv.py<lambda>,       ztest_Normal.<locals>.<lambda>B)r;   r<      r;   r   r   r   r;   r   r   r   r;   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 rI   )r    r=   r>   r=   r@   rA   =   rB   rD   Sgobsr   r   r   g      ?rN   ) r"   r1   r   r   pspacedistributionsetr   r   Realsr3   
ValueErrorr   r8   r9   r!   r   r   evalfr   r   r	   r   r'   NotImplementedErrorsubsr   Zdoitr   r   Tr   )r:   rO   prK   rR   rS   rT   rU   rV   Z	density_XZeval_aZeval_bZdensity_X_at_obsZexpected_densityr=   r>   r@   test_Normal&   s\    "$ $4F
*"",rb   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sXJ t	t| t
tt
t tftt tf dksJ 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sJ d S )
Nr`   r   r;   r<      rJ   c                   S   s   t dddgddgddggdS )Nr`   r;   r<   rN   )r)   r=   r=   r=   r@   rA   i   rB   z(test_MultivariateTDist.<locals>.<lambda>t2)r)   r   r   rX   rY   rZ   r   r   r[   r   r8   r9   r   r]   r3   r\   r   )t1rd   r=   r=   r@   test_MultivariateTDistc   s    
rf   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srJ 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sJ | jjjttjtjksJ | jj|jjksJ 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   '   L1rL   )r3   r\   r#   r2   r   r   r   r   r   r8   r9   rX   rY   rZ   r   r   r[   )rg   rh   rj   r=   r=   r@   test_multivariate_laplacen   s    ,<rk   c                  C   s  t ddddd} t| dddtd tt ks6J | jjjtt	j
tdtksVJ ttd	d
  t| dddtd ttdd dtt ttdd  ksJ t| tdttddd ksJ t| ddgttd tt d  d ksJ d S )NGr;   r<   rD   rL       r   c                   S   s   t dddddS )Nrl   r;   r<   rD   rN   )r*   r=   r=   r=   r@   rA   ~   rB   z"test_NormalGamma.<locals>.<lambda>
         rN      )r*   r   r   r   r   rX   rY   rZ   r   r   r[   r   r   r3   r\   r!   r   r   r9   r8   )Zngr=   r=   r@   test_NormalGammaz   s    & 2$rs   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sJ d}	tt||||||	ksJ d}
tt||d ||
ksJ 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 )!Nr;   rL   )r;   r<   rD   rL   zy_1:5T)realdrQ   rl   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   r<      v_fFrQ   rt   rD   )r;   r<   rD   rL   rq   c                      s   t d S Nrl   GMVLGOr=   )lrR   omega_f1vr=   r@   rA      rB   zBtest_GeneralizedMultivariateLogGammaDistribution.<locals>.<lambda>c                      s   t d S r{   r|   r=   )r~   rR   omega_f2r   r=   r@   rA      rB   c                      s   t d S r{   r|   r=   )r~   rR   omega_f3r   r=   r@   rA      rB   c                      s   t d S r{   r|   r=   )r~   rR   omegary   r=   r@   rA      rB   c                      s   t d S r{   r|   r=   )l_frR   r   r   r=   r@   rA      rB   c                      s   t d S r{   r|   r=   )r~   m_fr   r   r=   r@   rA      rB   c                      s   t d S r{   r|   r=   )r~   rR   omega_f4r   r=   r@   rA      rB   c                      s   t d S r{   r|   r=   )l_f1rR   r   r   r=   r@   rA      rB   c                      s   t d S r{   r|   r=   )l_f5mu_f5omega_f5r   r=   r@   rA      rB   c                      s   t dtdd S )Nrl   rD   r<   )GMVLGr   r=   )r~   rR   r   r=   r@   rA      rB   )r   Halfr   r	   r}   r   strr   r!   r3   r\   )hZy_1Zy_2Zy_3Zy_4deltarl   rw   ZdenddenZmargr=   )r~   r   r   r   r   rR   r   r   r   r   r   r   r   r   ry   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szJ t|d
dtd d  t   t  t  ksJ 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,J d S )Nza1, a2Trv   Frz   rC   rH   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   r!   r3   r\   rX   rY   rZ   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J t||d |d tdd|d    ||d   |d |d  t|d   td|d  d d	fdkstJ 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|||sjJ d S )Nz	n theta iTrv   Zt_fnegativeza_1:4)rQ   rP   r$   rD   r   r;   r<   rx   r   Tc                      s   t dd S )Ne1rq   )r.   r=   Ztheta_fr=   r@   rA      rB   z(test_MultivariateEwens.<locals>.<lambda>rL   azj, k)r	   r.   r   r   r   r   r!   r3   r\   rX   rY   rZ   r   r   r   r   r
   r   Zdummy_eq)	rO   thetair   ZedZedsjkr   r=   r   r@   test_MultivariateEwens   sv    :






&

&
$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sJ t||d | | dd
 d  d    d
 d   ks.J tt	fdd tt	fdd tt	 fdd d S )Nzn, x1, x2, x3, x4TZnonnegativerP   p1, p2, p3, p4rv   z	p1_f, n_fr   rM   rH   rD   r   r   r;   r<   rx   c                      s   t dd gS Nr   rq   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=   )rO   r=   r@   rA      rB   )
r	   r/   r   r   r   r   r!   r_   r3   r\   )x1x2x3x4rM   rH   fr=   )rO   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 sJ tt	||d d
 ddsJ 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   rv   r   r   rK   rL   rH   r   皙?r   r;   rx   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Zeror   r!   r]   r3   r\   rX   rY   rZ   r   r   r   )	r   r   r   r   r   rK   rH   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  dttd d d tdd    }||ks|J |tt| dttt tfdksJ t dg dg dg d	g d
gd}tt|dd	 ddsJ d S )Nr`   r   r;   r<   rL   rq   rW   rE   rF   rG   rD   r   r   )
r)   r!   r8   r   r   r   r   r   r   r]   )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snJ t|jjt	sJ t
|ddtdt td	d dtt  ksJ d S )
Nc                 s   s   | ]}t d |V  qdS r8   Nr   .0r   r=   r=   r@   	<genexpr>!  rB   ztest_JointRV.<locals>.<genexpr>r;   r<   r<   r8   r;   r   rN   )r   r   r   r   r&   r   
isinstancerX   rY   r(   r!   r   r   )r   r   pdfrT   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s4J d S Nr:   r;   r   )r"   r8   r9   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s0J d S r   )r"   r8   r9   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}|sRtd nZ| D ]2}t||dd}|D ]}t||jjj	v slJ qlqVt
ddddd tt fdd d S )NrM   rD   rL   r<   r;   rC   )r   rq      2      rK   r   )r   r   r   g      ?g333333?numpyz6Numpy is not installed. Abort tests for _sample_numpy.sizelibraryr   c                      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%   tuplerX   rY   rZ   r0   r3   r^   )Zdistribs_numpyr   r   rT   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g dtddg d	g} d
}td}|sRtd n| D ]v}t||d}t|dd}|D ]}t||jjj	v svJ qvt
dD ]0}t
dD ]"}t|| | |jjj	v sJ qqqVtdd
ddd tt fdd d S )NrM   r   r   g?rC   r   rq   r   rK   rc   r   r   r   r   rD   scipyz3Scipy not installed. Abort tests for _sample_scipy.)r   )r<   r<   r<   c                      s   t  S rI   r   r=   r   r=   r@   rA   \  rB   z#test_sample_scipy.<locals>.<lambda>)r1   r,   r/   r7   r5   r%   r   rX   rY   rZ   ranger0   r3   r^   )	Zdistribs_scipyr   r   rT   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g dtdd	g d
g} d}td}|sRtd n^| D ]6}t||dd}|D ]}t| |jj	j
v slJ qlqVtddddd tt fdd d S )NrM   rq   r<   r;   r   rC   r   rK   rL   r   rD   pymcz4PyMC is not installed. Abort tests for _sample_pymc.r   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   flattenrX   rY   rZ   r0   r3   r^   )Zdistribs_pymcr   r   rT   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|}g d}|D ]}zpt|}|rg g g   }}}	t|d|dd	}t|d|dd	}t|d|d
d	}	t||ksJ t||	ksJ W qX ty   Y qXY qX0 qXd S )Nc                 s   s   | ]}t d |V  qdS r   r   r   r=   r=   r@   r   s  rB   z#test_sample_seed.<locals>.<genexpr>r   r<   r8   )r   r   r   ro   r   )r   r   seedr;   )	r   r   r   r   r&   r7   r%   allr^   )
r   r   r   rT   	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`J d}|D ]}zzt|}|rt| d|d}t|d|d}t|d|d}t| t| ksJ |D ]}	t|	 |jjjv sJ qW qh t	y   Y qhY qh0 qhd S )Nr8   r   r;   )r   r   rc   r   
r"   r1   r7   r%   r   r   rX   rY   rZ   r^   
r?   rO   ra   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`J d}|D ]}zzt|}|rt| d|d}t|d|d}t|d|d}t| t| ksJ |D ]}	t|	 |jjjv sJ qW qh t	y   Y qhY qh0 qhd S )Nr8   r   r;   )r   rc   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   rb   rf   rk   rs   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r=   r=   r=   r@   <module>   sb   $<=;
	
