@cortex-js/compute-engine 0.57.0 → 0.59.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 (270) hide show
  1. package/README.md +4 -0
  2. package/dist/compile.esm.js +2376 -501
  3. package/dist/compile.min.esm.js +316 -68
  4. package/dist/compile.min.umd.cjs +316 -68
  5. package/dist/compile.umd.cjs +2376 -501
  6. package/dist/compute-engine.esm.js +15717 -12444
  7. package/dist/compute-engine.min.esm.js +331 -83
  8. package/dist/compute-engine.min.umd.cjs +330 -82
  9. package/dist/compute-engine.umd.cjs +15717 -12444
  10. package/dist/core.esm.js +15716 -12443
  11. package/dist/core.min.esm.js +329 -81
  12. package/dist/core.min.umd.cjs +329 -81
  13. package/dist/core.umd.cjs +15716 -12443
  14. package/dist/identities.esm.js +1921 -0
  15. package/dist/identities.min.esm.js +2 -0
  16. package/dist/identities.min.umd.cjs +4 -0
  17. package/dist/identities.umd.cjs +1946 -0
  18. package/dist/interval.esm.js +779 -339
  19. package/dist/interval.min.esm.js +8 -8
  20. package/dist/interval.min.umd.cjs +8 -8
  21. package/dist/interval.umd.cjs +779 -339
  22. package/dist/latex-syntax.esm.js +971 -608
  23. package/dist/latex-syntax.min.esm.js +7 -7
  24. package/dist/latex-syntax.min.umd.cjs +7 -7
  25. package/dist/latex-syntax.umd.cjs +971 -608
  26. package/dist/math-json.esm.js +8 -12
  27. package/dist/math-json.min.esm.js +2 -2
  28. package/dist/math-json.min.umd.cjs +2 -2
  29. package/dist/math-json.umd.cjs +8 -12
  30. package/dist/numerics.esm.js +1382 -226
  31. package/dist/numerics.min.esm.js +16 -5
  32. package/dist/numerics.min.umd.cjs +16 -5
  33. package/dist/numerics.umd.cjs +1382 -226
  34. package/dist/types/big-decimal/big-decimal.d.ts +1 -1
  35. package/dist/types/big-decimal/index.d.ts +1 -1
  36. package/dist/types/big-decimal/transcendentals.d.ts +1 -1
  37. package/dist/types/big-decimal/utils.d.ts +1 -1
  38. package/dist/types/common/ansi-codes.d.ts +1 -1
  39. package/dist/types/common/configuration-change.d.ts +1 -1
  40. package/dist/types/common/fuzzy-string-match.d.ts +1 -1
  41. package/dist/types/common/grapheme-splitter.d.ts +1 -1
  42. package/dist/types/common/interruptible.d.ts +1 -1
  43. package/dist/types/common/one-of.d.ts +1 -1
  44. package/dist/types/common/signals.d.ts +1 -1
  45. package/dist/types/common/type/ast-nodes.d.ts +1 -1
  46. package/dist/types/common/type/boxed-type.d.ts +1 -1
  47. package/dist/types/common/type/lexer.d.ts +1 -1
  48. package/dist/types/common/type/parse.d.ts +1 -208
  49. package/dist/types/common/type/parser.d.ts +124 -2
  50. package/dist/types/common/type/primitive.d.ts +5 -1
  51. package/dist/types/common/type/reduce.d.ts +1 -1
  52. package/dist/types/common/type/serialize.d.ts +1 -1
  53. package/dist/types/common/type/subtype.d.ts +18 -1
  54. package/dist/types/common/type/type-builder.d.ts +1 -1
  55. package/dist/types/common/type/types.d.ts +1 -1
  56. package/dist/types/common/type/utils.d.ts +1 -1
  57. package/dist/types/common/utils.d.ts +1 -1
  58. package/dist/types/compile.d.ts +1 -1
  59. package/dist/types/compute-engine/assume.d.ts +13 -6
  60. package/dist/types/compute-engine/boxed-expression/abstract-boxed-expression.d.ts +3 -1
  61. package/dist/types/compute-engine/boxed-expression/apply.d.ts +1 -1
  62. package/dist/types/compute-engine/boxed-expression/arithmetic-add.d.ts +1 -1
  63. package/dist/types/compute-engine/boxed-expression/arithmetic-mul-div.d.ts +1 -1
  64. package/dist/types/compute-engine/boxed-expression/arithmetic-power.d.ts +1 -1
  65. package/dist/types/compute-engine/boxed-expression/ascii-math.d.ts +1 -1
  66. package/dist/types/compute-engine/boxed-expression/box.d.ts +1 -1
  67. package/dist/types/compute-engine/boxed-expression/boxed-dictionary.d.ts +1 -1
  68. package/dist/types/compute-engine/boxed-expression/boxed-function.d.ts +1 -1
  69. package/dist/types/compute-engine/boxed-expression/boxed-number.d.ts +1 -1
  70. package/dist/types/compute-engine/boxed-expression/boxed-operator-definition.d.ts +7 -1
  71. package/dist/types/compute-engine/boxed-expression/boxed-patterns.d.ts +1 -1
  72. package/dist/types/compute-engine/boxed-expression/boxed-string.d.ts +1 -1
  73. package/dist/types/compute-engine/boxed-expression/boxed-symbol.d.ts +3 -3
  74. package/dist/types/compute-engine/boxed-expression/boxed-tensor.d.ts +1 -1
  75. package/dist/types/compute-engine/boxed-expression/boxed-value-definition.d.ts +1 -1
  76. package/dist/types/compute-engine/boxed-expression/cache.d.ts +1 -1
  77. package/dist/types/compute-engine/boxed-expression/canonical-utils.d.ts +1 -1
  78. package/dist/types/compute-engine/boxed-expression/canonical.d.ts +1 -1
  79. package/dist/types/compute-engine/boxed-expression/compare.d.ts +1 -1
  80. package/dist/types/compute-engine/boxed-expression/constants.d.ts +1 -1
  81. package/dist/types/compute-engine/boxed-expression/constraint-subject.d.ts +140 -0
  82. package/dist/types/compute-engine/boxed-expression/expand.d.ts +1 -1
  83. package/dist/types/compute-engine/boxed-expression/expression-map.d.ts +1 -1
  84. package/dist/types/compute-engine/boxed-expression/factor.d.ts +1 -1
  85. package/dist/types/compute-engine/boxed-expression/flatten.d.ts +1 -1
  86. package/dist/types/compute-engine/boxed-expression/hold.d.ts +1 -1
  87. package/dist/types/compute-engine/boxed-expression/inequality-bounds.d.ts +34 -12
  88. package/dist/types/compute-engine/boxed-expression/init-lazy-refs.d.ts +1 -1
  89. package/dist/types/compute-engine/boxed-expression/invisible-operator.d.ts +1 -1
  90. package/dist/types/compute-engine/boxed-expression/match.d.ts +1 -1
  91. package/dist/types/compute-engine/boxed-expression/negate.d.ts +1 -1
  92. package/dist/types/compute-engine/boxed-expression/numerics.d.ts +1 -1
  93. package/dist/types/compute-engine/boxed-expression/order.d.ts +1 -1
  94. package/dist/types/compute-engine/boxed-expression/pattern-utils.d.ts +1 -1
  95. package/dist/types/compute-engine/boxed-expression/polynomial-degree.d.ts +1 -1
  96. package/dist/types/compute-engine/boxed-expression/polynomials.d.ts +1 -1
  97. package/dist/types/compute-engine/boxed-expression/predicates.d.ts +1 -1
  98. package/dist/types/compute-engine/boxed-expression/rule-index.d.ts +112 -0
  99. package/dist/types/compute-engine/boxed-expression/rules.d.ts +2 -1
  100. package/dist/types/compute-engine/boxed-expression/serialize.d.ts +1 -1
  101. package/dist/types/compute-engine/boxed-expression/sgn.d.ts +1 -1
  102. package/dist/types/compute-engine/boxed-expression/simplify.d.ts +1 -1
  103. package/dist/types/compute-engine/boxed-expression/solve-linear-system.d.ts +1 -1
  104. package/dist/types/compute-engine/boxed-expression/solve.d.ts +1 -1
  105. package/dist/types/compute-engine/boxed-expression/stochastic-equal.d.ts +1 -1
  106. package/dist/types/compute-engine/boxed-expression/trigonometry.d.ts +1 -1
  107. package/dist/types/compute-engine/boxed-expression/type-guards.d.ts +1 -1
  108. package/dist/types/compute-engine/boxed-expression/utils.d.ts +1 -1
  109. package/dist/types/compute-engine/boxed-expression/validate.d.ts +1 -1
  110. package/dist/types/compute-engine/collection-utils.d.ts +1 -1
  111. package/dist/types/compute-engine/compilation/base-compiler.d.ts +8 -1
  112. package/dist/types/compute-engine/compilation/compile-expression.d.ts +1 -1
  113. package/dist/types/compute-engine/compilation/constant-folding.d.ts +16 -1
  114. package/dist/types/compute-engine/compilation/glsl-target.d.ts +1 -1
  115. package/dist/types/compute-engine/compilation/gpu-target.d.ts +58 -5
  116. package/dist/types/compute-engine/compilation/interval-javascript-target.d.ts +4 -4
  117. package/dist/types/compute-engine/compilation/javascript-target.d.ts +1 -1
  118. package/dist/types/compute-engine/compilation/python-target.d.ts +1 -1
  119. package/dist/types/compute-engine/compilation/types.d.ts +1 -1
  120. package/dist/types/compute-engine/compilation/wgsl-target.d.ts +1 -1
  121. package/dist/types/compute-engine/cost-function.d.ts +1 -1
  122. package/dist/types/compute-engine/engine-assumptions.d.ts +1 -1
  123. package/dist/types/compute-engine/engine-cache.d.ts +1 -1
  124. package/dist/types/compute-engine/engine-common-symbols.d.ts +1 -1
  125. package/dist/types/compute-engine/engine-compilation-targets.d.ts +1 -1
  126. package/dist/types/compute-engine/engine-configuration-lifecycle.d.ts +1 -1
  127. package/dist/types/compute-engine/engine-declarations.d.ts +1 -1
  128. package/dist/types/compute-engine/engine-expression-entrypoints.d.ts +1 -1
  129. package/dist/types/compute-engine/engine-extension-contracts.d.ts +1 -1
  130. package/dist/types/compute-engine/engine-library-bootstrap.d.ts +1 -1
  131. package/dist/types/compute-engine/engine-numeric-configuration.d.ts +1 -1
  132. package/dist/types/compute-engine/engine-runtime-state.d.ts +4 -1
  133. package/dist/types/compute-engine/engine-scope.d.ts +1 -1
  134. package/dist/types/compute-engine/engine-sequences.d.ts +1 -1
  135. package/dist/types/compute-engine/engine-simplification-rules.d.ts +10 -2
  136. package/dist/types/compute-engine/engine-startup-coordinator.d.ts +1 -1
  137. package/dist/types/compute-engine/engine-type-resolver.d.ts +1 -1
  138. package/dist/types/compute-engine/engine-validation-entrypoints.d.ts +1 -1
  139. package/dist/types/compute-engine/free-functions.d.ts +1 -1
  140. package/dist/types/compute-engine/function-utils.d.ts +1 -1
  141. package/dist/types/compute-engine/fungrim/loader.d.ts +13 -0
  142. package/dist/types/compute-engine/fungrim/types.d.ts +160 -0
  143. package/dist/types/compute-engine/global-types.d.ts +1 -1
  144. package/dist/types/compute-engine/index.d.ts +63 -2
  145. package/dist/types/compute-engine/interval/arithmetic.d.ts +1 -1
  146. package/dist/types/compute-engine/interval/comparison.d.ts +1 -1
  147. package/dist/types/compute-engine/interval/elementary.d.ts +10 -2
  148. package/dist/types/compute-engine/interval/index.d.ts +2 -2
  149. package/dist/types/compute-engine/interval/trigonometric.d.ts +1 -1
  150. package/dist/types/compute-engine/interval/types.d.ts +1 -1
  151. package/dist/types/compute-engine/interval/util.d.ts +1 -1
  152. package/dist/types/compute-engine/latex-syntax/dictionary/default-dictionary.d.ts +1 -1
  153. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-algebra.d.ts +1 -1
  154. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-arithmetic.d.ts +1 -1
  155. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-calculus.d.ts +1 -1
  156. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-colors.d.ts +1 -1
  157. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-complex.d.ts +1 -1
  158. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-core.d.ts +1 -1
  159. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-linear-algebra.d.ts +1 -1
  160. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-logic.d.ts +1 -1
  161. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-other.d.ts +1 -1
  162. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-relational-operators.d.ts +1 -1
  163. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-sets.d.ts +1 -1
  164. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-statistics.d.ts +1 -1
  165. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-symbols.d.ts +1 -1
  166. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-trigonometry.d.ts +1 -1
  167. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-units.d.ts +1 -1
  168. package/dist/types/compute-engine/latex-syntax/dictionary/definitions.d.ts +1 -1
  169. package/dist/types/compute-engine/latex-syntax/dictionary/indexed-types.d.ts +4 -1
  170. package/dist/types/compute-engine/latex-syntax/latex-syntax.d.ts +1 -1
  171. package/dist/types/compute-engine/latex-syntax/parse-number.d.ts +1 -1
  172. package/dist/types/compute-engine/latex-syntax/parse-symbol.d.ts +1 -1
  173. package/dist/types/compute-engine/latex-syntax/parse.d.ts +3 -2
  174. package/dist/types/compute-engine/latex-syntax/serialize-dms.d.ts +1 -1
  175. package/dist/types/compute-engine/latex-syntax/serialize-number.d.ts +1 -11
  176. package/dist/types/compute-engine/latex-syntax/serializer-style.d.ts +1 -1
  177. package/dist/types/compute-engine/latex-syntax/serializer.d.ts +1 -1
  178. package/dist/types/compute-engine/latex-syntax/tokenizer.d.ts +1 -1
  179. package/dist/types/compute-engine/latex-syntax/types.d.ts +1 -1
  180. package/dist/types/compute-engine/latex-syntax/utils.d.ts +1 -1
  181. package/dist/types/compute-engine/library/arithmetic.d.ts +1 -1
  182. package/dist/types/compute-engine/library/calculus.d.ts +1 -1
  183. package/dist/types/compute-engine/library/collections.d.ts +1 -1
  184. package/dist/types/compute-engine/library/colors.d.ts +1 -1
  185. package/dist/types/compute-engine/library/combinatorics.d.ts +1 -1
  186. package/dist/types/compute-engine/library/complex.d.ts +13 -1
  187. package/dist/types/compute-engine/library/control-structures.d.ts +1 -1
  188. package/dist/types/compute-engine/library/core.d.ts +1 -1
  189. package/dist/types/compute-engine/library/fractals.d.ts +1 -1
  190. package/dist/types/compute-engine/library/library.d.ts +1 -1
  191. package/dist/types/compute-engine/library/linear-algebra.d.ts +1 -1
  192. package/dist/types/compute-engine/library/logic-analysis.d.ts +1 -1
  193. package/dist/types/compute-engine/library/logic.d.ts +1 -1
  194. package/dist/types/compute-engine/library/number-theory.d.ts +1 -1
  195. package/dist/types/compute-engine/library/polynomials.d.ts +1 -1
  196. package/dist/types/compute-engine/library/quantity-arithmetic.d.ts +1 -1
  197. package/dist/types/compute-engine/library/random-expression.d.ts +1 -1
  198. package/dist/types/compute-engine/library/relational-operator.d.ts +1 -1
  199. package/dist/types/compute-engine/library/sets.d.ts +27 -1
  200. package/dist/types/compute-engine/library/statistics.d.ts +1 -1
  201. package/dist/types/compute-engine/library/trigonometry.d.ts +1 -1
  202. package/dist/types/compute-engine/library/type-handlers.d.ts +1 -1
  203. package/dist/types/compute-engine/library/unit-data.d.ts +1 -1
  204. package/dist/types/compute-engine/library/units.d.ts +1 -1
  205. package/dist/types/compute-engine/library/utils.d.ts +1 -1
  206. package/dist/types/compute-engine/numeric-value/big-numeric-value.d.ts +1 -1
  207. package/dist/types/compute-engine/numeric-value/exact-numeric-value.d.ts +7 -1
  208. package/dist/types/compute-engine/numeric-value/machine-numeric-value.d.ts +1 -1
  209. package/dist/types/compute-engine/numeric-value/types.d.ts +1 -1
  210. package/dist/types/compute-engine/numerics/bernoulli.d.ts +39 -0
  211. package/dist/types/compute-engine/numerics/bigint.d.ts +1 -1
  212. package/dist/types/compute-engine/numerics/expression.d.ts +1 -1
  213. package/dist/types/compute-engine/numerics/interval.d.ts +1 -1
  214. package/dist/types/compute-engine/numerics/linear-algebra.d.ts +1 -1
  215. package/dist/types/compute-engine/numerics/monte-carlo.d.ts +1 -1
  216. package/dist/types/compute-engine/numerics/numeric-bigint.d.ts +1 -1
  217. package/dist/types/compute-engine/numerics/numeric-bignum.d.ts +1 -1
  218. package/dist/types/compute-engine/numerics/numeric-complex.d.ts +12 -1
  219. package/dist/types/compute-engine/numerics/numeric.d.ts +1 -1
  220. package/dist/types/compute-engine/numerics/primes.d.ts +1 -1
  221. package/dist/types/compute-engine/numerics/random.d.ts +23 -0
  222. package/dist/types/compute-engine/numerics/rationals.d.ts +1 -1
  223. package/dist/types/compute-engine/numerics/richardson.d.ts +1 -1
  224. package/dist/types/compute-engine/numerics/special-functions.d.ts +78 -10
  225. package/dist/types/compute-engine/numerics/statistics.d.ts +1 -1
  226. package/dist/types/compute-engine/numerics/strings.d.ts +1 -1
  227. package/dist/types/compute-engine/numerics/types.d.ts +1 -1
  228. package/dist/types/compute-engine/numerics/unit-data.d.ts +1 -1
  229. package/dist/types/compute-engine/oeis.d.ts +1 -1
  230. package/dist/types/compute-engine/sequence.d.ts +1 -1
  231. package/dist/types/compute-engine/symbolic/antiderivative.d.ts +1 -1
  232. package/dist/types/compute-engine/symbolic/derivative.d.ts +1 -1
  233. package/dist/types/compute-engine/symbolic/distribute.d.ts +1 -1
  234. package/dist/types/compute-engine/symbolic/fu-cost.d.ts +1 -1
  235. package/dist/types/compute-engine/symbolic/fu-transforms.d.ts +1 -1
  236. package/dist/types/compute-engine/symbolic/fu.d.ts +1 -1
  237. package/dist/types/compute-engine/symbolic/logic-utils.d.ts +1 -1
  238. package/dist/types/compute-engine/symbolic/simplify-abs.d.ts +1 -1
  239. package/dist/types/compute-engine/symbolic/simplify-divide.d.ts +1 -1
  240. package/dist/types/compute-engine/symbolic/simplify-factorial.d.ts +1 -1
  241. package/dist/types/compute-engine/symbolic/simplify-hyperbolic.d.ts +1 -1
  242. package/dist/types/compute-engine/symbolic/simplify-infinity.d.ts +1 -1
  243. package/dist/types/compute-engine/symbolic/simplify-log.d.ts +1 -1
  244. package/dist/types/compute-engine/symbolic/simplify-logic.d.ts +1 -1
  245. package/dist/types/compute-engine/symbolic/simplify-power.d.ts +1 -1
  246. package/dist/types/compute-engine/symbolic/simplify-product.d.ts +1 -1
  247. package/dist/types/compute-engine/symbolic/simplify-rules.d.ts +1 -1
  248. package/dist/types/compute-engine/symbolic/simplify-sum.d.ts +1 -1
  249. package/dist/types/compute-engine/symbolic/simplify-trig.d.ts +1 -1
  250. package/dist/types/compute-engine/tensor/tensor-fields.d.ts +1 -1
  251. package/dist/types/compute-engine/tensor/tensors.d.ts +3 -3
  252. package/dist/types/compute-engine/types-definitions.d.ts +1 -1
  253. package/dist/types/compute-engine/types-engine.d.ts +52 -3
  254. package/dist/types/compute-engine/types-evaluation.d.ts +1 -1
  255. package/dist/types/compute-engine/types-expression.d.ts +85 -14
  256. package/dist/types/compute-engine/types-kernel-evaluation.d.ts +32 -1
  257. package/dist/types/compute-engine/types-kernel-serialization.d.ts +45 -3
  258. package/dist/types/compute-engine/types-serialization.d.ts +1 -1
  259. package/dist/types/compute-engine/types.d.ts +1 -1
  260. package/dist/types/compute-engine.d.ts +1 -1
  261. package/dist/types/core.d.ts +1 -1
  262. package/dist/types/identities.d.ts +3 -0
  263. package/dist/types/interval.d.ts +1 -1
  264. package/dist/types/latex-syntax.d.ts +2 -2
  265. package/dist/types/math-json/symbols.d.ts +1 -1
  266. package/dist/types/math-json/types.d.ts +1 -1
  267. package/dist/types/math-json/utils.d.ts +1 -1
  268. package/dist/types/math-json.d.ts +2 -2
  269. package/dist/types/numerics.d.ts +1 -1
  270. package/package.json +9 -3
@@ -1,4 +1,4 @@
1
- /* 0.57.0 */
1
+ /* 0.59.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.57.0 */
1
+ /* 0.59.0 */
2
2
  * Constant folding utilities for GPU compilation.
3
3
  *
4
4
  * These helpers allow compilation handlers to detect compile-time constants,
@@ -29,6 +29,21 @@ export declare function tryGetConstant(expr: Expression): number | undefined;
29
29
  * short-circuits on `0.0` (absorbing element), returns `"1.0"` for empty input.
30
30
  */
31
31
  export declare function foldTerms(terms: string[], identity: string, op: '+' | '*'): string;
32
+ /**
33
+ * Parenthesize a compiled operand for safe use as a multiplicative factor.
34
+ *
35
+ * `foldTerms(..., '*')` joins operand strings with ` * ` without adding
36
+ * precedence parentheses. That is fine when operands come through the
37
+ * operator path (which already wraps lower-precedence operands), but the
38
+ * complex-multiply function handlers compile their operands with no
39
+ * precedence context, so a top-level additive factor like `x + 1.0` would be
40
+ * joined as `x + 1.0 * z` (mis-grouped). Wrap `Add`/`Subtract` operands so
41
+ * they bind as a single factor.
42
+ *
43
+ * @param expr The source expression for the operand.
44
+ * @param code The already-compiled operand code.
45
+ */
46
+ export declare function parenthesizeFactor(expr: Expression, code: string): string;
32
47
  /**
33
48
  * Decompose an expression into real and imaginary compiled code strings
34
49
  * for direct `vec2(re, im)` construction.
@@ -1,4 +1,4 @@
1
- /* 0.57.0 */
1
+ /* 0.59.0 */
2
2
  import type { CompiledFunctions } from './types';
3
3
  import { GPUShaderTarget } from './gpu-target';
4
4
  /**
@@ -1,4 +1,4 @@
1
- /* 0.57.0 */
1
+ /* 0.59.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.
@@ -33,14 +33,24 @@ export declare function compileGPUMatrix(args: ReadonlyArray<Expression>, compil
33
33
  * GPU gamma function using Lanczos approximation (g=7, n=9 coefficients).
34
34
  *
35
35
  * Uses reflection formula for z < 0.5 and Lanczos for z >= 0.5.
36
- * Valid for both GLSL and WGSL (uses standard math builtins).
36
+ * GLSL syntax.
37
37
  */
38
- export declare const GPU_GAMMA_PREAMBLE = "\nfloat _gpu_gamma(float z) {\n const float PI = 3.14159265358979;\n // For z < 0.5, use reflection formula with inlined Lanczos (non-recursive)\n float w = z;\n if (z < 0.5) w = 1.0 - z;\n w -= 1.0;\n float x = 0.99999999999980993;\n x += 676.5203681218851 / (w + 1.0);\n x += -1259.1392167224028 / (w + 2.0);\n x += 771.32342877765313 / (w + 3.0);\n x += -176.61502916214059 / (w + 4.0);\n x += 12.507343278686905 / (w + 5.0);\n x += -0.13857109526572012 / (w + 6.0);\n x += 9.9843695780195716e-6 / (w + 7.0);\n x += 1.5056327351493116e-7 / (w + 8.0);\n float t = w + 7.5;\n float g = sqrt(2.0 * PI) * pow(t, w + 0.5) * exp(-t) * x;\n if (z < 0.5) return PI / (sin(PI * z) * g);\n return g;\n}\n\nfloat _gpu_gammaln(float z) {\n // Stirling asymptotic expansion for ln(Gamma(z)), z > 0\n float z3 = z * z * z;\n return z * log(z) - z - 0.5 * log(z)\n + 0.5 * log(2.0 * 3.14159265358979)\n + 1.0 / (12.0 * z)\n - 1.0 / (360.0 * z3)\n + 1.0 / (1260.0 * z3 * z * z);\n}\n";
38
+ export declare const GPU_GAMMA_PREAMBLE_GLSL = "\nfloat _gpu_gamma(float z) {\n const float PI = 3.14159265358979;\n // For z < 0.5, use reflection formula with inlined Lanczos (non-recursive)\n float w = z;\n if (z < 0.5) w = 1.0 - z;\n w -= 1.0;\n float x = 0.99999999999980993;\n x += 676.5203681218851 / (w + 1.0);\n x += -1259.1392167224028 / (w + 2.0);\n x += 771.32342877765313 / (w + 3.0);\n x += -176.61502916214059 / (w + 4.0);\n x += 12.507343278686905 / (w + 5.0);\n x += -0.13857109526572012 / (w + 6.0);\n x += 9.9843695780195716e-6 / (w + 7.0);\n x += 1.5056327351493116e-7 / (w + 8.0);\n float t = w + 7.5;\n float g = sqrt(2.0 * PI) * pow(t, w + 0.5) * exp(-t) * x;\n if (z < 0.5) return PI / (sin(PI * z) * g);\n return g;\n}\n\nfloat _gpu_gammaln(float z) {\n // Stirling asymptotic expansion for ln(Gamma(z)), z > 0\n float z3 = z * z * z;\n return z * log(z) - z - 0.5 * log(z)\n + 0.5 * log(2.0 * 3.14159265358979)\n + 1.0 / (12.0 * z)\n - 1.0 / (360.0 * z3)\n + 1.0 / (1260.0 * z3 * z * z);\n}\n";
39
+ /**
40
+ * GPU Gamma function preamble (WGSL syntax). WGSL has no implicit GLSL-style
41
+ * `float`/braceless-`if` syntax, so a `_WGSL` variant is required (the GLSL
42
+ * preamble does not compile as WGSL).
43
+ */
44
+ export declare const GPU_GAMMA_PREAMBLE_WGSL = "\nfn _gpu_gamma(z: f32) -> f32 {\n let PI = 3.14159265358979;\n var w = z;\n if (z < 0.5) { w = 1.0 - z; }\n w = w - 1.0;\n var x = 0.99999999999980993;\n x = x + 676.5203681218851 / (w + 1.0);\n x = x + -1259.1392167224028 / (w + 2.0);\n x = x + 771.32342877765313 / (w + 3.0);\n x = x + -176.61502916214059 / (w + 4.0);\n x = x + 12.507343278686905 / (w + 5.0);\n x = x + -0.13857109526572012 / (w + 6.0);\n x = x + 9.9843695780195716e-6 / (w + 7.0);\n x = x + 1.5056327351493116e-7 / (w + 8.0);\n let t = w + 7.5;\n let g = sqrt(2.0 * PI) * pow(t, w + 0.5) * exp(-t) * x;\n if (z < 0.5) { return PI / (sin(PI * z) * g); }\n return g;\n}\n\nfn _gpu_gammaln(z: f32) -> f32 {\n let z3 = z * z * z;\n return z * log(z) - z - 0.5 * log(z)\n + 0.5 * log(2.0 * 3.14159265358979)\n + 1.0 / (12.0 * z)\n - 1.0 / (360.0 * z3)\n + 1.0 / (1260.0 * z3 * z * z);\n}\n";
39
45
  /**
40
46
  * GPU error function using Abramowitz & Stegun approximation.
41
- * Maximum error: |epsilon(x)| <= 1.5e-7.
47
+ * Maximum error: |epsilon(x)| <= 1.5e-7. GLSL syntax.
42
48
  */
43
- export declare const GPU_ERF_PREAMBLE = "\nfloat _gpu_erf(float x) {\n float ax = abs(x);\n float t = 1.0 / (1.0 + 0.3275911 * ax);\n float y = ((((1.061405429 * t - 1.453152027) * t + 1.421413741) * t - 0.284496736) * t + 0.254829592) * t;\n float result = 1.0 - y * exp(-ax * ax);\n return x < 0.0 ? -result : result;\n}\n\nfloat _gpu_erfinv(float x) {\n float pi = 3.14159265358979;\n float x2 = x * x;\n float x3 = x * x2;\n float x5 = x3 * x2;\n float x7 = x5 * x2;\n float x9 = x7 * x2;\n return sqrt(pi) * 0.5 * (x + (pi / 12.0) * x3 + (7.0 * pi * pi / 480.0) * x5 + (127.0 * pi * pi * pi / 40320.0) * x7 + (4369.0 * pi * pi * pi * pi / 5806080.0) * x9);\n}\n";
49
+ export declare const GPU_ERF_PREAMBLE_GLSL = "\nfloat _gpu_erf(float x) {\n float ax = abs(x);\n float t = 1.0 / (1.0 + 0.3275911 * ax);\n float y = ((((1.061405429 * t - 1.453152027) * t + 1.421413741) * t - 0.284496736) * t + 0.254829592) * t;\n float result = 1.0 - y * exp(-ax * ax);\n return x < 0.0 ? -result : result;\n}\n\nfloat _gpu_erfinv(float x) {\n float pi = 3.14159265358979;\n float x2 = x * x;\n float x3 = x * x2;\n float x5 = x3 * x2;\n float x7 = x5 * x2;\n float x9 = x7 * x2;\n return sqrt(pi) * 0.5 * (x + (pi / 12.0) * x3 + (7.0 * pi * pi / 480.0) * x5 + (127.0 * pi * pi * pi / 40320.0) * x7 + (4369.0 * pi * pi * pi * pi / 5806080.0) * x9);\n}\n";
50
+ /**
51
+ * GPU error function preamble (WGSL syntax). See GPU_GAMMA_PREAMBLE_WGSL.
52
+ */
53
+ export declare const GPU_ERF_PREAMBLE_WGSL = "\nfn _gpu_erf(x: f32) -> f32 {\n let ax = abs(x);\n let t = 1.0 / (1.0 + 0.3275911 * ax);\n let y = ((((1.061405429 * t - 1.453152027) * t + 1.421413741) * t - 0.284496736) * t + 0.254829592) * t;\n let result = 1.0 - y * exp(-ax * ax);\n if (x < 0.0) { return -result; }\n return result;\n}\n\nfn _gpu_erfinv(x: f32) -> f32 {\n let pi = 3.14159265358979;\n let x2 = x * x;\n let x3 = x * x2;\n let x5 = x3 * x2;\n let x7 = x5 * x2;\n let x9 = x7 * x2;\n return sqrt(pi) * 0.5 * (x + (pi / 12.0) * x3 + (7.0 * pi * pi / 480.0) * x5 + (127.0 * pi * pi * pi / 40320.0) * x7 + (4369.0 * pi * pi * pi * pi / 5806080.0) * x9);\n}\n";
44
54
  /**
45
55
  * GPU Heaviside step function preamble (GLSL syntax).
46
56
  * Returns 0 for x<0, 0.5 at x=0, 1 for x>0.
@@ -120,6 +130,49 @@ export declare const GPU_FRACTAL_PREAMBLE_GLSL = "\nfloat _fractal_mandelbrot(ve
120
130
  * Fractal preamble (WGSL syntax).
121
131
  */
122
132
  export declare const GPU_FRACTAL_PREAMBLE_WGSL = "\nfn _fractal_mandelbrot(c: vec2f, maxIter: i32) -> f32 {\n var z = vec2f(0.0, 0.0);\n for (var i: i32 = 0; i < maxIter; i++) {\n z = vec2f(z.x*z.x - z.y*z.y + c.x, 2.0*z.x*z.y + c.y);\n if (dot(z, z) > 4.0) {\n return clamp((f32(i) - log2(log2(dot(z, z))) + 4.0) / f32(maxIter), 0.0, 1.0);\n }\n }\n return 1.0;\n}\n\nfn _fractal_julia(z_in: vec2f, c: vec2f, maxIter: i32) -> f32 {\n var z = z_in;\n for (var i: i32 = 0; i < maxIter; i++) {\n z = vec2f(z.x*z.x - z.y*z.y + c.x, 2.0*z.x*z.y + c.y);\n if (dot(z, z) > 4.0) {\n return clamp((f32(i) - log2(log2(dot(z, z))) + 4.0) / f32(maxIter), 0.0, 1.0);\n }\n }\n return 1.0;\n}\n";
133
+ /**
134
+ * GPU GCD preamble (GLSL syntax).
135
+ * Euclidean algorithm over floats; works for integer-valued inputs.
136
+ */
137
+ export declare const GPU_GCD_PREAMBLE_GLSL = "\nfloat _gpu_gcd(float a, float b) {\n a = abs(a); b = abs(b);\n for (int i = 0; i < 32; i++) {\n if (b < 0.5) break;\n float t = mod(a, b);\n a = b;\n b = t;\n }\n return a;\n}\n";
138
+ /**
139
+ * GPU GCD preamble (WGSL syntax).
140
+ */
141
+ export declare const GPU_GCD_PREAMBLE_WGSL = "\nfn _gpu_gcd(a_in: f32, b_in: f32) -> f32 {\n var a = abs(a_in); var b = abs(b_in);\n for (var i: i32 = 0; i < 32; i++) {\n if (b < 0.5) { break; }\n let t = a % b;\n a = b;\n b = t;\n }\n return a;\n}\n";
142
+ /**
143
+ * GPU Random preamble (GLSL syntax).
144
+ *
145
+ * Deterministic pseudorandom in [0, 1) from a float seed.
146
+ * Standard fract-sin hash; reproducible across runs for the same seed.
147
+ * Note: this hash exhibits visible banding near seed ≈ kπ for integer k.
148
+ * For high-quality shader random, callers should use a more robust hash
149
+ * (e.g. PCG or xxHash) and pre-seed it appropriately.
150
+ */
151
+ export declare const GPU_RANDOM_PREAMBLE_GLSL = "\n// Deterministic pseudorandom in [0, 1) from a float seed.\n// Standard fract-sin hash; reproducible across runs for the same seed.\n// Note: this hash exhibits visible banding near seed \u2248 k\u03C0 for integer k.\n// For high-quality shader random, callers should use a more robust hash\n// (e.g. PCG or xxHash) and pre-seed it appropriately.\nfloat _gpu_random(float seed) {\n return fract(sin(seed * 12.9898) * 43758.5453);\n}\n";
152
+ /**
153
+ * GPU Random preamble (WGSL syntax).
154
+ *
155
+ * Deterministic pseudorandom in [0, 1) from a float seed.
156
+ * Standard fract-sin hash; reproducible across runs for the same seed.
157
+ * Note: this hash exhibits visible banding near seed ≈ kπ for integer k.
158
+ * For high-quality shader random, callers should use a more robust hash
159
+ * (e.g. PCG or xxHash) and pre-seed it appropriately.
160
+ */
161
+ export declare const GPU_RANDOM_PREAMBLE_WGSL = "\n// Deterministic pseudorandom in [0, 1) from a float seed.\n// Standard fract-sin hash; reproducible across runs for the same seed.\n// Note: this hash exhibits visible banding near seed \u2248 k\u03C0 for integer k.\n// For high-quality shader random, callers should use a more robust hash\n// (e.g. PCG or xxHash) and pre-seed it appropriately.\nfn _gpu_random(seed: f32) -> f32 {\n return fract(sin(seed * 12.9898) * 43758.5453);\n}\n";
162
+ /**
163
+ * GPU Median preamble (GLSL syntax).
164
+ *
165
+ * One function per supported list size (2..8) using sorting networks.
166
+ * Each function takes N float arguments and returns the median via a
167
+ * Batcher odd-even merge sort encoded entirely as min/max calls.
168
+ */
169
+ export declare const GPU_MEDIAN_PREAMBLE_GLSL = "\nfloat _gpu_median_2(float a, float b) {\n return (a + b) * 0.5;\n}\nfloat _gpu_median_3(float a, float b, float c) {\n return max(min(a, b), min(max(a, b), c));\n}\nfloat _gpu_median_4(float a, float b, float c, float d) {\n float lo = max(min(a, b), min(c, d));\n float hi = min(max(a, b), max(c, d));\n return (lo + hi) * 0.5;\n}\nfloat _gpu_median_5(float a, float b, float c, float d, float e) {\n // 9-comparator Bose-Nelson sort; v2 holds the median.\n float t; float v0=a,v1=b,v2=c,v3=d,v4=e;\n t=min(v0,v1); v1=max(v0,v1); v0=t;\n t=min(v3,v4); v4=max(v3,v4); v3=t;\n t=min(v2,v4); v4=max(v2,v4); v2=t;\n t=min(v2,v3); v3=max(v2,v3); v2=t;\n t=min(v0,v3); v3=max(v0,v3); v0=t;\n t=min(v0,v2); v2=max(v0,v2); v0=t;\n t=min(v1,v4); v4=max(v1,v4); v1=t;\n t=min(v1,v3); v3=max(v1,v3); v1=t;\n t=min(v1,v2); v2=max(v1,v2); v1=t;\n return v2;\n}\nfloat _gpu_median_6(float a, float b, float c, float d, float e, float f) {\n float t; float v0=a,v1=b,v2=c,v3=d,v4=e,v5=f;\n t=min(v0,v1); v1=max(v0,v1); v0=t;\n t=min(v2,v3); v3=max(v2,v3); v2=t;\n t=min(v4,v5); v5=max(v4,v5); v4=t;\n t=min(v0,v2); v2=max(v0,v2); v0=t;\n t=min(v1,v3); v3=max(v1,v3); v1=t;\n t=min(v0,v4); v4=max(v0,v4); v0=t;\n t=min(v1,v5); v5=max(v1,v5); v1=t;\n t=min(v2,v4); v4=max(v2,v4); v2=t;\n t=min(v1,v2); v2=max(v1,v2); v1=t;\n t=min(v3,v5); v5=max(v3,v5); v3=t;\n t=min(v3,v4); v4=max(v3,v4); v3=t;\n return (v2 + v3) * 0.5;\n}\nfloat _gpu_median_7(float a, float b, float c, float d, float e, float f, float g) {\n float t; float v0=a,v1=b,v2=c,v3=d,v4=e,v5=f,v6=g;\n t=min(v0,v1); v1=max(v0,v1); v0=t;\n t=min(v2,v3); v3=max(v2,v3); v2=t;\n t=min(v4,v5); v5=max(v4,v5); v4=t;\n t=min(v0,v2); v2=max(v0,v2); v0=t;\n t=min(v1,v3); v3=max(v1,v3); v1=t;\n t=min(v4,v6); v6=max(v4,v6); v4=t;\n t=min(v0,v4); v4=max(v0,v4); v0=t;\n t=min(v1,v5); v5=max(v1,v5); v1=t;\n t=min(v2,v6); v6=max(v2,v6); v2=t;\n t=min(v1,v2); v2=max(v1,v2); v1=t;\n t=min(v3,v5); v5=max(v3,v5); v3=t;\n t=min(v2,v4); v4=max(v2,v4); v2=t;\n t=min(v3,v4); v4=max(v3,v4); v3=t;\n return v3;\n}\nfloat _gpu_median_8(float a, float b, float c, float d, float e, float f, float g, float h) {\n float t; float v0=a,v1=b,v2=c,v3=d,v4=e,v5=f,v6=g,v7=h;\n t=min(v0,v1); v1=max(v0,v1); v0=t;\n t=min(v2,v3); v3=max(v2,v3); v2=t;\n t=min(v4,v5); v5=max(v4,v5); v4=t;\n t=min(v6,v7); v7=max(v6,v7); v6=t;\n t=min(v0,v2); v2=max(v0,v2); v0=t;\n t=min(v1,v3); v3=max(v1,v3); v1=t;\n t=min(v4,v6); v6=max(v4,v6); v4=t;\n t=min(v5,v7); v7=max(v5,v7); v5=t;\n t=min(v0,v4); v4=max(v0,v4); v0=t;\n t=min(v1,v5); v5=max(v1,v5); v1=t;\n t=min(v2,v6); v6=max(v2,v6); v2=t;\n t=min(v3,v7); v7=max(v3,v7); v3=t;\n t=min(v1,v2); v2=max(v1,v2); v1=t;\n t=min(v3,v4); v4=max(v3,v4); v3=t;\n t=min(v5,v6); v6=max(v5,v6); v5=t;\n t=min(v3,v5); v5=max(v3,v5); v3=t;\n t=min(v2,v4); v4=max(v2,v4); v2=t;\n t=min(v3,v4); v4=max(v3,v4); v3=t;\n return (v3 + v4) * 0.5;\n}\n";
170
+ /**
171
+ * GPU Median preamble (WGSL syntax).
172
+ *
173
+ * Same sorting-network logic as the GLSL version with WGSL syntax.
174
+ */
175
+ export declare const GPU_MEDIAN_PREAMBLE_WGSL = "\nfn _gpu_median_2(a: f32, b: f32) -> f32 {\n return (a + b) * 0.5;\n}\nfn _gpu_median_3(a: f32, b: f32, c: f32) -> f32 {\n return max(min(a, b), min(max(a, b), c));\n}\nfn _gpu_median_4(a: f32, b: f32, c: f32, d: f32) -> f32 {\n let lo = max(min(a, b), min(c, d));\n let hi = min(max(a, b), max(c, d));\n return (lo + hi) * 0.5;\n}\nfn _gpu_median_5(a: f32, b: f32, c: f32, d: f32, e: f32) -> f32 {\n // 9-comparator Bose-Nelson sort; v2 holds the median.\n var v0=a; var v1=b; var v2=c; var v3=d; var v4=e; var t: f32;\n t=min(v0,v1); v1=max(v0,v1); v0=t;\n t=min(v3,v4); v4=max(v3,v4); v3=t;\n t=min(v2,v4); v4=max(v2,v4); v2=t;\n t=min(v2,v3); v3=max(v2,v3); v2=t;\n t=min(v0,v3); v3=max(v0,v3); v0=t;\n t=min(v0,v2); v2=max(v0,v2); v0=t;\n t=min(v1,v4); v4=max(v1,v4); v1=t;\n t=min(v1,v3); v3=max(v1,v3); v1=t;\n t=min(v1,v2); v2=max(v1,v2); v1=t;\n return v2;\n}\nfn _gpu_median_6(a: f32, b: f32, c: f32, d: f32, e: f32, f: f32) -> f32 {\n var v0=a; var v1=b; var v2=c; var v3=d; var v4=e; var v5=f; var t: f32;\n t=min(v0,v1); v1=max(v0,v1); v0=t;\n t=min(v2,v3); v3=max(v2,v3); v2=t;\n t=min(v4,v5); v5=max(v4,v5); v4=t;\n t=min(v0,v2); v2=max(v0,v2); v0=t;\n t=min(v1,v3); v3=max(v1,v3); v1=t;\n t=min(v0,v4); v4=max(v0,v4); v0=t;\n t=min(v1,v5); v5=max(v1,v5); v1=t;\n t=min(v2,v4); v4=max(v2,v4); v2=t;\n t=min(v1,v2); v2=max(v1,v2); v1=t;\n t=min(v3,v5); v5=max(v3,v5); v3=t;\n t=min(v3,v4); v4=max(v3,v4); v3=t;\n return (v2 + v3) * 0.5;\n}\nfn _gpu_median_7(a: f32, b: f32, c: f32, d: f32, e: f32, f: f32, g: f32) -> f32 {\n var v0=a; var v1=b; var v2=c; var v3=d; var v4=e; var v5=f; var v6=g; var t: f32;\n t=min(v0,v1); v1=max(v0,v1); v0=t;\n t=min(v2,v3); v3=max(v2,v3); v2=t;\n t=min(v4,v5); v5=max(v4,v5); v4=t;\n t=min(v0,v2); v2=max(v0,v2); v0=t;\n t=min(v1,v3); v3=max(v1,v3); v1=t;\n t=min(v4,v6); v6=max(v4,v6); v4=t;\n t=min(v0,v4); v4=max(v0,v4); v0=t;\n t=min(v1,v5); v5=max(v1,v5); v1=t;\n t=min(v2,v6); v6=max(v2,v6); v2=t;\n t=min(v1,v2); v2=max(v1,v2); v1=t;\n t=min(v3,v5); v5=max(v3,v5); v3=t;\n t=min(v2,v4); v4=max(v2,v4); v2=t;\n t=min(v3,v4); v4=max(v3,v4); v3=t;\n return v3;\n}\nfn _gpu_median_8(a: f32, b: f32, c: f32, d: f32, e: f32, f: f32, g: f32, h: f32) -> f32 {\n var v0=a; var v1=b; var v2=c; var v3=d; var v4=e; var v5=f; var v6=g; var v7=h; var t: f32;\n t=min(v0,v1); v1=max(v0,v1); v0=t;\n t=min(v2,v3); v3=max(v2,v3); v2=t;\n t=min(v4,v5); v5=max(v4,v5); v4=t;\n t=min(v6,v7); v7=max(v6,v7); v6=t;\n t=min(v0,v2); v2=max(v0,v2); v0=t;\n t=min(v1,v3); v3=max(v1,v3); v1=t;\n t=min(v4,v6); v6=max(v4,v6); v4=t;\n t=min(v5,v7); v7=max(v5,v7); v5=t;\n t=min(v0,v4); v4=max(v0,v4); v0=t;\n t=min(v1,v5); v5=max(v1,v5); v1=t;\n t=min(v2,v6); v6=max(v2,v6); v2=t;\n t=min(v3,v7); v7=max(v3,v7); v3=t;\n t=min(v1,v2); v2=max(v1,v2); v1=t;\n t=min(v3,v4); v4=max(v3,v4); v3=t;\n t=min(v5,v6); v6=max(v5,v6); v5=t;\n t=min(v3,v5); v5=max(v3,v5); v3=t;\n t=min(v2,v4); v4=max(v2,v4); v2=t;\n t=min(v3,v4); v4=max(v3,v4); v3=t;\n return (v3 + v4) * 0.5;\n}\n";
123
176
  /**
124
177
  * GPU color space conversion preamble (GLSL syntax).
125
178
  *
@@ -1,4 +1,4 @@
1
- /* 0.57.0 */
1
+ /* 0.59.0 */
2
2
  * JavaScript interval arithmetic compilation target
3
3
  *
4
4
  * Compiles mathematical expressions to JavaScript code using interval arithmetic
@@ -61,9 +61,9 @@ export declare class ComputeEngineIntervalFunction extends Function {
61
61
  gammaln: typeof import("../interval").gammaln;
62
62
  factorial: typeof import("../interval").factorial;
63
63
  factorial2: typeof import("../interval").factorial2;
64
- binomial: typeof import("../interval/elementary").binomial;
65
- gcd: typeof import("../interval/elementary").gcd;
66
- lcm: typeof import("../interval/elementary").lcm;
64
+ binomial: typeof import("../interval").binomial;
65
+ gcd: typeof import("../interval").gcd;
66
+ lcm: typeof import("../interval").lcm;
67
67
  chop: typeof import("../interval/elementary").chop;
68
68
  erf: typeof import("../interval/elementary").erf;
69
69
  erfc: typeof import("../interval/elementary").erfc;
@@ -1,4 +1,4 @@
1
- /* 0.57.0 */
1
+ /* 0.59.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';
@@ -1,4 +1,4 @@
1
- /* 0.57.0 */
1
+ /* 0.59.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.57.0 */
1
+ /* 0.59.0 */
2
2
  /**
3
3
  * Source code in the target language
4
4
  */
@@ -1,4 +1,4 @@
1
- /* 0.57.0 */
1
+ /* 0.59.0 */
2
2
  import type { CompiledFunctions } from './types';
3
3
  import { GPUShaderTarget } from './gpu-target';
4
4
  /**
@@ -1,4 +1,4 @@
1
- /* 0.57.0 */
1
+ /* 0.59.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.57.0 */
1
+ /* 0.59.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.57.0 */
1
+ /* 0.59.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.57.0 */
1
+ /* 0.59.0 */
2
2
  export type CommonSymbolTable = {
3
3
  [symbol: string]: null | Expression;
4
4
  };
@@ -1,4 +1,4 @@
1
- /* 0.57.0 */
1
+ /* 0.59.0 */
2
2
  import type { LanguageTarget } from './compilation/types';
3
3
  /**
4
4
  * Internal registry for compilation targets.
@@ -1,4 +1,4 @@
1
- /* 0.57.0 */
1
+ /* 0.59.0 */
2
2
  type ResetHooks = {
3
3
  refreshNumericConstants: () => void;
4
4
  resetCommonSymbols: () => void;
@@ -1,4 +1,4 @@
1
- /* 0.57.0 */
1
+ /* 0.59.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.57.0 */
1
+ /* 0.59.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.57.0 */
1
+ /* 0.59.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.57.0 */
1
+ /* 0.59.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.57.0 */
1
+ /* 0.59.0 */
2
2
  import type { AngularUnit } from './types-definitions';
3
3
  export declare class EngineNumericConfiguration {
4
4
  private _precision;
@@ -1,7 +1,8 @@
1
- /* 0.57.0 */
1
+ /* 0.59.0 */
2
2
  private _timeLimit;
3
3
  private _iterationLimit;
4
4
  private _recursionLimit;
5
+ private _maxCollectionSize;
5
6
  private _deadline;
6
7
  private _isVerifying;
7
8
  get timeLimit(): number;
@@ -10,6 +11,8 @@
10
11
  set iterationLimit(value: number);
11
12
  get recursionLimit(): number;
12
13
  set recursionLimit(value: number);
14
+ get maxCollectionSize(): number;
15
+ set maxCollectionSize(value: number);
13
16
  get deadline(): number | undefined;
14
17
  set deadline(value: number | undefined);
15
18
  get timeRemaining(): number;
@@ -1,4 +1,4 @@
1
- /* 0.57.0 */
1
+ /* 0.59.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.57.0 */
1
+ /* 0.59.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,6 +1,14 @@
1
- /* 0.57.0 */
1
+ /* 0.59.0 */
2
2
  /**
3
- * Internal holder for simplification rules and their cache-staleness marker.
3
+ * Internal holder for a rule array and its cache-staleness marker.
4
+ *
5
+ * Despite its name, this class is rule-agnostic and backs all three
6
+ * engine rule stores: `ce.simplificationRules`, `ce.solveRules` and
7
+ * `ce.harmonizationRules`.
8
+ *
9
+ * Note: mutation detection is length-based, so a same-length in-place
10
+ * element replacement is not detected. Use the property setter (full
11
+ * replacement) for that.
4
12
  *
5
13
  * @internal
6
14
  */
@@ -1,4 +1,4 @@
1
- /* 0.57.0 */
1
+ /* 0.59.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.57.0 */
1
+ /* 0.59.0 */
2
2
  type ResolverScope = {
3
3
  parent: ResolverScope | null;
4
4
  types?: Record<string, TypeReference>;
@@ -1,4 +1,4 @@
1
- /* 0.57.0 */
1
+ /* 0.59.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.57.0 */
1
+ /* 0.59.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.57.0 */
1
+ /* 0.59.0 */
2
2
  import type { BoxedDefinition, Expression, IComputeEngine as ComputeEngine, Scope } from './global-types';
3
3
  /***
4
4
  * ### THEORY OF OPERATIONS
@@ -0,0 +1,13 @@
1
+ /* 0.59.0 */
2
+ import type { FungrimLoadOptions, FungrimLoadReport, FungrimRuleData } from './types';
3
+ /** The compiled artifact (the whole slice, bundled as JSON). */
4
+ export declare const FUNGRIM_CORE: FungrimRuleData;
5
+ /**
6
+ * Load the compiled Fungrim identities into a Compute Engine instance.
7
+ *
8
+ * Synchronous and idempotent per engine: a second call with an overlapping
9
+ * selection skips the already-loaded rule ids. Shell declarations go into
10
+ * the **current** scope — call `loadIdentities` before declaring user
11
+ * symbols that could shadow shell heads.
12
+ */
13
+ export declare function loadIdentities(ce: IComputeEngine, options?: FungrimLoadOptions): FungrimLoadReport;
@@ -0,0 +1,160 @@
1
+ /* 0.59.0 */
2
+ import type { BoxedSubstitution } from '../types-serialization';
3
+ /** Raw MathJSON — the artifact is plain JSON. */
4
+ export type FungrimMathJson = unknown;
5
+ /**
6
+ * A declarative guard specification, compiled offline from a corpus entry's
7
+ * assumptions (FUNGRIM-PLAN-5-LOADER.md §2.2). The runtime loader turns each
8
+ * spec into a tri-valued condition closure; every predicate must return a
9
+ * definitive positive for the rule to fire (fail-closed).
10
+ */
11
+ export type GuardSpec = {
12
+ k: 'type';
13
+ wc: string;
14
+ t: 'integer' | 'real' | 'rational' | 'complex';
15
+ } | {
16
+ k: 'cmp';
17
+ wc: string;
18
+ op: 'gt' | 'ge' | 'lt' | 'le';
19
+ bound: FungrimMathJson;
20
+ }
21
+ /**
22
+ * Phase 3: comparison over a part extractor of the substituted value —
23
+ * `Greater(Re(z), 0)`, `Less(Abs(q), 1)`, `Element(Im(z), Interval(a,b))`.
24
+ * Literal substitutions fold numerically; symbol substitutions consult the
25
+ * Track-3 part-bound assumption facts.
26
+ */
27
+ | {
28
+ k: 'part-cmp';
29
+ wc: string;
30
+ part: 're' | 'im' | 'abs' | 'arg';
31
+ op: 'gt' | 'ge' | 'lt' | 'le';
32
+ bound: FungrimMathJson;
33
+ }
34
+ /**
35
+ * Phase 3: membership in an inert or compound set (`HH`, explicit
36
+ * `Set(…)`, `Union(…)`). Fires only on a literal `True` from the Element
37
+ * evaluation — for inert shells like `HH` (no `contains` handler) that is
38
+ * the Track-3 stored-membership exact-match path
39
+ * (`assume(Element(tau, HH))`); literals can never discharge those.
40
+ */
41
+ | {
42
+ k: 'member';
43
+ wc: string;
44
+ set: FungrimMathJson;
45
+ } | {
46
+ k: 'ne';
47
+ lhs: FungrimMathJson;
48
+ rhs: FungrimMathJson;
49
+ } | {
50
+ k: 'eval';
51
+ pred: FungrimMathJson;
52
+ };
53
+ /** Corpus entry class of a compiled rule. */
54
+ export type FungrimRuleClass = 'specific-value' | 'identity';
55
+ /** Which engine rule store a compiled rule is routed to. */
56
+ export type FungrimRuleTarget = 'simplify' | 'solve' | 'harmonization';
57
+ /**
58
+ * One compiled rule record from the artifact. `match`/`replace` are stored
59
+ * in CANONICAL-form MathJSON: the loader must box them canonically (in a
60
+ * scope where the wildcards carry their guard-implied types) before handing
61
+ * them to the engine.
62
+ */
63
+ export type CompiledFungrimRule = {
64
+ /** `'fungrim:<entry-id>'` — surfaces in `simplify()` steps' `because`. */
65
+ id: string;
66
+ match: FungrimMathJson;
67
+ replace: FungrimMathJson;
68
+ guards: GuardSpec[];
69
+ purpose: RulePurpose;
70
+ target: FungrimRuleTarget;
71
+ class: FungrimRuleClass;
72
+ /** Heads referenced by the rule (for shell pruning and diagnostics). */
73
+ heads: string[];
74
+ /** Corpus topics (for load-time filtering). */
75
+ topics: string[];
76
+ };
77
+ /** A pruned shell declaration: a head referenced by the compiled rules that
78
+ * is not a Compute Engine built-in. */
79
+ export type FungrimShellDeclaration = {
80
+ signature: string;
81
+ description?: string;
82
+ arity?: number | number[];
83
+ };
84
+ /** Provenance and compile-time statistics baked into the artifact. */
85
+ export type FungrimManifest = {
86
+ schemaVersion: number;
87
+ generator: string;
88
+ upstream: {
89
+ name: string;
90
+ snapshotSha256: string | null;
91
+ translator: string | null;
92
+ };
93
+ slice: {
94
+ classes: string[];
95
+ guardLevels: string[];
96
+ entries: number;
97
+ };
98
+ counts: {
99
+ rules: number;
100
+ byPurpose: Record<string, number>;
101
+ byClass: Record<string, number>;
102
+ byTarget: Record<string, number>;
103
+ };
104
+ /** Offline skip counts by reason (guard-uncompilable, compat-signature,
105
+ * wildcard-loss, no-fire, duplicate-undirected, lhs-not-value-form, …). */
106
+ ledger: Record<string, number>;
107
+ };
108
+ /** The shape of the compiled artifact (`fungrim-core-data.json`). */
109
+ export type FungrimRuleData = {
110
+ manifest: FungrimManifest;
111
+ declarations: Record<string, FungrimShellDeclaration>;
112
+ rules: CompiledFungrimRule[];
113
+ };
114
+ /**
115
+ * Debug hook invoked when a rule's condition fails specifically because a
116
+ * guard predicate returned `undefined` (unknown) — as opposed to a
117
+ * definitive negative. Converts "the rule silently didn't fire" into an
118
+ * actionable trace (FUNGRIM-PLAN-5-LOADER.md §2.8).
119
+ */
120
+ export type FungrimGuardUndecidedHandler = (ruleId: string, wildcards: BoxedSubstitution) => void;
121
+ /** Options for `loadIdentities()` (FUNGRIM-PLAN-5-LOADER.md §2.1). */
122
+ export type FungrimLoadOptions = {
123
+ /** Only load rules tagged with at least one of these corpus topics. */
124
+ topics?: ReadonlyArray<string>;
125
+ /** Only load rules of these classes. */
126
+ classes?: ReadonlyArray<FungrimRuleClass>;
127
+ /** Only load rules with these purposes. */
128
+ purposes?: ReadonlyArray<RulePurpose>;
129
+ /** When `true`, rules targeting the solve/harmonization stores are routed
130
+ * to `ce.solveRules`/`ce.harmonizationRules`. **Default**: `false`
131
+ * (such rules are skipped with reason `'solve-disabled'`). */
132
+ solve?: boolean;
133
+ /** Debug hook for guard predicates that return `undefined`. */
134
+ onGuardUndecided?: FungrimGuardUndecidedHandler;
135
+ /** Alternate compiled artifact (testing, future per-family data modules).
136
+ * **Default**: the bundled `FUNGRIM_CORE` artifact. */
137
+ data?: FungrimRuleData;
138
+ };
139
+ /** The report returned by `loadIdentities()` (FUNGRIM-PLAN-5-LOADER.md §2.8). */
140
+ export type FungrimLoadReport = {
141
+ /** Number of rules registered by this call. */
142
+ loaded: number;
143
+ byTarget: Record<FungrimRuleTarget, number>;
144
+ byPurpose: Record<RulePurpose, number>;
145
+ /** Shell heads newly declared in the current scope by this call. */
146
+ declared: string[];
147
+ /** Runtime skips: selection filters, already-loaded ids, boxing failures
148
+ * in the user's environment. */
149
+ skipped: {
150
+ id: string;
151
+ reason: string;
152
+ }[];
153
+ /** Baked-in offline skip counts by reason, from the artifact manifest —
154
+ * what the *corpus* contains vs. what this artifact can do. */
155
+ compileLedger: Record<string, number>;
156
+ };
157
+ export type IdentitiesLoadOptions = FungrimLoadOptions;
158
+ export type IdentitiesLoadReport = FungrimLoadReport;
159
+ export type IdentitiesRuleData = FungrimRuleData;
160
+ export type IdentitiesGuardUndecidedHandler = FungrimGuardUndecidedHandler;
@@ -1,4 +1,4 @@
1
- /* 0.57.0 */
1
+ /* 0.59.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';