@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,27 +1,47 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  import type { BigNum } from './types';
3
3
  export declare function gammaln(z: number): number;
4
4
  export declare function gamma(z: number): number;
5
5
  /**
6
- * Inverse Error Function.
6
+ * Inverse Error Function, accurate to full machine (double) precision.
7
7
  *
8
+ * Winitzki's approximation (~3 correct digits) refined with Newton's
9
+ * method on the full-precision `erf()`:
10
+ * y ← y − (erf(y) − x)·(√π/2)·e^{y²}
11
+ * Each iteration doubles the number of correct digits, so 4 iterations
12
+ * reach machine precision.
13
+ *
14
+ * (Previously used a 6-term truncated Maclaurin series, which was only
15
+ * ~4-digit accurate at x = 0.5 and diverged badly for |x| → 1.)
8
16
  */
9
17
  export declare function erfInv(x: number): number;
10
18
  /**
11
- * Trivial function, used when compiling.
19
+ * Complementary error function, erfc(x) = 1 - erf(x), accurate to full
20
+ * machine (double) precision.
21
+ *
22
+ * For |x| < 2 the value is computed as `1 - erf(x)` (no significant
23
+ * cancellation). For larger |x|, `1 - erf(x)` would lose all precision
24
+ * (erf(x) ≈ 1), so erfc is computed directly from a continued fraction
25
+ * (DLMF 7.9.3) evaluated with the modified Lentz algorithm.
26
+ *
27
+ * References:
28
+ * - NIST DLMF: https://dlmf.nist.gov/7.9
12
29
  */
13
30
  export declare function erfc(x: number): number;
14
31
  /**
15
- * An approximation of the gaussian error function, Erf(), using
16
- * Abramowitz and Stegun approximation.
32
+ * The Gauss error function, erf(x), accurate to full machine (double)
33
+ * precision.
34
+ *
35
+ * Computed from the well-conditioned Maclaurin series (DLMF 7.6.2):
36
+ * erf(x) = (2/√π) e^{-x²} Σ_{n≥0} 2^n x^{2n+1} / (1·3·5···(2n+1))
37
+ * All terms are positive, so there is no subtractive cancellation. For
38
+ * |x| ≥ 6 the result rounds to ±1 (erfc(6) ≈ 2.15e-17, below machine eps).
17
39
  *
18
- * Thoughts for future improvements:
19
- * - https://math.stackexchange.com/questions/321569/approximating-the-error-function-erf-by-analytical-functions
20
- * - https://en.wikipedia.org/wiki/Error_function#Approximation_with_elementary_functions
21
-
40
+ * (Previously used the 5-term Abramowitz & Stegun rational approximation,
41
+ * which was only ~7-digit accurate.)
22
42
  *
23
43
  * References:
24
- * - NIST: https://dlmf.nist.gov/7.24#i
44
+ * - NIST DLMF: https://dlmf.nist.gov/7.6
25
45
  */
26
46
  export declare function erf(x: number): number;
27
47
  /**
@@ -185,3 +205,51 @@ export declare function fresnelS(x: number): number;
185
205
  export declare function fresnelC(x: number): number;
186
206
  /** Unnormalized cardinal sine: sinc(x) = sin(x)/x, sinc(0) = 1. */
187
207
  export declare function sinc(x: number): number;
208
+ /**
209
+ * Bignum error function. Precision scales with `BigDecimal.precision`.
210
+ *
211
+ * - |x| ≤ √((p+10)·ln 10): Maclaurin series (DLMF 7.6.2), no cancellation.
212
+ * - beyond: erf(x) rounds to ±1 at the working precision
213
+ * (erfc(x) < e^{−x²} ≤ 10^{−(p+10)}).
214
+ */
215
+ export declare function bigErf(ce: ComputeEngine, x: BigNum): BigNum;
216
+ /**
217
+ * Bignum complementary error function.
218
+ * Precision scales with `BigDecimal.precision`.
219
+ *
220
+ * - x² log10(e) ≤ p+10: computed as 1 − erf(x) with the working precision
221
+ * raised by the x²·log10(e) digits lost to cancellation.
222
+ * - beyond: the asymptotic series (DLMF 7.12.1), which by construction of
223
+ * the switchover delivers ≥ p+10 digits there.
224
+ */
225
+ export declare function bigErfc(ce: ComputeEngine, x: BigNum): BigNum;
226
+ /**
227
+ * Bignum inverse error function: y such that erf(y) = x, for x ∈ [−1, 1].
228
+ * Precision scales with `BigDecimal.precision`.
229
+ *
230
+ * Newton iteration on `bigErf`:
231
+ * y ← y − (erf(y) − x)·(√π/2)·e^{y²}
232
+ * seeded from the machine-precision Winitzki estimate (~3 digits; each
233
+ * iteration doubles the digits). Note that erfInv is intrinsically
234
+ * ill-conditioned as |x| → 1 (|dy/dx| = (√π/2)e^{y²}): the result is the
235
+ * best possible for the given input, but tiny perturbations of x near ±1
236
+ * produce large changes in y.
237
+ */
238
+ export declare function bigErfInv(ce: ComputeEngine, x: BigNum): BigNum;
239
+ /**
240
+ * Bignum unnormalized cardinal sine: sinc(x) = sin(x)/x, sinc(0) = 1.
241
+ * Precision scales with `BigDecimal.precision` (sin uses the engine's
242
+ * 1100-digit π for argument reduction).
243
+ */
244
+ export declare function bigSinc(x: BigNum): BigNum;
245
+ /**
246
+ * Bignum Fresnel sine integral S(x). Precision scales with
247
+ * `BigDecimal.precision`: Taylor series for πx²/2·log10(e) ≤ p+20 (with
248
+ * raised working precision to absorb the alternating-series cancellation),
249
+ * asymptotic expansion beyond (where it delivers ≥ p+10 digits).
250
+ */
251
+ export declare function bigFresnelS(x: BigNum): BigNum;
252
+ /**
253
+ * Bignum Fresnel cosine integral C(x). Same switchover as `bigFresnelS`.
254
+ */
255
+ export declare function bigFresnelC(x: BigNum): BigNum;
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  export declare function mean(values: Iterable<number>): number;
3
3
  export declare function bigMean(values: Iterable<BigDecimal>): BigDecimal;
4
4
  export declare function median(values: Iterable<number>): number;
@@ -1,2 +1,2 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  export declare function numberToString(num: number | bigint, fractionalDigits?: number | string): string;
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  /** @internal */
3
3
  type IsInteger<N extends number> = `${N}` extends `${string}.${string}` ? never : `${N}` extends `-${string}.${string}` ? never : number;
4
4
  /** A `SmallInteger` is an integer < 1e6
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  * Unit registry: dimension vectors, SI base units, prefixes, and conversion.
3
3
  *
4
4
  * A DimensionVector encodes the exponents for each of the 7 SI base
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  * OEIS (Online Encyclopedia of Integer Sequences) Integration
3
3
  *
4
4
  * This module provides functions to look up sequences in the OEIS database
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  * Utilities for declarative sequence definitions.
3
3
  *
4
4
  * This module provides functions to create subscriptEvaluate handlers
@@ -1,3 +1,3 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  /** Calculate the antiderivative of fn, as an expression (not a function) */
3
3
  export declare function antiderivative(fn: Expression, index: string): Expression;
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  /**
3
3
  *
4
4
  * @param fn The function to differentiate, a function literal.
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  /**
3
3
  *
4
4
  */
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  * Cost functions for the Fu trigonometric simplification algorithm.
3
3
  *
4
4
  * The primary objective is to minimize the number of trigonometric functions,
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  * Fu Algorithm Transformation Rules
3
3
  *
4
4
  * Programmatic implementations of TR1-TR22 from the Fu trigonometric
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  * Fu Algorithm for Trigonometric Simplification
3
3
  *
4
4
  * Implementation of the algorithm by Fu, Zhong, and Zeng:
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  export declare function evaluateAnd(args: ReadonlyArray<Expression>, { engine: ce }: {
3
3
  engine: ComputeEngine;
4
4
  }): Expression | undefined;
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  export declare function simplifyAbs(x: Expression): RuleStep | undefined;
3
3
  /**
4
4
  * Simplify expressions where Abs appears as the base of a power.
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  /**
3
3
  * Division simplification rules consolidated from simplify-rules.ts.
4
4
  *
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  /**
3
3
  * Extracts base + integer offset from an expression.
4
4
  * - Symbol `n` → { base: n, offset: 0 }
@@ -1,2 +1,2 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  export declare function simplifyHyperbolic(x: Expression): RuleStep | undefined;
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  /**
3
3
  * Infinity simplification rules consolidated from simplify-rules.ts.
4
4
  * Handles ~20 patterns for simplifying expressions involving infinity.
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  /**
3
3
  * Logarithm simplification rules consolidated from simplify-rules.ts.
4
4
  * Handles ~30 patterns for simplifying Ln and Log expressions.
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  export declare function simplifyLogicFunction(x: Expression): {
3
3
  value: Expression;
4
4
  because: string;
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  /**
3
3
  * Power simplification rules consolidated from simplify-rules.ts.
4
4
  * Handles ~25 patterns for simplifying Power expressions.
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  /**
3
3
  * Product simplification rules extracted from simplify-rules.ts.
4
4
  * Handles 13 patterns for simplifying Product expressions.
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  /**
3
3
  * # Performance Optimization Notes for Simplification Rules
4
4
  *
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  /**
3
3
  * Sum simplification rules extracted from simplify-rules.ts.
4
4
  * Handles 16 patterns for simplifying Sum expressions.
@@ -1,2 +1,2 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  export declare function simplifyTrig(x: Expression): RuleStep | undefined;
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  import { Expression, IComputeEngine as ComputeEngine, DataTypeMap, TensorDataType, TensorField } from '../global-types';
3
3
  /** @category Tensors */
4
4
  export declare function makeTensorField<DT extends keyof DataTypeMap>(ce: ComputeEngine, dtype: DT): TensorField<DataTypeMap[DT]>;
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  /** @category Tensors */
3
3
  export declare abstract class AbstractTensor<DT extends keyof DataTypeMap> implements Tensor<DT> {
4
4
  private ce;
@@ -6,8 +6,8 @@ export declare abstract class AbstractTensor<DT extends keyof DataTypeMap> imple
6
6
  * Return a tuple of tensors that have the same dtype.
7
7
  * If necessary, one of the two input tensors is upcast.
8
8
  *
9
- * The shape of the tensors is reshaped to a compatible
10
- * shape. If the shape is not compatible, `undefined` is returned.
9
+ * This harmonizes only the *dtype*; it does not reshape. Element-wise
10
+ * callers (see `broadcast`) must ensure the shapes are compatible.
11
11
  *
12
12
  * @param lhs
13
13
  * @param rhs
@@ -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 { BoxedType } from '../common/type/boxed-type';
4
4
  import type { LatexString } from './latex-syntax/types';
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  import type { OneOf } from '../common/one-of';
3
3
  import type { MathJsonSymbol, MathJsonNumberObject } from '../math-json';
4
4
  import type { Type, TypeString, TypeResolver } from '../common/type/types';
@@ -10,8 +10,9 @@ import type { BigNum, Rational } from './numerics/types';
10
10
  import type { Expression, ExpressionInput } from './types-expression';
11
11
  import type { Metadata, CanonicalOptions, FormOption, BoxedSubstitution } from './types-serialization';
12
12
  import type { AngularUnit, SymbolDefinition, OperatorDefinition, ValueDefinition, BoxedDefinition, SequenceDefinition, SequenceStatus, SequenceInfo, OEISSequenceInfo, OEISOptions } from './types-definitions';
13
- import type { AssumeResult, Rule as KernelRule, BoxedRule as KernelBoxedRule, BoxedRuleSet as KernelBoxedRuleSet, RuleStep as KernelRuleStep, AssignValue as KernelAssignValue, Scope as KernelScope, EvalContext as KernelEvalContext } from './types-kernel-evaluation';
13
+ import type { AssumeResult, Rule as KernelRule, BoxedRule as KernelBoxedRule, BoxedRuleSet as KernelBoxedRuleSet, RulePurpose, RuleStep as KernelRuleStep, AssignValue as KernelAssignValue, Scope as KernelScope, EvalContext as KernelEvalContext } from './types-kernel-evaluation';
14
14
  import type { LanguageTarget, CompilationResult } from './compilation/types';
15
+ export type { RulePurpose } from './types-kernel-evaluation';
15
16
  type Rule = KernelRule<Expression, ExpressionInput, IComputeEngine>;
16
17
  type BoxedRule = KernelBoxedRule<Expression, IComputeEngine>;
17
18
  type BoxedRuleSet = KernelBoxedRuleSet<Expression, IComputeEngine>;
@@ -100,6 +101,19 @@ export interface IComputeEngine {
100
101
  * Initialized to the built-in simplification rules.
101
102
  * Users can `push()` additional rules or replace the entire array. */
102
103
  simplificationRules: Rule[];
104
+ /** The rules used by `solve()` to find roots of univariate expressions.
105
+ * Each rule matches a normalized equation `f(_x) = 0` — the unknown is
106
+ * the wildcard `_x` — and `replace` produces a root expression.
107
+ * Conditions should reject matches where other wildcards capture `_x`.
108
+ * Candidate roots are validated against the original equation, so an
109
+ * over-eager template degrades to a no-op rather than a wrong answer.
110
+ * Initialized to the built-in root-finding rules; `push()` to extend,
111
+ * assign to replace. */
112
+ solveRules: Rule[];
113
+ /** The rules used by `solve()` to transform an equation into equivalent,
114
+ * easier-to-solve forms before root-finding (e.g. `ln f(x) → f(x) - 1`).
115
+ * Same conventions and extension pattern as `solveRules`. */
116
+ harmonizationRules: Rule[];
103
117
  strict: boolean;
104
118
  expr(expr: NumericValue | ExpressionInput, options?: {
105
119
  form?: FormOption;
@@ -174,6 +188,9 @@ export interface IComputeEngine {
174
188
  type(type: Type | TypeString | BoxedType): BoxedType;
175
189
  rules(rules: Rule | ReadonlyArray<Rule | BoxedRule> | BoxedRuleSet | undefined | null, options?: {
176
190
  canonical?: boolean;
191
+ /** Default purpose applied to any rule in the set that doesn't carry
192
+ * its own `purpose` tag (a per-rule tag takes precedence). */
193
+ purpose?: RulePurpose;
177
194
  }): BoxedRuleSet;
178
195
  getRuleSet(id?: 'harmonization' | 'solve-univariate' | 'standard-simplification'): BoxedRuleSet | undefined;
179
196
  pushScope(scope?: Scope, name?: string): void;
@@ -419,4 +436,3 @@ declare module './types-definitions' {
419
436
  interface ComputeEngine extends IComputeEngine {
420
437
  }
421
438
  }
422
- export {};
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  import type { IComputeEngine as ComputeEngine } from './types-engine';
3
3
  import type { Expression, ExpressionInput } from './types-expression';
4
4
  import type { Assumption as KernelAssumption, AssumeResult, AssignValue as KernelAssignValue, BoxedRule as KernelBoxedRule, BoxedRuleSet as KernelBoxedRuleSet, EvaluateOptions as KernelEvaluateOptions, EvalContext as KernelEvalContext, ExpressionMapInterface as KernelExpressionMapInterface, Rule as KernelRule, RuleConditionFunction as KernelRuleConditionFunction, RuleFunction as KernelRuleFunction, RuleReplaceFunction as KernelRuleReplaceFunction, RuleStep as KernelRuleStep, RuleSteps as KernelRuleSteps, Scope as KernelScope } from './types-kernel-evaluation';
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  import type { OneOf } from '../common/one-of';
3
3
  import type { MathJsonExpression, MathJsonNumberObject, MathJsonStringObject, MathJsonSymbolObject, MathJsonFunctionObject, MathJsonSymbol, MathJsonDictionaryObject } from '../math-json';
4
4
  import type { Type, TypeString } from '../common/type/types';
@@ -1065,26 +1065,29 @@ export interface Expression {
1065
1065
  *
1066
1066
  * - If no rules apply, return `null`.
1067
1067
  *
1068
- * See also `expr.subs()` for a simple substitution of symbols.
1068
+ * The `form` option controls the form of *replacements*. The deprecated
1069
+ * `canonical` option is also accepted for backward compatibility; only one
1070
+ * of the two may be specified.
1069
1071
  *
1070
- * Procedure for the determining the canonical-status of the input expression and replacements:
1072
+ * When neither `form` nor `canonical` is specified, the form of each
1073
+ * replacement is determined as follows:
1074
+ * 1. the form of the replacement produced by the rule, if it has a
1075
+ * non-`'raw'` form;
1076
+ * 2. otherwise, the form of the expression being replaced;
1077
+ * 3. otherwise, the replacement is left in its raw form.
1071
1078
  *
1072
- * - If `options.canonical` is set, the *entire expr.* is canonicalized to this degree: whether
1073
- * the replacement occurs at the top-level, or within/recursively.
1074
- *
1075
- * - If otherwise, the *direct replacement will be canonical* if either the 'replaced' expression
1076
- * is canonical, or the given replacement (- is a Expression and -) is canonical.
1077
- * Notably also, if this replacement takes place recursively (not at the top-level), then exprs.
1078
- * containing the replaced expr. will still however have their (previous) canonical-status
1079
- * *preserved*... unless this expr. was previously non-canonical, and *replacements have resulted
1080
- * in canonical operands*. In this case, an expr. meeting this criteria will be updated to
1081
- * canonical status. (Canonicalization is opportunistic here, in other words).
1079
+ * While the form applies directly to replaced sub-expressions only, a
1080
+ * non-`'raw'` form also propagates 'opportunistically' up the expression
1081
+ * tree: an expression whose operands all share a form after replacement
1082
+ * assumes that form as well. (Specifying `form: 'raw'` disables this
1083
+ * propagation.)
1082
1084
  *
1083
1085
  * :::info[Note]
1084
- * Applicable to canonical and non-canonical expressions.
1086
+ * Applicable to input expressions of any form.
1085
1087
  *
1086
1088
  * To match a specific symbol (not a wildcard pattern), the `match` must be
1087
1089
  * a `Expression` (e.g., `{ match: ce.expr('x'), replace: ... }`).
1090
+ *
1088
1091
  * For simple symbol substitution, consider using `subs()` instead.
1089
1092
  * :::
1090
1093
  */
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  import type { TypeReference } from '../common/type/types';
3
3
  import type { BoxedType } from '../common/type/boxed-type';
4
4
  import type { LatexString } from './latex-syntax/types';
@@ -80,10 +80,27 @@ export type RuleReplaceFunction<Expr = unknown> = (expr: Expr, wildcards: BoxedS
80
80
  export type RuleConditionFunction<Expr = unknown, CE = unknown> = (wildcards: BoxedSubstitution<Expr>, ce: CE) => boolean;
81
81
  /** @category Rules */
82
82
  export type RuleFunction<Expr = unknown> = (expr: Expr) => undefined | Expr | RuleStep<Expr>;
83
+ /**
84
+ * The purpose of a rule determines how its result is treated by
85
+ * the simplification cost policy:
86
+ *
87
+ * - `'simplify'`: the result must pass the cost gate (the default;
88
+ * today's behavior — results that grow the expression are discarded).
89
+ * - `'transform'`: a mathematically-preferred rewrite; exempt from the
90
+ * cost gate (accepted by `simplify()` even if structurally larger).
91
+ * - `'expand'`: growth-by-design (series, argument expansion); skipped by
92
+ * `simplify()`, but reachable via `expr.replace()` and future expand APIs.
93
+ *
94
+ * @category Rules
95
+ */
96
+ export type RulePurpose = 'simplify' | 'transform' | 'expand';
83
97
  /** @category Rules */
84
98
  export type RuleStep<Expr = unknown> = {
85
99
  value: Expr;
86
100
  because: string;
101
+ /** The purpose of the rule that produced this step, stamped by
102
+ * `applyRule` from the firing rule. */
103
+ purpose?: RulePurpose;
87
104
  };
88
105
  /** @category Rules */
89
106
  export type RuleSteps<Expr = unknown> = RuleStep<Expr>[];
@@ -117,6 +134,13 @@ export type Rule<Expr = unknown, SemiExpr = unknown, CE = unknown> = string | Ru
117
134
  replace: LatexString | SemiExpr | RuleReplaceFunction<Expr> | RuleFunction<Expr>;
118
135
  condition?: LatexString | RuleConditionFunction<Expr, CE>;
119
136
  useVariations?: boolean;
137
+ /** Dispatch hint: this rule can only ever apply to expressions whose
138
+ * operator is one of these. Used to index the rule; semantics are
139
+ * unchanged (the rule is simply never tried on other operators). */
140
+ operators?: ReadonlyArray<string>;
141
+ /** How the result of this rule is treated by the simplification cost
142
+ * policy. See {@linkcode RulePurpose}. **Default**: `'simplify'`. */
143
+ purpose?: RulePurpose;
120
144
  id?: string;
121
145
  onBeforeMatch?: (rule: Rule<Expr, SemiExpr, CE>, expr: Expr) => void;
122
146
  onMatch?: (rule: Rule<Expr, SemiExpr, CE>, expr: Expr, replace: Expr | RuleStep<Expr>) => void;
@@ -128,6 +152,13 @@ export type BoxedRule<Expr = unknown, CE = unknown> = {
128
152
  replace: Expr | RuleReplaceFunction<Expr> | RuleFunction<Expr>;
129
153
  condition: undefined | RuleConditionFunction<Expr, CE>;
130
154
  useVariations?: boolean;
155
+ /** Dispatch hint: this rule can only ever apply to expressions whose
156
+ * operator is one of these. Used to index the rule; semantics are
157
+ * unchanged (the rule is simply never tried on other operators). */
158
+ operators?: ReadonlyArray<string>;
159
+ /** How the result of this rule is treated by the simplification cost
160
+ * policy. See {@linkcode RulePurpose}. **Default**: `'simplify'`. */
161
+ purpose?: RulePurpose;
131
162
  id?: string;
132
163
  onBeforeMatch?: (rule: Rule<Expr, unknown, CE>, expr: Expr) => void;
133
164
  onMatch?: (rule: Rule<Expr, unknown, CE>, expr: Expr, replace: Expr | RuleStep<Expr>) => void;
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  export type Hold = 'none' | 'all' | 'first' | 'rest' | 'last' | 'most';
3
3
  /**
4
4
  * Options to control serialization to MathJSON when using
@@ -126,9 +126,51 @@ export type ReplaceOptions = {
126
126
  */
127
127
  iterationLimit: number;
128
128
  /**
129
- * Canonicalization policy after replacement.
129
+ * Canonical-status of replaced sub-expressions.
130
+ *
131
+ * Equivalent to `form`: `true` maps to `'canonical'`, `false` to `'raw'`,
132
+ * and a `CanonicalForm` (or array of them) is used as-is. Specifying both
133
+ * `canonical` and `form` is an error.
134
+ *
135
+ * @deprecated Use `form` instead, which covers a wider range of forms.
136
+ */
137
+ canonical?: CanonicalOptions;
138
+ /**
139
+ * The form (`'canonical'`, `'structural'`, `'raw'`, or specific canonical
140
+ * transforms) applied to *replaced* sub-expressions.
141
+ *
142
+ * The form does not automatically apply to the entire input expression.
143
+ * However, a non-`'raw'` form propagates upward through the expression tree:
144
+ * an expression whose operands all share a form after replacement assumes
145
+ * that form as well.
146
+ *
147
+ * To guarantee a form for the *entire* result, either ensure the input is
148
+ * already in the requested form before replacing, or request the form on the
149
+ * result after replacement (e.g. with `.canonical`).
150
+ *
151
+ * If no `form` (or `canonical`) option is specified, the form of each
152
+ * replacement is determined by the rule itself: see `replace()`.
153
+ *
154
+ * Note: a `'raw'` form does not undo a form the replacement already has,
155
+ * e.g. when a `RuleFunction` returns an expression that is already
156
+ * canonical.
157
+ */
158
+ form: FormOption;
159
+ /**
160
+ * Traversal direction through the expression tree, for both rule matching
161
+ * and replacement:
162
+ *
163
+ * - `'left-right'` (default): post-order traversal — left sub-tree first,
164
+ * depth-first (LRN).
165
+ * - `'right-left'`: reverse post-order — right sub-tree first, depth-first
166
+ * (RLN).
167
+ *
168
+ * In both cases the root (input) expression is visited last.
169
+ *
170
+ * The direction is only observable for order-sensitive rules, e.g. a
171
+ * `RuleFunction` whose replacements depend on visit order.
130
172
  */
131
- canonical: CanonicalOptions;
173
+ direction: 'left-right' | 'right-left';
132
174
  };
133
175
  /**
134
176
  * Canonical normalization transforms.
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  import type { BoxedSubstitution as KernelBoxedSubstitution, CanonicalForm, CanonicalOptions, FormOption, Hold, JsonSerializationOptions, Metadata, PatternMatchOptions as KernelPatternMatchOptions, ReplaceOptions, Substitution as KernelSubstitution } from './types-kernel-serialization';
3
3
  export type { Hold, JsonSerializationOptions, ReplaceOptions, CanonicalForm, CanonicalOptions, FormOption, Metadata, };
4
4
  /**
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  export type { MathJsonExpression, MathJsonAttributes, MathJsonNumberObject, MathJsonSymbolObject, MathJsonStringObject, MathJsonFunctionObject, DictionaryValue, MathJsonDictionaryObject, ExpressionObject, MathJsonSymbol, } from '../math-json/types';
3
3
  export * from '../common/type/boxed-type';
4
4
  export * from '../common/type/types';
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  export { ComputeEngine } from './compute-engine/index';
3
3
  export type * from './compute-engine/types';
4
4
  export { LatexSyntax, parse as parseLatex, serialize as serializeLatex, } from './compute-engine/latex-syntax/latex-syntax';
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  export { ComputeEngine } from './compute-engine/index';
3
3
  export type * from './compute-engine/types';
4
4
  export type { Interval, IntervalResult, BoolInterval, } from './compute-engine/interval/types';
@@ -0,0 +1,3 @@
1
+ /* 0.59.0 */
2
+ export { loadIdentities, FUNGRIM_CORE } from './compute-engine/fungrim/loader';
3
+ export type { IdentitiesLoadOptions, IdentitiesLoadReport, IdentitiesRuleData, IdentitiesGuardUndecidedHandler, FungrimLoadOptions, FungrimLoadReport, FungrimRuleData, FungrimGuardUndecidedHandler, FungrimManifest, FungrimShellDeclaration, FungrimRuleClass, FungrimRuleTarget, FungrimMathJson, CompiledFungrimRule, GuardSpec, } from './compute-engine/fungrim/types';
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  export type { Interval, IntervalResult, BoolInterval, } from './compute-engine/interval/types';
3
3
  export { ok, point, containsExtremum, unionResults, mergeDomainClip, isPoint, containsZero, isPositive, isNegative, isNonNegative, isNonPositive, width, midpoint, getValue, unwrap, unwrapOrPropagate, } from './compute-engine/interval/util';
4
4
  export { add, sub, mul, div, negate, _mul, } from './compute-engine/interval/arithmetic';
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  * Entry point for `@cortex-js/compute-engine/latex-syntax`.
3
3
  *
4
4
  * Provides standalone LaTeX <-> MathJSON parsing and serialization
@@ -11,4 +11,4 @@ export type { LatexSyntaxOptions } from './compute-engine/latex-syntax/latex-syn
11
11
  export { LATEX_DICTIONARY, CORE_DICTIONARY, SYMBOLS_DICTIONARY, ALGEBRA_DICTIONARY, ARITHMETIC_DICTIONARY, COMPLEX_DICTIONARY, TRIGONOMETRY_DICTIONARY, CALCULUS_DICTIONARY, LINEAR_ALGEBRA_DICTIONARY, STATISTICS_DICTIONARY, LOGIC_DICTIONARY, SETS_DICTIONARY, INEQUALITIES_DICTIONARY, UNITS_DICTIONARY, OTHERS_DICTIONARY, PHYSICS_DICTIONARY, } from './compute-engine/latex-syntax/dictionary/default-dictionary';
12
12
  export type { LatexDictionaryEntry, LatexDictionary, SerializeLatexOptions, ParseLatexOptions, LatexString, } from './compute-engine/latex-syntax/types';
13
13
  export type { MathJsonExpression } from './math-json/types';
14
- export declare const version = "0.58.0";
14
+ export declare const version = "0.59.0";
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  * Return true if the string is a valid symbol.
3
3
  *
4
4
  * Check for symbols matching a profile of [Unicode UAX31](https://unicode.org/reports/tr31/)
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  * The following properties can be added to any MathJSON expression
3
3
  * to provide additional information about the expression.
4
4
  *
@@ -1,4 +1,4 @@
1
- /* 0.58.0 */
1
+ /* 0.59.0 */
2
2
  export declare const MISSING: MathJsonExpression;
3
3
  export declare function isNumberExpression(expr: MathJsonExpression | null): expr is number | string | MathJsonNumberObject;
4
4
  export declare function isNumberObject(expr: MathJsonExpression | null): expr is MathJsonNumberObject;