+
    ‹°³jÒ(  ã                   óò   € ^ RI t ^ RIHt ^ RIHt ^ RIHt ^ RIH	t	 ^ RI
Ht ^ RIHt ^ RIHt ^ R	IHt ^ R
IHt ^ RIHtHt ^ RIHt ^ RIHtHtHt  ! R R]]4      t ! R R]]4      t ! R R]]4      tR# )é    N)ÚAdd)ÚExpr)Úexpand)ÚMul)ÚS)Ú
ShapeError)Ú
MatrixExpr)ÚMatMul)Ú
ZeroMatrix)ÚRandomSymbolÚ	is_random)Ú_sympify)ÚVarianceÚ
CovarianceÚExpectationc                   óD   a € ] tR t^t o RtRR lt]R 4       tR tRt	V t
R# )ÚExpectationMatrixa¸  
Expectation of a random matrix expression.

Examples
========

>>> from sympy.stats import ExpectationMatrix, Normal
>>> from sympy.stats.rv import RandomMatrixSymbol
>>> from sympy import symbols, MatrixSymbol, Matrix
>>> k = symbols("k")
>>> A, B = MatrixSymbol("A", k, k), MatrixSymbol("B", k, k)
>>> X, Y = RandomMatrixSymbol("X", k, 1), RandomMatrixSymbol("Y", k, 1)
>>> ExpectationMatrix(X)
ExpectationMatrix(X)
>>> ExpectationMatrix(A*X).shape
(k, 1)

To expand the expectation in its expression, use ``expand()``:

>>> ExpectationMatrix(A*X + B*Y).expand()
A*ExpectationMatrix(X) + B*ExpectationMatrix(Y)
>>> ExpectationMatrix((X + Y)*(X - Y).T).expand()
ExpectationMatrix(X*X.T) - ExpectationMatrix(X*Y.T) + ExpectationMatrix(Y*X.T) - ExpectationMatrix(Y*Y.T)

To evaluate the ``ExpectationMatrix``, use ``doit()``:

>>> N11, N12 = Normal('N11', 11, 1), Normal('N12', 12, 1)
>>> N21, N22 = Normal('N21', 21, 1), Normal('N22', 22, 1)
>>> M11, M12 = Normal('M11', 1, 1), Normal('M12', 2, 1)
>>> M21, M22 = Normal('M21', 3, 1), Normal('M22', 4, 1)
>>> x1 = Matrix([[N11, N12], [N21, N22]])
>>> x2 = Matrix([[M11, M12], [M21, M22]])
>>> ExpectationMatrix(x1 + x2).doit()
Matrix([
[12, 14],
[24, 26]])

Nc                óê   € \        V4      pVf+   \        V4      '       g   V# \        P                  ! W4      pM"\        V4      p\        P                  ! WV4      pVP                  Vn        W#n        V# ©N)r   r   r   Ú__new__ÚshapeÚ_shapeÚ
_condition)ÚclsÚexprÚ	conditionÚobjs   &&& Ún/home/luca/screen-checking/.venv/lib/python3.14/site-packages/sympy/stats/symbolic_multivariate_probability.pyr   ÚExpectationMatrix.__new__8   s\   € Ü˜‹~ˆØÒÜ˜T—?’?Ø�Ü—,’,˜sÓ)‰Cä  Ó+ˆIÜ—,’,˜s¨)Ó4ˆCà—Z‘ZˆŒ
Ø"ŒØˆ
ó    c                ó   € V P                   # r   ©r   ©Úselfs   &r   r   ÚExpectationMatrix.shapeF   ó   € à�{‰{Ðr    c                óÎ  a€ V P                   ^ ,          pV P                  o\        V4      '       g   V# \        V\        4      '       d+   \        P
                  ! V3R lVP                    4       4      # \        V4      p\        V\        4      '       d+   \        P
                  ! V3R lVP                    4       4      # \        V\        \        34      '       Ed
   . p. p. pVP                    FŠ  p\        V4      '       dA   V'       d   VP                  V4       MVP                  V4       . pVP                  V4       KT  VP                  '       d   VP                  V4       Ky  VP                  V4       KŒ  	  \        V4      ^ 8X  d   V # \        P
                  ! V4      \        \        P
                  ! V4      SR7      ,          \        P
                  ! V4      ,          # V # )r   c              3   óZ   <"  € T F   p\        VSR 7      P                  4       x € K"  	  R# 5i©©r   N©r   r   ©Ú.0Úar   s   & €r   Ú	<genexpr>Ú+ExpectationMatrix.expand.<locals>.<genexpr>Q   s+   øé € ð  (Ù&˜ô !,¨A¸Ô C× JÑ J× LÐ LÛ&ùó   ƒ(+c              3   óZ   <"  € T F   p\        VSR 7      P                  4       x € K"  	  R# 5ir)   r+   r,   s   & €r   r/   r0   V   s+   øé € ð  /Ù-˜ô !,¨A¸Ô C× JÑ J× LÐ LÛ-ùr1   r*   )Úargsr   r   Ú
isinstancer   ÚfromiterÚ_expandr   r
   ÚextendÚappendÚ	is_MatrixÚlenr   )	r$   Úhintsr   Úexpand_exprÚrvÚnonrvÚpostnonr.   r   s	   &,      @r   r   ÚExpectationMatrix.expandJ   sk  ø€ Ø�y‰y˜�|ˆØ—O‘Oˆ	Ü˜�ŠØˆKä�dœC× Ò Ü—<’<ô  (Ø!ŸYšYó (ó (ð (ô ˜d“mˆÜ�k¤3×'Ò'Ü—<’<ô  /Ø(×-Ò-ó /ó /ð /ô ˜œs¤F˜m×,Ó,ØˆBØˆEØˆGà—Y”Y�Ü˜Q—<’<ßØŸ	™	 'Õ*àŸ™ WÔ-Ø �GØ—I‘I˜a–LØ—[—[�[Ø—N‘N 1Ö%à—L‘L –Oñ ô �5‹z˜QŒØ�Ü—<’< Ó&¤{´3·<²<ÀÓ3CØ'ô()õ )Ü),¯ª°gÓ)>õ?ð ?ð ˆr    © r   ©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Úpropertyr   r   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r   r      s.   ø‡ € ñ%ôLð ñó ð÷(ð (r    r   c                   óD   a € ] tR t^tt o RtRR lt]R 4       tR tRt	V t
R# )ÚVarianceMatrixa  
Variance of a random matrix probability expression. Also known as
Covariance matrix, auto-covariance matrix, dispersion matrix,
or variance-covariance matrix.

Examples
========

>>> from sympy.stats import VarianceMatrix
>>> from sympy.stats.rv import RandomMatrixSymbol
>>> from sympy import symbols, MatrixSymbol
>>> k = symbols("k")
>>> A, B = MatrixSymbol("A", k, k), MatrixSymbol("B", k, k)
>>> X, Y = RandomMatrixSymbol("X", k, 1), RandomMatrixSymbol("Y", k, 1)
>>> VarianceMatrix(X)
VarianceMatrix(X)
>>> VarianceMatrix(X).shape
(k, k)

To expand the variance in its expression, use ``expand()``:

>>> VarianceMatrix(A*X).expand()
A*VarianceMatrix(X)*A.T
>>> VarianceMatrix(A*X + B*Y).expand()
2*A*CrossCovarianceMatrix(X, Y)*B.T + A*VarianceMatrix(X)*A.T + B*VarianceMatrix(Y)*B.T
Nc                ó   € \        V4      p^VP                  9  d   \        R4      hVP                  ^,          ^8X  d'   VP                  ^ ,          VP                  ^ ,          3M%VP                  ^,          VP                  ^,          3pV'       d   \        P                  ! WV4      pM\        P                  ! W4      pW4n        W$n        V# )é   úExpression is not a vector©r   r   r   r   r   r   r   )r   Úargr   r   r   s   &&&  r   r   ÚVarianceMatrix.__new__�   s™   € Ü�s‹mˆà�C—I‘IÔÜÐ9Ó:Ð:à03·	±	¸!µÀÔ0A�—‘˜1•˜sŸy™y¨�|Ñ,ÈÏ	É	ÐRSÍÐVY×V_ÑV_Ð`aÕVbÐGcˆçÜ—,’,˜s¨Ó3‰Cä—,’,˜sÓ(ˆCàŒ
Ø"ŒØˆ
r    c                ó   € V P                   # r   r"   r#   s   &r   r   ÚVarianceMatrix.shape    r&   r    c           	     ó  a	€ V P                   ^ ,          pV P                  o	\        V4      '       g   \        V P                  !  # \        V\        4      '       d   V # \        V\        4      '       dƒ   . pVP                    F'  p\        V4      '       g   K  VP                  V4       K)  	  \        V	3R lV 4       !  pV	3R lp\        \        V\        P                  ! V^4      4      !  pWW,           # \        V\        \        34      '       dø   . p. pVP                    F8  p\        V4      '       d   VP                  V4       K'  VP                  V4       K:  	  \        V4      ^ 8X  d   \        V P                  !  # \        V4      ^ 8X  d   V # \        V4      ^8”  d   V # \        P                  ! V4      \!        \        P                  ! V4      S	4      ,          \        P                  ! V4      P#                  4       ,          # V # )r   c              3   óX   <"  € T F  p\        VS4      P                  4       x € K!  	  R # 5ir   )r   r   )r-   Úxvr   s   & €r   r/   Ú(VarianceMatrix.expand.<locals>.<genexpr>²   s$   øé € ÐLÉÀ2œh r¨9Ó5×<Ñ<×>Ð>Ëùs   ƒ'*c                 óD   <€ ^\        V RS/ P                  4       ,          # )é   r   )r   r   )Úxr   s   &€r   Ú<lambda>Ú'VarianceMatrix.expand.<locals>.<lambda>³   s   ø€  Q¤z°1Ð'JÀ	Ñ'J×'QÑ'QÓ'SÖ%Sr    )r3   r   r   r   r   r4   r   r   r8   ÚmapÚ	itertoolsÚcombinationsr   r
   r:   r5   r   Ú	transpose)
r$   r;   rS   r=   r.   Ú	variancesÚmap_to_covarÚcovariancesr>   r   s
   &,       @r   r   ÚVarianceMatrix.expand¤   s‡  ø€ Ø�i‰i˜�lˆØ—O‘Oˆ	ä˜�~Š~Ü˜tŸz™zÑ*Ð*ä�cœ<×(Ò(ØˆKÜ˜œS×!Ò!ØˆBØ—X”X�Ü˜Q—<”<Ø—I‘I˜a–Lñ ô ÔLÉÓLÑMˆIÜSˆLÜœs <´×1GÒ1GÈÈAÓ1NÓOÑPˆKØÕ*Ð*Ü˜œc¤6˜]×+Ò+ØˆEØˆBØ—X”X�Ü˜Q—<’<Ø—I‘I˜a–Là—L‘L –Oñ	 ô
 �2‹w˜!Œ|Ü! 4§:¡:Ñ.Ð.ä�5‹z˜QŒØ�ä�2‹w˜Œ{Ø�Ü—<’< Ó&¤x´·²¸RÓ0@Ø%ó('õ 'Ü(+¯ª°UÓ(;×'FÑ'FÓ'HõIð Ið ˆr    rA   r   rB   rK   s   @r   rN   rN   t   s-   ø‡ € ñô4ð" ñó ð÷&ð &r    rN   c                   ód   a € ] tR t^Ìt o RtR	R lt]R 4       tR t]	R 4       t
]	R 4       tRtV tR# )
ÚCrossCovarianceMatrixad  
Covariance of a random matrix probability expression.

Examples
========

>>> from sympy.stats import CrossCovarianceMatrix
>>> from sympy.stats.rv import RandomMatrixSymbol
>>> from sympy import symbols, MatrixSymbol
>>> k = symbols("k")
>>> A, B = MatrixSymbol("A", k, k), MatrixSymbol("B", k, k)
>>> C, D = MatrixSymbol("C", k, k), MatrixSymbol("D", k, k)
>>> X, Y = RandomMatrixSymbol("X", k, 1), RandomMatrixSymbol("Y", k, 1)
>>> Z, W = RandomMatrixSymbol("Z", k, 1), RandomMatrixSymbol("W", k, 1)
>>> CrossCovarianceMatrix(X, Y)
CrossCovarianceMatrix(X, Y)
>>> CrossCovarianceMatrix(X, Y).shape
(k, k)

To expand the covariance in its expression, use ``expand()``:

>>> CrossCovarianceMatrix(X + Y, Z).expand()
CrossCovarianceMatrix(X, Z) + CrossCovarianceMatrix(Y, Z)
>>> CrossCovarianceMatrix(A*X, Y).expand()
A*CrossCovarianceMatrix(X, Y)
>>> CrossCovarianceMatrix(A*X, B.T*Y).expand()
A*CrossCovarianceMatrix(X, Y)*B
>>> CrossCovarianceMatrix(A*X + B*Y, C.T*Z + D.T*W).expand()
A*CrossCovarianceMatrix(X, W)*D + A*CrossCovarianceMatrix(X, Z)*C + B*CrossCovarianceMatrix(Y, W)*D + B*CrossCovarianceMatrix(Y, Z)*C

Nc                ó  € \        V4      p\        V4      p^VP                  9  g;   ^VP                  9  g*   VP                  ^,          VP                  ^,          8w  d   \        R4      hVP                  ^,          ^8X  d?   VP                  ^,          ^8X  d'   VP                  ^ ,          VP                  ^ ,          3MRpV'       d   \        P                  ! WW#4      pM\        P                  ! WV4      pWEn        W5n        V# )rP   rQ   )rP   rP   rR   )r   Úarg1Úarg2r   r   r   s   &&&&  r   r   ÚCrossCovarianceMatrix.__new__ì   sÃ   € Ü˜‹~ˆÜ˜‹~ˆà�T—Z‘ZÔ Q¨d¯j©jÔ%8¸d¿j¹jÈ½mÈtÏzÉzÐZ[Í}Ô>\ÜÐ9Ó:Ð:à26·*±*¸Qµ-À1Ô2DÈÏÉÐTUÍÐZ[ÔI[�—‘˜A• §
¡
¨1¥Ñ.Øð 	÷ Ü—,’,˜s¨$Ó:‰Cä—,’,˜s¨$Ó/ˆCàŒ
Ø"ŒØˆ
r    c                ó   € V P                   # r   r"   r#   s   &r   r   ÚCrossCovarianceMatrix.shapeÿ   r&   r    c                óÌ  € V P                   ^ ,          pV P                   ^,          pV P                  pW#8X  d   \        W$4      P                  4       # \	        V4      '       d   \	        V4      '       g   \        V P                  !  # \        V\        4      '       d#   \        V\        4      '       d   \        W#V4      # V P                  VP                  4       4      pV P                  VP                  4       4      pV UUU	U
u. uF9  w  rxV F.  w  ršV\        WŠVR7      ,          V	P                  4       ,          NK0  	  K;  	  pp	ppp
\        P                  ! V4      # u up
p	ppi )r   r*   )r3   r   rN   r   r   r   r   r4   r   ri   Ú_expand_single_argumentrc   r   r5   )r$   r;   rk   rl   r   Úcoeff_rv_list1Úcoeff_rv_list2r.   Úr1ÚbÚr2Úaddendss   &,          r   r   ÚCrossCovarianceMatrix.expand  s  € Ø�y‰y˜�|ˆØ�y‰y˜�|ˆØ—O‘Oˆ	àŒ<Ü! $Ó2×9Ñ9Ó;Ð;ä˜�Š¤i°§o¢oÜ˜tŸz™zÑ*Ð*ä�dœL×)Ò)¬j¸¼|×.LÒ.LÜ(¨°YÓ?Ð?à×5Ñ5°d·k±k³mÓDˆØ×5Ñ5°d·k±k³mÓDˆñ #1öPÙ"0‘w˜Ã±W°að Ô*¨2¸YÔGÕGÈÏÉË×UÐUÙ@Nñ VÙ"0ð 	ó Pä�|Š|˜GÓ$Ð$ùõPs   Ä?E
c                ó:  € \        V\        4      '       d   \        P                  V3.# \        V\        4      '       dŠ   . pVP
                   Fu  p\        V\        \        34      '       d#   VP                  V P                  V4      4       KA  \        V4      '       g   KT  VP                  \        P                  V34       Kw  	  V# \        V\        \        34      '       d   V P                  V4      .# \        V4      '       d   \        P                  V3.# R # r   )r4   r   r   ÚOner   r3   r   r
   r8   Ú_get_mul_nonrv_rv_tupler   )r   r   Úoutvalr.   s   &&  r   rq   Ú-CrossCovarianceMatrix._expand_single_argument  sÐ   € ô �dœL×)Ò)Ü—U‘U˜D�M�?Ð"Ü˜œc×"Ò"ØˆFØ—Y”Y�Ü˜a¤#¤v ×/Ò/Ø—M‘M #×"=Ñ"=¸aÓ"@ÖAÜ˜q—\”\Ø—M‘M¤1§5¡5¨! *Ö-ñ	 ð ˆMÜ˜œs¤F˜m×,Ò,Ø×/Ñ/°Ó5Ð6Ð6Ü�t�_Š_Ü—U‘U˜D�M�?Ð"ñ r    c                óò   € . p. pVP                    F8  p\        V4      '       d   VP                  V4       K'  VP                  V4       K:  	  \        P                  ! V4      \        P                  ! V4      3# r   )r3   r   r8   r   r5   )r   Úmr=   r>   r.   s   &&   r   r{   Ú-CrossCovarianceMatrix._get_mul_nonrv_rv_tuple+  sX   € àˆØˆØ—”ˆAÜ˜�|Š|Ø—	‘	˜!–à—‘˜Q–ñ	 ô
 —’˜UÓ#¤S§\¢\°"Ó%5Ð6Ð6r    rA   r   )rC   rD   rE   rF   rG   r   rH   r   r   Úclassmethodrq   r{   rI   rJ   rK   s   @r   ri   ri   Ì   sP   ø‡ € ñô>ð& ñó ðò%ð* ñ#ó ð#ð$ ñ7ó ö7r    ri   ) ra   Úsympy.core.addr   Úsympy.core.exprr   Úsympy.core.functionr   r6   Úsympy.core.mulr   Úsympy.core.singletonr   Úsympy.matrices.exceptionsr   Ú"sympy.matrices.expressions.matexprr	   Ú!sympy.matrices.expressions.matmulr
   Ú"sympy.matrices.expressions.specialr   Úsympy.stats.rvr   r   Úsympy.core.sympifyr   Ú sympy.stats.symbolic_probabilityr   r   r   r   rN   ri   rA   r    r   Ú<module>rŽ      sa   ðÛ å Ý  Ý 1Ý Ý "Ý 0Ý 9Ý 4Ý 9ß 2Ý 'ß NÑ Nôa˜ Zô aôFV�X˜zô Vôph7˜J¨
ö h7r    