o
    8Va9                     @   s\  d dl mZmZmZmZ d dlmZ d dlmZm	Z	m
Z
mZmZ d dlmZ d dlmZmZmZ ed\ZZe	deeZe	deeZe	d	eeZe	d
eeZe	dedZe	dedZe	dddZe	dddZededZededZededZededZ edeeZ!edddZ"edd dZ#e
deeddd ge#d ggZ$dd Z%dd Z&dd Z'dS )     )ExpectationNormalVariance
Covariance)raises)symbolsMatrixSymbolMatrix
ZeroMatrix
ShapeError)RandomMatrixSymbol)ExpectationMatrixVarianceMatrixCrossCovarianceMatrixzj,kABCDa   bA2   B2XYZWRX2normalZnormal2c                  C   s  t t} | t t  krttksJ  J |  tksJ t t} | t t  kr1ttks4J  J | jtdfks=J | jtksDJ | jdksKJ t	| tsRJ t t
t t } | tt
t t ksfJ |  t
tt t kstJ t	| ts{J | jtdfksJ t tt } |  | ksJ t tt t t } | jd jttttfksJ |  tttt t  ksJ t tt tt j } |  tttj tttj  tttj  tttj  ksJ t t
t tt  } |  t
tt ttt  ksJ t t tddt gddggksJ ttdddtdddgtdd	dtd
ddgg}ttdddtdddgtdddtdddgg}t t || jddt|| ksbJ t t ||  tddgddggksyJ d S )Nr   r   r   ZN11   ZN12   ZN21   ZN22   ZM11ZM12ZM21   ZM22   F)Zdeep         )r   r   r   expandr   shapekrowscols
isinstancer   r   m1r   r   r   argsr   Tr   Zdoitr	   jr   )exprZx1Zx2 r5   N/usr/lib/python3/dist-packages/sympy/stats/tests/test_symbolic_multivariate.pytest_multivariate_expectation%   sL   $$  
&**2r7   c                  C   sT  t tdd  tt} | tt  krttksJ  J |  tttks(J ttj} | ttj  kr>ttjksAJ  J |  tttksLJ tt	} | tt	  kr_tt	ksbJ  J | j
ttfkskJ | jtksrJ | jtksyJ t| tsJ ttt	 } | ttt	 ksJ |  ttt	 tj ksJ t| tsJ | j
ttfksJ ttt t	 } |  tt tt	 tj tj ksJ ttt } |  | ksJ ttt t t } | jd jttttfksJ |  | ksJ ttt	 tt  } |  dt tt	t tj ttt	 tj  ttt tj  ks(J d S )Nc                   S   s   t tS N)r   r   r5   r5   r5   r6   <lambda>U   s    z,test_multivariate_variance.<locals>.<lambda>r   r   )r   r   r   r   r   r*   r
   r,   r2   r   r+   r-   r.   r/   r   r   r0   r   r   r   r1   r   r   r4   r5   r5   r6   test_multivariate_varianceT   s>   $
($(r;   c                  C   s  t tdd  t tdd  ttjtj} | jdksJ |  tddks'J ttt} | ttt  kr=t	ttks@J  J |  tt
t
ksKJ | jt
t
fksTJ | jt
ks[J | jt
ksbJ t| t	siJ ttt t t} |  tt
t
ks}J ttt} t| t	sJ |  | ksJ ttt} t| t	sJ |  ttksJ ttt t} t| t	sJ |  t	ttt	tt ksJ ttt t} t| t	sJ |  tt	tt ksJ tttt } t| t	sJ |  t	tttj ksJ ttt t tjt t } t| t	sJ |  tt	tt t ks"J ttt tt  t tjt tjt  t } t| t	sAJ |  tt	tt t tt	tt t  tt	tt t  tt	tt t  kslJ d S )Nc                   S   s   t ttjS r8   )r   r   r   r2   r5   r5   r5   r6   r9   z   s    z3test_multivariate_crosscovariance.<locals>.<lambda>c                   S   s
   t ttS r8   )r   r   r   r5   r5   r5   r6   r9   {   s   
 )r   r   r   )r   r   r   r   r2   r   r+   r*   r
   r   r,   r-   r.   r/   r   r   r   r   r   r   r   r   r   r:   r5   r5   r6   !test_multivariate_crosscovariancey   sN   
(

  .(r<   N)(Zsympy.statsr   r   r   r   Zsympy.testing.pytestr   Zsympyr   r   r	   r
   r   Zsympy.stats.rvr   Z-sympy.stats.symbolic_multivariate_probabilityr   r   r   r3   r,   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r0   r7   r;   r<   r5   r5   r5   r6   <module>   s8    /%