guangyuzhang / MathParser.org-mXparser

Math Parser Java Android C# .NET (CLS) Library - a super easy, rich and flexible mathematical expression parser (expression evaluator, expression provided as plain text / strings) for JAVA and C# .NET (Common Language Specification Compliant). Main features: rich built-in library of operators, constants, math functions, user defined: arguments, functions, recursive functions and general recursion (direct / indirect). Additionally parser provides grammar and internal syntax checking.

Home Page:http://mathparser.org/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

mXparser icon

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.

Supported frameworks

  • 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)

Main functionalities:

High flexibility functionalities

Project documentation

mXparser in nutshell

[calculator] You want simple calculator...

Expression e = new Expression("2+3");
e.calculate();

πŸ‘

[parenthesis] A calculator supporting parenthesis...

Expression e = new Expression("2+(3-5)^2");
e.calculate();

πŸ‘

[predefined constants] You care about predefined constants...

Expression e = new Expression("2*pi");
e.calculate();

πŸ‘

[your own constants] You need to define your own constants...

Constant tau = new Constant("tau = 2*pi");
Expression e = new Expression("3*tau", tau);
e.calculate();

πŸ‘

[built-in functions] You enjoy using many built-in functions...

Expression e = new Expression("sin(2*pi)");
e.calculate();

πŸ‘

[not only unary functions] You do not limit yourself to unary functions...

Expression e = new Expression("gcd(2,5,10,30)");
e.calculate();

πŸ‘

[arguments] What about user defined arguments...

Argument x = new Argument("x = 5");
Expression e = new Expression("sin(x)");
e.calculate();

πŸ‘

[dependent arguments] You are considering dependent arguments...

Argument x = new Argument("x = 5");
Argument y = new Argument("y = 2*x", x);
Expression e = new Expression("sin(y)", y);
e.calculate();

πŸ‘

[logic] You need to apply some logic...

Argument x = new Argument("x = 5");
Expression e = new Expression("if(sin(x) > 5, 1, 0)", x);
e.calculate();

πŸ‘

[Boolean algebra] Yes, you are right, there is a support for Boolean algebra!

Expression e = new Expression("5=6");
e.calculate();

πŸ‘

[binary relations] And for binary relations as well!

Expression e = new Expression("5 <= 6");
e.calculate();

πŸ‘

mXparser i cool! But this is only the begging, we are just warming up!

[iterated operators] You want to play with iterated operators...

Expression e = new Expression("sum(i, 1, 10, 2*i^2 + pi)");
e.calculate();

πŸ‘

[iterated operators] You want to iterate differently by not necessarily whole numbes...

Expression e = new Expression("prod(i, 1, 5, i, 0.5)");
e.calculate();

πŸ‘

[iterated operators] You want to have more fun with math...

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();

πŸ‘

[calculus - integrals] And definite integrals as well...

Expression e = new Expression("2*int(sqrt(1-x^2), x, -1, 1)");
e.calculate();

πŸ‘

mXparser is even cooler! It is time to ask about ...

[user defined functions] user defined functions...

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();

πŸ‘

[user defined recursive function] Recursion is your desire...

Function f = new Function("f(n) = if( n>0, n*f(n-1), 1)");
f.calculate()

πŸ‘

[user defined recursive function] Any kind of recursion...

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 πŸ‘

[grammar and syntax checking] mXparser can interact with end users as it supports syntax checking.

Expression e = new Expression("2+1/a");
e.checkSyntax();
mXparser.consolePrintln(e.getErrorMessage());

Enjoy :-)

Best regards, Mariusz Gromada

About

Math Parser Java Android C# .NET (CLS) Library - a super easy, rich and flexible mathematical expression parser (expression evaluator, expression provided as plain text / strings) for JAVA and C# .NET (Common Language Specification Compliant). Main features: rich built-in library of operators, constants, math functions, user defined: arguments, functions, recursive functions and general recursion (direct / indirect). Additionally parser provides grammar and internal syntax checking.

http://mathparser.org/


Languages

Language:C# 50.1%Language:Java 49.4%Language:Visual Basic 0.4%Language:F# 0.1%Language:C++ 0.1%Language:Objective-C 0.0%Language:C 0.0%