Ë
    7^(hó  ã                   óš   — 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y)z'Tools for arithmetic error propagation.é    )ÚrepeatÚcombinations)ÚAdd)ÚMul)ÚPow)ÚS)ÚSymbol)Úexp)Úsimplify)ÚRandomSymbolÚVarianceÚ
Covariance)Ú	is_randomc                 óT   — t        | j                  «      dkD  r| j                  d   S | S )Nr   )ÚlenÚargs)Úvars    úT/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/stats/error_prop.pyú<lambda>r      s!   € ¬#¨c¯h©h«-¸!Ò*;˜3Ÿ8™8 A™;€ À€ ó    c                 ó  — | j                   }t        |«      dk(  rz| |v rt        j                  S t	        | «      rt        | «      j                  «       S t        | t        «      r"t        t        | «      «      j                  «       S t        j                  S t        |«      }t        t        t        |t        ||«      t        ||«      «      «      }t        | t        «      rbt        |Ž }|rVt        |d«      D ��cg c]4  \  }}dt!        t#        |«      t#        |«      «      j%                  «       z  ‘Œ6 }	}}|t        |	Ž z  }|S t        | t&        «      r¹t)        ||«      D �
�cg c]  \  }
}||
dz  z  ‘Œ }	}
}t+        | dz  t        |	Ž z  «      }|rzt)        t        |d«      t        |d«      «      D �
���cg c]@  \  \  }
}\  }}dt!        t#        |«      t#        |«      «      j%                  «       z  |
|z  z  ‘ŒB }	}}}
}|t        |	Ž z  }|S t        | t,        «      r&|d   }|d   | |z  |d   z  dz  z  }t+        |«      }|S t        | t.        «      rt+        |d   | dz  z  «      }|S t        | «      }|S c c}}w c c}}
w c c}}}}
w )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   é   é   )r   r   r   ÚZeror   r   ÚdoitÚ
isinstancer	   r   ÚlistÚmapÚvariance_propr   r   r   r   Ú_arg0_or_varÚexpandr   Úzipr   r   r
   )ÚexprÚconstsÚinclude_covarr   ÚnargsÚvar_argsÚvar_exprÚxÚyÚtermsÚaÚvÚbs                r   r   r      st  € ð\ �9‰9€DÜ
ˆ4ƒy�A‚~Ø�6‰>Ü—6‘6ˆMÜ�tŒ_Ü˜D“>×&Ñ&Ó(Ð(Ü˜œfÔ%ÜœL¨Ó.Ó/×4Ñ4Ó6Ð6ä—6‘6ˆMÜ�‹I€EÜ”Cœ t¬V°F¸EÓ-BÜ˜}¨eÓ4ó6ó 7€Hä�$œÔÜ˜�>ˆÙä!-¨h¸Ó!:÷<Ù˜˜Að œ¤L°£O´\À!³_ÓE×LÑLÓNÓNð <ˆEñ <àœ˜U˜Ñ#ˆHð$ €Oô# 
�Dœ#Ô	Ü$'¨¨hÓ$7×8™D˜A˜q��1�a‘4“Ð8ˆÑ8Ü˜D !™G¤c¨5 kÑ1Ó2ˆÙä+.¬|¸DÀ!Ó/DÜ/;¸HÀaÓ/Hó,J÷Kñ KÙ'™˜!˜Q¡ ! Qð ”z¤,¨q£/´<À³?ÓC×JÑJÓLÑLÈaÐPQÉcÓRð KˆEó Kð œ˜U˜Ñ#ˆHð €Oô 
�Dœ#Ô	Ø�‰GˆØ�Q‰K˜4 !™8 d¨1¡gÑ-°Ñ1Ñ1ˆÜ˜A“;ˆð €Oô 
�Dœ#Ô	Ü˜H Q™K¨$°©'Ñ1Ó2ˆð €Oô ˜D“>ˆØ€Oùó)<ùó 9ùõKs   Ã89I3Å I9Æ3AI?
N)© 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>r;      s4   ðÙ -ç *å Ý Ý  Ý "Ý $Ý 6Ý ,ß OÑ OÝ $áD€ôRr   