@cortex-js/compute-engine 0.32.1 → 0.33.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 (163) hide show
  1. package/dist/compute-engine.esm.js +31665 -25881
  2. package/dist/compute-engine.min.esm.js +43 -46
  3. package/dist/compute-engine.min.umd.js +43 -46
  4. package/dist/compute-engine.umd.js +31692 -25925
  5. package/dist/math-json.esm.js +2 -2
  6. package/dist/math-json.min.esm.js +2 -130
  7. package/dist/math-json.min.umd.js +2 -2
  8. package/dist/math-json.umd.js +2 -2
  9. package/dist/types/common/ansi-codes.d.ts +1 -1
  10. package/dist/types/common/configuration-change.d.ts +1 -1
  11. package/dist/types/common/fuzzy-string-match.d.ts +1 -1
  12. package/dist/types/common/grapheme-splitter.d.ts +1 -1
  13. package/dist/types/common/interruptible.d.ts +1 -1
  14. package/dist/types/common/one-of.d.ts +2 -1
  15. package/dist/types/common/signals.d.ts +1 -1
  16. package/dist/types/common/type/ast-nodes.d.ts +1 -1
  17. package/dist/types/common/type/boxed-type.d.ts +1 -1
  18. package/dist/types/common/type/lexer.d.ts +1 -1
  19. package/dist/types/common/type/parse.d.ts +1 -1
  20. package/dist/types/common/type/parser.d.ts +1 -1
  21. package/dist/types/common/type/primitive.d.ts +1 -1
  22. package/dist/types/common/type/serialize.d.ts +1 -1
  23. package/dist/types/common/type/subtype.d.ts +1 -1
  24. package/dist/types/common/type/type-builder.d.ts +1 -1
  25. package/dist/types/common/type/types.d.ts +1 -1
  26. package/dist/types/common/type/utils.d.ts +1 -1
  27. package/dist/types/common/utils.d.ts +1 -1
  28. package/dist/types/compute-engine/assume.d.ts +1 -1
  29. package/dist/types/compute-engine/boxed-expression/abstract-boxed-expression.d.ts +2 -1
  30. package/dist/types/compute-engine/boxed-expression/apply.d.ts +1 -1
  31. package/dist/types/compute-engine/boxed-expression/arithmetic-add.d.ts +1 -1
  32. package/dist/types/compute-engine/boxed-expression/arithmetic-mul-div.d.ts +1 -1
  33. package/dist/types/compute-engine/boxed-expression/arithmetic-power.d.ts +1 -1
  34. package/dist/types/compute-engine/boxed-expression/ascii-math.d.ts +1 -1
  35. package/dist/types/compute-engine/boxed-expression/box.d.ts +1 -1
  36. package/dist/types/compute-engine/boxed-expression/boxed-dictionary.d.ts +1 -1
  37. package/dist/types/compute-engine/boxed-expression/boxed-function.d.ts +5 -1
  38. package/dist/types/compute-engine/boxed-expression/boxed-number.d.ts +1 -1
  39. package/dist/types/compute-engine/boxed-expression/boxed-operator-definition.d.ts +1 -1
  40. package/dist/types/compute-engine/boxed-expression/boxed-patterns.d.ts +1 -1
  41. package/dist/types/compute-engine/boxed-expression/boxed-string.d.ts +1 -1
  42. package/dist/types/compute-engine/boxed-expression/boxed-symbol.d.ts +5 -1
  43. package/dist/types/compute-engine/boxed-expression/boxed-tensor.d.ts +1 -1
  44. package/dist/types/compute-engine/boxed-expression/boxed-value-definition.d.ts +1 -1
  45. package/dist/types/compute-engine/boxed-expression/cache.d.ts +1 -1
  46. package/dist/types/compute-engine/boxed-expression/canonical-utils.d.ts +1 -1
  47. package/dist/types/compute-engine/boxed-expression/canonical.d.ts +1 -1
  48. package/dist/types/compute-engine/boxed-expression/compare.d.ts +1 -1
  49. package/dist/types/compute-engine/boxed-expression/expand.d.ts +1 -1
  50. package/dist/types/compute-engine/boxed-expression/expression-map.d.ts +1 -1
  51. package/dist/types/compute-engine/boxed-expression/factor.d.ts +1 -1
  52. package/dist/types/compute-engine/boxed-expression/flatten.d.ts +1 -1
  53. package/dist/types/compute-engine/boxed-expression/hold.d.ts +1 -1
  54. package/dist/types/compute-engine/boxed-expression/match.d.ts +1 -1
  55. package/dist/types/compute-engine/boxed-expression/negate.d.ts +1 -1
  56. package/dist/types/compute-engine/boxed-expression/numerics.d.ts +1 -1
  57. package/dist/types/compute-engine/boxed-expression/order.d.ts +1 -1
  58. package/dist/types/compute-engine/boxed-expression/polynomials.d.ts +1 -1
  59. package/dist/types/compute-engine/boxed-expression/product.d.ts +1 -1
  60. package/dist/types/compute-engine/boxed-expression/rules.d.ts +1 -1
  61. package/dist/types/compute-engine/boxed-expression/serialize.d.ts +1 -1
  62. package/dist/types/compute-engine/boxed-expression/sgn.d.ts +1 -1
  63. package/dist/types/compute-engine/boxed-expression/simplify.d.ts +1 -1
  64. package/dist/types/compute-engine/boxed-expression/solve.d.ts +1 -1
  65. package/dist/types/compute-engine/boxed-expression/terms.d.ts +1 -1
  66. package/dist/types/compute-engine/boxed-expression/trigonometry.d.ts +1 -2
  67. package/dist/types/compute-engine/boxed-expression/utils.d.ts +1 -1
  68. package/dist/types/compute-engine/boxed-expression/validate.d.ts +1 -1
  69. package/dist/types/compute-engine/collection-utils.d.ts +1 -1
  70. package/dist/types/compute-engine/cost-function.d.ts +1 -1
  71. package/dist/types/compute-engine/function-utils.d.ts +1 -1
  72. package/dist/types/compute-engine/global-types.d.ts +42 -3
  73. package/dist/types/compute-engine/index.d.ts +1 -1
  74. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-algebra.d.ts +1 -1
  75. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-arithmetic.d.ts +1 -1
  76. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-calculus.d.ts +1 -1
  77. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-complex.d.ts +1 -1
  78. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-core.d.ts +1 -1
  79. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-linear-algebra.d.ts +1 -1
  80. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-logic.d.ts +1 -1
  81. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-other.d.ts +1 -1
  82. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-relational-operators.d.ts +1 -1
  83. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-sets.d.ts +1 -1
  84. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-statistics.d.ts +1 -1
  85. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-symbols.d.ts +1 -1
  86. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-trigonometry.d.ts +1 -1
  87. package/dist/types/compute-engine/latex-syntax/dictionary/definitions.d.ts +3 -1
  88. package/dist/types/compute-engine/latex-syntax/parse-symbol.d.ts +1 -1
  89. package/dist/types/compute-engine/latex-syntax/parse.d.ts +1 -1
  90. package/dist/types/compute-engine/latex-syntax/serialize-number.d.ts +1 -1
  91. package/dist/types/compute-engine/latex-syntax/serializer-style.d.ts +1 -1
  92. package/dist/types/compute-engine/latex-syntax/serializer.d.ts +1 -1
  93. package/dist/types/compute-engine/latex-syntax/tokenizer.d.ts +1 -1
  94. package/dist/types/compute-engine/latex-syntax/types.d.ts +11 -2
  95. package/dist/types/compute-engine/latex-syntax/utils.d.ts +1 -1
  96. package/dist/types/compute-engine/library/arithmetic.d.ts +1 -1
  97. package/dist/types/compute-engine/library/calculus.d.ts +1 -1
  98. package/dist/types/compute-engine/library/collections.d.ts +1 -1
  99. package/dist/types/compute-engine/library/combinatorics.d.ts +1 -1
  100. package/dist/types/compute-engine/library/complex.d.ts +1 -1
  101. package/dist/types/compute-engine/library/control-structures.d.ts +1 -1
  102. package/dist/types/compute-engine/library/core.d.ts +1 -1
  103. package/dist/types/compute-engine/library/invisible-operator.d.ts +1 -1
  104. package/dist/types/compute-engine/library/library.d.ts +1 -1
  105. package/dist/types/compute-engine/library/linear-algebra.d.ts +1 -1
  106. package/dist/types/compute-engine/library/logic-analysis.d.ts +31 -1
  107. package/dist/types/compute-engine/library/logic-utils.d.ts +1 -5
  108. package/dist/types/compute-engine/library/logic.d.ts +1 -1
  109. package/dist/types/compute-engine/library/number-theory.d.ts +1 -1
  110. package/dist/types/compute-engine/library/polynomials.d.ts +1 -1
  111. package/dist/types/compute-engine/library/random-expression.d.ts +1 -1
  112. package/dist/types/compute-engine/library/relational-operator.d.ts +1 -1
  113. package/dist/types/compute-engine/library/sets.d.ts +1 -1
  114. package/dist/types/compute-engine/library/statistics.d.ts +1 -1
  115. package/dist/types/compute-engine/library/trigonometry.d.ts +1 -1
  116. package/dist/types/compute-engine/library/utils.d.ts +60 -2
  117. package/dist/types/compute-engine/numeric-value/big-numeric-value.d.ts +1 -1
  118. package/dist/types/compute-engine/numeric-value/exact-numeric-value.d.ts +1 -1
  119. package/dist/types/compute-engine/numeric-value/machine-numeric-value.d.ts +1 -1
  120. package/dist/types/compute-engine/numeric-value/types.d.ts +1 -1
  121. package/dist/types/compute-engine/numerics/bigint.d.ts +1 -1
  122. package/dist/types/compute-engine/numerics/expression.d.ts +1 -1
  123. package/dist/types/compute-engine/numerics/interval.d.ts +1 -1
  124. package/dist/types/compute-engine/numerics/monte-carlo.d.ts +1 -1
  125. package/dist/types/compute-engine/numerics/numeric-bigint.d.ts +1 -1
  126. package/dist/types/compute-engine/numerics/numeric-bignum.d.ts +1 -1
  127. package/dist/types/compute-engine/numerics/numeric-complex.d.ts +1 -1
  128. package/dist/types/compute-engine/numerics/numeric.d.ts +2 -2
  129. package/dist/types/compute-engine/numerics/primes.d.ts +1 -1
  130. package/dist/types/compute-engine/numerics/rationals.d.ts +1 -1
  131. package/dist/types/compute-engine/numerics/richardson.d.ts +1 -1
  132. package/dist/types/compute-engine/numerics/special-functions.d.ts +1 -1
  133. package/dist/types/compute-engine/numerics/statistics.d.ts +1 -1
  134. package/dist/types/compute-engine/numerics/strings.d.ts +1 -1
  135. package/dist/types/compute-engine/numerics/types.d.ts +2 -1
  136. package/dist/types/compute-engine/symbolic/antiderivative.d.ts +1 -1
  137. package/dist/types/compute-engine/symbolic/derivative.d.ts +1 -1
  138. package/dist/types/compute-engine/symbolic/distribute.d.ts +1 -1
  139. package/dist/types/compute-engine/symbolic/fu-cost.d.ts +33 -0
  140. package/dist/types/compute-engine/symbolic/fu-transforms.d.ts +130 -0
  141. package/dist/types/compute-engine/symbolic/fu.d.ts +48 -0
  142. package/dist/types/compute-engine/symbolic/simplify-abs.d.ts +12 -0
  143. package/dist/types/compute-engine/symbolic/simplify-divide.d.ts +15 -0
  144. package/dist/types/compute-engine/symbolic/simplify-hyperbolic.d.ts +2 -0
  145. package/dist/types/compute-engine/symbolic/simplify-infinity.d.ts +14 -0
  146. package/dist/types/compute-engine/symbolic/simplify-log.d.ts +15 -0
  147. package/dist/types/compute-engine/symbolic/simplify-power.d.ts +15 -0
  148. package/dist/types/compute-engine/symbolic/simplify-product.d.ts +1 -1
  149. package/dist/types/compute-engine/symbolic/simplify-rules.d.ts +1 -11
  150. package/dist/types/compute-engine/symbolic/simplify-sum.d.ts +1 -1
  151. package/dist/types/compute-engine/symbolic/simplify-trig.d.ts +2 -0
  152. package/dist/types/compute-engine/tensor/tensor-fields.d.ts +1 -1
  153. package/dist/types/compute-engine/tensor/tensors.d.ts +3 -3
  154. package/dist/types/compute-engine/types.d.ts +1 -1
  155. package/dist/types/compute-engine.d.ts +1 -1
  156. package/dist/types/math-json/symbols.d.ts +1 -1
  157. package/dist/types/math-json/types.d.ts +1 -1
  158. package/dist/types/math-json/utils.d.ts +1 -1
  159. package/dist/types/math-json.d.ts +2 -2
  160. package/package.json +1 -1
  161. package/dist/types/compute-engine/compilation/base-compiler.d.ts +0 -31
  162. package/dist/types/compute-engine/compilation/javascript-target.d.ts +0 -68
  163. package/dist/types/compute-engine/compilation/types.d.ts +0 -83
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  export declare const UNIVARIATE_ROOTS: Rule[];
3
3
  /**
4
4
  * Expression is a function of a single variable (`x`) or an Equality
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  export declare class Terms {
3
3
  private engine;
4
4
  private terms;
@@ -1,5 +1,4 @@
1
- /* 0.32.1 */
2
- export declare function Fu(exp: BoxedExpression): RuleStep | undefined;
1
+ /* 0.33.0 */
3
2
  /** Assuming x in an expression in radians, convert to current angular unit. */
4
3
  export declare function radiansToAngle(x: BoxedExpression | undefined): BoxedExpression | undefined;
5
4
  export declare function evalTrig(name: string, op: BoxedExpression | undefined): BoxedExpression | undefined;
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  import { Type } from '../../common/type/types';
3
3
  import { NumericValue } from '../numeric-value/types';
4
4
  /**
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  import type { BoxedExpression, ComputeEngine } from '../global-types';
3
3
  /**
4
4
  * Check that the number of arguments is as expected.
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  /** If a collection has fewer than this many elements, eagerly evaluate it.
3
3
  *
4
4
  * For example, evaluate the Union of two sets with 10 elements each will
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  /**
3
3
  * The default cost function, used to determine if a new expression is simpler
4
4
  * than the old one.
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  import type { BoxedDefinition, BoxedExpression, ComputeEngine, Scope } from './global-types';
3
3
  /***
4
4
  * ### THEORY OF OPERATIONS
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  import type { OneOf } from '../common/one-of';
3
3
  import type { Expression, MathJsonNumberObject, MathJsonStringObject, MathJsonFunctionObject, MathJsonSymbolObject, MathJsonSymbol, MathJsonDictionaryObject } from '../math-json';
4
4
  import type { Type, TypeReference, TypeResolver, TypeString } from '../common/type/types';
@@ -107,7 +107,7 @@ export interface Tensor<DT extends TensorDataType> extends TensorData<DT> {
107
107
  readonly isZero: boolean;
108
108
  at(...indices: number[]): DataTypeMap[DT] | undefined;
109
109
  diagonal(axis1?: number, axis2?: number): undefined | DataTypeMap[DT][];
110
- trace(axis1?: number, axis2?: number): undefined | DataTypeMap[DT];
110
+ trace(axis1?: number, axis2?: number): undefined | DataTypeMap[DT] | Tensor<DT>;
111
111
  reshape(...shape: number[]): Tensor<DT>;
112
112
  slice(index: number): Tensor<DT>;
113
113
  flatten(): DataTypeMap[DT][];
@@ -615,7 +615,7 @@ export interface BoxedExpression {
615
615
  * Return the value of this expression, if a number literal.
616
616
  *
617
617
  * Note it is possible for `expr.numericValue` to be `null`, and for
618
- * `expr.isNotZero` to be true. For example, when a symbol has been
618
+ * `expr.is(0)` to be false. For example, when a symbol has been
619
619
  * defined with an assumption.
620
620
  *
621
621
  * Conversely, `expr.isNumber` may be true even if `expr.numericValue` is
@@ -1242,6 +1242,30 @@ export interface BoxedExpression {
1242
1242
  *
1243
1243
  */
1244
1244
  simplify(options?: Partial<SimplifyOptions>): BoxedExpression;
1245
+ /**
1246
+ * Apply the Fu algorithm to simplify trigonometric expressions.
1247
+ *
1248
+ * The Fu algorithm is a systematic approach to trigonometric simplification
1249
+ * that uses transformation rules (TR1-TR22), combination transforms (CTR),
1250
+ * and rule lists (RL) to reduce the number of trigonometric functions.
1251
+ *
1252
+ * This is equivalent to calling `simplify({ strategy: 'fu' })` but is
1253
+ * more convenient for trig-heavy expressions.
1254
+ *
1255
+ * Reference: Fu, Hongguang, Xiuqin Zhong, and Zhenbing Zeng.
1256
+ * "Automated and readable simplification of trigonometric expressions."
1257
+ * Mathematical and Computer Modelling 44.11 (2006): 1169-1177.
1258
+ *
1259
+ * @example
1260
+ * ```typescript
1261
+ * ce.parse('\\sin(x)\\cos(x)').trigSimplify()
1262
+ * // => sin(2x)/2
1263
+ *
1264
+ * ce.parse('\\sin^2(x) + \\cos^2(x)').trigSimplify()
1265
+ * // => 1
1266
+ * ```
1267
+ */
1268
+ trigSimplify(): BoxedExpression;
1245
1269
  /**
1246
1270
  * Expand the expression: distribute multiplications over additions,
1247
1271
  * and expand powers.
@@ -2041,6 +2065,21 @@ export type SimplifyOptions = {
2041
2065
  * used.
2042
2066
  */
2043
2067
  costFunction?: (expr: BoxedExpression) => number;
2068
+ /**
2069
+ * The simplification strategy to use.
2070
+ *
2071
+ * - `'default'`: Use standard simplification rules (default)
2072
+ * - `'fu'`: Use the Fu algorithm for trigonometric simplification.
2073
+ * This is more aggressive for trig expressions and may produce
2074
+ * different results than the default strategy.
2075
+ *
2076
+ * **Note:** When using the `'fu'` strategy, the `costFunction` and `rules`
2077
+ * options are ignored. The Fu algorithm uses its own specialized cost
2078
+ * function that prioritizes minimizing the number of trigonometric
2079
+ * functions. Standard simplification is applied before and after the
2080
+ * Fu transformations using the engine's default rules.
2081
+ */
2082
+ strategy?: 'default' | 'fu';
2044
2083
  };
2045
2084
  /**
2046
2085
  * A table mapping symbols to their definition.
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  import { Decimal } from 'decimal.js';
3
3
  import { Type, TypeResolver, TypeString } from '../common/type/types';
4
4
  import { BoxedType } from '../common/type/boxed-type';
@@ -1,2 +1,2 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  export declare const DEFINITIONS_ALGEBRA: LatexDictionary;
@@ -1,2 +1,2 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  export declare const DEFINITIONS_ARITHMETIC: LatexDictionary;
@@ -1,2 +1,2 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  export declare const DEFINITIONS_CALCULUS: LatexDictionary;
@@ -1,2 +1,2 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  export declare const DEFINITIONS_COMPLEX: LatexDictionary;
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  export declare const DEFINITIONS_CORE: LatexDictionary;
3
3
  export declare const DELIMITERS_SHORTHAND: {
4
4
  '(': string;
@@ -1,2 +1,2 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  export declare const DEFINITIONS_LINEAR_ALGEBRA: LatexDictionary;
@@ -1,2 +1,2 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  export declare const DEFINITIONS_LOGIC: LatexDictionary;
@@ -1,2 +1,2 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  export declare const DEFINITIONS_OTHERS: LatexDictionary;
@@ -1,2 +1,2 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  export declare const DEFINITIONS_INEQUALITIES: LatexDictionaryEntry[];
@@ -1,2 +1,2 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  export declare const DEFINITIONS_SETS: LatexDictionary;
@@ -1,2 +1,2 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  export declare const DEFINITIONS_STATISTICS: LatexDictionary;
@@ -1,3 +1,3 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  export declare const SYMBOLS: [string, string, number][];
3
3
  export declare const DEFINITIONS_SYMBOLS: LatexDictionary;
@@ -1,2 +1,2 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  export declare const DEFINITIONS_TRIGONOMETRY: LatexDictionary;
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  import { Delimiter, EnvironmentParseHandler, ExpressionParseHandler, InfixParseHandler, LatexDictionary, LatexDictionaryEntry, LatexString, LatexToken, LibraryCategory, MatchfixParseHandler, PostfixParseHandler, Precedence, SerializeHandler } from '../types';
3
3
  export type CommonEntry = {
4
4
  /** Note: a name is required if a serialize handler is provided */
@@ -75,7 +75,9 @@ export type IndexedEnvironmentEntry = CommonEntry & {
75
75
  };
76
76
  /** @internal */
77
77
  export declare function isIndexedEnvironmentEntry(entry: IndexedLatexDictionaryEntry): entry is IndexedEnvironmentEntry;
78
+ /** @internal */
78
79
  export type IndexedLatexDictionaryEntry = IndexedExpressionEntry | IndexedFunctionEntry | IndexedSymbolEntry | IndexedMatchfixEntry | IndexedInfixEntry | IndexedPrefixEntry | IndexedPostfixEntry | IndexedEnvironmentEntry;
80
+ /** @internal */
79
81
  export type IndexedLatexDictionary = {
80
82
  ids: Map<string, IndexedLatexDictionaryEntry>;
81
83
  lookahead: number;
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  import { Parser } from './types';
3
3
  /** For error handling, if we have a symbol prefix, assume
4
4
  * the symbol is invalid (it would have been captured by
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  import { ParseLatexOptions, LatexToken, Terminator, Parser, SymbolTable } from './types';
3
3
  import type { IndexedLatexDictionary, IndexedLatexDictionaryEntry, IndexedInfixEntry, IndexedPostfixEntry, IndexedPrefixEntry, IndexedSymbolEntry, IndexedExpressionEntry, IndexedFunctionEntry } from './dictionary/definitions';
4
4
  import { BoxedType } from '../../common/type/boxed-type';
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  import { NumberSerializationFormat } from './types';
3
3
  /**
4
4
  * @param expr - A number, can be represented as a string
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  import { DelimiterScale } from './types';
3
3
  export declare function getApplyFunctionStyle(_expr: Expression, _level: number): DelimiterScale;
4
4
  export declare function getGroupStyle(_expr: Expression, _level: number): DelimiterScale;
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  import { LatexString, SerializeLatexOptions, DelimiterScale } from './types';
3
3
  import type { IndexedLatexDictionary, IndexedLatexDictionaryEntry } from './dictionary/definitions';
4
4
  export declare class Serializer {
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  * ## Reference
3
3
  * TeX source code:
4
4
  * {@link http://tug.org/texlive/devsrc/Build/source/texk/web2c/tex.web | Tex.web}
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  import type { Expression, MathJsonSymbol } from '../../math-json/types';
3
3
  import { BoxedType, TypeString } from '../types';
4
4
  import type { IndexedLatexDictionary, IndexedLatexDictionaryEntry } from './dictionary/definitions';
@@ -365,7 +365,7 @@ export type FunctionEntry = BaseEntry & Trigger & {
365
365
  * A dictionary entry is a record that maps a LaTeX token or string of tokens
366
366
  * ( a trigger) to a MathJSON expression or to a parsing handler.
367
367
  *
368
- * Set the {@linkcode ComputeEngine.latexDictionary} property to an array of
368
+ * Set the `ComputeEngine.latexDictionary` property to an array of
369
369
  * dictionary entries to define custom LaTeX parsing and serialization.
370
370
  *
371
371
  * @category Latex Parsing and Serialization
@@ -563,6 +563,15 @@ export type ParseLatexOptions = NumberFormat & {
563
563
  * // parses as: ∀x. (P(x) → Q(x))
564
564
  */
565
565
  quantifierScope: 'tight' | 'loose';
566
+ /**
567
+ * The variable used for time derivatives in Newton notation
568
+ * (`\dot{x}`, `\ddot{x}`, etc.).
569
+ *
570
+ * When parsing `\dot{x}`, it will be interpreted as `["D", "x", timeDerivativeVariable]`.
571
+ *
572
+ * **Default:** `"t"`
573
+ */
574
+ timeDerivativeVariable: string;
566
575
  };
567
576
  /**
568
577
  *
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  export declare function asLatexString(s: unknown): string | null;
3
3
  export declare function isRelationalOperator(name: string | undefined): boolean;
4
4
  export declare function isInequalityOperator(operator: string | undefined): boolean;
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  export type CanonicalArithmeticOperators = 'Add' | 'Negate' | 'Multiply' | 'Divide' | 'Power' | 'Sqrt' | 'Root' | 'Ln';
3
3
  export declare const ARITHMETIC_LIBRARY: SymbolDefinitions[];
4
4
  export declare function isPrime(expr: BoxedExpression): boolean | undefined;
@@ -1,2 +1,2 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  export declare const CALCULUS_LIBRARY: SymbolDefinitions[];
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  export declare const DEFAULT_LINSPACE_COUNT = 50;
3
3
  export declare const COLLECTIONS_LIBRARY: SymbolDefinitions;
4
4
  /**
@@ -1,2 +1,2 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  export declare const COMBINATORICS_LIBRARY: SymbolDefinitions[];
@@ -1,2 +1,2 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  export declare const COMPLEX_LIBRARY: SymbolDefinitions[];
@@ -1,2 +1,2 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  export declare const CONTROL_STRUCTURES_LIBRARY: SymbolDefinitions[];
@@ -1,2 +1,2 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  export declare const CORE_LIBRARY: SymbolDefinitions[];
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  export declare function canonicalInvisibleOperator(ops: ReadonlyArray<BoxedExpression>, { engine: ce }: {
3
3
  engine: ComputeEngine;
4
4
  }): BoxedExpression | null;
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  import type { SymbolDefinitions, ComputeEngine } from '../global-types';
3
3
  export declare function getStandardLibrary(categories: LibraryCategory[] | LibraryCategory | 'all'): readonly SymbolDefinitions[];
4
4
  export declare const LIBRARIES: {
@@ -1,2 +1,2 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  export declare const LINEAR_ALGEBRA_LIBRARY: SymbolDefinitions[];
@@ -1,8 +1,37 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  /**
3
3
  * Quantifier domain helpers and boolean analysis functions.
4
4
  * Extracted from logic.ts for better code organization.
5
5
  */
6
+ /**
7
+ * Result of extracting a finite domain from an Element expression.
8
+ * - `status: 'success'` - Domain was successfully extracted
9
+ * - `status: 'non-enumerable'` - Domain exists but cannot be enumerated (e.g., infinite set, unknown symbol)
10
+ * - `status: 'error'` - Invalid Element expression (missing variable, malformed domain)
11
+ */
12
+ export type ExtractDomainResult = {
13
+ status: 'success';
14
+ variable: string;
15
+ values: BoxedExpression[];
16
+ } | {
17
+ status: 'non-enumerable';
18
+ variable: string;
19
+ domain: BoxedExpression;
20
+ reason: string;
21
+ } | {
22
+ status: 'error';
23
+ reason: string;
24
+ };
25
+ /**
26
+ * Extract the finite domain from a quantifier's condition.
27
+ * Supports:
28
+ * - ["Element", "x", ["Set", 1, 2, 3]] → [1, 2, 3]
29
+ * - ["Element", "x", ["Range", 1, 5]] → [1, 2, 3, 4, 5]
30
+ * - ["Element", "x", ["Interval", 1, 5]] → [1, 2, 3, 4, 5] (integers only)
31
+ * - ["Element", "x", ["Set", 1, 2, 3], condition] → filtered values (EL-3)
32
+ * Returns detailed result indicating success, non-enumerable domain, or error.
33
+ */
34
+ export declare function extractFiniteDomainWithReason(condition: BoxedExpression, ce: ComputeEngine): ExtractDomainResult;
6
35
  /**
7
36
  * Extract the finite domain from a quantifier's condition.
8
37
  * Supports:
@@ -10,6 +39,7 @@
10
39
  * - ["Element", "x", ["Range", 1, 5]] → [1, 2, 3, 4, 5]
11
40
  * - ["Element", "x", ["Interval", 1, 5]] → [1, 2, 3, 4, 5] (integers only)
12
41
  * Returns null if the domain is not finite or not recognized.
42
+ * @deprecated Use extractFiniteDomainWithReason for better error handling
13
43
  */
14
44
  export declare function extractFiniteDomain(condition: BoxedExpression, ce: ComputeEngine): {
15
45
  variable: string;
@@ -1,8 +1,4 @@
1
- /* 0.32.1 */
2
- /**
3
- * Basic evaluation functions for logical operators.
4
- * Extracted from logic.ts for better code organization.
5
- */
1
+ /* 0.33.0 */
6
2
  export declare function evaluateAnd(args: ReadonlyArray<BoxedExpression>, { engine: ce }: {
7
3
  engine: ComputeEngine;
8
4
  }): BoxedExpression | undefined;
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  export declare const LOGIC_LIBRARY: SymbolDefinitions;
3
3
  export declare function simplifyLogicFunction(x: BoxedExpression): {
4
4
  value: BoxedExpression;
@@ -1,2 +1,2 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  export declare const NUMBER_THEORY_LIBRARY: SymbolDefinitions[];
@@ -1,2 +1,2 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  export declare const POLYNOMIALS_LIBRARY: SymbolDefinitions[];
@@ -1,2 +1,2 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  export declare function randomExpression(level?: number): Expression;
@@ -1,2 +1,2 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  export declare const RELOP_LIBRARY: SymbolDefinitions;
@@ -1,2 +1,2 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  export declare const SETS_LIBRARY: SymbolDefinitions;
@@ -1,2 +1,2 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  export declare const STATISTICS_LIBRARY: SymbolDefinitions[];
@@ -1,2 +1,2 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  export declare const TRIGONOMETRY_LIBRARY: SymbolDefinitions[];
@@ -1,4 +1,20 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
+ /**
3
+ * EL-4: Convert known infinite integer sets to their equivalent Limits bounds.
4
+ * Returns undefined if the set cannot be converted to a Limits form.
5
+ *
6
+ * Mappings:
7
+ * - NonNegativeIntegers (ℕ₀) → [0, ∞)
8
+ * - PositiveIntegers (ℤ⁺) → [1, ∞)
9
+ * - NegativeIntegers (ℤ⁻) → Not supported (would need negative direction)
10
+ * - Integers (ℤ) → Not supported (bidirectional)
11
+ * - Other sets (Reals, Complexes, etc.) → Not supported (non-integer)
12
+ */
13
+ export declare function convertInfiniteSetToLimits(domainSymbol: string): {
14
+ lower: number;
15
+ upper: number;
16
+ isFinite: false;
17
+ } | undefined;
2
18
  export type IndexingSet = {
3
19
  index: string | undefined;
4
20
  lower: number;
@@ -58,20 +74,62 @@ export declare function canonicalLimits(ops: ReadonlyArray<BoxedExpression>, { e
58
74
  * - `lower` (a number), `Nothing` if none is present
59
75
  * - `upper` (a number), `Nothing` if none is present
60
76
  *
77
+ * Or, for Element expressions, preserve them in canonical form.
78
+ *
61
79
  * Assume we are in the context of a big operator
62
80
  * (i.e. `pushScope()` has been called)
63
81
  */
64
82
  export declare function canonicalIndexingSet(expr: BoxedExpression): BoxedExpression | undefined;
65
83
  export declare function canonicalBigop(bigOp: string, body: BoxedExpression, indexingSets: BoxedExpression[], scope: Scope | undefined): BoxedExpression | null;
84
+ /**
85
+ * A special symbol used to signal that a BigOp could not be evaluated
86
+ * because the domain is non-enumerable (e.g., infinite set, unknown symbol).
87
+ * When this is returned, the Sum/Product should keep the expression symbolic
88
+ * rather than returning NaN.
89
+ */
90
+ export declare const NON_ENUMERABLE_DOMAIN: unique symbol;
91
+ /**
92
+ * Result type for reduceBigOp that includes reason for failure
93
+ */
94
+ export type BigOpResult<T> = {
95
+ status: 'success';
96
+ value: T;
97
+ } | {
98
+ status: 'non-enumerable';
99
+ reason: string;
100
+ domain?: BoxedExpression;
101
+ } | {
102
+ status: 'error';
103
+ reason: string;
104
+ };
66
105
  /**
67
106
  * Process an expression of the form
68
107
  * - ['Operator', body, ['Tuple', index1, lower, upper]]
69
108
  * - ['Operator', body, ['Tuple', index1, lower, upper], ['Tuple', index2, lower, upper], ...]
109
+ * - ['Operator', body, ['Element', index, collection]]
70
110
  * - ['Operator', body]
71
111
  * - ['Operator', collection]
72
112
  *
73
113
  * `fn()` is the processing done on each element
74
114
  * Apply the function `fn` to the body of a big operator, according to the
75
115
  * indexing sets.
116
+ *
117
+ * Returns either the reduced value, or `typeof NON_ENUMERABLE_DOMAIN` if the
118
+ * domain cannot be enumerated (in which case the expression should remain symbolic).
76
119
  */
77
- export declare function reduceBigOp<T>(body: BoxedExpression, indexes: ReadonlyArray<BoxedExpression>, fn: (acc: T, x: BoxedExpression) => T | null, initial: T): Generator<T | undefined>;
120
+ export declare function reduceBigOp<T>(body: BoxedExpression, indexes: ReadonlyArray<BoxedExpression>, fn: (acc: T, x: BoxedExpression) => T | null, initial: T): Generator<T | typeof NON_ENUMERABLE_DOMAIN | undefined>;
121
+ /**
122
+ * Result type for reduceElementIndexingSets to distinguish between
123
+ * successful evaluation, non-enumerable domains (keep symbolic), and errors.
124
+ */
125
+ export type ReduceElementResult<T> = {
126
+ status: 'success';
127
+ value: T;
128
+ } | {
129
+ status: 'non-enumerable';
130
+ reason: string;
131
+ domain?: BoxedExpression;
132
+ } | {
133
+ status: 'error';
134
+ reason: string;
135
+ };
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  import { BigNumFactory, NumericValue, NumericValueData } from './types';
3
3
  import { ExactNumericValue } from './exact-numeric-value';
4
4
  import { Expression } from '../../math-json/types';
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  import { Rational, SmallInteger } from '../numerics/types';
3
3
  import { BigNumFactory, ExactNumericValueData, NumericValue, NumericValueFactory } from './types';
4
4
  import { Expression } from '../../math-json/types';
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  import { BigNumFactory, NumericValue, NumericValueData } from './types';
3
3
  import type { Expression } from '../../math-json/types';
4
4
  import type { SmallInteger } from '../numerics/types';
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  *
3
3
  * ## THEORY OF OPERATIONS
4
4
  *
@@ -1,2 +1,2 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  export declare function bigint(a: Decimal | number | bigint | string): bigint | null;
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  export declare function bigintValue(expr: Expression | null | undefined): bigint | null;
3
3
  /** Output a shorthand if possible */
4
4
  export declare function numberToExpression(num: number | bigint, fractionalDigits?: string | number): Expression;
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  /** An interval is a continuous set of real numbers */
3
3
  export type Interval = {
4
4
  start: number;
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  estimate: number;
3
3
  error: number;
4
4
  };
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.33.0 */
2
2
  export declare function lcm(a: bigint, b: bigint): bigint;
3
3
  /** Return `[factor, root]` such that
4
4
  * pow(n, 1/exponent) = factor * pow(root, 1/exponent)