@cortex-js/compute-engine 0.58.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 +1721 -483
  3. package/dist/compile.min.esm.js +122 -74
  4. package/dist/compile.min.umd.cjs +122 -74
  5. package/dist/compile.umd.cjs +1721 -483
  6. package/dist/compute-engine.esm.js +25209 -22883
  7. package/dist/compute-engine.min.esm.js +135 -87
  8. package/dist/compute-engine.min.umd.cjs +135 -87
  9. package/dist/compute-engine.umd.cjs +24952 -22626
  10. package/dist/core.esm.js +25208 -22882
  11. package/dist/core.min.esm.js +134 -86
  12. package/dist/core.min.umd.cjs +134 -86
  13. package/dist/core.umd.cjs +24951 -22625
  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 +653 -330
  19. package/dist/interval.min.esm.js +8 -8
  20. package/dist/interval.min.umd.cjs +8 -8
  21. package/dist/interval.umd.cjs +653 -330
  22. package/dist/latex-syntax.esm.js +758 -512
  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 +758 -512
  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 +1349 -228
  31. package/dist/numerics.min.esm.js +16 -5
  32. package/dist/numerics.min.umd.cjs +16 -5
  33. package/dist/numerics.umd.cjs +1349 -228
  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 +1 -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 +1 -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 +14 -4
  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 +1 -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 +15 -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 +1 -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 +48 -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 +1 -1
  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 +19 -3
  254. package/dist/types/compute-engine/types-evaluation.d.ts +1 -1
  255. package/dist/types/compute-engine/types-expression.d.ts +17 -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.58.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.
48
+ */
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.
42
52
  */
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";
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.
@@ -1,4 +1,4 @@
1
- /* 0.58.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.58.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.58.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.58.0 */
1
+ /* 0.59.0 */
2
2
  /**
3
3
  * Source code in the target language
4
4
  */
@@ -1,4 +1,4 @@
1
- /* 0.58.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.58.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.58.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.58.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.58.0 */
1
+ /* 0.59.0 */
2
2
  export type CommonSymbolTable = {
3
3
  [symbol: string]: null | Expression;
4
4
  };
@@ -1,4 +1,4 @@
1
- /* 0.58.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.58.0 */
1
+ /* 0.59.0 */
2
2
  type ResetHooks = {
3
3
  refreshNumericConstants: () => void;
4
4
  resetCommonSymbols: () => void;
@@ -1,4 +1,4 @@
1
- /* 0.58.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.58.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.58.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.58.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.58.0 */
1
+ /* 0.59.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.58.0 */
1
+ /* 0.59.0 */
2
2
  private _timeLimit;
3
3
  private _iterationLimit;
4
4
  private _recursionLimit;
@@ -1,4 +1,4 @@
1
- /* 0.58.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.58.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.58.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.58.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.58.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.58.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.58.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.58.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.58.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';
@@ -1,11 +1,11 @@
1
- /* 0.58.0 */
1
+ /* 0.59.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, OperatorInfo, SymbolInfo } from './global-types';
8
+ import type { ValueDefinition, OperatorDefinition, AngularUnit, AssignValue, AssumeResult, Expression, BoxedRule, BoxedRuleSet, BoxedSubstitution, CanonicalOptions, Metadata, Rule, RulePurpose, Scope, EvalContext, ExpressionInput, IComputeEngine, ILatexSyntax, BoxedDefinition, SymbolDefinition, SequenceDefinition, SequenceStatus, SequenceInfo, OEISSequenceInfo, OEISOptions, LibraryDefinition, OperatorInfo, SymbolInfo } from './global-types';
9
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';
@@ -92,6 +92,10 @@ export declare class ComputeEngine implements IComputeEngine {
92
92
  private _cost?;
93
93
  /** @internal Backing state for simplificationRules */
94
94
  private _simplificationRules;
95
+ /** @internal Backing state for solveRules */
96
+ private _solveRules;
97
+ /** @internal Backing state for harmonizationRules */
98
+ private _harmonizationRules;
95
99
  /** @internal Registry of compilation targets */
96
100
  private _compilationTargets;
97
101
  /** @internal Fu trigonometric simplification algorithm */
@@ -112,6 +116,8 @@ export declare class ComputeEngine implements IComputeEngine {
112
116
  get contextStack(): ReadonlyArray<EvalContext>;
113
117
  set contextStack(stack: ReadonlyArray<EvalContext>);
114
118
  /** @internal */
119
+ private __typeResolver;
120
+ /** @internal */
115
121
  get _typeResolver(): TypeResolver;
116
122
  /**
117
123
  * Declare a new type in the current scope.
@@ -445,6 +451,43 @@ export declare class ComputeEngine implements IComputeEngine {
445
451
  */
446
452
  get simplificationRules(): Rule[];
447
453
  set simplificationRules(rules: Rule[]);
454
+ /**
455
+ * The rules used by `solve()` to find roots of univariate expressions.
456
+ *
457
+ * Each rule matches a normalized equation `f(_x) = 0` — the unknown is
458
+ * the wildcard `_x` — and `replace` produces a root expression.
459
+ * Conditions should reject matches where other wildcards capture `_x`.
460
+ *
461
+ * Candidate roots are validated against the original equation, so an
462
+ * over-eager template degrades to a no-op rather than a wrong answer.
463
+ *
464
+ * Initialized to a copy of the built-in root-finding rules.
465
+ *
466
+ * Add custom rules with `push()`:
467
+ * ```ts
468
+ * ce.solveRules.push({
469
+ * match: ['Add', ['Tan', '_x'], '__b'],
470
+ * replace: ['Arctan', ['Negate', '__b']],
471
+ * condition: ({ __b }) => !__b.has('_x'),
472
+ * });
473
+ * ```
474
+ *
475
+ * Or replace entirely:
476
+ * ```ts
477
+ * ce.solveRules = myCustomRules;
478
+ * ```
479
+ */
480
+ get solveRules(): Rule[];
481
+ set solveRules(rules: Rule[]);
482
+ /**
483
+ * The rules used by `solve()` to transform an equation into equivalent,
484
+ * easier-to-solve forms before root-finding (e.g. `ln f(x) → f(x) - 1`).
485
+ *
486
+ * Same conventions and extension pattern as `solveRules`: the unknown is
487
+ * the wildcard `_x`; `push()` to extend, assign to replace.
488
+ */
489
+ get harmonizationRules(): Rule[];
490
+ set harmonizationRules(rules: Rule[]);
448
491
  /**
449
492
  * Return definition matching the symbol, starting with the current
450
493
  * lexical scope and going up the scope chain.
@@ -738,6 +781,9 @@ export declare class ComputeEngine implements IComputeEngine {
738
781
  }): Expression;
739
782
  rules(rules: Rule | ReadonlyArray<Rule | BoxedRule> | BoxedRuleSet | undefined | null, options?: {
740
783
  canonical?: boolean;
784
+ /** Default purpose applied to any rule in the set that doesn't carry
785
+ * its own `purpose` tag (a per-rule tag takes precedence). */
786
+ purpose?: RulePurpose;
741
787
  }): BoxedRuleSet;
742
788
  /**
743
789
  * Return a set of built-in rules.
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  * Basic interval arithmetic operations
3
3
  *
4
4
  * @module interval/arithmetic
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  * Comparison and conditional interval operations
3
3
  *
4
4
  * @module interval/comparison
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  * Elementary interval functions (sqrt, pow, exp, ln, abs, floor, ceil, min, max, mod)
3
3
  *
4
4
  * @module interval/elementary
@@ -173,15 +173,23 @@ export declare function factorial(x: Interval | IntervalResult): IntervalResult;
173
173
  export declare function factorial2(x: Interval | IntervalResult): IntervalResult;
174
174
  /**
175
175
  * Binomial coefficient C(n, k) on intervals.
176
- * Both arguments are rounded to nearest integer. Monotonic in n for fixed k.
176
+ *
177
+ * Both arguments are rounded to nearest integer. C(n, k) is not monotone in k
178
+ * (it peaks at k ≈ n/2), so the enclosure enumerates the integer grid.
177
179
  */
178
180
  export declare function binomial(n: Interval | IntervalResult, k: Interval | IntervalResult): IntervalResult;
179
181
  /**
180
182
  * GCD on intervals. Both arguments rounded to nearest integer.
183
+ *
184
+ * gcd is not monotone (e.g. gcd(6, 5) = 1 sits between gcd(6, 6) = 6 and
185
+ * gcd(6, 4) = 2), so the enclosure enumerates the integer grid.
181
186
  */
182
187
  export declare function gcd(a: Interval | IntervalResult, b: Interval | IntervalResult): IntervalResult;
183
188
  /**
184
189
  * LCM on intervals. Both arguments rounded to nearest integer.
190
+ *
191
+ * lcm is not monotone (e.g. lcm(2, 5) = 10 exceeds lcm(2, 6) = 6), so the
192
+ * enclosure enumerates the integer grid.
185
193
  */
186
194
  export declare function lcm(a: Interval | IntervalResult, b: Interval | IntervalResult): IntervalResult;
187
195
  /**
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  * Interval arithmetic library for reliable function evaluation
3
3
  *
4
4
  * This module provides interval versions of mathematical operations
@@ -16,7 +16,7 @@ import { less as _less, lessEqual as _lessEqual, greater as _greater, greaterEqu
16
16
  export type { Interval, IntervalResult, BoolInterval } from './types';
17
17
  export { ok, point, containsExtremum, unionResults, mergeDomainClip, isPoint, containsZero, isPositive, isNegative, isNonNegative, isNonPositive, width, midpoint, getValue, unwrap, unwrapOrPropagate, } from './util';
18
18
  export { add, sub, mul, div, negate, _mul } from './arithmetic';
19
- export { sqrt, square, pow, powInterval, exp, ln, log10, log2, abs, floor, ceil, round, fract, trunc, min, max, mod, remainder, heaviside, sign, gamma, gammaln, factorial, factorial2, } from './elementary';
19
+ export { sqrt, square, pow, powInterval, exp, ln, log10, log2, abs, floor, ceil, round, fract, trunc, min, max, mod, remainder, heaviside, sign, gamma, gammaln, factorial, factorial2, binomial, gcd, lcm, } from './elementary';
20
20
  export { sin, cos, tan, cot, sec, csc, asin, acos, atan, atan2, sinh, cosh, tanh, asinh, acosh, atanh, acot, acsc, asec, coth, csch, sech, acoth, acsch, asech, sinc, fresnelS, fresnelC, } from './trigonometric';
21
21
  export { less, lessEqual, greater, greaterEqual, equal, notEqual, and, or, not, piecewise, clamp, } from './comparison';
22
22
  /**
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  * Trigonometric interval functions
3
3
  *
4
4
  * @module interval/trigonometric
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  * Interval arithmetic types for reliable function evaluation
3
3
  *
4
4
  * @module interval/types
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  * Utility functions for interval arithmetic
3
3
  *
4
4
  * @module interval/util
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  * Default LaTeX dictionary assembly.
3
3
  *
4
4
  * This file imports all individual domain dictionaries and assembles them
@@ -1,2 +1,2 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  export declare const DEFINITIONS_ALGEBRA: LatexDictionary;
@@ -1,2 +1,2 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  export declare const DEFINITIONS_ARITHMETIC: LatexDictionary;
@@ -1,2 +1,2 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  export declare const DEFINITIONS_CALCULUS: LatexDictionary;
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  /**
3
3
  * LaTeX dictionary for color constructors and conversions.
4
4
  *
@@ -1,2 +1,2 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  export declare const DEFINITIONS_COMPLEX: LatexDictionary;