@pie-framework/math-validation 1.4.2 → 2.0.0-next.20261110063142

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/LICENSE +233 -0
  2. package/README.md +41 -110
  3. package/dist/conversion/ast-to-mathjs.d.ts +3 -0
  4. package/dist/conversion/error.d.ts +4 -0
  5. package/dist/conversion/flatten.d.ts +1 -0
  6. package/{lib → dist}/conversion/latex-to-ast.d.ts +14 -13
  7. package/{lib → dist}/conversion/lexer.d.ts +7 -7
  8. package/dist/difference.d.ts +1 -0
  9. package/dist/index.d.ts +2 -0
  10. package/dist/index.js +1594 -0
  11. package/dist/latex-equal.d.ts +2 -0
  12. package/dist/literal/index.d.ts +3 -0
  13. package/dist/log.d.ts +1 -0
  14. package/dist/mathjs.d.ts +11 -0
  15. package/{lib → dist}/node-sort.d.ts +1 -1
  16. package/dist/options.d.ts +13 -0
  17. package/{lib → dist}/symbolic/compare-compound-inequations.d.ts +4 -4
  18. package/{lib → dist}/symbolic/compare-equations.d.ts +1 -1
  19. package/dist/symbolic/index.d.ts +1 -0
  20. package/dist/symbolic/simplify.d.ts +2 -0
  21. package/{lib → dist}/symbolic/utils.d.ts +8 -4
  22. package/dist/value.d.ts +6 -0
  23. package/package.json +32 -53
  24. package/lib/conversion/ast-to-mathjs.d.ts +0 -12
  25. package/lib/conversion/ast-to-mathjs.js +0 -329
  26. package/lib/conversion/ast-to-mathjs.js.map +0 -1
  27. package/lib/conversion/error.d.ts +0 -5
  28. package/lib/conversion/error.js +0 -13
  29. package/lib/conversion/error.js.map +0 -1
  30. package/lib/conversion/flatten.d.ts +0 -12
  31. package/lib/conversion/flatten.js +0 -103
  32. package/lib/conversion/flatten.js.map +0 -1
  33. package/lib/conversion/latex-to-ast.js +0 -1479
  34. package/lib/conversion/latex-to-ast.js.map +0 -1
  35. package/lib/conversion/lexer.js +0 -135
  36. package/lib/conversion/lexer.js.map +0 -1
  37. package/lib/conversion/util.d.ts +0 -3
  38. package/lib/conversion/util.js +0 -36
  39. package/lib/conversion/util.js.map +0 -1
  40. package/lib/demo.d.ts +0 -4
  41. package/lib/demo.js +0 -173
  42. package/lib/demo.js.map +0 -1
  43. package/lib/difference.d.ts +0 -2
  44. package/lib/difference.js +0 -24
  45. package/lib/difference.js.map +0 -1
  46. package/lib/index.d.ts +0 -5
  47. package/lib/index.js +0 -9
  48. package/lib/index.js.map +0 -1
  49. package/lib/latex-equal.d.ts +0 -10
  50. package/lib/latex-equal.js +0 -41
  51. package/lib/latex-equal.js.map +0 -1
  52. package/lib/literal/index.d.ts +0 -10
  53. package/lib/literal/index.js +0 -22
  54. package/lib/literal/index.js.map +0 -1
  55. package/lib/log.d.ts +0 -1
  56. package/lib/log.js +0 -14
  57. package/lib/log.js.map +0 -1
  58. package/lib/mathjs.d.ts +0 -3
  59. package/lib/mathjs.js +0 -9
  60. package/lib/mathjs.js.map +0 -1
  61. package/lib/node-sort.js +0 -236
  62. package/lib/node-sort.js.map +0 -1
  63. package/lib/symbolic/compare-compound-inequations.js +0 -68
  64. package/lib/symbolic/compare-compound-inequations.js.map +0 -1
  65. package/lib/symbolic/compare-equations.js +0 -108
  66. package/lib/symbolic/compare-equations.js.map +0 -1
  67. package/lib/symbolic/index.d.ts +0 -4
  68. package/lib/symbolic/index.js +0 -215
  69. package/lib/symbolic/index.js.map +0 -1
  70. package/lib/symbolic/utils.js +0 -207
  71. package/lib/symbolic/utils.js.map +0 -1
package/lib/log.js DELETED
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.logger = void 0;
4
- const logger = (name) => {
5
- if (typeof process !== "undefined" && process.env.NODE_ENV === "test") {
6
- const debug = require("debug");
7
- return debug(name);
8
- }
9
- else {
10
- return () => { };
11
- }
12
- };
13
- exports.logger = logger;
14
- //# sourceMappingURL=log.js.map
package/lib/log.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"log.js","sourceRoot":"","sources":["../src/log.ts"],"names":[],"mappings":";;;AAAO,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE;IACrC,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE;QACrE,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/B,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;KACpB;SAAM;QACL,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;KACjB;AACH,CAAC,CAAC;AAPW,QAAA,MAAM,UAOjB"}
package/lib/mathjs.d.ts DELETED
@@ -1,3 +0,0 @@
1
- export declare const mathjs: Partial<import("mathjs").MathJsStatic>;
2
- export declare const parse: import("mathjs").ParseFunction;
3
- export declare const replacer: any;
package/lib/mathjs.js DELETED
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.replacer = exports.parse = exports.mathjs = void 0;
4
- const mathjs_1 = require("mathjs");
5
- exports.mathjs = mathjs_1.create(mathjs_1.all, { number: "Fraction" });
6
- exports.parse = exports.mathjs.parse;
7
- // @ts-ignore
8
- exports.replacer = exports.mathjs.replacer;
9
- //# sourceMappingURL=mathjs.js.map
package/lib/mathjs.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"mathjs.js","sourceRoot":"","sources":["../src/mathjs.ts"],"names":[],"mappings":";;;AAAA,mCAAqC;AACxB,QAAA,MAAM,GAAG,eAAM,CAAC,YAAG,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;AAC3C,aAAK,GAAK,cAAM,OAAC;AAEhC,aAAa;AACA,QAAA,QAAQ,GAAG,cAAM,CAAC,QAAQ,CAAC"}
package/lib/node-sort.js DELETED
@@ -1,236 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.sort = exports.sortRelationalNode = exports.flattenNode = void 0;
4
- const log_1 = require("./log");
5
- const mathjs_1 = require("./mathjs");
6
- const m = mathjs_1.mathjs;
7
- const log = log_1.logger("mv:node-sort");
8
- //import { string } from "mathjs";
9
- /**
10
- * The plan with node sort was to sort all the nodes in an expression where possible
11
- * This means any commutative operators aka + and *.
12
- *
13
- * With symbols sorted - we shoud be able to call `node.equals(other)` and avoid having to call evaluate.
14
- */
15
- const newCompare = (a, b) => {
16
- // log(a.type);
17
- log("[compareNodes]: a:", a.toString(), a.type);
18
- log("[compareNodes]: b:", b.toString(), b.type);
19
- if (a.isSymbolNode && b.isSymbolNode) {
20
- // log(a.name, "> ", b.name);
21
- return a.name.localeCompare(b.name);
22
- }
23
- // both constants - sort by value
24
- if (a.isConstantNode && b.isConstantNode) {
25
- log("a.value", a.value);
26
- log("b.value", b.value);
27
- return a.value - b.value; //(b.name);
28
- }
29
- // constants before any other node
30
- if (a.isConstantNode && !b.isConstantNode) {
31
- return -1;
32
- }
33
- if (b.isConstantNode && !a.isConstantNode) {
34
- return 1;
35
- }
36
- // symbolNode before operatorNode
37
- if (a.isSymbolNode && (b.isOperatorNode || b.isFunctionNode)) {
38
- return -1;
39
- }
40
- if (b.isSymbolNode && (a.isOperatorNode || b.isFunctionNode)) {
41
- return 1;
42
- }
43
- if (a.isOperatorNode && b.isOperatorNode) {
44
- const localeCompareResult = a.args
45
- .toString()
46
- .localeCompare(b.args.toString());
47
- return -localeCompareResult;
48
- }
49
- if (!a.isFunctionNode && b.isFunctionNode) {
50
- return -1;
51
- }
52
- };
53
- const applySort = (node) => {
54
- // log("node: ", node.toString());
55
- // log("path: ", path);
56
- // log("parent: ", parent);
57
- if (node.fn === "add" || node.fn === "multiply") {
58
- node.args = node.args.sort(newCompare);
59
- node.args = node.args.map(applySort);
60
- }
61
- return node;
62
- };
63
- const firstChildOperator = (args, operator) => {
64
- let result = false;
65
- args.forEach((arg) => {
66
- if (arg.fn === operator) {
67
- result = true;
68
- }
69
- return result;
70
- });
71
- return result;
72
- };
73
- const flattenNode = (node) => {
74
- while (node.isParenthesisNode && node.content) {
75
- node = node.content;
76
- }
77
- node = node.transform((currentNode, path, parent) => {
78
- if (currentNode.isParenthesisNode &&
79
- ((parent === null || parent === void 0 ? void 0 : parent.op) != "*" ||
80
- ((parent === null || parent === void 0 ? void 0 : parent.op) == "*" && currentNode.content.op != "+"))) {
81
- while (currentNode.isParenthesisNode)
82
- currentNode = currentNode.content;
83
- }
84
- return currentNode;
85
- });
86
- if (node.fn === "multiply" && node["implicit"]) {
87
- node["implicit"] = false;
88
- }
89
- let resultNode = node;
90
- resultNode = resultNode.transform((currentNode, path, parent) => {
91
- while (firstChildOperator(currentNode, currentNode.fn) &&
92
- !currentNode.isArrayNode) {
93
- const flatten = currentNode;
94
- flatten.traverse((node, path, parent) => {
95
- if ((parent === null || parent === void 0 ? void 0 : parent.fn) === node.fn) {
96
- const indexToRemove = path.replace(/[^0-9]/g, "");
97
- parent.args.splice(+indexToRemove, 1) || [];
98
- let argstoAdd = parent.args;
99
- node.args.forEach((arg) => {
100
- argstoAdd.push(arg);
101
- });
102
- node = new m.OperatorNode(node.op, node.fn, argstoAdd);
103
- if (node.fn === "multiply" && node["implicit"]) {
104
- node["implicit"] = false;
105
- }
106
- }
107
- return node;
108
- });
109
- }
110
- return currentNode;
111
- });
112
- resultNode = resultNode.transform((currentNode, path, parent) => {
113
- if (currentNode.fn === "multiply" &&
114
- firstChildOperator(currentNode.args, "divide")) {
115
- let divisionNode = currentNode;
116
- if (divisionNode.fn === "multiply" &&
117
- firstChildOperator(divisionNode, "divide")) {
118
- let newNode;
119
- divisionNode = divisionNode.traverse((node, path, parent) => {
120
- if (parent && parent.fn === "multiply" && node.fn === "divide") {
121
- if (node.args[0].isOperatorNode) {
122
- parent.args.forEach((arg) => {
123
- if (!arg.isOperatorNode) {
124
- node.args[0].args.push(arg);
125
- }
126
- });
127
- }
128
- else {
129
- const newArgs = [];
130
- newArgs.push(node.args[0]);
131
- parent.args.forEach((arg) => {
132
- if (!arg.isOperatorNode) {
133
- newArgs.push(arg);
134
- }
135
- });
136
- node.args[0] = new m.OperatorNode("*", "multiply", newArgs);
137
- }
138
- newNode = node;
139
- }
140
- });
141
- return newNode;
142
- }
143
- }
144
- else {
145
- currentNode = currentNode;
146
- }
147
- return currentNode;
148
- });
149
- return resultNode;
150
- };
151
- exports.flattenNode = flattenNode;
152
- const sortRelationalNode = (node) => {
153
- log("THIS IS THE START ++++", JSON.stringify(node));
154
- const smaller = ["smaller", "smallerEq"];
155
- const bigger = ["larger", "largerEq"];
156
- const resultNode = node.transform((node, path, parent) => {
157
- let reverse = false;
158
- if (node.conditionals) {
159
- const smallerAndBigger = smaller.some((small) => node.conditionals.includes(small)) &&
160
- bigger.some((big) => node.conditionals.includes(big));
161
- if (node.conditionals.includes("equal")) {
162
- node.params.sort(newCompare);
163
- }
164
- else if (smallerAndBigger && node.params) {
165
- if (newCompare(node.params[0], node.params[node.params.length - 1]) > -1) {
166
- node.params.reverse();
167
- }
168
- }
169
- else {
170
- node.conditionals = node.conditionals.map((cond) => {
171
- if (cond === "smaller") {
172
- reverse = true;
173
- cond = "larger";
174
- }
175
- else if (cond === "smallerEq") {
176
- reverse = true;
177
- cond = "largerEq";
178
- }
179
- return cond;
180
- });
181
- }
182
- }
183
- if (node.params && reverse) {
184
- node.conditionals.reverse();
185
- node.params.reverse();
186
- }
187
- if (parent && parent.type === "RelationalNode" && node.args) {
188
- node = exports.sort(node);
189
- }
190
- return node;
191
- });
192
- return resultNode;
193
- };
194
- exports.sortRelationalNode = sortRelationalNode;
195
- const sort = (node) => {
196
- let resultNode = node;
197
- if (node.type === "RelationalNode") {
198
- return exports.sortRelationalNode(node);
199
- }
200
- if (node.isOperatorNode && node.fn === "smaller") {
201
- node.op = ">";
202
- node.fn = "larger";
203
- node.args = node.args.reverse();
204
- }
205
- if (node.isOperatorNode && node.fn === "smallerEq") {
206
- node.op = ">=";
207
- node.fn = "largerEq";
208
- node.args = node.args.reverse();
209
- }
210
- const relationOperators = "=|NE|≃|≈|≈|≉|~|≃|≁|≅|≆";
211
- if (node.isFunctionNode &&
212
- // @ts-ignore
213
- node.fn.name.match(relationOperators)) {
214
- node.args = node.args.sort(newCompare);
215
- }
216
- if (node.isOperatorNode &&
217
- (node.fn == "larger" ||
218
- node.fn == "largerEq" ||
219
- node.fn == "equal" ||
220
- node.fn == "unequal")) {
221
- node.args = node.args.map(exports.sort);
222
- if (node.fn === "equal" || node.fn === "unequal") {
223
- node.args = node.args.sort(newCompare);
224
- }
225
- }
226
- if (node.isArrayNode) {
227
- // @ts-ignore
228
- node.items = node.items.sort(newCompare);
229
- return node;
230
- }
231
- const flattened = exports.flattenNode(node);
232
- resultNode = flattened.transform(applySort);
233
- return resultNode;
234
- };
235
- exports.sort = sort;
236
- //# sourceMappingURL=node-sort.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"node-sort.js","sourceRoot":"","sources":["../src/node-sort.ts"],"names":[],"mappings":"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"}
@@ -1,68 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.compareCompoundInequations = exports.getLimit = exports.splitInequality = void 0;
4
- const mathjs_1 = require("../mathjs");
5
- const utils_1 = require("./utils");
6
- const m = mathjs_1.mathjs;
7
- const operation = (signName) => {
8
- switch (signName) {
9
- case "smaller":
10
- return "<";
11
- case "smallerEq":
12
- return "<=";
13
- case "larger":
14
- return ">";
15
- case "largerEq":
16
- return ">=";
17
- case "equal":
18
- return "==";
19
- case "unequal":
20
- return "!=";
21
- }
22
- };
23
- // splitInequality takes in a RelationalNode with 2 conditionals and 3 params and returns 2 operatorNodes each containing a 2-way inequality
24
- const splitInequality = (compoundInequality) => ({
25
- left: new m.OperatorNode(operation(compoundInequality.conditionals[0]), compoundInequality.conditionals[0], [compoundInequality.params[0], compoundInequality.params[1]]),
26
- right: new m.OperatorNode(operation(compoundInequality.conditionals[1]), compoundInequality.conditionals[1], [compoundInequality.params[1], compoundInequality.params[2]]),
27
- });
28
- exports.splitInequality = splitInequality;
29
- // get interval inferior/superior limits
30
- const getLimit = (expressionsPair, limitType) => {
31
- const expressionR = utils_1.transformEqualityInExpression(expressionsPair.right);
32
- const expressionL = utils_1.transformEqualityInExpression(expressionsPair.left);
33
- const xFirstInequality = utils_1.solveLinearEquation(utils_1.getCoefficients(expressionR, true));
34
- const xSecondInequality = utils_1.solveLinearEquation(utils_1.getCoefficients(expressionL, true));
35
- if (limitType === "inferior") {
36
- return Math.min(xFirstInequality, xSecondInequality);
37
- }
38
- return Math.max(xFirstInequality, xSecondInequality);
39
- };
40
- exports.getLimit = getLimit;
41
- const compareCompoundInequations = (firstInequation, secondInequation) => {
42
- if (!utils_1.expressionsCanBeCompared(firstInequation, secondInequation)) {
43
- return false;
44
- }
45
- const firstInequalityVariablesName = utils_1.getVariables(firstInequation);
46
- const secondInequalityVariablesName = utils_1.getVariables(secondInequation);
47
- if (!utils_1.equationsHaveTheSameVariables(firstInequalityVariablesName, secondInequalityVariablesName) &&
48
- (firstInequalityVariablesName === null || firstInequalityVariablesName === void 0 ? void 0 : firstInequalityVariablesName.length) === 1) {
49
- return false;
50
- }
51
- const firstInequalities = exports.splitInequality(firstInequation);
52
- const secondInequalities = exports.splitInequality(secondInequation);
53
- // find out interval for inequality solution;
54
- // it does not matter whether we have an open, or half-open/half-close interval, the signs are already compared and at this point they match
55
- let firstInequalitiesSolution = {
56
- min: exports.getLimit(firstInequalities, "inferior"),
57
- max: exports.getLimit(firstInequalities, "superior"),
58
- };
59
- let secondInequalitiesSolution = {
60
- min: exports.getLimit(secondInequalities, "inferior"),
61
- max: exports.getLimit(secondInequalities, "superior"),
62
- };
63
- // if interval limits are the same for both inequalities then we can say that inequalities are equivalent
64
- return (firstInequalitiesSolution.min === secondInequalitiesSolution.min &&
65
- firstInequalitiesSolution.max === secondInequalitiesSolution.max);
66
- };
67
- exports.compareCompoundInequations = compareCompoundInequations;
68
- //# sourceMappingURL=compare-compound-inequations.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compare-compound-inequations.js","sourceRoot":"","sources":["../../src/symbolic/compare-compound-inequations.ts"],"names":[],"mappings":"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"}
@@ -1,108 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.compareEquations = void 0;
4
- const mathjs_1 = require("../mathjs");
5
- const utils_1 = require("./utils");
6
- const m = mathjs_1.mathjs;
7
- const compareCoefficients = (firstEqCoeff, secondEqCoeff) => Array.isArray(firstEqCoeff) &&
8
- Array.isArray(secondEqCoeff) &&
9
- firstEqCoeff.length === secondEqCoeff.length &&
10
- firstEqCoeff.every((val, index) => val === secondEqCoeff[index]);
11
- const compareEquations = (firstEquation, secondEquation, isInequality) => {
12
- let equivalence = false;
13
- if (utils_1.expressionsCanBeCompared(firstEquation, secondEquation)) {
14
- let firstExpression = utils_1.transformEqualityInExpression(firstEquation);
15
- let secondExpression = utils_1.transformEqualityInExpression(secondEquation);
16
- if (firstExpression.equals(secondExpression)) {
17
- return true;
18
- }
19
- let firstEquationVariablesName = utils_1.getVariables(firstExpression);
20
- let secondEquationVariablesName = utils_1.getVariables(secondExpression);
21
- if (!utils_1.equationsHaveTheSameVariables(firstEquationVariablesName, secondEquationVariablesName)) {
22
- return false;
23
- }
24
- let firstEquationCoefficients;
25
- let secondEquationCoefficients;
26
- if (utils_1.hasSymbolicExponent(firstExpression) ||
27
- utils_1.hasSymbolicExponent(secondExpression)) {
28
- const isEquivalent = utils_1.areNumericallyEquivalent(firstExpression, secondExpression, firstEquationVariablesName);
29
- return isEquivalent;
30
- }
31
- if (firstEquationVariablesName.length === 1) {
32
- firstEquationCoefficients = utils_1.getCoefficients(firstExpression, isInequality);
33
- secondEquationCoefficients = utils_1.getCoefficients(secondExpression, isInequality);
34
- // if coefficients are equal, there is no need for further calculations => equations are equivalent
35
- if (compareCoefficients(firstEquationCoefficients, secondEquationCoefficients)) {
36
- return true;
37
- }
38
- // check for second-order polynomial equation such as ax^2 + bx + c = 0 where a is not zero
39
- if ((firstEquationCoefficients.length === 3 &&
40
- secondEquationCoefficients.length === 3 &&
41
- !isInequality &&
42
- firstEquationCoefficients[0] !== 0) ||
43
- (firstEquationCoefficients.length === 4 &&
44
- firstEquationCoefficients[0] === 0 &&
45
- secondEquationCoefficients[0] === 0)) {
46
- if (firstEquationCoefficients[0] === 0) {
47
- firstEquationCoefficients = firstEquationCoefficients.splice(1, 3);
48
- secondEquationCoefficients = secondEquationCoefficients.splice(1, 3);
49
- }
50
- let rootsFirstEquation = utils_1.solveQuadraticEquation(firstEquationCoefficients);
51
- let rootsSecondEquation = utils_1.solveQuadraticEquation(secondEquationCoefficients);
52
- let firstRoot = m.complex(rootsFirstEquation);
53
- let secondRoot = m.complex(rootsSecondEquation);
54
- if (rootsFirstEquation[0].im === 0 && rootsFirstEquation[1].im === 0) {
55
- return ((firstRoot[0].equals(secondRoot[0]) &&
56
- firstRoot[1].equals(secondRoot[1])) ||
57
- (firstRoot[0].equals(secondRoot[1]) &&
58
- firstRoot[1].equals(secondRoot[0])));
59
- }
60
- //@ts-ignore
61
- return (rootsFirstEquation[0].re === rootsSecondEquation[0].re &&
62
- rootsFirstEquation[1].re === rootsSecondEquation[1].re &&
63
- rootsFirstEquation[0].im.toFixed(13) ===
64
- rootsSecondEquation[0].im.toFixed(13) &&
65
- rootsFirstEquation[1].im.toFixed(13) ===
66
- rootsSecondEquation[1].im.toFixed(13));
67
- }
68
- // if both equations are linear in one variable then we solve "x" for both. If x has the same value then equations are equivalent
69
- // solve linear equations
70
- const solutionForFirstEquation = utils_1.solveLinearEquation(firstEquationCoefficients);
71
- const solutionForSecondEquation = utils_1.solveLinearEquation(secondEquationCoefficients);
72
- equivalence =
73
- solutionForFirstEquation === solutionForSecondEquation &&
74
- solutionForFirstEquation !== undefined;
75
- }
76
- // if both equations are linear in two variabled then we give value "1" for both "x". Doing this we get a linear equation in one variable "y". Then we solve "y" for both. If y has the same value then equations are equivalent
77
- if (firstEquationVariablesName.length === 2) {
78
- let x = firstEquationVariablesName[0];
79
- // solve expression for x=1
80
- let expraNoX = utils_1.setXToOne(firstExpression, x);
81
- firstEquationCoefficients = utils_1.getCoefficients(expraNoX, isInequality);
82
- let exprbNoX = utils_1.setXToOne(secondExpression, x);
83
- secondEquationCoefficients = utils_1.getCoefficients(exprbNoX, isInequality);
84
- // find y for both equations, where x equals 1
85
- let yFromFirstExpression = utils_1.solveLinearEquation(firstEquationCoefficients);
86
- let yFromSecondExpression = utils_1.solveLinearEquation(secondEquationCoefficients);
87
- // if y has the same value, for the same x then the expressions should be equivalent
88
- equivalence = yFromFirstExpression === yFromSecondExpression;
89
- }
90
- // determine equivalence between 2-way inequalities with 1 or 2 variables:
91
- // we treat 2-way inequalities the same way as linear equations in 1 or 2 variables; we find out the solutions that solve the inequality then compare them
92
- // we have one distinct case, when multiplying both parts of an inequality with a negative number, the sign must change direction
93
- if (equivalence && isInequality) {
94
- // check if direction should be changed
95
- return !((m.isPositive(firstEquationCoefficients[0]) &&
96
- m.isNegative(firstEquationCoefficients[1]) &&
97
- m.isNegative(secondEquationCoefficients[0]) &&
98
- m.isPositive(secondEquationCoefficients[1])) ||
99
- (m.isNegative(firstEquationCoefficients[0]) &&
100
- m.isPositive(firstEquationCoefficients[1]) &&
101
- m.isPositive(secondEquationCoefficients[0]) &&
102
- m.isNegative(secondEquationCoefficients[1])));
103
- }
104
- }
105
- return equivalence;
106
- };
107
- exports.compareEquations = compareEquations;
108
- //# sourceMappingURL=compare-equations.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compare-equations.js","sourceRoot":"","sources":["../../src/symbolic/compare-equations.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import { MathNode } from "mathjs";
2
- export declare type SymbolicOpts = {};
3
- export declare const simplify: (v: any) => MathNode;
4
- export declare const isMathEqual: (a: any, b: any) => any;