@cortex-js/compute-engine 0.32.1 → 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 +39456 -28560
  2. package/dist/compute-engine.min.esm.js +80 -59
  3. package/dist/compute-engine.min.umd.js +80 -59
  4. package/dist/compute-engine.umd.js +39464 -28585
  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/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 +6 -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 +6 -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 +5 -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 -2
  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 +1 -1
  73. package/dist/types/compute-engine/compilation/glsl-target.d.ts +63 -0
  74. package/dist/types/compute-engine/compilation/javascript-target.d.ts +1 -1
  75. package/dist/types/compute-engine/compilation/types.d.ts +58 -1
  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 +381 -10
  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 +10 -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 +33 -3
  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 +189 -4
  113. package/dist/types/compute-engine/library/logic-utils.d.ts +1 -5
  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 +60 -2
  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 +2 -2
  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 +2 -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 +33 -0
  148. package/dist/types/compute-engine/symbolic/fu-transforms.d.ts +130 -0
  149. package/dist/types/compute-engine/symbolic/fu.d.ts +48 -0
  150. package/dist/types/compute-engine/symbolic/simplify-abs.d.ts +12 -0
  151. package/dist/types/compute-engine/symbolic/simplify-divide.d.ts +15 -0
  152. package/dist/types/compute-engine/symbolic/simplify-hyperbolic.d.ts +2 -0
  153. package/dist/types/compute-engine/symbolic/simplify-infinity.d.ts +14 -0
  154. package/dist/types/compute-engine/symbolic/simplify-log.d.ts +15 -0
  155. package/dist/types/compute-engine/symbolic/simplify-power.d.ts +15 -0
  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 -11
  158. package/dist/types/compute-engine/symbolic/simplify-sum.d.ts +1 -1
  159. package/dist/types/compute-engine/symbolic/simplify-trig.d.ts +2 -0
  160. package/dist/types/compute-engine/tensor/tensor-fields.d.ts +1 -1
  161. package/dist/types/compute-engine/tensor/tensors.d.ts +3 -3
  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,6 +1,52 @@
1
- /* 0.32.1 */
1
+ /* 0.34.0 */
2
2
  /** Combine rational expressions into a single fraction */
3
3
  export declare function together(op: BoxedExpression): BoxedExpression;
4
+ /**
5
+ * Detect if an expression is a perfect square trinomial.
6
+ * Returns the factored form (a±b)² if successful, null otherwise.
7
+ *
8
+ * Patterns:
9
+ * - a² + 2ab + b² → (a+b)²
10
+ * - a² - 2ab + b² → (a-b)²
11
+ *
12
+ * Strategy: Try to extract square roots of each term to find the bases a and b,
13
+ * then verify the middle term matches ±2ab.
14
+ *
15
+ * IMPORTANT: Does not call .simplify() to avoid infinite recursion.
16
+ */
17
+ export declare function factorPerfectSquare(expr: BoxedExpression): BoxedExpression | null;
18
+ /**
19
+ * Detect if an expression is a difference of squares.
20
+ * Returns the factored form (a-b)(a+b) if successful, null otherwise.
21
+ *
22
+ * Pattern: a² - b² → (a-b)(a+b)
23
+ *
24
+ * IMPORTANT: Does not call .simplify() on the result to avoid infinite recursion.
25
+ */
26
+ export declare function factorDifferenceOfSquares(expr: BoxedExpression): BoxedExpression | null;
27
+ /**
28
+ * Factor a quadratic polynomial using the quadratic formula.
29
+ * Returns factored form if successful, null otherwise.
30
+ *
31
+ * For ax² + bx + c, finds roots r₁ and r₂ and returns:
32
+ * - a(x - r₁)(x - r₂) if both roots are rational
33
+ * - null if not a quadratic or roots are complex/irrational
34
+ *
35
+ * IMPORTANT: Does not call .simplify() to avoid infinite recursion.
36
+ */
37
+ export declare function factorQuadratic(expr: BoxedExpression, variable: string): BoxedExpression | null;
38
+ /**
39
+ * Factor a polynomial expression.
40
+ * Attempts various factoring strategies:
41
+ * 1. Perfect square trinomials
42
+ * 2. Difference of squares
43
+ * 3. Quadratic factoring (for rational roots)
44
+ *
45
+ * Falls back to the existing factor() function if polynomial factoring doesn't apply.
46
+ *
47
+ * IMPORTANT: Does not call .simplify() to avoid infinite recursion.
48
+ */
49
+ export declare function factorPolynomial(expr: BoxedExpression, variable?: string): BoxedExpression;
4
50
  /**
5
51
  * Return an expression factored as a product.
6
52
  * - 2x + 4 -> 2(x + 2)
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.34.0 */
2
2
  /**
3
3
  *
4
4
  * Make all the arguments canonical.
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.34.0 */
2
2
  /** Apply the function `f` to each operand of the expression `expr`,
3
3
  * account for the 'lazy' property of the operator definition:
4
4
  *
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.34.0 */
2
2
  /**
3
3
  * The function attempts to match a subject expression to a
4
4
  * [pattern](/compute-engine/guides/patterns-and-rules/).
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.34.0 */
2
2
  export declare function canonicalNegate(expr: BoxedExpression): BoxedExpression;
3
3
  /**
4
4
  * Distribute `Negate` (multiply by -1) if expr is a number literal, an
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.34.0 */
2
2
  import { Decimal } from 'decimal.js';
3
3
  import type { Rational } from '../numerics/types';
4
4
  import type { BoxedExpression, SemiBoxedExpression } from '../global-types';
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.34.0 */
2
2
  export type Order = 'lex' | 'dexlex' | 'grevlex' | 'elim';
3
3
  export declare const DEFAULT_COMPLEXITY = 100000;
4
4
  /**
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.34.0 */
2
2
  /**
3
3
  * Coefficient of a univariate (single variable) polynomial.
4
4
  *
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.34.0 */
2
2
  import { NumericValue } from '../numeric-value/types';
3
3
  import type { Rational } from '../numerics/types';
4
4
  /**
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.34.0 */
2
2
  export declare const ConditionParent: {
3
3
  boolean: string;
4
4
  string: string;
@@ -1,3 +1,3 @@
1
- /* 0.32.1 */
1
+ /* 0.34.0 */
2
2
  import type { ComputeEngine, BoxedExpression, JsonSerializationOptions } from '../global-types';
3
3
  export declare function serializeJson(ce: ComputeEngine, expr: BoxedExpression, options: Readonly<JsonSerializationOptions>): Expression;
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.34.0 */
2
2
  export declare function sgn(expr: BoxedExpression): Sign | undefined;
3
3
  /**
4
4
  * Sign `s` is > 0.
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.34.0 */
2
2
  type InternalSimplifyOptions = SimplifyOptions & {
3
3
  useVariations: boolean;
4
4
  };
@@ -0,0 +1,60 @@
1
+ /* 0.34.0 */
2
+ /**
3
+ * Solve a system of linear equations.
4
+ *
5
+ * @param equations - Array of BoxedExpression representing equations (Equal expressions)
6
+ * @param variables - Array of variable names to solve for
7
+ * @returns Object mapping variable names to their solutions, or null if unsolvable
8
+ *
9
+ * For under-determined systems (fewer equations than variables), returns
10
+ * parametric solutions where free variables appear in the expressions.
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * // Unique solution
15
+ * const e = ce.parse('\\begin{cases}x+y=70\\\\2x-4y=80\\end{cases}');
16
+ * const result = e.solve(['x', 'y']);
17
+ * // result = { x: BoxedExpression(60), y: BoxedExpression(10) }
18
+ *
19
+ * // Parametric solution (under-determined)
20
+ * const e2 = ce.parse('\\begin{cases}x+y=5\\end{cases}');
21
+ * const result2 = e2.solve(['x', 'y']);
22
+ * // result2 = { x: 5 - y, y: y }
23
+ * ```
24
+ */
25
+ export declare function solveLinearSystem(equations: BoxedExpression[], variables: string[]): Record<string, BoxedExpression> | null;
26
+ /**
27
+ * Solve a system of polynomial equations that may be non-linear.
28
+ * Currently supports:
29
+ * 1. Product + sum pattern: xy = p, x + y = s (2 equations, 2 variables)
30
+ * 2. Substitution-reducible: one equation is linear in one variable
31
+ *
32
+ * @param equations - Array of BoxedExpression representing equations (Equal expressions)
33
+ * @param variables - Array of variable names to solve for
34
+ * @returns Array of solution objects, or null if unsolvable
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * // Product + sum pattern
39
+ * const e = ce.parse('\\begin{cases}xy=6\\\\x+y=5\\end{cases}');
40
+ * const result = e.solve(['x', 'y']);
41
+ * // result = [{ x: 2, y: 3 }, { x: 3, y: 2 }]
42
+ * ```
43
+ */
44
+ export declare function solvePolynomialSystem(equations: BoxedExpression[], variables: string[]): Array<Record<string, BoxedExpression>> | null;
45
+ /**
46
+ * Solve a system of linear inequalities in 2 variables.
47
+ * Returns the vertices of the feasible region (convex polygon).
48
+ *
49
+ * @param inequalities - Array of BoxedExpression representing inequalities
50
+ * @param variables - Array of exactly 2 variable names
51
+ * @returns Array of vertex coordinate objects, or null if unsolvable/unbounded
52
+ *
53
+ * @example
54
+ * ```typescript
55
+ * const e = ce.parse('\\begin{cases}x+y\\leq 10\\\\x\\geq 0\\\\y\\geq 0\\end{cases}');
56
+ * const result = e.solve(['x', 'y']);
57
+ * // result = [{ x: 0, y: 0 }, { x: 10, y: 0 }, { x: 0, y: 10 }]
58
+ * ```
59
+ */
60
+ export declare function solveLinearInequalitySystem(inequalities: BoxedExpression[], variables: string[]): Array<Record<string, BoxedExpression>> | null;
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.34.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.34.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.34.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.34.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.34.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.34.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.34.0 */
2
2
  import type { CompileTarget, TargetSource } from './types';
3
3
  /**
4
4
  * Base compiler class containing language-agnostic compilation logic
@@ -0,0 +1,63 @@
1
+ /* 0.34.0 */
2
+ import type { CompileTarget, CompiledOperators, CompiledFunctions, LanguageTarget, CompilationOptions, CompiledExecutable } from './types';
3
+ /**
4
+ * GLSL language target implementation
5
+ */
6
+ export declare class GLSLTarget implements LanguageTarget {
7
+ getOperators(): CompiledOperators;
8
+ getFunctions(): CompiledFunctions;
9
+ createTarget(options?: Partial<CompileTarget>): CompileTarget;
10
+ /**
11
+ * Compile to GLSL source code (not executable)
12
+ *
13
+ * GLSL doesn't run in JavaScript, so this returns source code as a string
14
+ * rather than an executable function.
15
+ */
16
+ compileToExecutable(expr: BoxedExpression, options?: CompilationOptions): CompiledExecutable;
17
+ /**
18
+ * Compile an expression to GLSL source code
19
+ *
20
+ * Returns the GLSL code as a string.
21
+ */
22
+ compile(expr: BoxedExpression, options?: CompilationOptions): string;
23
+ /**
24
+ * Create a complete GLSL function from an expression
25
+ *
26
+ * @param expr - The expression to compile
27
+ * @param functionName - Name of the GLSL function
28
+ * @param returnType - GLSL return type (e.g., 'float', 'vec3')
29
+ * @param parameters - Parameter declarations (e.g., [['x', 'float'], ['y', 'vec3']])
30
+ */
31
+ compileFunction(expr: BoxedExpression, functionName: string, returnType: string, parameters: Array<[name: string, type: string]>): string;
32
+ /**
33
+ * Create a complete GLSL shader from expressions
34
+ *
35
+ * @param options - Shader compilation options
36
+ */
37
+ compileShader(options: {
38
+ /** Shader type: 'vertex' or 'fragment' */
39
+ type: 'vertex' | 'fragment';
40
+ /** GLSL version (e.g., '300 es', '330', '450') */
41
+ version?: string;
42
+ /** Input variables (attributes or varyings) */
43
+ inputs?: Array<{
44
+ name: string;
45
+ type: string;
46
+ }>;
47
+ /** Output variables */
48
+ outputs?: Array<{
49
+ name: string;
50
+ type: string;
51
+ }>;
52
+ /** Uniform variables */
53
+ uniforms?: Array<{
54
+ name: string;
55
+ type: string;
56
+ }>;
57
+ /** Main function body expressions */
58
+ body: Array<{
59
+ variable: string;
60
+ expression: BoxedExpression;
61
+ }>;
62
+ }): string;
63
+ }
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.34.0 */
2
2
  import { chop, factorial, gcd, lcm, limit } from '../numerics/numeric';
3
3
  import { gamma, gammaln } from '../numerics/special-functions';
4
4
  import { interquartileRange, kurtosis, mean, median, mode, populationStandardDeviation, populationVariance, quartiles, skewness, standardDeviation, variance } from '../numerics/statistics';
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.34.0 */
2
2
  import type { BoxedExpression } from '../global-types';
3
3
  /**
4
4
  * Source code in the target language
@@ -61,6 +61,63 @@ export interface LanguageTarget {
61
61
  * Options for compilation
62
62
  */
63
63
  export interface CompilationOptions {
64
+ /**
65
+ * Target language for compilation.
66
+ *
67
+ * Built-in targets:
68
+ * - `'javascript'` (default) - Compile to JavaScript
69
+ * - `'glsl'` - Compile to GLSL (OpenGL Shading Language)
70
+ *
71
+ * Custom targets can be registered using `ce.registerCompilationTarget()`.
72
+ *
73
+ * @example
74
+ * ```typescript
75
+ * // Compile to GLSL
76
+ * const glslCode = expr.compile({ to: 'glsl' });
77
+ *
78
+ * // Compile to custom target
79
+ * ce.registerCompilationTarget('python', new PythonTarget());
80
+ * const pythonCode = expr.compile({ to: 'python' });
81
+ * ```
82
+ */
83
+ to?: string;
84
+ /**
85
+ * Direct compilation target override.
86
+ *
87
+ * When provided, this takes precedence over the `to` option.
88
+ * Useful for one-off custom targets without registration.
89
+ *
90
+ * @example
91
+ * ```typescript
92
+ * const customTarget: CompileTarget = {
93
+ * language: 'custom',
94
+ * operators: (op) => ...,
95
+ * functions: (id) => ...,
96
+ * // ... other methods
97
+ * };
98
+ *
99
+ * const code = expr.compile({ target: customTarget });
100
+ * ```
101
+ */
102
+ target?: CompileTarget;
103
+ /**
104
+ * Custom operator mappings. Can be:
105
+ * - A partial object mapping operator names to [operator, precedence] tuples
106
+ * - A function that returns the operator mapping for a given symbol
107
+ *
108
+ * When an operator is overridden, it will be compiled using the specified
109
+ * string and precedence instead of the default for the target language.
110
+ *
111
+ * @example
112
+ * ```typescript
113
+ * // Override operators as object
114
+ * { operators: { Add: ['add', 11], Multiply: ['mul', 12] } }
115
+ *
116
+ * // Override operators as function
117
+ * { operators: (op) => op === 'Add' ? ['add', 11] : undefined }
118
+ * ```
119
+ */
120
+ operators?: Partial<CompiledOperators> | ((op: MathJsonSymbol) => [op: string, prec: number] | undefined);
64
121
  /** Custom function implementations */
65
122
  functions?: Record<MathJsonSymbol, TargetSource | Function>;
66
123
  /** Variable bindings */
@@ -1,4 +1,4 @@
1
- /* 0.32.1 */
1
+ /* 0.34.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.34.0 */
2
2
  import type { BoxedDefinition, BoxedExpression, ComputeEngine, Scope } from './global-types';
3
3
  /***
4
4
  * ### THEORY OF OPERATIONS