
    wg                         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    [/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/sympy/stats/error_prop.py<lambda>r      s!    #chh-!*;388A;      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&              rt)        ||      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   \ 99D
4yA~6>66Mt_D>&&((f%L./446666MIECtVFE-B}e46 7H$>!-h!:<A LO\!_ELLNN <E <U#H$ O# 
D#	$'h$78DAq1a488D!Gc5k12+.|D!/D/;Ha/H,JK K'!Q!Q z,q/<?CJJLLaPQcR KE K U#H O 
D#	GQK4!8d1g-11A; O 
D#	HQK$'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   