§
    PŠtjó  ã                   óœ   — d 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 ddlmZ dd	lmZ dd
lmZmZmZ ddlmZ d„ Zdd„ZdS )z'Tools for arithmetic error propagation.é    )ÚrepeatÚcombinations)ÚAdd)ÚMul)ÚPow)ÚS)ÚSymbol)Úexp)Úsimplify)ÚRandomSymbolÚVarianceÚ
Covariance)Ú	is_randomc                 óP   — t          | j        ¦  «        dk    r| j        d         n| S )Nr   )ÚlenÚargs)Úvars    úT/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/stats/error_prop.pyú<lambda>r      s"   € ­#¨c¬h©-¬-¸!Ò*;Ð*;˜3œ8 Aœ;˜;À€ ó    © Fc                 ó´  — | j         }t          |¦  «        dk    r�| |v rt          j        S t	          | ¦  «        r!t          | ¦  «                             ¦   «         S t          | t          ¦  «        r.t          t          | ¦  «        ¦  «                             ¦   «         S t          j        S t          |¦  «        }t          t          t          |t          ||¦  «        t          ||¦  «        ¦  «        ¦  «        }t          | t          ¦  «        r3t          |Ž }|r&d„ t          |d¦  «        D ¦   «         }|t          |Ž z  }�nt          | t           ¦  «        r{d„ t#          ||¦  «        D ¦   «         }t%          | dz  t          |Ž z  ¦  «        }|rBd„ t#          t          |d¦  «        t          |d¦  «        ¦  «        D ¦   «         }|t          |Ž z  }n‡t          | t&          ¦  «        r2|d         }|d         | |z  |d         z  dz  z  }	t%          |	¦  «        }n@t          | t(          ¦  «        rt%          |d         | dz  z  ¦  «        }nt          | ¦  «        }|S )a¸  Symbolically propagates variance (`\sigma^2`) for expressions.
    This is computed as as seen in [1]_.

    Parameters
    ==========

    expr : Expr
        A SymPy expression to compute the variance for.
    consts : sequence of Symbols, optional
        Represents symbols that are known constants in the expr,
        and thus have zero variance. All symbols not in consts are
        assumed to be variant.
    include_covar : bool, optional
        Flag for whether or not to include covariances, default=False.

    Returns
    =======

    var_expr : Expr
        An expression for the total variance of the expr.
        The variance for the original symbols (e.g. x) are represented
        via instance of the Variance symbol (e.g. Variance(x)).

    Examples
    ========

    >>> from sympy import symbols, exp
    >>> from sympy.stats.error_prop import variance_prop
    >>> x, y = symbols('x y')

    >>> variance_prop(x + y)
    Variance(x) + Variance(y)

    >>> variance_prop(x * y)
    x**2*Variance(y) + y**2*Variance(x)

    >>> variance_prop(exp(2*x))
    4*exp(4*x)*Variance(x)

    References
    ==========

    .. [1] https://en.wikipedia.org/wiki/Propagation_of_uncertainty

    r   c           	      ó’   — g | ]D\  }}d t          t          |¦  «        t          |¦  «        ¦  «                             ¦   «         z  ‘ŒES ©é   ©r   Ú_arg0_or_varÚexpand)Ú.0ÚxÚys      r   ú
<listcomp>z!variance_prop.<locals>.<listcomp>P   sS   € ð <ð <ð <Ù˜˜Að �¥L°¡O¤Oµ\À!±_´_ÑEÔE×LÒLÑNÔNÑNð <ð <ð <r   r   c                 ó$   — g | ]\  }}||d z  z  ‘ŒS r   r   )r   ÚaÚvs      r   r"   z!variance_prop.<locals>.<listcomp>T   s$   € Ð8Ð8Ð8™D˜A˜q��1�a‘4‘Ð8Ð8Ð8r   c           	      óª   — g | ]P\  \  }}\  }}d t          t          |¦  «        t          |¦  «        ¦  «                             ¦   «         z  ||z  z  ‘ŒQS r   r   )r   r$   Úbr    r!   s        r   r"   z!variance_prop.<locals>.<listcomp>W   sk   € ð Kð Kð KÙ'™˜!˜Q¡ ! Qð •z¥,¨q¡/¤/µ<À±?´?ÑCÔC×JÒJÑLÔLÑLÈaÐPQÉcÑRð Kð Kð Kr   é   )r   r   r   ÚZeror   r   ÚdoitÚ
isinstancer	   r   ÚlistÚmapÚvariance_propr   r   r   r   Úzipr   r   r
   )
ÚexprÚconstsÚinclude_covarr   ÚnargsÚvar_argsÚvar_exprÚtermsr'   r%   s
             r   r.   r.      s[  € ð\ Œ9€DÝ
ˆ4�y„y�A‚~€~Ø�6ˆ>ˆ>Ý”6ˆMÝ�t‰_Œ_ð 	Ý˜D‘>”>×&Ò&Ñ(Ô(Ð(Ý˜�fÑ%Ô%ð 	Ý�L¨Ñ.Ô.Ñ/Ô/×4Ò4Ñ6Ô6Ð6å”6ˆMÝ�‰IŒI€EÝ•C� t­V°F¸EÑ-BÔ-BÝ˜}¨eÑ4Ô4ñ6ô 6ñ 7ô 7€Hå�$�ÑÔð "Ý˜�>ˆØð 	$ð<ð <Ý!-¨h¸Ñ!:Ô!:ð<ñ <ô <ˆEà�˜U˜Ñ#ˆHùÝ	�D�#Ñ	Ô	ð "Ø8Ð8¥C¨¨hÑ$7Ô$7Ð8Ñ8Ô8ˆÝ˜D !™G¥c¨5 kÑ1Ñ2Ô2ˆØð 	$ðKð KÝ+.­|¸DÀ!Ñ/DÔ/DÝ/;¸HÀaÑ/HÔ/Hñ,Jô ,JðKñ Kô KˆEð �˜U˜Ñ#ˆHøÝ	�D�#Ñ	Ô	ð "Ø�ŒGˆØ�QŒK˜4 !™8 d¨1¤gÑ-°Ñ1Ñ1ˆÝ˜A‘;”;ˆˆÝ	�D�#Ñ	Ô	ð "Ý˜H QœK¨$°©'Ñ1Ñ2Ô2ˆˆõ ˜D‘>”>ˆØ€Or   N)r   F)Ú__doc__Ú	itertoolsr   r   Úsympy.core.addr   Úsympy.core.mulr   Úsympy.core.powerr   Úsympy.core.singletonr   Úsympy.core.symbolr	   Ú&sympy.functions.elementary.exponentialr
   Úsympy.simplify.simplifyr   Ú sympy.stats.symbolic_probabilityr   r   r   Úsympy.stats.rvr   r   r.   r   r   r   ú<module>rB      sý   ðØ -Ð -à *Ð *Ð *Ð *Ð *Ð *Ð *Ð *à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø "Ð "Ð "Ð "Ð "Ð "Ø $Ð $Ð $Ð $Ð $Ð $Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OØ $Ð $Ð $Ð $Ð $Ð $àDÐD€ðRð Rð Rð Rð Rð Rr   