@cortex-js/compute-engine 0.33.0 → 0.34.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 (168) hide show
  1. package/dist/compute-engine.esm.js +15940 -10828
  2. package/dist/compute-engine.min.esm.js +76 -52
  3. package/dist/compute-engine.min.umd.js +76 -52
  4. package/dist/compute-engine.umd.js +15940 -10828
  5. package/dist/math-json.esm.js +2 -2
  6. package/dist/math-json.min.esm.js +2 -2
  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 +1 -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/reduce.d.ts +12 -0
  23. package/dist/types/common/type/serialize.d.ts +1 -1
  24. package/dist/types/common/type/subtype.d.ts +1 -1
  25. package/dist/types/common/type/type-builder.d.ts +1 -1
  26. package/dist/types/common/type/types.d.ts +1 -1
  27. package/dist/types/common/type/utils.d.ts +1 -1
  28. package/dist/types/common/utils.d.ts +1 -1
  29. package/dist/types/compute-engine/assume.d.ts +37 -1
  30. package/dist/types/compute-engine/boxed-expression/abstract-boxed-expression.d.ts +5 -3
  31. package/dist/types/compute-engine/boxed-expression/apply.d.ts +1 -1
  32. package/dist/types/compute-engine/boxed-expression/arithmetic-add.d.ts +1 -1
  33. package/dist/types/compute-engine/boxed-expression/arithmetic-mul-div.d.ts +1 -1
  34. package/dist/types/compute-engine/boxed-expression/arithmetic-power.d.ts +1 -1
  35. package/dist/types/compute-engine/boxed-expression/ascii-math.d.ts +1 -1
  36. package/dist/types/compute-engine/boxed-expression/box.d.ts +1 -1
  37. package/dist/types/compute-engine/boxed-expression/boxed-dictionary.d.ts +1 -1
  38. package/dist/types/compute-engine/boxed-expression/boxed-function.d.ts +2 -2
  39. package/dist/types/compute-engine/boxed-expression/boxed-number.d.ts +1 -1
  40. package/dist/types/compute-engine/boxed-expression/boxed-operator-definition.d.ts +1 -1
  41. package/dist/types/compute-engine/boxed-expression/boxed-patterns.d.ts +1 -1
  42. package/dist/types/compute-engine/boxed-expression/boxed-string.d.ts +1 -1
  43. package/dist/types/compute-engine/boxed-expression/boxed-symbol.d.ts +1 -1
  44. package/dist/types/compute-engine/boxed-expression/boxed-tensor.d.ts +2 -1
  45. package/dist/types/compute-engine/boxed-expression/boxed-value-definition.d.ts +5 -1
  46. package/dist/types/compute-engine/boxed-expression/cache.d.ts +1 -1
  47. package/dist/types/compute-engine/boxed-expression/canonical-utils.d.ts +1 -1
  48. package/dist/types/compute-engine/boxed-expression/canonical.d.ts +1 -1
  49. package/dist/types/compute-engine/boxed-expression/compare.d.ts +1 -1
  50. package/dist/types/compute-engine/boxed-expression/expand.d.ts +1 -1
  51. package/dist/types/compute-engine/boxed-expression/expression-map.d.ts +1 -1
  52. package/dist/types/compute-engine/boxed-expression/factor.d.ts +47 -1
  53. package/dist/types/compute-engine/boxed-expression/flatten.d.ts +1 -1
  54. package/dist/types/compute-engine/boxed-expression/hold.d.ts +1 -1
  55. package/dist/types/compute-engine/boxed-expression/match.d.ts +1 -1
  56. package/dist/types/compute-engine/boxed-expression/negate.d.ts +1 -1
  57. package/dist/types/compute-engine/boxed-expression/numerics.d.ts +1 -1
  58. package/dist/types/compute-engine/boxed-expression/order.d.ts +1 -1
  59. package/dist/types/compute-engine/boxed-expression/polynomials.d.ts +1 -1
  60. package/dist/types/compute-engine/boxed-expression/product.d.ts +1 -1
  61. package/dist/types/compute-engine/boxed-expression/rules.d.ts +1 -1
  62. package/dist/types/compute-engine/boxed-expression/serialize.d.ts +1 -1
  63. package/dist/types/compute-engine/boxed-expression/sgn.d.ts +1 -1
  64. package/dist/types/compute-engine/boxed-expression/simplify.d.ts +1 -1
  65. package/dist/types/compute-engine/boxed-expression/solve-linear-system.d.ts +60 -0
  66. package/dist/types/compute-engine/boxed-expression/solve.d.ts +1 -1
  67. package/dist/types/compute-engine/boxed-expression/terms.d.ts +1 -1
  68. package/dist/types/compute-engine/boxed-expression/trigonometry.d.ts +1 -1
  69. package/dist/types/compute-engine/boxed-expression/utils.d.ts +1 -1
  70. package/dist/types/compute-engine/boxed-expression/validate.d.ts +1 -1
  71. package/dist/types/compute-engine/collection-utils.d.ts +1 -1
  72. package/dist/types/compute-engine/compilation/base-compiler.d.ts +31 -0
  73. package/dist/types/compute-engine/compilation/glsl-target.d.ts +63 -0
  74. package/dist/types/compute-engine/compilation/javascript-target.d.ts +68 -0
  75. package/dist/types/compute-engine/compilation/types.d.ts +140 -0
  76. package/dist/types/compute-engine/cost-function.d.ts +1 -1
  77. package/dist/types/compute-engine/function-utils.d.ts +1 -1
  78. package/dist/types/compute-engine/global-types.d.ts +340 -8
  79. package/dist/types/compute-engine/index.d.ts +186 -3
  80. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-algebra.d.ts +1 -1
  81. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-arithmetic.d.ts +1 -1
  82. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-calculus.d.ts +1 -1
  83. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-complex.d.ts +1 -1
  84. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-core.d.ts +1 -1
  85. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-linear-algebra.d.ts +1 -1
  86. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-logic.d.ts +1 -1
  87. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-other.d.ts +1 -1
  88. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-relational-operators.d.ts +1 -1
  89. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-sets.d.ts +1 -1
  90. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-statistics.d.ts +1 -1
  91. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-symbols.d.ts +1 -1
  92. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-trigonometry.d.ts +1 -1
  93. package/dist/types/compute-engine/latex-syntax/dictionary/definitions.d.ts +8 -1
  94. package/dist/types/compute-engine/latex-syntax/parse-symbol.d.ts +1 -1
  95. package/dist/types/compute-engine/latex-syntax/parse.d.ts +21 -1
  96. package/dist/types/compute-engine/latex-syntax/serialize-number.d.ts +1 -1
  97. package/dist/types/compute-engine/latex-syntax/serializer-style.d.ts +1 -1
  98. package/dist/types/compute-engine/latex-syntax/serializer.d.ts +1 -1
  99. package/dist/types/compute-engine/latex-syntax/tokenizer.d.ts +1 -1
  100. package/dist/types/compute-engine/latex-syntax/types.d.ts +23 -2
  101. package/dist/types/compute-engine/latex-syntax/utils.d.ts +1 -1
  102. package/dist/types/compute-engine/library/arithmetic.d.ts +1 -1
  103. package/dist/types/compute-engine/library/calculus.d.ts +1 -1
  104. package/dist/types/compute-engine/library/collections.d.ts +1 -1
  105. package/dist/types/compute-engine/library/combinatorics.d.ts +1 -1
  106. package/dist/types/compute-engine/library/complex.d.ts +1 -1
  107. package/dist/types/compute-engine/library/control-structures.d.ts +1 -1
  108. package/dist/types/compute-engine/library/core.d.ts +1 -1
  109. package/dist/types/compute-engine/library/invisible-operator.d.ts +1 -1
  110. package/dist/types/compute-engine/library/library.d.ts +1 -1
  111. package/dist/types/compute-engine/library/linear-algebra.d.ts +1 -1
  112. package/dist/types/compute-engine/library/logic-analysis.d.ts +159 -4
  113. package/dist/types/compute-engine/library/logic-utils.d.ts +1 -1
  114. package/dist/types/compute-engine/library/logic.d.ts +1 -1
  115. package/dist/types/compute-engine/library/number-theory.d.ts +1 -1
  116. package/dist/types/compute-engine/library/polynomials.d.ts +1 -1
  117. package/dist/types/compute-engine/library/random-expression.d.ts +1 -1
  118. package/dist/types/compute-engine/library/relational-operator.d.ts +1 -1
  119. package/dist/types/compute-engine/library/sets.d.ts +1 -1
  120. package/dist/types/compute-engine/library/statistics.d.ts +1 -1
  121. package/dist/types/compute-engine/library/trigonometry.d.ts +1 -1
  122. package/dist/types/compute-engine/library/utils.d.ts +1 -1
  123. package/dist/types/compute-engine/numeric-value/big-numeric-value.d.ts +1 -1
  124. package/dist/types/compute-engine/numeric-value/exact-numeric-value.d.ts +1 -1
  125. package/dist/types/compute-engine/numeric-value/machine-numeric-value.d.ts +1 -1
  126. package/dist/types/compute-engine/numeric-value/types.d.ts +1 -1
  127. package/dist/types/compute-engine/numerics/bigint.d.ts +1 -1
  128. package/dist/types/compute-engine/numerics/expression.d.ts +1 -1
  129. package/dist/types/compute-engine/numerics/interval.d.ts +1 -1
  130. package/dist/types/compute-engine/numerics/monte-carlo.d.ts +1 -1
  131. package/dist/types/compute-engine/numerics/numeric-bigint.d.ts +1 -1
  132. package/dist/types/compute-engine/numerics/numeric-bignum.d.ts +1 -1
  133. package/dist/types/compute-engine/numerics/numeric-complex.d.ts +1 -1
  134. package/dist/types/compute-engine/numerics/numeric.d.ts +1 -1
  135. package/dist/types/compute-engine/numerics/primes.d.ts +1 -1
  136. package/dist/types/compute-engine/numerics/rationals.d.ts +1 -1
  137. package/dist/types/compute-engine/numerics/richardson.d.ts +1 -1
  138. package/dist/types/compute-engine/numerics/special-functions.d.ts +1 -1
  139. package/dist/types/compute-engine/numerics/statistics.d.ts +1 -1
  140. package/dist/types/compute-engine/numerics/strings.d.ts +1 -1
  141. package/dist/types/compute-engine/numerics/types.d.ts +1 -1
  142. package/dist/types/compute-engine/oeis.d.ts +85 -0
  143. package/dist/types/compute-engine/sequence.d.ts +120 -0
  144. package/dist/types/compute-engine/symbolic/antiderivative.d.ts +1 -1
  145. package/dist/types/compute-engine/symbolic/derivative.d.ts +17 -2
  146. package/dist/types/compute-engine/symbolic/distribute.d.ts +1 -1
  147. package/dist/types/compute-engine/symbolic/fu-cost.d.ts +1 -1
  148. package/dist/types/compute-engine/symbolic/fu-transforms.d.ts +1 -1
  149. package/dist/types/compute-engine/symbolic/fu.d.ts +1 -1
  150. package/dist/types/compute-engine/symbolic/simplify-abs.d.ts +1 -1
  151. package/dist/types/compute-engine/symbolic/simplify-divide.d.ts +1 -1
  152. package/dist/types/compute-engine/symbolic/simplify-hyperbolic.d.ts +1 -1
  153. package/dist/types/compute-engine/symbolic/simplify-infinity.d.ts +1 -1
  154. package/dist/types/compute-engine/symbolic/simplify-log.d.ts +1 -1
  155. package/dist/types/compute-engine/symbolic/simplify-power.d.ts +1 -1
  156. package/dist/types/compute-engine/symbolic/simplify-product.d.ts +1 -1
  157. package/dist/types/compute-engine/symbolic/simplify-rules.d.ts +1 -1
  158. package/dist/types/compute-engine/symbolic/simplify-sum.d.ts +1 -1
  159. package/dist/types/compute-engine/symbolic/simplify-trig.d.ts +1 -1
  160. package/dist/types/compute-engine/tensor/tensor-fields.d.ts +1 -1
  161. package/dist/types/compute-engine/tensor/tensors.d.ts +1 -1
  162. package/dist/types/compute-engine/types.d.ts +1 -1
  163. package/dist/types/compute-engine.d.ts +5 -1
  164. package/dist/types/math-json/symbols.d.ts +1 -1
  165. package/dist/types/math-json/types.d.ts +1 -1
  166. package/dist/types/math-json/utils.d.ts +1 -1
  167. package/dist/types/math-json.d.ts +2 -2
  168. package/package.json +2 -2
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  /** @internal */
3
3
  type IsInteger<N extends number> = `${N}` extends `${string}.${string}` ? never : `${N}` extends `-${string}.${string}` ? never : number;
4
4
  /** A `SmallInteger` is an integer < 1e6
@@ -0,0 +1,85 @@
1
+ /* 0.34.0 */
2
+ * OEIS (Online Encyclopedia of Integer Sequences) Integration
3
+ *
4
+ * This module provides functions to look up sequences in the OEIS database
5
+ * and import them for use in the compute engine.
6
+ *
7
+ * @see https://oeis.org
8
+ */
9
+ import type { ComputeEngine, BoxedExpression } from './global-types';
10
+ /**
11
+ * Result from an OEIS lookup operation.
12
+ */
13
+ export interface OEISSequenceInfo {
14
+ /** OEIS sequence ID (e.g., 'A000045') */
15
+ id: string;
16
+ /** Sequence name/description */
17
+ name: string;
18
+ /** First several terms of the sequence */
19
+ terms: number[];
20
+ /** Formula or recurrence (if available) */
21
+ formula?: string;
22
+ /** Comments about the sequence */
23
+ comments?: string[];
24
+ /** URL to the OEIS page */
25
+ url: string;
26
+ }
27
+ /**
28
+ * Options for OEIS operations.
29
+ */
30
+ export interface OEISOptions {
31
+ /** Request timeout in milliseconds (default: 10000) */
32
+ timeout?: number;
33
+ /** Maximum number of results to return for lookups (default: 5) */
34
+ maxResults?: number;
35
+ }
36
+ /**
37
+ * Look up sequences in OEIS by their terms.
38
+ *
39
+ * @param terms - Array of sequence terms to search for
40
+ * @param options - Optional configuration
41
+ * @returns Promise resolving to array of matching sequences
42
+ *
43
+ * @example
44
+ * ```typescript
45
+ * const results = await lookupOEISByTerms([0, 1, 1, 2, 3, 5, 8, 13]);
46
+ * // → [{ id: 'A000045', name: 'Fibonacci numbers', ... }]
47
+ * ```
48
+ */
49
+ export declare function lookupOEISByTerms(terms: number[], options?: OEISOptions): Promise<OEISSequenceInfo[]>;
50
+ /**
51
+ * Look up a sequence in OEIS by its ID.
52
+ *
53
+ * @param id - OEIS sequence ID (e.g., 'A000045' or '45')
54
+ * @param options - Optional configuration
55
+ * @returns Promise resolving to sequence info, or undefined if not found
56
+ *
57
+ * @example
58
+ * ```typescript
59
+ * const fib = await lookupOEISById('A000045');
60
+ * // → { id: 'A000045', name: 'Fibonacci numbers', terms: [0, 1, 1, 2, ...], ... }
61
+ * ```
62
+ */
63
+ export declare function lookupOEISById(id: string, options?: OEISOptions): Promise<OEISSequenceInfo | undefined>;
64
+ /**
65
+ * Look up a sequence in OEIS by its terms.
66
+ *
67
+ * @param ce - ComputeEngine instance
68
+ * @param terms - Array of sequence terms (numbers or BoxedExpressions)
69
+ * @param options - Optional configuration
70
+ * @returns Promise resolving to array of matching sequences
71
+ */
72
+ export declare function lookupSequence(ce: ComputeEngine, terms: (number | BoxedExpression)[], options?: OEISOptions): Promise<OEISSequenceInfo[]>;
73
+ /**
74
+ * Check if a defined sequence matches an OEIS sequence.
75
+ *
76
+ * @param ce - ComputeEngine instance
77
+ * @param name - Name of the defined sequence
78
+ * @param count - Number of terms to check (default: 10)
79
+ * @param options - Optional configuration
80
+ * @returns Promise with match results
81
+ */
82
+ export declare function checkSequence(ce: ComputeEngine, name: string, count?: number, options?: OEISOptions): Promise<{
83
+ matches: OEISSequenceInfo[];
84
+ terms: number[];
85
+ }>;
@@ -0,0 +1,120 @@
1
+ /* 0.34.0 */
2
+ * Utilities for declarative sequence definitions.
3
+ *
4
+ * This module provides functions to create subscriptEvaluate handlers
5
+ * from sequence definitions (base cases + recurrence relation).
6
+ */
7
+ import type { BoxedExpression, ComputeEngine, SequenceDefinition, SequenceStatus, SequenceInfo } from './global-types';
8
+ /**
9
+ * Create a subscriptEvaluate handler from a sequence definition.
10
+ *
11
+ * The handler evaluates expressions like `F_{10}` or `P_{5,2}` by:
12
+ * 1. Checking base cases first (with pattern matching for multi-index)
13
+ * 2. Looking up memoized values
14
+ * 3. Recursively evaluating the recurrence relation
15
+ *
16
+ * Supports both single-index and multi-index sequences:
17
+ * - Single-index: `F_{10}` with subscript as a number
18
+ * - Multi-index: `P_{5,2}` with subscript as `Sequence(5, 2)`
19
+ */
20
+ export declare function createSequenceHandler(ce: ComputeEngine, name: string, def: SequenceDefinition): (subscript: BoxedExpression, options: {
21
+ engine: ComputeEngine;
22
+ numericApproximation?: boolean;
23
+ }) => BoxedExpression | undefined;
24
+ /**
25
+ * Validate a sequence definition.
26
+ */
27
+ export declare function validateSequenceDefinition(ce: ComputeEngine, name: string, def: SequenceDefinition): {
28
+ valid: boolean;
29
+ error?: string;
30
+ };
31
+ /**
32
+ * Add a base case for a single-index sequence definition.
33
+ * e.g., from `L_0 := 1`
34
+ */
35
+ export declare function addSequenceBaseCase(ce: ComputeEngine, name: string, index: number, value: BoxedExpression): void;
36
+ /**
37
+ * Add a base case for a multi-index sequence definition.
38
+ * e.g., from `P_{0,0} := 1` or `P_{n,0} := 1`
39
+ *
40
+ * @param key - The base case key, e.g., '0,0' for exact or 'n,0' for pattern
41
+ */
42
+ export declare function addMultiIndexBaseCase(ce: ComputeEngine, name: string, key: string, value: BoxedExpression): void;
43
+ /**
44
+ * Add a recurrence relation for a single-index sequence definition.
45
+ * e.g., from `L_n := L_{n-1} + 1`
46
+ *
47
+ * We store the recurrence as a LaTeX string rather than a BoxedExpression
48
+ * because the expression may have been parsed before the symbol was declared
49
+ * with subscriptEvaluate. Storing as LaTeX allows us to re-parse fresh when
50
+ * creating the handler, ensuring proper binding.
51
+ */
52
+ export declare function addSequenceRecurrence(ce: ComputeEngine, name: string, variable: string, expr: BoxedExpression): void;
53
+ /**
54
+ * Add a recurrence relation for a multi-index sequence definition.
55
+ * e.g., from `P_{n,k} := P_{n-1,k-1} + P_{n-1,k}`
56
+ *
57
+ * @param variables - The index variable names, e.g., ['n', 'k']
58
+ */
59
+ export declare function addMultiIndexRecurrence(ce: ComputeEngine, name: string, variables: string[], expr: BoxedExpression): void;
60
+ /**
61
+ * Check if expression contains self-reference to sequence name.
62
+ * e.g., `a_{n-1}` when defining sequence 'a'
63
+ */
64
+ export declare function containsSelfReference(expr: BoxedExpression, seqName: string): boolean;
65
+ /**
66
+ * Extract the index variable from a subscript expression.
67
+ * e.g., from `n-1` extract 'n', from `2*k` extract 'k'
68
+ */
69
+ export declare function extractIndexVariable(subscript: BoxedExpression): string | undefined;
70
+ /**
71
+ * Get the status of a sequence definition.
72
+ *
73
+ * Returns information about whether a sequence is complete, pending, or not defined.
74
+ * Supports both single-index and multi-index sequences.
75
+ */
76
+ export declare function getSequenceStatus(ce: ComputeEngine, name: string): SequenceStatus;
77
+ /**
78
+ * Get information about a defined sequence.
79
+ * Returns `undefined` if the symbol is not a complete sequence.
80
+ * Supports both single-index and multi-index sequences.
81
+ */
82
+ export declare function getSequenceInfo(ce: ComputeEngine, name: string): SequenceInfo | undefined;
83
+ /**
84
+ * List all defined sequences.
85
+ */
86
+ export declare function listSequences(ce: ComputeEngine): string[];
87
+ /**
88
+ * Check if a symbol is a defined sequence.
89
+ */
90
+ export declare function isSequence(ce: ComputeEngine, name: string): boolean;
91
+ /**
92
+ * Clear the memoization cache for a sequence or all sequences.
93
+ */
94
+ export declare function clearSequenceCache(ce: ComputeEngine, name?: string): void;
95
+ /**
96
+ * Get the memoization cache for a sequence.
97
+ * Returns a copy of the cache Map, or `undefined` if not a sequence or memoization is disabled.
98
+ *
99
+ * For single-index sequences, keys are numbers.
100
+ * For multi-index sequences, keys are comma-separated strings (e.g., '5,2').
101
+ */
102
+ export declare function getSequenceCache(ce: ComputeEngine, name: string): Map<number | string, BoxedExpression> | undefined;
103
+ /**
104
+ * Generate a list of sequence terms from start to end (inclusive).
105
+ *
106
+ * @param ce - The compute engine
107
+ * @param name - The sequence name
108
+ * @param start - Starting index (inclusive)
109
+ * @param end - Ending index (inclusive)
110
+ * @param step - Step size (default: 1)
111
+ * @returns Array of BoxedExpressions for each term, or undefined if not a sequence
112
+ *
113
+ * @example
114
+ * ```typescript
115
+ * // For Fibonacci sequence F
116
+ * generateSequenceTerms(ce, 'F', 0, 10);
117
+ * // → [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
118
+ * ```
119
+ */
120
+ export declare function generateSequenceTerms(ce: ComputeEngine, name: string, start: number, end: number, step?: number): BoxedExpression[] | undefined;
@@ -1,3 +1,3 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  /** Calculate the antiderivative of fn, as an expression (not a function) */
3
3
  export declare function antiderivative(fn: BoxedExpression, index: string): BoxedExpression;
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  /**
3
3
  *
4
4
  * @param fn The function to differentiate, a function literal.
@@ -14,5 +14,20 @@ export declare function derivative(fn: BoxedExpression, order: number): BoxedExp
14
14
  * All expressions that do not explicitly depend on `v` are taken to have zero
15
15
  * partial derivative.
16
16
  *
17
+ * ## Recursion Safety
18
+ *
19
+ * This function includes a depth limit (`MAX_DIFFERENTIATION_DEPTH`) to prevent
20
+ * stack overflow from pathological expressions. The depth is tracked internally
21
+ * and incremented on each recursive call. If the limit is reached, the function
22
+ * returns `undefined` rather than continuing to recurse.
23
+ *
24
+ * Normal differentiation (including higher-order derivatives of complex
25
+ * expressions) should never approach this limit. Hitting the limit indicates
26
+ * either a bug in the differentiation rules or a maliciously constructed input.
27
+ *
28
+ * @param expr - The expression to differentiate
29
+ * @param v - The variable to differentiate with respect to
30
+ * @param depth - Internal recursion depth counter (do not pass manually)
31
+ * @returns The derivative expression, or `undefined` if unable to differentiate
17
32
  */
18
- export declare function differentiate(expr: BoxedExpression, v: string): BoxedExpression | undefined;
33
+ export declare function differentiate(expr: BoxedExpression, v: string, depth?: number): BoxedExpression | undefined;
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  /**
3
3
  *
4
4
  */
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  * Cost functions for the Fu trigonometric simplification algorithm.
3
3
  *
4
4
  * The primary objective is to minimize the number of trigonometric functions,
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  * Fu Algorithm Transformation Rules
3
3
  *
4
4
  * Programmatic implementations of TR1-TR22 from the Fu trigonometric
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  * Fu Algorithm for Trigonometric Simplification
3
3
  *
4
4
  * Implementation of the algorithm by Fu, Zhong, and Zeng:
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare function simplifyAbs(x: BoxedExpression): RuleStep | undefined;
3
3
  /**
4
4
  * Simplify expressions where Abs appears as the base of a power.
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  /**
3
3
  * Division simplification rules consolidated from simplify-rules.ts.
4
4
  * Handles ~5 patterns for simplifying Divide expressions.
@@ -1,2 +1,2 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare function simplifyHyperbolic(x: BoxedExpression): RuleStep | undefined;
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  /**
3
3
  * Infinity simplification rules consolidated from simplify-rules.ts.
4
4
  * Handles ~20 patterns for simplifying expressions involving infinity.
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  /**
3
3
  * Logarithm simplification rules consolidated from simplify-rules.ts.
4
4
  * Handles ~30 patterns for simplifying Ln and Log expressions.
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  /**
3
3
  * Power simplification rules consolidated from simplify-rules.ts.
4
4
  * Handles ~25 patterns for simplifying Power expressions.
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  /**
3
3
  * Product simplification rules extracted from simplify-rules.ts.
4
4
  * Handles 13 patterns for simplifying Product expressions.
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  /**
3
3
  * A set of simplification rules.
4
4
  *
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  /**
3
3
  * Sum simplification rules extracted from simplify-rules.ts.
4
4
  * Handles 16 patterns for simplifying Sum expressions.
@@ -1,2 +1,2 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare function simplifyTrig(x: BoxedExpression): RuleStep | undefined;
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  import { BoxedExpression, ComputeEngine, DataTypeMap, TensorDataType, TensorField } from '../global-types';
3
3
  /** @category Tensors */
4
4
  export declare function makeTensorField<DT extends keyof DataTypeMap>(ce: ComputeEngine, dtype: DT): TensorField<DataTypeMap[DT]>;
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  /** @category Tensors */
3
3
  export declare abstract class AbstractTensor<DT extends keyof DataTypeMap> implements Tensor<DT> {
4
4
  private ce;
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export * from '../math-json/types';
3
3
  export * from '../common/type/boxed-type';
4
4
  export * from '../common/type/types';
@@ -1,3 +1,7 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export { ComputeEngine } from './compute-engine/index';
3
3
  export * from './compute-engine/types';
4
+ export type { CompileTarget, CompiledOperators, CompiledFunctions, CompilationOptions, CompiledExecutable, LanguageTarget, TargetSource, CompiledFunction, } from './compute-engine/compilation/types';
5
+ export { JavaScriptTarget } from './compute-engine/compilation/javascript-target';
6
+ export { GLSLTarget } from './compute-engine/compilation/glsl-target';
7
+ export { BaseCompiler } from './compute-engine/compilation/base-compiler';
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.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.33.0 */
1
+ /* 0.34.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.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare const MISSING: Expression;
3
3
  export declare function isNumberExpression(expr: Expression | null): expr is number | string | MathJsonNumberObject;
4
4
  export declare function isNumberObject(expr: Expression | null): expr is MathJsonNumberObject;
@@ -1,3 +1,3 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export { isSymbolObject, isStringObject, isFunctionObject, stringValue, operator, operand, symbol, mapArgs, dictionaryFromExpression, } from './math-json/utils';
3
- export declare const version = "0.33.0";
3
+ export declare const version = "0.34.0";
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.33.0",
2
+ "version": "0.34.0",
3
3
  "scripts": {
4
4
  "doc": "bash ./scripts/doc.sh",
5
5
  "build": "bash ./scripts/build.sh",
@@ -79,7 +79,7 @@
79
79
  "jest-silent-reporter": "^0.6.0",
80
80
  "open": "^10.1.2",
81
81
  "prettier": "^3.6.2",
82
- "prettier-2": "npm:prettier@^2",
82
+ "prettier-2": "npm:prettier@^2.8.8",
83
83
  "serve-http": "^1.0.7",
84
84
  "ts-jest": "^29.4.0",
85
85
  "ts-node": "^10.9.2",