Ë
    7^(h[>  ã                   óÈ  — d 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 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mZmZ ddl m!Z!m"Z" ddl#m$Z$m%Z% ddl&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z. ddl/m0Z0 ddl1m2Z2 ddl3m4Z4  G d„ de'«      Z5 G d„ d«      Z6 G d„ d«      Z7 G d„ d«      Z8e6e8e8e7dœZ9 G d„ de)e(«      Z: G d „ d!e+«      Z; G d"„ d#e)«      Z<y$)%zq
Joint Random Variables Module

See Also
========
sympy.stats.rv
sympy.stats.frv
sympy.stats.crv
sympy.stats.drv
é    )Úprod)ÚBasic)ÚLambda)ÚS)ÚDummyÚSymbol)Úsympify)Ú
ProductSet©ÚIndexed)ÚProduct)ÚSumÚ	summation)ÚTuple)ÚIntegralÚ	integrate)ÚImmutableMatrixÚmatrix2numpyÚ
list2numpy)ÚSingleContinuousDistributionÚSingleContinuousPSpace)ÚSingleDiscreteDistributionÚSingleDiscretePSpace)ÚProductPSpaceÚNamedArgsMixinÚDistributionÚProductDomainÚRandomSymbolÚrandom_symbolsÚSingleDomainÚ_symbol_converter)Úiterable)Ú
filldedent)Úimport_modulec                   ó´   — e Zd ZdZd„ Zed„ «       Zed„ «       Zed„ «       Zed„ «       Z	ed„ «       Z
ed„ «       Zed	„ «       Zd
„ Zd„ Zdd„Zd„ Zd„ Zdd„Zd„ Zy)ÚJointPSpacezt
    Represents a joint probability space. Represented using symbols for
    each component and a distribution.
    c                 ó¶   — t        |t        «      rt        ||«      S t        |t        «      rt	        ||«      S t        |«      }t        j                  | ||«      S ©N)Ú
isinstancer   r   r   r   r!   r   Ú__new__)ÚclsÚsymÚdists      úR/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/stats/joint_rv.pyr*   zJointPSpace.__new__)   sO   € Ü�dÔ8Ô9Ü)¨#¨tÓ4Ð4Ü�dÔ6Ô7Ü'¨¨TÓ2Ð2Ü Ó$ˆÜ�}‰}˜S # tÓ,Ð,ó    c                 ó.   — | j                   j                  S r(   )ÚdomainÚset©Úselfs    r.   r2   zJointPSpace.set1   s   € à�{‰{�‰Ðr/   c                 ó    — | j                   d   S )Nr   ©Úargsr3   s    r.   ÚsymbolzJointPSpace.symbol5   ó   € à�y‰y˜‰|Ðr/   c                 ó    — | j                   d   S ©Né   r6   r3   s    r.   ÚdistributionzJointPSpace.distribution9   r9   r/   c                 ó.   — t        | j                  | «      S r(   )ÚJointRandomSymbolr8   r3   s    r.   ÚvaluezJointPSpace.value=   s   € ä  §¡¨dÓ3Ð3r/   c                 óî   — | j                   j                  }t        |t        «      rt	        t        |j                  «      «      S t        |t        «      r|j                  d   d   S t        j                  S )Nr   éÿÿÿÿ)
r=   r2   r)   r
   r   Úlenr7   r   ÚlimitsÚOne)r4   Ú_sets     r.   Úcomponent_countzJointPSpace.component_countA   sV   € à× Ñ ×$Ñ$ˆÜ�dœJÔ'Ü”S˜Ÿ™“^Ó$Ð$Ü˜œgÔ&Ø—;‘;˜q‘> "Ñ%Ð%Ü�u‰uˆr/   c                 ó–   — t        | j                  «      D �cg c]  }t        | j                  |«      ‘Œ }} | j                  |Ž S c c}w r(   )ÚrangerG   r   r8   r=   )r4   Úir,   s      r.   ÚpdfzJointPSpace.pdfJ   sD   € ä05°d×6JÑ6JÓ0KÖL¨1Œw�t—{‘{ AÕ&ÐLˆÐLØ ˆt× Ñ  #Ð&Ð&ùò Ms   ˜Ac                 óâ   — t        | j                  «      }|s*t        | j                  | j                  j                  «      S t        |D �cg c]  }|j                  j                  ‘Œ c}Ž S c c}w r(   )r   r=   r    r8   r2   r   Úpspacer1   ©r4   ÚrvsÚrvs      r.   r1   zJointPSpace.domainO   sU   € ä˜T×.Ñ.Ó/ˆÙÜ §¡¨T×->Ñ->×-BÑ-BÓCÐCÜ¸#Ö>°B˜rŸy™y×/Ó/Ò>Ð?Ð?ùÒ>s   ÁA,c                 ó4   — | j                   j                  |   S r(   )r2   r7   )r4   Úindexs     r.   Úcomponent_domainzJointPSpace.component_domainV   s   € Ø�x‰x�}‰}˜UÑ#Ð#r/   c                 ó\  ‡ — ‰ j                   }|j                  t        «      rt        d«      ‚t	        |«      D �cg c]  }t        ‰ j                  |«      ‘Œ }}|D �cg c]  }t        t        |«      «      ‘Œ }}t        t        ||«      «      }t        ˆ fd„|D «       «      }|D �cg c]
  }||vsŒ|g‘Œ }}d}	t	        |«      D ]R  }||vsŒ||	   j                  ‰ j                  j                  j                  |   «       t        ||	   «      ||	<   |	dz  }	ŒT ‰ j                  j                  r$t!        |t#         ‰ j                  |Ž g|¢­Ž «      }
n9‰ j                  j$                  r#t!        |t'         ‰ j                  |Ž g|¢­Ž «      }

j)                  |«      S c c}w c c}w c c}w )Nz_Marginal distributions cannot be computed for symbolic dimensions. It is a work under progress.c           	   3   ón   •K  — | ],  }t        t        t        ‰j                  |«      «      «      –— Œ. y ­wr(   )r   Ústrr   r8   ©Ú.0rJ   r4   s     €r.   ú	<genexpr>z4JointPSpace.marginal_distribution.<locals>.<genexpr>a   s&   øè ø€ ÒJ¸Q”Fœ3œw t§{¡{°AÓ6Ó7×8ÑJùs   ƒ25r   r<   )rG   Úatomsr   Ú
ValueErrorrI   r   r8   rV   ÚdictÚzipÚtupleÚappendr=   r2   r7   Úis_Continuousr   r   Úis_Discreter   Úxreplace)r4   ÚindicesÚcountrJ   ÚorigÚall_symsÚreplace_dictr,   rD   rR   Úfs   `          r.   Úmarginal_distributionz!JointPSpace.marginal_distributionY   s�  ø€ Ø×$Ñ$ˆØ�;‰;”vÔÜð Xó Yð Yä16°u³Ö>¨A”˜Ÿ™ QÕ'Ð>ˆÐ>Ø,0Ö1 q”Fœ3˜q›6•NÐ1ˆÐ1ÜœC ¨$Ó/Ó0ˆÜÓJÀ'ÔJÓJˆØ (Ö9˜1¨A°SªL�1’$Ð9ˆÐ9ØˆÜ�u“ò 	ˆAØ˜ÒØ�u‘×$Ñ$ T×%6Ñ%6×%:Ñ%:×%?Ñ%?ÀÑ%BÔCÜ % f¨U¡mÓ 4��u‘Ø˜‘
‘ð		ð
 ×Ñ×*Ò*Ü�sœIÐ&7 d×&7Ñ&7¸Ð&BÐLÀVÒLÓM‰AØ×Ñ×*Ò*Ü�sœIÐ&7 d×&7Ñ&7¸Ð&BÐLÀVÒLÓMˆAØ�z‰z˜,Ó'Ð'ùò ?ùÚ1ùò :s   »FÁF$Â(	F)Â2F)Nc           	      óF  ‡ ‡— t        ˆ fd„t        ‰ j                  «      D «       «      }‰xs |Št        ˆfd„|D «       «      s|S |‰ j                  z  }‰D ]~  }t        |t        «      r>|j                  |t        t        |j                  «      |j                  d   «      i«      }ŒQt        |t        «      sŒb|j                  ||j                  i«      }Œ€ ‰ j                  t        |«      v rt        t!        d«      «      ‚t        ˆ fd„|D «       «      }t#        |g|¢­Ž S )Nc              3   ó<   •K  — | ]  }‰j                   |   –— Œ y ­wr(   )r@   rW   s     €r.   rY   z2JointPSpace.compute_expectation.<locals>.<genexpr>p   s   øè ø€ ÒH q�T—Z‘Z •]ÑHùs   ƒc              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wr(   © )rX   rJ   rO   s     €r.   rY   z2JointPSpace.compute_expectation.<locals>.<genexpr>r   s   øè ø€ Ò* �1˜”8Ñ*ùs   ƒr<   zq
            Expectations of expression with unindexed joint random symbols
            cannot be calculated yet.c              3   óÖ   •K  — | ]`  }t        t        |j                  «      |j                  d    «      ‰j                  j
                  j                  |j                  d       f–— Œb y­w)r<   N)r   rV   Úbaser7   r=   r2   )rX   rP   r4   s     €r.   rY   z2JointPSpace.compute_expectation.<locals>.<genexpr>~   sY   øè ø€ ò DØ8:ô  ¤ B§G¡G£¨R¯W©W°Q©ZÓ8Ø×Ñ×!Ñ!×&Ñ& r§w¡w¨q¡zÑ2ô4ñ Dùs   ƒA&A))r^   rI   rG   ÚanyrK   r)   r   rb   rV   ro   r7   r   r8   r@   r   ÚNotImplementedErrorr#   r   )r4   ÚexprrO   ÚevaluateÚkwargsÚsymsrP   rD   s   ` `     r.   Úcompute_expectationzJointPSpace.compute_expectationo   s  ù€ ÜÓH¬E°$×2FÑ2FÓ,GÔHÓHˆØŠk�TˆÜÓ* TÔ*Ô*ØˆKØ�D—H‘H‰}ˆØò 	6ˆBÜ˜"œgÔ&Ø—}‘} b¬'´#°b·g±g³,ÀÇÁÈÁ
Ó*KÐ%LÓM‘Ü˜B¤Õ-Ø—}‘} b¨"¯)©) _Ó5‘ð		6ð
 �:‰:œ¨Ó-Ñ-Ü%¤jð 2)ó '*ó +ð +ô ó DØ>BôDó Dˆä˜Ð&˜vÒ&Ð&r/   c                 ó   — t        «       ‚r(   ©rq   ©r4   Ú	conditions     r.   ÚwherezJointPSpace.where‚   ó   € Ü!Ó#Ð#r/   c                 ó   — t        «       ‚r(   rx   )r4   rr   s     r.   Úcompute_densityzJointPSpace.compute_density…   r|   r/   c                 ój   — t        | j                  | «      | j                  j                  |||¬«      iS )zo
        Internal sample method

        Returns dictionary mapping RandomSymbol to realization value.
        )ÚlibraryÚseed)r   r8   r=   Úsample)r4   Úsizer€   r�   s       r.   r‚   zJointPSpace.sampleˆ   s<   € ô ˜TŸ[™[¨$Ó/°×1BÑ1B×1IÑ1IÈ$Ø#¨$ð 2Jó 20ð 1ð 	1r/   c                 ó   — t        «       ‚r(   rx   ry   s     r.   ÚprobabilityzJointPSpace.probability‘   r|   r/   )NF©rm   ÚscipyN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r*   Úpropertyr2   r8   r=   r@   rG   rK   r1   rS   ri   rv   r{   r~   r‚   r…   rm   r/   r.   r&   r&   $   s½   „ ñò-ð ñó ðð ñó ðð ñó ðð ñ4ó ð4ð ñó ðð ñ'ó ð'ð ñ@ó ð@ò$ò(ó,'ò&$ò$ó1ó$r/   r&   c                   ó(   — e Zd ZdZdd„Zed„ «       Zy)ÚSampleJointScipyz7Returns the sample from scipy of the given distributionNc                 ó(   — | j                  |||«      S r(   )Ú_sample_scipy©r+   r-   rƒ   r�   s       r.   r*   zSampleJointScipy.__new__—   ó   € Ø× Ñ   t¨TÓ2Ð2r/   c                 ó¦  ‡	‡
— ddl }|�t        |t        «      r|j                  j	                  |¬«      Š	n|Š	ddlmŠ
 ˆ	ˆ
fd„ˆ	ˆ
fd„ˆ	ˆ
fd„dœ}d	„ d
„ d„ dœ}|j                  «       }|j                  j                  |vry ||j                  j                     ||«      }|j                  | ||j                  j                     |«      z   «      S )zSample from SciPy.r   N©r�   )Ústatsc                 óª   •— ‰j                   j                  t        | j                  «      j	                  «       t        | j
                  «      |‰¬«      S )N)ÚmeanÚcovrƒ   Úrandom_state)Úmultivariate_normalrO   r   ÚmuÚflattenÚsigma©r-   rƒ   Ú
rand_stateÚscipy_statss     €€r.   ú<lambda>z0SampleJointScipy._sample_scipy.<locals>.<lambda>¥   sF   ø€ À×A`ÑA`×AdÑAdÜ! $§'¡'Ó*×2Ñ2Ó4Ü  §¡Ó,°4Àjð Beó BR€ r/   c                 óŒ   •— ‰j                   j                  t        | j                  t        «      j                  «       |‰¬«      S )N)Úalpharƒ   r™   )Ú	dirichletrO   r   r£   Úfloatrœ   rž   s     €€r.   r¡   z0SampleJointScipy._sample_scipy.<locals>.<lambda>¨   s=   ø€ ¸{×?TÑ?T×?XÑ?XÜ  §¡¬UÓ3×;Ñ;Ó=ÀDÐWað @Yó @c€ r/   c                 ó´   •— ‰j                   j                  t        | j                  «      t	        | j
                  t        «      j                  «       |‰¬«      S )N)ÚnÚprƒ   r™   )ÚmultinomialrO   Úintr§   r   r¨   r¥   rœ   rž   s     €€r.   r¡   z0SampleJointScipy._sample_scipy.<locals>.<lambda>ª   sE   ø€ ¸+×:QÑ:Q×:UÑ:UÜ�d—f‘f“+¤¨D¯F©F´EÓ!:×!BÑ!BÓ!DÈ4Ð^hð ;Vó ;j€ r/   ©ÚMultivariateNormalDistributionÚMultivariateBetaDistributionÚMultinomialDistributionc                 ó\   — t        | j                  «      j                  «       j                  S r(   ©r   r›   rœ   Úshape©r-   s    r.   r¡   z0SampleJointScipy._sample_scipy.<locals>.<lambda>¯   ó   € ¼<ÈÏÉÓ;P×;XÑ;XÓ;Z×;`Ñ;`€ r/   c                 ó\   — t        | j                  «      j                  «       j                  S r(   ©r   r£   rœ   r±   r²   s    r.   r¡   z0SampleJointScipy._sample_scipy.<locals>.<lambda>°   ó   € ¼ÀDÇJÁJÓ9O×9WÑ9WÓ9Y×9_Ñ9_€ r/   c                 ó\   — t        | j                  «      j                  «       j                  S r(   ©r   r¨   rœ   r±   r²   s    r.   r¡   z0SampleJointScipy._sample_scipy.<locals>.<lambda>±   ó   € ´J¸t¿v¹vÓ4F×4NÑ4NÓ4P×4VÑ4V€ r/   )Únumpyr)   rª   ÚrandomÚdefault_rngr‡   r•   ÚkeysÚ	__class__rˆ   Úreshape)r+   r-   rƒ   r�   rº   Úscipy_rv_mapÚsample_shapeÚ	dist_listÚsamplesrŸ   r    s            @@r.   r�   zSampleJointScipy._sample_scipyš   sÎ   ù€ ó 	Øˆ<œ: d¬CÔ0ØŸ™×1Ñ1°tÐ1Ó<‰JàˆJÝ.ô/Rô-cô(jñ
ˆñ /aÙ,_Ù'Vñ
ˆð !×%Ñ%Ó'ˆ	à�>‰>×"Ñ"¨)Ñ3Øà7�,˜tŸ~™~×6Ñ6Ñ7¸¸dÓCˆØ�‰˜tÐ&K l°4·>±>×3JÑ3JÑ&KÈDÓ&QÑQÓRÐRr/   r(   )rˆ   r‰   rŠ   r‹   r*   Úclassmethodr�   rm   r/   r.   rŽ   rŽ   •   s    „ ÙAó3ð ñSó ñSr/   rŽ   c                   ó(   — e Zd ZdZdd„Zed„ «       Zy)ÚSampleJointNumpyz7Returns the sample from numpy of the given distributionNc                 ó(   — | j                  |||«      S r(   )Ú_sample_numpyr‘   s       r.   r*   zSampleJointNumpy.__new__¿   r’   r/   c                 ó¤  ‡	— ddl }|�t        |t        «      r|j                  j	                  |¬«      Š	n|Š	ˆ	fd„ˆ	fd„ˆ	fd„dœ}d„ d	„ d
„ dœ}|j                  «       }|j                  j                  |vry ||j                  j                     |t        |«      «      }|j                  | ||j                  j                     |«      z   «      S )zSample from NumPy.r   Nr”   c                 ó¨   •— ‰j                  t        | j                  t        «      j	                  «       t        | j
                  t        «      |¬«      S )N)r—   r˜   rƒ   )rš   r   r›   r¥   rœ   r�   ©r-   rƒ   rŸ   s     €r.   r¡   z0SampleJointNumpy._sample_numpy.<locals>.<lambda>Ì   sB   ø€ À×A_ÑA_Ü! $§'¡'¬5Ó1×9Ñ9Ó;Ü  §¡¬UÓ3¸$ð B`ó B@€ r/   c                 óv   •— ‰j                  t        | j                  t        «      j	                  «       |¬«      S )N)r£   rƒ   )r¤   r   r£   r¥   rœ   rË   s     €r.   r¡   z0SampleJointNumpy._sample_numpy.<locals>.<lambda>Ï   s4   ø€ ¸z×?SÑ?SÜ  §¡¬UÓ3×;Ñ;Ó=ÀDð @Tó @J€ r/   c                 óž   •— ‰j                  t        | j                  «      t        | j                  t
        «      j                  «       |¬«      S )N)r§   Úpvalsrƒ   )r©   rª   r§   r   r¨   r¥   rœ   rË   s     €r.   r¡   z0SampleJointNumpy._sample_numpy.<locals>.<lambda>Ñ   s<   ø€ ¸*×:PÑ:PÜ�d—f‘f“+¤Z°·±¼Ó%>×%FÑ%FÓ%HÈtð ;Qó ;U€ r/   r«   c                 ó\   — t        | j                  «      j                  «       j                  S r(   r°   r²   s    r.   r¡   z0SampleJointNumpy._sample_numpy.<locals>.<lambda>Ö   r³   r/   c                 ó\   — t        | j                  «      j                  «       j                  S r(   rµ   r²   s    r.   r¡   z0SampleJointNumpy._sample_numpy.<locals>.<lambda>×   r¶   r/   c                 ó\   — t        | j                  «      j                  «       j                  S r(   r¸   r²   s    r.   r¡   z0SampleJointNumpy._sample_numpy.<locals>.<lambda>Ø   r¹   r/   )
rº   r)   rª   r»   r¼   r½   r¾   rˆ   r   r¿   )
r+   r-   rƒ   r�   rº   Únumpy_rv_maprÁ   rÂ   rÃ   rŸ   s
            @r.   rÈ   zSampleJointNumpy._sample_numpyÂ   sÏ   ø€ ó 	Øˆ<œ: d¬CÔ0ØŸ™×1Ñ1°tÐ1Ó<‰JàˆJó/@ó-Jó(Uñ
ˆñ /aÙ,_Ù'Vñ
ˆð !×%Ñ%Ó'ˆ	à�>‰>×"Ñ"¨)Ñ3Øà7�,˜tŸ~™~×6Ñ6Ñ7¸¼dÀ4»jÓIˆØ�‰˜tÐ&K l°4·>±>×3JÑ3JÑ&KÈDÓ&QÑQÓRÐRr/   r(   )rˆ   r‰   rŠ   r‹   r*   rÄ   rÈ   rm   r/   r.   rÆ   rÆ   ¼   s    „ ÙAó3ð ñSó ñSr/   rÆ   c                   ó(   — e Zd ZdZdd„Zed„ «       Zy)ÚSampleJointPymcz6Returns the sample from pymc of the given distributionNc                 ó(   — | j                  |||«      S r(   )Ú_sample_pymcr‘   s       r.   r*   zSampleJointPymc.__new__æ   s   € Ø×Ñ  d¨DÓ1Ð1r/   c           	      óJ  ‡	— 	 ddl Š	ˆ	fd„ˆ	fd„ˆ	fd„dœ}d„ d„ d	„ dœ}|j                  «       }|j                  j
                  |vryddl}|j                  d
«      j                  |j                  «       ‰	j                  «       5   ||j                  j
                     |«       ‰	j                  t        |«      dd|dd¬«      dd d   }ddd«       j                  | ||j                  j
                     |«      z   «      S # t        $ r ddlŠ	Y �Œw xY w# 1 sw Y   ŒNxY w)zSample from PyMC.r   Nc                 óÜ   •— ‰j                  dt        | j                  t        «      j	                  «       t        | j
                  t        «      d| j                  j                  d   f¬«      S )NÚXr<   r   )r›   r˜   r±   )ÚMvNormalr   r›   r¥   rœ   r�   r±   ©r-   Úpymcs    €r.   r¡   z.SampleJointPymc._sample_pymc.<locals>.<lambda>ò   sT   ø€ Ø—‘˜c¤l°4·7±7¼EÓ&B×&JÑ&JÓ&LÜ  §¡¬UÓ3¸A¸t¿w¹w¿}¹}ÈQÑ?OÐ;Pð ó Rð r/   c                 óv   •— ‰j                  dt        | j                  t        «      j	                  «       ¬«      S )NrÙ   )Úa)Ú	Dirichletr   r£   r¥   rœ   rÛ   s    €r.   r¡   z.SampleJointPymc._sample_pymc.<locals>.<lambda>õ   s,   ø€ Ø—‘˜s¤j°·±¼UÓ&C×&KÑ&KÓ&M�ÓNð r/   c           	      óÊ   •— ‰j                  dt        | j                  «      t        | j                  t
        «      j                  «       dt        | j                  «      f¬«      S )NrÙ   r<   )r§   r¨   r±   )ÚMultinomialrª   r§   r   r¨   r¥   rœ   rC   rÛ   s    €r.   r¡   z.SampleJointPymc._sample_pymc.<locals>.<lambda>÷   sN   ø€ Ø× Ñ  ¬¨D¯F©F«Ü˜TŸV™V¤UÓ+×3Ñ3Ó5¸aÄÀTÇVÁVÃÐ=Mð !ó Oð r/   r«   c                 ó\   — t        | j                  «      j                  «       j                  S r(   r°   r²   s    r.   r¡   z.SampleJointPymc._sample_pymc.<locals>.<lambda>ý   r³   r/   c                 ó\   — t        | j                  «      j                  «       j                  S r(   rµ   r²   s    r.   r¡   z.SampleJointPymc._sample_pymc.<locals>.<lambda>þ   r¶   r/   c                 ó\   — t        | j                  «      j                  «       j                  S r(   r¸   r²   s    r.   r¡   z.SampleJointPymc._sample_pymc.<locals>.<lambda>ÿ   r¹   r/   Úpymc3r<   F)ÚdrawsÚchainsÚprogressbarÚrandom_seedÚreturn_inferencedataÚcompute_convergence_checksrÙ   )rÜ   ÚImportErrorrå   r½   r¾   rˆ   ÚloggingÚ	getLoggerÚsetLevelÚERRORÚModelr‚   r   r¿   )
r+   r-   rƒ   r�   Úpymc_rv_maprÁ   rÂ   rí   rÃ   rÜ   s
            @r.   rÖ   zSampleJointPymc._sample_pymcé   s:  ø€ ð	!Ûó/Ró-Oó(Oñ	
ˆñ /aÙ,_Ù'Vñ
ˆð  ×$Ñ$Ó&ˆ	à�>‰>×"Ñ"¨)Ñ3ØãØ×Ñ˜'Ó"×+Ñ+¨G¯M©MÔ:Ø�Z‰Z‹\ñ 	iØ0ˆK˜Ÿ™×/Ñ/Ñ0°Ô6Ø—k‘k¬¨T«
¸1È%Ð]aÐx}ð  [`�kó  añ  bcð  dð  ehñ  iˆG÷	ið �‰˜tÐ&K l°4·>±>×3JÑ3JÑ&KÈDÓ&QÑQÓRÐRøô; ò 	!Þ ð	!ú÷4	ið 	iús   ƒD ÂADÄDÄDÄD"r(   )rˆ   r‰   rŠ   r‹   r*   rÄ   rÖ   rm   r/   r.   rÔ   rÔ   ã   s    „ Ù@ó2ð ñ"Só ñ"Sr/   rÔ   )r‡   rå   rÜ   rº   c                   óN   — e Zd ZdZdZd„ Zed„ «       Zed„ «       Zd„ Z	d
d„Z
d	„ Zy)ÚJointDistributionz“
    Represented by the random variables part of the joint distribution.
    Contains methods for PDF, CDF, sampling, marginal densities, etc.
    ©rK   c                 óÜ   — t        t        t        |«      «      }t        t	        |«      «      D ]'  }t        ||   t         «      sŒt        ||   «      ||<   Œ) t        j                  | g|¢­Ž S r(   )	ÚlistÚmapr	   rI   rC   r)   r   r   r*   )r+   r7   rJ   s      r.   r*   zJointDistribution.__new__  sa   € Ü”Cœ Ó&Ó'ˆÜ”s˜4“yÓ!ò 	3ˆAÜ˜$˜q™'¤4Õ(Ü)¨$¨q©'Ó2��Q’ð	3ô �}‰}˜SÐ( 4Ò(Ð(r/   c                 ó,   — t        | j                  «      S r(   )r   Úsymbolsr3   s    r.   r1   zJointDistribution.domain%  s   € ä˜TŸ\™\Ó*Ð*r/   c                 ó4   — | j                   j                  d   S r;   )Údensityr7   r3   s    r.   rK   zJointDistribution.pdf)  s   € à�|‰|× Ñ  Ñ#Ð#r/   c           	      ó  — t        |t        «      st        |›dt        |«      ›�«      ‚|j	                  «       }| j
                  j                  j                  }| j                  t        d„ | j                  D «       «      «      }t        t        |«      «      D ]l  }||   j                  r&t        |||   ||   j                  |||      f«      }Œ8||   j                   sŒHt#        |||   ||   j                  |||      f«      }Œn S )Nz should be of type dict, got c              3   ó:   K  — | ]  }|j                   d    –— Œ y­w©r   Nr6   )rX   rJ   s     r.   rY   z(JointDistribution.cdf.<locals>.<genexpr>2  s   è ø€ Ò>¨A˜aŸf™f Q�iÑ>ùs   ‚)r)   r\   r[   Útyper½   r1   r2   ÚsetsrK   r^   rú   rI   rC   r`   r   Úinfra   r   )r4   ÚotherrO   rF   rr   rJ   rü   s          r.   ÚcdfzJointDistribution.cdf-  sì   € Ü˜%¤Ô&ÜÂ%ÌÈeÌÐUÓVÐVØ�j‰j‹lˆØ�{‰{�‰×#Ñ#ˆØ�x‰xœÑ>°·±Ô>Ó>Ó?ˆÜ”s˜5“zÓ"ò 	$ˆAØ�1‰v×#Ò#Ü" 4¨#¨a©&°$°q±'·+±+Ø˜#˜a™&‘Mð*#ó $‘à�Q‘×#Ó#Ü˜d S¨¡V¨T°!©W¯[©[Ø˜#˜a™&‘Mð%#ó $‘ð	$ð ˆr/   Nc                 óâ   — d}||vrt        dt        |«      z  «      ‚t        |«      st        d|z  «      ‚t	        |   | ||¬«      }|�|S t        d| j
                  j                  ›d|›�«      ‚)z, A random realization from the distribution )r‡   rº   rå   rÜ   z&Sampling from %s is not supported yet.zFailed to import %sr”   zSampling for z# is not currently implemented from )rq   rV   r$   r[   Ú_get_sample_class_jrvr¾   rˆ   )r4   rƒ   r€   r�   Ú	librariesÚsampss         r.   r‚   zJointDistribution.sample<  s…   € ð 8ˆ	Ø˜)Ñ#Ü%Ð&NÜ*-¨g«,ñ'7ó 8ð 8ä˜WÔ%ÜÐ2°WÑ<Ó=Ð=ä% gÑ.¨t°TÀÔEˆàÐØˆLÝ!à—>‘>×*Ó*©Gð5óð 	r/   c                 ó    —  | j                   |Ž S r(   rõ   ©r4   r7   s     r.   Ú__call__zJointDistribution.__call__O  ó   € Øˆt�x‰x˜ˆÐr/   r†   )rˆ   r‰   rŠ   r‹   Ú	_argnamesr*   rŒ   r1   rK   r  r‚   r  rm   r/   r.   rô   rô     sJ   „ ñð
 €Iò)ð ñ+ó ð+ð ñ$ó ð$òóó&r/   rô   c                   ó   — e Zd ZdZd„ Zy)r?   zg
    Representation of random symbols with joint probability distributions
    to allow indexing."
    c                 óî   — t        | j                  t        «      r[| j                  j                  |k  dk(  r3t	        d| j
                  ›d| j                  j                  dz
  ›d�«      ‚t        | |«      S y )NTzIndex keys for z can only up to r<   ú.)r)   rM   r&   rG   r[   Únamer   )r4   Úkeys     r.   Ú__getitem__zJointRandomSymbol.__getitem__W  sf   € Ü�d—k‘k¤;Ô/Ø—‘×+Ñ+¨sÑ2°tÒ;Ý Ø—Y“Y §¡× ;Ñ ;¸aÓ ?ð"Aó Bð Bä˜4 Ó%Ð%ð	 0r/   N)rˆ   r‰   rŠ   r‹   r  rm   r/   r.   r?   r?   R  s   „ ñó&r/   r?   c                   óT   — e Zd ZdZd„ Zd„ Zed„ «       Zed„ «       Zd„ Z	d„ Z
d„ Zd	„ Zy
)ÚMarginalDistributionzî
    Represents the marginal distribution of a joint probability space.

    Initialised using a probability distribution and random variables(or
    their indexed components) which should be a part of the resultant
    distribution.
    c                 óZ  — t        |«      dk(  rt        |d   «      rt        |d   «      }t        d„ |D «       «      st	        t        d«      «      ‚t        j                  d„ |D «       «      }t        |t        «      st        t        |«      «      dk(  r|S t        j                  | ||«      S )Nr<   r   c              3   óH   K  — | ]  }t        |t        t        f«      –— Œ y ­wr(   )r)   r   r   ©rX   rP   s     r.   rY   z/MarginalDistribution.__new__.<locals>.<genexpr>l  s   è ø€ ÒI¸r”:˜b¤7¬LÐ"9×:ÑIùs   ‚ "z�Marginal distribution can be
             intitialised only in terms of random variables or indexed random
             variablesc              3   ó    K  — | ]  }|–— Œ y ­wr(   rm   r  s     r.   rY   z/MarginalDistribution.__new__.<locals>.<genexpr>p  s   è ø€ Ò. BœRÑ.ùs   ‚)rC   r"   r^   Úallr[   r#   r   Úfromiterr)   rô   r   r   r*   )r+   r-   rO   s      r.   r*   zMarginalDistribution.__new__i  s—   € Üˆs‹8�qŠ=œX c¨!¡fÔ-Ü˜˜A™“-ˆCÜÑIÀSÔIÔIÜœZð )ó ó ð ô �n‰nÑ.¨#Ô.Ó.ˆÜ˜$Ô 1Ô2´s¼>È$Ó;OÓ7PÐTUÒ7UØˆKÜ�}‰}˜S $¨Ó,Ð,r/   c                  ó   — y r(   rm   r3   s    r.   ÚcheckzMarginalDistribution.checku  s   € Ør/   c                 óÄ   — | j                   d   D �cg c]  }t        |t        «      sŒ|‘Œ }}t        |D �cg c]  }|j                  j
                  ‘Œ c}Ž S c c}w c c}w r;   )r7   r)   r   r
   rM   r2   )r4   rJ   rO   rP   s       r.   r2   zMarginalDistribution.setx  sM   € àŸ)™) A™,ÖF�Q¬*°Q¼Õ*EŠqÐFˆÐFÜ°CÖ8¨b˜BŸI™IŸM›MÒ8Ð9Ð9ùò GùÚ8s   ’A¨A·Ac                 ór   — | j                   d   }|D �ch c]  }|j                  j                  ’Œ c}S c c}w r;   )r7   rM   r8   rN   s      r.   rú   zMarginalDistribution.symbols}  s-   € à�i‰i˜‰lˆØ+.Ö/ R�—	‘	× Ó Ò/Ð/ùÒ/s   ”4c                 óª  ‡— | j                   d   | j                   d   }}t        |«      D �cg c]	  }||vsŒ|‘Œ }}t        |t        «      rRt	        |j
                  j                   «      }t        dd¬«      Št        ˆfd„|D «       «      }|j                  |«      }nt        d„ |D «       «      } t        || j                  ||«      «      ‰Ž S c c}w )Nr   r<   ÚxT)Úrealc              3   ó6   •K  — | ]  }t        ‰|«      –— Œ y ­wr(   r   )rX   rJ   r!  s     €r.   rY   z+MarginalDistribution.pdf.<locals>.<genexpr>ˆ  s   øè ø€ Ò6¨1œ  AŸÑ6ùs   ƒc              3   ó†   K  — | ]9  }t        |t        «      r|j                  j                  n|j                  d    –— Œ; y­wrÿ   )r)   r   rM   r8   r7   r  s     r.   rY   z+MarginalDistribution.pdf.<locals>.<genexpr>‹  s2   è ø€ ÒhÐ^`¬Z¸¼LÔ-I˜Ÿ™×)Ò)ÈrÏwÉwÐWXÉzÓYÑhùs   ‚?A)r7   r   r)   rô   rC   r1   r   r^   rK   r   Úcompute_pdf)r4   r!  rr   rO   rJ   Úmarginalise_outrd   ru   s    `      r.   rK   zMarginalDistribution.pdf‚  sº   ø€ Ø—I‘I˜a‘L $§)¡)¨A¡,ˆcˆÜ&4°TÓ&:ÖK ¸aÀsºlš1ÐKˆÐKÜ�dÔ-Ô.Ü˜Ÿ™×(Ñ(Ó)ˆEÜ�c Ô%ˆAÜÓ6°Ô6Ó6ˆDØ—8‘8˜D“>‰DäÑhÐdgÔhÓhˆDØDŒv�d˜D×,Ñ,¨T°?ÓCÓDÀaÐHÐHùò Ls
   ­	C·Cc                 óŽ   — |D ]?  }d}t        |t        «      r|j                  j                  }| j	                  ||z  |«      }ŒA |S r;   )r)   r   rM   rK   r&  )r4   rr   rO   rP   Úlpdfs        r.   r%  z MarginalDistribution.compute_pdfŽ  sJ   € Øò 	7ˆBØˆDÜ˜"œlÔ+Ø—y‘y—}‘}�Ø×'Ñ'¨¨T©	°2Ó6‰Dð		7ð
 ˆr/   c                 óÀ  — ddl m} t        |t        «      r|j                  j
                  }nQt        |t        «      rA|j                  j                  |j                  j                  |j                  d   «      «      }|j                  ||j                  j                  i«      }|j                  j                  r$t        ||j                  j                  f«      }|S |j                  j                  rht        j                   t        j"                  t        j$                  fv r|j&                  |j(                  f} |||j                  j                  |f«      }|S )Nr   )r   r<   )Úsympy.concrete.summationsr   r)   r   rM   r2   r   ro   rS   r7   rb   r8   r`   r   ra   r   ÚIntegersÚNaturalsÚ	Naturals0r  Úsup)r4   rr   rP   r   Údoms        r.   r&  z$MarginalDistribution.marginalise_out–  sþ   € Ý1Ü�bœ,Ô'Ø—)‘)—-‘-‰CÜ˜œGÔ$Ø—'‘'×*Ñ*Ø—	‘	×*Ñ*¨2¯7©7°1©:Ó6ó8ˆCà�}‰}˜b "§)¡)×"2Ñ"2Ð3Ó4ˆØ�9‰9×"Ò"ô ˜D 2§9¡9×#3Ñ#3°SÐ"9Ó:ˆDð ˆð �Y‰Y×"Ò"à”q—z‘z¤1§:¡:¬q¯{©{Ð;Ñ;Ø—w‘w §¡Ð(�Ù�t˜bŸi™i×.Ñ.°Ð4Ó5ˆDØˆr/   c                 ó    —  | j                   |Ž S r(   rõ   r
  s     r.   r  zMarginalDistribution.__call__©  r  r/   N)rˆ   r‰   rŠ   r‹   r*   r  rŒ   r2   rú   rK   r%  r&  r  rm   r/   r.   r  r  `  sN   „ ñò
-òð ñ:ó ð:ð ñ0ó ð0ò
Iòòó&r/   r  N)=r‹   Úmathr   Úsympy.core.basicr   Úsympy.core.functionr   Úsympy.core.singletonr   Úsympy.core.symbolr   r   Úsympy.core.sympifyr	   Úsympy.sets.setsr
   Úsympy.tensor.indexedr   Úsympy.concrete.productsr   r*  r   r   Úsympy.core.containersr   Úsympy.integrals.integralsr   r   Úsympy.matricesr   r   r   Úsympy.stats.crvr   r   Úsympy.stats.drvr   r   Úsympy.stats.rvr   r   r   r   r   r   r    r!   Úsympy.utilities.iterablesr"   Úsympy.utilities.miscr#   Úsympy.externalr$   r&   rŽ   rÆ   rÔ   r  rô   r?   r  rm   r/   r.   ú<module>rC     sË   ðñ	õ å "Ý &Ý "ß -Ý &Ý &Ý (Ý +ß 4Ý 'ß 9ß DÑ Dß Pß L÷=÷ =ó =õ /Ý +Ý (ôn$�-ô n$÷b%Sñ %S÷N%Sñ %S÷N)Sñ )SðZ ØØØñ	Ð ô:˜ nô :ôx
&˜ô 
&ôJ˜<õ Jr/   