solve-engine 1.1.1 → 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.
Files changed (188) hide show
  1. package/dist/{EngineError-B61GS1jp.d.cts → EngineError-CNA_rHY-.d.cts} +6 -0
  2. package/dist/{EngineError-B61GS1jp.d.ts → EngineError-CNA_rHY-.d.ts} +6 -0
  3. package/dist/{Lexer-BOs7euZe.d.cts → Lexer-B4C1qHXu.d.cts} +1 -1
  4. package/dist/{Lexer-CSI_lwbW.d.ts → Lexer-DKMlj7Sy.d.ts} +1 -1
  5. package/dist/{PackageCompatibility-B-7rK1TD.d.cts → PackageCompatibility-B6NX9IaN.d.cts} +1 -1
  6. package/dist/{PackageCompatibility-Dh59eF-X.d.ts → PackageCompatibility-Ceg5XdAp.d.ts} +1 -1
  7. package/dist/{PackageRegistry-BHWJP83F.d.cts → PackageRegistry-DnJYVw9G.d.cts} +55 -8
  8. package/dist/{PackageRegistry-_8rDlvxI.d.ts → PackageRegistry-DrCPQNyy.d.ts} +55 -8
  9. package/dist/{Parselet-BBT8riYh.d.ts → Parselet-Bhf7d0_W.d.ts} +2 -2
  10. package/dist/{Parselet-BHcgK9S7.d.cts → Parselet-Cv7S7KRt.d.cts} +2 -2
  11. package/dist/{ScopeManager-CxA24W5n.d.ts → ScopeManager-Bzq87GfA.d.ts} +10 -3
  12. package/dist/{ScopeManager-8vf02dwj.d.cts → ScopeManager-DRDBVfan.d.cts} +10 -3
  13. package/dist/{Token-B1hdkedD.d.cts → Token-CbP_OutD.d.cts} +9 -0
  14. package/dist/{Token-B1hdkedD.d.ts → Token-CbP_OutD.d.ts} +9 -0
  15. package/dist/{TokenNormalizer-C6VzZgHa.d.ts → TokenNormalizer-DCWdZjGz.d.ts} +1 -1
  16. package/dist/{TokenNormalizer-DRc1Js1V.d.cts → TokenNormalizer-DnlL7_8c.d.cts} +1 -1
  17. package/dist/{VMCheckpoints-MK--EBH2.d.ts → VMCheckpoints-C6c17Hbo.d.ts} +2 -2
  18. package/dist/{VMCheckpoints-ELYqITdF.d.cts → VMCheckpoints-dZxSMGHG.d.cts} +2 -2
  19. package/dist/{Value-BUi1RA3S.d.cts → Value-DZNQ_PU7.d.cts} +32 -5
  20. package/dist/{Value-BUi1RA3S.d.ts → Value-DZNQ_PU7.d.ts} +32 -5
  21. package/dist/{WorkerError-_-RkoQ5P.d.ts → WorkerError-B7t7R2-m.d.ts} +1 -1
  22. package/dist/{WorkerError-gzmaopj2.d.cts → WorkerError-Djd7GGGa.d.cts} +1 -1
  23. package/dist/{chunk-SSV46KFA.cjs → chunk-4K5W7EH2.cjs} +6 -6
  24. package/dist/{chunk-SSV46KFA.cjs.map → chunk-4K5W7EH2.cjs.map} +1 -1
  25. package/dist/{chunk-267JPOTF.js → chunk-5EFKSKMA.js} +11 -4
  26. package/dist/chunk-5EFKSKMA.js.map +1 -0
  27. package/dist/{chunk-536WPM2V.cjs → chunk-7AXJNQMF.cjs} +17 -3
  28. package/dist/chunk-7AXJNQMF.cjs.map +1 -0
  29. package/dist/{chunk-LHZ6VOA7.js → chunk-7JM3F4KL.js} +39 -8
  30. package/dist/chunk-7JM3F4KL.js.map +1 -0
  31. package/dist/{chunk-N5NNW4VG.cjs → chunk-7USV76HV.cjs} +6 -6
  32. package/dist/{chunk-N5NNW4VG.cjs.map → chunk-7USV76HV.cjs.map} +1 -1
  33. package/dist/{chunk-HIQ5HSZL.cjs → chunk-A2DZ5BEJ.cjs} +53 -46
  34. package/dist/{chunk-HIQ5HSZL.cjs.map → chunk-A2DZ5BEJ.cjs.map} +1 -1
  35. package/dist/{chunk-CKQMXMHR.cjs → chunk-AKNGX4TZ.cjs} +28 -11
  36. package/dist/chunk-AKNGX4TZ.cjs.map +1 -0
  37. package/dist/{chunk-I4GAWIPW.js → chunk-AOH6UR2L.js} +6 -6
  38. package/dist/{chunk-I4GAWIPW.js.map → chunk-AOH6UR2L.js.map} +1 -1
  39. package/dist/{chunk-T6ZYQJ63.cjs → chunk-BESTLPRK.cjs} +326 -214
  40. package/dist/chunk-BESTLPRK.cjs.map +1 -0
  41. package/dist/{chunk-Z7XGGLI2.js → chunk-BSPXMGIS.js} +3 -3
  42. package/dist/{chunk-Z7XGGLI2.js.map → chunk-BSPXMGIS.js.map} +1 -1
  43. package/dist/{chunk-SRGQ72IR.cjs → chunk-C2OMO3WN.cjs} +376 -370
  44. package/dist/chunk-C2OMO3WN.cjs.map +1 -0
  45. package/dist/{chunk-GLA4JXBO.js → chunk-CSDQMDU2.js} +4 -4
  46. package/dist/{chunk-GLA4JXBO.js.map → chunk-CSDQMDU2.js.map} +1 -1
  47. package/dist/{chunk-7KYSUDQO.js → chunk-F4UB4XIL.js} +4 -4
  48. package/dist/{chunk-7KYSUDQO.js.map → chunk-F4UB4XIL.js.map} +1 -1
  49. package/dist/{chunk-WXEHD6TT.js → chunk-FE4RC37D.js} +15 -9
  50. package/dist/chunk-FE4RC37D.js.map +1 -0
  51. package/dist/{chunk-7ZX6B7SY.cjs → chunk-FR7RNOPT.cjs} +637 -556
  52. package/dist/chunk-FR7RNOPT.cjs.map +1 -0
  53. package/dist/{chunk-QFTDTX6K.cjs → chunk-G2YPPLGX.cjs} +29 -2
  54. package/dist/chunk-G2YPPLGX.cjs.map +1 -0
  55. package/dist/{chunk-HVRVSI2Z.cjs → chunk-GDEU72RG.cjs} +86 -86
  56. package/dist/{chunk-HVRVSI2Z.cjs.map → chunk-GDEU72RG.cjs.map} +1 -1
  57. package/dist/{chunk-MN3LHRGV.cjs → chunk-HKTQCQ4Z.cjs} +860 -489
  58. package/dist/chunk-HKTQCQ4Z.cjs.map +1 -0
  59. package/dist/{chunk-XA4CKRML.cjs → chunk-HWHU642X.cjs} +2 -2
  60. package/dist/{chunk-XA4CKRML.cjs.map → chunk-HWHU642X.cjs.map} +1 -1
  61. package/dist/{chunk-CUR2WLI4.cjs → chunk-ICEKS6YC.cjs} +11 -11
  62. package/dist/{chunk-CUR2WLI4.cjs.map → chunk-ICEKS6YC.cjs.map} +1 -1
  63. package/dist/{chunk-NNZAEUDW.js → chunk-IJGOFP2J.js} +138 -26
  64. package/dist/chunk-IJGOFP2J.js.map +1 -0
  65. package/dist/{chunk-ENKKJYD3.js → chunk-IQJGDZOP.js} +4 -4
  66. package/dist/{chunk-ENKKJYD3.js.map → chunk-IQJGDZOP.js.map} +1 -1
  67. package/dist/{chunk-2TZKENDH.cjs → chunk-IT74O4BE.cjs} +15 -7
  68. package/dist/chunk-IT74O4BE.cjs.map +1 -0
  69. package/dist/{chunk-ZVTWQLK4.cjs → chunk-KXDQKVNX.cjs} +10 -10
  70. package/dist/{chunk-ZVTWQLK4.cjs.map → chunk-KXDQKVNX.cjs.map} +1 -1
  71. package/dist/{chunk-BYJBUL7U.js → chunk-L5YHV6BQ.js} +5 -5
  72. package/dist/{chunk-BYJBUL7U.js.map → chunk-L5YHV6BQ.js.map} +1 -1
  73. package/dist/{chunk-E23GZEWL.cjs → chunk-LO7HU5WB.cjs} +8 -8
  74. package/dist/{chunk-E23GZEWL.cjs.map → chunk-LO7HU5WB.cjs.map} +1 -1
  75. package/dist/{chunk-UO6BUV6K.js → chunk-LSALB3IN.js} +17 -3
  76. package/dist/chunk-LSALB3IN.js.map +1 -0
  77. package/dist/{chunk-J45BCEZ4.cjs → chunk-MI7OTUHL.cjs} +27 -27
  78. package/dist/{chunk-J45BCEZ4.cjs.map → chunk-MI7OTUHL.cjs.map} +1 -1
  79. package/dist/{chunk-B4HBEFTB.cjs → chunk-MIGXCBXT.cjs} +8 -2
  80. package/dist/chunk-MIGXCBXT.cjs.map +1 -0
  81. package/dist/{chunk-ERCOHGXD.js → chunk-N7OA4WPJ.js} +8 -2
  82. package/dist/chunk-N7OA4WPJ.js.map +1 -0
  83. package/dist/{chunk-4D6NIHE2.js → chunk-NAWZATKT.js} +29 -2
  84. package/dist/chunk-NAWZATKT.js.map +1 -0
  85. package/dist/{chunk-JG6ZJ2WU.js → chunk-ORM7CHYZ.js} +23 -5
  86. package/dist/chunk-ORM7CHYZ.js.map +1 -0
  87. package/dist/{chunk-B7NLZMQ3.cjs → chunk-PCZVMMWU.cjs} +8 -8
  88. package/dist/{chunk-B7NLZMQ3.cjs.map → chunk-PCZVMMWU.cjs.map} +1 -1
  89. package/dist/{chunk-DLEBSLF4.js → chunk-RNKDIXDV.js} +4 -4
  90. package/dist/{chunk-DLEBSLF4.js.map → chunk-RNKDIXDV.js.map} +1 -1
  91. package/dist/{chunk-YRIKITGF.cjs → chunk-TC6BTUSU.cjs} +55 -24
  92. package/dist/chunk-TC6BTUSU.cjs.map +1 -0
  93. package/dist/{chunk-4HQKTMWG.js → chunk-TPOK3UNI.js} +387 -17
  94. package/dist/chunk-TPOK3UNI.js.map +1 -0
  95. package/dist/{chunk-CCBZZQAE.js → chunk-UF6JG5SG.js} +2 -2
  96. package/dist/{chunk-CCBZZQAE.js.map → chunk-UF6JG5SG.js.map} +1 -1
  97. package/dist/{chunk-NKW7LKYU.js → chunk-WMQRJTAO.js} +88 -7
  98. package/dist/chunk-WMQRJTAO.js.map +1 -0
  99. package/dist/{chunk-ZMW6NU2K.cjs → chunk-YJHY7CMN.cjs} +95 -77
  100. package/dist/chunk-YJHY7CMN.cjs.map +1 -0
  101. package/dist/{chunk-3OWCDIPN.js → chunk-YNIWOYW6.js} +21 -4
  102. package/dist/chunk-YNIWOYW6.js.map +1 -0
  103. package/dist/{chunk-WWQEY7BV.js → chunk-ZN6YYPIW.js} +3 -3
  104. package/dist/{chunk-WWQEY7BV.js.map → chunk-ZN6YYPIW.js.map} +1 -1
  105. package/dist/{chunk-NNQ2TYDF.js → chunk-ZNFFTYWH.js} +11 -5
  106. package/dist/chunk-ZNFFTYWH.js.map +1 -0
  107. package/dist/constants.cjs +5 -5
  108. package/dist/constants.js +2 -2
  109. package/dist/engine.cjs +33 -33
  110. package/dist/engine.d.cts +27 -11
  111. package/dist/engine.d.ts +27 -11
  112. package/dist/engine.js +20 -20
  113. package/dist/errors.cjs +26 -26
  114. package/dist/errors.d.cts +3 -3
  115. package/dist/errors.d.ts +3 -3
  116. package/dist/errors.js +2 -2
  117. package/dist/format.cjs +7 -7
  118. package/dist/format.d.cts +1 -1
  119. package/dist/format.d.ts +1 -1
  120. package/dist/format.js +4 -4
  121. package/dist/index.cjs +48 -48
  122. package/dist/index.d.cts +11 -11
  123. package/dist/index.d.ts +11 -11
  124. package/dist/index.js +21 -21
  125. package/dist/language.cjs +7 -7
  126. package/dist/language.d.cts +10 -10
  127. package/dist/language.d.ts +10 -10
  128. package/dist/language.js +2 -2
  129. package/dist/lexer.cjs +16 -16
  130. package/dist/lexer.d.cts +3 -3
  131. package/dist/lexer.d.ts +3 -3
  132. package/dist/lexer.js +5 -5
  133. package/dist/normalizer.cjs +10 -10
  134. package/dist/normalizer.d.cts +3 -3
  135. package/dist/normalizer.d.ts +3 -3
  136. package/dist/normalizer.js +4 -4
  137. package/dist/packages.cjs +40 -36
  138. package/dist/packages.d.cts +37 -11
  139. package/dist/packages.d.ts +37 -11
  140. package/dist/packages.js +11 -11
  141. package/dist/parser.cjs +13 -13
  142. package/dist/parser.d.cts +4 -4
  143. package/dist/parser.d.ts +4 -4
  144. package/dist/parser.js +5 -5
  145. package/dist/{pipeline-DCd5M6Gk.d.ts → pipeline-D-PS9gVw.d.ts} +3 -3
  146. package/dist/{pipeline-CtfJtPQc.d.cts → pipeline-DtSBJ8TS.d.cts} +3 -3
  147. package/dist/resolvers.d.cts +2 -2
  148. package/dist/resolvers.d.ts +2 -2
  149. package/dist/testing.cjs +26 -26
  150. package/dist/testing.d.cts +10 -10
  151. package/dist/testing.d.ts +10 -10
  152. package/dist/testing.js +19 -19
  153. package/dist/uom.cjs +8 -8
  154. package/dist/uom.d.cts +2 -2
  155. package/dist/uom.d.ts +2 -2
  156. package/dist/uom.js +4 -4
  157. package/dist/vm.cjs +32 -32
  158. package/dist/vm.d.cts +7 -7
  159. package/dist/vm.d.ts +7 -7
  160. package/dist/vm.js +7 -7
  161. package/dist/worker.cjs +38 -38
  162. package/dist/worker.d.cts +10 -10
  163. package/dist/worker.d.ts +10 -10
  164. package/dist/worker.js +20 -20
  165. package/package.json +1 -1
  166. package/dist/chunk-267JPOTF.js.map +0 -1
  167. package/dist/chunk-2TZKENDH.cjs.map +0 -1
  168. package/dist/chunk-3OWCDIPN.js.map +0 -1
  169. package/dist/chunk-4D6NIHE2.js.map +0 -1
  170. package/dist/chunk-4HQKTMWG.js.map +0 -1
  171. package/dist/chunk-536WPM2V.cjs.map +0 -1
  172. package/dist/chunk-7ZX6B7SY.cjs.map +0 -1
  173. package/dist/chunk-B4HBEFTB.cjs.map +0 -1
  174. package/dist/chunk-CKQMXMHR.cjs.map +0 -1
  175. package/dist/chunk-ERCOHGXD.js.map +0 -1
  176. package/dist/chunk-JG6ZJ2WU.js.map +0 -1
  177. package/dist/chunk-LHZ6VOA7.js.map +0 -1
  178. package/dist/chunk-MN3LHRGV.cjs.map +0 -1
  179. package/dist/chunk-NKW7LKYU.js.map +0 -1
  180. package/dist/chunk-NNQ2TYDF.js.map +0 -1
  181. package/dist/chunk-NNZAEUDW.js.map +0 -1
  182. package/dist/chunk-QFTDTX6K.cjs.map +0 -1
  183. package/dist/chunk-SRGQ72IR.cjs.map +0 -1
  184. package/dist/chunk-T6ZYQJ63.cjs.map +0 -1
  185. package/dist/chunk-UO6BUV6K.js.map +0 -1
  186. package/dist/chunk-WXEHD6TT.js.map +0 -1
  187. package/dist/chunk-YRIKITGF.cjs.map +0 -1
  188. package/dist/chunk-ZMW6NU2K.cjs.map +0 -1
@@ -1,18 +1,24 @@
1
1
  'use strict';
2
2
 
3
- var chunk2TZKENDH_cjs = require('./chunk-2TZKENDH.cjs');
4
- var chunkB4HBEFTB_cjs = require('./chunk-B4HBEFTB.cjs');
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 chunkB4HBEFTB_cjs.ErrorFactory.internal("DECIMAL_NEGATIVE_POWER", `pow10 needs a non-negative exponent, got ${n}`, { exponent: n });
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 chunkB4HBEFTB_cjs.ErrorFactory.parsing("INVALID_DECIMAL_LITERAL", `Not a decimal literal: "${text}"`, { raw: text });
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 chunkB4HBEFTB_cjs.ErrorFactory.internal("DECIMAL_DIVISION_BY_ZERO", "decimalDivide was called with a zero divisor", {});
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 chunkB4HBEFTB_cjs.ErrorFactory.execution(
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 chunkB4HBEFTB_cjs.ErrorFactory.execution("SYMBOLIC_DIVISION_BY_ZERO", "Division by zero in a symbolic expression.");
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 chunkB4HBEFTB_cjs.ErrorFactory.execution(
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 chunkB4HBEFTB_cjs.ErrorFactory.internal(
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 chunkB4HBEFTB_cjs.ErrorFactory.execution("SYMBOLIC_DIVISION_BY_ZERO", "Division by zero in a symbolic expression.");
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 chunkB4HBEFTB_cjs.ErrorFactory.execution("SYMBOLIC_DIVISION_BY_ZERO", "Zero raised to a negative power is undefined.");
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 chunkB4HBEFTB_cjs.ErrorFactory.execution("SYMBOLIC_DIVISION_BY_ZERO", "Division by zero in a complex expression.");
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 chunkB4HBEFTB_cjs.ErrorFactory.execution("SYMBOLIC_DIVISION_BY_ZERO", "Zero raised to a negative power is undefined.");
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 chunkB4HBEFTB_cjs.ErrorFactory.execution(
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 chunk2TZKENDH_cjs.boolValue(cell);
1399
- if (typeof cell === "object" && cell !== null) return chunk2TZKENDH_cjs.symbolicValue(cell);
1400
- return chunk2TZKENDH_cjs.numberValue(cell);
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 chunk2TZKENDH_cjs.matrixValue(matrixOperand.rows, matrixOperand.cols, result2);
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 chunk2TZKENDH_cjs.matrixValue(matrixOperand.rows, matrixOperand.cols, result);
1439
+ return chunkIT74O4BE_cjs.matrixValue(matrixOperand.rows, matrixOperand.cols, result);
1434
1440
  }
1435
1441
  if (l.cols !== r.rows) {
1436
- return chunk2TZKENDH_cjs.errorValue(
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 = chunk2TZKENDH_cjs.checkedArray(resultRows * resultCols, "matrix cells");
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 chunk2TZKENDH_cjs.matrixValue(resultRows, resultCols, data);
1468
+ return chunkIT74O4BE_cjs.matrixValue(resultRows, resultCols, data);
1463
1469
  }
1464
1470
  function matrixPower(m, exponent) {
1465
1471
  if (!isSquare(m)) {
1466
- return chunk2TZKENDH_cjs.errorValue("MATRIX_POWER_REQUIRES_SQUARE_MATRIX", `^: only a square matrix can be raised to a power (got ${m.rows}x${m.cols}).`);
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 chunk2TZKENDH_cjs.errorValue(
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 chunk2TZKENDH_cjs.matrixValue(accumulated.rows, accumulated.cols, accumulated.data);
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 chunk2TZKENDH_cjs.errorValue(
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 chunk2TZKENDH_cjs.matrixValue(l.rows, l.cols, data);
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 chunk2TZKENDH_cjs.matrixValue(m.cols, m.rows, data);
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 chunk2TZKENDH_cjs.numberValue(Number(integerDeterminant(integers)));
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 chunk2TZKENDH_cjs.numberValue(0);
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 chunk2TZKENDH_cjs.numberValue(det);
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 chunk2TZKENDH_cjs.numberValue(0);
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" ? chunk2TZKENDH_cjs.numberValue(rationalToNumber(det.value)) : chunk2TZKENDH_cjs.symbolicValue(det);
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 chunk2TZKENDH_cjs.errorValue("DETERMINANT_REQUIRES_SQUARE_MATRIX", `det: matrix must be square (got ${m.rows}x${m.cols}).`);
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 chunk2TZKENDH_cjs.errorValue("SINGULAR_MATRIX", `inv: a ${n}x${n} matrix with a zero (or near-zero) pivot column is not invertible.`);
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 chunk2TZKENDH_cjs.matrixValue(n, n, data);
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 chunk2TZKENDH_cjs.errorValue(
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 chunk2TZKENDH_cjs.errorValue(
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 chunk2TZKENDH_cjs.matrixValue(n, n, data);
1710
+ return chunkIT74O4BE_cjs.matrixValue(n, n, data);
1705
1711
  }
1706
1712
  function inverse(m) {
1707
1713
  if (!isSquare(m)) {
1708
- return chunk2TZKENDH_cjs.errorValue("INVERSE_REQUIRES_SQUARE_MATRIX", `inv: matrix must be square (got ${m.rows}x${m.cols}).`);
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 chunk2TZKENDH_cjs.errorValue(
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 = chunk2TZKENDH_cjs.faultedOperand(v);
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] = chunk2TZKENDH_cjs.numberValue(r.min + 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 chunk2TZKENDH_cjs.errorValue(
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-HIQ5HSZL.cjs.map
1923
- //# sourceMappingURL=chunk-HIQ5HSZL.cjs.map
1929
+ //# sourceMappingURL=chunk-A2DZ5BEJ.cjs.map
1930
+ //# sourceMappingURL=chunk-A2DZ5BEJ.cjs.map