Calculation Steps Register

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.

Calculation is a multi-step process and the CalculationStepsRegister class provides a register to store all the steps as a collection of CalculationStepRecord, also done in a recursive way.

Case 1: Simple Expression

import org.mariuszgromada.math.mxparser.*;
...
Expression e = new Expression("2*(3+4)+5");
CalcStepsRegister calcStepsRegister = new CalcStepsRegister();
mXparser.consolePrintln(e.getExpressionString() + " = " + e.calculate(calcStepsRegister));
mXparser.consolePrintln("----");
/* Printing content of all the calculation steps */
for (CalcStepRecord step : calcStepsRegister.calcStepRecords)
	mXparser.consolePrintln(step.content);
[mXparser-v.5.0.3] 2*(3+4)+5 = 19.0
[mXparser-v.5.0.3] ----
[mXparser-v.5.0.3] 2*(3+4)+5
[mXparser-v.5.0.3] 2*(7)+5
[mXparser-v.5.0.3] 2*7+5
[mXparser-v.5.0.3] 14+5
[mXparser-v.5.0.3] 19

Case 2: Dependent User Argument

import org.mariuszgromada.math.mxparser.*;
...
Argument x = new Argument("x", "2*(3+4)+5");
CalcStepsRegister calcStepsRegister = new CalcStepsRegister();
mXparser.consolePrintln(x.getArgumentName() + " = " + x.getArgumentValue(calcStepsRegister));
mXparser.consolePrintln("----");
/* Printing a bit more just than the steps content */
mXparser.consolePrintln("calcStepsRegister.argumentNameStart = " + calcStepsRegister.argumentNameStart);
mXparser.consolePrintln("calcStepsRegister.expressionStringStart = " + calcStepsRegister.expressionStringStart);
mXparser.consolePrintln("calcStepsRegister.result = " + calcStepsRegister.result);
mXparser.consolePrintln("calcStepsRegister.computingTime = " + calcStepsRegister.computingTime);
mXparser.consolePrintln("----");
for (CalcStepRecord step : calcStepsRegister.calcStepRecords)
	mXparser.consolePrintln(step.numberGroupWithin + ". " + step.content);
[mXparser-v.5.0.3] x = 19.0
[mXparser-v.5.0.3] ----
[mXparser-v.5.0.3] calcStepsRegister.argumentNameStart = x
[mXparser-v.5.0.3] calcStepsRegister.expressionStringStart = 2*(3+4)+5
[mXparser-v.5.0.3] calcStepsRegister.result = 19.0
[mXparser-v.5.0.3] calcStepsRegister.computingTime = 0.062
[mXparser-v.5.0.3] ----
[mXparser-v.5.0.3] 1. 2*(3+4)+5
[mXparser-v.5.0.3] 2. 2*(7)+5
[mXparser-v.5.0.3] 3. 2*7+5
[mXparser-v.5.0.3] 4. 14+5
[mXparser-v.5.0.3] 4. 19

Case 3: User Function

import org.mariuszgromada.math.mxparser.*;
...
Function f = new Function("f(x) = x*(2*(3+4)+5)");
CalcStepsRegister calcStepsRegister = new CalcStepsRegister();
f.setArgumentValue(0, 2);
mXparser.consolePrintln(f.getFunctionName() + " = " + f.calculate(calcStepsRegister));
mXparser.consolePrintln("----");
/* Printing a bit more just than the steps content - adding step type */
mXparser.consolePrintln("calcStepsRegister.functionNameStart = " + calcStepsRegister.functionNameStart);
mXparser.consolePrintln("calcStepsRegister.expressionStringStart = " + calcStepsRegister.expressionStringStart);
mXparser.consolePrintln("calcStepsRegister.result = " + calcStepsRegister.result);
mXparser.consolePrintln("calcStepsRegister.computingTime = " + calcStepsRegister.computingTime);
mXparser.consolePrintln("----");
for (CalcStepRecord step : calcStepsRegister.calcStepRecords)
	mXparser.consolePrintln(step.type + " " + step.numberGroupWithin + ". " + step.content);
[mXparser-v.5.0.3] f = 38.0
[mXparser-v.5.0.3] ----
[mXparser-v.5.0.3] calcStepsRegister.functionNameStart = f
[mXparser-v.5.0.3] calcStepsRegister.expressionStringStart = x*(2*(3+4)+5)
[mXparser-v.5.0.3] calcStepsRegister.result = 38.0
[mXparser-v.5.0.3] calcStepsRegister.computingTime = 0.031
[mXparser-v.5.0.3] ----
[mXparser-v.5.0.3] Function 1. x*(2*(3+4)+5)
[mXparser-v.5.0.3] Function 2. 2*(2*(7)+5)
[mXparser-v.5.0.3] Function 3. 2*(2*7+5)
[mXparser-v.5.0.3] Function 4. 2*(14+5)
[mXparser-v.5.0.3] Function 5. 2*(19)
[mXparser-v.5.0.3] Function 6. 2*19
[mXparser-v.5.0.3] Function 6. 38

Case 4: Expression referencing User Argument and User Function

import org.mariuszgromada.math.mxparser.*;
...
Argument x = new Argument("x", "2List(2,1,3,5,4)");
Argument y = new Argument("y = 2*x", x);
Argument z = new Argument("z = 3*y/x", x, y);
Function f = new Function("f(a,b) = a*b");
CalcStepsRegister calcStepsRegister = new CalcStepsRegister();
Expression e = new Expression("f(x,y)+z+(x*y)/z", x, y, z, f);
mXparser.consolePrintln(e.getExpressionString() + " = " + e.calculate(calcStepsRegister));
mXparser.consolePrintln("----");
/* Printing a bit more just than the steps content - adding step type */
for (CalcStepRecord step : calcStepsRegister.calcStepRecords)
	mXparser.consolePrintln(step.numberGroup + "." + step.numberGroupWithin + " " + stringRepeat("   ", step.numberGroup - 1) + step.type + " " + step.content);
mXparser.consolePrintln("----");
/* Using built-in console print of steps register */
calcStepsRegister.consolePrint();
[mXparser-v.5.0.3] f(x,y)+z+(x*y)/z = 121.5
[mXparser-v.5.0.3] ----
[mXparser-v.5.0.3] 1.1 Expression f(x,y)+z+(x*y)/z
[mXparser-v.5.0.3] 2.1    Argument 2*rList(2,1,3,5,4)
[mXparser-v.5.0.3] 2.2    Argument 2*rList(2 1 3 5 4)
[mXparser-v.5.0.3] 2.3    Argument 2*rList 2 1 3 5 4
[mXparser-v.5.0.3] 2.4    Argument 2*3
[mXparser-v.5.0.3] 2.4    Argument 6
[mXparser-v.5.0.3] 2.1    Argument 2*x
[mXparser-v.5.0.3] 3.1       Argument 2*rList(2,1,3,5,4)
[mXparser-v.5.0.3] 3.2       Argument 2*rList(2 1 3 5 4)
[mXparser-v.5.0.3] 3.3       Argument 2*rList 2 1 3 5 4
[mXparser-v.5.0.3] 3.4       Argument 2*4
[mXparser-v.5.0.3] 3.4       Argument 8
[mXparser-v.5.0.3] 2.2    Argument 2*8
[mXparser-v.5.0.3] 2.2    Argument 16
[mXparser-v.5.0.3] 2.1    Argument 3*y/x
[mXparser-v.5.0.3] 3.1       Argument 2*x
[mXparser-v.5.0.3] 4.1          Argument 2*rList(2,1,3,5,4)
[mXparser-v.5.0.3] 4.2          Argument 2*rList(2 1 3 5 4)
[mXparser-v.5.0.3] 4.3          Argument 2*rList 2 1 3 5 4
[mXparser-v.5.0.3] 4.4          Argument 2*1
[mXparser-v.5.0.3] 4.4          Argument 2
[mXparser-v.5.0.3] 3.2       Argument 2*2
[mXparser-v.5.0.3] 3.2       Argument 4
[mXparser-v.5.0.3] 3.1       Argument 2*rList(2,1,3,5,4)
[mXparser-v.5.0.3] 3.2       Argument 2*rList(2 1 3 5 4)
[mXparser-v.5.0.3] 3.3       Argument 2*rList 2 1 3 5 4
[mXparser-v.5.0.3] 3.4       Argument 2*4
[mXparser-v.5.0.3] 3.4       Argument 8
[mXparser-v.5.0.3] 2.2    Argument 3*4/8
[mXparser-v.5.0.3] 2.3    Argument 12/8
[mXparser-v.5.0.3] 2.3    Argument 1.5
[mXparser-v.5.0.3] 2.1    Argument 2*rList(2,1,3,5,4)
[mXparser-v.5.0.3] 2.2    Argument 2*rList(2 1 3 5 4)
[mXparser-v.5.0.3] 2.3    Argument 2*rList 2 1 3 5 4
[mXparser-v.5.0.3] 2.4    Argument 2*4
[mXparser-v.5.0.3] 2.4    Argument 8
[mXparser-v.5.0.3] 2.1    Argument 2*x
[mXparser-v.5.0.3] 3.1       Argument 2*rList(2,1,3,5,4)
[mXparser-v.5.0.3] 3.2       Argument 2*rList(2 1 3 5 4)
[mXparser-v.5.0.3] 3.3       Argument 2*rList 2 1 3 5 4
[mXparser-v.5.0.3] 3.4       Argument 2*3
[mXparser-v.5.0.3] 3.4       Argument 6
[mXparser-v.5.0.3] 2.2    Argument 2*6
[mXparser-v.5.0.3] 2.2    Argument 12
[mXparser-v.5.0.3] 2.1    Argument 3*y/x
[mXparser-v.5.0.3] 3.1       Argument 2*x
[mXparser-v.5.0.3] 4.1          Argument 2*rList(2,1,3,5,4)
[mXparser-v.5.0.3] 4.2          Argument 2*rList(2 1 3 5 4)
[mXparser-v.5.0.3] 4.3          Argument 2*rList 2 1 3 5 4
[mXparser-v.5.0.3] 4.4          Argument 2*2
[mXparser-v.5.0.3] 4.4          Argument 4
[mXparser-v.5.0.3] 3.2       Argument 2*4
[mXparser-v.5.0.3] 3.2       Argument 8
[mXparser-v.5.0.3] 3.1       Argument 2*rList(2,1,3,5,4)
[mXparser-v.5.0.3] 3.2       Argument 2*rList(2 1 3 5 4)
[mXparser-v.5.0.3] 3.3       Argument 2*rList 2 1 3 5 4
[mXparser-v.5.0.3] 3.4       Argument 2*3
[mXparser-v.5.0.3] 3.4       Argument 6
[mXparser-v.5.0.3] 2.2    Argument 3*8/6
[mXparser-v.5.0.3] 2.3    Argument 24/6
[mXparser-v.5.0.3] 2.3    Argument 4
[mXparser-v.5.0.3] 1.2 Expression f(6,16)+1.5+(8*12)/4
[mXparser-v.5.0.3] 1.3 Expression f(6 16)+1.5+(8*12)/4
[mXparser-v.5.0.3] 1.4 Expression f 6 16+1.5+(8*12)/4
[mXparser-v.5.0.3] 2.1    Function a*b
[mXparser-v.5.0.3] 2.1    Function 96
[mXparser-v.5.0.3] 1.5 Expression 96+1.5+(8*12)/4
[mXparser-v.5.0.3] 1.6 Expression 96+1.5+(96)/4
[mXparser-v.5.0.3] 1.7 Expression 96+1.5+96/4
[mXparser-v.5.0.3] 1.8 Expression 96+1.5+24
[mXparser-v.5.0.3] 1.9 Expression 97.5+24
[mXparser-v.5.0.3] 1.9 Expression 121.5
[mXparser-v.5.0.3] ----
[mXparser-v.5.0.3] CalcStepsRegister for Expression f(x,y)+z+(x*y)/z, result = 121.5
[mXparser-v.5.0.3] gr = 1, nr = 1, first = true, last = false, type = Expression, descr = f(x,y)+z+(x*y)/z, step = f(x,y)+z+(x*y)/z
[mXparser-v.5.0.3] gr = 2, nr = 1, first = true, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*rList(2,1,3,5,4)
[mXparser-v.5.0.3] gr = 2, nr = 2, first = false, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*rList(2 1 3 5 4)
[mXparser-v.5.0.3] gr = 2, nr = 3, first = false, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*rList 2 1 3 5 4
[mXparser-v.5.0.3] gr = 2, nr = 4, first = false, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*3
[mXparser-v.5.0.3] gr = 2, nr = 4, first = false, last = true, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 6
[mXparser-v.5.0.3] gr = 2, nr = 1, first = true, last = false, type = Argument, descr = 2*x, step = 2*x
[mXparser-v.5.0.3] gr = 3, nr = 1, first = true, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*rList(2,1,3,5,4)
[mXparser-v.5.0.3] gr = 3, nr = 2, first = false, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*rList(2 1 3 5 4)
[mXparser-v.5.0.3] gr = 3, nr = 3, first = false, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*rList 2 1 3 5 4
[mXparser-v.5.0.3] gr = 3, nr = 4, first = false, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*4
[mXparser-v.5.0.3] gr = 3, nr = 4, first = false, last = true, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 8
[mXparser-v.5.0.3] gr = 2, nr = 2, first = false, last = false, type = Argument, descr = 2*x, step = 2*8
[mXparser-v.5.0.3] gr = 2, nr = 2, first = false, last = true, type = Argument, descr = 2*x, step = 16
[mXparser-v.5.0.3] gr = 2, nr = 1, first = true, last = false, type = Argument, descr = 3*y/x, step = 3*y/x
[mXparser-v.5.0.3] gr = 3, nr = 1, first = true, last = false, type = Argument, descr = 2*x, step = 2*x
[mXparser-v.5.0.3] gr = 4, nr = 1, first = true, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*rList(2,1,3,5,4)
[mXparser-v.5.0.3] gr = 4, nr = 2, first = false, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*rList(2 1 3 5 4)
[mXparser-v.5.0.3] gr = 4, nr = 3, first = false, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*rList 2 1 3 5 4
[mXparser-v.5.0.3] gr = 4, nr = 4, first = false, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*1
[mXparser-v.5.0.3] gr = 4, nr = 4, first = false, last = true, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2
[mXparser-v.5.0.3] gr = 3, nr = 2, first = false, last = false, type = Argument, descr = 2*x, step = 2*2
[mXparser-v.5.0.3] gr = 3, nr = 2, first = false, last = true, type = Argument, descr = 2*x, step = 4
[mXparser-v.5.0.3] gr = 3, nr = 1, first = true, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*rList(2,1,3,5,4)
[mXparser-v.5.0.3] gr = 3, nr = 2, first = false, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*rList(2 1 3 5 4)
[mXparser-v.5.0.3] gr = 3, nr = 3, first = false, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*rList 2 1 3 5 4
[mXparser-v.5.0.3] gr = 3, nr = 4, first = false, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*4
[mXparser-v.5.0.3] gr = 3, nr = 4, first = false, last = true, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 8
[mXparser-v.5.0.3] gr = 2, nr = 2, first = false, last = false, type = Argument, descr = 3*y/x, step = 3*4/8
[mXparser-v.5.0.3] gr = 2, nr = 3, first = false, last = false, type = Argument, descr = 3*y/x, step = 12/8
[mXparser-v.5.0.3] gr = 2, nr = 3, first = false, last = true, type = Argument, descr = 3*y/x, step = 1.5
[mXparser-v.5.0.3] gr = 2, nr = 1, first = true, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*rList(2,1,3,5,4)
[mXparser-v.5.0.3] gr = 2, nr = 2, first = false, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*rList(2 1 3 5 4)
[mXparser-v.5.0.3] gr = 2, nr = 3, first = false, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*rList 2 1 3 5 4
[mXparser-v.5.0.3] gr = 2, nr = 4, first = false, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*4
[mXparser-v.5.0.3] gr = 2, nr = 4, first = false, last = true, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 8
[mXparser-v.5.0.3] gr = 2, nr = 1, first = true, last = false, type = Argument, descr = 2*x, step = 2*x
[mXparser-v.5.0.3] gr = 3, nr = 1, first = true, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*rList(2,1,3,5,4)
[mXparser-v.5.0.3] gr = 3, nr = 2, first = false, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*rList(2 1 3 5 4)
[mXparser-v.5.0.3] gr = 3, nr = 3, first = false, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*rList 2 1 3 5 4
[mXparser-v.5.0.3] gr = 3, nr = 4, first = false, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*3
[mXparser-v.5.0.3] gr = 3, nr = 4, first = false, last = true, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 6
[mXparser-v.5.0.3] gr = 2, nr = 2, first = false, last = false, type = Argument, descr = 2*x, step = 2*6
[mXparser-v.5.0.3] gr = 2, nr = 2, first = false, last = true, type = Argument, descr = 2*x, step = 12
[mXparser-v.5.0.3] gr = 2, nr = 1, first = true, last = false, type = Argument, descr = 3*y/x, step = 3*y/x
[mXparser-v.5.0.3] gr = 3, nr = 1, first = true, last = false, type = Argument, descr = 2*x, step = 2*x
[mXparser-v.5.0.3] gr = 4, nr = 1, first = true, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*rList(2,1,3,5,4)
[mXparser-v.5.0.3] gr = 4, nr = 2, first = false, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*rList(2 1 3 5 4)
[mXparser-v.5.0.3] gr = 4, nr = 3, first = false, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*rList 2 1 3 5 4
[mXparser-v.5.0.3] gr = 4, nr = 4, first = false, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*2
[mXparser-v.5.0.3] gr = 4, nr = 4, first = false, last = true, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 4
[mXparser-v.5.0.3] gr = 3, nr = 2, first = false, last = false, type = Argument, descr = 2*x, step = 2*4
[mXparser-v.5.0.3] gr = 3, nr = 2, first = false, last = true, type = Argument, descr = 2*x, step = 8
[mXparser-v.5.0.3] gr = 3, nr = 1, first = true, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*rList(2,1,3,5,4)
[mXparser-v.5.0.3] gr = 3, nr = 2, first = false, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*rList(2 1 3 5 4)
[mXparser-v.5.0.3] gr = 3, nr = 3, first = false, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*rList 2 1 3 5 4
[mXparser-v.5.0.3] gr = 3, nr = 4, first = false, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*3
[mXparser-v.5.0.3] gr = 3, nr = 4, first = false, last = true, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 6
[mXparser-v.5.0.3] gr = 2, nr = 2, first = false, last = false, type = Argument, descr = 3*y/x, step = 3*8/6
[mXparser-v.5.0.3] gr = 2, nr = 3, first = false, last = false, type = Argument, descr = 3*y/x, step = 24/6
[mXparser-v.5.0.3] gr = 2, nr = 3, first = false, last = true, type = Argument, descr = 3*y/x, step = 4
[mXparser-v.5.0.3] gr = 1, nr = 2, first = false, last = false, type = Expression, descr = f(x,y)+z+(x*y)/z, step = f(6,16)+1.5+(8*12)/4
[mXparser-v.5.0.3] gr = 1, nr = 3, first = false, last = false, type = Expression, descr = f(x,y)+z+(x*y)/z, step = f(6 16)+1.5+(8*12)/4
[mXparser-v.5.0.3] gr = 1, nr = 4, first = false, last = false, type = Expression, descr = f(x,y)+z+(x*y)/z, step = f 6 16+1.5+(8*12)/4
[mXparser-v.5.0.3] gr = 2, nr = 1, first = true, last = false, type = Function, descr = f(a,b) = a*b, step = a*b
[mXparser-v.5.0.3] gr = 2, nr = 1, first = false, last = true, type = Function, descr = f(a,b) = a*b, step = 96
[mXparser-v.5.0.3] gr = 1, nr = 5, first = false, last = false, type = Expression, descr = f(x,y)+z+(x*y)/z, step = 96+1.5+(8*12)/4
[mXparser-v.5.0.3] gr = 1, nr = 6, first = false, last = false, type = Expression, descr = f(x,y)+z+(x*y)/z, step = 96+1.5+(96)/4
[mXparser-v.5.0.3] gr = 1, nr = 7, first = false, last = false, type = Expression, descr = f(x,y)+z+(x*y)/z, step = 96+1.5+96/4
[mXparser-v.5.0.3] gr = 1, nr = 8, first = false, last = false, type = Expression, descr = f(x,y)+z+(x*y)/z, step = 96+1.5+24
[mXparser-v.5.0.3] gr = 1, nr = 9, first = false, last = false, type = Expression, descr = f(x,y)+z+(x*y)/z, step = 97.5+24
[mXparser-v.5.0.3] gr = 1, nr = 9, first = false, last = true, type = Expression, descr = f(x,y)+z+(x*y)/z, step = 121.5
[mXparser-v.5.0.3] Computing time = 0.047 s.
Nuget – Package Manager

Install-Package MathParser.org-mXparser -Version 5.0.7

Nuget – .NET CLI

dotnet add package MathParser.org-mXparser --version 5.0.7

Nuget – Package Reference

<PackageReference Include="MathParser.org-mXparser" Version="5.0.7"/>

Maven – Dependency

<dependency>
<groupid>
org.mariuszgromada.math</groupid>
<artifactid>
MathParser.org-mXparser</artifactid>
<version>
5.0.7</version>
</dependency>

Maven – Gradle

implementation 'org.mariuszgromada.math:MathParser.org-mXparser:5.0.7'

Maven – Gradle (Kotlin)

implementation("org.mariuszgromada.math:MathParser.org-mXparser:5.0.7")

GitHub

git clone https://github.com/mariuszgromada/MathParser.org-mXparser

OTHER DOWNLOAD OPTIONS

Download latest release – v.5.0.7 Leonis: .NET bin onlyDownload latest release – v.5.0.7 Leonis: JAVA bin onlyDownload latest release – v.5.0.7 Leonis: bin + doc

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