solve-engine 1.1.0 → 1.2.0
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/dist/{EngineError-B61GS1jp.d.cts → EngineError-CNA_rHY-.d.cts} +6 -0
- package/dist/{EngineError-B61GS1jp.d.ts → EngineError-CNA_rHY-.d.ts} +6 -0
- package/dist/{Lexer-BOs7euZe.d.cts → Lexer-B4C1qHXu.d.cts} +1 -1
- package/dist/{Lexer-CSI_lwbW.d.ts → Lexer-DKMlj7Sy.d.ts} +1 -1
- package/dist/{PackageCompatibility-B-7rK1TD.d.cts → PackageCompatibility-B6NX9IaN.d.cts} +1 -1
- package/dist/{PackageCompatibility-Dh59eF-X.d.ts → PackageCompatibility-Ceg5XdAp.d.ts} +1 -1
- package/dist/{PackageRegistry-BHWJP83F.d.cts → PackageRegistry-DnJYVw9G.d.cts} +55 -8
- package/dist/{PackageRegistry-_8rDlvxI.d.ts → PackageRegistry-DrCPQNyy.d.ts} +55 -8
- package/dist/{Parselet-BBT8riYh.d.ts → Parselet-Bhf7d0_W.d.ts} +2 -2
- package/dist/{Parselet-BHcgK9S7.d.cts → Parselet-Cv7S7KRt.d.cts} +2 -2
- package/dist/{ScopeManager-CxA24W5n.d.ts → ScopeManager-Bzq87GfA.d.ts} +10 -3
- package/dist/{ScopeManager-8vf02dwj.d.cts → ScopeManager-DRDBVfan.d.cts} +10 -3
- package/dist/{Token-B1hdkedD.d.cts → Token-CbP_OutD.d.cts} +9 -0
- package/dist/{Token-B1hdkedD.d.ts → Token-CbP_OutD.d.ts} +9 -0
- package/dist/{TokenNormalizer-C6VzZgHa.d.ts → TokenNormalizer-DCWdZjGz.d.ts} +1 -1
- package/dist/{TokenNormalizer-DRc1Js1V.d.cts → TokenNormalizer-DnlL7_8c.d.cts} +1 -1
- package/dist/{VMCheckpoints-MK--EBH2.d.ts → VMCheckpoints-C6c17Hbo.d.ts} +2 -2
- package/dist/{VMCheckpoints-ELYqITdF.d.cts → VMCheckpoints-dZxSMGHG.d.cts} +2 -2
- package/dist/{Value-BUi1RA3S.d.cts → Value-DZNQ_PU7.d.cts} +32 -5
- package/dist/{Value-BUi1RA3S.d.ts → Value-DZNQ_PU7.d.ts} +32 -5
- package/dist/{WorkerError-_-RkoQ5P.d.ts → WorkerError-B7t7R2-m.d.ts} +1 -1
- package/dist/{WorkerError-gzmaopj2.d.cts → WorkerError-Djd7GGGa.d.cts} +1 -1
- package/dist/{chunk-SSV46KFA.cjs → chunk-4K5W7EH2.cjs} +6 -6
- package/dist/{chunk-SSV46KFA.cjs.map → chunk-4K5W7EH2.cjs.map} +1 -1
- package/dist/{chunk-267JPOTF.js → chunk-5EFKSKMA.js} +11 -4
- package/dist/chunk-5EFKSKMA.js.map +1 -0
- package/dist/{chunk-536WPM2V.cjs → chunk-7AXJNQMF.cjs} +17 -3
- package/dist/chunk-7AXJNQMF.cjs.map +1 -0
- package/dist/{chunk-GUG7SNSV.js → chunk-7JM3F4KL.js} +39 -8
- package/dist/chunk-7JM3F4KL.js.map +1 -0
- package/dist/{chunk-XJGJCF2R.cjs → chunk-7USV76HV.cjs} +6 -6
- package/dist/{chunk-XJGJCF2R.cjs.map → chunk-7USV76HV.cjs.map} +1 -1
- package/dist/{chunk-HIQ5HSZL.cjs → chunk-A2DZ5BEJ.cjs} +53 -46
- package/dist/{chunk-HIQ5HSZL.cjs.map → chunk-A2DZ5BEJ.cjs.map} +1 -1
- package/dist/{chunk-CKQMXMHR.cjs → chunk-AKNGX4TZ.cjs} +28 -11
- package/dist/chunk-AKNGX4TZ.cjs.map +1 -0
- package/dist/{chunk-I4GAWIPW.js → chunk-AOH6UR2L.js} +6 -6
- package/dist/{chunk-I4GAWIPW.js.map → chunk-AOH6UR2L.js.map} +1 -1
- package/dist/{chunk-MG6Q3DUO.cjs → chunk-BESTLPRK.cjs} +326 -214
- package/dist/chunk-BESTLPRK.cjs.map +1 -0
- package/dist/{chunk-Z7XGGLI2.js → chunk-BSPXMGIS.js} +3 -3
- package/dist/{chunk-Z7XGGLI2.js.map → chunk-BSPXMGIS.js.map} +1 -1
- package/dist/{chunk-SRGQ72IR.cjs → chunk-C2OMO3WN.cjs} +376 -370
- package/dist/chunk-C2OMO3WN.cjs.map +1 -0
- package/dist/{chunk-G7Z4HJQA.js → chunk-CSDQMDU2.js} +4 -4
- package/dist/{chunk-G7Z4HJQA.js.map → chunk-CSDQMDU2.js.map} +1 -1
- package/dist/{chunk-7KYSUDQO.js → chunk-F4UB4XIL.js} +4 -4
- package/dist/{chunk-7KYSUDQO.js.map → chunk-F4UB4XIL.js.map} +1 -1
- package/dist/{chunk-WXEHD6TT.js → chunk-FE4RC37D.js} +15 -9
- package/dist/chunk-FE4RC37D.js.map +1 -0
- package/dist/{chunk-7ZX6B7SY.cjs → chunk-FR7RNOPT.cjs} +637 -556
- package/dist/chunk-FR7RNOPT.cjs.map +1 -0
- package/dist/{chunk-QFTDTX6K.cjs → chunk-G2YPPLGX.cjs} +29 -2
- package/dist/chunk-G2YPPLGX.cjs.map +1 -0
- package/dist/{chunk-HVRVSI2Z.cjs → chunk-GDEU72RG.cjs} +86 -86
- package/dist/{chunk-HVRVSI2Z.cjs.map → chunk-GDEU72RG.cjs.map} +1 -1
- package/dist/{chunk-OTN6SZOD.cjs → chunk-HKTQCQ4Z.cjs} +860 -489
- package/dist/chunk-HKTQCQ4Z.cjs.map +1 -0
- package/dist/{chunk-XA4CKRML.cjs → chunk-HWHU642X.cjs} +2 -2
- package/dist/{chunk-XA4CKRML.cjs.map → chunk-HWHU642X.cjs.map} +1 -1
- package/dist/{chunk-C75AFGVD.cjs → chunk-ICEKS6YC.cjs} +11 -11
- package/dist/{chunk-C75AFGVD.cjs.map → chunk-ICEKS6YC.cjs.map} +1 -1
- package/dist/{chunk-JIPATHVY.js → chunk-IJGOFP2J.js} +138 -26
- package/dist/chunk-IJGOFP2J.js.map +1 -0
- package/dist/{chunk-ENKKJYD3.js → chunk-IQJGDZOP.js} +4 -4
- package/dist/{chunk-ENKKJYD3.js.map → chunk-IQJGDZOP.js.map} +1 -1
- package/dist/{chunk-2TZKENDH.cjs → chunk-IT74O4BE.cjs} +15 -7
- package/dist/chunk-IT74O4BE.cjs.map +1 -0
- package/dist/{chunk-ZVTWQLK4.cjs → chunk-KXDQKVNX.cjs} +10 -10
- package/dist/{chunk-ZVTWQLK4.cjs.map → chunk-KXDQKVNX.cjs.map} +1 -1
- package/dist/{chunk-JJIXHXFQ.js → chunk-L5YHV6BQ.js} +5 -5
- package/dist/{chunk-JJIXHXFQ.js.map → chunk-L5YHV6BQ.js.map} +1 -1
- package/dist/{chunk-ZXCESUJS.cjs → chunk-LO7HU5WB.cjs} +8 -8
- package/dist/{chunk-ZXCESUJS.cjs.map → chunk-LO7HU5WB.cjs.map} +1 -1
- package/dist/{chunk-UO6BUV6K.js → chunk-LSALB3IN.js} +17 -3
- package/dist/chunk-LSALB3IN.js.map +1 -0
- package/dist/{chunk-J45BCEZ4.cjs → chunk-MI7OTUHL.cjs} +27 -27
- package/dist/{chunk-J45BCEZ4.cjs.map → chunk-MI7OTUHL.cjs.map} +1 -1
- package/dist/{chunk-B4HBEFTB.cjs → chunk-MIGXCBXT.cjs} +8 -2
- package/dist/chunk-MIGXCBXT.cjs.map +1 -0
- package/dist/{chunk-ERCOHGXD.js → chunk-N7OA4WPJ.js} +8 -2
- package/dist/chunk-N7OA4WPJ.js.map +1 -0
- package/dist/{chunk-4D6NIHE2.js → chunk-NAWZATKT.js} +29 -2
- package/dist/chunk-NAWZATKT.js.map +1 -0
- package/dist/{chunk-GQMUHVE3.js → chunk-ORM7CHYZ.js} +36 -5
- package/dist/chunk-ORM7CHYZ.js.map +1 -0
- package/dist/{chunk-B7NLZMQ3.cjs → chunk-PCZVMMWU.cjs} +8 -8
- package/dist/{chunk-B7NLZMQ3.cjs.map → chunk-PCZVMMWU.cjs.map} +1 -1
- package/dist/{chunk-OADDUPT3.js → chunk-RNKDIXDV.js} +4 -4
- package/dist/{chunk-OADDUPT3.js.map → chunk-RNKDIXDV.js.map} +1 -1
- package/dist/{chunk-SNHVVOJK.cjs → chunk-TC6BTUSU.cjs} +55 -24
- package/dist/chunk-TC6BTUSU.cjs.map +1 -0
- package/dist/{chunk-RRLHC37V.js → chunk-TPOK3UNI.js} +387 -17
- package/dist/chunk-TPOK3UNI.js.map +1 -0
- package/dist/{chunk-CCBZZQAE.js → chunk-UF6JG5SG.js} +2 -2
- package/dist/{chunk-CCBZZQAE.js.map → chunk-UF6JG5SG.js.map} +1 -1
- package/dist/{chunk-NKW7LKYU.js → chunk-WMQRJTAO.js} +88 -7
- package/dist/chunk-WMQRJTAO.js.map +1 -0
- package/dist/{chunk-YTIYVHL7.cjs → chunk-YJHY7CMN.cjs} +108 -77
- package/dist/chunk-YJHY7CMN.cjs.map +1 -0
- package/dist/{chunk-3OWCDIPN.js → chunk-YNIWOYW6.js} +21 -4
- package/dist/chunk-YNIWOYW6.js.map +1 -0
- package/dist/{chunk-WWQEY7BV.js → chunk-ZN6YYPIW.js} +3 -3
- package/dist/{chunk-WWQEY7BV.js.map → chunk-ZN6YYPIW.js.map} +1 -1
- package/dist/{chunk-NNQ2TYDF.js → chunk-ZNFFTYWH.js} +11 -5
- package/dist/chunk-ZNFFTYWH.js.map +1 -0
- package/dist/constants.cjs +5 -5
- package/dist/constants.js +2 -2
- package/dist/engine.cjs +33 -33
- package/dist/engine.d.cts +27 -11
- package/dist/engine.d.ts +27 -11
- package/dist/engine.js +20 -20
- package/dist/errors.cjs +26 -26
- package/dist/errors.d.cts +3 -3
- package/dist/errors.d.ts +3 -3
- package/dist/errors.js +2 -2
- package/dist/format.cjs +7 -7
- package/dist/format.d.cts +1 -1
- package/dist/format.d.ts +1 -1
- package/dist/format.js +4 -4
- package/dist/index.cjs +48 -48
- package/dist/index.d.cts +11 -11
- package/dist/index.d.ts +11 -11
- package/dist/index.js +21 -21
- package/dist/language.cjs +7 -7
- package/dist/language.d.cts +10 -10
- package/dist/language.d.ts +10 -10
- package/dist/language.js +2 -2
- package/dist/lexer.cjs +16 -16
- package/dist/lexer.d.cts +3 -3
- package/dist/lexer.d.ts +3 -3
- package/dist/lexer.js +5 -5
- package/dist/normalizer.cjs +10 -10
- package/dist/normalizer.d.cts +3 -3
- package/dist/normalizer.d.ts +3 -3
- package/dist/normalizer.js +4 -4
- package/dist/packages.cjs +40 -36
- package/dist/packages.d.cts +37 -11
- package/dist/packages.d.ts +37 -11
- package/dist/packages.js +11 -11
- package/dist/parser.cjs +13 -13
- package/dist/parser.d.cts +4 -4
- package/dist/parser.d.ts +4 -4
- package/dist/parser.js +5 -5
- package/dist/{pipeline-CtfJtPQc.d.cts → pipeline-D-PS9gVw.d.ts} +3 -3
- package/dist/{pipeline-DCd5M6Gk.d.ts → pipeline-DtSBJ8TS.d.cts} +3 -3
- package/dist/resolvers.d.cts +2 -2
- package/dist/resolvers.d.ts +2 -2
- package/dist/testing.cjs +26 -26
- package/dist/testing.d.cts +10 -10
- package/dist/testing.d.ts +10 -10
- package/dist/testing.js +19 -19
- package/dist/uom.cjs +8 -8
- package/dist/uom.d.cts +2 -2
- package/dist/uom.d.ts +2 -2
- package/dist/uom.js +4 -4
- package/dist/vm.cjs +32 -32
- package/dist/vm.d.cts +7 -7
- package/dist/vm.d.ts +7 -7
- package/dist/vm.js +7 -7
- package/dist/worker.cjs +38 -38
- package/dist/worker.d.cts +10 -10
- package/dist/worker.d.ts +10 -10
- package/dist/worker.js +20 -20
- package/package.json +1 -1
- package/dist/chunk-267JPOTF.js.map +0 -1
- package/dist/chunk-2TZKENDH.cjs.map +0 -1
- package/dist/chunk-3OWCDIPN.js.map +0 -1
- package/dist/chunk-4D6NIHE2.js.map +0 -1
- package/dist/chunk-536WPM2V.cjs.map +0 -1
- package/dist/chunk-7ZX6B7SY.cjs.map +0 -1
- package/dist/chunk-B4HBEFTB.cjs.map +0 -1
- package/dist/chunk-CKQMXMHR.cjs.map +0 -1
- package/dist/chunk-ERCOHGXD.js.map +0 -1
- package/dist/chunk-GQMUHVE3.js.map +0 -1
- package/dist/chunk-GUG7SNSV.js.map +0 -1
- package/dist/chunk-JIPATHVY.js.map +0 -1
- package/dist/chunk-MG6Q3DUO.cjs.map +0 -1
- package/dist/chunk-NKW7LKYU.js.map +0 -1
- package/dist/chunk-NNQ2TYDF.js.map +0 -1
- package/dist/chunk-OTN6SZOD.cjs.map +0 -1
- package/dist/chunk-QFTDTX6K.cjs.map +0 -1
- package/dist/chunk-RRLHC37V.js.map +0 -1
- package/dist/chunk-SNHVVOJK.cjs.map +0 -1
- package/dist/chunk-SRGQ72IR.cjs.map +0 -1
- package/dist/chunk-UO6BUV6K.js.map +0 -1
- package/dist/chunk-WXEHD6TT.js.map +0 -1
- package/dist/chunk-YTIYVHL7.cjs.map +0 -1
|
@@ -1,18 +1,24 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var chunkIT74O4BE_cjs = require('./chunk-IT74O4BE.cjs');
|
|
4
|
+
var chunkMIGXCBXT_cjs = require('./chunk-MIGXCBXT.cjs');
|
|
5
5
|
|
|
6
6
|
// src/decimal/Decimal.ts
|
|
7
7
|
var DEFAULT_DIVISION_SCALE = 20;
|
|
8
8
|
var POW10 = [1n];
|
|
9
9
|
function pow10(n) {
|
|
10
10
|
if (n < 0) {
|
|
11
|
-
throw
|
|
11
|
+
throw chunkMIGXCBXT_cjs.ErrorFactory.internal("DECIMAL_NEGATIVE_POWER", `pow10 needs a non-negative exponent, got ${n}`, { exponent: n });
|
|
12
12
|
}
|
|
13
13
|
for (let i = POW10.length; i <= n; i++) POW10[i] = POW10[i - 1] * 10n;
|
|
14
14
|
return POW10[n];
|
|
15
15
|
}
|
|
16
|
+
function makeDecimal(coef, scale) {
|
|
17
|
+
if (!Number.isInteger(scale) || scale < 0) {
|
|
18
|
+
throw chunkMIGXCBXT_cjs.ErrorFactory.internal("DECIMAL_INVALID_SCALE", `A decimal scale must be a non-negative integer, got ${scale}`, { scale });
|
|
19
|
+
}
|
|
20
|
+
return { coef, scale };
|
|
21
|
+
}
|
|
16
22
|
function decimalFromInteger(n) {
|
|
17
23
|
return { coef: typeof n === "bigint" ? n : BigInt(n), scale: 0 };
|
|
18
24
|
}
|
|
@@ -34,7 +40,7 @@ function decimalFromLiteral(text) {
|
|
|
34
40
|
const fracPart = dot < 0 ? "" : s.slice(dot + 1);
|
|
35
41
|
const digits = intPart + fracPart || "0";
|
|
36
42
|
if (!/^[0-9]+$/.test(digits)) {
|
|
37
|
-
throw
|
|
43
|
+
throw chunkMIGXCBXT_cjs.ErrorFactory.parsing("INVALID_DECIMAL_LITERAL", `Not a decimal literal: "${text}"`, { raw: text });
|
|
38
44
|
}
|
|
39
45
|
let coef = BigInt(digits);
|
|
40
46
|
if (negative) coef = -coef;
|
|
@@ -77,7 +83,7 @@ function decimalRound(a, targetScale) {
|
|
|
77
83
|
}
|
|
78
84
|
function decimalDivide(a, b, maxFractionDigits = DEFAULT_DIVISION_SCALE) {
|
|
79
85
|
if (decimalIsZero(b)) {
|
|
80
|
-
throw
|
|
86
|
+
throw chunkMIGXCBXT_cjs.ErrorFactory.internal("DECIMAL_DIVISION_BY_ZERO", "decimalDivide was called with a zero divisor", {});
|
|
81
87
|
}
|
|
82
88
|
const s = maxFractionDigits;
|
|
83
89
|
const numerator = a.coef * pow10(s + b.scale);
|
|
@@ -151,7 +157,7 @@ function gcd(a, b) {
|
|
|
151
157
|
function guardMagnitude(n, d) {
|
|
152
158
|
const magnitude = n < 0n ? -n : n;
|
|
153
159
|
if (magnitude >= MAX_MAGNITUDE || d >= MAX_MAGNITUDE) {
|
|
154
|
-
throw
|
|
160
|
+
throw chunkMIGXCBXT_cjs.ErrorFactory.execution(
|
|
155
161
|
"SYMBOLIC_RATIONAL_OVERFLOW",
|
|
156
162
|
`This calculation produced a fraction too large to represent exactly (over ${RATIONAL_MAX_BITS} bits).`,
|
|
157
163
|
{ limitBits: RATIONAL_MAX_BITS }
|
|
@@ -160,7 +166,7 @@ function guardMagnitude(n, d) {
|
|
|
160
166
|
}
|
|
161
167
|
function normalize(n, d) {
|
|
162
168
|
if (d === 0n) {
|
|
163
|
-
throw
|
|
169
|
+
throw chunkMIGXCBXT_cjs.ErrorFactory.execution("SYMBOLIC_DIVISION_BY_ZERO", "Division by zero in a symbolic expression.");
|
|
164
170
|
}
|
|
165
171
|
if (n === 0n) return RATIONAL_ZERO;
|
|
166
172
|
let numerator = d < 0n ? -n : n;
|
|
@@ -177,7 +183,7 @@ function rational(numerator, denominator = 1n) {
|
|
|
177
183
|
var DECIMAL_FORM = /^(-?)(\d+)(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/;
|
|
178
184
|
function rationalFromNumber(value) {
|
|
179
185
|
if (!Number.isFinite(value)) {
|
|
180
|
-
throw
|
|
186
|
+
throw chunkMIGXCBXT_cjs.ErrorFactory.execution(
|
|
181
187
|
"SYMBOLIC_NONFINITE_OPERAND",
|
|
182
188
|
`"${String(value)}" has no exact value, so it cannot appear in a symbolic expression.`,
|
|
183
189
|
{ value: String(value) }
|
|
@@ -186,7 +192,7 @@ function rationalFromNumber(value) {
|
|
|
186
192
|
if (Number.isInteger(value)) return normalize(BigInt(value), 1n);
|
|
187
193
|
const parts = DECIMAL_FORM.exec(String(value));
|
|
188
194
|
if (parts === null) {
|
|
189
|
-
throw
|
|
195
|
+
throw chunkMIGXCBXT_cjs.ErrorFactory.internal(
|
|
190
196
|
"INTERNAL_RATIONAL_PARSE",
|
|
191
197
|
`Internal error: could not read "${String(value)}" as a decimal number.`,
|
|
192
198
|
{ value: String(value) }
|
|
@@ -218,7 +224,7 @@ function rationalMul(a, b) {
|
|
|
218
224
|
}
|
|
219
225
|
function rationalDiv(a, b) {
|
|
220
226
|
if (b.n === 0n) {
|
|
221
|
-
throw
|
|
227
|
+
throw chunkMIGXCBXT_cjs.ErrorFactory.execution("SYMBOLIC_DIVISION_BY_ZERO", "Division by zero in a symbolic expression.");
|
|
222
228
|
}
|
|
223
229
|
return normalize(a.n * b.d, a.d * b.n);
|
|
224
230
|
}
|
|
@@ -229,7 +235,7 @@ function rationalPow(base, exponent) {
|
|
|
229
235
|
if (exponent === 0n) return RATIONAL_ONE;
|
|
230
236
|
if (exponent < 0n) {
|
|
231
237
|
if (base.n === 0n) {
|
|
232
|
-
throw
|
|
238
|
+
throw chunkMIGXCBXT_cjs.ErrorFactory.execution("SYMBOLIC_DIVISION_BY_ZERO", "Zero raised to a negative power is undefined.");
|
|
233
239
|
}
|
|
234
240
|
const positive = -exponent;
|
|
235
241
|
return normalize(bigintPow(base.d, positive), bigintPow(base.n, positive));
|
|
@@ -309,7 +315,7 @@ function complexMul(a, b) {
|
|
|
309
315
|
}
|
|
310
316
|
function complexDiv(a, b) {
|
|
311
317
|
if (isComplexZero(b)) {
|
|
312
|
-
throw
|
|
318
|
+
throw chunkMIGXCBXT_cjs.ErrorFactory.execution("SYMBOLIC_DIVISION_BY_ZERO", "Division by zero in a complex expression.");
|
|
313
319
|
}
|
|
314
320
|
const denominator = rationalAdd(rationalMul(b.re, b.re), rationalMul(b.im, b.im));
|
|
315
321
|
return {
|
|
@@ -330,7 +336,7 @@ function complexPow(base, exponent) {
|
|
|
330
336
|
if (exponent === 0n) return COMPLEX_ONE;
|
|
331
337
|
if (exponent < 0n) {
|
|
332
338
|
if (isComplexZero(base)) {
|
|
333
|
-
throw
|
|
339
|
+
throw chunkMIGXCBXT_cjs.ErrorFactory.execution("SYMBOLIC_DIVISION_BY_ZERO", "Zero raised to a negative power is undefined.");
|
|
334
340
|
}
|
|
335
341
|
return complexDiv(COMPLEX_ONE, complexPow(base, -exponent));
|
|
336
342
|
}
|
|
@@ -1043,7 +1049,7 @@ function foldCall(name, args) {
|
|
|
1043
1049
|
}
|
|
1044
1050
|
function simplifySymbolic(node) {
|
|
1045
1051
|
if (nodeCount(node, SYMBOLIC_MAX_NODES) > SYMBOLIC_MAX_NODES) {
|
|
1046
|
-
throw
|
|
1052
|
+
throw chunkMIGXCBXT_cjs.ErrorFactory.execution(
|
|
1047
1053
|
"SYMBOLIC_NODE_LIMIT_EXCEEDED",
|
|
1048
1054
|
`This symbolic expression is too large to simplify (over ${SYMBOLIC_MAX_NODES} terms).`,
|
|
1049
1055
|
{ limit: SYMBOLIC_MAX_NODES }
|
|
@@ -1395,9 +1401,9 @@ function symbolicToEntry(node) {
|
|
|
1395
1401
|
return simplified.kind === "const" ? rationalToNumber(simplified.value) : simplified;
|
|
1396
1402
|
}
|
|
1397
1403
|
function matrixEntryToValue(cell) {
|
|
1398
|
-
if (typeof cell === "boolean") return
|
|
1399
|
-
if (typeof cell === "object" && cell !== null) return
|
|
1400
|
-
return
|
|
1404
|
+
if (typeof cell === "boolean") return chunkIT74O4BE_cjs.boolValue(cell);
|
|
1405
|
+
if (typeof cell === "object" && cell !== null) return chunkIT74O4BE_cjs.symbolicValue(cell);
|
|
1406
|
+
return chunkIT74O4BE_cjs.numberValue(cell);
|
|
1401
1407
|
}
|
|
1402
1408
|
function rowMajorToColumnMajor(rows, cols, rowMajorData) {
|
|
1403
1409
|
const data = new Array(rows * cols);
|
|
@@ -1426,21 +1432,21 @@ function matrixMultiply(l, r) {
|
|
|
1426
1432
|
if (useSymbolic) {
|
|
1427
1433
|
const scalarNode = entryToSymbolic(scalarOperand.data[0]);
|
|
1428
1434
|
const result2 = matrixOperand.data.map((v) => symbolicToEntry(simplifySymbolic({ kind: "mul", left: entryToSymbolic(v), right: scalarNode })));
|
|
1429
|
-
return
|
|
1435
|
+
return chunkIT74O4BE_cjs.matrixValue(matrixOperand.rows, matrixOperand.cols, result2);
|
|
1430
1436
|
}
|
|
1431
1437
|
const scalar = scalarOperand.data[0];
|
|
1432
1438
|
const result = matrixOperand.data.map((v) => v * scalar);
|
|
1433
|
-
return
|
|
1439
|
+
return chunkIT74O4BE_cjs.matrixValue(matrixOperand.rows, matrixOperand.cols, result);
|
|
1434
1440
|
}
|
|
1435
1441
|
if (l.cols !== r.rows) {
|
|
1436
|
-
return
|
|
1442
|
+
return chunkIT74O4BE_cjs.errorValue(
|
|
1437
1443
|
"DIMENSION_MISMATCH",
|
|
1438
1444
|
`Cannot multiply a ${l.rows}x${l.cols} matrix by a ${r.rows}x${r.cols} matrix \u2014 inner dimensions must match (${l.cols} !== ${r.rows}).`
|
|
1439
1445
|
);
|
|
1440
1446
|
}
|
|
1441
1447
|
const resultRows = l.rows;
|
|
1442
1448
|
const resultCols = r.cols;
|
|
1443
|
-
const data =
|
|
1449
|
+
const data = chunkIT74O4BE_cjs.checkedArray(resultRows * resultCols, "matrix cells");
|
|
1444
1450
|
for (let row = 0; row < resultRows; row++) {
|
|
1445
1451
|
for (let col = 0; col < resultCols; col++) {
|
|
1446
1452
|
if (useSymbolic) {
|
|
@@ -1459,14 +1465,14 @@ function matrixMultiply(l, r) {
|
|
|
1459
1465
|
}
|
|
1460
1466
|
}
|
|
1461
1467
|
}
|
|
1462
|
-
return
|
|
1468
|
+
return chunkIT74O4BE_cjs.matrixValue(resultRows, resultCols, data);
|
|
1463
1469
|
}
|
|
1464
1470
|
function matrixPower(m, exponent) {
|
|
1465
1471
|
if (!isSquare(m)) {
|
|
1466
|
-
return
|
|
1472
|
+
return chunkIT74O4BE_cjs.errorValue("MATRIX_POWER_REQUIRES_SQUARE_MATRIX", `^: only a square matrix can be raised to a power (got ${m.rows}x${m.cols}).`);
|
|
1467
1473
|
}
|
|
1468
1474
|
if (!Number.isInteger(exponent) || exponent < 0) {
|
|
1469
|
-
return
|
|
1475
|
+
return chunkIT74O4BE_cjs.errorValue(
|
|
1470
1476
|
"MATRIX_POWER_REQUIRES_WHOLE_EXPONENT",
|
|
1471
1477
|
`^: a matrix can only be raised to a whole number of 0 or more (got ${exponent}); "^-1" means the inverse and "^T" the transpose.`
|
|
1472
1478
|
);
|
|
@@ -1490,18 +1496,18 @@ function matrixPower(m, exponent) {
|
|
|
1490
1496
|
squared = doubled.value;
|
|
1491
1497
|
}
|
|
1492
1498
|
}
|
|
1493
|
-
return
|
|
1499
|
+
return chunkIT74O4BE_cjs.matrixValue(accumulated.rows, accumulated.cols, accumulated.data);
|
|
1494
1500
|
}
|
|
1495
1501
|
function matrixCompare(l, r, cmp) {
|
|
1496
1502
|
if (!sameShape(l, r)) {
|
|
1497
|
-
return
|
|
1503
|
+
return chunkIT74O4BE_cjs.errorValue(
|
|
1498
1504
|
"DIMENSION_MISMATCH",
|
|
1499
1505
|
`Cannot compare matrices of different shapes: ${l.rows}x${l.cols} and ${r.rows}x${r.cols}`
|
|
1500
1506
|
);
|
|
1501
1507
|
}
|
|
1502
1508
|
const data = new Array(l.data.length);
|
|
1503
1509
|
for (let i = 0; i < l.data.length; i++) data[i] = cmp(l.data[i], r.data[i]);
|
|
1504
|
-
return
|
|
1510
|
+
return chunkIT74O4BE_cjs.matrixValue(l.rows, l.cols, data);
|
|
1505
1511
|
}
|
|
1506
1512
|
function transpose(m) {
|
|
1507
1513
|
const data = new Array(m.rows * m.cols);
|
|
@@ -1510,7 +1516,7 @@ function transpose(m) {
|
|
|
1510
1516
|
data[r + c * m.cols] = matAt(m, c, r);
|
|
1511
1517
|
}
|
|
1512
1518
|
}
|
|
1513
|
-
return
|
|
1519
|
+
return chunkIT74O4BE_cjs.matrixValue(m.cols, m.rows, data);
|
|
1514
1520
|
}
|
|
1515
1521
|
function toWorkingRows(m) {
|
|
1516
1522
|
const rows = [];
|
|
@@ -1566,7 +1572,7 @@ function integerDeterminant(rows) {
|
|
|
1566
1572
|
}
|
|
1567
1573
|
function numericDeterminant(m) {
|
|
1568
1574
|
const integers = toIntegerRows(m);
|
|
1569
|
-
if (integers !== null) return
|
|
1575
|
+
if (integers !== null) return chunkIT74O4BE_cjs.numberValue(Number(integerDeterminant(integers)));
|
|
1570
1576
|
const n = m.rows;
|
|
1571
1577
|
const a = toWorkingRows(m);
|
|
1572
1578
|
let det = 1;
|
|
@@ -1579,7 +1585,7 @@ function numericDeterminant(m) {
|
|
|
1579
1585
|
pivotRow = r;
|
|
1580
1586
|
}
|
|
1581
1587
|
}
|
|
1582
|
-
if (maxAbs === 0) return
|
|
1588
|
+
if (maxAbs === 0) return chunkIT74O4BE_cjs.numberValue(0);
|
|
1583
1589
|
if (pivotRow !== col) {
|
|
1584
1590
|
const tmp = a[col];
|
|
1585
1591
|
a[col] = a[pivotRow];
|
|
@@ -1593,7 +1599,7 @@ function numericDeterminant(m) {
|
|
|
1593
1599
|
for (let c = col; c < n; c++) a[r][c] -= factor * a[col][c];
|
|
1594
1600
|
}
|
|
1595
1601
|
}
|
|
1596
|
-
return
|
|
1602
|
+
return chunkIT74O4BE_cjs.numberValue(det);
|
|
1597
1603
|
}
|
|
1598
1604
|
function symbolicDeterminant(m) {
|
|
1599
1605
|
const n = m.rows;
|
|
@@ -1606,7 +1612,7 @@ function symbolicDeterminant(m) {
|
|
|
1606
1612
|
let det = constNode(1);
|
|
1607
1613
|
for (let col = 0; col < n; col++) {
|
|
1608
1614
|
const pivot = simplifySymbolic(a[col][col]);
|
|
1609
|
-
if (pivot.kind === "const" && isRationalZero(pivot.value)) return
|
|
1615
|
+
if (pivot.kind === "const" && isRationalZero(pivot.value)) return chunkIT74O4BE_cjs.numberValue(0);
|
|
1610
1616
|
det = simplifySymbolic({ kind: "mul", left: det, right: pivot });
|
|
1611
1617
|
for (let r = col + 1; r < n; r++) {
|
|
1612
1618
|
const factor = simplifySymbolic({ kind: "div", left: a[r][col], right: pivot });
|
|
@@ -1615,11 +1621,11 @@ function symbolicDeterminant(m) {
|
|
|
1615
1621
|
}
|
|
1616
1622
|
}
|
|
1617
1623
|
}
|
|
1618
|
-
return det.kind === "const" ?
|
|
1624
|
+
return det.kind === "const" ? chunkIT74O4BE_cjs.numberValue(rationalToNumber(det.value)) : chunkIT74O4BE_cjs.symbolicValue(det);
|
|
1619
1625
|
}
|
|
1620
1626
|
function determinant(m) {
|
|
1621
1627
|
if (!isSquare(m)) {
|
|
1622
|
-
return
|
|
1628
|
+
return chunkIT74O4BE_cjs.errorValue("DETERMINANT_REQUIRES_SQUARE_MATRIX", `det: matrix must be square (got ${m.rows}x${m.cols}).`);
|
|
1623
1629
|
}
|
|
1624
1630
|
return m.hasSymbolic ? symbolicDeterminant(m) : numericDeterminant(m);
|
|
1625
1631
|
}
|
|
@@ -1639,7 +1645,7 @@ function numericInverse(m) {
|
|
|
1639
1645
|
}
|
|
1640
1646
|
}
|
|
1641
1647
|
if (maxAbs < 1e-10) {
|
|
1642
|
-
return
|
|
1648
|
+
return chunkIT74O4BE_cjs.errorValue("SINGULAR_MATRIX", `inv: a ${n}x${n} matrix with a zero (or near-zero) pivot column is not invertible.`);
|
|
1643
1649
|
}
|
|
1644
1650
|
if (pivotRow !== col) {
|
|
1645
1651
|
const tmp = a[col];
|
|
@@ -1659,13 +1665,13 @@ function numericInverse(m) {
|
|
|
1659
1665
|
for (let r = 0; r < n; r++) {
|
|
1660
1666
|
for (let c = 0; c < n; c++) data[r + c * n] = a[r][n + c];
|
|
1661
1667
|
}
|
|
1662
|
-
return
|
|
1668
|
+
return chunkIT74O4BE_cjs.matrixValue(n, n, data);
|
|
1663
1669
|
}
|
|
1664
1670
|
var SYMBOLIC_INVERSE_DIMENSION_LIMIT = 9;
|
|
1665
1671
|
function symbolicInverse(m) {
|
|
1666
1672
|
const n = m.rows;
|
|
1667
1673
|
if (n >= SYMBOLIC_INVERSE_DIMENSION_LIMIT) {
|
|
1668
|
-
return
|
|
1674
|
+
return chunkIT74O4BE_cjs.errorValue(
|
|
1669
1675
|
"SYMBOLIC_INVERSE_DIMENSION_LIMIT",
|
|
1670
1676
|
`Symbolic matrix inversion is limited to matrices smaller than ${SYMBOLIC_INVERSE_DIMENSION_LIMIT}x${SYMBOLIC_INVERSE_DIMENSION_LIMIT} (got ${n}x${n}).`
|
|
1671
1677
|
);
|
|
@@ -1680,7 +1686,7 @@ function symbolicInverse(m) {
|
|
|
1680
1686
|
for (let col = 0; col < n; col++) {
|
|
1681
1687
|
const pivot = simplifySymbolic(a[col][col]);
|
|
1682
1688
|
if (pivot.kind === "const" && isRationalZero(pivot.value)) {
|
|
1683
|
-
return
|
|
1689
|
+
return chunkIT74O4BE_cjs.errorValue(
|
|
1684
1690
|
"SYMBOLIC_SINGULAR_OR_UNSUPPORTED_PIVOT",
|
|
1685
1691
|
`Symbolic inverse: the pivot at row/col ${col} is exactly zero \u2014 this matrix's structure isn't invertible via this engine's diagonal-first symbolic elimination (no row-swapping); try reordering rows manually.`
|
|
1686
1692
|
);
|
|
@@ -1701,22 +1707,22 @@ function symbolicInverse(m) {
|
|
|
1701
1707
|
for (let r = 0; r < n; r++) {
|
|
1702
1708
|
for (let c = 0; c < n; c++) data[r + c * n] = symbolicToEntry(a[r][n + c]);
|
|
1703
1709
|
}
|
|
1704
|
-
return
|
|
1710
|
+
return chunkIT74O4BE_cjs.matrixValue(n, n, data);
|
|
1705
1711
|
}
|
|
1706
1712
|
function inverse(m) {
|
|
1707
1713
|
if (!isSquare(m)) {
|
|
1708
|
-
return
|
|
1714
|
+
return chunkIT74O4BE_cjs.errorValue("INVERSE_REQUIRES_SQUARE_MATRIX", `inv: matrix must be square (got ${m.rows}x${m.cols}).`);
|
|
1709
1715
|
}
|
|
1710
1716
|
return m.hasSymbolic ? symbolicInverse(m) : numericInverse(m);
|
|
1711
1717
|
}
|
|
1712
1718
|
function tooLarge(length, maxElements) {
|
|
1713
|
-
return
|
|
1719
|
+
return chunkIT74O4BE_cjs.errorValue(
|
|
1714
1720
|
"COLLECTION_TOO_LARGE",
|
|
1715
1721
|
`This collection has ${length} elements, past the limit of ${maxElements} (see the engine's vm.maxCollectionSize setting).`
|
|
1716
1722
|
);
|
|
1717
1723
|
}
|
|
1718
1724
|
function collectionToValues(v, maxElements = Number.POSITIVE_INFINITY) {
|
|
1719
|
-
const faulted =
|
|
1725
|
+
const faulted = chunkIT74O4BE_cjs.faultedOperand(v);
|
|
1720
1726
|
if (faulted) return faulted;
|
|
1721
1727
|
if (v.type === 7 /* Matrix */) {
|
|
1722
1728
|
const m = v.value;
|
|
@@ -1728,10 +1734,10 @@ function collectionToValues(v, maxElements = Number.POSITIVE_INFINITY) {
|
|
|
1728
1734
|
const length = r.max - r.min + 1;
|
|
1729
1735
|
if (length > maxElements) return tooLarge(length, maxElements);
|
|
1730
1736
|
const out = new Array(length);
|
|
1731
|
-
for (let i = 0; i < length; i++) out[i] =
|
|
1737
|
+
for (let i = 0; i < length; i++) out[i] = chunkIT74O4BE_cjs.numberValue(r.min + i);
|
|
1732
1738
|
return out;
|
|
1733
1739
|
}
|
|
1734
|
-
return
|
|
1740
|
+
return chunkIT74O4BE_cjs.errorValue(
|
|
1735
1741
|
"MAP_REDUCE_REQUIRES_COLLECTION",
|
|
1736
1742
|
`map/reduce requires a Matrix or Range collection (e.g. "[1,2,3]" or "0:3").`
|
|
1737
1743
|
);
|
|
@@ -1884,6 +1890,7 @@ exports.inverse = inverse;
|
|
|
1884
1890
|
exports.isRationalOne = isRationalOne;
|
|
1885
1891
|
exports.isRationalZero = isRationalZero;
|
|
1886
1892
|
exports.isZeroPolynomial = isZeroPolynomial;
|
|
1893
|
+
exports.makeDecimal = makeDecimal;
|
|
1887
1894
|
exports.matAt = matAt;
|
|
1888
1895
|
exports.matIndex = matIndex;
|
|
1889
1896
|
exports.matrixCompare = matrixCompare;
|
|
@@ -1919,5 +1926,5 @@ exports.symbolicToEntry = symbolicToEntry;
|
|
|
1919
1926
|
exports.toPolynomial = toPolynomial;
|
|
1920
1927
|
exports.transpose = transpose;
|
|
1921
1928
|
exports.varNode = varNode;
|
|
1922
|
-
//# sourceMappingURL=chunk-
|
|
1923
|
-
//# sourceMappingURL=chunk-
|
|
1929
|
+
//# sourceMappingURL=chunk-A2DZ5BEJ.cjs.map
|
|
1930
|
+
//# sourceMappingURL=chunk-A2DZ5BEJ.cjs.map
|