Mxparser
{{Infobox software
| name = MathParser.org-mXparser
| logo =
| author = Mariusz Gromada
| released = {{Start date and age|df=yes|2010|01}}
| discontinued =
| latest release version = 6.1.0
| latest release date = {{Start date and age|2024|10|19|df=yes}}
| programming language = Java, C#, C++
| platform = JVM, Android, C++, .NET, .NET Core, .NET Standard, Windows Phone, MONO, Xamarin, Xamarin.iOS, Xamarin.Android
| alexa =
| website = {{URL|https://mathparser.org/}}
| repo = {{URL|https://github.com/mariuszgromada/MathParser.org-mXparser/}}
}}
mXparser is an open-source mathematical expressions parser/evaluator providing abilities to calculate various expressions at a run time.[http://mathparser.org/ .org - project page] Expressions definitions are given as plain text, then verified in terms of grammar / syntax, finally calculated. Library source code is maintained separately for Java and C#, providing the same API for Java/JVM, Android, .NET and Mono (Common Language Specification Compliant).
Main features / usage examples
mXparser delivers functionalities such as: basic calculations, implied multiplication, built-in constants and functions, numerical calculus operations, iterated operators, user defined constants, user defined functions, user defined recursion, Unicode mathematical symbols support.
=Basic [[Operator (mathematics)|operators]]<ref name="col">[http://mathparser.org/mxparser-math-collection/ mXparser - Math Collection]</ref>=
mXparser supports basic operators, such as: addition '+', subtraction '-', multiplication '*', division '/', factorial '!', power '^', modulo '#'.
Expression e = new Expression("2+3/(4+5)^4");
double v = e.calculate();
=Implied multiplication<ref name="col" />=
Expression e = new Expression("2(3+4)3");
double v = e.calculate();
Expression e = new Expression("2pi(3+4)2sin(3)e");
double v = e.calculate();
=[[Binary relation]]s<ref name="col" />=
It is possible to combine typical expressions with binary relations (such as: greater than '>', less than '<', equality '=', inequality '<>', greater or equal '>=', lower or equal '<='), as each relation evaluation results in either '1' for true outcome, or '0' for false.
Expression e = new Expression("(2<3)+5");
double v = e.calculate();
=[[Logical connective|Boolean logic]]<ref name="col" />=
Boolean logic also operates assuming equivalence of '1 as true' and '0 as false'. Supported Boolean operators include: AND conjunction, OR disjunction, NAND Sheffer stroke, NOR, XOR Exclusive OR, IMP Implication, CIMP Converse implication, NIMP Material nonimplication, CNIMP Converse nonimplication, EQV Logical biconditional, Negation.
Expression e = new Expression("1 --> 0");
double v = e.calculate();
=Built-in mathematical functions<ref name="col" />=
Supported common mathematical functions (unary, binary and variable number of arguments), including: trigonometric functions, inverse trigonometric functions, logarithm functions, exponential function, hyperbolic functions, Inverse hyperbolic functions, Bell numbers, Lucas numbers, Stirling numbers, prime-counting function, exponential integral function, logarithmic integral function, offset logarithmic integral, binomial coefficient and others.
Expression e = new Expression("sin(0)+ln(2)+log(3,9)");
double v = e.calculate();
Expression e = new Expression("min(1,2,3,4)+gcd(1000,100,10)");
double v = e.calculate();
Expression e = new Expression("if(2<1, 3, 4)");
double v = e.calculate();
Expression e = new Expression("iff(2<1, 1; 3<4, 2; 10<2, 3; 5<10, 4)");
double v = e.calculate();
=Built-in math constants<ref name="col" />=
Built-in mathematical constants, with high precision.
Expression e = new Expression("sin(pi)+ln(e)");
double v = e.calculate();
=Iterated operators<ref name="col" />=
=Numerical [[Derivative|differentiation]] and [[Integral|integration]]<ref name="col" />=
mXparser delivers implementation of the following calculus operations: differentiation and integration.
Expression e = new Expression("der( sin(x), x )");
double v = e.calculate();
Expression e = new Expression("int( sqrt(1-x^2), x, -1, 1)");
double v = e.calculate();
=[[Prime number]]s support<ref name="col" />=
Expression e = new Expression("ispr(21)");
double v = e.calculate();
Expression e = new Expression("Pi(1000)");
double v = e.calculate();
=[[Mathematical operators and symbols in Unicode|Unicode mathematical symbols support]]<ref name="col" />=
Expression e = new Expression("√2");
double v = e.calculate();
Expression e = new Expression("∜16 + ∛27 + √16");
double v = e.calculate();
Expression e = new Expression("∑(i, 1, 5, i^2)");
double v = e.calculate();
Elements defined by user
Library provides API for creation of user-defined objects, such as: constants, arguments, functions.
=User-defined constants<ref name="tutorial">[http://mathparser.org/mxparser-tutorial/ mXparser - Tutorial]</ref>=
Constant t = new Constant("t = 2*pi");
Expression e = new Expression("sin(t)", t);
double v = e.calculate();
=User-defined arguments<ref name="tutorial" />=
Argument x = new Argument("x = 5");
Argument y = new Argument("y = 2*x", x);
Expression e = new Expression("sin(x)+y", x, y);
double v = e.calculate();
=User-defined functions<ref name="tutorial" />=
Function f = new Function("f(x, y) = sin(x)+cos(y)");
Expression e = new Expression("f(1,2)", f);
double v = e.calculate();
=User-defined variadic functions<ref name="tutorial" />=
Function f = new Function("f(...) = sum( i, 1, [npar], par(i) )");
Expression e = new Expression("f(1,2,3,4)", f);
double v = e.calculate();
=User-defined [[recursion]]<ref name="tutorial" />=
Function fib = new Function("fib(n) = iff( n>1, fib(n-1)+fib(n-2); n=1, 1; n=0, 0 ) )");
Expression e = new Expression("fib(10)", fib);
double v = e.calculate();
Requirements<ref name="tutorial" />
Documentation
mXparser - source code
Source code is maintained and shared on GitHub.[https://github.com/mariuszgromada/MathParser.org-mXparser mXparser - source code on GitHub]
See also
References
{{reflist}}
External links
- [http://mathparser.org/ MathParser.org]
- [https://www.nuget.org/packages/MathParser.org-mXparser/ mXparser] on NuGet
- [https://mvnrepository.com/artifact/org.mariuszgromada.math/MathParser.org-mXparser mXparser] on Apache Maven
- [https://play.google.com/store/apps/details?id=org.mathparser.scalar.lite Scalar powered by mXparser]
- [http://scalarmath.org/ ScalarMath.org powered by mXparser]
Category:Free mathematics software
Category:Free software programmed in Java (programming language)
Category:Free software programmed in C Sharp
Category:Software using the BSD license
Category:Software that uses Mono (software)
Category:Free and open-source Android software