@cortex-js/compute-engine 0.35.6 → 0.50.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 (222) hide show
  1. package/README.md +121 -5
  2. package/dist/compute-engine.esm.js +50435 -44944
  3. package/dist/compute-engine.min.esm.js +1072 -69
  4. package/dist/compute-engine.min.umd.js +1072 -69
  5. package/dist/compute-engine.umd.js +50540 -45049
  6. package/dist/math-json.esm.js +2 -2
  7. package/dist/math-json.min.esm.js +2 -2
  8. package/dist/math-json.min.umd.js +2 -2
  9. package/dist/math-json.umd.js +2 -2
  10. package/dist/types/common/ansi-codes.d.ts +1 -1
  11. package/dist/types/common/configuration-change.d.ts +1 -1
  12. package/dist/types/common/fuzzy-string-match.d.ts +1 -1
  13. package/dist/types/common/grapheme-splitter.d.ts +1 -1
  14. package/dist/types/common/interruptible.d.ts +1 -1
  15. package/dist/types/common/one-of.d.ts +1 -1
  16. package/dist/types/common/signals.d.ts +1 -1
  17. package/dist/types/common/type/ast-nodes.d.ts +1 -1
  18. package/dist/types/common/type/boxed-type.d.ts +1 -1
  19. package/dist/types/common/type/lexer.d.ts +1 -1
  20. package/dist/types/common/type/parse.d.ts +1 -1
  21. package/dist/types/common/type/parser.d.ts +8 -1
  22. package/dist/types/common/type/primitive.d.ts +2 -1
  23. package/dist/types/common/type/reduce.d.ts +1 -1
  24. package/dist/types/common/type/serialize.d.ts +1 -1
  25. package/dist/types/common/type/subtype.d.ts +1 -1
  26. package/dist/types/common/type/type-builder.d.ts +1 -1
  27. package/dist/types/common/type/types.d.ts +1 -1
  28. package/dist/types/common/type/utils.d.ts +3 -2
  29. package/dist/types/common/utils.d.ts +1 -1
  30. package/dist/types/compute-engine/assume.d.ts +4 -22
  31. package/dist/types/compute-engine/boxed-expression/abstract-boxed-expression.d.ts +63 -76
  32. package/dist/types/compute-engine/boxed-expression/apply.d.ts +4 -4
  33. package/dist/types/compute-engine/boxed-expression/arithmetic-add.d.ts +15 -6
  34. package/dist/types/compute-engine/boxed-expression/arithmetic-mul-div.d.ts +72 -6
  35. package/dist/types/compute-engine/boxed-expression/arithmetic-power.d.ts +8 -8
  36. package/dist/types/compute-engine/boxed-expression/ascii-math.d.ts +5 -8
  37. package/dist/types/compute-engine/boxed-expression/box.d.ts +63 -8
  38. package/dist/types/compute-engine/boxed-expression/boxed-dictionary.d.ts +13 -12
  39. package/dist/types/compute-engine/boxed-expression/boxed-function.d.ts +44 -43
  40. package/dist/types/compute-engine/boxed-expression/boxed-number.d.ts +31 -30
  41. package/dist/types/compute-engine/boxed-expression/boxed-operator-definition.d.ts +18 -18
  42. package/dist/types/compute-engine/boxed-expression/boxed-patterns.d.ts +5 -37
  43. package/dist/types/compute-engine/boxed-expression/boxed-string.d.ts +5 -4
  44. package/dist/types/compute-engine/boxed-expression/boxed-symbol.d.ts +34 -33
  45. package/dist/types/compute-engine/boxed-expression/boxed-tensor.d.ts +34 -33
  46. package/dist/types/compute-engine/boxed-expression/boxed-value-definition.d.ts +8 -8
  47. package/dist/types/compute-engine/boxed-expression/cache.d.ts +1 -1
  48. package/dist/types/compute-engine/boxed-expression/canonical-utils.d.ts +2 -2
  49. package/dist/types/compute-engine/boxed-expression/canonical.d.ts +2 -2
  50. package/dist/types/compute-engine/boxed-expression/compare.d.ts +4 -4
  51. package/dist/types/compute-engine/boxed-expression/constants.d.ts +6 -0
  52. package/dist/types/compute-engine/boxed-expression/expand.d.ts +4 -5
  53. package/dist/types/compute-engine/boxed-expression/expression-map.d.ts +9 -9
  54. package/dist/types/compute-engine/boxed-expression/factor.d.ts +7 -7
  55. package/dist/types/compute-engine/boxed-expression/flatten.d.ts +4 -13
  56. package/dist/types/compute-engine/boxed-expression/hold.d.ts +3 -3
  57. package/dist/types/compute-engine/boxed-expression/inequality-bounds.d.ts +21 -0
  58. package/dist/types/compute-engine/boxed-expression/invisible-operator.d.ts +4 -0
  59. package/dist/types/compute-engine/boxed-expression/match.d.ts +2 -2
  60. package/dist/types/compute-engine/boxed-expression/negate.d.ts +4 -4
  61. package/dist/types/compute-engine/boxed-expression/numerics.d.ts +8 -8
  62. package/dist/types/compute-engine/boxed-expression/order.d.ts +14 -14
  63. package/dist/types/compute-engine/boxed-expression/pattern-utils.d.ts +41 -0
  64. package/dist/types/compute-engine/boxed-expression/polynomial-degree.d.ts +18 -0
  65. package/dist/types/compute-engine/boxed-expression/polynomials.d.ts +12 -35
  66. package/dist/types/compute-engine/boxed-expression/predicates.d.ts +2 -0
  67. package/dist/types/compute-engine/boxed-expression/rules.d.ts +51 -51
  68. package/dist/types/compute-engine/boxed-expression/serialize.d.ts +3 -3
  69. package/dist/types/compute-engine/boxed-expression/sgn.d.ts +2 -2
  70. package/dist/types/compute-engine/boxed-expression/simplify.d.ts +2 -2
  71. package/dist/types/compute-engine/boxed-expression/solve-linear-system.d.ts +8 -8
  72. package/dist/types/compute-engine/boxed-expression/solve.d.ts +3 -11
  73. package/dist/types/compute-engine/boxed-expression/trigonometry.d.ts +7 -7
  74. package/dist/types/compute-engine/boxed-expression/type-guards.d.ts +31 -0
  75. package/dist/types/compute-engine/boxed-expression/utils.d.ts +13 -13
  76. package/dist/types/compute-engine/boxed-expression/validate.d.ts +10 -10
  77. package/dist/types/compute-engine/collection-utils.d.ts +4 -4
  78. package/dist/types/compute-engine/compilation/base-compiler.d.ts +3 -3
  79. package/dist/types/compute-engine/compilation/compile-expression.d.ts +25 -0
  80. package/dist/types/compute-engine/compilation/glsl-target.d.ts +12 -41
  81. package/dist/types/compute-engine/compilation/gpu-target.d.ts +50 -0
  82. package/dist/types/compute-engine/compilation/interval-glsl-target.d.ts +11 -11
  83. package/dist/types/compute-engine/compilation/interval-javascript-target.d.ts +7 -7
  84. package/dist/types/compute-engine/compilation/interval-wgsl-target.d.ts +54 -0
  85. package/dist/types/compute-engine/compilation/javascript-target.d.ts +6 -6
  86. package/dist/types/compute-engine/compilation/python-target.d.ts +61 -0
  87. package/dist/types/compute-engine/compilation/types.d.ts +27 -22
  88. package/dist/types/compute-engine/compilation/wgsl-target.d.ts +41 -0
  89. package/dist/types/compute-engine/cost-function.d.ts +3 -3
  90. package/dist/types/compute-engine/engine-assumptions.d.ts +6 -0
  91. package/dist/types/compute-engine/engine-cache.d.ts +6 -0
  92. package/dist/types/compute-engine/engine-common-symbols.d.ts +6 -0
  93. package/dist/types/compute-engine/engine-compilation-targets.d.ts +17 -0
  94. package/dist/types/compute-engine/engine-configuration-lifecycle.d.ts +15 -0
  95. package/dist/types/compute-engine/engine-declarations.d.ts +19 -0
  96. package/dist/types/compute-engine/engine-expression-entrypoints.d.ts +44 -0
  97. package/dist/types/compute-engine/engine-extension-contracts.d.ts +9 -0
  98. package/dist/types/compute-engine/engine-latex-dictionary-state.d.ts +13 -0
  99. package/dist/types/compute-engine/engine-library-bootstrap.d.ts +6 -0
  100. package/dist/types/compute-engine/engine-numeric-configuration.d.ts +34 -0
  101. package/dist/types/compute-engine/engine-parse-entrypoint.d.ts +7 -0
  102. package/dist/types/compute-engine/engine-runtime-state.d.ts +19 -0
  103. package/dist/types/compute-engine/engine-scope.d.ts +13 -0
  104. package/dist/types/compute-engine/engine-sequences.d.ts +14 -0
  105. package/dist/types/compute-engine/engine-simplification-rules.d.ts +15 -0
  106. package/dist/types/compute-engine/engine-startup-coordinator.d.ts +28 -0
  107. package/dist/types/compute-engine/engine-type-resolver.d.ts +12 -0
  108. package/dist/types/compute-engine/engine-validation-entrypoints.d.ts +13 -0
  109. package/dist/types/compute-engine/free-functions.d.ts +20 -0
  110. package/dist/types/compute-engine/function-utils.d.ts +10 -10
  111. package/dist/types/compute-engine/global-types.d.ts +5 -3301
  112. package/dist/types/compute-engine/index.d.ts +155 -112
  113. package/dist/types/compute-engine/interval/arithmetic.d.ts +1 -1
  114. package/dist/types/compute-engine/interval/comparison.d.ts +1 -1
  115. package/dist/types/compute-engine/interval/elementary.d.ts +1 -1
  116. package/dist/types/compute-engine/interval/index.d.ts +1 -1
  117. package/dist/types/compute-engine/interval/trigonometric.d.ts +1 -1
  118. package/dist/types/compute-engine/interval/types.d.ts +1 -1
  119. package/dist/types/compute-engine/interval/util.d.ts +1 -1
  120. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-algebra.d.ts +1 -1
  121. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-arithmetic.d.ts +1 -1
  122. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-calculus.d.ts +1 -1
  123. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-complex.d.ts +1 -1
  124. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-core.d.ts +1 -1
  125. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-linear-algebra.d.ts +1 -1
  126. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-logic.d.ts +1 -1
  127. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-other.d.ts +1 -1
  128. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-relational-operators.d.ts +1 -1
  129. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-sets.d.ts +1 -1
  130. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-statistics.d.ts +1 -1
  131. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-symbols.d.ts +1 -1
  132. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-trigonometry.d.ts +1 -1
  133. package/dist/types/compute-engine/latex-syntax/dictionary/definitions.d.ts +4 -80
  134. package/dist/types/compute-engine/latex-syntax/dictionary/indexed-types.d.ts +83 -0
  135. package/dist/types/compute-engine/latex-syntax/parse-number.d.ts +28 -0
  136. package/dist/types/compute-engine/latex-syntax/parse-symbol.d.ts +2 -2
  137. package/dist/types/compute-engine/latex-syntax/parse.d.ts +23 -33
  138. package/dist/types/compute-engine/latex-syntax/serialize-number.d.ts +2 -2
  139. package/dist/types/compute-engine/latex-syntax/serializer-style.d.ts +8 -8
  140. package/dist/types/compute-engine/latex-syntax/serializer.d.ts +15 -15
  141. package/dist/types/compute-engine/latex-syntax/tokenizer.d.ts +1 -1
  142. package/dist/types/compute-engine/latex-syntax/types.d.ts +73 -53
  143. package/dist/types/compute-engine/latex-syntax/utils.d.ts +1 -1
  144. package/dist/types/compute-engine/library/arithmetic.d.ts +1 -2
  145. package/dist/types/compute-engine/library/calculus.d.ts +1 -1
  146. package/dist/types/compute-engine/library/collections.d.ts +4 -4
  147. package/dist/types/compute-engine/library/combinatorics.d.ts +1 -1
  148. package/dist/types/compute-engine/library/complex.d.ts +1 -1
  149. package/dist/types/compute-engine/library/control-structures.d.ts +1 -1
  150. package/dist/types/compute-engine/library/core.d.ts +1 -1
  151. package/dist/types/compute-engine/library/library.d.ts +19 -6
  152. package/dist/types/compute-engine/library/linear-algebra.d.ts +1 -1
  153. package/dist/types/compute-engine/library/logic-analysis.d.ts +19 -32
  154. package/dist/types/compute-engine/library/logic.d.ts +1 -5
  155. package/dist/types/compute-engine/library/number-theory.d.ts +1 -1
  156. package/dist/types/compute-engine/library/polynomials.d.ts +1 -1
  157. package/dist/types/compute-engine/library/random-expression.d.ts +2 -2
  158. package/dist/types/compute-engine/library/relational-operator.d.ts +1 -1
  159. package/dist/types/compute-engine/library/sets.d.ts +1 -1
  160. package/dist/types/compute-engine/library/statistics.d.ts +1 -1
  161. package/dist/types/compute-engine/library/trigonometry.d.ts +1 -1
  162. package/dist/types/compute-engine/library/type-handlers.d.ts +4 -0
  163. package/dist/types/compute-engine/library/utils.d.ts +12 -12
  164. package/dist/types/compute-engine/numeric-value/big-numeric-value.d.ts +5 -5
  165. package/dist/types/compute-engine/numeric-value/exact-numeric-value.d.ts +5 -5
  166. package/dist/types/compute-engine/numeric-value/machine-numeric-value.d.ts +5 -5
  167. package/dist/types/compute-engine/numeric-value/types.d.ts +2 -3
  168. package/dist/types/compute-engine/numerics/bigint.d.ts +1 -1
  169. package/dist/types/compute-engine/numerics/expression.d.ts +3 -3
  170. package/dist/types/compute-engine/numerics/interval.d.ts +2 -2
  171. package/dist/types/compute-engine/numerics/monte-carlo.d.ts +1 -1
  172. package/dist/types/compute-engine/numerics/numeric-bigint.d.ts +1 -1
  173. package/dist/types/compute-engine/numerics/numeric-bignum.d.ts +1 -1
  174. package/dist/types/compute-engine/numerics/numeric-complex.d.ts +1 -1
  175. package/dist/types/compute-engine/numerics/numeric.d.ts +1 -1
  176. package/dist/types/compute-engine/numerics/primes.d.ts +1 -1
  177. package/dist/types/compute-engine/numerics/rationals.d.ts +4 -4
  178. package/dist/types/compute-engine/numerics/richardson.d.ts +1 -1
  179. package/dist/types/compute-engine/numerics/special-functions.d.ts +120 -1
  180. package/dist/types/compute-engine/numerics/statistics.d.ts +1 -2
  181. package/dist/types/compute-engine/numerics/strings.d.ts +1 -1
  182. package/dist/types/compute-engine/numerics/types.d.ts +3 -1
  183. package/dist/types/compute-engine/oeis.d.ts +3 -3
  184. package/dist/types/compute-engine/sequence.d.ts +13 -13
  185. package/dist/types/compute-engine/symbolic/antiderivative.d.ts +2 -2
  186. package/dist/types/compute-engine/symbolic/derivative.d.ts +3 -3
  187. package/dist/types/compute-engine/symbolic/distribute.d.ts +2 -2
  188. package/dist/types/compute-engine/symbolic/fu-cost.d.ts +6 -6
  189. package/dist/types/compute-engine/symbolic/fu-transforms.d.ts +46 -46
  190. package/dist/types/compute-engine/symbolic/fu.d.ts +4 -4
  191. package/dist/types/compute-engine/symbolic/logic-utils.d.ts +54 -0
  192. package/dist/types/compute-engine/symbolic/simplify-abs.d.ts +4 -4
  193. package/dist/types/compute-engine/symbolic/simplify-divide.d.ts +2 -2
  194. package/dist/types/compute-engine/symbolic/simplify-hyperbolic.d.ts +2 -2
  195. package/dist/types/compute-engine/symbolic/simplify-infinity.d.ts +2 -2
  196. package/dist/types/compute-engine/symbolic/simplify-log.d.ts +2 -2
  197. package/dist/types/compute-engine/symbolic/simplify-logic.d.ts +5 -0
  198. package/dist/types/compute-engine/symbolic/simplify-power.d.ts +2 -2
  199. package/dist/types/compute-engine/symbolic/simplify-product.d.ts +2 -2
  200. package/dist/types/compute-engine/symbolic/simplify-rules.d.ts +65 -4
  201. package/dist/types/compute-engine/symbolic/simplify-sum.d.ts +2 -2
  202. package/dist/types/compute-engine/symbolic/simplify-trig.d.ts +2 -2
  203. package/dist/types/compute-engine/tensor/tensor-fields.d.ts +42 -42
  204. package/dist/types/compute-engine/tensor/tensors.d.ts +4 -4
  205. package/dist/types/compute-engine/types-definitions.d.ts +900 -0
  206. package/dist/types/compute-engine/types-engine.d.ts +375 -0
  207. package/dist/types/compute-engine/types-evaluation.d.ts +67 -0
  208. package/dist/types/compute-engine/types-expression.d.ts +1655 -0
  209. package/dist/types/compute-engine/types-kernel-evaluation.d.ts +164 -0
  210. package/dist/types/compute-engine/types-kernel-serialization.d.ts +147 -0
  211. package/dist/types/compute-engine/types-serialization.d.ts +23 -0
  212. package/dist/types/compute-engine/types.d.ts +2 -2
  213. package/dist/types/compute-engine.d.ts +16 -3
  214. package/dist/types/math-json/symbols.d.ts +1 -1
  215. package/dist/types/math-json/types.d.ts +3 -3
  216. package/dist/types/math-json/utils.d.ts +31 -31
  217. package/dist/types/math-json.d.ts +2 -2
  218. package/package.json +8 -1
  219. package/dist/types/compute-engine/boxed-expression/product.d.ts +0 -66
  220. package/dist/types/compute-engine/boxed-expression/terms.d.ts +0 -10
  221. package/dist/types/compute-engine/library/invisible-operator.d.ts +0 -4
  222. package/dist/types/compute-engine/library/logic-utils.d.ts +0 -54
@@ -1,4 +1,4 @@
1
- /** Compute Engine 0.35.6 */
1
+ /** Compute Engine 0.50.0 */
2
2
 
3
3
  // src/math-json/utils.ts
4
4
  function isNumberObject(expr) {
@@ -115,7 +115,7 @@ function expressionToDictionaryValue(expr) {
115
115
  }
116
116
 
117
117
  // src/math-json.ts
118
- var version = "0.35.6";
118
+ var version = "0.50.0";
119
119
  export {
120
120
  dictionaryFromExpression,
121
121
  isFunctionObject,
@@ -1,2 +1,2 @@
1
- /** Compute Engine 0.35.6 */
2
- function d(n){return n!==null&&typeof n=="object"&&"num"in n}function s(n){return n!==null&&typeof n=="object"&&"sym"in n}function a(n){return n!==null&&typeof n=="object"&&"str"in n}function m(n){return n!==null&&typeof n=="object"&&"dict"in n&&typeof n.dict=="object"&&!Array.isArray(n.dict)&&n.dict!==null}function u(n){return n!==null&&typeof n=="object"&&"fn"in n&&Array.isArray(n.fn)&&n.fn.length>0&&typeof n.fn[0]=="string"}function c(n){return n==null?null:typeof n=="object"&&"str"in n?n.str:typeof n!="string"?null:n.length>=2&&n.at(0)==="'"&&n.at(-1)==="'"?n.substring(1,n.length-1):M(n)||b(n)?null:n}function l(n){return Array.isArray(n)?n[0]:n==null?"":u(n)?n.fn[0]:""}function y(n){return Array.isArray(n)?n.slice(1):n!==void 0&&u(n)?n.fn.slice(1):[]}function E(n,t){return Array.isArray(n)?n[t]??null:n===null||!u(n)?null:n.fn[t]??null}function h(n){return n==null?0:Array.isArray(n)?Math.max(0,n.length-1):u(n)?Math.max(0,n.fn.length-1):0}function g(n){return typeof n=="string"&&b(n)?n.length>=2&&n.at(0)==="`"&&n.at(-1)==="`"?n.slice(1,-1):n:n==null?null:s(n)?n.sym:null}function f(n){let t=l(n);if(t==="KeyValuePair"||t==="Tuple"||t==="Pair"){let[i,r]=y(n),e=c(i);return e?[e,r??"Nothing"]:null}return null}function j(n){if(n===null)return null;if(m(n))return n;let t=f(n);if(t)return{[t[0]]:t[1]};if(l(n)==="Dictionary"){let i={},r=y(n);for(let e=1;e<h(n);e++){let o=f(r[e]);o&&(i[o[0]]=A(o[1])??"Nothing")}return{dict:i}}return null}function O(n,t){let i=null;if(Array.isArray(n)&&(i=n),u(n)&&(i=n.fn),i===null)return[];let r=1,e=[];for(;r<i.length;)e.push(t(i[r])),r+=1;return e}function M(n){return/^(nan|oo|\+oo|-oo|infinity|\+infinity|-infinity)$/i.test(n)||/^[+-]?(0|[1-9][0-9]*)(\.[0-9]+)?(\([0-9]+\))?([eE][+-]?[0-9]+)?$/.test(n)}function b(n){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(n)||n.length>=2&&n[0]==="`"&&n[n.length-1]==="`"}function A(n){return n==null?null:a(n)?n.str:d(n)?parseFloat(n.num):s(n)?n.sym:typeof n=="string"||typeof n=="number"?n:Array.isArray(n)?{fn:n}:n}var S="0.35.6";export{j as dictionaryFromExpression,u as isFunctionObject,a as isStringObject,s as isSymbolObject,O as mapArgs,E as operand,l as operator,c as stringValue,g as symbol,S as version};
1
+ /** Compute Engine 0.50.0 */
2
+ function b(n){return n!==null&&typeof n=="object"&&"num"in n}function s(n){return n!==null&&typeof n=="object"&&"sym"in n}function f(n){return n!==null&&typeof n=="object"&&"str"in n}function M(n){return n!==null&&typeof n=="object"&&"dict"in n&&typeof n.dict=="object"&&!Array.isArray(n.dict)&&n.dict!==null}function r(n){return n!==null&&typeof n=="object"&&"fn"in n&&Array.isArray(n.fn)&&n.fn.length>0&&typeof n.fn[0]=="string"}function c(n){return n==null?null:typeof n=="object"&&"str"in n?n.str:typeof n!="string"?null:n.length>=2&&n.at(0)==="'"&&n.at(-1)==="'"?n.substring(1,n.length-1):j(n)||y(n)?null:n}function l(n){return Array.isArray(n)?n[0]:n==null?"":r(n)?n.fn[0]:""}function h(n){return Array.isArray(n)?n.slice(1):n!==void 0&&r(n)?n.fn.slice(1):[]}function d(n,t){return Array.isArray(n)?n[t]??null:n===null||!r(n)?null:n.fn[t]??null}function J(n){return n==null?0:Array.isArray(n)?Math.max(0,n.length-1):r(n)?Math.max(0,n.fn.length-1):0}function m(n){return typeof n=="string"&&y(n)?n.length>=2&&n.at(0)==="`"&&n.at(-1)==="`"?n.slice(1,-1):n:n==null?null:s(n)?n.sym:null}function a(n){let t=l(n);if(t==="KeyValuePair"||t==="Tuple"||t==="Pair"){let[i,o]=h(n),e=c(i);return e?[e,o??"Nothing"]:null}return null}function E(n){if(n===null)return null;if(M(n))return n;let t=a(n);if(t)return{[t[0]]:t[1]};if(l(n)==="Dictionary"){let i={},o=h(n);for(let e=1;e<J(n);e++){let u=a(o[e]);u&&(i[u[0]]=O(u[1])??"Nothing")}return{dict:i}}return null}function g(n,t){let i=null;if(Array.isArray(n)&&(i=n),r(n)&&(i=n.fn),i===null)return[];let o=1,e=[];for(;o<i.length;)e.push(t(i[o])),o+=1;return e}function j(n){return/^(nan|oo|\+oo|-oo|infinity|\+infinity|-infinity)$/i.test(n)||/^[+-]?(0|[1-9][0-9]*)(\.[0-9]+)?(\([0-9]+\))?([eE][+-]?[0-9]+)?$/.test(n)}function y(n){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(n)||n.length>=2&&n[0]==="`"&&n[n.length-1]==="`"}function O(n){return n==null?null:f(n)?n.str:b(n)?parseFloat(n.num):s(n)?n.sym:typeof n=="string"||typeof n=="number"?n:Array.isArray(n)?{fn:n}:n}var S="0.50.0";export{E as dictionaryFromExpression,r as isFunctionObject,f as isStringObject,s as isSymbolObject,g as mapArgs,d as operand,l as operator,c as stringValue,m as symbol,S as version};
@@ -1,4 +1,4 @@
1
- /** MathJSON 0.35.6 */
1
+ /** MathJSON 0.50.0 */
2
2
  (function(global,factory){typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'],factory):(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.MathJson = {}));})(this, (function (exports) { 'use strict';
3
- var MathJson=(()=>{var f=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var O=Object.getOwnPropertyNames;var M=Object.prototype.hasOwnProperty;var A=(n,t)=>{for(var i in t)f(n,i,{get:t[i],enumerable:!0})},J=(n,t,i,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of O(t))!M.call(n,e)&&e!==i&&f(n,e,{get:()=>t[e],enumerable:!(r=j(t,e))||r.enumerable});return n};var S=n=>J(f({},"__esModule",{value:!0}),n);var T={};A(T,{dictionaryFromExpression:()=>E,isFunctionObject:()=>u,isStringObject:()=>a,isSymbolObject:()=>o,mapArgs:()=>h,operand:()=>d,operator:()=>s,stringValue:()=>c,symbol:()=>m,version:()=>V});function N(n){return n!==null&&typeof n=="object"&&"num"in n}function o(n){return n!==null&&typeof n=="object"&&"sym"in n}function a(n){return n!==null&&typeof n=="object"&&"str"in n}function p(n){return n!==null&&typeof n=="object"&&"dict"in n&&typeof n.dict=="object"&&!Array.isArray(n.dict)&&n.dict!==null}function u(n){return n!==null&&typeof n=="object"&&"fn"in n&&Array.isArray(n.fn)&&n.fn.length>0&&typeof n.fn[0]=="string"}function c(n){return n==null?null:typeof n=="object"&&"str"in n?n.str:typeof n!="string"?null:n.length>=2&&n.at(0)==="'"&&n.at(-1)==="'"?n.substring(1,n.length-1):k(n)||g(n)?null:n}function s(n){return Array.isArray(n)?n[0]:n==null?"":u(n)?n.fn[0]:""}function b(n){return Array.isArray(n)?n.slice(1):n!==void 0&&u(n)?n.fn.slice(1):[]}function d(n,t){return Array.isArray(n)?n[t]??null:n===null||!u(n)?null:n.fn[t]??null}function D(n){return n==null?0:Array.isArray(n)?Math.max(0,n.length-1):u(n)?Math.max(0,n.fn.length-1):0}function m(n){return typeof n=="string"&&g(n)?n.length>=2&&n.at(0)==="`"&&n.at(-1)==="`"?n.slice(1,-1):n:n==null?null:o(n)?n.sym:null}function y(n){let t=s(n);if(t==="KeyValuePair"||t==="Tuple"||t==="Pair"){let[i,r]=b(n),e=c(i);return e?[e,r??"Nothing"]:null}return null}function E(n){if(n===null)return null;if(p(n))return n;let t=y(n);if(t)return{[t[0]]:t[1]};if(s(n)==="Dictionary"){let i={},r=b(n);for(let e=1;e<D(n);e++){let l=y(r[e]);l&&(i[l[0]]=F(l[1])??"Nothing")}return{dict:i}}return null}function h(n,t){let i=null;if(Array.isArray(n)&&(i=n),u(n)&&(i=n.fn),i===null)return[];let r=1,e=[];for(;r<i.length;)e.push(t(i[r])),r+=1;return e}function k(n){return/^(nan|oo|\+oo|-oo|infinity|\+infinity|-infinity)$/i.test(n)||/^[+-]?(0|[1-9][0-9]*)(\.[0-9]+)?(\([0-9]+\))?([eE][+-]?[0-9]+)?$/.test(n)}function g(n){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(n)||n.length>=2&&n[0]==="`"&&n[n.length-1]==="`"}function F(n){return n==null?null:a(n)?n.str:N(n)?parseFloat(n.num):o(n)?n.sym:typeof n=="string"||typeof n=="number"?n:Array.isArray(n)?{fn:n}:n}var V="0.35.6";return S(T);})();
3
+ var MathJson=(()=>{var a=Object.defineProperty;var E=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var j=Object.prototype.hasOwnProperty;var O=(n,t)=>{for(var i in t)a(n,i,{get:t[i],enumerable:!0})},A=(n,t,i,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of g(t))!j.call(n,e)&&e!==i&&a(n,e,{get:()=>t[e],enumerable:!(o=E(t,e))||o.enumerable});return n};var S=n=>A(a({},"__esModule",{value:!0}),n);var T={};O(T,{dictionaryFromExpression:()=>d,isFunctionObject:()=>r,isStringObject:()=>f,isSymbolObject:()=>u,mapArgs:()=>J,operand:()=>b,operator:()=>s,stringValue:()=>c,symbol:()=>M,version:()=>V});function N(n){return n!==null&&typeof n=="object"&&"num"in n}function u(n){return n!==null&&typeof n=="object"&&"sym"in n}function f(n){return n!==null&&typeof n=="object"&&"str"in n}function p(n){return n!==null&&typeof n=="object"&&"dict"in n&&typeof n.dict=="object"&&!Array.isArray(n.dict)&&n.dict!==null}function r(n){return n!==null&&typeof n=="object"&&"fn"in n&&Array.isArray(n.fn)&&n.fn.length>0&&typeof n.fn[0]=="string"}function c(n){return n==null?null:typeof n=="object"&&"str"in n?n.str:typeof n!="string"?null:n.length>=2&&n.at(0)==="'"&&n.at(-1)==="'"?n.substring(1,n.length-1):k(n)||m(n)?null:n}function s(n){return Array.isArray(n)?n[0]:n==null?"":r(n)?n.fn[0]:""}function y(n){return Array.isArray(n)?n.slice(1):n!==void 0&&r(n)?n.fn.slice(1):[]}function b(n,t){return Array.isArray(n)?n[t]??null:n===null||!r(n)?null:n.fn[t]??null}function D(n){return n==null?0:Array.isArray(n)?Math.max(0,n.length-1):r(n)?Math.max(0,n.fn.length-1):0}function M(n){return typeof n=="string"&&m(n)?n.length>=2&&n.at(0)==="`"&&n.at(-1)==="`"?n.slice(1,-1):n:n==null?null:u(n)?n.sym:null}function h(n){let t=s(n);if(t==="KeyValuePair"||t==="Tuple"||t==="Pair"){let[i,o]=y(n),e=c(i);return e?[e,o??"Nothing"]:null}return null}function d(n){if(n===null)return null;if(p(n))return n;let t=h(n);if(t)return{[t[0]]:t[1]};if(s(n)==="Dictionary"){let i={},o=y(n);for(let e=1;e<D(n);e++){let l=h(o[e]);l&&(i[l[0]]=F(l[1])??"Nothing")}return{dict:i}}return null}function J(n,t){let i=null;if(Array.isArray(n)&&(i=n),r(n)&&(i=n.fn),i===null)return[];let o=1,e=[];for(;o<i.length;)e.push(t(i[o])),o+=1;return e}function k(n){return/^(nan|oo|\+oo|-oo|infinity|\+infinity|-infinity)$/i.test(n)||/^[+-]?(0|[1-9][0-9]*)(\.[0-9]+)?(\([0-9]+\))?([eE][+-]?[0-9]+)?$/.test(n)}function m(n){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(n)||n.length>=2&&n[0]==="`"&&n[n.length-1]==="`"}function F(n){return n==null?null:f(n)?n.str:N(n)?parseFloat(n.num):u(n)?n.sym:typeof n=="string"||typeof n=="number"?n:Array.isArray(n)?{fn:n}:n}var V="0.50.0";return S(T);})();
4
4
  Object.assign(exports, MathJson); Object.defineProperty(exports, '__esModule', { value: true });}));
@@ -1,4 +1,4 @@
1
- /** MathJSON 0.35.6 */
1
+ /** MathJSON 0.50.0 */
2
2
  (function(global,factory){typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'],factory):(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.MathJson = {}));})(this, (function (exports) { 'use strict';
3
3
  var MathJson = (() => {
4
4
  var __defProp = Object.defineProperty;
@@ -149,7 +149,7 @@ var MathJson = (() => {
149
149
  }
150
150
 
151
151
  // src/math-json.ts
152
- var version = "0.35.6";
152
+ var version = "0.50.0";
153
153
  return __toCommonJS(math_json_exports);
154
154
  })();
155
155
  Object.assign(exports, MathJson); Object.defineProperty(exports, '__esModule', { value: true });}));
@@ -1,4 +1,4 @@
1
- /* 0.35.6 */
1
+ /* 0.50.0 */
2
2
  export declare const DEFAULT_COLOR = "\u001B[39m";
3
3
  export declare const DEFAULT_BG = "\u001B[49m";
4
4
  export declare const WHITE_BG = "\u001B[47m";
@@ -1,4 +1,4 @@
1
- /* 0.35.6 */
1
+ /* 0.50.0 */
2
2
  private _listeners;
3
3
  private _pending;
4
4
  private _version;
@@ -1,2 +1,2 @@
1
- /* 0.35.6 */
1
+ /* 0.50.0 */
2
2
  export declare function fuzzyStringMatch(invalidWord: string, validWords: string[]): string | null;
@@ -1,4 +1,4 @@
1
- /* 0.35.6 */
1
+ /* 0.50.0 */
2
2
  /**
3
3
  * Return a string or an array of graphemes.
4
4
  *
@@ -1,4 +1,4 @@
1
- /* 0.35.6 */
1
+ /* 0.50.0 */
2
2
  cause: unknown;
3
3
  value: T;
4
4
  constructor({ message, value, cause, }?: {
@@ -1,4 +1,4 @@
1
- /* 0.35.6 */
1
+ /* 0.50.0 */
2
2
  infer Head,
3
3
  ...infer Rem
4
4
  ] ? MergeTypes<Rem, Res & Head> : Res;
@@ -1,4 +1,4 @@
1
- /* 0.35.6 */
1
+ /* 0.50.0 */
2
2
  export type RuntimeSignalCode = 'timeout' | 'out-of-memory' | 'recursion-depth-exceeded' | 'iteration-limit-exceeded';
3
3
  /** @category Error Handling */
4
4
  export type SignalCode = RuntimeSignalCode | ('invalid-name' | 'expected-predicate' | 'expected-symbol' | 'operator-requires-one-operand' | 'postfix-operator-requires-one-operand' | 'prefix-operator-requires-one-operand' | 'unbalanced-symbols' | 'expected-argument' | 'unexpected-command' | 'cyclic-definition' | 'invalid-supersets' | 'expected-supersets' | 'unknown-domain' | 'duplicate-wikidata' | 'invalid-dictionary-entry' | 'syntax-error');
@@ -1,4 +1,4 @@
1
- /* 0.35.6 */
1
+ /* 0.50.0 */
2
2
  kind: string;
3
3
  position: number;
4
4
  line: number;
@@ -1,4 +1,4 @@
1
- /* 0.35.6 */
1
+ /* 0.50.0 */
2
2
  /** @category Type */
3
3
  export declare class BoxedType {
4
4
  static unknown: BoxedType;
@@ -1,4 +1,4 @@
1
- /* 0.35.6 */
1
+ /* 0.50.0 */
2
2
  export interface Token {
3
3
  type: TokenType;
4
4
  value: string;
@@ -1,4 +1,4 @@
1
- /* 0.35.6 */
1
+ /* 0.50.0 */
2
2
  /**
3
3
  * BNF grammar for the type parser:
4
4
  *
@@ -1,4 +1,4 @@
1
- /* 0.35.6 */
1
+ /* 0.50.0 */
2
2
  import { TypeNode } from './ast-nodes';
3
3
  import { TypeResolver } from './types';
4
4
  export declare class Parser {
@@ -19,6 +19,13 @@ export declare class Parser {
19
19
  private parseUnionType;
20
20
  private parseIntersectionType;
21
21
  private parsePrimaryType;
22
+ /**
23
+ * Scan forward from the current '(' to determine if this is a function
24
+ * signature (i.e. `(...) ->`) without consuming any tokens. Tracks
25
+ * parenthesis depth so nested parens like `((string|number), expr?)` are
26
+ * handled correctly.
27
+ */
28
+ private isFunctionSignature;
22
29
  private parseFunctionSignature;
23
30
  private parseArgument;
24
31
  private parseNamedElement;
@@ -1,4 +1,4 @@
1
- /* 0.35.6 */
1
+ /* 0.50.0 */
2
2
  /** All the types representing numeric values */
3
3
  export declare const NUMERIC_TYPES: NumericPrimitiveType[];
4
4
  export declare const INDEXED_COLLECTION_TYPES: PrimitiveType[];
@@ -8,3 +8,4 @@ export declare const VALUE_TYPES: PrimitiveType[];
8
8
  export declare const EXPRESSION_TYPES: PrimitiveType[];
9
9
  export declare const PRIMITIVE_TYPES: PrimitiveType[];
10
10
  export declare function isValidPrimitiveType(s: any): s is PrimitiveType;
11
+ export declare function isValidType(t: any): t is Readonly<Type>;
@@ -1,4 +1,4 @@
1
- /* 0.35.6 */
1
+ /* 0.50.0 */
2
2
  /**
3
3
  * Reduce the input type
4
4
  *
@@ -1,2 +1,2 @@
1
- /* 0.35.6 */
1
+ /* 0.50.0 */
2
2
  export declare function typeToString(type: Type, precedence?: number): string;
@@ -1,4 +1,4 @@
1
- /* 0.35.6 */
1
+ /* 0.50.0 */
2
2
  /** Return true if lhs is a subtype of rhs */
3
3
  export declare function isPrimitiveSubtype(lhs: PrimitiveType, rhs: PrimitiveType): boolean;
4
4
  /** Return true if lhs is a subtype of rhs */
@@ -1,4 +1,4 @@
1
- /* 0.35.6 */
1
+ /* 0.50.0 */
2
2
  import { Type, TypeResolver } from './types';
3
3
  export declare class TypeBuilder implements ASTVisitor<Type> {
4
4
  private typeResolver;
@@ -1,4 +1,4 @@
1
- /* 0.35.6 */
1
+ /* 0.50.0 */
2
2
  * A primitive type is a simple type that represents a concrete value.
3
3
  *
4
4
  * - `any`: the top type
@@ -1,4 +1,6 @@
1
- /* 0.35.6 */
1
+ /* 0.50.0 */
2
+ export { isValidType };
3
+ import type { Type, FunctionSignature, TypeString } from './types';
2
4
  /** Convert two or more types into a more specific type that is a subtype of
3
5
  * all the input types. The resulting type is usually more constrained and
4
6
  * only encompasses values that belong to both input types.
@@ -33,4 +35,3 @@ export declare function functionSignature(type: Readonly<Type>): Type | undefine
33
35
  export declare function functionResult(type: Readonly<Type> | undefined): Type | undefined;
34
36
  export declare function collectionElementType(type: Readonly<Type>): Type | undefined;
35
37
  export declare function isValidTypeName(name: string): boolean;
36
- export declare function isValidType(t: any): t is Readonly<Type>;
@@ -1,4 +1,4 @@
1
- /* 0.35.6 */
1
+ /* 0.50.0 */
2
2
  *
3
3
  * <!--
4
4
  * !@consider?
@@ -1,4 +1,4 @@
1
- /* 0.35.6 */
1
+ /* 0.50.0 */
2
2
  /**
3
3
  * Add an assumption, in the form of a predicate, for example:
4
4
  *
@@ -23,7 +23,7 @@
23
23
  * `forget` about any symbols in the new assumption.
24
24
  *
25
25
  */
26
- export declare function assume(proposition: BoxedExpression): AssumeResult;
26
+ export declare function assume(proposition: Expression): AssumeResult;
27
27
  /**
28
28
  * Query assumptions to determine the sign of a symbol.
29
29
  *
@@ -40,23 +40,5 @@ export declare function assume(proposition: BoxedExpression): AssumeResult;
40
40
  * @returns The inferred sign, or undefined if no relevant assumptions found
41
41
  */
42
42
  export declare function getSignFromAssumptions(ce: ComputeEngine, symbol: string): Sign | undefined;
43
- /**
44
- * Get inequality bounds for a symbol from the assumption database.
45
- *
46
- * For example, if `x > 4` is assumed, this returns `{ lowerBound: 4, lowerStrict: true }`.
47
- * If `x <= 10` is assumed, this returns `{ upperBound: 10, upperStrict: false }`.
48
- *
49
- * Note: Assumptions are normalized to forms like:
50
- * - `x > 4` becomes `Less(Add(Negate(x), 4), 0)` i.e., `4 - x < 0`
51
- * - `x > 0` becomes `Less(Negate(x), 0)` i.e., `-x < 0`
52
- *
53
- * @param ce - The compute engine instance
54
- * @param symbol - The symbol name to query
55
- * @returns An object with lowerBound, upperBound, and strictness flags
56
- */
57
- export declare function getInequalityBoundsFromAssumptions(ce: ComputeEngine, symbol: string): {
58
- lowerBound?: BoxedExpression;
59
- lowerStrict?: boolean;
60
- upperBound?: BoxedExpression;
61
- upperStrict?: boolean;
62
- };
43
+ import { getInequalityBoundsFromAssumptions } from './boxed-expression/inequality-bounds';
44
+ export { getInequalityBoundsFromAssumptions };
@@ -1,8 +1,8 @@
1
- /* 0.35.6 */
2
- import type { Expression, MathJsonSymbol } from '../../math-json/types';
1
+ /* 0.50.0 */
2
+ import type { MathJsonExpression, MathJsonSymbol } from '../../math-json/types';
3
3
  import type { Type, TypeString } from '../../common/type/types';
4
4
  import { BoxedType } from '../../common/type/boxed-type';
5
- import type { BoxedSubstitution, Metadata, Substitution, CanonicalOptions, BoxedRuleSet, Rule, BoxedBaseDefinition, BoxedValueDefinition, BoxedOperatorDefinition, EvaluateOptions, Sign, BoxedExpression, JsonSerializationOptions, PatternMatchOptions, SimplifyOptions, ComputeEngine, Scope, Tensor } from '../global-types';
5
+ import type { BoxedSubstitution, Metadata, Substitution, CanonicalOptions, BoxedRuleSet, Rule, BoxedBaseDefinition, BoxedValueDefinition, BoxedOperatorDefinition, EvaluateOptions, Sign, Expression, JsonSerializationOptions, PatternMatchOptions, SimplifyOptions, IComputeEngine as ComputeEngine, Scope, Tensor, TensorDataType } from '../global-types';
6
6
  import type { NumericValue } from '../numeric-value/types';
7
7
  import type { SmallInteger } from '../numerics/types';
8
8
  import type { LatexString, SerializeLatexOptions } from '../latex-syntax/types';
@@ -11,11 +11,12 @@ import type { LatexString, SerializeLatexOptions } from '../latex-syntax/types';
11
11
  *
12
12
  * @internal
13
13
  */
14
- export declare abstract class _BoxedExpression implements BoxedExpression {
14
+ export declare abstract class _BoxedExpression implements Expression {
15
+ readonly _kind: string;
15
16
  abstract readonly hash: number;
16
- abstract readonly json: Expression;
17
+ abstract readonly json: MathJsonExpression;
17
18
  abstract isCanonical: boolean;
18
- abstract match(pattern: BoxedExpression, options?: PatternMatchOptions): BoxedSubstitution | null;
19
+ abstract match(pattern: Expression, options?: PatternMatchOptions): BoxedSubstitution | null;
19
20
  readonly engine: ComputeEngine;
20
21
  /** Verbatim LaTeX, obtained from a source, i.e. from parsing,
21
22
  * not generated synthetically
@@ -40,18 +41,18 @@ export declare abstract class _BoxedExpression implements BoxedExpression {
40
41
  * Note: this is a standard method of JavaScript objects.
41
42
  *
42
43
  */
43
- toJSON(): Expression;
44
- toMathJson(options?: Readonly<Partial<JsonSerializationOptions>>): Expression;
44
+ toJSON(): MathJsonExpression;
45
+ toMathJson(options?: Readonly<Partial<JsonSerializationOptions>>): MathJsonExpression;
45
46
  print(): void;
46
47
  get isStructural(): boolean;
47
- get canonical(): BoxedExpression;
48
- get structural(): BoxedExpression;
48
+ get canonical(): Expression;
49
+ get structural(): Expression;
49
50
  get isValid(): boolean;
50
51
  get isPure(): boolean;
51
52
  get isConstant(): boolean;
52
53
  get isNumberLiteral(): boolean;
53
- get numericValue(): number | NumericValue | null;
54
- toNumericValue(): [NumericValue, BoxedExpression];
54
+ get numericValue(): number | NumericValue | undefined;
55
+ toNumericValue(): [NumericValue, Expression];
55
56
  get isEven(): boolean | undefined;
56
57
  get isOdd(): boolean | undefined;
57
58
  get re(): number;
@@ -63,44 +64,44 @@ export declare abstract class _BoxedExpression implements BoxedExpression {
63
64
  get isNonNegative(): boolean | undefined;
64
65
  get isNegative(): boolean | undefined;
65
66
  get isNonPositive(): boolean | undefined;
66
- neg(): BoxedExpression;
67
- inv(): BoxedExpression;
68
- abs(): BoxedExpression;
69
- add(rhs: number | BoxedExpression): BoxedExpression;
70
- sub(rhs: BoxedExpression): BoxedExpression;
71
- mul(rhs: NumericValue | number | BoxedExpression): BoxedExpression;
72
- div(rhs: number | BoxedExpression): BoxedExpression;
73
- pow(exp: number | BoxedExpression): BoxedExpression;
74
- root(exp: number | BoxedExpression): BoxedExpression;
75
- sqrt(): BoxedExpression;
76
- ln(base?: number | BoxedExpression): BoxedExpression;
77
- get numerator(): BoxedExpression;
78
- get denominator(): BoxedExpression;
79
- get numeratorDenominator(): [BoxedExpression, BoxedExpression];
80
- is(other: BoxedExpression | number | bigint | boolean | string): boolean;
81
- isSame(other: BoxedExpression): boolean;
82
- isEqual(other: number | BoxedExpression): boolean | undefined;
83
- isLess(other: number | BoxedExpression): boolean | undefined;
84
- isLessEqual(other: number | BoxedExpression): boolean | undefined;
85
- isGreater(other: number | BoxedExpression): boolean | undefined;
86
- isGreaterEqual(other: number | BoxedExpression): boolean | undefined;
87
- get symbol(): string | null;
88
- get tensor(): null | Tensor<any>;
89
- get string(): string | null;
90
- getSubexpressions(operator: MathJsonSymbol): ReadonlyArray<BoxedExpression>;
91
- get subexpressions(): ReadonlyArray<BoxedExpression>;
67
+ neg(): Expression;
68
+ inv(): Expression;
69
+ abs(): Expression;
70
+ add(_rhs: number | Expression): Expression;
71
+ sub(rhs: Expression): Expression;
72
+ mul(_rhs: NumericValue | number | Expression): Expression;
73
+ div(_rhs: number | Expression): Expression;
74
+ pow(_exp: number | Expression): Expression;
75
+ root(_exp: number | Expression): Expression;
76
+ sqrt(): Expression;
77
+ ln(_base?: number | Expression): Expression;
78
+ get numerator(): Expression;
79
+ get denominator(): Expression;
80
+ get numeratorDenominator(): [Expression, Expression];
81
+ is(other: Expression | number | bigint | boolean | string): boolean;
82
+ isSame(other: Expression): boolean;
83
+ isEqual(other: number | Expression): boolean | undefined;
84
+ isLess(other: number | Expression): boolean | undefined;
85
+ isLessEqual(other: number | Expression): boolean | undefined;
86
+ isGreater(other: number | Expression): boolean | undefined;
87
+ isGreaterEqual(other: number | Expression): boolean | undefined;
88
+ get symbol(): string | undefined;
89
+ get tensor(): Tensor<TensorDataType> | undefined;
90
+ get string(): string | undefined;
91
+ getSubexpressions(operator: MathJsonSymbol): ReadonlyArray<Expression>;
92
+ get subexpressions(): ReadonlyArray<Expression>;
92
93
  get symbols(): ReadonlyArray<string>;
93
94
  get unknowns(): ReadonlyArray<string>;
94
- get errors(): ReadonlyArray<BoxedExpression>;
95
+ get errors(): ReadonlyArray<Expression>;
95
96
  get isFunctionExpression(): boolean;
96
- get ops(): null | ReadonlyArray<BoxedExpression>;
97
+ get ops(): ReadonlyArray<Expression> | undefined;
97
98
  get isScoped(): boolean;
98
99
  get localScope(): Scope | undefined;
99
100
  abstract readonly operator: string;
100
101
  get nops(): SmallInteger;
101
- get op1(): BoxedExpression;
102
- get op2(): BoxedExpression;
103
- get op3(): BoxedExpression;
102
+ get op1(): Expression;
103
+ get op2(): Expression;
104
+ get op3(): Expression;
104
105
  get isNaN(): boolean | undefined;
105
106
  get isInfinity(): boolean | undefined;
106
107
  get isFinite(): boolean | undefined;
@@ -108,13 +109,13 @@ export declare abstract class _BoxedExpression implements BoxedExpression {
108
109
  get rank(): number;
109
110
  subs(_sub: Substitution, options?: {
110
111
  canonical?: CanonicalOptions;
111
- }): BoxedExpression;
112
- map(fn: (x: BoxedExpression) => BoxedExpression, options?: {
112
+ }): Expression;
113
+ map(fn: (x: Expression) => Expression, options?: {
113
114
  canonical: CanonicalOptions;
114
115
  recursive?: boolean;
115
- }): BoxedExpression;
116
- solve(_vars?: Iterable<string> | string | BoxedExpression | Iterable<BoxedExpression>): null | ReadonlyArray<BoxedExpression> | Record<string, BoxedExpression> | Array<Record<string, BoxedExpression>>;
117
- replace(_rules: BoxedRuleSet | Rule | Rule[]): null | BoxedExpression;
116
+ }): Expression;
117
+ solve(_vars?: Iterable<string> | string | Expression | Iterable<Expression>): null | ReadonlyArray<Expression> | Record<string, Expression> | Array<Record<string, Expression>>;
118
+ replace(_rules: BoxedRuleSet | Rule | Rule[]): null | Expression;
118
119
  has(_v: string | string[]): boolean;
119
120
  get description(): string[] | undefined;
120
121
  get url(): string | undefined;
@@ -123,46 +124,32 @@ export declare abstract class _BoxedExpression implements BoxedExpression {
123
124
  get baseDefinition(): BoxedBaseDefinition | undefined;
124
125
  get valueDefinition(): BoxedValueDefinition | undefined;
125
126
  get operatorDefinition(): BoxedOperatorDefinition | undefined;
126
- infer(t: Type, inferenceMode?: 'narrow' | 'widen'): boolean;
127
+ infer(_t: Type, _inferenceMode?: 'narrow' | 'widen'): boolean;
127
128
  bind(): void;
128
129
  reset(): void;
129
- get value(): BoxedExpression | undefined;
130
- set value(_value: any);
130
+ get value(): Expression | undefined;
131
+ set value(_value: unknown);
131
132
  get type(): BoxedType;
132
133
  set type(_type: Type | TypeString | BoxedType);
133
134
  get isNumber(): boolean | undefined;
134
135
  get isInteger(): boolean | undefined;
135
136
  get isRational(): boolean | undefined;
136
137
  get isReal(): boolean | undefined;
137
- simplify(_options?: Partial<SimplifyOptions>): BoxedExpression;
138
- trigSimplify(): BoxedExpression;
139
- expand(): BoxedExpression;
140
- evaluate(_options?: Partial<EvaluateOptions>): BoxedExpression;
141
- evaluateAsync(_options?: Partial<EvaluateOptions>): Promise<BoxedExpression>;
142
- N(): BoxedExpression;
143
- compile(options?: {
144
- to?: string;
145
- target?: any;
146
- operators?: Partial<Record<MathJsonSymbol, [op: string, prec: number]>> | ((op: MathJsonSymbol) => [op: string, prec: number] | undefined);
147
- functions?: Record<MathJsonSymbol, string | ((...any: any[]) => any)>;
148
- vars?: Record<MathJsonSymbol, string>;
149
- imports?: ((...any: any[]) => any)[];
150
- preamble?: string;
151
- fallback?: boolean;
152
- }): ((...args: any[]) => any) & {
153
- isCompiled?: boolean;
154
- };
138
+ simplify(_options?: Partial<SimplifyOptions>): Expression;
139
+ evaluate(_options?: Partial<EvaluateOptions>): Expression;
140
+ evaluateAsync(_options?: Partial<EvaluateOptions>): Promise<Expression>;
141
+ N(): Expression;
155
142
  get isCollection(): boolean;
156
143
  get isIndexedCollection(): boolean;
157
144
  get isLazyCollection(): boolean;
158
- contains(_rhs: BoxedExpression): boolean | undefined;
159
- subsetOf(_target: BoxedExpression, _strict: boolean): boolean | undefined;
145
+ contains(_rhs: Expression): boolean | undefined;
146
+ subsetOf(_target: Expression, _strict: boolean): boolean | undefined;
160
147
  get count(): number | undefined;
161
148
  get isEmptyCollection(): boolean | undefined;
162
149
  get isFiniteCollection(): boolean | undefined;
163
- each(): Generator<BoxedExpression>;
164
- at(_index: number): BoxedExpression | undefined;
165
- get(_key: string | BoxedExpression): BoxedExpression | undefined;
166
- indexWhere(_predicate: (element: BoxedExpression) => boolean): number | undefined;
150
+ each(): Generator<Expression>;
151
+ at(_index: number): Expression | undefined;
152
+ get(_key: string | Expression): Expression | undefined;
153
+ indexWhere(_predicate: (element: Expression) => boolean): number | undefined;
167
154
  }
168
- export declare function getSubexpressions(expr: BoxedExpression, name: MathJsonSymbol): ReadonlyArray<BoxedExpression>;
155
+ export declare function getSubexpressions(expr: Expression, name: MathJsonSymbol): ReadonlyArray<Expression>;
@@ -1,5 +1,5 @@
1
- /* 0.35.6 */
1
+ /* 0.50.0 */
2
2
  import { Decimal } from 'decimal.js';
3
- import type { BoxedExpression } from '../global-types';
4
- export declare function apply(expr: BoxedExpression, fn: (x: number) => number | Complex, bigFn?: (x: Decimal) => Decimal | Complex | number, complexFn?: (x: Complex) => number | Complex): BoxedExpression | undefined;
5
- export declare function apply2(expr1: BoxedExpression, expr2: BoxedExpression, fn: (x1: number, x2: number) => number | Complex, bigFn?: (x1: Decimal, x2: Decimal) => Decimal | Complex | number, complexFn?: (x1: Complex, x2: number | Complex) => Complex | number): BoxedExpression | undefined;
3
+ import type { Expression } from '../global-types';
4
+ export declare function apply(expr: Expression, fn: (x: number) => number | Complex, bigFn?: (x: Decimal) => Decimal | Complex | number, complexFn?: (x: Complex) => number | Complex): Expression | undefined;
5
+ export declare function apply2(expr1: Expression, expr2: Expression, fn: (x1: number, x2: number) => number | Complex, bigFn?: (x1: Decimal, x2: Decimal) => Decimal | Complex | number, complexFn?: (x1: Complex, x2: number | Complex) => Complex | number): Expression | undefined;
@@ -1,6 +1,6 @@
1
- /* 0.35.6 */
1
+ /* 0.50.0 */
2
2
  import { BoxedType } from '../../common/type/boxed-type';
3
- import type { BoxedExpression, ComputeEngine } from '../global-types';
3
+ import type { Expression, IComputeEngine as ComputeEngine } from '../global-types';
4
4
  /**
5
5
  *
6
6
  * The canonical form of `Add`:
@@ -10,7 +10,16 @@ import type { BoxedExpression, ComputeEngine } from '../global-types';
10
10
  * - sort the terms
11
11
  *
12
12
  */
13
- export declare function canonicalAdd(ce: ComputeEngine, ops: ReadonlyArray<BoxedExpression>): BoxedExpression;
14
- export declare function addType(args: ReadonlyArray<BoxedExpression>): Type | BoxedType;
15
- export declare function add(...xs: ReadonlyArray<BoxedExpression>): BoxedExpression;
16
- export declare function addN(...xs: ReadonlyArray<BoxedExpression>): BoxedExpression;
13
+ export declare function canonicalAdd(ce: ComputeEngine, ops: ReadonlyArray<Expression>): Expression;
14
+ export declare function addType(args: ReadonlyArray<Expression>): Type | BoxedType;
15
+ export declare function add(...xs: ReadonlyArray<Expression>): Expression;
16
+ export declare function addN(...xs: ReadonlyArray<Expression>): Expression;
17
+ export declare class Terms {
18
+ private engine;
19
+ private terms;
20
+ constructor(ce: ComputeEngine, terms: ReadonlyArray<Expression>);
21
+ private _add;
22
+ private find;
23
+ N(): Expression;
24
+ asExpression(): Expression;
25
+ }
@@ -1,4 +1,69 @@
1
- /* 0.35.6 */
1
+ /* 0.50.0 */
2
+ import { NumericValue } from '../numeric-value/types';
3
+ import type { Rational } from '../numerics/types';
4
+ /**
5
+ * Group terms in a product by common term.
6
+ *
7
+ * All the terms should be canonical.
8
+ * - the arguments should have been flattened for `Multiply`
9
+ *
10
+ * - any argument of power been distributed, i.e.
11
+ * (ab)^2 -> a^2 b^2
12
+ * *
13
+ * 3 + √5 + √(x+1) + x^2 + (a+b)^2 + d
14
+ * -> [ [[3, "d"], [1, 1]],
15
+ * [[5, "x+1"], [1, 2]],
16
+ * [[1, "a+b"], [2, 1]]
17
+ * ]
18
+ *
19
+ */
20
+ export declare class Product {
21
+ readonly options?: {
22
+ canonical?: boolean;
23
+ };
24
+ engine: ComputeEngine;
25
+ coefficient: NumericValue;
26
+ terms: {
27
+ term: Expression;
28
+ exponent: Rational;
29
+ }[];
30
+ private _isCanonical;
31
+ static from(expr: Expression): Product;
32
+ constructor(ce: ComputeEngine, xs?: ReadonlyArray<Expression>, options?: {
33
+ canonical?: boolean;
34
+ });
35
+ /**
36
+ * Add a term to the product.
37
+ *
38
+ * If `this._isCanonical` a running product of exact terms is kept.
39
+ * Otherwise, terms and their exponent are tallied.
40
+ */
41
+ mul(term: Expression, exp?: Rational): void;
42
+ /** Divide the product by a term of coefficient */
43
+ div(term: NumericValue | Expression): void;
44
+ /** The terms of the product, grouped by degrees.
45
+ *
46
+ * If `mode` is `rational`, rationals are split into separate numerator and
47
+ * denominator, so that a rational expression can be created later
48
+ * If `mode` is `expression`, a boxed expression is returned, without
49
+ * splitting rationals
50
+ * If `mode` is `numeric`, the literals are combined into one expression
51
+ *
52
+ */
53
+ groupedByDegrees(options?: {
54
+ mode?: 'rational' | 'expression' | 'numeric';
55
+ }): {
56
+ exponent: Rational;
57
+ terms: Expression[];
58
+ }[] | null;
59
+ asExpression(options?: {
60
+ numericApproximation: boolean;
61
+ }): Expression;
62
+ /** The product, expressed as a numerator and denominator */
63
+ asNumeratorDenominator(): [Expression, Expression];
64
+ asRationalExpression(): Expression;
65
+ }
66
+ export declare function commonTerms(lhs: Product, rhs: Product): [NumericValue, Expression];
2
67
  /**
3
68
  * Canonical form of 'Divide' (and 'Rational')
4
69
  * - remove denominator of 1
@@ -8,8 +73,8 @@
8
73
  * or Rational expression
9
74
  * - evaluate number literals
10
75
  */
11
- export declare function canonicalDivide(op1: BoxedExpression, op2: BoxedExpression): BoxedExpression;
12
- export declare function div(num: BoxedExpression, denom: number | BoxedExpression): BoxedExpression;
76
+ export declare function canonicalDivide(op1: Expression, op2: Expression): Expression;
77
+ export declare function div(num: Expression, denom: number | Expression): Expression;
13
78
  /**
14
79
  * The canonical form of `Multiply`:
15
80
  * - removes `1` and `-1`
@@ -22,6 +87,7 @@ export declare function div(num: BoxedExpression, denom: number | BoxedExpressio
22
87
  *
23
88
  * The input ops may not be canonical, the result is canonical.
24
89
  */
25
- export declare function canonicalMultiply(ce: ComputeEngine, ops: ReadonlyArray<BoxedExpression>): BoxedExpression;
26
- export declare function mul(...xs: ReadonlyArray<BoxedExpression>): BoxedExpression;
27
- export declare function mulN(...xs: ReadonlyArray<BoxedExpression>): BoxedExpression;
90
+ export declare function canonicalMultiply(ce: ComputeEngine, ops: ReadonlyArray<Expression>): Expression;
91
+ export declare function expandProducts(ce: ComputeEngine, ops: ReadonlyArray<Expression>): Expression | null;
92
+ export declare function mul(...xs: ReadonlyArray<Expression>): Expression;
93
+ export declare function mulN(...xs: ReadonlyArray<Expression>): Expression;