@cortex-js/compute-engine 0.57.0 → 0.59.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (270) hide show
  1. package/README.md +4 -0
  2. package/dist/compile.esm.js +2376 -501
  3. package/dist/compile.min.esm.js +316 -68
  4. package/dist/compile.min.umd.cjs +316 -68
  5. package/dist/compile.umd.cjs +2376 -501
  6. package/dist/compute-engine.esm.js +15717 -12444
  7. package/dist/compute-engine.min.esm.js +331 -83
  8. package/dist/compute-engine.min.umd.cjs +330 -82
  9. package/dist/compute-engine.umd.cjs +15717 -12444
  10. package/dist/core.esm.js +15716 -12443
  11. package/dist/core.min.esm.js +329 -81
  12. package/dist/core.min.umd.cjs +329 -81
  13. package/dist/core.umd.cjs +15716 -12443
  14. package/dist/identities.esm.js +1921 -0
  15. package/dist/identities.min.esm.js +2 -0
  16. package/dist/identities.min.umd.cjs +4 -0
  17. package/dist/identities.umd.cjs +1946 -0
  18. package/dist/interval.esm.js +779 -339
  19. package/dist/interval.min.esm.js +8 -8
  20. package/dist/interval.min.umd.cjs +8 -8
  21. package/dist/interval.umd.cjs +779 -339
  22. package/dist/latex-syntax.esm.js +971 -608
  23. package/dist/latex-syntax.min.esm.js +7 -7
  24. package/dist/latex-syntax.min.umd.cjs +7 -7
  25. package/dist/latex-syntax.umd.cjs +971 -608
  26. package/dist/math-json.esm.js +8 -12
  27. package/dist/math-json.min.esm.js +2 -2
  28. package/dist/math-json.min.umd.cjs +2 -2
  29. package/dist/math-json.umd.cjs +8 -12
  30. package/dist/numerics.esm.js +1382 -226
  31. package/dist/numerics.min.esm.js +16 -5
  32. package/dist/numerics.min.umd.cjs +16 -5
  33. package/dist/numerics.umd.cjs +1382 -226
  34. package/dist/types/big-decimal/big-decimal.d.ts +1 -1
  35. package/dist/types/big-decimal/index.d.ts +1 -1
  36. package/dist/types/big-decimal/transcendentals.d.ts +1 -1
  37. package/dist/types/big-decimal/utils.d.ts +1 -1
  38. package/dist/types/common/ansi-codes.d.ts +1 -1
  39. package/dist/types/common/configuration-change.d.ts +1 -1
  40. package/dist/types/common/fuzzy-string-match.d.ts +1 -1
  41. package/dist/types/common/grapheme-splitter.d.ts +1 -1
  42. package/dist/types/common/interruptible.d.ts +1 -1
  43. package/dist/types/common/one-of.d.ts +1 -1
  44. package/dist/types/common/signals.d.ts +1 -1
  45. package/dist/types/common/type/ast-nodes.d.ts +1 -1
  46. package/dist/types/common/type/boxed-type.d.ts +1 -1
  47. package/dist/types/common/type/lexer.d.ts +1 -1
  48. package/dist/types/common/type/parse.d.ts +1 -208
  49. package/dist/types/common/type/parser.d.ts +124 -2
  50. package/dist/types/common/type/primitive.d.ts +5 -1
  51. package/dist/types/common/type/reduce.d.ts +1 -1
  52. package/dist/types/common/type/serialize.d.ts +1 -1
  53. package/dist/types/common/type/subtype.d.ts +18 -1
  54. package/dist/types/common/type/type-builder.d.ts +1 -1
  55. package/dist/types/common/type/types.d.ts +1 -1
  56. package/dist/types/common/type/utils.d.ts +1 -1
  57. package/dist/types/common/utils.d.ts +1 -1
  58. package/dist/types/compile.d.ts +1 -1
  59. package/dist/types/compute-engine/assume.d.ts +13 -6
  60. package/dist/types/compute-engine/boxed-expression/abstract-boxed-expression.d.ts +3 -1
  61. package/dist/types/compute-engine/boxed-expression/apply.d.ts +1 -1
  62. package/dist/types/compute-engine/boxed-expression/arithmetic-add.d.ts +1 -1
  63. package/dist/types/compute-engine/boxed-expression/arithmetic-mul-div.d.ts +1 -1
  64. package/dist/types/compute-engine/boxed-expression/arithmetic-power.d.ts +1 -1
  65. package/dist/types/compute-engine/boxed-expression/ascii-math.d.ts +1 -1
  66. package/dist/types/compute-engine/boxed-expression/box.d.ts +1 -1
  67. package/dist/types/compute-engine/boxed-expression/boxed-dictionary.d.ts +1 -1
  68. package/dist/types/compute-engine/boxed-expression/boxed-function.d.ts +1 -1
  69. package/dist/types/compute-engine/boxed-expression/boxed-number.d.ts +1 -1
  70. package/dist/types/compute-engine/boxed-expression/boxed-operator-definition.d.ts +7 -1
  71. package/dist/types/compute-engine/boxed-expression/boxed-patterns.d.ts +1 -1
  72. package/dist/types/compute-engine/boxed-expression/boxed-string.d.ts +1 -1
  73. package/dist/types/compute-engine/boxed-expression/boxed-symbol.d.ts +3 -3
  74. package/dist/types/compute-engine/boxed-expression/boxed-tensor.d.ts +1 -1
  75. package/dist/types/compute-engine/boxed-expression/boxed-value-definition.d.ts +1 -1
  76. package/dist/types/compute-engine/boxed-expression/cache.d.ts +1 -1
  77. package/dist/types/compute-engine/boxed-expression/canonical-utils.d.ts +1 -1
  78. package/dist/types/compute-engine/boxed-expression/canonical.d.ts +1 -1
  79. package/dist/types/compute-engine/boxed-expression/compare.d.ts +1 -1
  80. package/dist/types/compute-engine/boxed-expression/constants.d.ts +1 -1
  81. package/dist/types/compute-engine/boxed-expression/constraint-subject.d.ts +140 -0
  82. package/dist/types/compute-engine/boxed-expression/expand.d.ts +1 -1
  83. package/dist/types/compute-engine/boxed-expression/expression-map.d.ts +1 -1
  84. package/dist/types/compute-engine/boxed-expression/factor.d.ts +1 -1
  85. package/dist/types/compute-engine/boxed-expression/flatten.d.ts +1 -1
  86. package/dist/types/compute-engine/boxed-expression/hold.d.ts +1 -1
  87. package/dist/types/compute-engine/boxed-expression/inequality-bounds.d.ts +34 -12
  88. package/dist/types/compute-engine/boxed-expression/init-lazy-refs.d.ts +1 -1
  89. package/dist/types/compute-engine/boxed-expression/invisible-operator.d.ts +1 -1
  90. package/dist/types/compute-engine/boxed-expression/match.d.ts +1 -1
  91. package/dist/types/compute-engine/boxed-expression/negate.d.ts +1 -1
  92. package/dist/types/compute-engine/boxed-expression/numerics.d.ts +1 -1
  93. package/dist/types/compute-engine/boxed-expression/order.d.ts +1 -1
  94. package/dist/types/compute-engine/boxed-expression/pattern-utils.d.ts +1 -1
  95. package/dist/types/compute-engine/boxed-expression/polynomial-degree.d.ts +1 -1
  96. package/dist/types/compute-engine/boxed-expression/polynomials.d.ts +1 -1
  97. package/dist/types/compute-engine/boxed-expression/predicates.d.ts +1 -1
  98. package/dist/types/compute-engine/boxed-expression/rule-index.d.ts +112 -0
  99. package/dist/types/compute-engine/boxed-expression/rules.d.ts +2 -1
  100. package/dist/types/compute-engine/boxed-expression/serialize.d.ts +1 -1
  101. package/dist/types/compute-engine/boxed-expression/sgn.d.ts +1 -1
  102. package/dist/types/compute-engine/boxed-expression/simplify.d.ts +1 -1
  103. package/dist/types/compute-engine/boxed-expression/solve-linear-system.d.ts +1 -1
  104. package/dist/types/compute-engine/boxed-expression/solve.d.ts +1 -1
  105. package/dist/types/compute-engine/boxed-expression/stochastic-equal.d.ts +1 -1
  106. package/dist/types/compute-engine/boxed-expression/trigonometry.d.ts +1 -1
  107. package/dist/types/compute-engine/boxed-expression/type-guards.d.ts +1 -1
  108. package/dist/types/compute-engine/boxed-expression/utils.d.ts +1 -1
  109. package/dist/types/compute-engine/boxed-expression/validate.d.ts +1 -1
  110. package/dist/types/compute-engine/collection-utils.d.ts +1 -1
  111. package/dist/types/compute-engine/compilation/base-compiler.d.ts +8 -1
  112. package/dist/types/compute-engine/compilation/compile-expression.d.ts +1 -1
  113. package/dist/types/compute-engine/compilation/constant-folding.d.ts +16 -1
  114. package/dist/types/compute-engine/compilation/glsl-target.d.ts +1 -1
  115. package/dist/types/compute-engine/compilation/gpu-target.d.ts +58 -5
  116. package/dist/types/compute-engine/compilation/interval-javascript-target.d.ts +4 -4
  117. package/dist/types/compute-engine/compilation/javascript-target.d.ts +1 -1
  118. package/dist/types/compute-engine/compilation/python-target.d.ts +1 -1
  119. package/dist/types/compute-engine/compilation/types.d.ts +1 -1
  120. package/dist/types/compute-engine/compilation/wgsl-target.d.ts +1 -1
  121. package/dist/types/compute-engine/cost-function.d.ts +1 -1
  122. package/dist/types/compute-engine/engine-assumptions.d.ts +1 -1
  123. package/dist/types/compute-engine/engine-cache.d.ts +1 -1
  124. package/dist/types/compute-engine/engine-common-symbols.d.ts +1 -1
  125. package/dist/types/compute-engine/engine-compilation-targets.d.ts +1 -1
  126. package/dist/types/compute-engine/engine-configuration-lifecycle.d.ts +1 -1
  127. package/dist/types/compute-engine/engine-declarations.d.ts +1 -1
  128. package/dist/types/compute-engine/engine-expression-entrypoints.d.ts +1 -1
  129. package/dist/types/compute-engine/engine-extension-contracts.d.ts +1 -1
  130. package/dist/types/compute-engine/engine-library-bootstrap.d.ts +1 -1
  131. package/dist/types/compute-engine/engine-numeric-configuration.d.ts +1 -1
  132. package/dist/types/compute-engine/engine-runtime-state.d.ts +4 -1
  133. package/dist/types/compute-engine/engine-scope.d.ts +1 -1
  134. package/dist/types/compute-engine/engine-sequences.d.ts +1 -1
  135. package/dist/types/compute-engine/engine-simplification-rules.d.ts +10 -2
  136. package/dist/types/compute-engine/engine-startup-coordinator.d.ts +1 -1
  137. package/dist/types/compute-engine/engine-type-resolver.d.ts +1 -1
  138. package/dist/types/compute-engine/engine-validation-entrypoints.d.ts +1 -1
  139. package/dist/types/compute-engine/free-functions.d.ts +1 -1
  140. package/dist/types/compute-engine/function-utils.d.ts +1 -1
  141. package/dist/types/compute-engine/fungrim/loader.d.ts +13 -0
  142. package/dist/types/compute-engine/fungrim/types.d.ts +160 -0
  143. package/dist/types/compute-engine/global-types.d.ts +1 -1
  144. package/dist/types/compute-engine/index.d.ts +63 -2
  145. package/dist/types/compute-engine/interval/arithmetic.d.ts +1 -1
  146. package/dist/types/compute-engine/interval/comparison.d.ts +1 -1
  147. package/dist/types/compute-engine/interval/elementary.d.ts +10 -2
  148. package/dist/types/compute-engine/interval/index.d.ts +2 -2
  149. package/dist/types/compute-engine/interval/trigonometric.d.ts +1 -1
  150. package/dist/types/compute-engine/interval/types.d.ts +1 -1
  151. package/dist/types/compute-engine/interval/util.d.ts +1 -1
  152. package/dist/types/compute-engine/latex-syntax/dictionary/default-dictionary.d.ts +1 -1
  153. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-algebra.d.ts +1 -1
  154. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-arithmetic.d.ts +1 -1
  155. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-calculus.d.ts +1 -1
  156. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-colors.d.ts +1 -1
  157. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-complex.d.ts +1 -1
  158. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-core.d.ts +1 -1
  159. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-linear-algebra.d.ts +1 -1
  160. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-logic.d.ts +1 -1
  161. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-other.d.ts +1 -1
  162. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-relational-operators.d.ts +1 -1
  163. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-sets.d.ts +1 -1
  164. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-statistics.d.ts +1 -1
  165. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-symbols.d.ts +1 -1
  166. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-trigonometry.d.ts +1 -1
  167. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-units.d.ts +1 -1
  168. package/dist/types/compute-engine/latex-syntax/dictionary/definitions.d.ts +1 -1
  169. package/dist/types/compute-engine/latex-syntax/dictionary/indexed-types.d.ts +4 -1
  170. package/dist/types/compute-engine/latex-syntax/latex-syntax.d.ts +1 -1
  171. package/dist/types/compute-engine/latex-syntax/parse-number.d.ts +1 -1
  172. package/dist/types/compute-engine/latex-syntax/parse-symbol.d.ts +1 -1
  173. package/dist/types/compute-engine/latex-syntax/parse.d.ts +3 -2
  174. package/dist/types/compute-engine/latex-syntax/serialize-dms.d.ts +1 -1
  175. package/dist/types/compute-engine/latex-syntax/serialize-number.d.ts +1 -11
  176. package/dist/types/compute-engine/latex-syntax/serializer-style.d.ts +1 -1
  177. package/dist/types/compute-engine/latex-syntax/serializer.d.ts +1 -1
  178. package/dist/types/compute-engine/latex-syntax/tokenizer.d.ts +1 -1
  179. package/dist/types/compute-engine/latex-syntax/types.d.ts +1 -1
  180. package/dist/types/compute-engine/latex-syntax/utils.d.ts +1 -1
  181. package/dist/types/compute-engine/library/arithmetic.d.ts +1 -1
  182. package/dist/types/compute-engine/library/calculus.d.ts +1 -1
  183. package/dist/types/compute-engine/library/collections.d.ts +1 -1
  184. package/dist/types/compute-engine/library/colors.d.ts +1 -1
  185. package/dist/types/compute-engine/library/combinatorics.d.ts +1 -1
  186. package/dist/types/compute-engine/library/complex.d.ts +13 -1
  187. package/dist/types/compute-engine/library/control-structures.d.ts +1 -1
  188. package/dist/types/compute-engine/library/core.d.ts +1 -1
  189. package/dist/types/compute-engine/library/fractals.d.ts +1 -1
  190. package/dist/types/compute-engine/library/library.d.ts +1 -1
  191. package/dist/types/compute-engine/library/linear-algebra.d.ts +1 -1
  192. package/dist/types/compute-engine/library/logic-analysis.d.ts +1 -1
  193. package/dist/types/compute-engine/library/logic.d.ts +1 -1
  194. package/dist/types/compute-engine/library/number-theory.d.ts +1 -1
  195. package/dist/types/compute-engine/library/polynomials.d.ts +1 -1
  196. package/dist/types/compute-engine/library/quantity-arithmetic.d.ts +1 -1
  197. package/dist/types/compute-engine/library/random-expression.d.ts +1 -1
  198. package/dist/types/compute-engine/library/relational-operator.d.ts +1 -1
  199. package/dist/types/compute-engine/library/sets.d.ts +27 -1
  200. package/dist/types/compute-engine/library/statistics.d.ts +1 -1
  201. package/dist/types/compute-engine/library/trigonometry.d.ts +1 -1
  202. package/dist/types/compute-engine/library/type-handlers.d.ts +1 -1
  203. package/dist/types/compute-engine/library/unit-data.d.ts +1 -1
  204. package/dist/types/compute-engine/library/units.d.ts +1 -1
  205. package/dist/types/compute-engine/library/utils.d.ts +1 -1
  206. package/dist/types/compute-engine/numeric-value/big-numeric-value.d.ts +1 -1
  207. package/dist/types/compute-engine/numeric-value/exact-numeric-value.d.ts +7 -1
  208. package/dist/types/compute-engine/numeric-value/machine-numeric-value.d.ts +1 -1
  209. package/dist/types/compute-engine/numeric-value/types.d.ts +1 -1
  210. package/dist/types/compute-engine/numerics/bernoulli.d.ts +39 -0
  211. package/dist/types/compute-engine/numerics/bigint.d.ts +1 -1
  212. package/dist/types/compute-engine/numerics/expression.d.ts +1 -1
  213. package/dist/types/compute-engine/numerics/interval.d.ts +1 -1
  214. package/dist/types/compute-engine/numerics/linear-algebra.d.ts +1 -1
  215. package/dist/types/compute-engine/numerics/monte-carlo.d.ts +1 -1
  216. package/dist/types/compute-engine/numerics/numeric-bigint.d.ts +1 -1
  217. package/dist/types/compute-engine/numerics/numeric-bignum.d.ts +1 -1
  218. package/dist/types/compute-engine/numerics/numeric-complex.d.ts +12 -1
  219. package/dist/types/compute-engine/numerics/numeric.d.ts +1 -1
  220. package/dist/types/compute-engine/numerics/primes.d.ts +1 -1
  221. package/dist/types/compute-engine/numerics/random.d.ts +23 -0
  222. package/dist/types/compute-engine/numerics/rationals.d.ts +1 -1
  223. package/dist/types/compute-engine/numerics/richardson.d.ts +1 -1
  224. package/dist/types/compute-engine/numerics/special-functions.d.ts +78 -10
  225. package/dist/types/compute-engine/numerics/statistics.d.ts +1 -1
  226. package/dist/types/compute-engine/numerics/strings.d.ts +1 -1
  227. package/dist/types/compute-engine/numerics/types.d.ts +1 -1
  228. package/dist/types/compute-engine/numerics/unit-data.d.ts +1 -1
  229. package/dist/types/compute-engine/oeis.d.ts +1 -1
  230. package/dist/types/compute-engine/sequence.d.ts +1 -1
  231. package/dist/types/compute-engine/symbolic/antiderivative.d.ts +1 -1
  232. package/dist/types/compute-engine/symbolic/derivative.d.ts +1 -1
  233. package/dist/types/compute-engine/symbolic/distribute.d.ts +1 -1
  234. package/dist/types/compute-engine/symbolic/fu-cost.d.ts +1 -1
  235. package/dist/types/compute-engine/symbolic/fu-transforms.d.ts +1 -1
  236. package/dist/types/compute-engine/symbolic/fu.d.ts +1 -1
  237. package/dist/types/compute-engine/symbolic/logic-utils.d.ts +1 -1
  238. package/dist/types/compute-engine/symbolic/simplify-abs.d.ts +1 -1
  239. package/dist/types/compute-engine/symbolic/simplify-divide.d.ts +1 -1
  240. package/dist/types/compute-engine/symbolic/simplify-factorial.d.ts +1 -1
  241. package/dist/types/compute-engine/symbolic/simplify-hyperbolic.d.ts +1 -1
  242. package/dist/types/compute-engine/symbolic/simplify-infinity.d.ts +1 -1
  243. package/dist/types/compute-engine/symbolic/simplify-log.d.ts +1 -1
  244. package/dist/types/compute-engine/symbolic/simplify-logic.d.ts +1 -1
  245. package/dist/types/compute-engine/symbolic/simplify-power.d.ts +1 -1
  246. package/dist/types/compute-engine/symbolic/simplify-product.d.ts +1 -1
  247. package/dist/types/compute-engine/symbolic/simplify-rules.d.ts +1 -1
  248. package/dist/types/compute-engine/symbolic/simplify-sum.d.ts +1 -1
  249. package/dist/types/compute-engine/symbolic/simplify-trig.d.ts +1 -1
  250. package/dist/types/compute-engine/tensor/tensor-fields.d.ts +1 -1
  251. package/dist/types/compute-engine/tensor/tensors.d.ts +3 -3
  252. package/dist/types/compute-engine/types-definitions.d.ts +1 -1
  253. package/dist/types/compute-engine/types-engine.d.ts +52 -3
  254. package/dist/types/compute-engine/types-evaluation.d.ts +1 -1
  255. package/dist/types/compute-engine/types-expression.d.ts +85 -14
  256. package/dist/types/compute-engine/types-kernel-evaluation.d.ts +32 -1
  257. package/dist/types/compute-engine/types-kernel-serialization.d.ts +45 -3
  258. package/dist/types/compute-engine/types-serialization.d.ts +1 -1
  259. package/dist/types/compute-engine/types.d.ts +1 -1
  260. package/dist/types/compute-engine.d.ts +1 -1
  261. package/dist/types/core.d.ts +1 -1
  262. package/dist/types/identities.d.ts +3 -0
  263. package/dist/types/interval.d.ts +1 -1
  264. package/dist/types/latex-syntax.d.ts +2 -2
  265. package/dist/types/math-json/symbols.d.ts +1 -1
  266. package/dist/types/math-json/types.d.ts +1 -1
  267. package/dist/types/math-json/utils.d.ts +1 -1
  268. package/dist/types/math-json.d.ts +2 -2
  269. package/dist/types/numerics.d.ts +1 -1
  270. package/package.json +9 -3
@@ -1,4 +1,4 @@
1
- /* 0.57.0 */
1
+ /* 0.59.0 */
2
2
  import type { 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';
@@ -405,6 +405,20 @@ export interface Tensor<DT extends TensorDataType> extends TensorData<DT> {
405
405
  * @category Boxed Expression
406
406
  *
407
407
  */
408
+ /**
409
+ * Lower and upper bounds for a symbol extracted from a domain restriction.
410
+ *
411
+ * `lowerStrict`/`upperStrict` are `true` for strict (`<`, `>`) bounds and
412
+ * `false` (or `undefined`) for non-strict (`≤`, `≥`) bounds.
413
+ *
414
+ * @category Boxed Expression
415
+ */
416
+ export type IntervalBounds = {
417
+ lower?: Expression;
418
+ lowerStrict?: boolean;
419
+ upper?: Expression;
420
+ upperStrict?: boolean;
421
+ };
408
422
  export interface Expression {
409
423
  /** @internal */
410
424
  readonly _kind: string;
@@ -1051,26 +1065,29 @@ export interface Expression {
1051
1065
  *
1052
1066
  * - If no rules apply, return `null`.
1053
1067
  *
1054
- * See also `expr.subs()` for a simple substitution of symbols.
1055
- *
1056
- * Procedure for the determining the canonical-status of the input expression and replacements:
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.
1057
1071
  *
1058
- * - If `options.canonical` is set, the *entire expr.* is canonicalized to this degree: whether
1059
- * the replacement occurs at the top-level, or within/recursively.
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.
1060
1078
  *
1061
- * - If otherwise, the *direct replacement will be canonical* if either the 'replaced' expression
1062
- * is canonical, or the given replacement (- is a Expression and -) is canonical.
1063
- * Notably also, if this replacement takes place recursively (not at the top-level), then exprs.
1064
- * containing the replaced expr. will still however have their (previous) canonical-status
1065
- * *preserved*... unless this expr. was previously non-canonical, and *replacements have resulted
1066
- * in canonical operands*. In this case, an expr. meeting this criteria will be updated to
1067
- * 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.)
1068
1084
  *
1069
1085
  * :::info[Note]
1070
- * Applicable to canonical and non-canonical expressions.
1086
+ * Applicable to input expressions of any form.
1071
1087
  *
1072
1088
  * To match a specific symbol (not a wildcard pattern), the `match` must be
1073
1089
  * a `Expression` (e.g., `{ match: ce.expr('x'), replace: ... }`).
1090
+ *
1074
1091
  * For simple symbol substitution, consider using `subs()` instead.
1075
1092
  * :::
1076
1093
  */
@@ -1372,6 +1389,60 @@ export interface Expression {
1372
1389
  *
1373
1390
  */
1374
1391
  simplify(options?: Partial<SimplifyOptions>): Expression;
1392
+ /**
1393
+ * For a relation expression (`Equal`, `Less`, `Greater`, `LessEqual`,
1394
+ * `GreaterEqual`, `NotEqual`), return the "signed function" form
1395
+ * useful for implicit-surface rendering and region classification:
1396
+ *
1397
+ * - `Equal(a, b)` → `a - b` (zero on the surface)
1398
+ * - `Less(a, b)` / `LessEqual(a, b)` → `a - b` (negative when relation holds)
1399
+ * - `Greater(a, b)` / `GreaterEqual(a, b)` → `b - a` (negative when relation holds)
1400
+ * - `NotEqual(a, b)` → `a - b` (caller checks ≠ 0)
1401
+ *
1402
+ * For non-relation expressions, returns `undefined`.
1403
+ *
1404
+ * Strictness (strict vs non-strict inequality) and direction (less vs
1405
+ * greater) are encoded in the original `expr.operator`, not in the
1406
+ * returned expression. Callers handling 3D implicit rendering use
1407
+ * `expr.operator` for the boundary policy and the signed function for
1408
+ * the interior/exterior classification.
1409
+ *
1410
+ * Notes:
1411
+ * - CE canonical form normalizes `GreaterEqual(a, b)` to `LessEqual(b, a)`
1412
+ * (and similarly `Greater` to `Less`). Callers using `toSignedFunction()`
1413
+ * on canonicalized parsed expressions will see `LessEqual`/`Less` rather
1414
+ * than `GreaterEqual`/`Greater`. The signed-function semantics are
1415
+ * preserved through the normalization. The `GreaterEqual`/`Greater`
1416
+ * branches handle non-canonical expressions constructed via
1417
+ * `ce.box(['GreaterEqual', ...])`.
1418
+ * - For chained relations with more than two operands (e.g.
1419
+ * `Less(a, b, c)` from `a < b < c`), only the first pair is used.
1420
+ * The result is the signed function for the first sub-relation only;
1421
+ * 3D implicit rendering rarely uses chained relations, but if it
1422
+ * does, callers should decompose first.
1423
+ */
1424
+ toSignedFunction(): BoxedExpression | undefined;
1425
+ /**
1426
+ * For an expression representing a domain restriction (a `When` whose
1427
+ * condition is a comparison or `And` of comparisons over `symbol`, or
1428
+ * a bare comparison expression), return the lower/upper bounds for
1429
+ * `symbol`. Returns `undefined` if no bounds can be extracted.
1430
+ *
1431
+ * Supported shapes:
1432
+ * - Bare comparisons: `a < x`, `x < b`, etc.
1433
+ * - Chained comparisons: `a < x < b` (parsed as `Less(a, x, b)`)
1434
+ * - `And(c1, c2, ...)` where each `ci` is a supported shape
1435
+ * - `When(e, cond)` — operates on `cond`
1436
+ * - `Multiply(f, When(...), ...)` — the Desmos parse shape for
1437
+ * `f(x)\{a < x < b\}`; bounds from each `When` factor are merged
1438
+ *
1439
+ * `lowerStrict`/`upperStrict` are `true` for strict (`<`, `>`) bounds
1440
+ * and `false` for non-strict (`≤`, `≥`).
1441
+ *
1442
+ * Returns `undefined` for unsupported shapes (e.g. equations, non-linear
1443
+ * constraints, comparisons over multiple symbols, disjunctions).
1444
+ */
1445
+ getInterval(symbol: string): IntervalBounds | undefined;
1375
1446
  /**
1376
1447
  * Return the value of the canonical form of this expression.
1377
1448
  *
@@ -1,4 +1,4 @@
1
- /* 0.57.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.57.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.57.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.57.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.57.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.57.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.57.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.57.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.57.0";
14
+ export declare const version = "0.59.0";
@@ -1,4 +1,4 @@
1
- /* 0.57.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.57.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.57.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;
@@ -1,3 +1,3 @@
1
- /* 0.57.0 */
1
+ /* 0.59.0 */
2
2
  export { isSymbolObject, isStringObject, isFunctionObject, stringValue, operator, operand, symbol, mapArgs, dictionaryFromExpression, } from './math-json/utils';
3
- export declare const version = "0.57.0";
3
+ export declare const version = "0.59.0";
@@ -1,4 +1,4 @@
1
- /* 0.57.0 */
1
+ /* 0.59.0 */
2
2
  export type { SmallInteger, Rational, BigNum, } from './compute-engine/numerics/types';
3
3
  export type { ExactNumericValueData, NumericValueData, NumericValueFactory, } from './compute-engine/numeric-value/types';
4
4
  export { NumericValue } from './compute-engine/numeric-value/types';
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.57.0",
2
+ "version": "0.59.0",
3
3
  "scripts": {
4
4
  "doc": "bash ./scripts/doc.sh",
5
5
  "build": "bash ./scripts/build.sh",
@@ -84,6 +84,12 @@
84
84
  "import": "./dist/compile.min.esm.js",
85
85
  "require": "./dist/compile.min.umd.cjs",
86
86
  "default": "./dist/compile.min.esm.js"
87
+ },
88
+ "./identities": {
89
+ "types": "./dist/types/identities.d.ts",
90
+ "import": "./dist/identities.min.esm.js",
91
+ "require": "./dist/identities.min.umd.cjs",
92
+ "default": "./dist/identities.min.esm.js"
87
93
  }
88
94
  },
89
95
  "main": "./dist/compute-engine.min.esm.js",
@@ -106,6 +112,7 @@
106
112
  "chalk": "^5.6.2",
107
113
  "check-node-version": "^4.2.1",
108
114
  "concat-md": "^0.5.1",
115
+ "decimal.js": "^10.6.0",
109
116
  "esbuild": "^0.27.3",
110
117
  "eslint": "^8.56.0",
111
118
  "eslint-config-prettier": "^10.1.8",
@@ -130,7 +137,6 @@
130
137
  "prettier": "@cortex-js/prettier-config",
131
138
  "dependencies": {
132
139
  "@arnog/colors": "^0.5.0",
133
- "complex-esm": "^2.1.1-esm1",
134
- "decimal.js": "^10.6.0"
140
+ "complex-esm": "^2.1.1-esm1"
135
141
  }
136
142
  }