@cortex-js/compute-engine 0.55.6 → 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 +1224 -179
  2. package/dist/compile.min.esm.js +290 -91
  3. package/dist/compile.min.umd.cjs +291 -92
  4. package/dist/compile.umd.cjs +1224 -179
  5. package/dist/compute-engine.esm.js +1973 -306
  6. package/dist/compute-engine.min.esm.js +301 -102
  7. package/dist/compute-engine.min.umd.cjs +301 -102
  8. package/dist/compute-engine.umd.cjs +1973 -306
  9. package/dist/core.esm.js +1972 -305
  10. package/dist/core.min.esm.js +300 -101
  11. package/dist/core.min.umd.cjs +300 -101
  12. package/dist/core.umd.cjs +1972 -305
  13. package/dist/interval.esm.js +360 -19
  14. package/dist/interval.min.esm.js +6 -6
  15. package/dist/interval.min.umd.cjs +6 -6
  16. package/dist/interval.umd.cjs +360 -19
  17. package/dist/latex-syntax.esm.js +427 -25
  18. package/dist/latex-syntax.min.esm.js +7 -7
  19. package/dist/latex-syntax.min.umd.cjs +7 -7
  20. package/dist/latex-syntax.umd.cjs +427 -25
  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 +4 -2
  26. package/dist/numerics.min.esm.js +3 -3
  27. package/dist/numerics.min.umd.cjs +3 -3
  28. package/dist/numerics.umd.cjs +4 -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 +2 -2
  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 +15 -5
  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 +25 -3
  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 +24 -3
  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 +4 -3
  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 +10 -0
  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 +9 -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 +23 -2
  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 -2
  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 +2 -2
@@ -1,4 +1,4 @@
1
- /** Compute Engine 0.55.6 */
1
+ /** Compute Engine 0.57.0 */
2
2
 
3
3
  // src/compute-engine/interval/util.ts
4
4
  function ok(value) {
@@ -3119,6 +3119,7 @@ var SCALAR_TYPES = [
3119
3119
  ];
3120
3120
  var VALUE_TYPES = [
3121
3121
  "value",
3122
+ "color",
3122
3123
  ...COLLECTION_TYPES,
3123
3124
  ...SCALAR_TYPES
3124
3125
  ];
@@ -4770,6 +4771,7 @@ var PRIMITIVE_SUBTYPES = {
4770
4771
  symbol: [],
4771
4772
  boolean: [],
4772
4773
  string: [],
4774
+ color: [],
4773
4775
  expression: EXPRESSION_TYPES
4774
4776
  };
4775
4777
  function isPrimitiveSubtype(lhs, rhs) {
@@ -5920,6 +5922,64 @@ function parseQuantifier(kind) {
5920
5922
  }
5921
5923
 
5922
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
+ }
5923
5983
  function parseSequence(parser, terminator, lhs, prec, sep) {
5924
5984
  if (terminator && terminator.minPrec >= prec) return null;
5925
5985
  const result = lhs ? [lhs] : ["Nothing"];
@@ -6391,6 +6451,15 @@ var DEFINITIONS_CORE = [
6391
6451
  }
6392
6452
  },
6393
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
+ },
6394
6463
  {
6395
6464
  name: "At",
6396
6465
  kind: "postfix",
@@ -6411,6 +6480,29 @@ var DEFINITIONS_CORE = [
6411
6480
  latexTrigger: ["\\left", "\\lbrack"],
6412
6481
  parse: parseAt("\\right", "\\rbrack")
6413
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
+ },
6414
6506
  {
6415
6507
  kind: "postfix",
6416
6508
  latexTrigger: ["_"],
@@ -6493,6 +6585,29 @@ var DEFINITIONS_CORE = [
6493
6585
  return "";
6494
6586
  }
6495
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
+ },
6496
6611
  {
6497
6612
  latexTrigger: [";"],
6498
6613
  kind: "infix",
@@ -6677,13 +6792,24 @@ var DEFINITIONS_CORE = [
6677
6792
  const args = operands(expr);
6678
6793
  if (!args || args.length < 2) return "";
6679
6794
  const body = args[0];
6680
- const indexing = args[1];
6681
- if (operator(indexing) === "Element") {
6682
- const index = operand(indexing, 1);
6683
- const range = operand(indexing, 2);
6684
- if (operator(range) === "Range") {
6685
- const lo = operand(range, 1);
6686
- 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);
6687
6813
  return joinLatex([
6688
6814
  "\\text{for }",
6689
6815
  serializer.serialize(index),
@@ -6695,13 +6821,27 @@ var DEFINITIONS_CORE = [
6695
6821
  serializer.serialize(body)
6696
6822
  ]);
6697
6823
  }
6824
+ return joinLatex([
6825
+ serializer.serialize(body),
6826
+ " \\operatorname{for} ",
6827
+ serializer.serialize(index),
6828
+ " = ",
6829
+ serializer.serialize(coll)
6830
+ ]);
6698
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(", ");
6699
6841
  return joinLatex([
6700
- "\\operatorname{Loop}(",
6701
6842
  serializer.serialize(body),
6702
- ", ",
6703
- serializer.serialize(indexing),
6704
- ")"
6843
+ " \\operatorname{for} ",
6844
+ bindings
6705
6845
  ]);
6706
6846
  }
6707
6847
  },
@@ -6734,6 +6874,18 @@ var DEFINITIONS_CORE = [
6734
6874
  precedence: 245,
6735
6875
  parse: (parser, until) => parseForExpression(parser, until)
6736
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
+ },
6737
6889
  // \operatorname{break}
6738
6890
  {
6739
6891
  symbolTrigger: "break",
@@ -6938,7 +7090,10 @@ var DEFINITIONS_CORE = [
6938
7090
  if (!sym || !parser.getSymbolType(sym).matches("function")) return null;
6939
7091
  parser.addBoundary([")"]);
6940
7092
  const expr = parser.parseExpression(until);
6941
- if (!parser.matchBoundary()) return null;
7093
+ if (!parser.matchBoundary()) {
7094
+ parser.removeBoundary();
7095
+ return null;
7096
+ }
6942
7097
  if (!parser.match("<}>")) return null;
6943
7098
  return ["Derivative", lhs, expr];
6944
7099
  }
@@ -7379,7 +7534,12 @@ function parseBrackets(parser, body) {
7379
7534
  if (isEmptySequence(body)) return ["List"];
7380
7535
  const h = operator(body);
7381
7536
  if (h === "Range" || h === "Linspace") return body;
7382
- 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
+ }
7383
7543
  if (h === "Delimiter") {
7384
7544
  const delim = stringValue(operand(body, 2)) ?? "...";
7385
7545
  if (delim === ";" || delim === ".;.") {
@@ -7392,12 +7552,37 @@ function parseBrackets(parser, body) {
7392
7552
  }
7393
7553
  if (delim === "," || delim === ".,.") {
7394
7554
  body = operand(body, 1);
7395
- 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
+ }
7396
7561
  return ["List", body ?? "Nothing"];
7397
7562
  }
7398
7563
  }
7399
7564
  return ["List", body];
7400
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
+ }
7401
7586
  function serializeList(serializer, expr) {
7402
7587
  if (nops(expr) > 1 && operands(expr).every((x) => {
7403
7588
  const op = operator(x);
@@ -7649,6 +7834,35 @@ function parseForExpression(parser, until) {
7649
7834
  ["Element", index, ["Range", lower, upper]]
7650
7835
  ];
7651
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
+ }
7652
7866
  function parseWhereExpression(parser, lhs, until) {
7653
7867
  const bindingTerminator = {
7654
7868
  minPrec: 21,
@@ -9537,6 +9751,8 @@ var DEFINITIONS_ARITHMETIC = [
9537
9751
  precedence: DIVISION_PRECEDENCE,
9538
9752
  parse: "Mod"
9539
9753
  },
9754
+ // Function-style alias: `\operatorname{mod}(a, b)`
9755
+ { latexTrigger: "\\operatorname{mod}", parse: "Mod" },
9540
9756
  {
9541
9757
  latexTrigger: "\\pmod",
9542
9758
  kind: "prefix",
@@ -9777,6 +9993,13 @@ var DEFINITIONS_ARITHMETIC = [
9777
9993
  const rhs = serializer.wrap(operand(expr, 2), ADDITION_PRECEDENCE + 3);
9778
9994
  return joinLatex([lhs, "-", rhs]);
9779
9995
  }
9996
+ },
9997
+ // Euclidean distance between two points (tuples of numbers).
9998
+ {
9999
+ name: "Distance",
10000
+ latexTrigger: ["\\operatorname{distance}"],
10001
+ kind: "function",
10002
+ serialize: (serializer, expr) => "\\operatorname{distance}" + serializer.wrapArguments(expr)
9780
10003
  }
9781
10004
  ];
9782
10005
  function getIndexAssignment(expr, upper) {
@@ -11201,7 +11424,9 @@ var DEFINITIONS_STATISTICS = [
11201
11424
  if (!expr || !symbol(expr)) return null;
11202
11425
  return ["Mean", expr];
11203
11426
  }
11204
- }
11427
+ },
11428
+ // Function-style alias: `\operatorname{var}(...)`
11429
+ { latexTrigger: "\\operatorname{var}", parse: "Variance" }
11205
11430
  ];
11206
11431
 
11207
11432
  // src/compute-engine/numerics/unit-data.ts
@@ -12209,7 +12434,7 @@ var DEFINITIONS_OTHERS = [
12209
12434
  36: "\\qquad"
12210
12435
  }[v] ?? "";
12211
12436
  }
12212
- }
12437
+ },
12213
12438
  // if (
12214
12439
  // [
12215
12440
  // '\\!',
@@ -12233,6 +12458,121 @@ var DEFINITIONS_OTHERS = [
12233
12458
  // name: '',
12234
12459
  // trigger: '\\check',
12235
12460
  // },
12461
+ // ---------------------------------------------------------------------------
12462
+ // Function-style aliases for collection / random operators that some
12463
+ // notations write in lowercase (e.g. `\operatorname{shuffle}(L)`).
12464
+ // The capitalized library entries already exist; these are pure parse
12465
+ // aliases so the lowercase names don't land in `unsupported-operator`.
12466
+ // ---------------------------------------------------------------------------
12467
+ { latexTrigger: "\\operatorname{random}", parse: "Random" },
12468
+ { latexTrigger: "\\operatorname{shuffle}", parse: "Shuffle" },
12469
+ { latexTrigger: "\\operatorname{repeat}", parse: "Repeat" },
12470
+ { latexTrigger: "\\operatorname{join}", parse: "Join" },
12471
+ // ---------------------------------------------------------------------------
12472
+ // Geometric primitive heads. Registered as known typed heads so consumers
12473
+ // can branch on the operator name; CE itself doesn't render them. The
12474
+ // library entries (with no evaluator) live in `library/core.ts`.
12475
+ // ---------------------------------------------------------------------------
12476
+ {
12477
+ name: "Triangle",
12478
+ latexTrigger: ["\\operatorname{triangle}"],
12479
+ kind: "function",
12480
+ serialize: (serializer, expr) => "\\operatorname{triangle}" + serializer.wrapArguments(expr)
12481
+ },
12482
+ // Desmos's geometric `vector(p1, p2)` — a directed segment between two
12483
+ // points. Routed to a dedicated head (not the existing column-vector
12484
+ // `Vector`, which has a narrower `(number+) -> vector` signature).
12485
+ {
12486
+ name: "GeometricVector",
12487
+ latexTrigger: ["\\operatorname{vector}"],
12488
+ kind: "function",
12489
+ serialize: (serializer, expr) => "\\operatorname{vector}" + serializer.wrapArguments(expr)
12490
+ },
12491
+ {
12492
+ name: "Sphere",
12493
+ latexTrigger: ["\\operatorname{sphere}"],
12494
+ kind: "function",
12495
+ serialize: (serializer, expr) => "\\operatorname{sphere}" + serializer.wrapArguments(expr)
12496
+ },
12497
+ {
12498
+ name: "Segment",
12499
+ latexTrigger: ["\\operatorname{segment}"],
12500
+ kind: "function",
12501
+ serialize: (serializer, expr) => "\\operatorname{segment}" + serializer.wrapArguments(expr)
12502
+ }
12503
+ ];
12504
+
12505
+ // src/compute-engine/latex-syntax/dictionary/definitions-colors.ts
12506
+ var DEFINITIONS_COLORS = [
12507
+ // Color constructors (one per colorspace, preserves space on evaluation)
12508
+ {
12509
+ name: "Rgb",
12510
+ latexTrigger: ["\\operatorname{rgb}"],
12511
+ kind: "function",
12512
+ serialize: (serializer, expr) => "\\operatorname{rgb}" + serializer.wrapArguments(expr)
12513
+ },
12514
+ {
12515
+ name: "Hsv",
12516
+ latexTrigger: ["\\operatorname{hsv}"],
12517
+ kind: "function",
12518
+ serialize: (serializer, expr) => "\\operatorname{hsv}" + serializer.wrapArguments(expr)
12519
+ },
12520
+ {
12521
+ name: "Hsl",
12522
+ latexTrigger: ["\\operatorname{hsl}"],
12523
+ kind: "function",
12524
+ serialize: (serializer, expr) => "\\operatorname{hsl}" + serializer.wrapArguments(expr)
12525
+ },
12526
+ {
12527
+ name: "Oklab",
12528
+ latexTrigger: ["\\operatorname{oklab}"],
12529
+ kind: "function",
12530
+ serialize: (serializer, expr) => "\\operatorname{oklab}" + serializer.wrapArguments(expr)
12531
+ },
12532
+ {
12533
+ name: "Oklch",
12534
+ latexTrigger: ["\\operatorname{oklch}"],
12535
+ kind: "function",
12536
+ serialize: (serializer, expr) => "\\operatorname{oklch}" + serializer.wrapArguments(expr)
12537
+ },
12538
+ // Conversion functions (color → color in the named space)
12539
+ {
12540
+ name: "AsRgb",
12541
+ latexTrigger: ["\\operatorname{asRgb}"],
12542
+ kind: "function",
12543
+ serialize: (serializer, expr) => "\\operatorname{asRgb}" + serializer.wrapArguments(expr)
12544
+ },
12545
+ {
12546
+ name: "AsHsv",
12547
+ latexTrigger: ["\\operatorname{asHsv}"],
12548
+ kind: "function",
12549
+ serialize: (serializer, expr) => "\\operatorname{asHsv}" + serializer.wrapArguments(expr)
12550
+ },
12551
+ {
12552
+ name: "AsHsl",
12553
+ latexTrigger: ["\\operatorname{asHsl}"],
12554
+ kind: "function",
12555
+ serialize: (serializer, expr) => "\\operatorname{asHsl}" + serializer.wrapArguments(expr)
12556
+ },
12557
+ {
12558
+ name: "AsOklab",
12559
+ latexTrigger: ["\\operatorname{asOklab}"],
12560
+ kind: "function",
12561
+ serialize: (serializer, expr) => "\\operatorname{asOklab}" + serializer.wrapArguments(expr)
12562
+ },
12563
+ {
12564
+ name: "AsOklch",
12565
+ latexTrigger: ["\\operatorname{asOklch}"],
12566
+ kind: "function",
12567
+ serialize: (serializer, expr) => "\\operatorname{asOklch}" + serializer.wrapArguments(expr)
12568
+ },
12569
+ // Perceptual difference (returns a scalar in [0, ~1])
12570
+ {
12571
+ name: "ColorDelta",
12572
+ latexTrigger: ["\\operatorname{colorDelta}"],
12573
+ kind: "function",
12574
+ serialize: (serializer, expr) => "\\operatorname{colorDelta}" + serializer.wrapArguments(expr)
12575
+ }
12236
12576
  ];
12237
12577
 
12238
12578
  // src/compute-engine/latex-syntax/dictionary/default-dictionary.ts
@@ -12263,7 +12603,8 @@ var LATEX_DICTIONARY = [
12263
12603
  ...DEFINITIONS_STATISTICS,
12264
12604
  ...DEFINITIONS_UNITS,
12265
12605
  ...DEFINITIONS_OTHERS,
12266
- ...DEFINITIONS_PHYSICS
12606
+ ...DEFINITIONS_PHYSICS,
12607
+ ...DEFINITIONS_COLORS
12267
12608
  ];
12268
12609
 
12269
12610
  // src/math-json/symbols.ts
@@ -13405,7 +13746,7 @@ var IntervalArithmetic = {
13405
13746
  };
13406
13747
 
13407
13748
  // src/interval.ts
13408
- var version = "0.55.6";
13749
+ var version = "0.57.0";
13409
13750
  export {
13410
13751
  IntervalArithmetic,
13411
13752
  _mul,