@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
- /** Interval 0.56.0 */
1
+ /** Interval 0.57.0 */
2
2
  (function(global,factory){typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'],factory):(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Interval = {}));})(this, (function (exports) { 'use strict';
3
3
  var Interval = (() => {
4
4
  var __defProp = Object.defineProperty;
@@ -6041,6 +6041,64 @@ var Interval = (() => {
6041
6041
  }
6042
6042
 
6043
6043
  // src/compute-engine/latex-syntax/dictionary/definitions-core.ts
6044
+ var COMPONENT_ACCESS_HEADS = {
6045
+ x: "First",
6046
+ y: "Second",
6047
+ z: "Third",
6048
+ real: "Real",
6049
+ re: "Real",
6050
+ imag: "Imaginary",
6051
+ im: "Imaginary",
6052
+ count: "Length",
6053
+ total: "Sum",
6054
+ max: "Max",
6055
+ min: "Min"
6056
+ };
6057
+ function memberHead(name) {
6058
+ return COMPONENT_ACCESS_HEADS[name] ?? null;
6059
+ }
6060
+ function parseComponentAccess(parser, lhs) {
6061
+ parser.skipVisualSpace();
6062
+ if (parser.match("\\operatorname")) {
6063
+ const name = parser.parseStringGroup();
6064
+ if (name === null) return null;
6065
+ const head = memberHead(name.trim());
6066
+ if (head === null) return null;
6067
+ return [head, lhs];
6068
+ }
6069
+ const tok = parser.peek;
6070
+ if (typeof tok === "string" && tok.startsWith("\\")) {
6071
+ const bare = tok.slice(1);
6072
+ const head = memberHead(bare);
6073
+ if (head !== null) {
6074
+ parser.nextToken();
6075
+ return [head, lhs];
6076
+ }
6077
+ return null;
6078
+ }
6079
+ if (typeof tok === "string" && /^[a-zA-Z]$/.test(tok)) {
6080
+ const head = memberHead(tok);
6081
+ if (head === null) return null;
6082
+ parser.nextToken();
6083
+ return [head, lhs];
6084
+ }
6085
+ return null;
6086
+ }
6087
+ function parseWhenRestriction(parser, lhs, close) {
6088
+ parser.addBoundary(close);
6089
+ parser.skipVisualSpace();
6090
+ const cond = parser.parseExpression({ minPrec: 0 });
6091
+ if (cond === null) {
6092
+ parser.removeBoundary();
6093
+ return null;
6094
+ }
6095
+ parser.skipVisualSpace();
6096
+ if (!parser.matchBoundary()) {
6097
+ parser.removeBoundary();
6098
+ return null;
6099
+ }
6100
+ return ["When", lhs, cond];
6101
+ }
6044
6102
  function parseSequence(parser, terminator, lhs, prec, sep) {
6045
6103
  if (terminator && terminator.minPrec >= prec) return null;
6046
6104
  const result = lhs ? [lhs] : ["Nothing"];
@@ -6512,6 +6570,15 @@ var Interval = (() => {
6512
6570
  }
6513
6571
  },
6514
6572
  { name: "LatexTokens", serialize: serializeLatexTokens },
6573
+ // Component-access postfix: expr.member (C3)
6574
+ // The '.' trigger is consumed before the parse function is called.
6575
+ // Precedence 850 > 810 (At/indexing) so .x chains tightly.
6576
+ {
6577
+ kind: "postfix",
6578
+ precedence: 850,
6579
+ latexTrigger: ["."],
6580
+ parse: parseComponentAccess
6581
+ },
6515
6582
  {
6516
6583
  name: "At",
6517
6584
  kind: "postfix",
@@ -6532,6 +6599,29 @@ var Interval = (() => {
6532
6599
  latexTrigger: ["\\left", "\\lbrack"],
6533
6600
  parse: parseAt("\\right", "\\rbrack")
6534
6601
  },
6602
+ // When-restriction: `expr\left\{cond\right\}` → `When(expr, cond)` (D3)
6603
+ {
6604
+ name: "When",
6605
+ kind: "postfix",
6606
+ precedence: 800,
6607
+ latexTrigger: ["\\left", "\\{"],
6608
+ parse: (parser, lhs) => parseWhenRestriction(parser, lhs, ["\\right", "\\}"]),
6609
+ serialize: (serializer, expr) => {
6610
+ const e = operand(expr, 1);
6611
+ const cond = operand(expr, 2);
6612
+ if (!e || !cond) return "";
6613
+ const clauses = operator(cond) === "And" ? operands(cond) ?? [] : [cond];
6614
+ const inner = clauses.map((c) => `\\left\\{${serializer.serialize(c)}\\right\\}`).join("");
6615
+ return `${serializer.serialize(e)}${inner}`;
6616
+ }
6617
+ },
6618
+ // When-restriction: bare `expr\{cond\}` → `When(expr, cond)`
6619
+ {
6620
+ kind: "postfix",
6621
+ precedence: 800,
6622
+ latexTrigger: ["\\{"],
6623
+ parse: (parser, lhs) => parseWhenRestriction(parser, lhs, ["\\}"])
6624
+ },
6535
6625
  {
6536
6626
  kind: "postfix",
6537
6627
  latexTrigger: ["_"],
@@ -6614,6 +6704,29 @@ var Interval = (() => {
6614
6704
  return "";
6615
6705
  }
6616
6706
  },
6707
+ // Additional triggers for Range: `...`, `\ldots`, and `\dots` are
6708
+ // equivalent to `..` when used as infix operators (e.g. `[1...9]`).
6709
+ // No `name` field here — names must be unique per the dictionary rules;
6710
+ // the first Range entry owns the name. When there is no LHS the symbol
6711
+ // entries near the top of the file still fire (ContinuationPlaceholder).
6712
+ {
6713
+ latexTrigger: [".", ".", "."],
6714
+ kind: "infix",
6715
+ precedence: 800,
6716
+ parse: parseRange
6717
+ },
6718
+ {
6719
+ latexTrigger: ["\\ldots"],
6720
+ kind: "infix",
6721
+ precedence: 800,
6722
+ parse: parseRange
6723
+ },
6724
+ {
6725
+ latexTrigger: ["\\dots"],
6726
+ kind: "infix",
6727
+ precedence: 800,
6728
+ parse: parseRange
6729
+ },
6617
6730
  {
6618
6731
  latexTrigger: [";"],
6619
6732
  kind: "infix",
@@ -6798,13 +6911,24 @@ var Interval = (() => {
6798
6911
  const args = operands(expr);
6799
6912
  if (!args || args.length < 2) return "";
6800
6913
  const body = args[0];
6801
- const indexing = args[1];
6802
- if (operator(indexing) === "Element") {
6803
- const index = operand(indexing, 1);
6804
- const range = operand(indexing, 2);
6805
- if (operator(range) === "Range") {
6806
- const lo = operand(range, 1);
6807
- const hi = operand(range, 2);
6914
+ const elements = args.slice(1);
6915
+ const allElements = elements.every((e) => operator(e) === "Element");
6916
+ if (!allElements) {
6917
+ return joinLatex([
6918
+ "\\operatorname{Loop}(",
6919
+ serializer.serialize(body),
6920
+ ", ",
6921
+ serializer.serialize(elements[0]),
6922
+ ")"
6923
+ ]);
6924
+ }
6925
+ if (elements.length === 1) {
6926
+ const elem = elements[0];
6927
+ const index = operand(elem, 1);
6928
+ const coll = operand(elem, 2);
6929
+ if (operator(coll) === "Range") {
6930
+ const lo = operand(coll, 1);
6931
+ const hi = operand(coll, 2);
6808
6932
  return joinLatex([
6809
6933
  "\\text{for }",
6810
6934
  serializer.serialize(index),
@@ -6816,13 +6940,27 @@ var Interval = (() => {
6816
6940
  serializer.serialize(body)
6817
6941
  ]);
6818
6942
  }
6943
+ return joinLatex([
6944
+ serializer.serialize(body),
6945
+ " \\operatorname{for} ",
6946
+ serializer.serialize(index),
6947
+ " = ",
6948
+ serializer.serialize(coll)
6949
+ ]);
6819
6950
  }
6951
+ const bindings = elements.map((elem) => {
6952
+ const name = operand(elem, 1);
6953
+ const coll = operand(elem, 2);
6954
+ return joinLatex([
6955
+ serializer.serialize(name),
6956
+ " = ",
6957
+ serializer.serialize(coll)
6958
+ ]);
6959
+ }).join(", ");
6820
6960
  return joinLatex([
6821
- "\\operatorname{Loop}(",
6822
6961
  serializer.serialize(body),
6823
- ", ",
6824
- serializer.serialize(indexing),
6825
- ")"
6962
+ " \\operatorname{for} ",
6963
+ bindings
6826
6964
  ]);
6827
6965
  }
6828
6966
  },
@@ -6855,6 +6993,18 @@ var Interval = (() => {
6855
6993
  precedence: 245,
6856
6994
  parse: (parser, until) => parseForExpression(parser, until)
6857
6995
  },
6996
+ // \operatorname{for} as postfix infix (list comprehension):
6997
+ // `body \operatorname{for} x = L_1, y = L_2`
6998
+ // Precedence 19 — just below comma (20) so the body is allowed to use
6999
+ // any operator (including comma sequencing) up to the keyword, and the
7000
+ // bindings can be comma-separated below us.
7001
+ {
7002
+ symbolTrigger: "for",
7003
+ kind: "infix",
7004
+ associativity: "none",
7005
+ precedence: 19,
7006
+ parse: (parser, lhs, until) => parseForComprehension(parser, lhs, until)
7007
+ },
6858
7008
  // \operatorname{break}
6859
7009
  {
6860
7010
  symbolTrigger: "break",
@@ -7059,7 +7209,10 @@ var Interval = (() => {
7059
7209
  if (!sym || !parser.getSymbolType(sym).matches("function")) return null;
7060
7210
  parser.addBoundary([")"]);
7061
7211
  const expr = parser.parseExpression(until);
7062
- if (!parser.matchBoundary()) return null;
7212
+ if (!parser.matchBoundary()) {
7213
+ parser.removeBoundary();
7214
+ return null;
7215
+ }
7063
7216
  if (!parser.match("<}>")) return null;
7064
7217
  return ["Derivative", lhs, expr];
7065
7218
  }
@@ -7500,7 +7653,12 @@ var Interval = (() => {
7500
7653
  if (isEmptySequence(body)) return ["List"];
7501
7654
  const h = operator(body);
7502
7655
  if (h === "Range" || h === "Linspace") return body;
7503
- if (h === "Sequence") return ["List", ...operands(body)];
7656
+ if (h === "Sequence") {
7657
+ const elems = operands(body);
7658
+ const inferred = tryInferRangeFromElements(elems, parser);
7659
+ if (inferred) return inferred;
7660
+ return ["List", ...elems];
7661
+ }
7504
7662
  if (h === "Delimiter") {
7505
7663
  const delim = stringValue(operand(body, 2)) ?? "...";
7506
7664
  if (delim === ";" || delim === ".;.") {
@@ -7513,12 +7671,37 @@ var Interval = (() => {
7513
7671
  }
7514
7672
  if (delim === "," || delim === ".,.") {
7515
7673
  body = operand(body, 1);
7516
- if (operator(body) === "Sequence") return ["List", ...operands(body)];
7674
+ if (operator(body) === "Sequence") {
7675
+ const elems = operands(body);
7676
+ const inferred = tryInferRangeFromElements(elems, parser);
7677
+ if (inferred) return inferred;
7678
+ return ["List", ...elems];
7679
+ }
7517
7680
  return ["List", body ?? "Nothing"];
7518
7681
  }
7519
7682
  }
7520
7683
  return ["List", body];
7521
7684
  }
7685
+ function tryInferRangeFromElements(elems, parser) {
7686
+ if (elems.length < 4) return null;
7687
+ const penultimate = elems[elems.length - 2];
7688
+ if (symbol(penultimate) !== "ContinuationPlaceholder") return null;
7689
+ const samples = elems.slice(0, -2);
7690
+ const endExpr = elems[elems.length - 1];
7691
+ if (samples.length < 2) return null;
7692
+ const sampleNums = samples.map(machineValue);
7693
+ if (sampleNums.some((n) => n === null)) return null;
7694
+ const nums = sampleNums;
7695
+ const step = nums[nums.length - 1] - nums[nums.length - 2];
7696
+ const tol = parser.options.tolerance;
7697
+ if (Math.abs(step) < tol)
7698
+ return parser.error("degenerate-range-step", parser.index);
7699
+ for (let i = 1; i < nums.length; i++) {
7700
+ if (Math.abs(nums[i] - nums[i - 1] - step) > tol)
7701
+ return parser.error("inconsistent-range-samples", parser.index);
7702
+ }
7703
+ return ["Range", nums[0], endExpr, step];
7704
+ }
7522
7705
  function serializeList(serializer, expr) {
7523
7706
  if (nops(expr) > 1 && operands(expr).every((x) => {
7524
7707
  const op = operator(x);
@@ -7770,6 +7953,35 @@ var Interval = (() => {
7770
7953
  ["Element", index, ["Range", lower, upper]]
7771
7954
  ];
7772
7955
  }
7956
+ function parseForComprehension(parser, lhs, until) {
7957
+ const bindingTerminator = {
7958
+ minPrec: 21,
7959
+ // Above comma (20) and ; (19), so `x = L_1` is captured whole
7960
+ condition: (p) => {
7961
+ if (until?.condition?.(p)) return true;
7962
+ const saved = p.index;
7963
+ p.skipVisualSpace();
7964
+ const isComma = p.peek === ",";
7965
+ p.index = saved;
7966
+ return isComma;
7967
+ }
7968
+ };
7969
+ const elements = [];
7970
+ do {
7971
+ parser.skipVisualSpace();
7972
+ const binding = parser.parseExpression(bindingTerminator);
7973
+ if (binding === null) break;
7974
+ const op = operator(binding);
7975
+ if (op !== "Equal" && op !== "Assign") return null;
7976
+ const name = operand(binding, 1);
7977
+ const list = operand(binding, 2);
7978
+ if (!name || !list) return null;
7979
+ elements.push(["Element", name, list]);
7980
+ parser.skipVisualSpace();
7981
+ } while (parser.match(","));
7982
+ if (elements.length === 0) return null;
7983
+ return ["Loop", lhs, ...elements];
7984
+ }
7773
7985
  function parseWhereExpression(parser, lhs, until) {
7774
7986
  const bindingTerminator = {
7775
7987
  minPrec: 21,
@@ -13653,7 +13865,7 @@ var Interval = (() => {
13653
13865
  };
13654
13866
 
13655
13867
  // src/interval.ts
13656
- var version = "0.56.0";
13868
+ var version = "0.57.0";
13657
13869
  return __toCommonJS(interval_exports);
13658
13870
  })();
13659
13871
  /*! Bundled license information: