User defined functions

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

NEWS FROM MATHPARSER.ORG
SOURCE CODE

Source code .zipSource code .tar.gz
View on GitHubMathSpace.pl

DONATION
Did you find the software useful?
Please consider donation 🙂
DONATE