UNPKG

evaluator.js

Version:
120 lines (102 loc) 4.3 kB
# Evaluator.js Evaluator.js is a small, zero-dependency module for evaluating mathematical expressions. All major operations, constants, and methods are supported. Additionally, Evaluator.js intelligently reports invalid syntax, such as a misused operator, missing operand, or mismatched parentheses. Evaluator.js is used by a desktop calculator application of the same name. See a [live demo](https://evaluator.link) on the website. ## Installation ``` npm install evaluator.js ``` ## API ``` ts /** * Takes a string and evaluates the result. * * @param {string} expression The string. * * @throws {Error} No input. * @throws {Error} No valid tokens. * @throws {Error} Misused operator: <token>. * @throws {Error} Mismatched parentheses. * @throws {Error} Invalid token: <token>. * @throws {Error} No operations. * @throws {Error} Insufficient arguments for method: <token>. * @throws {Error} Insufficient operands for operator: <token>. * @throws {Error} Division by zero. * @throws {Error} Insufficient operators. * * @returns {number} The result. */ export default function (expression: string): number; ``` ## Examples ```js import evaluate from 'evaluator.js'; evaluate('8 / (2 + 2.75)'); // 1.68421053 evaluate('pi / 1.3'); // 2.41660973 evaluate('sum(5, 10, 50, -5)') // 60 evaluate('194 % 5'); // 4 evaluate('mean(12, 25, 1, 7)') // 11.25 evaluate('-8 - -3'); // -5 evaluate('acos(0)'); // 1.57079633 evaluate('((6 - 9) / 5) * 9'); // -5.4 evaluate('-e ^ -2'); // -0.13533528 ``` ## Reference ### Operators - `+` - Add / Unary Plus - `-` - Subtract / Unary Minus - `*` - Multiply - `/` - Divide - `^` - Power - `%` - Modulo - `(` - Begin Group - `)` - End Group - `,` - Separate Argument ### Constants - `E` - Euler's constant and the base of natural logarithms. - `LN2` - Natural logarithm of 2. - `LN10` - Natural logarithm of 10. - `LOG2E` - Base 2 logarithm of E. - `LOG10E` - Base 10 logarithm of E. - `PHI` - Golden ratio. - `PI` - Ratio of the circumference of a circle to its diameter. - `SQRT1_2` - Square root of 1/2. - `SQRT2` - Square root of 2. - `TAU` - Ratio of the circumference of a circle to its radius. ### Methods - `ABS(x)` - Returns the absolute value of a number. - `ACOS(x)` - Returns the arccosine of a number. - `ACOSH(x)` - Returns the hyperbolic arccosine of a number. - `ADD(x, y)` - Returns the total of two numbers. - `ASIN(x)` - Returns the arcsine of a number. - `ASINH(x)` - Returns the hyperbolic arcsine of a number. - `ATAN(x)` - Returns the arctangent of a number. - `ATANH(x)` - Returns the hyperbolic arctangent of a number. - `ATAN2(y, x)` - Returns the arctangent of the quotient of the arguments. - `CBRT(x)` - Returns the cube root of a number. - `CEIL(x)` - Returns the smallest integer greater than or equal to a number. - `COS(x)` - Returns the cosine of a number. - `COSH(x)` - Returns the hyperbolic cosine of a number. - `DIVIDE(x, y)` - Returns the quotient of two numbers. - `EXP(x)` - Returns E to the power of x. - `EXPM1(x)` - Returns subtracting 1 from EXP(x). - `FACTORIAL(x)` - Returns the factorial of x. - `FLOOR(x)` - Returns the largest integer less than or equal to a number. - `HYPOT(x[, y[, ...]])` - Returns the square root of the sum of squares of the arguments. - `LOG(x)` - Returns the natural logarithm of a number. - `LOG1P(x)` - Returns the natural logarithm of 1 + x. - `LOG10(x)` - Returns the base 10 logarithm of a number. - `LOG2(x)` - Returns the base 2 logarithm of a number. - `MAX(x[, y[, ...]])` - Returns the largest of one or more numbers. - `MEAN(x[, y[, ...]])` - Returns the mean of one or more numbers. - `MIN(x[, y[, ...]])` - Returns the smallest of one or more numbers. - `MOD(x, y)` - Returns the modulus of two numbers. - `MULTIPLY(x, y)` - Returns the product of two numbers. - `POW(x, y)` - Returns base to the exponent power. - `SIN(x)` - Returns the sine of a number. - `SINH(x)` - Returns the hyperbolic sine of a number. - `SQRT(x)` - Returns the positive square root of a number. - `SUBTRACT(x, y)` - Returns the difference of two numbers. - `SUM(x[, y[, ...]])` - Returns the sum of one or more numbers. - `TAN(x)` - Returns the tangent of a number. - `TANH(x)` - Returns the hyperbolic tangent of a number.