@cortex-js/compute-engine 0.56.0 → 0.57.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 (258) hide show
  1. package/dist/compile.esm.js +450 -42
  2. package/dist/compile.min.esm.js +57 -57
  3. package/dist/compile.min.umd.cjs +58 -58
  4. package/dist/compile.umd.cjs +450 -42
  5. package/dist/compute-engine.esm.js +677 -49
  6. package/dist/compute-engine.min.esm.js +62 -62
  7. package/dist/compute-engine.min.umd.cjs +62 -62
  8. package/dist/compute-engine.umd.cjs +677 -49
  9. package/dist/core.esm.js +676 -48
  10. package/dist/core.min.esm.js +61 -61
  11. package/dist/core.min.umd.cjs +61 -61
  12. package/dist/core.umd.cjs +676 -48
  13. package/dist/interval.esm.js +228 -16
  14. package/dist/interval.min.esm.js +6 -6
  15. package/dist/interval.min.umd.cjs +6 -6
  16. package/dist/interval.umd.cjs +228 -16
  17. package/dist/latex-syntax.esm.js +269 -16
  18. package/dist/latex-syntax.min.esm.js +6 -6
  19. package/dist/latex-syntax.min.umd.cjs +6 -6
  20. package/dist/latex-syntax.umd.cjs +269 -16
  21. package/dist/math-json.esm.js +2 -2
  22. package/dist/math-json.min.esm.js +2 -2
  23. package/dist/math-json.min.umd.cjs +2 -2
  24. package/dist/math-json.umd.cjs +2 -2
  25. package/dist/numerics.esm.js +2 -2
  26. package/dist/numerics.min.esm.js +2 -2
  27. package/dist/numerics.min.umd.cjs +2 -2
  28. package/dist/numerics.umd.cjs +2 -2
  29. package/dist/types/big-decimal/big-decimal.d.ts +1 -1
  30. package/dist/types/big-decimal/index.d.ts +1 -1
  31. package/dist/types/big-decimal/transcendentals.d.ts +1 -1
  32. package/dist/types/big-decimal/utils.d.ts +1 -1
  33. package/dist/types/common/ansi-codes.d.ts +1 -1
  34. package/dist/types/common/configuration-change.d.ts +1 -1
  35. package/dist/types/common/fuzzy-string-match.d.ts +1 -1
  36. package/dist/types/common/grapheme-splitter.d.ts +1 -1
  37. package/dist/types/common/interruptible.d.ts +1 -1
  38. package/dist/types/common/one-of.d.ts +1 -1
  39. package/dist/types/common/signals.d.ts +1 -1
  40. package/dist/types/common/type/ast-nodes.d.ts +1 -1
  41. package/dist/types/common/type/boxed-type.d.ts +1 -1
  42. package/dist/types/common/type/lexer.d.ts +1 -1
  43. package/dist/types/common/type/parse.d.ts +1 -1
  44. package/dist/types/common/type/parser.d.ts +1 -1
  45. package/dist/types/common/type/primitive.d.ts +1 -1
  46. package/dist/types/common/type/reduce.d.ts +1 -1
  47. package/dist/types/common/type/serialize.d.ts +1 -1
  48. package/dist/types/common/type/subtype.d.ts +1 -1
  49. package/dist/types/common/type/type-builder.d.ts +1 -1
  50. package/dist/types/common/type/types.d.ts +1 -1
  51. package/dist/types/common/type/utils.d.ts +1 -1
  52. package/dist/types/common/utils.d.ts +1 -1
  53. package/dist/types/compile.d.ts +1 -1
  54. package/dist/types/compute-engine/assume.d.ts +1 -1
  55. package/dist/types/compute-engine/boxed-expression/abstract-boxed-expression.d.ts +6 -1
  56. package/dist/types/compute-engine/boxed-expression/apply.d.ts +1 -1
  57. package/dist/types/compute-engine/boxed-expression/arithmetic-add.d.ts +1 -1
  58. package/dist/types/compute-engine/boxed-expression/arithmetic-mul-div.d.ts +1 -1
  59. package/dist/types/compute-engine/boxed-expression/arithmetic-power.d.ts +1 -1
  60. package/dist/types/compute-engine/boxed-expression/ascii-math.d.ts +1 -1
  61. package/dist/types/compute-engine/boxed-expression/box.d.ts +1 -1
  62. package/dist/types/compute-engine/boxed-expression/boxed-dictionary.d.ts +1 -1
  63. package/dist/types/compute-engine/boxed-expression/boxed-function.d.ts +1 -1
  64. package/dist/types/compute-engine/boxed-expression/boxed-number.d.ts +1 -1
  65. package/dist/types/compute-engine/boxed-expression/boxed-operator-definition.d.ts +1 -1
  66. package/dist/types/compute-engine/boxed-expression/boxed-patterns.d.ts +1 -1
  67. package/dist/types/compute-engine/boxed-expression/boxed-string.d.ts +1 -1
  68. package/dist/types/compute-engine/boxed-expression/boxed-symbol.d.ts +1 -1
  69. package/dist/types/compute-engine/boxed-expression/boxed-tensor.d.ts +1 -1
  70. package/dist/types/compute-engine/boxed-expression/boxed-value-definition.d.ts +1 -1
  71. package/dist/types/compute-engine/boxed-expression/cache.d.ts +1 -1
  72. package/dist/types/compute-engine/boxed-expression/canonical-utils.d.ts +1 -1
  73. package/dist/types/compute-engine/boxed-expression/canonical.d.ts +1 -1
  74. package/dist/types/compute-engine/boxed-expression/compare.d.ts +1 -1
  75. package/dist/types/compute-engine/boxed-expression/constants.d.ts +1 -1
  76. package/dist/types/compute-engine/boxed-expression/expand.d.ts +1 -1
  77. package/dist/types/compute-engine/boxed-expression/expression-map.d.ts +1 -1
  78. package/dist/types/compute-engine/boxed-expression/factor.d.ts +1 -1
  79. package/dist/types/compute-engine/boxed-expression/flatten.d.ts +1 -1
  80. package/dist/types/compute-engine/boxed-expression/hold.d.ts +1 -1
  81. package/dist/types/compute-engine/boxed-expression/inequality-bounds.d.ts +1 -1
  82. package/dist/types/compute-engine/boxed-expression/init-lazy-refs.d.ts +1 -1
  83. package/dist/types/compute-engine/boxed-expression/invisible-operator.d.ts +1 -1
  84. package/dist/types/compute-engine/boxed-expression/match.d.ts +1 -1
  85. package/dist/types/compute-engine/boxed-expression/negate.d.ts +1 -1
  86. package/dist/types/compute-engine/boxed-expression/numerics.d.ts +1 -1
  87. package/dist/types/compute-engine/boxed-expression/order.d.ts +1 -1
  88. package/dist/types/compute-engine/boxed-expression/pattern-utils.d.ts +1 -1
  89. package/dist/types/compute-engine/boxed-expression/polynomial-degree.d.ts +1 -1
  90. package/dist/types/compute-engine/boxed-expression/polynomials.d.ts +1 -1
  91. package/dist/types/compute-engine/boxed-expression/predicates.d.ts +1 -1
  92. package/dist/types/compute-engine/boxed-expression/rules.d.ts +1 -1
  93. package/dist/types/compute-engine/boxed-expression/serialize.d.ts +1 -1
  94. package/dist/types/compute-engine/boxed-expression/sgn.d.ts +1 -1
  95. package/dist/types/compute-engine/boxed-expression/simplify.d.ts +1 -1
  96. package/dist/types/compute-engine/boxed-expression/solve-linear-system.d.ts +1 -1
  97. package/dist/types/compute-engine/boxed-expression/solve.d.ts +1 -1
  98. package/dist/types/compute-engine/boxed-expression/stochastic-equal.d.ts +1 -1
  99. package/dist/types/compute-engine/boxed-expression/trigonometry.d.ts +1 -1
  100. package/dist/types/compute-engine/boxed-expression/type-guards.d.ts +1 -1
  101. package/dist/types/compute-engine/boxed-expression/utils.d.ts +1 -1
  102. package/dist/types/compute-engine/boxed-expression/validate.d.ts +1 -1
  103. package/dist/types/compute-engine/collection-utils.d.ts +1 -1
  104. package/dist/types/compute-engine/compilation/base-compiler.d.ts +55 -6
  105. package/dist/types/compute-engine/compilation/compile-expression.d.ts +1 -1
  106. package/dist/types/compute-engine/compilation/constant-folding.d.ts +1 -1
  107. package/dist/types/compute-engine/compilation/glsl-target.d.ts +1 -1
  108. package/dist/types/compute-engine/compilation/gpu-target.d.ts +1 -1
  109. package/dist/types/compute-engine/compilation/interval-javascript-target.d.ts +1 -1
  110. package/dist/types/compute-engine/compilation/javascript-target.d.ts +1 -1
  111. package/dist/types/compute-engine/compilation/python-target.d.ts +1 -1
  112. package/dist/types/compute-engine/compilation/types.d.ts +1 -1
  113. package/dist/types/compute-engine/compilation/wgsl-target.d.ts +1 -1
  114. package/dist/types/compute-engine/cost-function.d.ts +1 -1
  115. package/dist/types/compute-engine/engine-assumptions.d.ts +1 -1
  116. package/dist/types/compute-engine/engine-cache.d.ts +1 -1
  117. package/dist/types/compute-engine/engine-common-symbols.d.ts +1 -1
  118. package/dist/types/compute-engine/engine-compilation-targets.d.ts +1 -1
  119. package/dist/types/compute-engine/engine-configuration-lifecycle.d.ts +1 -1
  120. package/dist/types/compute-engine/engine-declarations.d.ts +1 -1
  121. package/dist/types/compute-engine/engine-expression-entrypoints.d.ts +1 -1
  122. package/dist/types/compute-engine/engine-extension-contracts.d.ts +1 -1
  123. package/dist/types/compute-engine/engine-library-bootstrap.d.ts +1 -1
  124. package/dist/types/compute-engine/engine-numeric-configuration.d.ts +1 -1
  125. package/dist/types/compute-engine/engine-runtime-state.d.ts +1 -1
  126. package/dist/types/compute-engine/engine-scope.d.ts +1 -1
  127. package/dist/types/compute-engine/engine-sequences.d.ts +1 -1
  128. package/dist/types/compute-engine/engine-simplification-rules.d.ts +1 -1
  129. package/dist/types/compute-engine/engine-startup-coordinator.d.ts +1 -1
  130. package/dist/types/compute-engine/engine-type-resolver.d.ts +1 -1
  131. package/dist/types/compute-engine/engine-validation-entrypoints.d.ts +1 -1
  132. package/dist/types/compute-engine/free-functions.d.ts +1 -1
  133. package/dist/types/compute-engine/function-utils.d.ts +1 -1
  134. package/dist/types/compute-engine/global-types.d.ts +1 -1
  135. package/dist/types/compute-engine/index.d.ts +3 -2
  136. package/dist/types/compute-engine/interval/arithmetic.d.ts +1 -1
  137. package/dist/types/compute-engine/interval/comparison.d.ts +1 -1
  138. package/dist/types/compute-engine/interval/elementary.d.ts +1 -1
  139. package/dist/types/compute-engine/interval/index.d.ts +1 -1
  140. package/dist/types/compute-engine/interval/trigonometric.d.ts +1 -1
  141. package/dist/types/compute-engine/interval/types.d.ts +1 -1
  142. package/dist/types/compute-engine/interval/util.d.ts +1 -1
  143. package/dist/types/compute-engine/latex-syntax/dictionary/default-dictionary.d.ts +1 -1
  144. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-algebra.d.ts +1 -1
  145. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-arithmetic.d.ts +1 -1
  146. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-calculus.d.ts +1 -1
  147. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-colors.d.ts +1 -1
  148. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-complex.d.ts +1 -1
  149. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-core.d.ts +1 -1
  150. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-linear-algebra.d.ts +1 -1
  151. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-logic.d.ts +1 -1
  152. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-other.d.ts +1 -1
  153. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-relational-operators.d.ts +1 -1
  154. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-sets.d.ts +1 -1
  155. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-statistics.d.ts +1 -1
  156. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-symbols.d.ts +1 -1
  157. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-trigonometry.d.ts +1 -1
  158. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-units.d.ts +1 -1
  159. package/dist/types/compute-engine/latex-syntax/dictionary/definitions.d.ts +1 -1
  160. package/dist/types/compute-engine/latex-syntax/dictionary/indexed-types.d.ts +1 -1
  161. package/dist/types/compute-engine/latex-syntax/latex-syntax.d.ts +1 -1
  162. package/dist/types/compute-engine/latex-syntax/parse-number.d.ts +1 -1
  163. package/dist/types/compute-engine/latex-syntax/parse-symbol.d.ts +1 -1
  164. package/dist/types/compute-engine/latex-syntax/parse.d.ts +1 -1
  165. package/dist/types/compute-engine/latex-syntax/serialize-dms.d.ts +1 -1
  166. package/dist/types/compute-engine/latex-syntax/serialize-number.d.ts +1 -1
  167. package/dist/types/compute-engine/latex-syntax/serializer-style.d.ts +1 -1
  168. package/dist/types/compute-engine/latex-syntax/serializer.d.ts +1 -1
  169. package/dist/types/compute-engine/latex-syntax/tokenizer.d.ts +1 -1
  170. package/dist/types/compute-engine/latex-syntax/types.d.ts +40 -1
  171. package/dist/types/compute-engine/latex-syntax/utils.d.ts +1 -1
  172. package/dist/types/compute-engine/library/arithmetic.d.ts +1 -1
  173. package/dist/types/compute-engine/library/calculus.d.ts +1 -1
  174. package/dist/types/compute-engine/library/collections.d.ts +5 -3
  175. package/dist/types/compute-engine/library/colors.d.ts +1 -1
  176. package/dist/types/compute-engine/library/combinatorics.d.ts +1 -1
  177. package/dist/types/compute-engine/library/complex.d.ts +1 -1
  178. package/dist/types/compute-engine/library/control-structures.d.ts +1 -1
  179. package/dist/types/compute-engine/library/core.d.ts +1 -1
  180. package/dist/types/compute-engine/library/fractals.d.ts +1 -1
  181. package/dist/types/compute-engine/library/library.d.ts +1 -1
  182. package/dist/types/compute-engine/library/linear-algebra.d.ts +1 -1
  183. package/dist/types/compute-engine/library/logic-analysis.d.ts +1 -1
  184. package/dist/types/compute-engine/library/logic.d.ts +1 -1
  185. package/dist/types/compute-engine/library/number-theory.d.ts +1 -1
  186. package/dist/types/compute-engine/library/polynomials.d.ts +1 -1
  187. package/dist/types/compute-engine/library/quantity-arithmetic.d.ts +1 -1
  188. package/dist/types/compute-engine/library/random-expression.d.ts +1 -1
  189. package/dist/types/compute-engine/library/relational-operator.d.ts +1 -1
  190. package/dist/types/compute-engine/library/sets.d.ts +1 -1
  191. package/dist/types/compute-engine/library/statistics.d.ts +1 -1
  192. package/dist/types/compute-engine/library/trigonometry.d.ts +1 -1
  193. package/dist/types/compute-engine/library/type-handlers.d.ts +1 -1
  194. package/dist/types/compute-engine/library/unit-data.d.ts +1 -1
  195. package/dist/types/compute-engine/library/units.d.ts +1 -1
  196. package/dist/types/compute-engine/library/utils.d.ts +1 -1
  197. package/dist/types/compute-engine/numeric-value/big-numeric-value.d.ts +1 -1
  198. package/dist/types/compute-engine/numeric-value/exact-numeric-value.d.ts +1 -1
  199. package/dist/types/compute-engine/numeric-value/machine-numeric-value.d.ts +1 -1
  200. package/dist/types/compute-engine/numeric-value/types.d.ts +1 -1
  201. package/dist/types/compute-engine/numerics/bigint.d.ts +1 -1
  202. package/dist/types/compute-engine/numerics/expression.d.ts +1 -1
  203. package/dist/types/compute-engine/numerics/interval.d.ts +1 -1
  204. package/dist/types/compute-engine/numerics/linear-algebra.d.ts +1 -1
  205. package/dist/types/compute-engine/numerics/monte-carlo.d.ts +1 -1
  206. package/dist/types/compute-engine/numerics/numeric-bigint.d.ts +1 -1
  207. package/dist/types/compute-engine/numerics/numeric-bignum.d.ts +1 -1
  208. package/dist/types/compute-engine/numerics/numeric-complex.d.ts +1 -1
  209. package/dist/types/compute-engine/numerics/numeric.d.ts +1 -1
  210. package/dist/types/compute-engine/numerics/primes.d.ts +1 -1
  211. package/dist/types/compute-engine/numerics/rationals.d.ts +1 -1
  212. package/dist/types/compute-engine/numerics/richardson.d.ts +1 -1
  213. package/dist/types/compute-engine/numerics/special-functions.d.ts +1 -1
  214. package/dist/types/compute-engine/numerics/statistics.d.ts +1 -1
  215. package/dist/types/compute-engine/numerics/strings.d.ts +1 -1
  216. package/dist/types/compute-engine/numerics/types.d.ts +1 -1
  217. package/dist/types/compute-engine/numerics/unit-data.d.ts +1 -1
  218. package/dist/types/compute-engine/oeis.d.ts +1 -1
  219. package/dist/types/compute-engine/sequence.d.ts +1 -1
  220. package/dist/types/compute-engine/symbolic/antiderivative.d.ts +1 -1
  221. package/dist/types/compute-engine/symbolic/derivative.d.ts +1 -1
  222. package/dist/types/compute-engine/symbolic/distribute.d.ts +1 -1
  223. package/dist/types/compute-engine/symbolic/fu-cost.d.ts +1 -1
  224. package/dist/types/compute-engine/symbolic/fu-transforms.d.ts +1 -1
  225. package/dist/types/compute-engine/symbolic/fu.d.ts +1 -1
  226. package/dist/types/compute-engine/symbolic/logic-utils.d.ts +1 -1
  227. package/dist/types/compute-engine/symbolic/simplify-abs.d.ts +1 -1
  228. package/dist/types/compute-engine/symbolic/simplify-divide.d.ts +1 -1
  229. package/dist/types/compute-engine/symbolic/simplify-factorial.d.ts +1 -1
  230. package/dist/types/compute-engine/symbolic/simplify-hyperbolic.d.ts +1 -1
  231. package/dist/types/compute-engine/symbolic/simplify-infinity.d.ts +1 -1
  232. package/dist/types/compute-engine/symbolic/simplify-log.d.ts +1 -1
  233. package/dist/types/compute-engine/symbolic/simplify-logic.d.ts +1 -1
  234. package/dist/types/compute-engine/symbolic/simplify-power.d.ts +1 -1
  235. package/dist/types/compute-engine/symbolic/simplify-product.d.ts +1 -1
  236. package/dist/types/compute-engine/symbolic/simplify-rules.d.ts +1 -1
  237. package/dist/types/compute-engine/symbolic/simplify-sum.d.ts +1 -1
  238. package/dist/types/compute-engine/symbolic/simplify-trig.d.ts +1 -1
  239. package/dist/types/compute-engine/tensor/tensor-fields.d.ts +1 -1
  240. package/dist/types/compute-engine/tensor/tensors.d.ts +1 -1
  241. package/dist/types/compute-engine/types-definitions.d.ts +1 -1
  242. package/dist/types/compute-engine/types-engine.d.ts +18 -1
  243. package/dist/types/compute-engine/types-evaluation.d.ts +1 -1
  244. package/dist/types/compute-engine/types-expression.d.ts +1 -1
  245. package/dist/types/compute-engine/types-kernel-evaluation.d.ts +1 -1
  246. package/dist/types/compute-engine/types-kernel-serialization.d.ts +1 -1
  247. package/dist/types/compute-engine/types-serialization.d.ts +1 -1
  248. package/dist/types/compute-engine/types.d.ts +1 -1
  249. package/dist/types/compute-engine.d.ts +1 -1
  250. package/dist/types/core.d.ts +1 -1
  251. package/dist/types/interval.d.ts +1 -1
  252. package/dist/types/latex-syntax.d.ts +2 -2
  253. package/dist/types/math-json/symbols.d.ts +1 -1
  254. package/dist/types/math-json/types.d.ts +1 -1
  255. package/dist/types/math-json/utils.d.ts +1 -1
  256. package/dist/types/math-json.d.ts +2 -2
  257. package/dist/types/numerics.d.ts +1 -1
  258. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- /** Compute Engine 0.56.0 */
1
+ /** Compute Engine 0.57.0 */
2
2
 
3
3
  // src/compute-engine/interval/util.ts
4
4
  function ok(value) {
@@ -5922,6 +5922,64 @@ function parseQuantifier(kind) {
5922
5922
  }
5923
5923
 
5924
5924
  // src/compute-engine/latex-syntax/dictionary/definitions-core.ts
5925
+ var COMPONENT_ACCESS_HEADS = {
5926
+ x: "First",
5927
+ y: "Second",
5928
+ z: "Third",
5929
+ real: "Real",
5930
+ re: "Real",
5931
+ imag: "Imaginary",
5932
+ im: "Imaginary",
5933
+ count: "Length",
5934
+ total: "Sum",
5935
+ max: "Max",
5936
+ min: "Min"
5937
+ };
5938
+ function memberHead(name) {
5939
+ return COMPONENT_ACCESS_HEADS[name] ?? null;
5940
+ }
5941
+ function parseComponentAccess(parser, lhs) {
5942
+ parser.skipVisualSpace();
5943
+ if (parser.match("\\operatorname")) {
5944
+ const name = parser.parseStringGroup();
5945
+ if (name === null) return null;
5946
+ const head = memberHead(name.trim());
5947
+ if (head === null) return null;
5948
+ return [head, lhs];
5949
+ }
5950
+ const tok = parser.peek;
5951
+ if (typeof tok === "string" && tok.startsWith("\\")) {
5952
+ const bare = tok.slice(1);
5953
+ const head = memberHead(bare);
5954
+ if (head !== null) {
5955
+ parser.nextToken();
5956
+ return [head, lhs];
5957
+ }
5958
+ return null;
5959
+ }
5960
+ if (typeof tok === "string" && /^[a-zA-Z]$/.test(tok)) {
5961
+ const head = memberHead(tok);
5962
+ if (head === null) return null;
5963
+ parser.nextToken();
5964
+ return [head, lhs];
5965
+ }
5966
+ return null;
5967
+ }
5968
+ function parseWhenRestriction(parser, lhs, close) {
5969
+ parser.addBoundary(close);
5970
+ parser.skipVisualSpace();
5971
+ const cond = parser.parseExpression({ minPrec: 0 });
5972
+ if (cond === null) {
5973
+ parser.removeBoundary();
5974
+ return null;
5975
+ }
5976
+ parser.skipVisualSpace();
5977
+ if (!parser.matchBoundary()) {
5978
+ parser.removeBoundary();
5979
+ return null;
5980
+ }
5981
+ return ["When", lhs, cond];
5982
+ }
5925
5983
  function parseSequence(parser, terminator, lhs, prec, sep) {
5926
5984
  if (terminator && terminator.minPrec >= prec) return null;
5927
5985
  const result = lhs ? [lhs] : ["Nothing"];
@@ -6393,6 +6451,15 @@ var DEFINITIONS_CORE = [
6393
6451
  }
6394
6452
  },
6395
6453
  { name: "LatexTokens", serialize: serializeLatexTokens },
6454
+ // Component-access postfix: expr.member (C3)
6455
+ // The '.' trigger is consumed before the parse function is called.
6456
+ // Precedence 850 > 810 (At/indexing) so .x chains tightly.
6457
+ {
6458
+ kind: "postfix",
6459
+ precedence: 850,
6460
+ latexTrigger: ["."],
6461
+ parse: parseComponentAccess
6462
+ },
6396
6463
  {
6397
6464
  name: "At",
6398
6465
  kind: "postfix",
@@ -6413,6 +6480,29 @@ var DEFINITIONS_CORE = [
6413
6480
  latexTrigger: ["\\left", "\\lbrack"],
6414
6481
  parse: parseAt("\\right", "\\rbrack")
6415
6482
  },
6483
+ // When-restriction: `expr\left\{cond\right\}` → `When(expr, cond)` (D3)
6484
+ {
6485
+ name: "When",
6486
+ kind: "postfix",
6487
+ precedence: 800,
6488
+ latexTrigger: ["\\left", "\\{"],
6489
+ parse: (parser, lhs) => parseWhenRestriction(parser, lhs, ["\\right", "\\}"]),
6490
+ serialize: (serializer, expr) => {
6491
+ const e = operand(expr, 1);
6492
+ const cond = operand(expr, 2);
6493
+ if (!e || !cond) return "";
6494
+ const clauses = operator(cond) === "And" ? operands(cond) ?? [] : [cond];
6495
+ const inner = clauses.map((c) => `\\left\\{${serializer.serialize(c)}\\right\\}`).join("");
6496
+ return `${serializer.serialize(e)}${inner}`;
6497
+ }
6498
+ },
6499
+ // When-restriction: bare `expr\{cond\}` → `When(expr, cond)`
6500
+ {
6501
+ kind: "postfix",
6502
+ precedence: 800,
6503
+ latexTrigger: ["\\{"],
6504
+ parse: (parser, lhs) => parseWhenRestriction(parser, lhs, ["\\}"])
6505
+ },
6416
6506
  {
6417
6507
  kind: "postfix",
6418
6508
  latexTrigger: ["_"],
@@ -6495,6 +6585,29 @@ var DEFINITIONS_CORE = [
6495
6585
  return "";
6496
6586
  }
6497
6587
  },
6588
+ // Additional triggers for Range: `...`, `\ldots`, and `\dots` are
6589
+ // equivalent to `..` when used as infix operators (e.g. `[1...9]`).
6590
+ // No `name` field here — names must be unique per the dictionary rules;
6591
+ // the first Range entry owns the name. When there is no LHS the symbol
6592
+ // entries near the top of the file still fire (ContinuationPlaceholder).
6593
+ {
6594
+ latexTrigger: [".", ".", "."],
6595
+ kind: "infix",
6596
+ precedence: 800,
6597
+ parse: parseRange
6598
+ },
6599
+ {
6600
+ latexTrigger: ["\\ldots"],
6601
+ kind: "infix",
6602
+ precedence: 800,
6603
+ parse: parseRange
6604
+ },
6605
+ {
6606
+ latexTrigger: ["\\dots"],
6607
+ kind: "infix",
6608
+ precedence: 800,
6609
+ parse: parseRange
6610
+ },
6498
6611
  {
6499
6612
  latexTrigger: [";"],
6500
6613
  kind: "infix",
@@ -6679,13 +6792,24 @@ var DEFINITIONS_CORE = [
6679
6792
  const args = operands(expr);
6680
6793
  if (!args || args.length < 2) return "";
6681
6794
  const body = args[0];
6682
- const indexing = args[1];
6683
- if (operator(indexing) === "Element") {
6684
- const index = operand(indexing, 1);
6685
- const range = operand(indexing, 2);
6686
- if (operator(range) === "Range") {
6687
- const lo = operand(range, 1);
6688
- const hi = operand(range, 2);
6795
+ const elements = args.slice(1);
6796
+ const allElements = elements.every((e) => operator(e) === "Element");
6797
+ if (!allElements) {
6798
+ return joinLatex([
6799
+ "\\operatorname{Loop}(",
6800
+ serializer.serialize(body),
6801
+ ", ",
6802
+ serializer.serialize(elements[0]),
6803
+ ")"
6804
+ ]);
6805
+ }
6806
+ if (elements.length === 1) {
6807
+ const elem = elements[0];
6808
+ const index = operand(elem, 1);
6809
+ const coll = operand(elem, 2);
6810
+ if (operator(coll) === "Range") {
6811
+ const lo = operand(coll, 1);
6812
+ const hi = operand(coll, 2);
6689
6813
  return joinLatex([
6690
6814
  "\\text{for }",
6691
6815
  serializer.serialize(index),
@@ -6697,13 +6821,27 @@ var DEFINITIONS_CORE = [
6697
6821
  serializer.serialize(body)
6698
6822
  ]);
6699
6823
  }
6824
+ return joinLatex([
6825
+ serializer.serialize(body),
6826
+ " \\operatorname{for} ",
6827
+ serializer.serialize(index),
6828
+ " = ",
6829
+ serializer.serialize(coll)
6830
+ ]);
6700
6831
  }
6832
+ const bindings = elements.map((elem) => {
6833
+ const name = operand(elem, 1);
6834
+ const coll = operand(elem, 2);
6835
+ return joinLatex([
6836
+ serializer.serialize(name),
6837
+ " = ",
6838
+ serializer.serialize(coll)
6839
+ ]);
6840
+ }).join(", ");
6701
6841
  return joinLatex([
6702
- "\\operatorname{Loop}(",
6703
6842
  serializer.serialize(body),
6704
- ", ",
6705
- serializer.serialize(indexing),
6706
- ")"
6843
+ " \\operatorname{for} ",
6844
+ bindings
6707
6845
  ]);
6708
6846
  }
6709
6847
  },
@@ -6736,6 +6874,18 @@ var DEFINITIONS_CORE = [
6736
6874
  precedence: 245,
6737
6875
  parse: (parser, until) => parseForExpression(parser, until)
6738
6876
  },
6877
+ // \operatorname{for} as postfix infix (list comprehension):
6878
+ // `body \operatorname{for} x = L_1, y = L_2`
6879
+ // Precedence 19 — just below comma (20) so the body is allowed to use
6880
+ // any operator (including comma sequencing) up to the keyword, and the
6881
+ // bindings can be comma-separated below us.
6882
+ {
6883
+ symbolTrigger: "for",
6884
+ kind: "infix",
6885
+ associativity: "none",
6886
+ precedence: 19,
6887
+ parse: (parser, lhs, until) => parseForComprehension(parser, lhs, until)
6888
+ },
6739
6889
  // \operatorname{break}
6740
6890
  {
6741
6891
  symbolTrigger: "break",
@@ -6940,7 +7090,10 @@ var DEFINITIONS_CORE = [
6940
7090
  if (!sym || !parser.getSymbolType(sym).matches("function")) return null;
6941
7091
  parser.addBoundary([")"]);
6942
7092
  const expr = parser.parseExpression(until);
6943
- if (!parser.matchBoundary()) return null;
7093
+ if (!parser.matchBoundary()) {
7094
+ parser.removeBoundary();
7095
+ return null;
7096
+ }
6944
7097
  if (!parser.match("<}>")) return null;
6945
7098
  return ["Derivative", lhs, expr];
6946
7099
  }
@@ -7381,7 +7534,12 @@ function parseBrackets(parser, body) {
7381
7534
  if (isEmptySequence(body)) return ["List"];
7382
7535
  const h = operator(body);
7383
7536
  if (h === "Range" || h === "Linspace") return body;
7384
- if (h === "Sequence") return ["List", ...operands(body)];
7537
+ if (h === "Sequence") {
7538
+ const elems = operands(body);
7539
+ const inferred = tryInferRangeFromElements(elems, parser);
7540
+ if (inferred) return inferred;
7541
+ return ["List", ...elems];
7542
+ }
7385
7543
  if (h === "Delimiter") {
7386
7544
  const delim = stringValue(operand(body, 2)) ?? "...";
7387
7545
  if (delim === ";" || delim === ".;.") {
@@ -7394,12 +7552,37 @@ function parseBrackets(parser, body) {
7394
7552
  }
7395
7553
  if (delim === "," || delim === ".,.") {
7396
7554
  body = operand(body, 1);
7397
- if (operator(body) === "Sequence") return ["List", ...operands(body)];
7555
+ if (operator(body) === "Sequence") {
7556
+ const elems = operands(body);
7557
+ const inferred = tryInferRangeFromElements(elems, parser);
7558
+ if (inferred) return inferred;
7559
+ return ["List", ...elems];
7560
+ }
7398
7561
  return ["List", body ?? "Nothing"];
7399
7562
  }
7400
7563
  }
7401
7564
  return ["List", body];
7402
7565
  }
7566
+ function tryInferRangeFromElements(elems, parser) {
7567
+ if (elems.length < 4) return null;
7568
+ const penultimate = elems[elems.length - 2];
7569
+ if (symbol(penultimate) !== "ContinuationPlaceholder") return null;
7570
+ const samples = elems.slice(0, -2);
7571
+ const endExpr = elems[elems.length - 1];
7572
+ if (samples.length < 2) return null;
7573
+ const sampleNums = samples.map(machineValue);
7574
+ if (sampleNums.some((n) => n === null)) return null;
7575
+ const nums = sampleNums;
7576
+ const step = nums[nums.length - 1] - nums[nums.length - 2];
7577
+ const tol = parser.options.tolerance;
7578
+ if (Math.abs(step) < tol)
7579
+ return parser.error("degenerate-range-step", parser.index);
7580
+ for (let i = 1; i < nums.length; i++) {
7581
+ if (Math.abs(nums[i] - nums[i - 1] - step) > tol)
7582
+ return parser.error("inconsistent-range-samples", parser.index);
7583
+ }
7584
+ return ["Range", nums[0], endExpr, step];
7585
+ }
7403
7586
  function serializeList(serializer, expr) {
7404
7587
  if (nops(expr) > 1 && operands(expr).every((x) => {
7405
7588
  const op = operator(x);
@@ -7651,6 +7834,35 @@ function parseForExpression(parser, until) {
7651
7834
  ["Element", index, ["Range", lower, upper]]
7652
7835
  ];
7653
7836
  }
7837
+ function parseForComprehension(parser, lhs, until) {
7838
+ const bindingTerminator = {
7839
+ minPrec: 21,
7840
+ // Above comma (20) and ; (19), so `x = L_1` is captured whole
7841
+ condition: (p) => {
7842
+ if (until?.condition?.(p)) return true;
7843
+ const saved = p.index;
7844
+ p.skipVisualSpace();
7845
+ const isComma = p.peek === ",";
7846
+ p.index = saved;
7847
+ return isComma;
7848
+ }
7849
+ };
7850
+ const elements = [];
7851
+ do {
7852
+ parser.skipVisualSpace();
7853
+ const binding = parser.parseExpression(bindingTerminator);
7854
+ if (binding === null) break;
7855
+ const op = operator(binding);
7856
+ if (op !== "Equal" && op !== "Assign") return null;
7857
+ const name = operand(binding, 1);
7858
+ const list = operand(binding, 2);
7859
+ if (!name || !list) return null;
7860
+ elements.push(["Element", name, list]);
7861
+ parser.skipVisualSpace();
7862
+ } while (parser.match(","));
7863
+ if (elements.length === 0) return null;
7864
+ return ["Loop", lhs, ...elements];
7865
+ }
7654
7866
  function parseWhereExpression(parser, lhs, until) {
7655
7867
  const bindingTerminator = {
7656
7868
  minPrec: 21,
@@ -13534,7 +13746,7 @@ var IntervalArithmetic = {
13534
13746
  };
13535
13747
 
13536
13748
  // src/interval.ts
13537
- var version = "0.56.0";
13749
+ var version = "0.57.0";
13538
13750
  export {
13539
13751
  IntervalArithmetic,
13540
13752
  _mul,