o
    GZhH                     @   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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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spJ |tddttd   ksJ 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=   N/var/www/auris/lib/python3.10/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                         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       nT)integerpositivemusigmaXc                      rI   rJ   )r    r=   r>   r=   r@   rA   =   rB   rD   Sgobsr   r   r   g      ?rO   ) 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:   rQ   prL   rT   rU   rV   rW   rX   Z	density_XZeval_aZeval_bZdensity_X_at_obsZexpected_densityr=   r>   r@   test_Normal&   s`   "$ "2D*"",rd   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 )
Nrb   r   r;   r<      rK   c                   S   s   t dddgddgddggdS )Nrb   r;   r<   rO   )r)   r=   r=   r=   r@   rA   i   s    z(test_MultivariateTDist.<locals>.<lambda>t2)r)   r   r   rZ   r[   r\   r   r   r]   r   r8   r9   r   r_   r3   r^   r   )t1rf   r=   r=   r@   test_MultivariateTDistc   s   
.rh   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 )Nrb   r;   r<   )r#   r=   r=   r=   r@   rA   o   rP   z+test_multivariate_laplace.<locals>.<lambda>Lr;   r   L2r<   rD   '   L1rM   )r3   r^   r#   r2   r   r   r   r   r   r8   r9   rZ   r[   r\   r   r   r]   )ri   rj   rl   r=   r=   r@   test_multivariate_laplacen   s   ,<rm   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Gr;   r<   rD   rM       r   c                   S   s   t dddddS )Nrn   r;   r<   rD   rO   )r*   r=   r=   r=   r@   rA   ~       z"test_NormalGamma.<locals>.<lambda>
         rO      )r*   r   r   r   r   rZ   r[   r\   r   r   r]   r   r   r3   r^   r!   r   r   r9   r8   )ngr=   r=   r@   test_NormalGammaz   s   & 2$4rw   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 )!Nr;   rM   )r;   r<   rD   rM   zy_1:5T)realdrS   rn   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rS   rx   rD   )r;   r<   rD   rM   rt   c                         t d S Nrn   GMVLGOr=   )lrT   omega_f1vr=   r@   rA      rq   zBtest_GeneralizedMultivariateLogGammaDistribution.<locals>.<lambda>c                      r   r   r   r=   )r   rT   omega_f2r   r=   r@   rA      rq   c                      r   r   r   r=   )r   rT   omega_f3r   r=   r@   rA      rq   c                      r   r   r   r=   )r   rT   omegar}   r=   r@   rA      rq   c                      r   r   r   r=   )l_frT   r   r   r=   r@   rA      rq   c                      r   r   r   r=   )r   m_fr   r   r=   r@   rA      rq   c                      r   r   r   r=   )r   rT   omega_f4r   r=   r@   rA      rq   c                      r   r   r   r=   )l_f1rT   r   r   r=   r@   rA      rq   c                      r   r   r   r=   )l_f5mu_f5omega_f5r   r=   r@   rA      rq   c                      s   t dtdd S )Nrn   rD   r<   )GMVLGr   r=   )r   rT   r   r=   r@   rA      s    )r   Halfr   r	   r   r   strr   r!   r3   r^   )hZy_1Zy_2Zy_3Zy_4deltarn   r{   ZdenddenZmargr=   )r   r   r   r   r   rT   r   r   r   r   r   r   r   r   r}   r@   0test_GeneralizedMultivariateLogGammaDistribution   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, a2Trz   Fr~   rC   rH   r;   r<   r   rD   c                         t d gS )Nb1r,   r=   )a1_fa2r=   r@   rA          z'test_MultivariateBeta.<locals>.<lambda>c                      r   Nb2r   r=   )a1a2_fr=   r@   rA      r   c                   S   s   t dddgS )Nb3r   r   r=   r=   r=   r@   rA      r   c                      r   )NZb4r   r=   )r   r   r=   r@   rA      r   )r	   r,   r   r   r   r!   r3   r^   rZ   r[   r\   r   r   )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 iTrz   Zt_fnegativeza_1:4)rS   rR   r$   rD   r   r;   r<   r|   r   Tc                      s   t dd S )Ne1rt   )r.   r=   Ztheta_fr=   r@   rA          z(test_MultivariateEwens.<locals>.<lambda>rM   azj, k)r	   r.   r   r   r   r   r!   r3   r^   rZ   r[   r\   r   r   r   r   r
   r   Zdummy_eq)	rQ   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nonnegativerR   p1, p2, p3, p4rz   z	p1_f, n_fr   rN   rH   rD   r   r   r;   r<   r|   c                         t dd gS Nr   rt   r/   r=   p1p1_fp2p3r=   r@   rA          z"test_Multinomial.<locals>.<lambda>c                      s   t d gS r   r   r=   )n_fr   r   r   p4r=   r@   rA      r   c                      s   t d ddddS )Nr         ?皙?333333?皙?r   r=   )rQ   r=   r@   rA          )
r	   r/   r   r   r   r   r!   ra   r3   r^   )x1x2x3x4rN   rH   fr=   )rQ   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   rz   r   r   rL   rM   rH   r   皙?r   r;   r|   r   gQ?{Gz?c                      r   r   r0   r=   r   r=   r@   rA     r   z*test_NegativeMultinomial.<locals>.<lambda>c                      s   t d ddddS )Nr   r   r   r   r   r=   )k0r=   r@   rA     r   )r	   r0   r   r   r   r   r   ZZeror   r!   r_   r3   r^   rZ   r[   r\   r   r   r   )	r   r   r   r   r   rL   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sPJ t dg dg dg d	g d
gd}tt|dd	 ddsqJ d S )Nrb   r   r;   r<   rM   rt   rY   rE   rF   rG   rD   r   r   )
r)   r!   r8   r   r   r   r   r   r   r_   )rb   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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 r8   Nr   .0r   r=   r=   r@   	<genexpr>!      ztest_JointRV.<locals>.<genexpr>r;   r<   r<   r8   r;   r   rO   )r   r   r   r   r&   r   
isinstancerZ   r[   r(   r!   r   r   )r   r   pdfrV   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 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sJ 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}|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 )NrN   rD   rM   r<   r;   rC   )r   rt      2      rL   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@   rA   D  r   z#test_sample_numpy.<locals>.<lambda>)r1   r,   r/   r7   r5   r%   tuplerZ   r[   r\   r0   r3   r`   )Zdistribs_numpyr   r   rV   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}|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 )NrN   r   r   g?rC   r   rt   r   rL   re   r   r   r   r   rD   scipyz3Scipy not installed. Abort tests for _sample_scipy.)r   )r<   r<   r<   c                      rI   rJ   r   r=   r   r=   r@   rA   \  rB   z#test_sample_scipy.<locals>.<lambda>)r1   r,   r/   r7   r5   r%   r   rZ   r[   r\   ranger0   r3   r`   )	Zdistribs_scipyr   r   rV   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}|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 )NrN   rt   r<   r;   r   rC   r   rL   rM   r   rD   pymcz4PyMC is not installed. Abort tests for _sample_pymc.r   r   c                      r   )Nr   r   r   r=   r   r=   r@   rA   o  r   z"test_sample_pymc.<locals>.<lambda>)r1   r,   r/   r7   r5   r%   r   flattenrZ   r[   r\   r0   r3   r`   )Zdistribs_pymcr   r   rV   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 ]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   s  r   z#test_sample_seed.<locals>.<genexpr>r   r<   r8   )r   r   r   rr   r   )r   r   seedr;   )	r   r   r   r   r&   r7   r%   allr`   )
r   r   r   rV   	librarieslibimported_libs0s1s2r=   r=   r@   test_sample_seedr  s&   0
r   c            
   	   C      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 d}|D ]H}z=t|}|rrt| d|d}t|d|d}t|d|d}t| t| ks`J |D ]}	t|	 |jjjv sqJ qbW q4 t	y|   Y q4w d S )Nr8   r   r;   )r   r   re   r   
r"   r1   r7   r%   r   r   rZ   r[   r\   r`   
r?   rQ   rc   r   r   r   r   r   Zs3sr=   r=   r@   test_issue_21057  s(   r  c            
   	   C   r   )Nr8   r   r;   )r   re   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   rd   rh   rm   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r=   r=   r=   r@   <module>   sd    $<=;
	
