mXparser - a super easy, rich and highly flexible Mathematical Expression Parser (Math Parser, Expression Evaluator) library for JAVA, Android and C# .NET.
mXparser is a highly flexible parser of mathematical expressions provided as text. Software delivers easy to use API for JAVA and C# .NET.
- JAVA: 1.5, 1.6, 1.7, 1.8
- Android - tested with mxparser compiled using jdk 1.7
- .NET / MONO: 2.0, 3.0, 3.5, 4.0, 4.5, 4.6 (CLS)
- basic operators, i.e.: +, -, *, ^, !
- Boolean logic operators i.e.: or, and, xor
- binary relations i.e.: =, <, >
- math functions (large library of 1-arg, 2-arg, 3-arg - functions) i.e.: sin, cos, Stirling numbers, log, inverse functions
- constants (large library), i.e.: pi, e, golden ratio
- n-args functions, i.e.: greatest common divisor
- iterated summation and product operators
- differentiation and integration
- user defined constants and arguments, both free - and dependent on other arguments + possibility of use in functions
- user defined functions (both free and depended)
- user defined recursive arguments + simple (controlled) recursion (1 recursive argument)
- user defined recursive functions / expressions (any) - complex, many arguments, no limitation
- internal syntax checking
- internal help
- other useful functionalities, i.e.: computing time, expression description.
Expression e = new Expression("2+3");
e.calculate();
π
Expression e = new Expression("2+(3-5)^2");
e.calculate();
π
Expression e = new Expression("2*pi");
e.calculate();
π
Constant tau = new Constant("tau = 2*pi");
Expression e = new Expression("3*tau", tau);
e.calculate();
π
Expression e = new Expression("sin(2*pi)");
e.calculate();
π
Expression e = new Expression("gcd(2,5,10,30)");
e.calculate();
π
Argument x = new Argument("x = 5");
Expression e = new Expression("sin(x)");
e.calculate();
π
Argument x = new Argument("x = 5");
Argument y = new Argument("y = 2*x", x);
Expression e = new Expression("sin(y)", y);
e.calculate();
π
Argument x = new Argument("x = 5");
Expression e = new Expression("if(sin(x) > 5, 1, 0)", x);
e.calculate();
π
Expression e = new Expression("5=6");
e.calculate();
π
Expression e = new Expression("5 <= 6");
e.calculate();
π
Expression e = new Expression("sum(i, 1, 10, 2*i^2 + pi)");
e.calculate();
π
Expression e = new Expression("prod(i, 1, 5, i, 0.5)");
e.calculate();
π
Argument x = new Argument("x = pi/2");
Expression e20 = new Expression("sum(n,0,10,(-1)^n*(x^(2*n+1))/(2*n+1)!)", x);
e.calculate();
π
[calculus - differentiation] You still want more fun with calculus operations, i.e. differentiation...
Argument x = new Argument("x = pi/2");
Expression e = new Expression("cos(x)-der(sin(x), x)", x);
e.calculate();
π
Expression e = new Expression("2*int(sqrt(1-x^2), x, -1, 1)");
e.calculate();
π
Function f = new Function("f(x,y) = sin(x) + cos(y)");
f.calculate(1,2);
Expression e = new Expression("f(1,2) - 10", f);
e.calculate();
π
Function f = new Function("f(n) = if( n>0, n*f(n-1), 1)");
f.calculate()
π
Function Cnk = new Function("Cnk(n,k) = if(k>0, if(k<n, Cnk(n-1,k-1)+Cnk(n-1,k), 1), 1)");
Cnk.calculate()
π
If anything above matches you then mXparser is a good choce! mXparser is freely distributed under Simplified BSD licence, but still you can give credits to the author, and even donate if you wish π
Expression e = new Expression("2+1/a");
e.checkSyntax();
mXparser.consolePrintln(e.getErrorMessage());
Best regards, Mariusz Gromada