Ë
    täi$R  ã                   ó  — d Z ddl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 ddlmZ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#m$Z$ ddl%m&Z& ddl'm(Z( ddl)m*Z* ddl+m,Z,m-Z-m.Z.m/Z/ ddl0m1Z1 ddl2m3Z3 ddl4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>  G d„ de5«      Z? G d„ de?e6«      Z@ G d„ de9e?«      ZA G d„ de?e7«      ZB G d„ d e>«      ZC G d!„ d"eCe=«      ZD G d#„ d$e:«      ZE G d%„ d&eEe;«      ZFd'„ ZGd(„ ZHy))*zl
Continuous Random Variables Module

See Also
========
sympy.stats.crv_types
sympy.stats.rv
sympy.stats.frv
é    )ÚBasic)Úcacheit)ÚLambdaÚ	PoleError)ÚIÚnanÚoo)ÚEqÚNe)ÚS)ÚDummyÚsymbols)Ú_sympifyÚsympify)Ú	factorial)Úexp)Ú	Piecewise)Ú
DiracDelta)ÚIntegralÚ	integrate)ÚAndÚOr)ÚPolynomialError)Úpoly)Úseries)Ú	FiniteSetÚIntersectionÚIntervalÚUnion)Úsolveset)Úreduce_rational_inequalities)
ÚRandomDomainÚSingleDomainÚConditionalDomainÚ	is_randomÚProductDomainÚPSpaceÚSinglePSpaceÚrandom_symbolsÚNamedArgsMixinÚDistributionc                   ó   — e Zd ZdZdZd„ Zy)ÚContinuousDomainzX
    A domain with continuous support

    Represented using symbols and Intervals.
    Tc                 ó   — t        d«      ‚)Nz#Not Implemented for generic Domains)ÚNotImplementedError©Úselfs    ú^/Volumes/fast/ai/experiments/MLX_z-image/.venv/lib/python3.12/site-packages/sympy/stats/crv.pyÚ
as_booleanzContinuousDomain.as_boolean,   s   € Ü!Ð"GÓHÐHó    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úis_Continuousr3   © r4   r2   r-   r-   $   s   „ ñð
 €MóIr4   r-   c                   ó   — e Zd ZdZdd„Zd„ Zy)ÚSingleContinuousDomainzj
    A univariate domain with continuous support

    Represented using a single symbol and interval.
    Nc                 óÄ   — |€| j                   }|s|S t        |«      t        | j                   «      k7  rt        d«      ‚t        || j                  | j
                  ffi |¤ŽS )NzValues should be equal)r   Ú	frozensetÚ
ValueErrorr   ÚsymbolÚset)r1   ÚexprÚ	variablesÚkwargss       r2   Úcompute_expectationz*SingleContinuousDomain.compute_expectation6   sZ   € ØÐØŸ™ˆIÙØˆKÜ�YÓ¤9¨T¯\©\Ó#:Ò:ÜÐ5Ó6Ð6ä˜˜tŸ{™{¨D¯H©HÐ5Ñ@¸Ñ@Ð@r4   c                 óL   — | j                   j                  | j                  «      S ©N)rA   Úas_relationalr@   r0   s    r2   r3   z!SingleContinuousDomain.as_boolean@   s   € Ø�x‰x×%Ñ% d§k¡kÓ2Ð2r4   rG   ©r5   r6   r7   r8   rE   r3   r:   r4   r2   r<   r<   0   s   „ ñó
Aó3r4   r<   c                   ó   — e Zd ZdZdd„Zd„ Zy)ÚProductContinuousDomainzE
    A collection of independent domains with continuous support
    Nc                 ó´   — |€| j                   }| j                  D ]:  }t        |«      t        |j                   «      z  }|sŒ' |j                  ||fi |¤Ž}Œ< |S rG   )r   Údomainsr>   rE   )r1   rB   rC   rD   ÚdomainÚdomain_varss         r2   rE   z+ProductContinuousDomain.compute_expectationI   sZ   € ØÐØŸ™ˆIØ—l”lˆFÜ# IÓ.´¸6¿>¹>Ó1JÑJˆKÚØ1�v×1Ñ1°$¸ÑNÀvÑN‘ð #ð ˆr4   c                 óh   — t        | j                  D �cg c]  }|j                  «       ‘Œ c}Ž S c c}w rG   )r   rM   r3   )r1   rN   s     r2   r3   z"ProductContinuousDomain.as_booleanR   s,   € Ü°t·|²|ÓD±|¨V�V×&Ñ&Õ(°|ÑDÐEÐEùÒDs   ”/rG   rI   r:   r4   r2   rK   rK   D   s   „ ñóóFr4   rK   c                   ó.   — e Zd ZdZdd„Zd„ Zed„ «       Zy)ÚConditionalContinuousDomainzo
    A domain with continuous support that has been further restricted by a
    condition such as $x > 3$.
    Nc                 ó°  — |€| j                   }|s|S | j                  j                  ||«      }|j                  t	        |j
                  «      }}| j                  g}|�ri|j                  «       }|j                  rIt        |t        «      r|j                  |j                  «       �nt        |t        «      �rt        d«      ‚|j                  ræ|j                   r&|t#        |j$                  |j&                  z
  «      z  }nÂ|j(                  t+        | j                   «      z  }	t-        |	«      dk7  rt        d«      ‚ |	j                  «       }
t/        |«      D ]Y  \  }}|d   |
k(  sŒt1        ||
«      }t3        |d   |d   «      }|j5                  |«      }|
|j6                  |j8                  f||<   Œ[ nt;        d|z  «      ‚|r�Œit=        |g|¢­i |¤ŽS )NzOr not implemented hereé   z-Multivariate Inequalities not yet implementedr   é   z+Condition %s is not a relational or Boolean)r   Ú
fulldomainrE   ÚfunctionÚlistÚlimitsÚ	conditionÚpopÚ
is_BooleanÚ
isinstancer   ÚextendÚargsr   r/   Úis_RelationalÚis_Equalityr   ÚlhsÚrhsÚfree_symbolsrA   ÚlenÚ	enumerateÚ!reduce_rational_inequalities_wrapr   Ú	intersectÚleftÚrightÚ	TypeErrorr   )r1   rB   rC   rD   Ú
fullintgrlÚ	integrandrY   Ú
conditionsÚcondr   r@   ÚiÚlimitÚcintvlÚlintvlÚintvls                   r2   rE   z/ConditionalContinuousDomain.compute_expectation\   s³  € ØÐØŸ™ˆIÙØˆKà—_‘_×8Ñ8¸¸yÓIˆ
à&×/Ñ/´°j×6GÑ6GÓ1H�6ˆ	à—n‘nÐ%ˆ
ÚØ—>‘>Ó#ˆDØ�ŠÜ˜d¤CÔ(Ø×%Ñ% d§i¡iÖ0Ü ¤bÕ)Ü-Ð.GÓHÐHØ×#Ò#Ø×#Ò#à¤¨D¯H©H°t·x±xÑ,?Ó!@Ñ@‘Ià"×/Ñ/´#°d·l±lÓ2CÑC�GÜ˜7“| qÒ(Ü1ØKóMð Mð )˜WŸ[™[›]�Fä$-¨fÖ$5™˜˜5Ø  ™8 vÓ-ä%FØ $ fó&.˜Fô &.¨e°A©h¸¸a¹Ó%A˜Fà$*×$4Ñ$4°VÓ$<˜Eà)/°·±¸U¿[¹[Ð(I˜F 1šIñ %6ô  ØAÀDÑHóJð Jó? ôD ˜	Ð5 FÒ5¨fÑ5Ð5r4   c                 ó^   — t        | j                  j                  «       | j                  «      S rG   )r   rV   r3   rZ   r0   s    r2   r3   z&ConditionalContinuousDomain.as_boolean‹   s    € Ü�4—?‘?×-Ñ-Ó/°·±Ó@Ð@r4   c                 óÎ   — t        | j                  «      dk(  rC| j                  j                  t	        | j
                  t        | j                  «      d   «      z  S t        d«      ‚)NrT   r   z)Set of Conditional Domain not Implemented)re   r   rV   rA   rg   rZ   Útupler/   r0   s    r2   rA   zConditionalContinuousDomain.setŽ   s[   € äˆt�|‰|Ó Ò!Ø—O‘O×'Ñ'Ô*KØ—‘¤ d§l¡lÓ 3°AÑ 6ó+8ñ 8ð 9ô &Ø;ó=ð =r4   rG   )r5   r6   r7   r8   rE   r3   ÚpropertyrA   r:   r4   r2   rR   rR   V   s'   „ ñó
-6ò^Að ñ=ó ñ=r4   rR   c                   ó   — e Zd Zd„ Zy)ÚContinuousDistributionc                 ó    —  | j                   |Ž S rG   )Úpdf)r1   r_   s     r2   Ú__call__zContinuousDistribution.__call__™   s   € Øˆt�x‰x˜ˆÐr4   N)r5   r6   r7   r}   r:   r4   r2   rz   rz   ˜   s   „ ór4   rz   c                   ó²   — e Zd ZdZ ee e«      Zd„ Zed„ «       Z	e
d„ «       Zd„ Zd„ Ze
d„ «       Zd„ Zd	„ Ze
d
„ «       Zd„ Zd„ Zdd„Ze
d„ «       Zd„ Zd„ Zy)ÚSingleContinuousDistributiona™   Continuous distribution of a single variable.

    Explanation
    ===========

    Serves as superclass for Normal/Exponential/UniformDistribution etc....

    Represented by parameters for each of the specific classes.  E.g
    NormalDistribution is represented by a mean and standard deviation.

    Provides methods for pdf, cdf, and sampling.

    See Also
    ========

    sympy.stats.crv_types.*
    c                 ó`   — t        t        t        |«      «      }t        j                  | g|¢­Ž S rG   )rX   Úmapr   r   Ú__new__)Úclsr_   s     r2   r‚   z$SingleContinuousDistribution.__new__²   s'   € Ü”Cœ Ó&Ó'ˆÜ�}‰}˜SÐ( 4Ò(Ð(r4   c                   ó   — y rG   r:   )r_   s    r2   Úcheckz"SingleContinuousDistribution.check¶   s   € àr4   c                 óð   — t        ddt        ¬«      \  }}| j                  j                  }| j	                  |«      }t        |j                  «       |||ffi |¤Ž}t        |||k\  fd«      }t        ||«      S )zB Compute the CDF from the PDF.

        Returns a Lambda.
        úx, zT©Úrealrƒ   ©r   T)	r   r   rA   Ústartr|   r   Údoitr   r   )r1   rD   ÚxÚzÚ
left_boundr|   Úcdfs          r2   Úcompute_cdfz(SingleContinuousDistribution.compute_cdfº   sq   € ô �v D¬eÔ4‰ˆˆ1Ø—X‘X—^‘^ˆ
ð �h‰h�q‹kˆÜ˜Ÿ™›
 Q¨
°AÐ$6ÑA¸&ÑAˆä˜˜a :™oÐ.°	Ó:ˆÜ�a˜‹~Ðr4   c                  ó   — y rG   r:   ©r1   r�   s     r2   Ú_cdfz!SingleContinuousDistribution._cdfÊ   ó   € Ør4   c                 óx   — t        |«      dk(  r| j                  |«      }|�|S   | j                  di |¤Ž|«      S ©z Cumulative density function r   r:   )re   r”   r‘   )r1   r�   rD   r�   s       r2   r�   z SingleContinuousDistribution.cdfÍ   sC   € äˆv‹;˜!ÒØ—)‘)˜A“,ˆCØˆØ�
Ø)Ðˆt×ÑÑ) &Ñ)¨!Ó,Ð,r4   c                 óÂ   — t        ddt        ¬«      \  }}| j                  |«      }t        t	        t
        |z  |z  «      |z  || j                  f«      }t        ||«      S )zV Compute the characteristic function from the PDF.

        Returns a Lambda.
        úx, tTrˆ   )r   r   r|   r   r   r   rA   r   )r1   rD   r�   Útr|   Úcfs         r2   Úcompute_characteristic_functionz<SingleContinuousDistribution.compute_characteristic_functionÕ   sS   € ô �v D¬eÔ4‰ˆˆ1Ø�h‰h�q‹kˆÜ”sœ1˜Q™3˜q™5“z #‘~¨¨4¯8©8 }Ó5ˆÜ�a˜‹}Ðr4   c                  ó   — y rG   r:   ©r1   rš   s     r2   Ú_characteristic_functionz5SingleContinuousDistribution._characteristic_functionà   r•   r4   c                 óx   — t        |«      dk(  r| j                  |«      }|�|S   | j                  di |¤Ž|«      S )z Characteristic function r   r:   )re   rŸ   rœ   )r1   rš   rD   r›   s       r2   Úcharacteristic_functionz4SingleContinuousDistribution.characteristic_functionã   sF   € äˆv‹;˜!ÒØ×.Ñ.¨qÓ1ˆBØˆ~Ø�	Ø=Ð3ˆt×3Ñ3Ñ=°fÑ=¸aÓ@Ð@r4   c                 ó´   — t        ddt        ¬«      \  }}| j                  |«      }t        t	        ||z  «      |z  || j
                  f«      }t        ||«      S )zY Compute the moment generating function from the PDF.

        Returns a Lambda.
        r™   Trˆ   )r   r   r|   r   r   rA   r   )r1   rD   r�   rš   r|   Úmgfs         r2   Ú"compute_moment_generating_functionz?SingleContinuousDistribution.compute_moment_generating_functionë   sP   € ô �v D¬eÔ4‰ˆˆ1Ø�h‰h�q‹kˆÜœ˜A ™E›
 SÑ(¨1¨d¯h©h¨-Ó8ˆÜ�a˜‹~Ðr4   c                  ó   — y rG   r:   rž   s     r2   Ú_moment_generating_functionz8SingleContinuousDistribution._moment_generating_functionö   r•   r4   c                 ó`   — |s| j                  |«      }|�|S   | j                  di |¤Ž|«      S )z Moment generating function r:   )r¦   r¤   )r1   rš   rD   r£   s       r2   Úmoment_generating_functionz7SingleContinuousDistribution.moment_generating_functionù   s=   € áØ×6Ñ6°qÓ9�Ø�?Ø�JØ@Ð6ˆt×6Ñ6Ñ@¸Ñ@ÀÓCÐCr4   c           	      óÈ  — |rü	 t        ||«      }|j                  rt        j                  S t	        dd¬«      }| j                  |«      }|€+t        || j                  |«      z  || j                  ffi |¤ŽS |j                  «       }t        t        ||d|dz   «      j                  «       |«      }	d}
t        |dz   «      D ]:  }|
|j                  ||z  «      |	j                  ||z  «      z  t        |«      z  z  }
Œ< |
S t!        || j                  |«      z  || j                  ffi |¤ŽS # t        $ r. t        || j                  |«      z  || j                  ffi |¤ŽcY S w xY w)z- Expectation of expression over distribution rš   T©r‰   r   rT   )r   Úis_zeror   ÚZeror   r¦   r   r|   rA   Údegreer   ÚremoveOÚrangeÚcoeff_monomialr   r   r   )r1   rB   ÚvarÚevaluaterD   Úprš   r£   ÚdegÚtaylorÚresultÚks               r2   Úexpectationz(SingleContinuousDistribution.expectation  sX  € áðRÜ˜˜s“O�Ø—9’9ÜŸ6™6�MÜ˜# DÔ)�Ø×6Ñ6°qÓ9�Ø�;Ü$ T¨D¯H©H°S«MÑ%9¸CÀÇÁ¸?ÑUÈfÑUÐUØ—h‘h“j�Üœf S¨!¨Q°°a±Ó8×@Ñ@ÓBÀAÓF�Ø�Ü˜s 1™už�AØ˜a×.Ñ.¨s°a©xÓ8¸6×;PÑ;PÐQRÐVWÑQWÓ;XÑXÔ[dÐefÓ[gÑgÑg‘Fð &à�ô ˜D 4§8¡8¨C£=Ñ0°3¸¿¹°/ÑLÀVÑLÐLøô #ò RÜ  ¨¯©°«Ñ!5¸¸T¿X¹X°ÑQÈ&ÑQÒQðRús   „'D* ¬A
D* Á7BD* Ä*4E!Å E!c           	      ó  — t        ddt        ¬«      \  }}| j                  j                  }| j	                  |«      }t        ||||ffi |¤Ž}t        ||z
  || j                  «      }t        |t        ||dk\  |dk  z  ft        df«      «      S )zG Compute the Quantile from the PDF.

        Returns a Lambda.
        zx, pTrˆ   r   rT   )
r   r   rA   r‹   r|   r   r    r   r   r   )r1   rD   r�   r³   r�   r|   r�   Úquantiles           r2   Úcompute_quantilez-SingleContinuousDistribution.compute_quantile  sˆ   € ô �v D¬eÔ4‰ˆˆ1Ø—X‘X—^‘^ˆ
à�h‰h�q‹kˆÜ˜˜a ¨QÐ/Ñ:°6Ñ:ˆÜ˜C !™G Q¨¯©Ó1ˆÜ�aœ H¨q°A©v¸!¸q¹&Ñ.AÐ#CÄcÈ4À[ÓQÓRÐRr4   c                  ó   — y rG   r:   r“   s     r2   Ú	_quantilez&SingleContinuousDistribution._quantile%  r•   r4   c                 óx   — t        |«      dk(  r| j                  |«      }|�|S   | j                  di |¤Ž|«      S r—   )re   r½   r»   )r1   r�   rD   rº   s       r2   rº   z%SingleContinuousDistribution.quantile(  sE   € äˆv‹;˜!ÒØ—~‘~ aÓ(ˆHØÐ#Ø�Ø.Ð$ˆt×$Ñ$Ñ. vÑ.¨qÓ1Ð1r4   N©T)r5   r6   r7   r8   r   r	   rA   r‚   Ústaticmethodr…   r   r‘   r”   r�   rœ   rŸ   r¡   r¤   r¦   r¨   r¸   r»   r½   rº   r:   r4   r2   r   r   �   s²   „ ññ$ �B�3˜Ó
€Cò)ð ñó ðð ñó ðòò-ð ñó ðòòAð ñó ðòòDóMð, ñSó ðSòó2r4   r   c                   óŠ   — e Zd ZdZdZdZed„ «       Zdd„Zd„ Z	e
d„ «       Ze
d„ «       Ze
d	„ «       Ze
d
„ «       Zd„ Zd„ Zdd„Zy)ÚContinuousPSpacez® Continuous Probability Space

    Represents the likelihood of an event space defined over a continuum.

    Represented with a ContinuousDomain and a PDF (Lambda-Like)
    Tc                 óH   —  | j                   | j                  j                  Ž S rG   )ÚdensityrN   r   r0   s    r2   r|   zContinuousPSpace.pdf<  s   € àˆt�|‰|˜TŸ[™[×0Ñ0Ð1Ð1r4   Nc                 ó  — |€| j                   }nt        |«      }|j                  |D �ci c]  }||j                  “Œ c}«      }t        d„ |D «       «      } | j                  j
                  | j                  |z  |fi |¤ŽS c c}w )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrG   ©r@   )Ú.0Úrvs     r2   Ú	<genexpr>z7ContinuousPSpace.compute_expectation.<locals>.<genexpr>H  s   è ø€ Ð";±s° 2§9¥9±sùó   ‚)Úvaluesr>   Úxreplacer@   rN   rE   r|   )r1   rB   Úrvsr²   rD   rÉ   Údomain_symbolss          r2   rE   z$ContinuousPSpace.compute_expectation@  s�   € Øˆ;Ø—+‘+‰Cä˜C“.ˆCà�}‰}±cÓ:±c°˜b "§)¡)™m°cÑ:Ó;ˆä"Ñ";±sÓ";Ó;ˆà.ˆt�{‰{×.Ñ.¨t¯x©x¸$©Øñ*Ø"(ñ*ð 	*ùò	 ;s   ªBc           	      ó€  — || j                   v r{t        t        | j                   «      t        |g«      z
  «      }t        d„ |D «       «      } | j                  j
                  | j                  |fi |¤Ž}t        |j                  |«      S t        dd¬«      }t        | | j
                  t        ||z
  «      fi |¤Ž«      S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrG   rÇ   )rÈ   Úrss     r2   rÊ   z3ContinuousPSpace.compute_density.<locals>.<genexpr>R  s   è ø€ Ð>±¨"˜BŸI�I±ùrË   rŽ   Trª   )rÌ   rw   rA   r>   rN   rE   r|   r   r@   r   r   )r1   rB   rD   Úrandomsymbolsr   r|   rŽ   s          r2   Úcompute_densityz ContinuousPSpace.compute_densityM  s¤   € à�4—;‘;Ñä!¤# d§k¡kÓ"2´YÀ¸vÓ5FÑ"FÓGˆMÜÑ>±Ó>Ó>ˆGØ1�$—+‘+×1Ñ1°$·(±(¸GÑNÀvÑNˆCÜ˜$Ÿ+™+ sÓ+Ð+ä�#˜DÔ!ˆÜ�aÐ1˜×1Ñ1´*¸TÀA¹XÓ2FÑQÈ&ÑQÓRÐRr4   c                 óN  — | j                   j                  j                  st        d«      ‚ | j                  |fi |¤Ž}t        ddt        ¬«      \  }}| j                   j                  j                  }t         ||«      |||ffi |¤Ž}t        |||k\  fd«      }t        ||«      S )Nz0CDF not well defined on multivariate expressionsr‡   Trˆ   rŠ   )rN   rA   Úis_Intervalr?   rÔ   r   r   r‹   r   r   r   )r1   rB   rD   Údr�   rŽ   r�   r�   s           r2   r‘   zContinuousPSpace.compute_cdfY  s¢   € à�{‰{�‰×*Ò*ÜØBóDð Dð !ˆD× Ñ  Ñ0¨Ñ0ˆÜ�v D¬eÔ4‰ˆˆ1Ø—[‘[—_‘_×*Ñ*ˆ
ô ™˜!›˜q *¨aÐ0Ñ;°FÑ;ˆä˜˜a :™oÐ.°	Ó:ˆÜ�a˜‹~Ðr4   c                 ó*  — | j                   j                  j                  st        d«      ‚ | j                  |fi |¤Ž}t        ddt        ¬«      \  }}t        t        t        |z  |z  «       ||«      z  |t         t        ffi |¤Ž}t        ||«      S )NzCCharacteristic function of multivariate expressions not implementedr™   Trˆ   )rN   rA   rÖ   r/   rÔ   r   r   r   r   r   r	   r   )r1   rB   rD   r×   r�   rš   r›   s          r2   rœ   z0ContinuousPSpace.compute_characteristic_functioni  s�   € à�{‰{�‰×*Ò*Ü%Ð&kÓlÐlà ˆD× Ñ  Ñ0¨Ñ0ˆÜ�v D¬eÔ4‰ˆˆ1Ü”sœ1˜Q™3˜q™5“z¡! A£$‘¨¬R¨C´¨Ñ?¸Ñ?ˆÜ�a˜‹}Ðr4   c                 ó  — | j                   j                  j                  st        d«      ‚ | j                  |fi |¤Ž}t        ddt        ¬«      \  }}t        t        ||z  «       ||«      z  |t         t        ffi |¤Ž}t        ||«      S )NzFMoment generating function of multivariate expressions not implementedr™   Trˆ   )rN   rA   rÖ   r/   rÔ   r   r   r   r   r	   r   )r1   rB   rD   r×   r�   rš   r£   s          r2   r¤   z3ContinuousPSpace.compute_moment_generating_functions  s~   € à�{‰{�‰×*Ò*Ü%Ð&nÓoÐoà ˆD× Ñ  Ñ0¨Ñ0ˆÜ�v D¬eÔ4‰ˆˆ1Üœ˜A ™E›
¡Q q£TÑ)¨A´¨s´B¨<ÑB¸6ÑBˆÜ�a˜‹~Ðr4   c                 ó
  — | j                   j                  j                  st        d«      ‚ | j                  |fi |¤Ž}t        dd¬«      }t        dd¬«      }t         ||«      |z
  || j                  «      }t        ||«      S )Nz5Quantile not well defined on multivariate expressionsr�   Trª   r³   )Úpositive)rN   rA   rÖ   r?   r‘   r   r    r   )r1   rB   rD   r×   r�   r³   rº   s          r2   r»   z!ContinuousPSpace.compute_quantile}  s}   € à�{‰{�‰×*Ò*ÜØGóIð Ið ˆD×Ñ˜TÑ, VÑ,ˆÜ�#˜DÔ!ˆÜ�# Ô%ˆä™A˜a›D 1™H a¨¯©Ó2ˆä�a˜Ó"Ð"r4   c                 ó�  ‡‡‡— t        dd¬«      Šd}t        |t        «      r(t        |j                  d   |j                  d   «      }d}	 | j                  |«      }| j                  D �cg c]  }|j                  |j                  k(  sŒ|‘Œ  c}d   } | j                  |fi ‰¤ŽŠ|j                  t        j                  u st        |j                  t        «      r"|st        j                  S t        j                  S t        |j                  t        «      r*t!        ˆˆˆfd„|j                  j                  D «       «      S t#         ‰‰«      ‰|j                  ffi ‰¤ŽS c c}w # t$        $ rÕ ddlm} |j*                  |j,                  z
  }t/        |«      s| j(                  }|j,                  }	n ||fi ‰¤Ž}d}	t        |t0        «      s$dd	lm}
  |
|| j6                  j                  ¬
«      }t9        ‰|«      }|j;                  |j=                  |j>                  |	«      «      }|s|cY S t        j                  |z
  cY S w xY w)NrŽ   Trª   Fr   rT   c              3   óh   •K  — | ])  }t        |t        «      rt         ‰‰«      ‰|ffi ‰¤Ž–— Œ+ y ­wrG   )r]   r   r   )rÈ   ÚsubsetrD   r|   rŽ   s     €€€r2   rÊ   z/ContinuousPSpace.probability.<locals>.<genexpr>›  s=   øè ø€ ð Fá$ð BHÜ(2°6¼8Ô(Dô ™c !›f q¨& kÑ<°VÕ<Ù$ùs   ƒ/2)rÄ   )ÚContinuousDistributionHandmade)rA   ) r   r]   r   r
   r_   ÚwhererÌ   r@   rÔ   rA   r   ÚEmptySetr   r¬   ÚOner   Úsumr   r/   Úsympy.stats.rvrÄ   rb   rc   r%   rz   Úsympy.stats.crv_typesrß   rN   ÚSingleContinuousPSpaceÚprobabilityÚ	__class__Úvalue)r1   rZ   rD   Úcond_invrN   rÉ   rÄ   rB   ÚdensÚcomprß   Úspacer¶   r|   rŽ   s     `          @@r2   rç   zContinuousPSpace.probability‹  sÚ  ú€ Ü�#˜DÔ!ˆØˆÜ�i¤Ô$Ü˜9Ÿ>™>¨!Ñ,¨i¯n©n¸QÑ.?Ó@ˆIØˆHð 	>Ø—Z‘Z 	Ó*ˆFØ#Ÿ{š{ÓI™{˜¨b¯i©i¸6¿=¹=Ó.H’"˜{ÑIÈ!ÑLˆBà&�$×&Ñ& rÑ4¨VÑ4ˆCà�z‰zœQŸZ™ZÑ'¬:°f·j±jÄ)Ô+LÙ%-”q—v‘vÐ8´1·5±5Ð8Ü˜&Ÿ*™*¤eÔ,Üõ Fà—Z‘Z—_’_óFó Fð Fô ™C ›F Q¨¯
©
 OÑ>°vÑ>Ð>ùò Jøô #ò 	>Ý.Ø—=‘= 9§=¡=Ñ0ˆDÜ˜T”?Ø—|‘|�Ø —}‘}‘á˜tÑ. vÑ.�Ø�Ü˜dÔ$:Ô;ÝPÙ5°dÀÇÁÇÁÔP�ä*¨1¨dÓ3ˆEØ×&Ñ& y×':Ñ':¸5¿;¹;ÈÓ'MÓNˆFÙ!)�6Ò=¬q¯u©u°v©~Ò=ð	>úsE   ÁE' Á+E"Â
E"ÂA E' Ã/E' Ã?AE' ÅE' Å"E' Å'CIÈ/IÉIc                 ó<  — t        t        |«      «      }t        |«      dk(  r|j                  | j                  «      st        d«      ‚t        |«      d   }t        ||«      }|j                  | j                  j                  «      }t        |j                  |«      S )NrT   z2Multiple continuous random variables not supportedr   )r>   r)   re   ÚissubsetrÌ   r/   rw   rg   rh   rN   rA   r<   r@   )r1   rZ   rÎ   rÉ   Úintervals        r2   rà   zContinuousPSpace.where´  s   € Üœ yÓ1Ó2ˆÜ�C“˜A’ #§,¡,¨t¯{©{Ô";Ü%ØDóFð Fä�3‹Z˜‰]ˆÜ4°YÀÓCˆØ×%Ñ% d§k¡k§o¡oÓ6ˆÜ% b§i¡i°Ó:Ð:r4   c           	      óÒ  — |j                  | j                  D �ci c]  }||j                  “Œ c}«      }t        | j                  |«      }|r†| j
                  D �ci c]  }|t        t        |«      «      “Œ }} |j                  | j                  fi |¤Ž}| j                  |j                  |«      z  }t        t        |j
                  «      |«      }	t        |	«      S c c}w c c}w rG   )rÍ   rÌ   r@   rR   rN   r   r   ÚstrrE   r|   r   rw   rÂ   )
r1   rZ   Ú	normalizerD   rÉ   rN   ÚreplacementÚnormr|   rÄ   s
             r2   Úconditional_spacez"ContinuousPSpace.conditional_space¾  sÉ   € Ø×&Ñ&ÀÇÂÓ'LÁ¸"¨¨B¯I©I©ÀÑ'LÓMˆ	Ü,¨T¯[©[¸)ÓDˆÙð :>¿ºÓF¹°2˜B¤¤c¨"£g£Ñ.¸ˆKÐFØ-�6×-Ñ-¨d¯h©hÑA¸&ÑAˆDØ—(‘(˜TŸ]™]¨;Ó7Ñ7ˆCô œU 6§>¡>Ó2°CÓ8ˆGä ¨Ó0Ð0ùò (Mùò Gs   šCÁC$©NFr¿   )r5   r6   r7   r8   r9   Úis_realrx   r|   rE   rÔ   r   r‘   rœ   r¤   r»   rç   rà   rö   r:   r4   r2   rÂ   rÂ   1  s�   „ ñð €MØ€Gàñ2ó ð2ó*ò
Sð ñó ðð ñó ðð ñó ðð ñ#ó ð#ò'>òR;ô1r4   rÂ   c                   ó^   — e Zd ZdZed„ «       Zed„ «       Zdd„Zdd„Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zy)ræ   a  
    A continuous probability space over a single univariate variable.

    These consist of a Symbol and a SingleContinuousDistribution

    This class is normally accessed through the various random variable
    functions, Normal, Exponential, Uniform, etc....
    c                 ó.   — | j                   j                  S rG   )ÚdistributionrA   r0   s    r2   rA   zSingleContinuousPSpace.setÛ  s   € à× Ñ ×$Ñ$Ð$r4   c                 óT   — t        t        | j                  «      | j                  «      S rG   )r<   r   r@   rA   r0   s    r2   rN   zSingleContinuousPSpace.domainß  s   € ä%¤g¨d¯k©kÓ&:¸D¿H¹HÓEÐEr4   Nc                 óV   — | j                   | j                  j                  |||¬«      iS )zp
        Internal sample method.

        Returns dictionary mapping RandomSymbol to realization value.
        )ÚlibraryÚseed)ré   rû   Úsample)r1   Úsizerþ   rÿ   s       r2   r   zSingleContinuousPSpace.sampleã  s,   € ð —
‘
˜D×-Ñ-×4Ñ4°TÀ7ÐQUÐ4ÓVÐWÐWr4   c                 ó�  — |xs | j                   f}| j                   |vr|S t        |«      }|j                  |D �ci c]  }||j                  “Œ c}«      }| j                   j                  }	  | j                  j
                  ||fd|i|¤ŽS c c}w # t        $ r) t        || j                  z  || j                  ffi |¤ŽcY S w xY w)Nr²   )
ré   r   rÍ   r@   rû   r¸   r   r   r|   rA   )r1   rB   rÎ   r²   rD   rÉ   r�   s          r2   rE   z*SingleContinuousPSpace.compute_expectationë  sÅ   € ØÒ"�d—j‘j�]ˆØ�:‰:˜SÑ ØˆKä˜‹~ˆØ�}‰}±cÓ:±c°˜b "§)¡)™m°cÑ:Ó;ˆà�J‰J×Ñˆð	FØ0�4×$Ñ$×0Ñ0°°qÑVÀ8ÐVÈvÑVÐVùò	 ;øô
 ò 	FÜ˜D 4§8¡8™O¨a°·±¨]ÑE¸fÑEÒEð	Fús   ¼BÁ.B Â/CÃCc                 ó¶   — || j                   k(  r4t        dd¬«      }t        | | j                  j                  |fi |¤Ž«      S t        j                  | |fi |¤ŽS )NrŽ   Trª   )ré   r   r   rû   r�   rÂ   r‘   )r1   rB   rD   rŽ   s       r2   r‘   z"SingleContinuousPSpace.compute_cdfù  sX   € Ø�4—:‘:ÒÜ�c Ô%ˆAÜ˜!Ð2˜T×.Ñ.×2Ñ2°1Ñ?¸Ñ?Ó@Ð@ä#×/Ñ/°°dÑE¸fÑEÐEr4   c                 ó¶   — || j                   k(  r4t        dd¬«      }t        | | j                  j                  |fi |¤Ž«      S t        j                  | |fi |¤ŽS ©Nrš   Trª   )ré   r   r   rû   r¡   rÂ   rœ   ©r1   rB   rD   rš   s       r2   rœ   z6SingleContinuousPSpace.compute_characteristic_function   sY   € Ø�4—:‘:ÒÜ�c Ô%ˆAÜ˜!ÐF˜T×.Ñ.×FÑFÀqÑSÈFÑSÓTÐTä#×CÑCÀDÈ$ÑYÐRXÑYÐYr4   c                 ó¶   — || j                   k(  r4t        dd¬«      }t        | | j                  j                  |fi |¤Ž«      S t        j                  | |fi |¤ŽS r  )ré   r   r   rû   r¨   rÂ   r¤   r  s       r2   r¤   z9SingleContinuousPSpace.compute_moment_generating_function  sY   € Ø�4—:‘:ÒÜ�c Ô%ˆAÜ˜!ÐI˜T×.Ñ.×IÑIÈ!ÑVÈvÑVÓWÐWä#×FÑFÀtÈTÑ\ÐU[Ñ\Ð\r4   c                 ó  ‡‡— || j                   k(  r| j                  S t        dd¬«      Št        |‰z
  | j                   t        j
                  «      }t        |t        «      rFt        |j                  «      dk(  r.|j                  d   t        j
                  u r|j                  d   }|j                  st        d|›d| j                   ›�«      ‚| j                  | j                   «      Št        ˆˆfd	„|D «       «      }t        ‰|«      S )
NÚyTrª   rU   r   rT   zCan not solve z for c              3   ód   •K  — | ]'  } ‰|«      t        |j                  ‰«      «      z  –— Œ) y ­wrG   )ÚabsÚdiff)rÈ   ÚgÚfxr	  s     €€r2   rÊ   z9SingleContinuousPSpace.compute_density.<locals>.<genexpr>  s'   øè ø€ Ð4±¨A‘�A“œ˜QŸV™V A›Y›Õ'±ùs   ƒ-0)ré   rÄ   r   r    r   ÚRealsr]   r   re   r_   Úis_FiniteSetr?   rÔ   rã   r   )r1   rB   rD   ÚgsÚfyr  r	  s        @@r2   rÔ   z&SingleContinuousPSpace.compute_density  sÄ   ù€ à�4—:‘:ÒØ—<‘<ÐÜ�#˜DÔ!ˆä�d˜Q‘h §
¡
¬A¯G©GÓ4ˆä�bœ,Ô'Ü�2—7‘7‹|˜qÒ  R§W¡W¨Q¡Z´1·7±7Ñ%:Ø—W‘W˜Q‘Z�Ø�ŠÝº$ÀÇ
Â
ÐKÓLÐLØ×!Ñ! $§*¡*Ó-ˆÜÔ4±Ó4Ó4ˆÜ�a˜‹}Ðr4   c                 ó¶   — || j                   k(  r4t        dd¬«      }t        | | j                  j                  |fi |¤Ž«      S t        j                  | |fi |¤ŽS )Nr³   Trª   )ré   r   r   rû   rº   rÂ   r»   )r1   rB   rD   r³   s       r2   r»   z'SingleContinuousPSpace.compute_quantile  sX   € à�4—:‘:ÒÜ�c Ô%ˆAÜ˜!Ð7˜T×.Ñ.×7Ñ7¸ÑD¸VÑDÓEÐEä#×4Ñ4°T¸4ÑJÀ6ÑJÐJr4   )r:   ÚscipyNr÷   )r5   r6   r7   r8   rx   rA   rN   r   rE   r‘   rœ   r¤   rÔ   r»   r:   r4   r2   ræ   ræ   Ñ  sZ   „ ñð ñ%ó ð%ð ñFó ðFóXóFòFòZò]òó"Kr4   ræ   c                 óZ   — 	 t        | |fi |¤ŽS # t        $ r t        d| d   z  «      ‚w xY w)Nz!Reduction of condition failed %s
r   )r!   r   r?   )rn   r±   rD   s      r2   Ú_reduce_inequalitiesr  '  s@   € ðOÜ+¨J¸ÑF¸vÑFÐFøÜò OÜÐ=À
È1ÁÑMÓNÐNðOús   ‚ �*c           
      óz  — | j                   rt        | gg|d¬«      S t        | t        «      r.t	        | j
                  D �cg c]  }t        |gg|d¬«      ‘Œ c}Ž S t        | t        «      rG| j
                  D �cg c]  }t        |gg|d¬«      ‘Œ }}|d   }|D ]  } |j                  |«      }Œ |S y c c}w c c}w )NF)Ú
relationalr   )r`   r  r]   r   r   r_   r   rh   )rZ   r±   ÚargÚ	intervalsr   rp   s         r2   rg   rg   .  sÒ   € Ø×ÒÜ# i [ M°3À5ÔIÐIÜ�)œRÔ ÜØ —~’~ó'Ù%�ô ,¨c¨U¨G°SÀUÖKØ%ñ'ð (ð 	(ä�)œSÔ!à —~’~ó'Ù%�ô *¨C¨5¨'°3À5ÖIØ%ð 	ð 'à�a‰LˆÛˆAØ�—‘˜A“‰Að àˆð "ùò'ùò's   Á B3Á9B8N)Ir8   Úsympy.core.basicr   Úsympy.core.cacher   Úsympy.core.functionr   r   Úsympy.core.numbersr   r   r	   Úsympy.core.relationalr
   r   Úsympy.core.singletonr   Úsympy.core.symbolr   r   Úsympy.core.sympifyr   r   Ú(sympy.functions.combinatorial.factorialsr   Ú&sympy.functions.elementary.exponentialr   Ú$sympy.functions.elementary.piecewiser   Ú'sympy.functions.special.delta_functionsr   Úsympy.integrals.integralsr   r   Úsympy.logic.boolalgr   r   Úsympy.polys.polyerrorsr   Úsympy.polys.polytoolsr   Úsympy.series.seriesr   Úsympy.sets.setsr   r   r   r   Úsympy.solvers.solvesetr    Úsympy.solvers.inequalitiesr!   rä   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r-   r<   rK   rR   rz   r   rÂ   ræ   r  rg   r:   r4   r2   Ú<module>r/     së   ðñõ #Ý $ß 1ß +Ñ +ß *Ý "ß .ß 0Ý >Ý 6Ý :Ý >ß ;ß )Ý 2Ý &Ý &ß FÓ FÝ +Ý C÷[÷ [÷ [ô	I�|ô 	Iô3Ð-¨|ô 3ô(F˜mÐ-=ô Fô$?=Ð"2Ð4Eô ?=ôD˜\ô ô
Q2Ð#9¸>ô Q2ôh]1�vô ]1ô@TKÐ-¨|ô TKòlOór4   