§
    PŠtj$R  ã                   óL  — 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(„ ZHd)S )*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dS )ÚContinuousDomainzX
    A domain with continuous support

    Represented using symbols and Intervals.
    Tc                 ó    — t          d¦  «        ‚)Nz#Not Implemented for generic Domains)ÚNotImplementedError©Úselfs    úM/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/stats/crv.pyÚ
as_booleanzContinuousDomain.as_boolean,   s   € Ý!Ð"GÑHÔHÐHó    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úis_Continuousr3   © r4   r2   r-   r-   $   s9   € € € € € ðð ð
 €MðIð Ið Ið Ið Ir4   r-   c                   ó    — e Zd ZdZdd„Zd„ ZdS )ÚSingleContinuousDomainzj
    A univariate domain with continuous support

    Represented using a single symbol and interval.
    Nc                 ó¸   — |€| j         }|s|S t          |¦  «        t          | j         ¦  «        k    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   si   € ØÐØœˆIØð 	ØˆKÝ�YÑÔ¥9¨T¬\Ñ#:Ô#:Ò:Ð:ÝÐ5Ñ6Ô6Ð6å˜˜tœ{¨D¬HÐ5Ð@Ð@¸Ð@Ð@Ð@r4   c                 ó@   — | j                              | j        ¦  «        S ©N)rA   Úas_relationalr@   r0   s    r2   r3   z!SingleContinuousDomain.as_boolean@   s   € ØŒx×%Ò% d¤kÑ2Ô2Ð2r4   rG   ©r5   r6   r7   r8   rE   r3   r:   r4   r2   r<   r<   0   sE   € € € € € ðð ð
Að Að Að Að3ð 3ð 3ð 3ð 3r4   r<   c                   ó    — e Zd ZdZdd„Zd„ ZdS )ÚProductContinuousDomainzE
    A collection of independent domains with continuous support
    Nc                 ó–   — |€| j         }| j        D ]7}t          |¦  «        t          |j         ¦  «        z  }|r |j        ||fi |¤Ž}Œ8|S rG   )r   Údomainsr>   rE   )r1   rB   rC   rD   ÚdomainÚdomain_varss         r2   rE   z+ProductContinuousDomain.compute_expectationI   si   € ØÐØœˆIØ”lð 	Oð 	OˆFÝ# IÑ.Ô.µ¸6¼>Ñ1JÔ1JÑJˆKØð OØ1�vÔ1°$¸ÐNÐNÀvÐNÐN�øØˆr4   c                 ó2   — t          d„ | j        D ¦   «         Ž S )Nc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r:   )r3   )Ú.0rN   s     r2   ú
<listcomp>z6ProductContinuousDomain.as_boolean.<locals>.<listcomp>S   s$   € ÐDÐDÐD¨V�V×&Ò&Ñ(Ô(ÐDÐDÐDr4   )r   rM   r0   s    r2   r3   z"ProductContinuousDomain.as_booleanR   s   € ÝÐDÐD°t´|ÐDÑDÔDÐEÐEr4   rG   rI   r:   r4   r2   rK   rK   D   sF   € € € € € ðð ðð ð ð ðFð Fð Fð Fð Fr4   rK   c                   ó6   — e Zd ZdZdd„Zd„ Zed„ ¦   «         ZdS )ÚConditionalContinuousDomainzo
    A domain with continuous support that has been further restricted by a
    condition such as $x > 3$.
    Nc                 ó¬  — |€| j         }|s|S | j                             ||¦  «        }|j        t	          |j        ¦  «        }}| j        g}|�rw|                     ¦   «         }|j        rWt          |t          ¦  «        r|                     |j        ¦  «         �n(t          |t          ¦  «        rt          d¦  «        ‚�n|j        ré|j        r |t#          |j        |j        z
  ¦  «        z  }nÔ|j        t+          | j         ¦  «        z  }	t-          |	¦  «        dk    rt          d¦  «        ‚ |	j        ¦   «         }
t/          |¦  «        D ]d\  }}|d         |
k    rSt1          ||
¦  «        }t3          |d         |d         ¦  «        }|                     |¦  «        }|
|j        |j        f||<   Œent;          d|z  ¦  «        ‚|�°wt=          |g|¢R 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Ú	integrandr\   Ú
conditionsÚcondr   r@   ÚiÚlimitÚcintvlÚlintvlÚintvls                   r2   rE   z/ConditionalContinuousDomain.compute_expectation\   s!  € ØÐØœˆIØð 	ØˆKà”_×8Ò8¸¸yÑIÔIˆ
à&Ô/µ°jÔ6GÑ1HÔ1H�6ˆ	à”nÐ%ˆ
Øñ  	JØ—>’>Ñ#Ô#ˆDØŒð JÝ˜d¥CÑ(Ô(ð IØ×%Ò% d¤iÑ0Ô0Ð0Ñ0Ý ¥bÑ)Ô)ð IÝ-Ð.GÑHÔHÐHñIàÔ#ð JØÔ#ð Jà¥¨D¬H°t´xÑ,?Ñ!@Ô!@Ñ@�I�Ià"Ô/µ#°d´lÑ2CÔ2CÑC�GÝ˜7‘|”| qÒ(Ð(Ý1ØKñMô Mð Mð )˜Wœ[™]œ]�Få$-¨fÑ$5Ô$5ð 
Jð 
J™˜˜5Ø  œ8 vÒ-Ð-å%FØ $ fñ&.ô &.˜Fõ &.¨e°A¬h¸¸a¼Ñ%AÔ%A˜Fà$*×$4Ò$4°VÑ$<Ô$<˜Eà)/°´¸U¼[Ð(I˜F 1™Iøð
Jõ  ØAÀDÑHñJô Jð Jð? ñ  	JõD ˜	Ð5 FÐ5Ð5Ð5¨fÐ5Ð5Ð5r4   c                 óZ   — t          | j                             ¦   «         | j        ¦  «        S rG   )r   rY   r3   r]   r0   s    r2   r3   z&ConditionalContinuousDomain.as_boolean‹   s"   € Ý�4”?×-Ò-Ñ/Ô/°´Ñ@Ô@Ð@r4   c                 óÄ   — t          | j        ¦  «        dk    r:| j        j        t	          | j        t          | j        ¦  «        d         ¦  «        z  S t          d¦  «        ‚)NrW   r   z)Set of Conditional Domain not Implemented)rh   r   rY   rA   rj   r]   Útupler/   r0   s    r2   rA   zConditionalContinuousDomain.setŽ   sc   € åˆtŒ|ÑÔ Ò!Ð!Ø”OÔ'Õ*KØ”¥ d¤lÑ 3Ô 3°AÔ 6ñ+8ô +8ñ 8ð 9õ &Ø;ñ=ô =ð =r4   rG   )r5   r6   r7   r8   rE   r3   ÚpropertyrA   r:   r4   r2   rU   rU   V   s`   € € € € € ðð ð
-6ð -6ð -6ð -6ð^Að Að Að ð=ð =ñ „Xð=ð =ð =r4   rU   c                   ó   — e Zd Zd„ ZdS )ÚContinuousDistributionc                 ó   —  | j         |Ž S rG   )Úpdf)r1   rb   s     r2   Ú__call__zContinuousDistribution.__call__™   s   € ØˆtŒx˜ˆÐr4   N)r5   r6   r7   r€   r:   r4   r2   r}   r}   ˜   s#   € € € € € ðð ð ð ð r4   r}   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dS )Ú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                 ój   — t          t          t          |¦  «        ¦  «        }t          j        | g|¢R Ž S rG   )r[   Úmapr   r   Ú__new__)Úclsrb   s     r2   r…   z$SingleContinuousDistribution.__new__²   s1   € Ý•C� Ñ&Ô&Ñ'Ô'ˆÝŒ}˜SÐ( 4Ð(Ð(Ð(Ð(r4   c                  ó   — d S rG   r:   )rb   s    r2   Úcheckz"SingleContinuousDistribution.check¶   s   € àˆr4   c                 ó
  — t          ddt          ¬¦  «        \  }}| j        j        }|                      |¦  «        }t          |                     ¦   «         |||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º   s‚   € õ �v D­eÐ4Ñ4Ô4‰ˆˆ1Ø”X”^ˆ
ð �hŠh�q‰kŒkˆÝ˜Ÿš™
œ
 Q¨
°AÐ$6ÐAÐA¸&ÐAÐAˆå˜˜a :šoÐ.°	Ñ:Ô:ˆÝ�a˜‰~Œ~Ðr4   c                 ó   — d S rG   r:   ©r1   r�   s     r2   Ú_cdfz!SingleContinuousDistribution._cdfÊ   ó   € Øˆtr4   c                 ó†   — t          |¦  «        dk    r|                      |¦  «        }|�|S   | j        di |¤Ž|¦  «        S ©z Cumulative density function r   Nr:   )rh   r—   r”   )r1   r�   rD   r“   s       r2   r“   z SingleContinuousDistribution.cdfÍ   sP   € åˆv‰;Œ;˜!ÒÐØ—)’)˜A‘,”,ˆCØˆØ�
Ø)ÐˆtÔÐ)Ð) &Ð)Ð)¨!Ñ,Ô,Ð,r4   c                 óä   — t          ddt          ¬¦  «        \  }}|                      |¦  «        }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Õ   s`   € õ �v D­eÐ4Ñ4Ô4‰ˆˆ1Ø�hŠh�q‰kŒkˆÝ•s�1˜Q™3˜q™5‘z”z #‘~¨¨4¬8 }Ñ5Ô5ˆÝ�a˜‰}Œ}Ðr4   c                 ó   — d S rG   r:   ©r1   r�   s     r2   Ú_characteristic_functionz5SingleContinuousDistribution._characteristic_functionà   r˜   r4   c                 ó†   — t          |¦  «        dk    r|                      |¦  «        }|�|S   | j        di |¤Ž|¦  «        S )z Characteristic function r   Nr:   )rh   r¢   rŸ   )r1   r�   rD   rž   s       r2   Úcharacteristic_functionz4SingleContinuousDistribution.characteristic_functionã   sT   € åˆv‰;Œ;˜!ÒÐØ×.Ò.¨qÑ1Ô1ˆBØˆ~Ø�	Ø=Ð3ˆtÔ3Ð=Ð=°fÐ=Ð=¸aÑ@Ô@Ð@r4   c                 óÔ   — t          ddt          ¬¦  «        \  }}|                      |¦  «        }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ë   s]   € õ �v D­eÐ4Ñ4Ô4‰ˆˆ1Ø�hŠh�q‰kŒkˆÝ�˜A ™E™
œ
 SÑ(¨1¨d¬h¨-Ñ8Ô8ˆÝ�a˜‰~Œ~Ðr4   c                 ó   — d S rG   r:   r¡   s     r2   Ú_moment_generating_functionz8SingleContinuousDistribution._moment_generating_functionö   r˜   r4   c                 ód   — |s|                       |¦  «        }|�|S   | j        di |¤Ž|¦  «        S )z Moment generating function Nr:   )r©   r§   )r1   r�   rD   r¦   s       r2   Úmoment_generating_functionz7SingleContinuousDistribution.moment_generating_functionù   sK   € àð 	Ø×6Ò6°qÑ9Ô9�Ø�?Ø�JØ@Ð6ˆtÔ6Ð@Ð@¸Ð@Ð@ÀÑCÔCÐCr4   Tc           	      ó  — |�rX	 t          ||¦  «        }|j        rt          j        S t	          dd¬¦  «        }|                      |¦  «        }|€+t          ||                      |¦  «        z  || j        ffi |¤ŽS | 	                    ¦   «         }t          t          ||d|dz   ¦  «                             ¦   «         |¦  «        }	d}
t          |dz   ¦  «        D ]F}|
|                     ||z  ¦  «        |	                     ||z  ¦  «        z  t          |¦  «        z  z  }
ŒG|
S # t          $ r. t          ||                      |¦  «        z  || j        ffi |¤ŽcY S w xY wt!          ||                      |¦  «        z  || j        ffi |¤ŽS )z- Expectation of expression over distribution r�   T©rŒ   Nr   rW   )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  s­  € àñ 	MðRÝ˜˜s‘O”O�Ø”9ð "Ýœ6�MÝ˜# DÐ)Ñ)Ô)�Ø×6Ò6°qÑ9Ô9�Ø�;Ý$ T¨D¯HªH°S©M¬MÑ%9¸CÀÄ¸?ÐUÐUÈfÐUÐUÐUØ—h’h‘j”j�Ý�f S¨!¨Q°°a±Ñ8Ô8×@Ò@ÑBÔBÀAÑFÔF�Ø�Ý˜s 1™u™œð hð h�AØ˜a×.Ò.¨s°a©xÑ8Ô8¸6×;PÒ;PÐQRÐVWÑQWÑ;XÔ;XÑXÕ[dÐefÑ[gÔ[gÑgÑg�F�FØ�øÝ"ð Rð Rð RÝ  ¨¯ª°©¬Ñ!5¸¸T¼X°ÐQÐQÈ&ÐQÐQÐQÐQÐQðRøøøõ ˜D 4§8¢8¨C¡=¤=Ñ0°3¸¼°/ÐLÐLÀVÐLÐLÐLs   …"D! ¨AD! Á;B%D! Ä!5EÅEc           	      ó0  — t          ddt          ¬¦  «        \  }}| 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   rW   )
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Ñ4Ô4‰ˆˆ1Ø”X”^ˆ
à�hŠh�q‰kŒkˆÝ˜˜a ¨QÐ/Ð:Ð:°6Ð:Ð:ˆÝ˜C !™G Q¨¬Ñ1Ô1ˆÝ�a� H¨q°Aªv¸!¸qº&Ñ.AÐ#CÅcÈ4À[ÑQÔQÑRÔRÐRr4   c                 ó   — d S rG   r:   r–   s     r2   Ú	_quantilez&SingleContinuousDistribution._quantile%  r˜   r4   c                 ó†   — t          |¦  «        dk    r|                      |¦  «        }|�|S   | j        di |¤Ž|¦  «        S rš   )rh   rÀ   r¾   )r1   r�   rD   r½   s       r2   r½   z%SingleContinuousDistribution.quantile(  sS   € åˆv‰;Œ;˜!ÒÐØ—~’~ aÑ(Ô(ˆHØÐ#Ø�Ø.Ð$ˆtÔ$Ð.Ð. vÐ.Ð.¨qÑ1Ô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‚   �   sb  € € € € € ðð ð$ ˆ(�B�3˜Ñ
Ô
€Cð)ð )ð )ð ðð ñ „\ðð ðð ñ „Wððð ð ð-ð -ð -ð ðð ñ „Wððð ð ðAð Að Að ðð ñ „Wððð ð ðDð Dð DðMð Mð Mð Mð, ðSð Sñ „WðSðð ð ð2ð 2ð 2ð 2ð 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dS )Ú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                 ó*   —  | j         | j        j        Ž S rG   )ÚdensityrN   r   r0   s    r2   r   zContinuousPSpace.pdf<  s   € àˆtŒ|˜Tœ[Ô0Ð1Ð1r4   NFc                 óÜ   — |€| j         }nt          |¦  «        }|                     d„ |D ¦   «         ¦  «        }t          d„ |D ¦   «         ¦  «        } | j        j        | j        |z  |fi |¤ŽS )Nc                 ó   — i | ]
}||j         “ŒS r:   ©r@   ©rR   Úrvs     r2   ú
<dictcomp>z8ContinuousPSpace.compute_expectation.<locals>.<dictcomp>F  ó   € Ð:Ð:Ð:°˜b "¤)Ð:Ð:Ð:r4   c              3   ó$   K  — | ]}|j         V — Œd S rG   rÊ   rË   s     r2   ú	<genexpr>z7ContinuousPSpace.compute_expectation.<locals>.<genexpr>H  s$   è è € Ð";Ð";° 2¤9Ð";Ð";Ð";Ð";Ð";Ð";r4   )Úvaluesr>   ÚxreplacerN   rE   r   )r1   rB   Úrvsrµ   rD   Údomain_symbolss         r2   rE   z$ContinuousPSpace.compute_expectation@  sˆ   € Øˆ;Ø”+ˆCˆCå˜C‘.”.ˆCà�}Š}Ð:Ð:°cÐ:Ñ:Ô:Ñ;Ô;ˆå"Ð";Ð";°sÐ";Ñ";Ô";Ñ;Ô;ˆà.ˆtŒ{Ô.¨t¬x¸$©Øð*ð *Ø"(ð*ð *ð 	*r4   c           	      ó€  — || j         v ryt          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   ó$   K  — | ]}|j         V — Œd S rG   rÊ   )rR   Úrss     r2   rÐ   z3ContinuousPSpace.compute_density.<locals>.<genexpr>R  s$   è è € Ð>Ð>¨"˜BœIÐ>Ð>Ð>Ð>Ð>Ð>r4   r‘   Tr­   )rÑ   rz   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Ñ"2Ô"2µYÀ¸vÑ5FÔ5FÑ"FÑGÔGˆMÝÐ>Ð>°Ð>Ñ>Ô>Ñ>Ô>ˆGØ1�$”+Ô1°$´(¸GÐNÐNÀvÐNÐNˆCÝ˜$œ+ sÑ+Ô+Ð+å�#˜DÐ!Ñ!Ô!ˆÝ�aÐ1˜Ô1µ*¸TÀA¹XÑ2FÔ2FÐQÐQÈ&ÐQÐQÑRÔRÐRr4   c                 ó4  — | 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¸   € àŒ{ŒÔ*ð 	DÝØBñDô Dð Dð !ˆDÔ  Ð0Ð0¨Ð0Ð0ˆÝ�v D­eÐ4Ñ4Ô4‰ˆˆ1Ø”[”_Ô*ˆ
õ ˜˜˜!™œ˜q *¨aÐ0Ð;Ð;°FÐ;Ð;ˆå˜˜a :šoÐ.°	Ñ:Ô:ˆÝ�a˜‰~Œ~Ðr4   c                 ó2  — | 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š   € àŒ{ŒÔ*ð 	mÝ%Ð&kÑlÔlÐlà ˆDÔ  Ð0Ð0¨Ð0Ð0ˆÝ�v D­eÐ4Ñ4Ô4‰ˆˆ1Ý•s�1˜Q™3˜q™5‘z”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—   € àŒ{ŒÔ*ð 	pÝ%Ð&nÑoÔoÐoà ˆDÔ  Ð0Ð0¨Ð0Ð0ˆÝ�v D­eÐ4Ñ4Ô4‰ˆˆ1Ý�˜A ™E™
œ
 Q Q q¡T¤TÑ)¨Aµ¨sµB¨<ÐBÐB¸6ÐBÐ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™   € àŒ{ŒÔ*ð 	IÝØGñIô Ið Ið ˆDÔ˜TÐ,Ð, VÐ,Ð,ˆÝ�#˜DÐ!Ñ!Ô!ˆÝ�# Ð%Ñ%Ô%ˆå˜A˜A˜a™DœD 1™H a¨¬Ñ2Ô2ˆå�a˜Ñ"Ô"Ð"r4   c                 ó  ‡‡‡‡— t          dd¬¦  «        Šd}t          |t          ¦  «        r(t          |j        d         |j        d         ¦  «        }d}	 |                      |¦  «        Šˆfd„| j        D ¦   «         d         } | j        |fi ‰¤ŽŠ‰j        t          j
        u st          ‰j        t          ¦  «        r|st          j        nt          j        S t          ‰j        t          ¦  «        r't          ˆˆˆfd„‰j        j        D ¦   «         ¦  «        S t!           ‰‰¦  «        ‰‰j        ffi ‰¤ŽS # t"          $ rÄ dd	lm} |j        |j        z
  }t-          |¦  «        s| j        }|j        }n ||fi ‰¤Ž}d}t          |t.          ¦  «        sdd
lm}	  |	|| j        j        ¬¦  «        }t7          ‰|¦  «        }
|
                     |                     |
j        |¦  «        ¦  «        }|s|nt          j        |z
  cY S w xY w)Nr‘   Tr­   Fr   rW   c                 ó4   •— g | ]}|j         ‰j         k    ¯|‘ŒS r:   rÊ   )rR   rÌ   rN   s     €r2   rS   z0ContinuousPSpace.probability.<locals>.<listcomp>”  s'   ø€ ÐIÐIÐI˜¨b¬i¸6¼=Ò.HÐ.H�"Ð.HÐ.HÐ.Hr4   c              3   ót   •K  — | ]2}t          |t          ¦  «        ¯t           ‰‰¦  «        ‰|ffi ‰¤ŽV — Œ3d S rG   )r`   r   r   )rR   ÚsubsetrD   r   r‘   s     €€€r2   rÐ   z/ContinuousPSpace.probability.<locals>.<genexpr>›  sn   øè è € ð Fð FØAGÝ(2°6½8Ñ(DÔ(DðFÝ˜c˜c !™fœf q¨& kÐ<Ð<°VÐ<Ð<ðFð Fð Fð Fð Fð Fr4   )rÇ   )ÚContinuousDistributionHandmade)rA   )r   r`   r   r
   rb   ÚwhererÑ   rÙ   rA   r   ÚEmptySetr   r¯   ÚOner   Úsumr   r/   Úsympy.stats.rvrÇ   re   rf   r%   r}   Úsympy.stats.crv_typesrå   rN   ÚSingleContinuousPSpaceÚprobabilityÚ	__class__Úvalue)r1   r]   rD   Úcond_invrÌ   rÇ   rB   ÚdensÚcomprå   Úspacer¹   rN   r   r‘   s     `         @@@r2   rí   zContinuousPSpace.probability‹  sh  øøøø€ Ý�#˜DÐ!Ñ!Ô!ˆØˆÝ�i¥Ñ$Ô$ð 	Ý˜9œ>¨!Ô,¨i¬n¸QÔ.?Ñ@Ô@ˆIØˆHð 	>Ø—Z’Z 	Ñ*Ô*ˆFØIÐIÐIÐI˜tœ{ÐIÑIÔIÈ!ÔLˆBà&�$Ô& rÐ4Ð4¨VÐ4Ð4ˆCàŒz�QœZÐ'Ð'­:°f´jÅ)Ñ+LÔ+LÐ'Ø%-Ð8•q”v�vµ1´5Ð8Ý˜&œ*¥eÑ,Ô,ð FÝð Fð Fð Fð Fð Fð Fà”Z”_ðFñ Fô Fñ Fô Fð Fõ ˜C˜C ™FœF Q¨¬
 OÐ>Ð>°vÐ>Ð>Ð>øõ #ð 	>ð 	>ð 	>Ø.Ð.Ð.Ð.Ð.Ð.Ø”= 9¤=Ñ0ˆDÝ˜T‘?”?ð Ø”|�Ø ”}��à�w˜tÐ.Ð. vÐ.Ð.�Ø�Ý˜dÕ$:Ñ;Ô;ð QØPÐPÐPÐPÐPÐPØ5Ð5°dÀÄÄÐPÑPÔP�å*¨1¨dÑ3Ô3ˆEØ×&Ò& y×':Ò':¸5¼;ÈÑ'MÔ'MÑNÔNˆFØ!)Ð=�6�6­q¬u°v©~Ð=Ð=Ð=ð	>øøøs!   ÁBD8 ÃA D8 ÄD8 Ä8CHÈHc                 ód  — t          t          |¦  «        ¦  «        }t          |¦  «        dk    r|                     | j        ¦  «        st          d¦  «        ‚t          |¦  «        d         }t          ||¦  «        }|                     | j	        j
        ¦  «        }t          |j        |¦  «        S )NrW   z2Multiple continuous random variables not supportedr   )r>   r)   rh   ÚissubsetrÑ   r/   rz   rj   rk   rN   rA   r<   r@   )r1   r]   rÓ   rÌ   Úintervals        r2   ræ   zContinuousPSpace.where´  s—   € Ý� yÑ1Ô1Ñ2Ô2ˆÝ�C‘”˜A’� #§,¢,¨t¬{Ñ";Ô";�Ý%ØDñFô Fð Få�3‰ZŒZ˜Œ]ˆÝ4°YÀÑCÔCˆØ×%Ò% d¤k¤oÑ6Ô6ˆÝ% b¤i°Ñ:Ô:Ð:r4   c                 ó^  — |                      d„ | j        D ¦   «         ¦  «        }t          | j        |¦  «        }|rcd„ | j        D ¦   «         } |j        | j        fi |¤Ž}| j        |                      |¦  «        z  }t          t          |j        ¦  «        |¦  «        }t          ||¦  «        S )Nc                 ó   — i | ]
}||j         “ŒS r:   rÊ   rË   s     r2   rÍ   z6ContinuousPSpace.conditional_space.<locals>.<dictcomp>¿  s   € Ð'LÐ'LÐ'L¸"¨¨B¬IÐ'LÐ'LÐ'Lr4   c                 óH   — i | ]}|t          t          |¦  «        ¦  «        “Œ S r:   )r   ÚstrrË   s     r2   rÍ   z6ContinuousPSpace.conditional_space.<locals>.<dictcomp>Ç  s&   € ÐFÐFÐF°2˜B¥¥c¨"¡g¤g¡¤ÐFÐFÐFr4   )
rÒ   rÑ   rU   rN   r   rE   r   r   rz   rÅ   )	r1   r]   Ú	normalizerD   rN   ÚreplacementÚnormr   rÇ   s	            r2   Úconditional_spacez"ContinuousPSpace.conditional_space¾  s¶   € Ø×&Ò&Ð'LÐ'LÀÄÐ'LÑ'LÔ'LÑMÔMˆ	Ý,¨T¬[¸)ÑDÔDˆØð 	9ð GÐF¸¼ÐFÑFÔFˆKØ-�6Ô-¨d¬hÐAÐA¸&ÐAÐAˆDØ”(˜TŸ]š]¨;Ñ7Ô7Ñ7ˆCõ �U 6¤>Ñ2Ô2°CÑ8Ô8ˆGå ¨Ñ0Ô0Ð0r4   ©NFrÂ   )r5   r6   r7   r8   r9   Úis_realr{   r   rE   rÙ   r   r”   rŸ   r§   r¾   rí   ræ   rþ   r:   r4   r2   rÅ   rÅ   1  s  € € € € € ðð ð €MØ€Gàð2ð 2ñ „Xð2ð*ð *ð *ð *ð
Sð 
Sð 
Sð ðð ñ „Wðð ðð ñ „Wðð ðð ñ „Wðð ð#ð #ñ „Wð#ð'>ð '>ð '>ðR;ð ;ð ;ð1ð 1ð 1ð 1ð 1ð 1r4   rÅ   c                   ól   — 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dS )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                 óP   — t          t          | j        ¦  «        | j        ¦  «        S rG   )r<   r   r@   rA   r0   s    r2   rN   zSingleContinuousPSpace.domainß  s   € å%¥g¨d¬kÑ&:Ô&:¸D¼HÑEÔEÐEr4   r:   ÚscipyNc                 ó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ÔVÐWÐWr4   Fc                 ó(  — |p| j         f}| j         |vr|S t          |¦  «        }|                     d„ |D ¦   «         ¦  «        }| j         j        }	  | j        j        ||fd|i|¤ŽS # t          $ r  t          || j        z  || j	        ffi |¤ŽcY S w xY w)Nc                 ó   — i | ]
}||j         “ŒS r:   rÊ   rË   s     r2   rÍ   z>SingleContinuousPSpace.compute_expectation.<locals>.<dictcomp>ñ  rÎ   r4   rµ   )
rï   r   rÒ   r@   r  r»   r   r   r   rA   )r1   rB   rÓ   rµ   rD   r�   s         r2   rE   z*SingleContinuousPSpace.compute_expectationë  sË   € ØÐ"�d”j�]ˆØŒ:˜SÐ Ð ØˆKå˜‰~Œ~ˆØ�}Š}Ð:Ð:°cÐ:Ñ:Ô:Ñ;Ô;ˆàŒJÔˆð	FØ0�4Ô$Ô0°°qÐVÐVÀ8ÐVÈvÐVÐVÐVøÝð 	Fð 	Fð 	FÝ˜D 4¤8™O¨a°´¨]ÐEÐE¸fÐEÐEÐEÐEÐEð	Føøøs   ÁA' Á''BÂBc                 ó¢   — || j         k    r2t          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ù  se   € Ø�4”:ÒÐÝ�c Ð%Ñ%Ô%ˆAÝ˜!Ð2˜TÔ.Ô2°1Ð?Ð?¸Ð?Ð?Ñ@Ô@Ð@å#Ô/°°dÐEÐE¸fÐEÐEÐEr4   c                 ó¢   — || j         k    r2t          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   sf   € Ø�4”:ÒÐÝ�c Ð%Ñ%Ô%ˆAÝ˜!ÐF˜TÔ.ÔFÀqÐSÐSÈFÐSÐSÑTÔTÐTå#ÔCÀDÈ$ÐYÐYÐRXÐYÐYÐYr4   c                 ó¢   — || j         k    r2t          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  sf   € Ø�4”:ÒÐÝ�c Ð%Ñ%Ô%ˆAÝ˜!ÐI˜TÔ.ÔIÈ!ÐVÐVÈvÐVÐVÑWÔWÐWå#ÔFÀtÈTÐ\Ð\ÐU[Ð\Ð\Ð\r4   c                 ó  ‡‡— || j         k    r| j        S t          dd¬¦  «        Št          |‰z
  | j         t          j        ¦  «        }t          |t          ¦  «        r>t          |j	        ¦  «        dk    r&|j	        d         t          j        u r|j	        d         }|j
        st          d|›d| j         ›�¦  «        ‚|                      | j         ¦  «        Št          ˆˆfd	„|D ¦   «         ¦  «        }t          ‰|¦  «        S )
NÚyTr­   rX   r   rW   zCan not solve z for c              3   ót   •K  — | ]2} ‰|¦  «        t          |                     ‰¦  «        ¦  «        z  V — Œ3d S rG   )ÚabsÚdiff)rR   ÚgÚfxr  s     €€r2   rÐ   z9SingleContinuousPSpace.compute_density.<locals>.<genexpr>  s@   øè è € Ð4Ð4¨A���A‘”�˜QŸVšV A™YœY™œÑ'Ð4Ð4Ð4Ð4Ð4Ð4r4   )rï   rÇ   r   r    r   ÚRealsr`   r   rh   rb   Ú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Ñ4Ô4ˆå�b�,Ñ'Ô'ð 	 Ý�2”7‰|Œ|˜qÒ Ð  R¤W¨Q¤Zµ1´7Ð%:Ð%:Ø”W˜Q”Z�ØŒð 	MÝ�*¸$¸$¸$ÀÄ
À
ÐKÑLÔLÐLØ×!Ò! $¤*Ñ-Ô-ˆÝÐ4Ð4Ð4Ð4Ð4°Ð4Ñ4Ô4Ñ4Ô4ˆÝ�a˜‰}Œ}Ðr4   c                 ó¢   — || j         k    r2t          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  se   € à�4”:ÒÐÝ�c Ð%Ñ%Ô%ˆAÝ˜!Ð7˜TÔ.Ô7¸ÐDÐD¸VÐDÐDÑEÔEÐEå#Ô4°T¸4ÐJÐJÀ6ÐJÐJÐJr4   )r:   r  Nrÿ   )r5   r6   r7   r8   r{   rA   rN   r	  rE   r”   rŸ   r§   rÙ   r¾   r:   r4   r2   rì   rì   Ñ  sà   € € € € € ðð ð ð%ð %ñ „Xð%ð ðFð Fñ „XðFðXð Xð Xð XðFð Fð Fð FðFð Fð FðZð Zð Zð]ð ]ð ]ðð ð ð"Kð Kð Kð Kð Kr4   rì   c                 ól   — 	 t          | |fi |¤ŽS # t          $ r t          d| d         z  ¦  «        ‚w xY w)Nz!Reduction of condition failed %s
r   )r!   r   r?   )rq   r´   rD   s      r2   Ú_reduce_inequalitiesr  '  sW   € ðOÝ+¨J¸ÐFÐF¸vÐFÐFÐFøÝð Oð Oð OÝÐ=À
È1ÄÑMÑNÔNÐNðOøøøs   ‚ �#3c                 ó*  ‡— | j         rt          | gg‰d¬¦  «        S t          | t          ¦  «        rt	          ˆfd„| j        D ¦   «         Ž S t          | t          ¦  «        r2ˆfd„| j        D ¦   «         }|d         }|D ]} |j        |¦  «        }Œ|S d S )NF©Ú
relationalc                 ó8   •— g | ]}t          |gg‰d ¬¦  «        ‘ŒS ©Fr!  ©r  ©rR   Úargr´   s     €r2   rS   z5reduce_rational_inequalities_wrap.<locals>.<listcomp>2  s<   ø€ ð 'ð 'ð 'Øõ ,¨c¨U¨G°SÀUÐKÑKÔKð 'ð 'ð 'r4   c                 ó8   •— g | ]}t          |gg‰d ¬¦  «        ‘ŒS r$  r%  r&  s     €r2   rS   z5reduce_rational_inequalities_wrap.<locals>.<listcomp>5  s<   ø€ ð 'ð 'ð 'Øõ *¨C¨5¨'°3À5ÐIÑIÔIð 'ð 'ð 'r4   r   )rc   r  r`   r   r   rb   r   rk   )r]   r´   Ú	intervalsr   rs   s    `   r2   rj   rj   .  sã   ø€ ØÔð JÝ# i [ M°3À5ÐIÑIÔIÐIÝ�)�RÑ Ô ð (Ýð 'ð 'ð 'ð 'Ø ”~ð'ñ 'ô 'ð (ð 	(å�)�SÑ!Ô!ð ð'ð 'ð 'ð 'Ø ”~ð'ñ 'ô 'ˆ	à�aŒLˆØð 	ð 	ˆAØ�”˜A‘”ˆAˆAØˆðð r4   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   rU   r}   r‚   rÅ   rì   r  rj   r:   r4   r2   ú<module>r>     s
  ððð ð #Ð "Ð "Ð "Ð "Ð "Ø $Ð $Ð $Ð $Ð $Ð $Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø "Ð "Ð "Ð "Ð "Ð "Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø >Ð >Ð >Ð >Ð >Ð >Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø :Ð :Ð :Ð :Ð :Ð :Ø >Ð >Ð >Ð >Ð >Ð >Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø &Ð &Ð &Ð &Ð &Ð &Ø &Ð &Ð &Ð &Ð &Ð &Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ +Ð +Ð +Ð +Ð +Ð +Ø CÐ CÐ CÐ CÐ CÐ Cð[ð [ð [ð [ð [ð [ð [ð [ð [ð [ð [ð [ð [ð [ð [ð [ð [ð [ð [ð [ð [ð [ð [ð [ð	Ið 	Ið 	Ið 	Ið 	I�|ñ 	Iô 	Ið 	Ið3ð 3ð 3ð 3ð 3Ð-¨|ñ 3ô 3ð 3ð(Fð Fð Fð Fð F˜mÐ-=ñ Fô Fð Fð$?=ð ?=ð ?=ð ?=ð ?=Ð"2Ð4Eñ ?=ô ?=ð ?=ðDð ð ð ð ˜\ñ ô ð ð
Q2ð Q2ð Q2ð Q2ð Q2Ð#9¸>ñ Q2ô Q2ð Q2ðh]1ð ]1ð ]1ð ]1ð ]1�vñ ]1ô ]1ð ]1ð@TKð TKð TKð TKð TKÐ-¨|ñ TKô TKð TKðlOð Oð Oðð ð ð ð r4   