@pie-framework/math-validation 1.4.3 → 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.
- package/LICENSE +233 -0
- package/README.md +41 -110
- package/dist/conversion/ast-to-mathjs.d.ts +3 -0
- package/dist/conversion/error.d.ts +4 -0
- package/dist/conversion/flatten.d.ts +1 -0
- package/{lib → dist}/conversion/latex-to-ast.d.ts +13 -12
- package/{lib → dist}/conversion/lexer.d.ts +5 -5
- package/dist/difference.d.ts +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1594 -0
- package/dist/latex-equal.d.ts +2 -0
- package/dist/literal/index.d.ts +3 -0
- package/dist/log.d.ts +1 -0
- package/dist/mathjs.d.ts +11 -0
- package/{lib → dist}/node-sort.d.ts +1 -1
- package/dist/options.d.ts +13 -0
- package/{lib → dist}/symbolic/compare-compound-inequations.d.ts +2 -2
- package/{lib → dist}/symbolic/compare-equations.d.ts +1 -1
- package/dist/symbolic/index.d.ts +1 -0
- package/dist/symbolic/simplify.d.ts +2 -0
- package/{lib → dist}/symbolic/utils.d.ts +3 -3
- package/dist/value.d.ts +6 -0
- package/package.json +28 -56
- package/lib/conversion/ast-to-mathjs.d.ts +0 -12
- package/lib/conversion/ast-to-mathjs.js +0 -329
- package/lib/conversion/ast-to-mathjs.js.map +0 -1
- package/lib/conversion/error.d.ts +0 -5
- package/lib/conversion/error.js +0 -13
- package/lib/conversion/error.js.map +0 -1
- package/lib/conversion/flatten.d.ts +0 -12
- package/lib/conversion/flatten.js +0 -103
- package/lib/conversion/flatten.js.map +0 -1
- package/lib/conversion/latex-to-ast.js +0 -1479
- package/lib/conversion/latex-to-ast.js.map +0 -1
- package/lib/conversion/lexer.js +0 -135
- package/lib/conversion/lexer.js.map +0 -1
- package/lib/conversion/util.d.ts +0 -3
- package/lib/conversion/util.js +0 -36
- package/lib/conversion/util.js.map +0 -1
- package/lib/demo.d.ts +0 -4
- package/lib/demo.js +0 -173
- package/lib/demo.js.map +0 -1
- package/lib/difference.d.ts +0 -2
- package/lib/difference.js +0 -24
- package/lib/difference.js.map +0 -1
- package/lib/index.d.ts +0 -5
- package/lib/index.js +0 -9
- package/lib/index.js.map +0 -1
- package/lib/latex-equal.d.ts +0 -10
- package/lib/latex-equal.js +0 -41
- package/lib/latex-equal.js.map +0 -1
- package/lib/literal/index.d.ts +0 -10
- package/lib/literal/index.js +0 -22
- package/lib/literal/index.js.map +0 -1
- package/lib/log.d.ts +0 -1
- package/lib/log.js +0 -14
- package/lib/log.js.map +0 -1
- package/lib/mathjs.d.ts +0 -3
- package/lib/mathjs.js +0 -9
- package/lib/mathjs.js.map +0 -1
- package/lib/node-sort.js +0 -236
- package/lib/node-sort.js.map +0 -1
- package/lib/symbolic/compare-compound-inequations.js +0 -68
- package/lib/symbolic/compare-compound-inequations.js.map +0 -1
- package/lib/symbolic/compare-equations.js +0 -106
- package/lib/symbolic/compare-equations.js.map +0 -1
- package/lib/symbolic/index.d.ts +0 -4
- package/lib/symbolic/index.js +0 -340
- package/lib/symbolic/index.js.map +0 -1
- package/lib/symbolic/utils.js +0 -323
- package/lib/symbolic/utils.js.map +0 -1
package/lib/symbolic/index.js
DELETED
|
@@ -1,340 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isMathEqual = exports.simplify = void 0;
|
|
4
|
-
const log_1 = require("../log");
|
|
5
|
-
const mathjs_1 = require("../mathjs");
|
|
6
|
-
const mathjs_2 = require("mathjs");
|
|
7
|
-
const node_sort_1 = require("../node-sort");
|
|
8
|
-
const compare_equations_1 = require("./compare-equations");
|
|
9
|
-
const compare_compound_inequations_1 = require("./compare-compound-inequations");
|
|
10
|
-
const m = mathjs_1.mathjs;
|
|
11
|
-
const log = (0, log_1.logger)("mv:symbolic");
|
|
12
|
-
// an angle counts as k quarter turns (90°, 180°, ...) only when it is one up to floating-point error,
|
|
13
|
-
// which keeps angles that are only close, like 89.9999°, 1.5708 or 9090.001°, from being matched
|
|
14
|
-
const ANGLE_TOLERANCE = 1e-9;
|
|
15
|
-
// angles are evaluated as plain numbers, the Fraction config used elsewhere cannot represent pi
|
|
16
|
-
const numeric = (0, mathjs_2.create)(mathjs_2.all);
|
|
17
|
-
// tolerances for floating-point noise from trig functions, pi and angle conversions (PIE-905);
|
|
18
|
-
// the noise grows with the angle, e.g. sin(2pi) = -2.4e-16, sin(200pi) = 3.9e-15, tan(36045°) - 1 = -5.4e-14,
|
|
19
|
-
// so a value is accepted only when it agrees with the target to about 13 significant digits
|
|
20
|
-
const RELATIVE_EPSILON = 1e-13;
|
|
21
|
-
// floor for comparisons with 0, where a relative tolerance alone would require an exact match;
|
|
22
|
-
// it covers residues such as sin(200pi) and cos(100.5pi) while still rejecting 0 vs 0.0000000000001
|
|
23
|
-
const ABSOLUTE_EPSILON = 1e-14;
|
|
24
|
-
const { simplify: ms, rationalize } = mathjs_1.mathjs;
|
|
25
|
-
const SIMPLIFY_RULES = [
|
|
26
|
-
{ l: "n1^(1/n2)", r: "nthRoot(n1, n2)" },
|
|
27
|
-
{ l: "sqrt(n1)", r: "nthRoot(n1, 2)" },
|
|
28
|
-
{ l: "nthRoot(-1, 2)", r: "i" },
|
|
29
|
-
{ l: "(v1-v2)/n", r: "v1/n-v2/n" },
|
|
30
|
-
{ l: "(v1-n)/n", r: "v1/n-1" },
|
|
31
|
-
{ l: "n/n1-c1", r: "(n-c1*n1)/n1" },
|
|
32
|
-
{ l: "i^2", r: "-1" },
|
|
33
|
-
{ l: "pi", r: "3.141592653589793" },
|
|
34
|
-
{ l: "n/(n*n1)", r: "1/n1" },
|
|
35
|
-
{ l: "c1/(c2*(n3))", r: "(c1/c2)*(1/n3)" },
|
|
36
|
-
{ l: "n1/(n(n+1)+1(n+1))", r: "n1/((n+1)^2)" },
|
|
37
|
-
// perfect square formula
|
|
38
|
-
{ l: "(n1 + n2) ^ 2", r: "(n1 ^ 2) + 2*n1*n2 + (n2 ^ 2)" },
|
|
39
|
-
{ l: "tzn(n1, n2)", r: "n1" },
|
|
40
|
-
{ l: "n1/(-n2)", r: "-(n1/n2)" },
|
|
41
|
-
{ l: "sin(n*pi)", r: "0" },
|
|
42
|
-
// logarithm rules
|
|
43
|
-
{ l: "log(n1*n2, n3)", r: "log(n1, n3)+log(n2,n3)" },
|
|
44
|
-
{ l: "log(n1/n2, n3)", r: "log(n1, n3)-log(n2,n3)" },
|
|
45
|
-
{ l: "log(n1^n2, n3)", r: "n2*log(n1,n3)" },
|
|
46
|
-
// trigonometry: defining relations for tangent, cotangent, secant, and cosecant in terms of sine and cosine
|
|
47
|
-
{ l: "sin(n)/cos(n)", r: "tan(n)" },
|
|
48
|
-
{ l: "csc(n)", r: "1/sin(n)" },
|
|
49
|
-
{ l: "sec(n)", r: "1/cos(n)" },
|
|
50
|
-
{ l: "cot(n)", r: "1/tan(n)", r1: "cos(n)/sin(n)" },
|
|
51
|
-
{ l: "1/tan(n)", r: "cos(n)/sin(n)" },
|
|
52
|
-
// TO DO: the Pythagorean formula for sines and cosines.
|
|
53
|
-
// inverse trigonometric functions relations
|
|
54
|
-
{ l: "n1 == asin(n)", r: "n == sin(n1)" },
|
|
55
|
-
{ l: "n1 == acos(n)", r: "n == cos(n1)" },
|
|
56
|
-
{ l: "n1 == atan(n)", r: "n == tan(n1)" },
|
|
57
|
-
{ l: "n1 == acot(n)", r: "n == cot(n1)" },
|
|
58
|
-
{ l: "n1 == asec(n)", r: "n == sec(n1)" },
|
|
59
|
-
{ l: "n1 == acsc(n)", r: "n == csc(n1)" },
|
|
60
|
-
// relationships between trigonometric functions and inverse trigonometric functions
|
|
61
|
-
{ l: "sin(asin(n))", r: "n" },
|
|
62
|
-
{ l: "cos(acos(n))", r: "n" },
|
|
63
|
-
{ l: "tan(atan(n))", r: "n" },
|
|
64
|
-
{ l: "sin(acsc(n))", r: "1/n" },
|
|
65
|
-
{ l: "cos(asec(n))", r: "1/n" },
|
|
66
|
-
{ l: "tan(acot(n))", r: "1/n" },
|
|
67
|
-
];
|
|
68
|
-
const simplify = (v) => {
|
|
69
|
-
const rules = SIMPLIFY_RULES.concat(ms.rules);
|
|
70
|
-
return ms(v, rules); //.concat(SIMPLIFY_RULES));
|
|
71
|
-
};
|
|
72
|
-
exports.simplify = simplify;
|
|
73
|
-
const hasSymbol = (node, matches) => {
|
|
74
|
-
let found = false;
|
|
75
|
-
// the name of a function such as sqrt is a symbol too, under the path "fn"
|
|
76
|
-
node.traverse((n, path) => {
|
|
77
|
-
found = found || (n.isSymbolNode && path !== "fn" && matches(n.name));
|
|
78
|
-
});
|
|
79
|
-
return found;
|
|
80
|
-
};
|
|
81
|
-
// evaluates a constant expression as a plain number, undefined if it has variables;
|
|
82
|
-
// any symbol other than pi and Infinity is a variable, even names mathjs knows as constants such as e, E or phi
|
|
83
|
-
const evaluateNumber = (node) => {
|
|
84
|
-
if (hasSymbol(node, (name) => name !== "pi" && name !== "Infinity")) {
|
|
85
|
-
return undefined;
|
|
86
|
-
}
|
|
87
|
-
try {
|
|
88
|
-
const value = numeric.evaluate(node.toString());
|
|
89
|
-
return typeof value === "number" ? value : undefined;
|
|
90
|
-
}
|
|
91
|
-
catch (e) {
|
|
92
|
-
return undefined;
|
|
93
|
-
}
|
|
94
|
-
};
|
|
95
|
-
// returns k when the constant angle is (within tolerance) a multiple k of pi/2
|
|
96
|
-
const quarterTurns = (angle) => {
|
|
97
|
-
const value = evaluateNumber(angle);
|
|
98
|
-
if (value === undefined || !isFinite(value)) {
|
|
99
|
-
return undefined;
|
|
100
|
-
}
|
|
101
|
-
const turns = value / (Math.PI / 2);
|
|
102
|
-
const k = Math.round(turns);
|
|
103
|
-
return Math.abs(turns - k) <= ANGLE_TOLERANCE * Math.max(1, Math.abs(k))
|
|
104
|
-
? k
|
|
105
|
-
: undefined;
|
|
106
|
-
};
|
|
107
|
-
// replace trigonometric functions evaluated at an angle where they are zero or undefined
|
|
108
|
-
// with their exact value, so that tan(90°) becomes Infinity instead of a large finite number
|
|
109
|
-
const snapTrigonometricValues = (node) => {
|
|
110
|
-
let changed = false;
|
|
111
|
-
const r = node.transform((n) => {
|
|
112
|
-
var _a;
|
|
113
|
-
if (!n.isFunctionNode || ((_a = n.args) === null || _a === void 0 ? void 0 : _a.length) !== 1) {
|
|
114
|
-
return n;
|
|
115
|
-
}
|
|
116
|
-
const k = quarterTurns(n.args[0]);
|
|
117
|
-
if (k === undefined) {
|
|
118
|
-
return n;
|
|
119
|
-
}
|
|
120
|
-
const odd = Math.abs(k) % 2 === 1;
|
|
121
|
-
let snapped = n;
|
|
122
|
-
switch (n.fn.name) {
|
|
123
|
-
case "sin":
|
|
124
|
-
snapped = odd ? n : new m.ConstantNode(0);
|
|
125
|
-
break;
|
|
126
|
-
case "cos":
|
|
127
|
-
snapped = odd ? new m.ConstantNode(0) : n;
|
|
128
|
-
break;
|
|
129
|
-
case "tan":
|
|
130
|
-
snapped = odd ? new m.SymbolNode("Infinity") : new m.ConstantNode(0);
|
|
131
|
-
break;
|
|
132
|
-
case "cot":
|
|
133
|
-
snapped = odd ? new m.ConstantNode(0) : new m.SymbolNode("Infinity");
|
|
134
|
-
break;
|
|
135
|
-
case "sec":
|
|
136
|
-
snapped = odd ? new m.SymbolNode("Infinity") : n;
|
|
137
|
-
break;
|
|
138
|
-
case "csc":
|
|
139
|
-
snapped = odd ? n : new m.SymbolNode("Infinity");
|
|
140
|
-
break;
|
|
141
|
-
}
|
|
142
|
-
changed = changed || snapped !== n;
|
|
143
|
-
return snapped;
|
|
144
|
-
});
|
|
145
|
-
// keep the original node when nothing was replaced, later steps rely on its identity
|
|
146
|
-
return { r: changed ? r : node, changed };
|
|
147
|
-
};
|
|
148
|
-
const normalize = (a) => {
|
|
149
|
-
const snapped = snapTrigonometricValues(a);
|
|
150
|
-
let r = snapped.r;
|
|
151
|
-
// simplify and rationalize treat Infinity as a variable (1 / Infinity + 3 becomes (1 + 3 * Infinity) / Infinity)
|
|
152
|
-
// and keep the sign of a division by zero, so a constant expression with an Infinity or a division by zero is evaluated before it is normalized;
|
|
153
|
-
// other constant expressions keep their exact value, such as 1/3 in sin(0) + 1/3
|
|
154
|
-
const snappedValue = snapped.changed ? evaluateNumber(r) : undefined;
|
|
155
|
-
const valueWithSnappedTrigonometry = snappedValue !== undefined &&
|
|
156
|
-
(!isFinite(snappedValue) || hasSymbol(r, (name) => name === "Infinity"))
|
|
157
|
-
? snappedValue
|
|
158
|
-
: undefined;
|
|
159
|
-
let onlyConstant = true;
|
|
160
|
-
let containsFunctionNode = false;
|
|
161
|
-
let containsArrayNode = false;
|
|
162
|
-
let pi = false;
|
|
163
|
-
let containsInverseFlag = false;
|
|
164
|
-
r.traverse(function (node, path, parent) {
|
|
165
|
-
if (node.isArrayNode) {
|
|
166
|
-
containsArrayNode = true;
|
|
167
|
-
node.items = node.items.map((item) => (0, exports.simplify)(item));
|
|
168
|
-
}
|
|
169
|
-
if (node.isSymbolNode) {
|
|
170
|
-
pi = pi || node.name === "pi";
|
|
171
|
-
containsInverseFlag = containsInverseFlag || node.name === "f^{-1}";
|
|
172
|
-
}
|
|
173
|
-
});
|
|
174
|
-
if (r.args) {
|
|
175
|
-
r.args = r.args.map((arg) => {
|
|
176
|
-
if (!arg.isFunctionNode &&
|
|
177
|
-
!arg.isArrayNode &&
|
|
178
|
-
!containsInverseFlag &&
|
|
179
|
-
!pi) {
|
|
180
|
-
try {
|
|
181
|
-
arg = (0, exports.simplify)(arg);
|
|
182
|
-
}
|
|
183
|
-
catch (e) {
|
|
184
|
-
// ok;
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
containsFunctionNode = containsFunctionNode || arg.isFunctionNode;
|
|
188
|
-
onlyConstant = onlyConstant && !!arg.isConstantNode;
|
|
189
|
-
return arg;
|
|
190
|
-
});
|
|
191
|
-
if (containsFunctionNode || containsInverseFlag) {
|
|
192
|
-
r.args = r.args.map((arg) => {
|
|
193
|
-
if (!arg.isFunctionNode && !arg.isArrayNode) {
|
|
194
|
-
try {
|
|
195
|
-
arg = rationalize((0, exports.simplify)(arg), {}, true).expression;
|
|
196
|
-
}
|
|
197
|
-
catch (e) {
|
|
198
|
-
// ok;
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
return arg;
|
|
202
|
-
});
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
if (r.fn !== "equal") {
|
|
206
|
-
try {
|
|
207
|
-
onlyConstant = false;
|
|
208
|
-
r = rationalize(r, {}, true).expression;
|
|
209
|
-
}
|
|
210
|
-
catch (_a) { }
|
|
211
|
-
}
|
|
212
|
-
if (r.conditionals && r.params) {
|
|
213
|
-
r.params = r.params.map((param) => (0, node_sort_1.sort)((0, exports.simplify)(param)));
|
|
214
|
-
}
|
|
215
|
-
if (!containsArrayNode && !onlyConstant) {
|
|
216
|
-
// overcome TypeError
|
|
217
|
-
try {
|
|
218
|
-
r = (0, exports.simplify)(r);
|
|
219
|
-
}
|
|
220
|
-
catch (e) { }
|
|
221
|
-
}
|
|
222
|
-
log("[normalize] input: ", a.toString(), "output: ", r.toString());
|
|
223
|
-
// an undefined value has no sign, so -tan(90°) and -1/cos(90°) are Infinity as well;
|
|
224
|
-
// an indeterminate result such as tan(90°) - tan(90°) or 0 * tan(90°) is NaN and must not simplify to a number
|
|
225
|
-
if (valueWithSnappedTrigonometry !== undefined) {
|
|
226
|
-
r = isNaN(valueWithSnappedTrigonometry)
|
|
227
|
-
? new m.SymbolNode("NaN")
|
|
228
|
-
: isFinite(valueWithSnappedTrigonometry)
|
|
229
|
-
? new m.ConstantNode(valueWithSnappedTrigonometry)
|
|
230
|
-
: new m.SymbolNode("Infinity");
|
|
231
|
-
}
|
|
232
|
-
if (r.toString() === "Infinity") {
|
|
233
|
-
r = new m.SymbolNode("Infinity");
|
|
234
|
-
}
|
|
235
|
-
return r;
|
|
236
|
-
};
|
|
237
|
-
// numeric value of an expression without variables, such as 5, -5 or -1/2; undefined for anything else
|
|
238
|
-
const constantValue = (node) => {
|
|
239
|
-
if (node.filter((n) => n.isSymbolNode).length > 0) {
|
|
240
|
-
return undefined;
|
|
241
|
-
}
|
|
242
|
-
try {
|
|
243
|
-
const result = node.evaluate();
|
|
244
|
-
// equations and inequalities without variables evaluate to booleans
|
|
245
|
-
if (typeof result === "boolean") {
|
|
246
|
-
return undefined;
|
|
247
|
-
}
|
|
248
|
-
const value = +result;
|
|
249
|
-
return Number.isFinite(value) ? value : undefined;
|
|
250
|
-
}
|
|
251
|
-
catch (e) {
|
|
252
|
-
return undefined;
|
|
253
|
-
}
|
|
254
|
-
};
|
|
255
|
-
const areNearlyEqual = (a, b) => Math.abs(a - b) <
|
|
256
|
-
ABSOLUTE_EPSILON + RELATIVE_EPSILON * Math.max(Math.abs(a), Math.abs(b));
|
|
257
|
-
const isIndeterminate = (node) => (node === null || node === void 0 ? void 0 : node.isSymbolNode) && node.name === "NaN";
|
|
258
|
-
const isMathEqual = (a, b) => {
|
|
259
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
260
|
-
let as;
|
|
261
|
-
let bs;
|
|
262
|
-
if ((a === null || a === void 0 ? void 0 : a.isUnit) && (b === null || b === void 0 ? void 0 : b.isUnit)) {
|
|
263
|
-
try {
|
|
264
|
-
return m.equal(a, b);
|
|
265
|
-
}
|
|
266
|
-
catch (e) {
|
|
267
|
-
log("[isMathEqual] Error comparing units:", (_a = a === null || a === void 0 ? void 0 : a.toString) === null || _a === void 0 ? void 0 : _a.call(a), (_b = b === null || b === void 0 ? void 0 : b.toString) === null || _b === void 0 ? void 0 : _b.call(b), e);
|
|
268
|
-
return false;
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
if ((a === null || a === void 0 ? void 0 : a.isUnit) || (b === null || b === void 0 ? void 0 : b.isUnit)) {
|
|
272
|
-
log("[isMathEqual] Mismatched unit comparison:", (_c = a === null || a === void 0 ? void 0 : a.toString) === null || _c === void 0 ? void 0 : _c.call(a), (_d = b === null || b === void 0 ? void 0 : b.toString) === null || _d === void 0 ? void 0 : _d.call(b));
|
|
273
|
-
return false;
|
|
274
|
-
}
|
|
275
|
-
// apply sort if we are not in a relationalNode
|
|
276
|
-
as = a.conditionals ? normalize(a) : (0, node_sort_1.sort)(normalize(a));
|
|
277
|
-
bs = b.conditionals ? normalize(b) : (0, node_sort_1.sort)(normalize(b));
|
|
278
|
-
log("[isMathEqual]", as.toString(), "==?", bs.toString());
|
|
279
|
-
// an indeterminate result such as tan(90°) - tan(90°) is not equal to anything, not even another indeterminate result
|
|
280
|
-
if (isIndeterminate(as) || isIndeterminate(bs)) {
|
|
281
|
-
return false;
|
|
282
|
-
}
|
|
283
|
-
const isSortingEnough = (0, node_sort_1.sort)(a).equals((0, node_sort_1.sort)(b));
|
|
284
|
-
const isTexEnough = as.toTex().trim() === bs.toTex().trim();
|
|
285
|
-
let equality = isTexEnough || as.equals(bs) || isSortingEnough;
|
|
286
|
-
if (equality) {
|
|
287
|
-
return true;
|
|
288
|
-
}
|
|
289
|
-
// compare constant results numerically, allowing only for floating-point noise
|
|
290
|
-
const aValue = constantValue(as);
|
|
291
|
-
const bValue = constantValue(bs);
|
|
292
|
-
if (aValue !== undefined && bValue !== undefined) {
|
|
293
|
-
return areNearlyEqual(aValue, bValue);
|
|
294
|
-
}
|
|
295
|
-
// if both expressions are equations
|
|
296
|
-
if (as.fn === "equal" && bs.fn === "equal") {
|
|
297
|
-
return (0, compare_equations_1.compareEquations)(as, bs, false);
|
|
298
|
-
}
|
|
299
|
-
// if both expressions are inequalities treat greater sign as equal sign
|
|
300
|
-
if ((as.fn === "larger" && bs.fn === "larger") ||
|
|
301
|
-
(as.fn === "largerEq" && bs.fn === "largerEq")) {
|
|
302
|
-
// solving a 2 way inequality is the same as solving an equation, we can treat the greater sign as an equal sign
|
|
303
|
-
// the difference is that solution should be plotted on a number line (or interval)
|
|
304
|
-
// if we have the same signs and the same direction, the interval will always be the same, starting with the solution
|
|
305
|
-
as.fn = "equal";
|
|
306
|
-
bs.fn = "equal";
|
|
307
|
-
as.op = "=";
|
|
308
|
-
bs.op = "=";
|
|
309
|
-
return (0, compare_equations_1.compareEquations)(as, bs, true);
|
|
310
|
-
}
|
|
311
|
-
// check for compound inequalities/3-way inequalities
|
|
312
|
-
if (
|
|
313
|
-
//@ts-ignore
|
|
314
|
-
((_e = as === null || as === void 0 ? void 0 : as.conditionals) === null || _e === void 0 ? void 0 : _e.length) === ((_f = bs === null || bs === void 0 ? void 0 : bs.conditionals) === null || _f === void 0 ? void 0 : _f.length) &&
|
|
315
|
-
//@ts-ignore
|
|
316
|
-
((_g = as === null || as === void 0 ? void 0 : as.conditionals) === null || _g === void 0 ? void 0 : _g.length) === 2 &&
|
|
317
|
-
//@ts-ignore
|
|
318
|
-
((_h = as === null || as === void 0 ? void 0 : as.conditionals) === null || _h === void 0 ? void 0 : _h.toString()) === ((_j = bs === null || bs === void 0 ? void 0 : bs.conditionals) === null || _j === void 0 ? void 0 : _j.toString())) {
|
|
319
|
-
const params = [
|
|
320
|
-
"smaller",
|
|
321
|
-
"smallerEq",
|
|
322
|
-
"larger",
|
|
323
|
-
"largerEq",
|
|
324
|
-
"equal",
|
|
325
|
-
"unequal",
|
|
326
|
-
];
|
|
327
|
-
const paramsIncludedA = params.some((param) =>
|
|
328
|
-
//@ts-ignore
|
|
329
|
-
as.conditionals.includes(param));
|
|
330
|
-
const paramsIncludedB = params.some((param) =>
|
|
331
|
-
//@ts-ignore
|
|
332
|
-
bs.conditionals.includes(param));
|
|
333
|
-
if (paramsIncludedA && paramsIncludedB) {
|
|
334
|
-
return (0, compare_compound_inequations_1.compareCompoundInequations)(as, bs);
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
return equality;
|
|
338
|
-
};
|
|
339
|
-
exports.isMathEqual = isMathEqual;
|
|
340
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/symbolic/index.ts"],"names":[],"mappings":"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"}
|