Calculation Steps Register | mXparser – Math Expressions Parser for JAVA, C#, C++, Kotlin, Android, .NET/MONO/Xamarin – Mathematical Formula Parser
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.
// JAVA: import org.mariuszgromada.math.mxparser.*;
// C#: using 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);
#include "org/mariuszgromada/math/mxparser.hpp"
// ...
ExpressionPtr e = new_Expression("2*(3+4)+5");
CalcStepsRegisterPtr calcStepsRegister = new_CalcStepsRegister();
mXparser::consolePrintln(e->getExpressionString() + " = " + e->calculate(calcStepsRegister));
mXparser::consolePrintln("----");
/* Printing content of all the calculation steps */
for (const CalcStepRecordPtr &step : *calcStepsRegister->calcStepRecords)
mXparser::consolePrintln(step->content);
[mXparser-v.5.2.1] 2*(3+4)+5 = 19.0 [mXparser-v.5.2.1] ---- [mXparser-v.5.2.1] 2*(3+4)+5 [mXparser-v.5.2.1] 2*(7)+5 [mXparser-v.5.2.1] 14+5 [mXparser-v.5.2.1] 19
// JAVA: import org.mariuszgromada.math.mxparser.*;
// C#: using 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);
#include "org/mariuszgromada/math/mxparser.hpp"
// ...
ArgumentPtr x = new_Argument("x", "2*(3+4)+5");
CalcStepsRegisterPtr 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 (const CalcStepRecordPtr &step : *calcStepsRegister->calcStepRecords)
mXparser_consolePrintln(step->numberGroupWithin + ". " + step->content);
[mXparser-v.5.2.1] x = 19.0 [mXparser-v.5.2.1] ---- [mXparser-v.5.2.1] calcStepsRegister.argumentNameStart = x [mXparser-v.5.2.1] calcStepsRegister.expressionStringStart = 2*(3+4)+5 [mXparser-v.5.2.1] calcStepsRegister.result = 19.0 [mXparser-v.5.2.1] calcStepsRegister.computingTime = 0.083 [mXparser-v.5.2.1] ---- [mXparser-v.5.2.1] 1. 2*(3+4)+5 [mXparser-v.5.2.1] 2. 2*(7)+5 [mXparser-v.5.2.1] 3. 14+5 [mXparser-v.5.2.1] 4. 19
// JAVA: import org.mariuszgromada.math.mxparser.*;
// C#: using 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);
#include "org/mariuszgromada/math/mxparser.hpp"
// ...
FunctionPtr f = new_Function("f(x) = x*(2*(3+4)+5)");
CalcStepsRegisterPtr 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 (const CalcStepRecordPtr &step : *calcStepsRegister->calcStepRecords)
mXparser::consolePrintln(CalcStepRecord::stepTypeToString(step->type) + " " + step->numberGroupWithin + ". " + step->content);
[mXparser-v.5.2.1] f = 38.0 [mXparser-v.5.2.1] ---- [mXparser-v.5.2.1] calcStepsRegister.functionNameStart = f [mXparser-v.5.2.1] calcStepsRegister.expressionStringStart = x*(2*(3+4)+5) [mXparser-v.5.2.1] calcStepsRegister.result = 38.0 [mXparser-v.5.2.1] calcStepsRegister.computingTime = 0.106 [mXparser-v.5.2.1] ---- [mXparser-v.5.2.1] Function 1. x*(2*(3+4)+5) [mXparser-v.5.2.1] Function 2. 2*(2*(7)+5) [mXparser-v.5.2.1] Function 3. 2*(14+5) [mXparser-v.5.2.1] Function 4. 2*(19) [mXparser-v.5.2.1] Function 5. 38
// JAVA: import org.mariuszgromada.math.mxparser.*;
// C#: using org.mariuszgromada.math.mxparser;
// ...
public static String repeatString(String str, int times) {
StringBuilder result = new StringBuilder();
for (int i = 0; i < times; i++)
result.append(str);
return result.toString();
}
// ...
Argument x = new Argument("x", "2rList(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 + " " + repeatString(" ", step.numberGroup - 1) + step.type + " " + step.content);
mXparser.consolePrintln("----");
/* Using built-in console print of steps register */
calcStepsRegister.consolePrint();
#include "org/mariuszgromada/math/mxparser.hpp"
// ...
ArgumentPtr x = new_Argument("x", "2rList(2,1,3,5,4)");
ArgumentPtr y = new_Argument("y = 2*x", x);
ArgumentPtr z = new_Argument("z = 3*y/x", x, y);
FunctionPtr f = new_Function("f(a,b) = a*b");
CalcStepsRegisterPtr calcStepsRegister = new_CalcStepsRegister();
ExpressionPtr 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 (const CalcStepRecordPtr &step : *calcStepsRegister->calcStepRecords)
mXparser_consolePrintln(step->numberGroup + "." + step->numberGroupWithin + " " + StringUtils::repeatString(S(" "), step->numberGroup - 1) + CalcStepRecord::stepTypeToString(step->type) + " " + step->content);
mXparser::consolePrintln("----");
/* Using built-in console print of steps register */
calcStepsRegister->consolePrint();
[mXparser-v.5.2.1] f(x,y)+z+(x*y)/z = 134.0 [mXparser-v.5.2.1] ---- [mXparser-v.5.2.1] 1.1 Expression f(x,y)+z+(x*y)/z [mXparser-v.5.2.1] 2.1 Argument 2*rList(2,1,3,5,4) [mXparser-v.5.2.1] 2.2 Argument 2*5 [mXparser-v.5.2.1] 2.3 Argument 10 [mXparser-v.5.2.1] 1.2 Expression f(10,y)+z+(x*y)/z [mXparser-v.5.2.1] 2.1 Argument 2*x [mXparser-v.5.2.1] 3.1 Argument 2*rList(2,1,3,5,4) [mXparser-v.5.2.1] 3.2 Argument 2*3 [mXparser-v.5.2.1] 3.3 Argument 6 [mXparser-v.5.2.1] 2.2 Argument 2*6 [mXparser-v.5.2.1] 2.3 Argument 12 [mXparser-v.5.2.1] 1.3 Expression f(10,12)+z+(x*y)/z [mXparser-v.5.2.1] 2.1 Argument 3*y/x [mXparser-v.5.2.1] 3.1 Argument 2*x [mXparser-v.5.2.1] 4.1 Argument 2*rList(2,1,3,5,4) [mXparser-v.5.2.1] 4.2 Argument 2*5 [mXparser-v.5.2.1] 4.3 Argument 10 [mXparser-v.5.2.1] 3.2 Argument 2*10 [mXparser-v.5.2.1] 3.3 Argument 20 [mXparser-v.5.2.1] 2.2 Argument 3*20/x [mXparser-v.5.2.1] 3.1 Argument 2*rList(2,1,3,5,4) [mXparser-v.5.2.1] 3.2 Argument 2*5 [mXparser-v.5.2.1] 3.3 Argument 10 [mXparser-v.5.2.1] 2.3 Argument 3*20/10 [mXparser-v.5.2.1] 2.4 Argument 60/10 [mXparser-v.5.2.1] 2.5 Argument 6 [mXparser-v.5.2.1] 1.4 Expression f(10,12)+6+(x*y)/z [mXparser-v.5.2.1] 2.1 Argument 2*rList(2,1,3,5,4) [mXparser-v.5.2.1] 2.2 Argument 2*2 [mXparser-v.5.2.1] 2.3 Argument 4 [mXparser-v.5.2.1] 1.5 Expression f(10,12)+6+(4*y)/z [mXparser-v.5.2.1] 2.1 Argument 2*x [mXparser-v.5.2.1] 3.1 Argument 2*rList(2,1,3,5,4) [mXparser-v.5.2.1] 3.2 Argument 2*2 [mXparser-v.5.2.1] 3.3 Argument 4 [mXparser-v.5.2.1] 2.2 Argument 2*4 [mXparser-v.5.2.1] 2.3 Argument 8 [mXparser-v.5.2.1] 1.6 Expression f(10,12)+6+(4*8)/z [mXparser-v.5.2.1] 2.1 Argument 3*y/x [mXparser-v.5.2.1] 3.1 Argument 2*x [mXparser-v.5.2.1] 4.1 Argument 2*rList(2,1,3,5,4) [mXparser-v.5.2.1] 4.2 Argument 2*2 [mXparser-v.5.2.1] 4.3 Argument 4 [mXparser-v.5.2.1] 3.2 Argument 2*4 [mXparser-v.5.2.1] 3.3 Argument 8 [mXparser-v.5.2.1] 2.2 Argument 3*8/x [mXparser-v.5.2.1] 3.1 Argument 2*rList(2,1,3,5,4) [mXparser-v.5.2.1] 3.2 Argument 2*3 [mXparser-v.5.2.1] 3.3 Argument 6 [mXparser-v.5.2.1] 2.3 Argument 3*8/6 [mXparser-v.5.2.1] 2.4 Argument 24/6 [mXparser-v.5.2.1] 2.5 Argument 4 [mXparser-v.5.2.1] 1.7 Expression f(10,12)+6+(4*8)/4 [mXparser-v.5.2.1] 2.1 Function a*b [mXparser-v.5.2.1] 2.2 Function 120 [mXparser-v.5.2.1] 1.8 Expression 120+6+(4*8)/4 [mXparser-v.5.2.1] 1.9 Expression 120+6+(32)/4 [mXparser-v.5.2.1] 1.10 Expression 120+6+8 [mXparser-v.5.2.1] 1.11 Expression 126+8 [mXparser-v.5.2.1] 1.12 Expression 134 [mXparser-v.5.2.1] ---- [mXparser-v.5.2.1] CalcStepsRegister for Expression f(x,y)+z+(x*y)/z, result = 134.0 [mXparser-v.5.2.1] 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.2.1] gr = 2, nr = 1, first = true, last = false, Type = Argument, descr = x = 2rList(2,1,3,5,4), step = 2*rList(2,1,3,5,4) [mXparser-v.5.2.1] gr = 2, nr = 2, first = false, last = false, Type = Argument, descr = x = 2rList(2,1,3,5,4), step = 2*5 [mXparser-v.5.2.1] gr = 2, nr = 3, first = false, last = true, Type = Argument, descr = x = 2rList(2,1,3,5,4), step = 10 [mXparser-v.5.2.1] gr = 1, nr = 2, first = false, last = false, Type = Expression, descr = f(x,y)+z+(x*y)/z, step = f(10,y)+z+(x*y)/z [mXparser-v.5.2.1] gr = 2, nr = 1, first = true, last = false, Type = Argument, descr = y = 2*x, step = 2*x [mXparser-v.5.2.1] gr = 3, nr = 1, first = true, last = false, Type = Argument, descr = x = 2rList(2,1,3,5,4), step = 2*rList(2,1,3,5,4) [mXparser-v.5.2.1] gr = 3, nr = 2, first = false, last = false, Type = Argument, descr = x = 2rList(2,1,3,5,4), step = 2*3 [mXparser-v.5.2.1] gr = 3, nr = 3, first = false, last = true, Type = Argument, descr = x = 2rList(2,1,3,5,4), step = 6 [mXparser-v.5.2.1] gr = 2, nr = 2, first = false, last = false, Type = Argument, descr = y = 2*x, step = 2*6 [mXparser-v.5.2.1] gr = 2, nr = 3, first = false, last = true, Type = Argument, descr = y = 2*x, step = 12 [mXparser-v.5.2.1] gr = 1, nr = 3, first = false, last = false, Type = Expression, descr = f(x,y)+z+(x*y)/z, step = f(10,12)+z+(x*y)/z [mXparser-v.5.2.1] gr = 2, nr = 1, first = true, last = false, Type = Argument, descr = z = 3*y/x, step = 3*y/x [mXparser-v.5.2.1] gr = 3, nr = 1, first = true, last = false, Type = Argument, descr = y = 2*x, step = 2*x [mXparser-v.5.2.1] gr = 4, nr = 1, first = true, last = false, Type = Argument, descr = x = 2rList(2,1,3,5,4), step = 2*rList(2,1,3,5,4) [mXparser-v.5.2.1] gr = 4, nr = 2, first = false, last = false, Type = Argument, descr = x = 2rList(2,1,3,5,4), step = 2*5 [mXparser-v.5.2.1] gr = 4, nr = 3, first = false, last = true, Type = Argument, descr = x = 2rList(2,1,3,5,4), step = 10 [mXparser-v.5.2.1] gr = 3, nr = 2, first = false, last = false, Type = Argument, descr = y = 2*x, step = 2*10 [mXparser-v.5.2.1] gr = 3, nr = 3, first = false, last = true, Type = Argument, descr = y = 2*x, step = 20 [mXparser-v.5.2.1] gr = 2, nr = 2, first = false, last = false, Type = Argument, descr = z = 3*y/x, step = 3*20/x [mXparser-v.5.2.1] gr = 3, nr = 1, first = true, last = false, Type = Argument, descr = x = 2rList(2,1,3,5,4), step = 2*rList(2,1,3,5,4) [mXparser-v.5.2.1] gr = 3, nr = 2, first = false, last = false, Type = Argument, descr = x = 2rList(2,1,3,5,4), step = 2*5 [mXparser-v.5.2.1] gr = 3, nr = 3, first = false, last = true, Type = Argument, descr = x = 2rList(2,1,3,5,4), step = 10 [mXparser-v.5.2.1] gr = 2, nr = 3, first = false, last = false, Type = Argument, descr = z = 3*y/x, step = 3*20/10 [mXparser-v.5.2.1] gr = 2, nr = 4, first = false, last = false, Type = Argument, descr = z = 3*y/x, step = 60/10 [mXparser-v.5.2.1] gr = 2, nr = 5, first = false, last = true, Type = Argument, descr = z = 3*y/x, step = 6 [mXparser-v.5.2.1] gr = 1, nr = 4, first = false, last = false, Type = Expression, descr = f(x,y)+z+(x*y)/z, step = f(10,12)+6+(x*y)/z [mXparser-v.5.2.1] gr = 2, nr = 1, first = true, last = false, Type = Argument, descr = x = 2rList(2,1,3,5,4), step = 2*rList(2,1,3,5,4) [mXparser-v.5.2.1] gr = 2, nr = 2, first = false, last = false, Type = Argument, descr = x = 2rList(2,1,3,5,4), step = 2*2 [mXparser-v.5.2.1] gr = 2, nr = 3, first = false, last = true, Type = Argument, descr = x = 2rList(2,1,3,5,4), step = 4 [mXparser-v.5.2.1] gr = 1, nr = 5, first = false, last = false, Type = Expression, descr = f(x,y)+z+(x*y)/z, step = f(10,12)+6+(4*y)/z [mXparser-v.5.2.1] gr = 2, nr = 1, first = true, last = false, Type = Argument, descr = y = 2*x, step = 2*x [mXparser-v.5.2.1] gr = 3, nr = 1, first = true, last = false, Type = Argument, descr = x = 2rList(2,1,3,5,4), step = 2*rList(2,1,3,5,4) [mXparser-v.5.2.1] gr = 3, nr = 2, first = false, last = false, Type = Argument, descr = x = 2rList(2,1,3,5,4), step = 2*2 [mXparser-v.5.2.1] gr = 3, nr = 3, first = false, last = true, Type = Argument, descr = x = 2rList(2,1,3,5,4), step = 4 [mXparser-v.5.2.1] gr = 2, nr = 2, first = false, last = false, Type = Argument, descr = y = 2*x, step = 2*4 [mXparser-v.5.2.1] gr = 2, nr = 3, first = false, last = true, Type = Argument, descr = y = 2*x, step = 8 [mXparser-v.5.2.1] gr = 1, nr = 6, first = false, last = false, Type = Expression, descr = f(x,y)+z+(x*y)/z, step = f(10,12)+6+(4*8)/z [mXparser-v.5.2.1] gr = 2, nr = 1, first = true, last = false, Type = Argument, descr = z = 3*y/x, step = 3*y/x [mXparser-v.5.2.1] gr = 3, nr = 1, first = true, last = false, Type = Argument, descr = y = 2*x, step = 2*x [mXparser-v.5.2.1] gr = 4, nr = 1, first = true, last = false, Type = Argument, descr = x = 2rList(2,1,3,5,4), step = 2*rList(2,1,3,5,4) [mXparser-v.5.2.1] gr = 4, nr = 2, first = false, last = false, Type = Argument, descr = x = 2rList(2,1,3,5,4), step = 2*2 [mXparser-v.5.2.1] gr = 4, nr = 3, first = false, last = true, Type = Argument, descr = x = 2rList(2,1,3,5,4), step = 4 [mXparser-v.5.2.1] gr = 3, nr = 2, first = false, last = false, Type = Argument, descr = y = 2*x, step = 2*4 [mXparser-v.5.2.1] gr = 3, nr = 3, first = false, last = true, Type = Argument, descr = y = 2*x, step = 8 [mXparser-v.5.2.1] gr = 2, nr = 2, first = false, last = false, Type = Argument, descr = z = 3*y/x, step = 3*8/x [mXparser-v.5.2.1] gr = 3, nr = 1, first = true, last = false, Type = Argument, descr = x = 2rList(2,1,3,5,4), step = 2*rList(2,1,3,5,4) [mXparser-v.5.2.1] gr = 3, nr = 2, first = false, last = false, Type = Argument, descr = x = 2rList(2,1,3,5,4), step = 2*3 [mXparser-v.5.2.1] gr = 3, nr = 3, first = false, last = true, Type = Argument, descr = x = 2rList(2,1,3,5,4), step = 6 [mXparser-v.5.2.1] gr = 2, nr = 3, first = false, last = false, Type = Argument, descr = z = 3*y/x, step = 3*8/6 [mXparser-v.5.2.1] gr = 2, nr = 4, first = false, last = false, Type = Argument, descr = z = 3*y/x, step = 24/6 [mXparser-v.5.2.1] gr = 2, nr = 5, first = false, last = true, Type = Argument, descr = z = 3*y/x, step = 4 [mXparser-v.5.2.1] gr = 1, nr = 7, first = false, last = false, Type = Expression, descr = f(x,y)+z+(x*y)/z, step = f(10,12)+6+(4*8)/4 [mXparser-v.5.2.1] gr = 2, nr = 1, first = true, last = false, Type = Function, descr = f(a,b) = a*b, step = a*b [mXparser-v.5.2.1] gr = 2, nr = 2, first = false, last = true, Type = Function, descr = f(a,b) = a*b, step = 120 [mXparser-v.5.2.1] gr = 1, nr = 8, first = false, last = false, Type = Expression, descr = f(x,y)+z+(x*y)/z, step = 120+6+(4*8)/4 [mXparser-v.5.2.1] gr = 1, nr = 9, first = false, last = false, Type = Expression, descr = f(x,y)+z+(x*y)/z, step = 120+6+(32)/4 [mXparser-v.5.2.1] gr = 1, nr = 10, first = false, last = false, Type = Expression, descr = f(x,y)+z+(x*y)/z, step = 120+6+8 [mXparser-v.5.2.1] gr = 1, nr = 11, first = false, last = false, Type = Expression, descr = f(x,y)+z+(x*y)/z, step = 126+8 [mXparser-v.5.2.1] gr = 1, nr = 12, first = false, last = true, Type = Expression, descr = f(x,y)+z+(x*y)/z, step = 134 [mXparser-v.5.2.1] Computing time = 0.089 s.
<dependency>
<groupid>org.mariuszgromada.math</groupid>
<artifactid>MathParser.org-mXparser</artifactid>
<version>6.1.0</version>
</dependency>
include(FetchContent)
FetchContent_Declare(
MathParserOrgMxParser
GIT_REPOSITORY https://github.com/mariuszgromada/MathParser.org-mXparser.git
GIT_TAG v.6.1.0
SOURCE_SUBDIR CURRENT/cpp/lib
)
FetchContent_MakeAvailable(MathParserOrgMxParser)
target_link_libraries(YourExecutable MathParserOrgMxParser)