Evaluating an expression is as simple as the following lines :
String expression = "(2^3-1)*sin(pi/4)/ln(pi^2)";
Double result = new DoubleEvaluator().evaluate(expression);
This library requires Java 6+ and is available for free under Apache License, version 2.0.
Key features:
- Functions support: including variable number of arguments and functions with no argument.
- Constants support: for example pi and e when evaluating expressions on doubles.
- Variables support: Expressions can include variables (example "sin(x)").
- Highly configurable:
This library comes with some built-in functions and operators, it is very easy to reduce the number of them (for example, the trigonometric
functions can be removed from the function set if you want to implement a financial calculator).
It's also easy to define your own bracket pairs ({},[], etc ...) or to add your own operators, functions or constants. - Extensible: This library is provided with an evaluator that deals with expression on real numbers, if you need one on complex numbers, or on anything else, you can implement your own.
- Localization: Function and constant's names can be changed easily
- Expression syntax check: Basic infix evaluators consider expressions such as "4 3 +" as valid expressions. Javaluator performs a full syntax check while evaluating the expression.
- Small footprint: This library is distributed as a 26kB jar. It needs no external library in order to run.
Limitations:
- Only unary and binary operators are supported (ternary operators such as condition?value if true:value if false are not).
- Non-associative operators are not supported.
A demonstration application that requires Java 7+ is available at https://fathzer.github.io/javaluator/javaluator-demo.jar.
Download it then run:
java -jar javaluator-demo.jar