@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
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  import type { CompileTarget, TargetSource } from './types';
3
3
  /**
4
4
  * Base compiler class containing language-agnostic compilation logic
@@ -17,14 +17,63 @@ export declare class BaseCompiler {
17
17
  */
18
18
  private static compileBlock;
19
19
  /**
20
- * Compile a Loop expression with Element(index, Range(lo, hi)) indexing.
21
- * Generates: (() => { for (let i = lo; i <= hi; i++) { body } })()
20
+ * Compile a Loop expression.
22
21
  *
23
- * The loop counter is always a raw number. For targets that wrap numeric
24
- * values (e.g. interval-js wraps with `_IA.point()`), references to the
25
- * loop index inside the body are wrapped via `target.number`.
22
+ * Two forms are supported:
23
+ *
24
+ * 1. **Imperative / single-Element form** (existing behaviour):
25
+ * `Loop(body, Element(i, Range(lo, hi)))`
26
+ * Generates a raw `for (let i = lo; i <= hi; i++) { body }` loop wrapped
27
+ * in an IIFE. The loop counter is always a plain number. For targets
28
+ * that wrap numeric values (e.g. interval-js uses `_IA.point()`),
29
+ * references to the loop index inside the body are re-wrapped via
30
+ * `target.number`. `break` / `continue` / `return` are preserved.
31
+ *
32
+ * 2. **Comprehension / variadic-Element form** (new):
33
+ * `Loop(body, Element(x, coll1), Element(y, coll2), …)`
34
+ * When two or more `Element` clauses are present — or when the single
35
+ * Element's collection is not a `Range` — the loop is compiled as a
36
+ * comprehension that collects results into an array. Each clause
37
+ * produces a `for (const name of collection)` loop, nested
38
+ * outermost-to-innermost, and the innermost body pushes into `result`.
39
+ *
40
+ * Example output (JS):
41
+ * ```js
42
+ * (() => { const result = [];
43
+ * for (const x of [1,2]) { for (const y of [3,4]) { result.push(body); } }
44
+ * return result; })()
45
+ * ```
46
+ *
47
+ * GLSL: multi-Element comprehension is not trivially representable in
48
+ * GLSL (no dynamic arrays, no push). A compile-time error is thrown.
49
+ * TODO(E3-GLSL): support GLSL multi-Element via a pre-declared fixed-size
50
+ * array or by unrolling when bounds are known at compile time.
26
51
  */
27
52
  private static compileForLoop;
53
+ /**
54
+ * Returns `true` when the given collection expression is a `Range` whose
55
+ * runtime semantics match the legacy imperative for-loop shape
56
+ * `for (let i = lo; i <= hi; i++)`.
57
+ *
58
+ * Concretely: integer-ascending bounds and step omitted-or-1. When bounds
59
+ * are not statically numeric we accept the Range (the historical
60
+ * behaviour) — runtime mismatch in the descending-unknown-bounds case is
61
+ * left as a known limitation; callers can force the iterable path by
62
+ * supplying an explicit step.
63
+ */
64
+ private static isLegacyCompatibleRange;
65
+ /**
66
+ * Compile a `Range(lo, hi)` or `Range(lo, hi, step)` expression into a JS
67
+ * iterable expression. Mirrors the runtime semantics in
68
+ * `library/collections.ts` Range:
69
+ * count = step === 0 ? 0 : max(0, floor((hi - lo) / step) + 1)
70
+ * element = lo + step * k (0-indexed)
71
+ * Default step is 1 when omitted. Bounds and step may be fractional.
72
+ *
73
+ * Only used from the comprehension path in `compileForLoop`.
74
+ * Caller must have already verified `isFunction(rangeExpr, 'Range')`.
75
+ */
76
+ private static compileRangeIterable;
28
77
  /**
29
78
  * Compile a loop body expression as statements (not wrapped in IIFE).
30
79
  * Handles Break, Continue, Return as statements, and If as if-else when
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  import type { Expression, JSSource } from '../global-types';
3
3
  import type { CompileTarget, CompilationResult } from './types';
4
4
  type CompileExpressionOptions<T extends string = string> = {
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  * Constant folding utilities for GPU compilation.
3
3
  *
4
4
  * These helpers allow compilation handlers to detect compile-time constants,
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  import type { CompiledFunctions } from './types';
3
3
  import { GPUShaderTarget } from './gpu-target';
4
4
  /**
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  import type { CompileTarget, CompiledOperators, CompiledFunctions, LanguageTarget, CompilationOptions, CompilationResult } from './types';
3
3
  /**
4
4
  * GPU shader operators shared by GLSL and WGSL.
@@ -123,16 +123,26 @@ export declare const GPU_FRACTAL_PREAMBLE_WGSL = "\nfn _fractal_mandelbrot(c: ve
123
123
  /**
124
124
  * GPU color space conversion preamble (GLSL syntax).
125
125
  *
126
- * Provides sRGB OKLab OKLCh conversions, color mixing in OKLCh
127
- * with shorter-arc hue interpolation, and APCA contrast calculation.
126
+ * Canonical color value: vec3 OKLCh `(L, C, H_deg)` same convention as the
127
+ * interpreted/JS-runtime layer. Shaders that write to a sRGB framebuffer must
128
+ * wrap the final color in `_gpu_oklch_to_srgb()` at the boundary.
129
+ *
130
+ * Hue is in degrees throughout (matching the boxed-expression convention).
131
+ * `_gpu_color_mix` interpolates directly in OKLCh — no sRGB pinch — and
132
+ * special-cases achromatic endpoints (C ≈ 0) so e.g. mixing red with white
133
+ * preserves red's hue rather than drifting through arbitrary hues.
128
134
  *
129
135
  * WGSL targets must adapt syntax (vec3f, atan2→atan2, etc.).
130
136
  */
131
- export declare const GPU_COLOR_PREAMBLE_GLSL = "\nfloat _gpu_srgb_to_linear(float c) {\n if (c <= 0.04045) return c / 12.92;\n return pow((c + 0.055) / 1.055, 2.4);\n}\n\nfloat _gpu_linear_to_srgb(float c) {\n if (c <= 0.0031308) return 12.92 * c;\n return 1.055 * pow(c, 1.0 / 2.4) - 0.055;\n}\n\nvec3 _gpu_srgb_to_oklab(vec3 rgb) {\n float r = _gpu_srgb_to_linear(rgb.x);\n float g = _gpu_srgb_to_linear(rgb.y);\n float b = _gpu_srgb_to_linear(rgb.z);\n float l_ = pow(0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b, 1.0 / 3.0);\n float m_ = pow(0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b, 1.0 / 3.0);\n float s_ = pow(0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b, 1.0 / 3.0);\n return vec3(\n 0.2104542553 * l_ + 0.793617785 * m_ - 0.0040720468 * s_,\n 1.9779984951 * l_ - 2.428592205 * m_ + 0.4505937099 * s_,\n 0.0259040371 * l_ + 0.7827717662 * m_ - 0.808675766 * s_\n );\n}\n\nvec3 _gpu_oklab_to_srgb(vec3 lab) {\n float l_ = lab.x + 0.3963377774 * lab.y + 0.2158037573 * lab.z;\n float m_ = lab.x - 0.1055613458 * lab.y - 0.0638541728 * lab.z;\n float s_ = lab.x - 0.0894841775 * lab.y - 1.291485548 * lab.z;\n float l = l_ * l_ * l_;\n float m = m_ * m_ * m_;\n float s = s_ * s_ * s_;\n float r = 4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s;\n float g = -1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s;\n float b = -0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s;\n return clamp(vec3(_gpu_linear_to_srgb(r), _gpu_linear_to_srgb(g), _gpu_linear_to_srgb(b)), 0.0, 1.0);\n}\n\nvec3 _gpu_oklab_to_oklch(vec3 lab) {\n float C = length(lab.yz);\n float H = atan(lab.z, lab.y);\n return vec3(lab.x, C, H);\n}\n\nvec3 _gpu_oklch_to_oklab(vec3 lch) {\n return vec3(lch.x, lch.y * cos(lch.z), lch.y * sin(lch.z));\n}\n\nvec3 _gpu_color_mix(vec3 rgb1, vec3 rgb2, float t) {\n vec3 lch1 = _gpu_oklab_to_oklch(_gpu_srgb_to_oklab(rgb1));\n vec3 lch2 = _gpu_oklab_to_oklch(_gpu_srgb_to_oklab(rgb2));\n float L = mix(lch1.x, lch2.x, t);\n float C = mix(lch1.y, lch2.y, t);\n float dh = lch2.z - lch1.z;\n const float PI = 3.14159265359;\n if (dh > PI) dh -= 2.0 * PI;\n if (dh < -PI) dh += 2.0 * PI;\n float H = lch1.z + dh * t;\n return _gpu_oklab_to_srgb(_gpu_oklch_to_oklab(vec3(L, C, H)));\n}\n\nfloat _gpu_apca(vec3 bg, vec3 fg) {\n float bgR = _gpu_srgb_to_linear(bg.x);\n float bgG = _gpu_srgb_to_linear(bg.y);\n float bgB = _gpu_srgb_to_linear(bg.z);\n float fgR = _gpu_srgb_to_linear(fg.x);\n float fgG = _gpu_srgb_to_linear(fg.y);\n float fgB = _gpu_srgb_to_linear(fg.z);\n float bgY = 0.2126729 * bgR + 0.7151522 * bgG + 0.0721750 * bgB;\n float fgY = 0.2126729 * fgR + 0.7151522 * fgG + 0.0721750 * fgB;\n float bgC = pow(bgY, 0.56);\n float fgC = pow(fgY, 0.57);\n float contrast = (bgC > fgC)\n ? (bgC - fgC) * 1.14\n : (bgC - fgC) * 1.14;\n return contrast * 100.0;\n}\n";
137
+ export declare const GPU_COLOR_PREAMBLE_GLSL = "\nfloat _gpu_srgb_to_linear(float c) {\n if (c <= 0.04045) return c / 12.92;\n return pow((c + 0.055) / 1.055, 2.4);\n}\n\nfloat _gpu_linear_to_srgb(float c) {\n if (c <= 0.0031308) return 12.92 * c;\n return 1.055 * pow(c, 1.0 / 2.4) - 0.055;\n}\n\nvec3 _gpu_srgb_to_oklab(vec3 rgb) {\n float r = _gpu_srgb_to_linear(rgb.x);\n float g = _gpu_srgb_to_linear(rgb.y);\n float b = _gpu_srgb_to_linear(rgb.z);\n float l_ = pow(0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b, 1.0 / 3.0);\n float m_ = pow(0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b, 1.0 / 3.0);\n float s_ = pow(0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b, 1.0 / 3.0);\n return vec3(\n 0.2104542553 * l_ + 0.793617785 * m_ - 0.0040720468 * s_,\n 1.9779984951 * l_ - 2.428592205 * m_ + 0.4505937099 * s_,\n 0.0259040371 * l_ + 0.7827717662 * m_ - 0.808675766 * s_\n );\n}\n\nvec3 _gpu_oklab_to_srgb(vec3 lab) {\n float l_ = lab.x + 0.3963377774 * lab.y + 0.2158037573 * lab.z;\n float m_ = lab.x - 0.1055613458 * lab.y - 0.0638541728 * lab.z;\n float s_ = lab.x - 0.0894841775 * lab.y - 1.291485548 * lab.z;\n float l = l_ * l_ * l_;\n float m = m_ * m_ * m_;\n float s = s_ * s_ * s_;\n float r = 4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s;\n float g = -1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s;\n float b = -0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s;\n return clamp(vec3(_gpu_linear_to_srgb(r), _gpu_linear_to_srgb(g), _gpu_linear_to_srgb(b)), 0.0, 1.0);\n}\n\nvec3 _gpu_oklab_to_oklch(vec3 lab) {\n float C = length(lab.yz);\n float H = atan(lab.z, lab.y) * (180.0 / 3.14159265359);\n if (H < 0.0) H += 360.0;\n return vec3(lab.x, C, H);\n}\n\nvec3 _gpu_oklch_to_oklab(vec3 lch) {\n float h_rad = lch.z * (3.14159265359 / 180.0);\n return vec3(lch.x, lch.y * cos(h_rad), lch.y * sin(h_rad));\n}\n\nvec3 _gpu_srgb_to_oklch(vec3 rgb) {\n return _gpu_oklab_to_oklch(_gpu_srgb_to_oklab(rgb));\n}\n\nvec3 _gpu_oklch_to_srgb(vec3 lch) {\n return _gpu_oklab_to_srgb(_gpu_oklch_to_oklab(lch));\n}\n\n// HSL conversion. Hue in degrees, saturation/lightness in 0-1.\nvec3 _gpu_hsl_to_rgb(vec3 hsl) {\n float h = hsl.x;\n float s = hsl.y;\n float l = hsl.z;\n float c = (1.0 - abs(2.0 * l - 1.0)) * s;\n float h6 = h / 60.0;\n float x = c * (1.0 - abs(mod(h6, 2.0) - 1.0));\n float r = 0.0;\n float g = 0.0;\n float b = 0.0;\n if (h6 < 1.0) { r = c; g = x; b = 0.0; }\n else if (h6 < 2.0) { r = x; g = c; b = 0.0; }\n else if (h6 < 3.0) { r = 0.0; g = c; b = x; }\n else if (h6 < 4.0) { r = 0.0; g = x; b = c; }\n else if (h6 < 5.0) { r = x; g = 0.0; b = c; }\n else { r = c; g = 0.0; b = x; }\n float m = l - c / 2.0;\n return vec3(r + m, g + m, b + m);\n}\n\nvec3 _gpu_rgb_to_hsl(vec3 rgb) {\n float maxc = max(max(rgb.x, rgb.y), rgb.z);\n float minc = min(min(rgb.x, rgb.y), rgb.z);\n float l = (maxc + minc) / 2.0;\n float d = maxc - minc;\n if (d < 1e-6) return vec3(0.0, 0.0, l);\n float s = d / (1.0 - abs(2.0 * l - 1.0));\n float h;\n if (maxc == rgb.x) h = mod((rgb.y - rgb.z) / d, 6.0);\n else if (maxc == rgb.y) h = (rgb.z - rgb.x) / d + 2.0;\n else h = (rgb.x - rgb.y) / d + 4.0;\n h *= 60.0;\n if (h < 0.0) h += 360.0;\n return vec3(h, s, l);\n}\n\n// HSV conversion. Hue in degrees, saturation/value in 0-1.\nvec3 _gpu_hsv_to_rgb(vec3 hsv) {\n float h = hsv.x;\n float s = hsv.y;\n float v = hsv.z;\n float c = v * s;\n float h6 = h / 60.0;\n float x = c * (1.0 - abs(mod(h6, 2.0) - 1.0));\n float r = 0.0;\n float g = 0.0;\n float b = 0.0;\n if (h6 < 1.0) { r = c; g = x; b = 0.0; }\n else if (h6 < 2.0) { r = x; g = c; b = 0.0; }\n else if (h6 < 3.0) { r = 0.0; g = c; b = x; }\n else if (h6 < 4.0) { r = 0.0; g = x; b = c; }\n else if (h6 < 5.0) { r = x; g = 0.0; b = c; }\n else { r = c; g = 0.0; b = x; }\n float m = v - c;\n return vec3(r + m, g + m, b + m);\n}\n\nvec3 _gpu_rgb_to_hsv(vec3 rgb) {\n float maxc = max(max(rgb.x, rgb.y), rgb.z);\n float minc = min(min(rgb.x, rgb.y), rgb.z);\n float v = maxc;\n float d = maxc - minc;\n if (d < 1e-6) return vec3(0.0, 0.0, v);\n float s = (maxc < 1e-6) ? 0.0 : d / maxc;\n float h;\n if (maxc == rgb.x) h = mod((rgb.y - rgb.z) / d, 6.0);\n else if (maxc == rgb.y) h = (rgb.z - rgb.x) / d + 2.0;\n else h = (rgb.x - rgb.y) / d + 4.0;\n h *= 60.0;\n if (h < 0.0) h += 360.0;\n return vec3(h, s, v);\n}\n\nvec3 _gpu_color_mix(vec3 lch1, vec3 lch2, float t) {\n float L = mix(lch1.x, lch2.x, t);\n float C = mix(lch1.y, lch2.y, t);\n bool a1 = lch1.y < 1e-6;\n bool a2 = lch2.y < 1e-6;\n float H;\n if (a1 && a2) {\n H = lch1.z;\n } else if (a1) {\n H = lch2.z;\n } else if (a2) {\n H = lch1.z;\n } else {\n float dh = lch2.z - lch1.z;\n if (dh > 180.0) dh -= 360.0;\n if (dh < -180.0) dh += 360.0;\n H = lch1.z + dh * t;\n if (H < 0.0) H += 360.0;\n if (H >= 360.0) H -= 360.0;\n }\n return vec3(L, C, H);\n}\n\nfloat _gpu_apca(vec3 lch_bg, vec3 lch_fg) {\n vec3 bg = _gpu_oklch_to_srgb(lch_bg);\n vec3 fg = _gpu_oklch_to_srgb(lch_fg);\n float bgR = _gpu_srgb_to_linear(bg.x);\n float bgG = _gpu_srgb_to_linear(bg.y);\n float bgB = _gpu_srgb_to_linear(bg.z);\n float fgR = _gpu_srgb_to_linear(fg.x);\n float fgG = _gpu_srgb_to_linear(fg.y);\n float fgB = _gpu_srgb_to_linear(fg.z);\n float bgY = 0.2126729 * bgR + 0.7151522 * bgG + 0.0721750 * bgB;\n float fgY = 0.2126729 * fgR + 0.7151522 * fgG + 0.0721750 * fgB;\n float bgC = pow(bgY, 0.56);\n float fgC = pow(fgY, 0.57);\n float contrast = (bgC - fgC) * 1.14;\n return contrast * 100.0;\n}\n";
132
138
  /**
133
139
  * GPU color space conversion preamble (WGSL syntax).
140
+ *
141
+ * Same convention as the GLSL preamble: canonical color value is `vec3f`
142
+ * OKLCh `(L, C, H_deg)`. Shaders writing to a sRGB framebuffer must wrap
143
+ * their final color in `_gpu_oklch_to_srgb()`.
134
144
  */
135
- export declare const GPU_COLOR_PREAMBLE_WGSL = "\nfn _gpu_srgb_to_linear(c: f32) -> f32 {\n if (c <= 0.04045) { return c / 12.92; }\n return pow((c + 0.055) / 1.055, 2.4);\n}\n\nfn _gpu_linear_to_srgb(c: f32) -> f32 {\n if (c <= 0.0031308) { return 12.92 * c; }\n return 1.055 * pow(c, 1.0 / 2.4) - 0.055;\n}\n\nfn _gpu_srgb_to_oklab(rgb: vec3f) -> vec3f {\n let r = _gpu_srgb_to_linear(rgb.x);\n let g = _gpu_srgb_to_linear(rgb.y);\n let b = _gpu_srgb_to_linear(rgb.z);\n let l_ = pow(0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b, 1.0 / 3.0);\n let m_ = pow(0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b, 1.0 / 3.0);\n let s_ = pow(0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b, 1.0 / 3.0);\n return vec3f(\n 0.2104542553 * l_ + 0.793617785 * m_ - 0.0040720468 * s_,\n 1.9779984951 * l_ - 2.428592205 * m_ + 0.4505937099 * s_,\n 0.0259040371 * l_ + 0.7827717662 * m_ - 0.808675766 * s_\n );\n}\n\nfn _gpu_oklab_to_srgb(lab: vec3f) -> vec3f {\n let l_ = lab.x + 0.3963377774 * lab.y + 0.2158037573 * lab.z;\n let m_ = lab.x - 0.1055613458 * lab.y - 0.0638541728 * lab.z;\n let s_ = lab.x - 0.0894841775 * lab.y - 1.291485548 * lab.z;\n let l = l_ * l_ * l_;\n let m = m_ * m_ * m_;\n let s = s_ * s_ * s_;\n let r = 4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s;\n let g = -1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s;\n let b = -0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s;\n return clamp(vec3f(_gpu_linear_to_srgb(r), _gpu_linear_to_srgb(g), _gpu_linear_to_srgb(b)), vec3f(0.0), vec3f(1.0));\n}\n\nfn _gpu_oklab_to_oklch(lab: vec3f) -> vec3f {\n let C = length(lab.yz);\n let H = atan2(lab.z, lab.y);\n return vec3f(lab.x, C, H);\n}\n\nfn _gpu_oklch_to_oklab(lch: vec3f) -> vec3f {\n return vec3f(lch.x, lch.y * cos(lch.z), lch.y * sin(lch.z));\n}\n\nfn _gpu_color_mix(rgb1: vec3f, rgb2: vec3f, t: f32) -> vec3f {\n let lch1 = _gpu_oklab_to_oklch(_gpu_srgb_to_oklab(rgb1));\n let lch2 = _gpu_oklab_to_oklch(_gpu_srgb_to_oklab(rgb2));\n let L = mix(lch1.x, lch2.x, t);\n let C = mix(lch1.y, lch2.y, t);\n let PI = 3.14159265359;\n var dh = lch2.z - lch1.z;\n if (dh > PI) { dh -= 2.0 * PI; }\n if (dh < -PI) { dh += 2.0 * PI; }\n let H = lch1.z + dh * t;\n return _gpu_oklab_to_srgb(_gpu_oklch_to_oklab(vec3f(L, C, H)));\n}\n\nfn _gpu_apca(bg: vec3f, fg: vec3f) -> f32 {\n let bgR = _gpu_srgb_to_linear(bg.x);\n let bgG = _gpu_srgb_to_linear(bg.y);\n let bgB = _gpu_srgb_to_linear(bg.z);\n let fgR = _gpu_srgb_to_linear(fg.x);\n let fgG = _gpu_srgb_to_linear(fg.y);\n let fgB = _gpu_srgb_to_linear(fg.z);\n let bgY = 0.2126729 * bgR + 0.7151522 * bgG + 0.0721750 * bgB;\n let fgY = 0.2126729 * fgR + 0.7151522 * fgG + 0.0721750 * fgB;\n let bgC = pow(bgY, 0.56);\n let fgC = pow(fgY, 0.57);\n let contrast = (bgC - fgC) * 1.14;\n return contrast * 100.0;\n}\n";
145
+ export declare const GPU_COLOR_PREAMBLE_WGSL = "\nfn _gpu_srgb_to_linear(c: f32) -> f32 {\n if (c <= 0.04045) { return c / 12.92; }\n return pow((c + 0.055) / 1.055, 2.4);\n}\n\nfn _gpu_linear_to_srgb(c: f32) -> f32 {\n if (c <= 0.0031308) { return 12.92 * c; }\n return 1.055 * pow(c, 1.0 / 2.4) - 0.055;\n}\n\nfn _gpu_srgb_to_oklab(rgb: vec3f) -> vec3f {\n let r = _gpu_srgb_to_linear(rgb.x);\n let g = _gpu_srgb_to_linear(rgb.y);\n let b = _gpu_srgb_to_linear(rgb.z);\n let l_ = pow(0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b, 1.0 / 3.0);\n let m_ = pow(0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b, 1.0 / 3.0);\n let s_ = pow(0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b, 1.0 / 3.0);\n return vec3f(\n 0.2104542553 * l_ + 0.793617785 * m_ - 0.0040720468 * s_,\n 1.9779984951 * l_ - 2.428592205 * m_ + 0.4505937099 * s_,\n 0.0259040371 * l_ + 0.7827717662 * m_ - 0.808675766 * s_\n );\n}\n\nfn _gpu_oklab_to_srgb(lab: vec3f) -> vec3f {\n let l_ = lab.x + 0.3963377774 * lab.y + 0.2158037573 * lab.z;\n let m_ = lab.x - 0.1055613458 * lab.y - 0.0638541728 * lab.z;\n let s_ = lab.x - 0.0894841775 * lab.y - 1.291485548 * lab.z;\n let l = l_ * l_ * l_;\n let m = m_ * m_ * m_;\n let s = s_ * s_ * s_;\n let r = 4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s;\n let g = -1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s;\n let b = -0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s;\n return clamp(vec3f(_gpu_linear_to_srgb(r), _gpu_linear_to_srgb(g), _gpu_linear_to_srgb(b)), vec3f(0.0), vec3f(1.0));\n}\n\nfn _gpu_oklab_to_oklch(lab: vec3f) -> vec3f {\n let C = length(lab.yz);\n var H = atan2(lab.z, lab.y) * (180.0 / 3.14159265359);\n if (H < 0.0) { H = H + 360.0; }\n return vec3f(lab.x, C, H);\n}\n\nfn _gpu_oklch_to_oklab(lch: vec3f) -> vec3f {\n let h_rad = lch.z * (3.14159265359 / 180.0);\n return vec3f(lch.x, lch.y * cos(h_rad), lch.y * sin(h_rad));\n}\n\nfn _gpu_srgb_to_oklch(rgb: vec3f) -> vec3f {\n return _gpu_oklab_to_oklch(_gpu_srgb_to_oklab(rgb));\n}\n\nfn _gpu_oklch_to_srgb(lch: vec3f) -> vec3f {\n return _gpu_oklab_to_srgb(_gpu_oklch_to_oklab(lch));\n}\n\nfn _gpu_hsl_to_rgb(hsl: vec3f) -> vec3f {\n let h = hsl.x;\n let s = hsl.y;\n let l = hsl.z;\n let c = (1.0 - abs(2.0 * l - 1.0)) * s;\n let h6 = h / 60.0;\n let x = c * (1.0 - abs((h6 - 2.0 * floor(h6 / 2.0)) - 1.0));\n var r: f32 = 0.0;\n var g: f32 = 0.0;\n var b: f32 = 0.0;\n if (h6 < 1.0) { r = c; g = x; b = 0.0; }\n else if (h6 < 2.0) { r = x; g = c; b = 0.0; }\n else if (h6 < 3.0) { r = 0.0; g = c; b = x; }\n else if (h6 < 4.0) { r = 0.0; g = x; b = c; }\n else if (h6 < 5.0) { r = x; g = 0.0; b = c; }\n else { r = c; g = 0.0; b = x; }\n let m = l - c / 2.0;\n return vec3f(r + m, g + m, b + m);\n}\n\nfn _gpu_rgb_to_hsl(rgb: vec3f) -> vec3f {\n let maxc = max(max(rgb.x, rgb.y), rgb.z);\n let minc = min(min(rgb.x, rgb.y), rgb.z);\n let l = (maxc + minc) / 2.0;\n let d = maxc - minc;\n if (d < 1e-6) { return vec3f(0.0, 0.0, l); }\n let s = d / (1.0 - abs(2.0 * l - 1.0));\n var h: f32;\n if (maxc == rgb.x) {\n let v = (rgb.y - rgb.z) / d;\n h = v - 6.0 * floor(v / 6.0);\n } else if (maxc == rgb.y) {\n h = (rgb.z - rgb.x) / d + 2.0;\n } else {\n h = (rgb.x - rgb.y) / d + 4.0;\n }\n h = h * 60.0;\n if (h < 0.0) { h = h + 360.0; }\n return vec3f(h, s, l);\n}\n\nfn _gpu_hsv_to_rgb(hsv: vec3f) -> vec3f {\n let h = hsv.x;\n let s = hsv.y;\n let v = hsv.z;\n let c = v * s;\n let h6 = h / 60.0;\n let x = c * (1.0 - abs((h6 - 2.0 * floor(h6 / 2.0)) - 1.0));\n var r: f32 = 0.0;\n var g: f32 = 0.0;\n var b: f32 = 0.0;\n if (h6 < 1.0) { r = c; g = x; b = 0.0; }\n else if (h6 < 2.0) { r = x; g = c; b = 0.0; }\n else if (h6 < 3.0) { r = 0.0; g = c; b = x; }\n else if (h6 < 4.0) { r = 0.0; g = x; b = c; }\n else if (h6 < 5.0) { r = x; g = 0.0; b = c; }\n else { r = c; g = 0.0; b = x; }\n let m = v - c;\n return vec3f(r + m, g + m, b + m);\n}\n\nfn _gpu_rgb_to_hsv(rgb: vec3f) -> vec3f {\n let maxc = max(max(rgb.x, rgb.y), rgb.z);\n let minc = min(min(rgb.x, rgb.y), rgb.z);\n let v = maxc;\n let d = maxc - minc;\n if (d < 1e-6) { return vec3f(0.0, 0.0, v); }\n var s: f32 = 0.0;\n if (maxc >= 1e-6) { s = d / maxc; }\n var h: f32;\n if (maxc == rgb.x) {\n let q = (rgb.y - rgb.z) / d;\n h = q - 6.0 * floor(q / 6.0);\n } else if (maxc == rgb.y) {\n h = (rgb.z - rgb.x) / d + 2.0;\n } else {\n h = (rgb.x - rgb.y) / d + 4.0;\n }\n h = h * 60.0;\n if (h < 0.0) { h = h + 360.0; }\n return vec3f(h, s, v);\n}\n\nfn _gpu_color_mix(lch1: vec3f, lch2: vec3f, t: f32) -> vec3f {\n let L = mix(lch1.x, lch2.x, t);\n let C = mix(lch1.y, lch2.y, t);\n let a1 = lch1.y < 1e-6;\n let a2 = lch2.y < 1e-6;\n var H: f32;\n if (a1 && a2) {\n H = lch1.z;\n } else if (a1) {\n H = lch2.z;\n } else if (a2) {\n H = lch1.z;\n } else {\n var dh = lch2.z - lch1.z;\n if (dh > 180.0) { dh = dh - 360.0; }\n if (dh < -180.0) { dh = dh + 360.0; }\n H = lch1.z + dh * t;\n if (H < 0.0) { H = H + 360.0; }\n if (H >= 360.0) { H = H - 360.0; }\n }\n return vec3f(L, C, H);\n}\n\nfn _gpu_apca(lch_bg: vec3f, lch_fg: vec3f) -> f32 {\n let bg = _gpu_oklch_to_srgb(lch_bg);\n let fg = _gpu_oklch_to_srgb(lch_fg);\n let bgR = _gpu_srgb_to_linear(bg.x);\n let bgG = _gpu_srgb_to_linear(bg.y);\n let bgB = _gpu_srgb_to_linear(bg.z);\n let fgR = _gpu_srgb_to_linear(fg.x);\n let fgG = _gpu_srgb_to_linear(fg.y);\n let fgB = _gpu_srgb_to_linear(fg.z);\n let bgY = 0.2126729 * bgR + 0.7151522 * bgG + 0.0721750 * bgB;\n let fgY = 0.2126729 * fgR + 0.7151522 * fgG + 0.0721750 * fgB;\n let bgC = pow(bgY, 0.56);\n let fgC = pow(fgY, 0.57);\n let contrast = (bgC - fgC) * 1.14;\n return contrast * 100.0;\n}\n";
136
146
  /**
137
147
  * Abstract base class for GPU shader compilation targets.
138
148
  *
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  * JavaScript interval arithmetic compilation target
3
3
  *
4
4
  * Compiles mathematical expressions to JavaScript code using interval arithmetic
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  import { chop, factorial, factorial2, gcd, lcm, limit } from '../numerics/numeric';
3
3
  import { gamma, gammaln, erf, erfc, erfInv, beta, digamma, trigamma, polygamma, zeta, lambertW, besselJ, besselY, besselI, besselK, airyAi, airyBi, fresnelS, fresnelC, sinc } from '../numerics/special-functions';
4
4
  import { choose } from '../boxed-expression/expand';
@@ -16,8 +16,19 @@ export declare class ComputeEngineFunction extends Function {
16
16
  contrastingColor(bg: string | number[], fg1?: string | number[], fg2?: string | number[]): number[];
17
17
  colorToColorspace(input: string | number[], space: string): number[];
18
18
  colormap(name: string, arg?: number): number[] | number[][];
19
- _interpolatePalette(colors: [number, number, number][], t: number): number[];
19
+ _interpolatePalette(colors: number[][], t: number): number[];
20
20
  colorFromColorspace(components: number[], space: string): number[];
21
+ rgb(r: number, g: number, b: number, alpha?: number): number[];
22
+ hsv(h: number, s: number, v: number, alpha?: number): number[];
23
+ hsl(h: number, s: number, l: number, alpha?: number): number[];
24
+ oklab(L: number, a: number, b: number, alpha?: number): number[];
25
+ oklch(L: number, C: number, H: number, alpha?: number): number[];
26
+ asRgb(input: string | number[]): number[];
27
+ asHsv(input: string | number[]): number[];
28
+ asHsl(input: string | number[]): number[];
29
+ asOklab(input: string | number[]): number[];
30
+ colorDelta(a: string | number[], b: string | number[]): number;
31
+ distance(a: number[], b: number[]): number;
21
32
  chop: typeof chop;
22
33
  factorial: typeof factorial;
23
34
  factorial2: typeof factorial2;
@@ -195,8 +206,19 @@ export declare class ComputeEngineFunctionLiteral extends Function {
195
206
  contrastingColor(bg: string | number[], fg1?: string | number[], fg2?: string | number[]): number[];
196
207
  colorToColorspace(input: string | number[], space: string): number[];
197
208
  colormap(name: string, arg?: number): number[] | number[][];
198
- _interpolatePalette(colors: [number, number, number][], t: number): number[];
209
+ _interpolatePalette(colors: number[][], t: number): number[];
199
210
  colorFromColorspace(components: number[], space: string): number[];
211
+ rgb(r: number, g: number, b: number, alpha?: number): number[];
212
+ hsv(h: number, s: number, v: number, alpha?: number): number[];
213
+ hsl(h: number, s: number, l: number, alpha?: number): number[];
214
+ oklab(L: number, a: number, b: number, alpha?: number): number[];
215
+ oklch(L: number, C: number, H: number, alpha?: number): number[];
216
+ asRgb(input: string | number[]): number[];
217
+ asHsv(input: string | number[]): number[];
218
+ asHsl(input: string | number[]): number[];
219
+ asOklab(input: string | number[]): number[];
220
+ colorDelta(a: string | number[], b: string | number[]): number;
221
+ distance(a: number[], b: number[]): number;
200
222
  chop: typeof chop;
201
223
  factorial: typeof factorial;
202
224
  factorial2: typeof factorial2;
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  import type { CompileTarget, CompiledOperators, CompiledFunctions, LanguageTarget, CompilationOptions, CompilationResult } from './types';
3
3
  /**
4
4
  * Python/NumPy language target implementation
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  /**
3
3
  * Source code in the target language
4
4
  */
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  import type { CompiledFunctions } from './types';
3
3
  import { GPUShaderTarget } from './gpu-target';
4
4
  /**
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  /**
3
3
  * The default cost function, used to determine if a new expression is simpler
4
4
  * than the old one.
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  import type { MathJsonSymbol } from '../math-json/types';
3
3
  export declare function ask(ce: IComputeEngine, pattern: Expression): BoxedSubstitution[];
4
4
  export declare function verify(ce: IComputeEngine, query: Expression): boolean | undefined;
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  private _entries;
3
3
  getOrBuild<T>(cacheName: string, build: () => T, purge?: (t: T) => T | undefined): T;
4
4
  invalidate(cacheName: string): void;
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  export type CommonSymbolTable = {
3
3
  [symbol: string]: null | Expression;
4
4
  };
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  import type { LanguageTarget } from './compilation/types';
3
3
  /**
4
4
  * Internal registry for compilation targets.
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  type ResetHooks = {
3
3
  refreshNumericConstants: () => void;
4
4
  resetCommonSymbols: () => void;
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  import { BoxedType } from '../common/type/boxed-type';
3
3
  import type { MathJsonSymbol } from '../math-json/types';
4
4
  import type { ValueDefinition, OperatorDefinition, AssignValue, Expression, BoxedDefinition, SymbolDefinition, IComputeEngine, Scope } from './global-types';
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  import { BigDecimal } from '../big-decimal';
3
3
  import type { MathJsonNumberObject, MathJsonSymbol } from '../math-json/types';
4
4
  import { NumericValue } from './numeric-value/types';
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  import type { LanguageTarget, CompilationOptions } from './compilation/types';
3
3
  export declare function assertCompilationTargetName(name: unknown): string;
4
4
  export declare function assertLibraryName(name: unknown): string;
@@ -1,3 +1,3 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  export declare function resolveBootstrapLibraries(libraries?: readonly (string | LibraryDefinition)[]): LibraryDefinition[];
3
3
  export declare function loadLibraryDefinitions(engine: ComputeEngine, libraries: readonly LibraryDefinition[]): void;
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  import type { AngularUnit } from './types-definitions';
3
3
  export declare class EngineNumericConfiguration {
4
4
  private _precision;
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  private _timeLimit;
3
3
  private _iterationLimit;
4
4
  private _recursionLimit;
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  export declare function pushScope(ce: IComputeEngine, scope?: Scope, name?: string): void;
3
3
  export declare function popScope(ce: IComputeEngine): void;
4
4
  export declare function pushEvalContext(ce: IComputeEngine, scope: Scope, name?: string): void;
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  export declare function declareSequence(ce: IComputeEngine, name: string, def: SequenceDefinition): IComputeEngine;
3
3
  export declare function getSequenceStatus(ce: IComputeEngine, name: string): SequenceStatus;
4
4
  export declare function getSequence(ce: IComputeEngine, name: string): SequenceInfo | undefined;
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  /**
3
3
  * Internal holder for simplification rules and their cache-staleness marker.
4
4
  *
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  import type { Expression, IComputeEngine as ComputeEngine, LibraryDefinition } from './global-types';
3
3
  export type CommonNumberBindings = {
4
4
  Zero: Expression;
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  type ResolverScope = {
3
3
  parent: ResolverScope | null;
4
4
  types?: Record<string, TypeReference>;
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  import { BoxedType } from '../common/type/boxed-type';
3
3
  import type { Expression, Metadata, ExpressionInput } from './global-types';
4
4
  type ValidationHost = {
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  import type { Type, TypeString } from '../common/type/types';
3
3
  import type { LatexString, ParseLatexOptions } from './latex-syntax/types';
4
4
  import { compile as compileExpr } from './compilation/compile-expression';
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  import type { BoxedDefinition, Expression, IComputeEngine as ComputeEngine, Scope } from './global-types';
3
3
  /***
4
4
  * ### THEORY OF OPERATIONS
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  export type * from './types-serialization';
3
3
  export type { ValueDefinition, SequenceDefinition, SequenceStatus, SequenceInfo, OEISSequenceInfo, OEISOptions, OperatorDefinition, BaseDefinition, SimplifyOptions, SymbolDefinition, SymbolDefinitions, LibraryDefinition, AngularUnit, Sign, BaseCollectionHandlers, IndexedCollectionHandlers, CollectionHandlers, TaggedValueDefinition, TaggedOperatorDefinition, BoxedDefinition, BoxedBaseDefinition, BoxedValueDefinition, OperatorDefinitionFlags, BoxedOperatorDefinition, } from './types-definitions';
4
4
  export type * from './types-evaluation';
@@ -1,12 +1,12 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  import { BigDecimal } from '../big-decimal';
3
3
  import { Type, TypeResolver, TypeString } from '../common/type/types';
4
4
  import { BoxedType } from '../common/type/boxed-type';
5
5
  import type { OneOf } from '../common/one-of';
6
6
  import type { ConfigurationChangeListener } from '../common/configuration-change';
7
7
  import type { MathJsonExpression, MathJsonSymbol, MathJsonNumberObject } from '../math-json/types';
8
- import type { ValueDefinition, OperatorDefinition, AngularUnit, AssignValue, AssumeResult, Expression, BoxedRule, BoxedRuleSet, BoxedSubstitution, CanonicalOptions, Metadata, Rule, Scope, EvalContext, ExpressionInput, IComputeEngine, ILatexSyntax, BoxedDefinition, SymbolDefinition, SequenceDefinition, SequenceStatus, SequenceInfo, OEISSequenceInfo, OEISOptions, LibraryDefinition } from './global-types';
9
- import type { LibraryCategory, ParseLatexOptions } from './latex-syntax/types';
8
+ import type { ValueDefinition, OperatorDefinition, AngularUnit, AssignValue, AssumeResult, Expression, BoxedRule, BoxedRuleSet, BoxedSubstitution, CanonicalOptions, Metadata, Rule, Scope, EvalContext, ExpressionInput, IComputeEngine, ILatexSyntax, BoxedDefinition, SymbolDefinition, SequenceDefinition, SequenceStatus, SequenceInfo, OEISSequenceInfo, OEISOptions, LibraryDefinition, OperatorInfo } from './global-types';
9
+ import type { LibraryCategory, ParseLatexOptions, SerializeLatexOptions } from './latex-syntax/types';
10
10
  import type { BigNum, Rational } from './numerics/types';
11
11
  import { ExactNumericValueData, NumericValue, NumericValueData } from './numeric-value/types';
12
12
  import type { FormOption } from './types-serialization';
@@ -174,6 +174,7 @@ export declare class ComputeEngine implements IComputeEngine {
174
174
  precision?: number | 'machine';
175
175
  tolerance?: number | 'auto';
176
176
  latexSyntax?: ILatexSyntax;
177
+ latexOptions?: Partial<ParseLatexOptions & SerializeLatexOptions>;
177
178
  });
178
179
  toJSON(): string;
179
180
  [Symbol.toStringTag]: string;
@@ -436,6 +437,7 @@ export declare class ComputeEngine implements IComputeEngine {
436
437
  * lexical scope and going up the scope chain.
437
438
  */
438
439
  lookupDefinition(id: MathJsonSymbol): undefined | BoxedDefinition;
440
+ operatorInfo(head: string): OperatorInfo | undefined;
439
441
  /**
440
442
  * Associate a new definition to a symbol in the current context.
441
443
  *
@@ -650,6 +652,25 @@ export declare class ComputeEngine implements IComputeEngine {
650
652
  /** @internal Returns the LatexSyntax instance, lazily creating one
651
653
  * if a factory is registered. Throws if no LatexSyntax is available. */
652
654
  _requireLatexSyntax(): ILatexSyntax;
655
+ /** @internal Engine-wide LaTeX parse/serialize options (e.g. decimalSeparator).
656
+ * Merged into every `parse()` and `toLatex()` call between the LatexSyntax
657
+ * instance defaults and any per-call overrides. */
658
+ private _latexOptions;
659
+ /** Engine-wide LaTeX parse/serialize options.
660
+ *
661
+ * These options are merged into every `parse()` and `toLatex()` call.
662
+ * Precedence (most-specific wins):
663
+ * 1. LatexSyntax instance defaults (set at its construction)
664
+ * 2. `ce.latexOptions` (this property)
665
+ * 3. Per-call options passed to `ce.parse()` / `expr.toLatex()`
666
+ *
667
+ * Assigning replaces the whole bag. Use spread to merge:
668
+ * ```ts
669
+ * ce.latexOptions = { ...ce.latexOptions, decimalSeparator: '{,}' };
670
+ * ```
671
+ */
672
+ get latexOptions(): Partial<ParseLatexOptions & SerializeLatexOptions>;
673
+ set latexOptions(options: Partial<ParseLatexOptions & SerializeLatexOptions>);
653
674
  /**
654
675
  * Parse a LaTeX string and return a boxed expression.
655
676
  *
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  * Basic interval arithmetic operations
3
3
  *
4
4
  * @module interval/arithmetic
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  * Comparison and conditional interval operations
3
3
  *
4
4
  * @module interval/comparison
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  * Elementary interval functions (sqrt, pow, exp, ln, abs, floor, ceil, min, max, mod)
3
3
  *
4
4
  * @module interval/elementary
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  * Interval arithmetic library for reliable function evaluation
3
3
  *
4
4
  * This module provides interval versions of mathematical operations
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  * Trigonometric interval functions
3
3
  *
4
4
  * @module interval/trigonometric
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  * Interval arithmetic types for reliable function evaluation
3
3
  *
4
4
  * @module interval/types
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  * Utility functions for interval arithmetic
3
3
  *
4
4
  * @module interval/util
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  * Default LaTeX dictionary assembly.
3
3
  *
4
4
  * This file imports all individual domain dictionaries and assembles them
@@ -21,8 +21,9 @@ import { DEFINITIONS_LINEAR_ALGEBRA } from './definitions-linear-algebra';
21
21
  import { DEFINITIONS_STATISTICS } from './definitions-statistics';
22
22
  import { DEFINITIONS_UNITS } from './definitions-units';
23
23
  import { DEFINITIONS_OTHERS } from './definitions-other';
24
- export { DEFINITIONS_CORE, DEFINITIONS_SYMBOLS, DEFINITIONS_ALGEBRA, DEFINITIONS_LOGIC, DEFINITIONS_SETS, DEFINITIONS_INEQUALITIES, DEFINITIONS_ARITHMETIC, DEFINITIONS_COMPLEX, DEFINITIONS_TRIGONOMETRY, DEFINITIONS_CALCULUS, DEFINITIONS_LINEAR_ALGEBRA, DEFINITIONS_STATISTICS, DEFINITIONS_UNITS, DEFINITIONS_OTHERS, };
25
- export { DEFINITIONS_CORE as CORE_DICTIONARY, DEFINITIONS_SYMBOLS as SYMBOLS_DICTIONARY, DEFINITIONS_ALGEBRA as ALGEBRA_DICTIONARY, DEFINITIONS_LOGIC as LOGIC_DICTIONARY, DEFINITIONS_SETS as SETS_DICTIONARY, DEFINITIONS_INEQUALITIES as INEQUALITIES_DICTIONARY, DEFINITIONS_ARITHMETIC as ARITHMETIC_DICTIONARY, DEFINITIONS_COMPLEX as COMPLEX_DICTIONARY, DEFINITIONS_TRIGONOMETRY as TRIGONOMETRY_DICTIONARY, DEFINITIONS_CALCULUS as CALCULUS_DICTIONARY, DEFINITIONS_LINEAR_ALGEBRA as LINEAR_ALGEBRA_DICTIONARY, DEFINITIONS_STATISTICS as STATISTICS_DICTIONARY, DEFINITIONS_UNITS as UNITS_DICTIONARY, DEFINITIONS_OTHERS as OTHERS_DICTIONARY, };
24
+ import { DEFINITIONS_COLORS } from './definitions-colors';
25
+ export { DEFINITIONS_CORE, DEFINITIONS_SYMBOLS, DEFINITIONS_ALGEBRA, DEFINITIONS_LOGIC, DEFINITIONS_SETS, DEFINITIONS_INEQUALITIES, DEFINITIONS_ARITHMETIC, DEFINITIONS_COMPLEX, DEFINITIONS_TRIGONOMETRY, DEFINITIONS_CALCULUS, DEFINITIONS_LINEAR_ALGEBRA, DEFINITIONS_STATISTICS, DEFINITIONS_UNITS, DEFINITIONS_OTHERS, DEFINITIONS_COLORS, };
26
+ export { DEFINITIONS_CORE as CORE_DICTIONARY, DEFINITIONS_SYMBOLS as SYMBOLS_DICTIONARY, DEFINITIONS_ALGEBRA as ALGEBRA_DICTIONARY, DEFINITIONS_LOGIC as LOGIC_DICTIONARY, DEFINITIONS_SETS as SETS_DICTIONARY, DEFINITIONS_INEQUALITIES as INEQUALITIES_DICTIONARY, DEFINITIONS_ARITHMETIC as ARITHMETIC_DICTIONARY, DEFINITIONS_COMPLEX as COMPLEX_DICTIONARY, DEFINITIONS_TRIGONOMETRY as TRIGONOMETRY_DICTIONARY, DEFINITIONS_CALCULUS as CALCULUS_DICTIONARY, DEFINITIONS_LINEAR_ALGEBRA as LINEAR_ALGEBRA_DICTIONARY, DEFINITIONS_STATISTICS as STATISTICS_DICTIONARY, DEFINITIONS_UNITS as UNITS_DICTIONARY, DEFINITIONS_OTHERS as OTHERS_DICTIONARY, DEFINITIONS_COLORS as COLORS_DICTIONARY, };
26
27
  /**
27
28
  * LaTeX dictionary entries for physics constants that have LaTeX triggers.
28
29
  * These were previously inline in the physics library definition.
@@ -1,2 +1,2 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  export declare const DEFINITIONS_ALGEBRA: LatexDictionary;
@@ -1,2 +1,2 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  export declare const DEFINITIONS_ARITHMETIC: LatexDictionary;
@@ -1,2 +1,2 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  export declare const DEFINITIONS_CALCULUS: LatexDictionary;
@@ -0,0 +1,10 @@
1
+ /* 0.57.0 */
2
+ /**
3
+ * LaTeX dictionary for color constructors and conversions.
4
+ *
5
+ * Constructors preserve their colorspace on evaluation; the head is the
6
+ * discriminator. A `Color` value type may be introduced later — for now
7
+ * each constructor returns a tuple-shaped value and downstream code
8
+ * branches on the operator name.
9
+ */
10
+ export declare const DEFINITIONS_COLORS: LatexDictionary;
@@ -1,2 +1,2 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  export declare const DEFINITIONS_COMPLEX: LatexDictionary;
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  export declare const DEFINITIONS_CORE: LatexDictionary;
3
3
  export declare const DELIMITERS_SHORTHAND: {
4
4
  '(': string;
@@ -1,2 +1,2 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  export declare const DEFINITIONS_LINEAR_ALGEBRA: LatexDictionary;
@@ -1,4 +1,4 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  import type { MathJsonExpression } from '../../../math-json';
3
3
  export declare const DEFINITIONS_LOGIC: LatexDictionary;
4
4
  export declare function parseQuantifier(kind: 'NotForAll' | 'NotExists' | 'ForAll' | 'Exists' | 'ExistsUnique'): (parser: Parser, terminator: Readonly<Terminator>) => MathJsonExpression | null;
@@ -1,2 +1,2 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  export declare const DEFINITIONS_OTHERS: LatexDictionary;
@@ -1,2 +1,2 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  export declare const DEFINITIONS_INEQUALITIES: LatexDictionaryEntry[];
@@ -1,2 +1,2 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  export declare const DEFINITIONS_SETS: LatexDictionary;
@@ -1,2 +1,2 @@
1
- /* 0.55.6 */
1
+ /* 0.57.0 */
2
2
  export declare const DEFINITIONS_STATISTICS: LatexDictionary;