eval_ex

Creator: coderz1093

Last updated:

Add to Cart

Description:

eval ex

eval_ex #
A Dart port of https://github.com/uklimaschewski/EvalEx.
EvalEx supports mathematical and boolean expression evaluation, using arbitrary precision.
EvalEx supports functions, variables, and operators and additionally makes it very easy to
add your own custom functions or operators.
EvalEx uses decimal to support arbitrary precision arithmetic.
View package on pub.dev.
Basic example #
void main() {
Expression exp = Expression("2 ^ 4 + 8");
print(exp.eval().toString()); // 24

// With a variable
exp = Expression("a ^ b + c");
// Variables may contain alphanumeric characters, and "_". This can be changed
// by using setVariableCharacters(..) and setFirstVariableCharacters(..) (what chars variable are allowed to start with).
exp.setStringVariable("a", "2");
exp.setStringVariable("b", "4");
exp.setStringVariable("c", "8");
print(exp.eval().toString()); // 24

// With a function
exp = Expression("MAX(-7,8)");
print(exp.eval().toString()); // 8

// Boolean logic
exp = Expression("1>0 && 5 == 5");
print(exp.eval().toString()); // 1

exp = Expression("1>0 && 5 == 4");
print(exp.eval().toString()); // 0
}

copied to clipboard
Built-in functions and operators #



Function
Description




+
Addition


-
Subtraction


*
Multiplication


/
Division


%
Modulus


^
Power


&&
Returns 1 if both expressions are true, 0 otherwise


||
Returns 1 if either or both expressions are true, 0 otherwise


>
Returns 1 if the left expression is greater than the right


>=
Returns 1 if the left expression is greater than or equal to the right


<
Returns 1 if the right expression is greater than the left


<=
Returns 1 if the right expression is greater than or equal to the left


=
Returns 1 if the left and right expressions are equal


==
Returns 1 if the left and right expressions are equal


!=
Returns 1 if the left and right expressions are NOT equal


<>
Returns 1 if the left and right expressions are NOT equal


STREQ("str1","str2")
Returns 1 if the literal "str1" is equal to "str2", otherwise returns 0


FACT(int)
Computes the factorial of arg1


NOT(expression)
Returns 1 if arg1 evaluates to 0, otherwise returns 0


IF(cond,exp1,exp2)
Returns exp1 if cond evaluates to 1, otherwise returns exp2


Random()
Returns a random decimal between 0 and 1


SINR(exp)
Evaluates the SIN of exp, assuming exp is in radians


COSR(exp)
Evaluates the COS of exp, assuming exp is in radians


TANR(exp)
Evaluates the TAN of exp, assuming exp is in radians


COTR(exp)
Evaluates the COT of exp, assuming exp is in radians


SECR(exp)
Evaluates the SEC of exp, assuming exp is in radians


CSCR(exp)
Evaluates the CSC of exp, assuming exp is in radians


SIN(exp)
Evaluates the SIN of exp, assuming exp is in degrees


COS(exp)
Evaluates the COS of exp, assuming exp is in degrees


TAN(exp)
Evaluates the TAN of exp, assuming exp is in degrees


COT(exp)
Evaluates the COT of exp, assuming exp is in degrees


SEC(exp)
Evaluates the SEC of exp, assuming exp is in degrees


CSC(exp)
Evaluates the CSC of exp, assuming exp is in degrees


ASINR(exp)
Evaluates the ARCSIN of exp, assuming exp is in radians


ACOSR(exp)
Evaluates the ARCCOS of exp, assuming exp is in radians


ATANR(exp)
Evaluates the ARCTAN of exp, assuming exp is in radians


ACOTR(exp)
Evaluates the ARCCOT of exp, assuming exp is in radians


ATAN2R(exp1, exp1)
Evaluates the ARCTAN between exp1 and exp2, assuming exp1 and exp2 are in radians


ASIN(exp)
Evaluates the ARCSIN of exp, assuming exp is in degrees


ACOS(exp)
Evaluates the ARCCOS of exp, assuming exp is in degrees


ATAN(exp)
Evaluates the ARCTAN of exp, assuming exp is in degrees


ACOT(exp)
Evaluates the ARCCOT of exp, assuming exp is in degrees


ATAN2(exp1, exp1)
Evaluates the ARCTAN between exp1 and exp2, assuming exp1 and exp2 are in degrees


RAD(deg)
Converts deg to radians


DEG(rad)
Converts rad to degrees


MAX(a,b,...)
Returns the maximum value from the provided list of 1 or more expressions


MIN(a,b,...)
Returns the minimum value from the provided list of 1 or more expressions


ABS(exp)
Returns the absolute value of exp


LOG(exp)
Returns the natural logarithm of exp


LOG10(exp)
Returns the log base 10 of exp


ROUND(exp,precision)
Returns exp rounded to precision decimal points


FLOOR(exp)
Returns the floor of exp


CEILING(exp)
Returns the ceiling of exp


SQRT(exp)
Computes the square root of exp


e
Euler's number


PI
Ratio of circle's circumference to diameter


NULL
Alias for null


TRUE or true
Alias for 1


FALSE or false
Alias for 0



Adding custom functions, operators, and variables #
Custom functions, operators, and variables can be defined by adding them in built_ins.dart
Differences from https://github.com/uklimaschewski/EvalEx. #

Hyperbolic functions aren't supported
The SQRT function is currently limited to 64-bit precision
Built in operators/functions/variables are instead defined in built_ins.dart

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.