@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/utils.js
DELETED
|
@@ -1,323 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.equationsHaveTheSameVariables = exports.solveLinearEquation = exports.solveQuadraticEquation = exports.getCoefficients = exports.getVariables = exports.transformEqualityInExpression = exports.areEquationsNumericallyEquivalent = exports.areNumericallyEquivalent = exports.getSamplePoints = exports.hasSymbolicExponent = exports.expressionsCanBeCompared = void 0;
|
|
4
|
-
const mathjs_1 = require("../mathjs");
|
|
5
|
-
const mathjs_2 = require("mathjs");
|
|
6
|
-
const _1 = require("./");
|
|
7
|
-
const { simplify } = mathjs_1.mathjs;
|
|
8
|
-
const m = mathjs_1.mathjs;
|
|
9
|
-
// plain floating-point instance for numeric checks; the shared instance works with fractions
|
|
10
|
-
const numeric = (0, mathjs_2.create)(mathjs_2.all);
|
|
11
|
-
let simplifyRules = [
|
|
12
|
-
{ l: "-((n1)*(n2))", r: "(n1)*(n2)" },
|
|
13
|
-
{ l: "(n1-n2)/n3", r: "n1/n3-n2/n3" },
|
|
14
|
-
{ l: "(n1+n2)/n3", r: "n1/n3+n2/n3" },
|
|
15
|
-
{ l: "(n1-n2)*n3/n4", r: "(n1*n3)/n4-(n2*n3)/n4" },
|
|
16
|
-
{ l: "(n1+n2)*n3/n4", r: "(n1*n3)/n4+(n2*n3)/n4" },
|
|
17
|
-
];
|
|
18
|
-
const customRound = (number) => Math.round(number * 10000000000000) / 10000000000000;
|
|
19
|
-
// expressions can be compared if we have at least one symbol node and has no function node or array; do not treat math series as equations
|
|
20
|
-
const expressionsCanBeCompared = (firstEquation, secondEquation) => {
|
|
21
|
-
let noFunctionOrArray = true;
|
|
22
|
-
let firstSymbolNode = false;
|
|
23
|
-
let symbolNode = false;
|
|
24
|
-
let seriesNode = false;
|
|
25
|
-
firstEquation.traverse(function (node, path, parent) {
|
|
26
|
-
if (node.isSymbolNode) {
|
|
27
|
-
firstSymbolNode = true;
|
|
28
|
-
seriesNode = seriesNode || node.name.includes("[");
|
|
29
|
-
}
|
|
30
|
-
noFunctionOrArray =
|
|
31
|
-
noFunctionOrArray || node.isFunctionNode || node.isArrayNode;
|
|
32
|
-
});
|
|
33
|
-
secondEquation.traverse(function (node, path, parent) {
|
|
34
|
-
if (node.isFunctionNode || node.isArrayNode) {
|
|
35
|
-
noFunctionOrArray = false;
|
|
36
|
-
}
|
|
37
|
-
if (node.isSymbolNode && firstSymbolNode)
|
|
38
|
-
symbolNode = true;
|
|
39
|
-
});
|
|
40
|
-
return noFunctionOrArray && symbolNode && !seriesNode;
|
|
41
|
-
};
|
|
42
|
-
exports.expressionsCanBeCompared = expressionsCanBeCompared;
|
|
43
|
-
const hasSymbolicExponent = (node) => {
|
|
44
|
-
let found = false;
|
|
45
|
-
node.traverse((n) => {
|
|
46
|
-
var _a;
|
|
47
|
-
if (n.isOperatorNode &&
|
|
48
|
-
n.op === "^" &&
|
|
49
|
-
!((_a = n.args[1]) === null || _a === void 0 ? void 0 : _a.isConstantNode) // Exponent is symbolic or compound
|
|
50
|
-
) {
|
|
51
|
-
found = true;
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
return found;
|
|
55
|
-
};
|
|
56
|
-
exports.hasSymbolicExponent = hasSymbolicExponent;
|
|
57
|
-
// deterministic pseudo-random generator (mulberry32), so numeric checks give the same result on every run
|
|
58
|
-
const seededRandom = (seed) => () => {
|
|
59
|
-
seed = (seed + 0x6d2b79f5) | 0;
|
|
60
|
-
let t = Math.imul(seed ^ (seed >>> 15), 1 | seed);
|
|
61
|
-
t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t;
|
|
62
|
-
return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
|
|
63
|
-
};
|
|
64
|
-
// sample points where every variable gets its own non-integer value between 0.5 and 4.5 in size,
|
|
65
|
-
// so that expressions like x^2 and y^2 can be told apart; the sign is random too,
|
|
66
|
-
// so that expressions like |x| and x, or sqrt(x^6) and x^3, can be told apart
|
|
67
|
-
const getSamplePoints = (variables, count = 12) => {
|
|
68
|
-
const random = seededRandom(443);
|
|
69
|
-
return Array.from({ length: count }, () => variables.reduce((acc, v) => {
|
|
70
|
-
const size = 0.5 + 4 * random();
|
|
71
|
-
acc[v] = random() < 0.5 ? -size : size;
|
|
72
|
-
return acc;
|
|
73
|
-
}, {}));
|
|
74
|
-
};
|
|
75
|
-
exports.getSamplePoints = getSamplePoints;
|
|
76
|
-
// evaluate an expression at each sample point; NaN where it can't be evaluated to a real number
|
|
77
|
-
const evaluateAtPoints = (expr, points) => {
|
|
78
|
-
let compiled;
|
|
79
|
-
try {
|
|
80
|
-
compiled = numeric.compile(expr.toString());
|
|
81
|
-
}
|
|
82
|
-
catch (_a) {
|
|
83
|
-
return points.map(() => NaN);
|
|
84
|
-
}
|
|
85
|
-
return points.map((scope) => {
|
|
86
|
-
try {
|
|
87
|
-
const result = compiled.evaluate(Object.assign({}, scope));
|
|
88
|
-
return typeof result === "number" ? result : NaN;
|
|
89
|
-
}
|
|
90
|
-
catch (_a) {
|
|
91
|
-
return NaN;
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
};
|
|
95
|
-
const areClose = (a, b, tolerance) => Math.abs(a - b) <= tolerance * Math.max(1, Math.abs(a), Math.abs(b));
|
|
96
|
-
// points where either side can't be evaluated to a real number (e.g. sqrt of a negative number) are skipped
|
|
97
|
-
const areNumericallyEquivalent = (exprA, exprB, variables, tolerance = 1e-10) => {
|
|
98
|
-
const points = (0, exports.getSamplePoints)(variables);
|
|
99
|
-
const valuesA = evaluateAtPoints(exprA, points);
|
|
100
|
-
const valuesB = evaluateAtPoints(exprB, points);
|
|
101
|
-
const compared = valuesA.filter((a, i) => Number.isFinite(a) && Number.isFinite(valuesB[i]));
|
|
102
|
-
return (compared.length >= 3 &&
|
|
103
|
-
valuesA.every((a, i) => !Number.isFinite(a) ||
|
|
104
|
-
!Number.isFinite(valuesB[i]) ||
|
|
105
|
-
areClose(a, valuesB[i], tolerance)));
|
|
106
|
-
};
|
|
107
|
-
exports.areNumericallyEquivalent = areNumericallyEquivalent;
|
|
108
|
-
// exponent combinations for a factor such as x, 1/y or x*y^2, used when both sides of an equation were multiplied by variables
|
|
109
|
-
const getVariableFactors = (variables, maxPower) => variables.reduce((factors, v) => factors.reduce((acc, factor) => acc.concat(Array.from({ length: 2 * maxPower + 1 }, (_, i) => (Object.assign(Object.assign({}, factor), { [v]: i - maxPower })))), []), [{}]);
|
|
110
|
-
const haveProportionalValues = (firstExpression, secondExpression, variables, { allowVariableFactor = false, positiveOnly = false, } = {}) => {
|
|
111
|
-
const tolerance = 1e-9;
|
|
112
|
-
const points = (0, exports.getSamplePoints)(variables);
|
|
113
|
-
const firstValues = evaluateAtPoints(firstExpression, points);
|
|
114
|
-
const secondValues = evaluateAtPoints(secondExpression, points);
|
|
115
|
-
const ratios = [];
|
|
116
|
-
for (let i = 0; i < points.length; i++) {
|
|
117
|
-
const f = firstValues[i];
|
|
118
|
-
const g = secondValues[i];
|
|
119
|
-
if (!Number.isFinite(f) || !Number.isFinite(g)) {
|
|
120
|
-
continue;
|
|
121
|
-
}
|
|
122
|
-
const fIsZero = Math.abs(f) < tolerance;
|
|
123
|
-
const gIsZero = Math.abs(g) < tolerance;
|
|
124
|
-
// the point lies on both curves
|
|
125
|
-
if (fIsZero && gIsZero) {
|
|
126
|
-
continue;
|
|
127
|
-
}
|
|
128
|
-
// the point lies on only one of the curves
|
|
129
|
-
if (fIsZero || gIsZero) {
|
|
130
|
-
return false;
|
|
131
|
-
}
|
|
132
|
-
ratios.push({ point: points[i], ratio: f / g });
|
|
133
|
-
}
|
|
134
|
-
// not enough points to decide
|
|
135
|
-
if (ratios.length < 3) {
|
|
136
|
-
return false;
|
|
137
|
-
}
|
|
138
|
-
// for inequalities only even powers are allowed, since an odd power of a variable can be negative and reverse the sign
|
|
139
|
-
const factors = allowVariableFactor
|
|
140
|
-
? getVariableFactors(variables, 2).filter((factor) => !positiveOnly || Object.values(factor).every((power) => power % 2 === 0))
|
|
141
|
-
: [{}];
|
|
142
|
-
return factors.some((factor) => {
|
|
143
|
-
const scaled = ratios.map(({ point, ratio }) => Object.keys(factor).reduce((acc, v) => acc / Math.pow(point[v], factor[v]), ratio));
|
|
144
|
-
return ((!positiveOnly || scaled[0] > 0) &&
|
|
145
|
-
scaled.every((r) => areClose(r, scaled[0], tolerance)));
|
|
146
|
-
});
|
|
147
|
-
};
|
|
148
|
-
// the numerator N of F written as a single fraction N/D, or undefined when F has no variable denominator;
|
|
149
|
-
// F = 0 exactly where N = 0, so this undoes both sides being multiplied by an expression such as x-2
|
|
150
|
-
// rationalize expands powers, which gets very slow for high powers or long expressions, so those are left as they are
|
|
151
|
-
const MAX_NUMERATOR_POWER = 4;
|
|
152
|
-
const MAX_NUMERATOR_NODES = 60;
|
|
153
|
-
const isTooLargeToRationalize = (expr) => {
|
|
154
|
-
let nodes = 0;
|
|
155
|
-
let tooLarge = false;
|
|
156
|
-
expr.traverse((n) => {
|
|
157
|
-
var _a;
|
|
158
|
-
nodes++;
|
|
159
|
-
tooLarge =
|
|
160
|
-
tooLarge ||
|
|
161
|
-
(n.isOperatorNode &&
|
|
162
|
-
n.op === "^" &&
|
|
163
|
-
((_a = n.args[1]) === null || _a === void 0 ? void 0 : _a.isConstantNode) &&
|
|
164
|
-
Math.abs(Number(n.args[1].value)) > MAX_NUMERATOR_POWER);
|
|
165
|
-
});
|
|
166
|
-
return tooLarge || nodes > MAX_NUMERATOR_NODES;
|
|
167
|
-
};
|
|
168
|
-
const getNumerator = (expr) => {
|
|
169
|
-
if (isTooLargeToRationalize(expr)) {
|
|
170
|
-
return undefined;
|
|
171
|
-
}
|
|
172
|
-
try {
|
|
173
|
-
const { numerator, denominator } = numeric.rationalize(expr.toString(), {}, true);
|
|
174
|
-
return denominator ? numerator : undefined;
|
|
175
|
-
}
|
|
176
|
-
catch (_a) {
|
|
177
|
-
return undefined;
|
|
178
|
-
}
|
|
179
|
-
};
|
|
180
|
-
// two equations F = 0 and G = 0 describe the same solutions when F is a nonzero constant multiple of G;
|
|
181
|
-
// with allowVariableFactor, F may also be G multiplied by a power of each variable (e.g. both sides multiplied by x)
|
|
182
|
-
// set positiveOnly for inequalities, where multiplying by a negative number reverses the sign
|
|
183
|
-
const areEquationsNumericallyEquivalent = (firstExpression, secondExpression, variables, options = {}) => {
|
|
184
|
-
if (haveProportionalValues(firstExpression, secondExpression, variables, options)) {
|
|
185
|
-
return true;
|
|
186
|
-
}
|
|
187
|
-
// multiplying both sides of an inequality by an expression may reverse the sign, so only equations compare numerators
|
|
188
|
-
if (options.positiveOnly) {
|
|
189
|
-
return false;
|
|
190
|
-
}
|
|
191
|
-
const firstNumerator = getNumerator(firstExpression);
|
|
192
|
-
const secondNumerator = getNumerator(secondExpression);
|
|
193
|
-
return ((firstNumerator !== undefined || secondNumerator !== undefined) &&
|
|
194
|
-
haveProportionalValues(firstNumerator || firstExpression, secondNumerator || secondExpression, variables, options));
|
|
195
|
-
};
|
|
196
|
-
exports.areEquationsNumericallyEquivalent = areEquationsNumericallyEquivalent;
|
|
197
|
-
// move the terms of the equations to the left hand side
|
|
198
|
-
const transformEqualityInExpression = (equality) =>
|
|
199
|
-
// remove added/subtracted numbers/variables from both sides of the equation
|
|
200
|
-
(0, _1.simplify)(new m.OperatorNode("-", "subtract", equality.args));
|
|
201
|
-
exports.transformEqualityInExpression = transformEqualityInExpression;
|
|
202
|
-
// check if equation is valid and find out the number of variables and their name
|
|
203
|
-
const getVariables = (equation) => {
|
|
204
|
-
let variableNames = [];
|
|
205
|
-
equation.traverse(function (node, path, parent) {
|
|
206
|
-
if (node.isSymbolNode &&
|
|
207
|
-
(node === null || node === void 0 ? void 0 : node.name.length) === 1 &&
|
|
208
|
-
!variableNames.includes(node.name)) {
|
|
209
|
-
variableNames.push(node.name);
|
|
210
|
-
}
|
|
211
|
-
});
|
|
212
|
-
return variableNames.sort();
|
|
213
|
-
};
|
|
214
|
-
exports.getVariables = getVariables;
|
|
215
|
-
const getCoefficients = (equation, isInequality) => {
|
|
216
|
-
// coefficients will be determined if equation has only one variable
|
|
217
|
-
try {
|
|
218
|
-
const rationalizedEquation = m.rationalize(equation, {}, true);
|
|
219
|
-
let coefficients = rationalizedEquation.coefficients;
|
|
220
|
-
let allNegatives = coefficients.every((coefficient) => coefficient < 0);
|
|
221
|
-
return allNegatives
|
|
222
|
-
? coefficients.map((coefficient) => Math.abs(coefficient))
|
|
223
|
-
: coefficients;
|
|
224
|
-
}
|
|
225
|
-
catch (e) {
|
|
226
|
-
// rationalize may fail if variable is isolated in a fraction
|
|
227
|
-
// we give it another try to rationalize after applying a new round of simplify to separate the variable
|
|
228
|
-
if (isInequality) {
|
|
229
|
-
equation = simplify(equation, simplifyRules);
|
|
230
|
-
}
|
|
231
|
-
else {
|
|
232
|
-
simplifyRules.push({ l: "-(n)", r: "n" });
|
|
233
|
-
equation = simplify(equation, simplifyRules);
|
|
234
|
-
}
|
|
235
|
-
try {
|
|
236
|
-
const rationalizedEquation = m.rationalize(equation, {}, true);
|
|
237
|
-
return rationalizedEquation.coefficients;
|
|
238
|
-
}
|
|
239
|
-
catch (e) { }
|
|
240
|
-
}
|
|
241
|
-
return [1, 0];
|
|
242
|
-
};
|
|
243
|
-
exports.getCoefficients = getCoefficients;
|
|
244
|
-
// quadratic equation solver for a second-order polynomial equation such as ax^2 + bx + c = 0 for x, where a is not zero
|
|
245
|
-
// quadratic formula
|
|
246
|
-
const solveQuadraticEquation = (coefficients) => {
|
|
247
|
-
const [c, b, a] = coefficients;
|
|
248
|
-
const discriminant = b * b - 4 * a * c;
|
|
249
|
-
let addDiscriminant;
|
|
250
|
-
let subtractDiscriminant;
|
|
251
|
-
try {
|
|
252
|
-
addDiscriminant = m.compile(m.fraction(-b + m.sqrt(discriminant)) / (2 * a));
|
|
253
|
-
}
|
|
254
|
-
catch (_a) {
|
|
255
|
-
addDiscriminant = m.compile("(-b+sqrt(discriminant))/(2*a)");
|
|
256
|
-
}
|
|
257
|
-
try {
|
|
258
|
-
subtractDiscriminant = m.compile(m.fraction(-b - m.sqrt(discriminant)) / (2 * a));
|
|
259
|
-
}
|
|
260
|
-
catch (_b) {
|
|
261
|
-
subtractDiscriminant = m.compile("(-b-sqrt(discriminant))/(2*a)");
|
|
262
|
-
}
|
|
263
|
-
let firstRoot = addDiscriminant.evaluate({
|
|
264
|
-
discriminant: discriminant,
|
|
265
|
-
a: a,
|
|
266
|
-
b: b,
|
|
267
|
-
});
|
|
268
|
-
let secondRoot = subtractDiscriminant.evaluate({
|
|
269
|
-
discriminant: discriminant,
|
|
270
|
-
a: a,
|
|
271
|
-
b: b,
|
|
272
|
-
});
|
|
273
|
-
// roots are real numbers
|
|
274
|
-
if (!firstRoot.im) {
|
|
275
|
-
firstRoot = customRound(firstRoot);
|
|
276
|
-
secondRoot = customRound(secondRoot);
|
|
277
|
-
return [
|
|
278
|
-
{ re: firstRoot, im: 0 },
|
|
279
|
-
{ re: secondRoot, im: 0 },
|
|
280
|
-
];
|
|
281
|
-
}
|
|
282
|
-
return [
|
|
283
|
-
{
|
|
284
|
-
re: customRound(firstRoot.re),
|
|
285
|
-
im: customRound(firstRoot.im),
|
|
286
|
-
},
|
|
287
|
-
{
|
|
288
|
-
re: customRound(secondRoot.re),
|
|
289
|
-
im: customRound(secondRoot.im),
|
|
290
|
-
},
|
|
291
|
-
];
|
|
292
|
-
};
|
|
293
|
-
exports.solveQuadraticEquation = solveQuadraticEquation;
|
|
294
|
-
// solve x
|
|
295
|
-
const solveLinearEquation = (coefficients) => {
|
|
296
|
-
let result;
|
|
297
|
-
if (!coefficients) {
|
|
298
|
-
return undefined;
|
|
299
|
-
}
|
|
300
|
-
if (coefficients.length === 3 && coefficients[0] === 0) {
|
|
301
|
-
coefficients = coefficients.splice(1, 2);
|
|
302
|
-
}
|
|
303
|
-
if (coefficients.length === 2) {
|
|
304
|
-
if (coefficients[0] === 0 && coefficients[1] === 0) {
|
|
305
|
-
return Infinity;
|
|
306
|
-
}
|
|
307
|
-
if (coefficients[0] === 0) {
|
|
308
|
-
return 0;
|
|
309
|
-
}
|
|
310
|
-
// equation with no solution : if coefficient for x is 0 => division by zero => result == -Infinity
|
|
311
|
-
result = customRound(m.divide(coefficients[0], -1 * coefficients[1]));
|
|
312
|
-
}
|
|
313
|
-
return result;
|
|
314
|
-
};
|
|
315
|
-
exports.solveLinearEquation = solveLinearEquation;
|
|
316
|
-
const equationsHaveTheSameVariables = (firstEquationVariables, secondEquationVariables) => {
|
|
317
|
-
return (Array.isArray(firstEquationVariables) &&
|
|
318
|
-
Array.isArray(secondEquationVariables) &&
|
|
319
|
-
firstEquationVariables.length === secondEquationVariables.length &&
|
|
320
|
-
firstEquationVariables.every((variable, index) => variable === secondEquationVariables[index]));
|
|
321
|
-
};
|
|
322
|
-
exports.equationsHaveTheSameVariables = equationsHaveTheSameVariables;
|
|
323
|
-
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/symbolic/utils.ts"],"names":[],"mappings":"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"}
|