# Math expression parser Math expression evaluation library. It supports most of useful math operations and functions. Expressions can contain variables which can be substituted with `int`s, `float`s or `numpy.ndarray`s. ## Example usage ```python from parser import Parser parser = Parser("(-b + sqrt(b^2-4a c))/(2a)") parser.variables_names # {'c', 'a', 'b'} parser.evaluate({"a": 1, "b": -3, "c": 2}) # 1.0 parser.evaluate({"a": [1, 1, 1], "b": [-5, -6, -9], "c": [6, 9, 20]}) # [2. 3. 4.] ``` ## Expression syntax Expression can contain numbers or variable names with functions applyed to them, separated with operators or united with braces. Theese are supported: Functions: |name| math | |--|--| | `abs` | $\|x\|$ | | `acos` | $\cos^{-1}(x)$ | | `acosh` | $\cosh^{-1}(x)$ | | `acot` | $\cot^{-1}(x)$ | | `asin` | $\sin^{-1}(x)$ | | `asinh` | $\sinh^{-1}(x)$ | | `atan` | $\tan^{-1}(x)$ | | `avg` | $\overline X$ | | `cos` | $\cos(x)$ | | `cosh` | $\cosh(x)$ | | `cot` | $\cot(x)$ | | `exp` | $\exp(x)$ | | `inf` | $\inf(X)$ | | `lg` | $\lg(x)$ | | `ln` | $\ln(x)$ | | `log10` | $\log_{10}(x)$ | | `log2` | $\log_2(x)$ | | `max` | $\sup(X)$ | | `min` | $\inf(X)$ | | `prod` | $\displaystyle \prod_{i=0}^n x_i$ | | `sgn` | $sgn(x)$ | | `sign` | $sgn(x)$ | | `sin` | $\sin(x)$ | | `sinh` | $\sinh(x)$ | | `sqrt` | $\sqrt{x}$ | | `sum` | $\displaystyle\sum_{i=0}^n x_i$ | | `sup` | $\sup(X)$ | | `tan` | $\tan(x)$ | | `tanh` | $\tanh(x)$ | Operators: `+`, `-`, `*`, `/`, `^`, `%` Braces: `()`, `[]`, `{}` Floating points: `.`, `,` Functions have only one argument, provided in braces. Operators must have two operands except minus (if it is the first character of equation or braced expression). `avg`, `sum`, `max`, `sup`, `min`, `inf` and `prod` applied on `numpy.ndarray` produce `float`. **! There is no error handling yet !**