Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

To add Calculation Steps Register #260

Closed
mariuszgromada opened this issue May 20, 2022 · 1 comment
Closed

To add Calculation Steps Register #260

mariuszgromada opened this issue May 20, 2022 · 1 comment
Assignees
Milestone

Comments

@mariuszgromada
Copy link
Owner

mariuszgromada commented May 20, 2022

A calculation is a multistep process so a register to store all the steps, also done in a recursive way, would a beneficial option for many various use cases.

@mariuszgromada mariuszgromada added this to the v.5.0 Leonis milestone May 20, 2022
@mariuszgromada mariuszgromada self-assigned this May 20, 2022
mariuszgromada added a commit that referenced this issue May 20, 2022
@mariuszgromada
Copy link
Owner Author

mariuszgromada commented May 20, 2022

CalcStepRecord class
Calculation is a multistep process and this class provides a container to store a single calculation step.

CalcStepsRegister class
Calculation is a multistep process and this class provides a register to store all the steps, also done in a recursive way.

Expression.calculate(CalcStepsRegister) - calculation root from expression
Argument.getArgumentValue(CalcStepsRegister) - calculation root from argument
Function.calculate(CalcStepsRegister) - calculation root from function

Example

CalcStepsRegister stepsRegister = new CalcStepsRegister();
Argument x = new Argument("x", "2*rList(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");
Expression e = new Expression("f(x,y)+z+(x*y)/z", x, y, z, f);

double result = e.calculate(stepsRegister);
mXparser.consolePrintln(e.getExpressionString() + " = " + result);
stepsRegister.consolePrint();

Result

f(x,y)+z+(x*y)/z = 111.16666666666667
CalcStepsRegister for Expression f(x,y)+z+(x*y)/z
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
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)
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)
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
gr = 2, nr = 4, first = false, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*4
gr = 2, nr = 4, first = false, last = true, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 8
gr = 2, nr = 1, first = true, last = false, type = Argument, descr = 2*x, step = 2*x
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)
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)
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
gr = 3, nr = 4, first = false, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*3
gr = 3, nr = 4, first = false, last = true, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 6
gr = 2, nr = 2, first = false, last = false, type = Argument, descr = 2*x, step = 2*6
gr = 2, nr = 2, first = false, last = true, type = Argument, descr = 2*x, step = 12
gr = 2, nr = 1, first = true, last = false, type = Argument, descr = 3*y/x, step = 3*y/x
gr = 3, nr = 1, first = true, last = false, type = Argument, descr = 2*x, step = 2*x
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)
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)
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
gr = 4, nr = 4, first = false, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*3
gr = 4, nr = 4, first = false, last = true, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 6
gr = 3, nr = 2, first = false, last = false, type = Argument, descr = 2*x, step = 2*6
gr = 3, nr = 2, first = false, last = true, type = Argument, descr = 2*x, step = 12
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)
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)
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
gr = 3, nr = 4, first = false, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*4
gr = 3, nr = 4, first = false, last = true, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 8
gr = 2, nr = 2, first = false, last = false, type = Argument, descr = 3*y/x, step = 3*12/8
gr = 2, nr = 3, first = false, last = false, type = Argument, descr = 3*y/x, step = 36/8
gr = 2, nr = 3, first = false, last = true, type = Argument, descr = 3*y/x, step = 4.5
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)
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)
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
gr = 2, nr = 4, first = false, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*2
gr = 2, nr = 4, first = false, last = true, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 4
gr = 2, nr = 1, first = true, last = false, type = Argument, descr = 2*x, step = 2*x
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)
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)
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
gr = 3, nr = 4, first = false, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*3
gr = 3, nr = 4, first = false, last = true, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 6
gr = 2, nr = 2, first = false, last = false, type = Argument, descr = 2*x, step = 2*6
gr = 2, nr = 2, first = false, last = true, type = Argument, descr = 2*x, step = 12
gr = 2, nr = 1, first = true, last = false, type = Argument, descr = 3*y/x, step = 3*y/x
gr = 3, nr = 1, first = true, last = false, type = Argument, descr = 2*x, step = 2*x
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)
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)
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
gr = 4, nr = 4, first = false, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*3
gr = 4, nr = 4, first = false, last = true, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 6
gr = 3, nr = 2, first = false, last = false, type = Argument, descr = 2*x, step = 2*6
gr = 3, nr = 2, first = false, last = true, type = Argument, descr = 2*x, step = 12
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)
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)
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
gr = 3, nr = 4, first = false, last = false, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 2*4
gr = 3, nr = 4, first = false, last = true, type = Argument, descr = x = 2*rList(2,1,3,5,4), step = 8
gr = 2, nr = 2, first = false, last = false, type = Argument, descr = 3*y/x, step = 3*12/8
gr = 2, nr = 3, first = false, last = false, type = Argument, descr = 3*y/x, step = 36/8
gr = 2, nr = 3, first = false, last = true, type = Argument, descr = 3*y/x, step = 4.5
gr = 1, nr = 2, first = false, last = false, type = Expression, descr = f(x,y)+z+(x*y)/z, step = f(8,12)+4.5+(4*12)/4.5
gr = 1, nr = 3, first = false, last = false, type = Expression, descr = f(x,y)+z+(x*y)/z, step = f(8 12)+4.5+(4*12)/4.5
gr = 1, nr = 4, first = false, last = false, type = Expression, descr = f(x,y)+z+(x*y)/z, step = f 8 12+4.5+(4*12)/4.5
gr = 2, nr = 1, first = true, last = false, type = Expression, descr = f(a,b) = a*b, step = a*b
gr = 2, nr = 1, first = false, last = true, type = Expression, descr = f(a,b) = a*b, step = 96
gr = 1, nr = 5, first = false, last = false, type = Expression, descr = f(x,y)+z+(x*y)/z, step = 96+4.5+(4*12)/4.5
gr = 1, nr = 6, first = false, last = false, type = Expression, descr = f(x,y)+z+(x*y)/z, step = 96+4.5+(48)/4.5
gr = 1, nr = 7, first = false, last = false, type = Expression, descr = f(x,y)+z+(x*y)/z, step = 96+4.5+48/4.5
gr = 1, nr = 8, first = false, last = false, type = Expression, descr = f(x,y)+z+(x*y)/z, step = 96+4.5+10.666666666666666
gr = 1, nr = 9, first = false, last = false, type = Expression, descr = f(x,y)+z+(x*y)/z, step = 100.5+10.666666666666666
gr = 1, nr = 9, first = false, last = true, type = Expression, descr = f(x,y)+z+(x*y)/z, step = 111.16666666666667

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant