TO SUPPORT MY WORK, ORDER A COMMERCIAL LICENSE
THANK YOU!
Tutorial Math Collection API spec Download
Below is the code for JAVA, the code for C# is almost identical.
Case 1: Fast function definition (performance of creation)
import org.mariuszgromada.math.mxparser.*; ... Function f = new Function("f", "x^2", "x"); Expression e = new Expression("f(2)", f); mXparser.consolePrintln("Res 1: " + e.getExpressionString() + " = " + e.calculate()); mXparser.consolePrintln("Res 2: f(5) = " + f.calculate(5));
[mXparser-v.5.0.0] Res 1: f(2) = 4.0 [mXparser-v.5.0.0] Res 2: f(5) = 25.0
Case 2: Handy function constructor, but slower proces of function creation (performance of creation slower, but calculation the same)
import org.mariuszgromada.math.mxparser.*; ... Function f = new Function("f(x) = x^2"); Expression e = new Expression("f(2)", f); mXparser.consolePrintln("Res 1: " + e.getExpressionString() + " = " + e.calculate()); mXparser.consolePrintln("Res 2: f(5) = " + f.calculate(5));
[mXparser-v.5.0.0] Res 1: f(2) = 4.0 [mXparser-v.5.0.0] Res 2: f(5) = 25.0
Case 3: Function with more parameters
import org.mariuszgromada.math.mxparser.*; ... Function f = new Function("f(a, b, c) = a+b+c"); Expression e = new Expression("f(1,2,3)", f); mXparser.consolePrintln("Res 1: " + e.getExpressionString() + " = " + e.calculate()); mXparser.consolePrintln("Res 2: f(1,2,3) = " + f.calculate(1,2,3));
[mXparser-v.5.0.0] Res 1: f(1,2,3) = 6.0 [mXparser-v.5.0.0] Res 2: f(1,2,3) = 6.0
Case 4: Function in function
import org.mariuszgromada.math.mxparser.*; ... Function g = new Function("g(x) = 2*x"); Function f = new Function("f(x) = g(x)^2", g); mXparser.consolePrintln("Res 1: g(1) = " + g.calculate(1)); mXparser.consolePrintln("Res 2: f(1) = " + f.calculate(1));
[mXparser-v.5.0.0] Res 1: g(1) = 2.0 [mXparser-v.5.0.0] Res 2: f(1) = 4.0
Case 5: Implementing your own Function Extension
import org.mariuszgromada.math.mxparser.*; ... /* * Implementing FunctionExtension interface */ class Addition implements FunctionExtension { double x; double y; public Addition() { x = Double.NaN; y = Double.NaN; } public Addition(double x, double y) { this.x = x; this.y = y; } public int getParametersNumber() { return 2; } public void setParameterValue(int argumentIndex, double argumentValue) { if (argumentIndex == 0) x = argumentValue; if (argumentIndex == 1) y = argumentValue; } public String getParameterName(int parameterIndex) { switch (parameterIndex) { case 0: return "x"; case 1: return "y"; default: return ""; } } public double calculate() { return x+y; } public FunctionExtension clone() { return new Addition(x, y); } }
import org.mariuszgromada.math.mxparser.*; ... ... /* * Creating extended function */ Function f = new Function("f", new Addition()); mXparser.consolePrintln("f.calculate(1,2) = " + f.calculate(1,2) ); /* * Using extended function in expression */ Expression e = new Expression("f(2,3)", f); mXparser.consolePrintln(e.getExpressionString() + " = " + e.calculate() );
[mXparser-v.5.0.0] f.calculate(1,2) = 3.0 [mXparser-v.5.0.0] f(2,3) = 5.0
Nuget
Install-Package MathParser.org-mXparser -Version 5.0.2
Maven
<dependency>
<groupid>org.mariuszgromada.math</groupid>
<artifactid>MathParser.org-mXparser</artifactid>
<version>5.0.2</version>
</dependency>
Gradle
implementation 'org.mariuszgromada.math:MathParser.org-mXparser:5.0.2'
Gradle (Kotlin)
implementation("org.mariuszgromada.math:MathParser.org-mXparser:5.0.2")
GitHub
git clone https://github.com/mariuszgromada/MathParser.org-mXparser
OTHER DOWNLOAD OPTIONS
Download latest release – v.5.0.2 Leonis: bin + docDownload latest release – v.5.0.2 Leonis: bin only, includes separate binaries for various .NET platforms and Java versions
Source code .zipSource code .tar.gz
View on GitHubMathSpace.pl