@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.
- package/dist/compute-engine.esm.js +39456 -28560
- package/dist/compute-engine.min.esm.js +80 -59
- package/dist/compute-engine.min.umd.js +80 -59
- package/dist/compute-engine.umd.js +39464 -28585
- package/dist/math-json.esm.js +2 -2
- package/dist/math-json.min.esm.js +2 -130
- package/dist/math-json.min.umd.js +2 -2
- package/dist/math-json.umd.js +2 -2
- package/dist/types/common/ansi-codes.d.ts +1 -1
- package/dist/types/common/configuration-change.d.ts +1 -1
- package/dist/types/common/fuzzy-string-match.d.ts +1 -1
- package/dist/types/common/grapheme-splitter.d.ts +1 -1
- package/dist/types/common/interruptible.d.ts +1 -1
- package/dist/types/common/one-of.d.ts +2 -1
- package/dist/types/common/signals.d.ts +1 -1
- package/dist/types/common/type/ast-nodes.d.ts +1 -1
- package/dist/types/common/type/boxed-type.d.ts +1 -1
- package/dist/types/common/type/lexer.d.ts +1 -1
- package/dist/types/common/type/parse.d.ts +1 -1
- package/dist/types/common/type/parser.d.ts +1 -1
- package/dist/types/common/type/primitive.d.ts +1 -1
- package/dist/types/common/type/reduce.d.ts +12 -0
- package/dist/types/common/type/serialize.d.ts +1 -1
- package/dist/types/common/type/subtype.d.ts +1 -1
- package/dist/types/common/type/type-builder.d.ts +1 -1
- package/dist/types/common/type/types.d.ts +1 -1
- package/dist/types/common/type/utils.d.ts +1 -1
- package/dist/types/common/utils.d.ts +1 -1
- package/dist/types/compute-engine/assume.d.ts +37 -1
- package/dist/types/compute-engine/boxed-expression/abstract-boxed-expression.d.ts +6 -3
- package/dist/types/compute-engine/boxed-expression/apply.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/arithmetic-add.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/arithmetic-mul-div.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/arithmetic-power.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/ascii-math.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/box.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-dictionary.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-function.d.ts +6 -2
- package/dist/types/compute-engine/boxed-expression/boxed-number.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-operator-definition.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-patterns.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-string.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-symbol.d.ts +5 -1
- package/dist/types/compute-engine/boxed-expression/boxed-tensor.d.ts +2 -1
- package/dist/types/compute-engine/boxed-expression/boxed-value-definition.d.ts +5 -1
- package/dist/types/compute-engine/boxed-expression/cache.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/canonical-utils.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/canonical.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/compare.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/expand.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/expression-map.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/factor.d.ts +47 -1
- package/dist/types/compute-engine/boxed-expression/flatten.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/hold.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/match.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/negate.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/numerics.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/order.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/polynomials.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/product.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/rules.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/serialize.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/sgn.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/simplify.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/solve-linear-system.d.ts +60 -0
- package/dist/types/compute-engine/boxed-expression/solve.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/terms.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/trigonometry.d.ts +1 -2
- package/dist/types/compute-engine/boxed-expression/utils.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/validate.d.ts +1 -1
- package/dist/types/compute-engine/collection-utils.d.ts +1 -1
- package/dist/types/compute-engine/compilation/base-compiler.d.ts +1 -1
- package/dist/types/compute-engine/compilation/glsl-target.d.ts +63 -0
- package/dist/types/compute-engine/compilation/javascript-target.d.ts +1 -1
- package/dist/types/compute-engine/compilation/types.d.ts +58 -1
- package/dist/types/compute-engine/cost-function.d.ts +1 -1
- package/dist/types/compute-engine/function-utils.d.ts +1 -1
- package/dist/types/compute-engine/global-types.d.ts +381 -10
- package/dist/types/compute-engine/index.d.ts +186 -3
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-algebra.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-arithmetic.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-calculus.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-complex.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-core.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-linear-algebra.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-logic.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-other.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-relational-operators.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-sets.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-statistics.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-symbols.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-trigonometry.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions.d.ts +10 -1
- package/dist/types/compute-engine/latex-syntax/parse-symbol.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/parse.d.ts +21 -1
- package/dist/types/compute-engine/latex-syntax/serialize-number.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/serializer-style.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/serializer.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/tokenizer.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/types.d.ts +33 -3
- package/dist/types/compute-engine/latex-syntax/utils.d.ts +1 -1
- package/dist/types/compute-engine/library/arithmetic.d.ts +1 -1
- package/dist/types/compute-engine/library/calculus.d.ts +1 -1
- package/dist/types/compute-engine/library/collections.d.ts +1 -1
- package/dist/types/compute-engine/library/combinatorics.d.ts +1 -1
- package/dist/types/compute-engine/library/complex.d.ts +1 -1
- package/dist/types/compute-engine/library/control-structures.d.ts +1 -1
- package/dist/types/compute-engine/library/core.d.ts +1 -1
- package/dist/types/compute-engine/library/invisible-operator.d.ts +1 -1
- package/dist/types/compute-engine/library/library.d.ts +1 -1
- package/dist/types/compute-engine/library/linear-algebra.d.ts +1 -1
- package/dist/types/compute-engine/library/logic-analysis.d.ts +189 -4
- package/dist/types/compute-engine/library/logic-utils.d.ts +1 -5
- package/dist/types/compute-engine/library/logic.d.ts +1 -1
- package/dist/types/compute-engine/library/number-theory.d.ts +1 -1
- package/dist/types/compute-engine/library/polynomials.d.ts +1 -1
- package/dist/types/compute-engine/library/random-expression.d.ts +1 -1
- package/dist/types/compute-engine/library/relational-operator.d.ts +1 -1
- package/dist/types/compute-engine/library/sets.d.ts +1 -1
- package/dist/types/compute-engine/library/statistics.d.ts +1 -1
- package/dist/types/compute-engine/library/trigonometry.d.ts +1 -1
- package/dist/types/compute-engine/library/utils.d.ts +60 -2
- package/dist/types/compute-engine/numeric-value/big-numeric-value.d.ts +1 -1
- package/dist/types/compute-engine/numeric-value/exact-numeric-value.d.ts +1 -1
- package/dist/types/compute-engine/numeric-value/machine-numeric-value.d.ts +1 -1
- package/dist/types/compute-engine/numeric-value/types.d.ts +1 -1
- package/dist/types/compute-engine/numerics/bigint.d.ts +1 -1
- package/dist/types/compute-engine/numerics/expression.d.ts +1 -1
- package/dist/types/compute-engine/numerics/interval.d.ts +1 -1
- package/dist/types/compute-engine/numerics/monte-carlo.d.ts +1 -1
- package/dist/types/compute-engine/numerics/numeric-bigint.d.ts +1 -1
- package/dist/types/compute-engine/numerics/numeric-bignum.d.ts +1 -1
- package/dist/types/compute-engine/numerics/numeric-complex.d.ts +1 -1
- package/dist/types/compute-engine/numerics/numeric.d.ts +2 -2
- package/dist/types/compute-engine/numerics/primes.d.ts +1 -1
- package/dist/types/compute-engine/numerics/rationals.d.ts +1 -1
- package/dist/types/compute-engine/numerics/richardson.d.ts +1 -1
- package/dist/types/compute-engine/numerics/special-functions.d.ts +1 -1
- package/dist/types/compute-engine/numerics/statistics.d.ts +1 -1
- package/dist/types/compute-engine/numerics/strings.d.ts +1 -1
- package/dist/types/compute-engine/numerics/types.d.ts +2 -1
- package/dist/types/compute-engine/oeis.d.ts +85 -0
- package/dist/types/compute-engine/sequence.d.ts +120 -0
- package/dist/types/compute-engine/symbolic/antiderivative.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/derivative.d.ts +17 -2
- package/dist/types/compute-engine/symbolic/distribute.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/fu-cost.d.ts +33 -0
- package/dist/types/compute-engine/symbolic/fu-transforms.d.ts +130 -0
- package/dist/types/compute-engine/symbolic/fu.d.ts +48 -0
- package/dist/types/compute-engine/symbolic/simplify-abs.d.ts +12 -0
- package/dist/types/compute-engine/symbolic/simplify-divide.d.ts +15 -0
- package/dist/types/compute-engine/symbolic/simplify-hyperbolic.d.ts +2 -0
- package/dist/types/compute-engine/symbolic/simplify-infinity.d.ts +14 -0
- package/dist/types/compute-engine/symbolic/simplify-log.d.ts +15 -0
- package/dist/types/compute-engine/symbolic/simplify-power.d.ts +15 -0
- package/dist/types/compute-engine/symbolic/simplify-product.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-rules.d.ts +1 -11
- package/dist/types/compute-engine/symbolic/simplify-sum.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-trig.d.ts +2 -0
- package/dist/types/compute-engine/tensor/tensor-fields.d.ts +1 -1
- package/dist/types/compute-engine/tensor/tensors.d.ts +3 -3
- package/dist/types/compute-engine/types.d.ts +1 -1
- package/dist/types/compute-engine.d.ts +5 -1
- package/dist/types/math-json/symbols.d.ts +1 -1
- package/dist/types/math-json/types.d.ts +1 -1
- package/dist/types/math-json/utils.d.ts +1 -1
- package/dist/types/math-json.d.ts +2 -2
- package/package.json +2 -2
|
@@ -1,6 +1,52 @@
|
|
|
1
|
-
/* 0.
|
|
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)
|
|
@@ -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,5 +1,4 @@
|
|
|
1
|
-
/* 0.
|
|
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;
|
|
@@ -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.
|
|
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.
|
|
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 */
|