Method for evaluating math expressions in Java

formula, java, math

Solution

There's also exp4j, an expression evaluator based on `Dijkstra's Shunting Yard`. It's freely available and redistributable under the Apache License 2.0, only about 25KB in size, and quite easy to use:

Calculable calc = new ExpressionBuilder("3 * sin(y) - 2 / (x - 2)")
        .withVariable("x", varX)
        .withVariable("y", varY)
        .build()
double result1=calc.calculate();

When using a newer API version like `0.4.8`:

Expression calc = new ExpressionBuilder("3 * sin(y) - 2 / (x - 2)")
    .variable("x", x)
    .variable("y", y)
    .build();
double result1 = calc.evaluate();

There's also a facility to use custom functions in exp4j.

Problem

In one of my projects I want to add a feature where the user can provide in a formula, for example ``` sin (x + pi)/2 + 1 ``` which I use in my Java app ``` /** * The formula provided by the user */ private String formula; // = "sin (x + pi)/2 + 1" /* * Evaluates the formula and computes the result by using the * given value for x */ public double calc(double x) { Formula f = new Formula(formula); f.setVar("x", x); return f.calc(); // or something similar } ``` How can I evaluate math expressions?

Original source

Related problems