@cortex-js/compute-engine 0.57.0 → 0.59.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/README.md +4 -0
- package/dist/compile.esm.js +2376 -501
- package/dist/compile.min.esm.js +316 -68
- package/dist/compile.min.umd.cjs +316 -68
- package/dist/compile.umd.cjs +2376 -501
- package/dist/compute-engine.esm.js +15717 -12444
- package/dist/compute-engine.min.esm.js +331 -83
- package/dist/compute-engine.min.umd.cjs +330 -82
- package/dist/compute-engine.umd.cjs +15717 -12444
- package/dist/core.esm.js +15716 -12443
- package/dist/core.min.esm.js +329 -81
- package/dist/core.min.umd.cjs +329 -81
- package/dist/core.umd.cjs +15716 -12443
- package/dist/identities.esm.js +1921 -0
- package/dist/identities.min.esm.js +2 -0
- package/dist/identities.min.umd.cjs +4 -0
- package/dist/identities.umd.cjs +1946 -0
- package/dist/interval.esm.js +779 -339
- package/dist/interval.min.esm.js +8 -8
- package/dist/interval.min.umd.cjs +8 -8
- package/dist/interval.umd.cjs +779 -339
- package/dist/latex-syntax.esm.js +971 -608
- package/dist/latex-syntax.min.esm.js +7 -7
- package/dist/latex-syntax.min.umd.cjs +7 -7
- package/dist/latex-syntax.umd.cjs +971 -608
- package/dist/math-json.esm.js +8 -12
- package/dist/math-json.min.esm.js +2 -2
- package/dist/math-json.min.umd.cjs +2 -2
- package/dist/math-json.umd.cjs +8 -12
- package/dist/numerics.esm.js +1382 -226
- package/dist/numerics.min.esm.js +16 -5
- package/dist/numerics.min.umd.cjs +16 -5
- package/dist/numerics.umd.cjs +1382 -226
- package/dist/types/big-decimal/big-decimal.d.ts +1 -1
- package/dist/types/big-decimal/index.d.ts +1 -1
- package/dist/types/big-decimal/transcendentals.d.ts +1 -1
- package/dist/types/big-decimal/utils.d.ts +1 -1
- 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 +1 -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 -208
- package/dist/types/common/type/parser.d.ts +124 -2
- package/dist/types/common/type/primitive.d.ts +5 -1
- package/dist/types/common/type/reduce.d.ts +1 -1
- package/dist/types/common/type/serialize.d.ts +1 -1
- package/dist/types/common/type/subtype.d.ts +18 -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/compile.d.ts +1 -1
- package/dist/types/compute-engine/assume.d.ts +13 -6
- package/dist/types/compute-engine/boxed-expression/abstract-boxed-expression.d.ts +3 -1
- 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 +1 -1
- 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 +7 -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 +3 -3
- package/dist/types/compute-engine/boxed-expression/boxed-tensor.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-value-definition.d.ts +1 -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/constants.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/constraint-subject.d.ts +140 -0
- 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 +1 -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/inequality-bounds.d.ts +34 -12
- package/dist/types/compute-engine/boxed-expression/init-lazy-refs.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/invisible-operator.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/pattern-utils.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/polynomial-degree.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/polynomials.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/predicates.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/rule-index.d.ts +112 -0
- package/dist/types/compute-engine/boxed-expression/rules.d.ts +2 -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 +1 -1
- package/dist/types/compute-engine/boxed-expression/solve.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/stochastic-equal.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/trigonometry.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/type-guards.d.ts +1 -1
- 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 +8 -1
- package/dist/types/compute-engine/compilation/compile-expression.d.ts +1 -1
- package/dist/types/compute-engine/compilation/constant-folding.d.ts +16 -1
- package/dist/types/compute-engine/compilation/glsl-target.d.ts +1 -1
- package/dist/types/compute-engine/compilation/gpu-target.d.ts +58 -5
- package/dist/types/compute-engine/compilation/interval-javascript-target.d.ts +4 -4
- package/dist/types/compute-engine/compilation/javascript-target.d.ts +1 -1
- package/dist/types/compute-engine/compilation/python-target.d.ts +1 -1
- package/dist/types/compute-engine/compilation/types.d.ts +1 -1
- package/dist/types/compute-engine/compilation/wgsl-target.d.ts +1 -1
- package/dist/types/compute-engine/cost-function.d.ts +1 -1
- package/dist/types/compute-engine/engine-assumptions.d.ts +1 -1
- package/dist/types/compute-engine/engine-cache.d.ts +1 -1
- package/dist/types/compute-engine/engine-common-symbols.d.ts +1 -1
- package/dist/types/compute-engine/engine-compilation-targets.d.ts +1 -1
- package/dist/types/compute-engine/engine-configuration-lifecycle.d.ts +1 -1
- package/dist/types/compute-engine/engine-declarations.d.ts +1 -1
- package/dist/types/compute-engine/engine-expression-entrypoints.d.ts +1 -1
- package/dist/types/compute-engine/engine-extension-contracts.d.ts +1 -1
- package/dist/types/compute-engine/engine-library-bootstrap.d.ts +1 -1
- package/dist/types/compute-engine/engine-numeric-configuration.d.ts +1 -1
- package/dist/types/compute-engine/engine-runtime-state.d.ts +4 -1
- package/dist/types/compute-engine/engine-scope.d.ts +1 -1
- package/dist/types/compute-engine/engine-sequences.d.ts +1 -1
- package/dist/types/compute-engine/engine-simplification-rules.d.ts +10 -2
- package/dist/types/compute-engine/engine-startup-coordinator.d.ts +1 -1
- package/dist/types/compute-engine/engine-type-resolver.d.ts +1 -1
- package/dist/types/compute-engine/engine-validation-entrypoints.d.ts +1 -1
- package/dist/types/compute-engine/free-functions.d.ts +1 -1
- package/dist/types/compute-engine/function-utils.d.ts +1 -1
- package/dist/types/compute-engine/fungrim/loader.d.ts +13 -0
- package/dist/types/compute-engine/fungrim/types.d.ts +160 -0
- package/dist/types/compute-engine/global-types.d.ts +1 -1
- package/dist/types/compute-engine/index.d.ts +63 -2
- package/dist/types/compute-engine/interval/arithmetic.d.ts +1 -1
- package/dist/types/compute-engine/interval/comparison.d.ts +1 -1
- package/dist/types/compute-engine/interval/elementary.d.ts +10 -2
- package/dist/types/compute-engine/interval/index.d.ts +2 -2
- package/dist/types/compute-engine/interval/trigonometric.d.ts +1 -1
- package/dist/types/compute-engine/interval/types.d.ts +1 -1
- package/dist/types/compute-engine/interval/util.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/default-dictionary.d.ts +1 -1
- 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-colors.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-units.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/indexed-types.d.ts +4 -1
- package/dist/types/compute-engine/latex-syntax/latex-syntax.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/parse-number.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/parse-symbol.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/parse.d.ts +3 -2
- package/dist/types/compute-engine/latex-syntax/serialize-dms.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/serialize-number.d.ts +1 -11
- 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 +1 -1
- 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/colors.d.ts +1 -1
- package/dist/types/compute-engine/library/combinatorics.d.ts +1 -1
- package/dist/types/compute-engine/library/complex.d.ts +13 -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/fractals.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 +1 -1
- 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/quantity-arithmetic.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 +27 -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/type-handlers.d.ts +1 -1
- package/dist/types/compute-engine/library/unit-data.d.ts +1 -1
- package/dist/types/compute-engine/library/units.d.ts +1 -1
- package/dist/types/compute-engine/library/utils.d.ts +1 -1
- 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 +7 -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/bernoulli.d.ts +39 -0
- 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/linear-algebra.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 +12 -1
- package/dist/types/compute-engine/numerics/numeric.d.ts +1 -1
- package/dist/types/compute-engine/numerics/primes.d.ts +1 -1
- package/dist/types/compute-engine/numerics/random.d.ts +23 -0
- 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 +78 -10
- 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 +1 -1
- package/dist/types/compute-engine/numerics/unit-data.d.ts +1 -1
- package/dist/types/compute-engine/oeis.d.ts +1 -1
- package/dist/types/compute-engine/sequence.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/antiderivative.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/derivative.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/distribute.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/fu-cost.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/fu-transforms.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/fu.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/logic-utils.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-abs.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-divide.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-factorial.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-hyperbolic.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-infinity.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-log.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-logic.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-power.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-product.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-rules.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-sum.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-trig.d.ts +1 -1
- 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-definitions.d.ts +1 -1
- package/dist/types/compute-engine/types-engine.d.ts +52 -3
- package/dist/types/compute-engine/types-evaluation.d.ts +1 -1
- package/dist/types/compute-engine/types-expression.d.ts +85 -14
- package/dist/types/compute-engine/types-kernel-evaluation.d.ts +32 -1
- package/dist/types/compute-engine/types-kernel-serialization.d.ts +45 -3
- package/dist/types/compute-engine/types-serialization.d.ts +1 -1
- package/dist/types/compute-engine/types.d.ts +1 -1
- package/dist/types/compute-engine.d.ts +1 -1
- package/dist/types/core.d.ts +1 -1
- package/dist/types/identities.d.ts +3 -0
- package/dist/types/interval.d.ts +1 -1
- package/dist/types/latex-syntax.d.ts +2 -2
- 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/dist/types/numerics.d.ts +1 -1
- package/package.json +9 -3
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.59.0 */
|
|
2
2
|
* Constant folding utilities for GPU compilation.
|
|
3
3
|
*
|
|
4
4
|
* These helpers allow compilation handlers to detect compile-time constants,
|
|
@@ -29,6 +29,21 @@ export declare function tryGetConstant(expr: Expression): number | undefined;
|
|
|
29
29
|
* short-circuits on `0.0` (absorbing element), returns `"1.0"` for empty input.
|
|
30
30
|
*/
|
|
31
31
|
export declare function foldTerms(terms: string[], identity: string, op: '+' | '*'): string;
|
|
32
|
+
/**
|
|
33
|
+
* Parenthesize a compiled operand for safe use as a multiplicative factor.
|
|
34
|
+
*
|
|
35
|
+
* `foldTerms(..., '*')` joins operand strings with ` * ` without adding
|
|
36
|
+
* precedence parentheses. That is fine when operands come through the
|
|
37
|
+
* operator path (which already wraps lower-precedence operands), but the
|
|
38
|
+
* complex-multiply function handlers compile their operands with no
|
|
39
|
+
* precedence context, so a top-level additive factor like `x + 1.0` would be
|
|
40
|
+
* joined as `x + 1.0 * z` (mis-grouped). Wrap `Add`/`Subtract` operands so
|
|
41
|
+
* they bind as a single factor.
|
|
42
|
+
*
|
|
43
|
+
* @param expr The source expression for the operand.
|
|
44
|
+
* @param code The already-compiled operand code.
|
|
45
|
+
*/
|
|
46
|
+
export declare function parenthesizeFactor(expr: Expression, code: string): string;
|
|
32
47
|
/**
|
|
33
48
|
* Decompose an expression into real and imaginary compiled code strings
|
|
34
49
|
* for direct `vec2(re, im)` construction.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.59.0 */
|
|
2
2
|
import type { CompileTarget, CompiledOperators, CompiledFunctions, LanguageTarget, CompilationOptions, CompilationResult } from './types';
|
|
3
3
|
/**
|
|
4
4
|
* GPU shader operators shared by GLSL and WGSL.
|
|
@@ -33,14 +33,24 @@ export declare function compileGPUMatrix(args: ReadonlyArray<Expression>, compil
|
|
|
33
33
|
* GPU gamma function using Lanczos approximation (g=7, n=9 coefficients).
|
|
34
34
|
*
|
|
35
35
|
* Uses reflection formula for z < 0.5 and Lanczos for z >= 0.5.
|
|
36
|
-
*
|
|
36
|
+
* GLSL syntax.
|
|
37
37
|
*/
|
|
38
|
-
export declare const
|
|
38
|
+
export declare const GPU_GAMMA_PREAMBLE_GLSL = "\nfloat _gpu_gamma(float z) {\n const float PI = 3.14159265358979;\n // For z < 0.5, use reflection formula with inlined Lanczos (non-recursive)\n float w = z;\n if (z < 0.5) w = 1.0 - z;\n w -= 1.0;\n float x = 0.99999999999980993;\n x += 676.5203681218851 / (w + 1.0);\n x += -1259.1392167224028 / (w + 2.0);\n x += 771.32342877765313 / (w + 3.0);\n x += -176.61502916214059 / (w + 4.0);\n x += 12.507343278686905 / (w + 5.0);\n x += -0.13857109526572012 / (w + 6.0);\n x += 9.9843695780195716e-6 / (w + 7.0);\n x += 1.5056327351493116e-7 / (w + 8.0);\n float t = w + 7.5;\n float g = sqrt(2.0 * PI) * pow(t, w + 0.5) * exp(-t) * x;\n if (z < 0.5) return PI / (sin(PI * z) * g);\n return g;\n}\n\nfloat _gpu_gammaln(float z) {\n // Stirling asymptotic expansion for ln(Gamma(z)), z > 0\n float z3 = z * z * z;\n return z * log(z) - z - 0.5 * log(z)\n + 0.5 * log(2.0 * 3.14159265358979)\n + 1.0 / (12.0 * z)\n - 1.0 / (360.0 * z3)\n + 1.0 / (1260.0 * z3 * z * z);\n}\n";
|
|
39
|
+
/**
|
|
40
|
+
* GPU Gamma function preamble (WGSL syntax). WGSL has no implicit GLSL-style
|
|
41
|
+
* `float`/braceless-`if` syntax, so a `_WGSL` variant is required (the GLSL
|
|
42
|
+
* preamble does not compile as WGSL).
|
|
43
|
+
*/
|
|
44
|
+
export declare const GPU_GAMMA_PREAMBLE_WGSL = "\nfn _gpu_gamma(z: f32) -> f32 {\n let PI = 3.14159265358979;\n var w = z;\n if (z < 0.5) { w = 1.0 - z; }\n w = w - 1.0;\n var x = 0.99999999999980993;\n x = x + 676.5203681218851 / (w + 1.0);\n x = x + -1259.1392167224028 / (w + 2.0);\n x = x + 771.32342877765313 / (w + 3.0);\n x = x + -176.61502916214059 / (w + 4.0);\n x = x + 12.507343278686905 / (w + 5.0);\n x = x + -0.13857109526572012 / (w + 6.0);\n x = x + 9.9843695780195716e-6 / (w + 7.0);\n x = x + 1.5056327351493116e-7 / (w + 8.0);\n let t = w + 7.5;\n let g = sqrt(2.0 * PI) * pow(t, w + 0.5) * exp(-t) * x;\n if (z < 0.5) { return PI / (sin(PI * z) * g); }\n return g;\n}\n\nfn _gpu_gammaln(z: f32) -> f32 {\n let z3 = z * z * z;\n return z * log(z) - z - 0.5 * log(z)\n + 0.5 * log(2.0 * 3.14159265358979)\n + 1.0 / (12.0 * z)\n - 1.0 / (360.0 * z3)\n + 1.0 / (1260.0 * z3 * z * z);\n}\n";
|
|
39
45
|
/**
|
|
40
46
|
* GPU error function using Abramowitz & Stegun approximation.
|
|
41
|
-
* Maximum error: |epsilon(x)| <= 1.5e-7.
|
|
47
|
+
* Maximum error: |epsilon(x)| <= 1.5e-7. GLSL syntax.
|
|
42
48
|
*/
|
|
43
|
-
export declare const
|
|
49
|
+
export declare const GPU_ERF_PREAMBLE_GLSL = "\nfloat _gpu_erf(float x) {\n float ax = abs(x);\n float t = 1.0 / (1.0 + 0.3275911 * ax);\n float y = ((((1.061405429 * t - 1.453152027) * t + 1.421413741) * t - 0.284496736) * t + 0.254829592) * t;\n float result = 1.0 - y * exp(-ax * ax);\n return x < 0.0 ? -result : result;\n}\n\nfloat _gpu_erfinv(float x) {\n float pi = 3.14159265358979;\n float x2 = x * x;\n float x3 = x * x2;\n float x5 = x3 * x2;\n float x7 = x5 * x2;\n float x9 = x7 * x2;\n return sqrt(pi) * 0.5 * (x + (pi / 12.0) * x3 + (7.0 * pi * pi / 480.0) * x5 + (127.0 * pi * pi * pi / 40320.0) * x7 + (4369.0 * pi * pi * pi * pi / 5806080.0) * x9);\n}\n";
|
|
50
|
+
/**
|
|
51
|
+
* GPU error function preamble (WGSL syntax). See GPU_GAMMA_PREAMBLE_WGSL.
|
|
52
|
+
*/
|
|
53
|
+
export declare const GPU_ERF_PREAMBLE_WGSL = "\nfn _gpu_erf(x: f32) -> f32 {\n let ax = abs(x);\n let t = 1.0 / (1.0 + 0.3275911 * ax);\n let y = ((((1.061405429 * t - 1.453152027) * t + 1.421413741) * t - 0.284496736) * t + 0.254829592) * t;\n let result = 1.0 - y * exp(-ax * ax);\n if (x < 0.0) { return -result; }\n return result;\n}\n\nfn _gpu_erfinv(x: f32) -> f32 {\n let pi = 3.14159265358979;\n let x2 = x * x;\n let x3 = x * x2;\n let x5 = x3 * x2;\n let x7 = x5 * x2;\n let x9 = x7 * x2;\n return sqrt(pi) * 0.5 * (x + (pi / 12.0) * x3 + (7.0 * pi * pi / 480.0) * x5 + (127.0 * pi * pi * pi / 40320.0) * x7 + (4369.0 * pi * pi * pi * pi / 5806080.0) * x9);\n}\n";
|
|
44
54
|
/**
|
|
45
55
|
* GPU Heaviside step function preamble (GLSL syntax).
|
|
46
56
|
* Returns 0 for x<0, 0.5 at x=0, 1 for x>0.
|
|
@@ -120,6 +130,49 @@ export declare const GPU_FRACTAL_PREAMBLE_GLSL = "\nfloat _fractal_mandelbrot(ve
|
|
|
120
130
|
* Fractal preamble (WGSL syntax).
|
|
121
131
|
*/
|
|
122
132
|
export declare const GPU_FRACTAL_PREAMBLE_WGSL = "\nfn _fractal_mandelbrot(c: vec2f, maxIter: i32) -> f32 {\n var z = vec2f(0.0, 0.0);\n for (var i: i32 = 0; i < maxIter; i++) {\n z = vec2f(z.x*z.x - z.y*z.y + c.x, 2.0*z.x*z.y + c.y);\n if (dot(z, z) > 4.0) {\n return clamp((f32(i) - log2(log2(dot(z, z))) + 4.0) / f32(maxIter), 0.0, 1.0);\n }\n }\n return 1.0;\n}\n\nfn _fractal_julia(z_in: vec2f, c: vec2f, maxIter: i32) -> f32 {\n var z = z_in;\n for (var i: i32 = 0; i < maxIter; i++) {\n z = vec2f(z.x*z.x - z.y*z.y + c.x, 2.0*z.x*z.y + c.y);\n if (dot(z, z) > 4.0) {\n return clamp((f32(i) - log2(log2(dot(z, z))) + 4.0) / f32(maxIter), 0.0, 1.0);\n }\n }\n return 1.0;\n}\n";
|
|
133
|
+
/**
|
|
134
|
+
* GPU GCD preamble (GLSL syntax).
|
|
135
|
+
* Euclidean algorithm over floats; works for integer-valued inputs.
|
|
136
|
+
*/
|
|
137
|
+
export declare const GPU_GCD_PREAMBLE_GLSL = "\nfloat _gpu_gcd(float a, float b) {\n a = abs(a); b = abs(b);\n for (int i = 0; i < 32; i++) {\n if (b < 0.5) break;\n float t = mod(a, b);\n a = b;\n b = t;\n }\n return a;\n}\n";
|
|
138
|
+
/**
|
|
139
|
+
* GPU GCD preamble (WGSL syntax).
|
|
140
|
+
*/
|
|
141
|
+
export declare const GPU_GCD_PREAMBLE_WGSL = "\nfn _gpu_gcd(a_in: f32, b_in: f32) -> f32 {\n var a = abs(a_in); var b = abs(b_in);\n for (var i: i32 = 0; i < 32; i++) {\n if (b < 0.5) { break; }\n let t = a % b;\n a = b;\n b = t;\n }\n return a;\n}\n";
|
|
142
|
+
/**
|
|
143
|
+
* GPU Random preamble (GLSL syntax).
|
|
144
|
+
*
|
|
145
|
+
* Deterministic pseudorandom in [0, 1) from a float seed.
|
|
146
|
+
* Standard fract-sin hash; reproducible across runs for the same seed.
|
|
147
|
+
* Note: this hash exhibits visible banding near seed ≈ kπ for integer k.
|
|
148
|
+
* For high-quality shader random, callers should use a more robust hash
|
|
149
|
+
* (e.g. PCG or xxHash) and pre-seed it appropriately.
|
|
150
|
+
*/
|
|
151
|
+
export declare const GPU_RANDOM_PREAMBLE_GLSL = "\n// Deterministic pseudorandom in [0, 1) from a float seed.\n// Standard fract-sin hash; reproducible across runs for the same seed.\n// Note: this hash exhibits visible banding near seed \u2248 k\u03C0 for integer k.\n// For high-quality shader random, callers should use a more robust hash\n// (e.g. PCG or xxHash) and pre-seed it appropriately.\nfloat _gpu_random(float seed) {\n return fract(sin(seed * 12.9898) * 43758.5453);\n}\n";
|
|
152
|
+
/**
|
|
153
|
+
* GPU Random preamble (WGSL syntax).
|
|
154
|
+
*
|
|
155
|
+
* Deterministic pseudorandom in [0, 1) from a float seed.
|
|
156
|
+
* Standard fract-sin hash; reproducible across runs for the same seed.
|
|
157
|
+
* Note: this hash exhibits visible banding near seed ≈ kπ for integer k.
|
|
158
|
+
* For high-quality shader random, callers should use a more robust hash
|
|
159
|
+
* (e.g. PCG or xxHash) and pre-seed it appropriately.
|
|
160
|
+
*/
|
|
161
|
+
export declare const GPU_RANDOM_PREAMBLE_WGSL = "\n// Deterministic pseudorandom in [0, 1) from a float seed.\n// Standard fract-sin hash; reproducible across runs for the same seed.\n// Note: this hash exhibits visible banding near seed \u2248 k\u03C0 for integer k.\n// For high-quality shader random, callers should use a more robust hash\n// (e.g. PCG or xxHash) and pre-seed it appropriately.\nfn _gpu_random(seed: f32) -> f32 {\n return fract(sin(seed * 12.9898) * 43758.5453);\n}\n";
|
|
162
|
+
/**
|
|
163
|
+
* GPU Median preamble (GLSL syntax).
|
|
164
|
+
*
|
|
165
|
+
* One function per supported list size (2..8) using sorting networks.
|
|
166
|
+
* Each function takes N float arguments and returns the median via a
|
|
167
|
+
* Batcher odd-even merge sort encoded entirely as min/max calls.
|
|
168
|
+
*/
|
|
169
|
+
export declare const GPU_MEDIAN_PREAMBLE_GLSL = "\nfloat _gpu_median_2(float a, float b) {\n return (a + b) * 0.5;\n}\nfloat _gpu_median_3(float a, float b, float c) {\n return max(min(a, b), min(max(a, b), c));\n}\nfloat _gpu_median_4(float a, float b, float c, float d) {\n float lo = max(min(a, b), min(c, d));\n float hi = min(max(a, b), max(c, d));\n return (lo + hi) * 0.5;\n}\nfloat _gpu_median_5(float a, float b, float c, float d, float e) {\n // 9-comparator Bose-Nelson sort; v2 holds the median.\n float t; float v0=a,v1=b,v2=c,v3=d,v4=e;\n t=min(v0,v1); v1=max(v0,v1); v0=t;\n t=min(v3,v4); v4=max(v3,v4); v3=t;\n t=min(v2,v4); v4=max(v2,v4); v2=t;\n t=min(v2,v3); v3=max(v2,v3); v2=t;\n t=min(v0,v3); v3=max(v0,v3); v0=t;\n t=min(v0,v2); v2=max(v0,v2); v0=t;\n t=min(v1,v4); v4=max(v1,v4); v1=t;\n t=min(v1,v3); v3=max(v1,v3); v1=t;\n t=min(v1,v2); v2=max(v1,v2); v1=t;\n return v2;\n}\nfloat _gpu_median_6(float a, float b, float c, float d, float e, float f) {\n float t; float v0=a,v1=b,v2=c,v3=d,v4=e,v5=f;\n t=min(v0,v1); v1=max(v0,v1); v0=t;\n t=min(v2,v3); v3=max(v2,v3); v2=t;\n t=min(v4,v5); v5=max(v4,v5); v4=t;\n t=min(v0,v2); v2=max(v0,v2); v0=t;\n t=min(v1,v3); v3=max(v1,v3); v1=t;\n t=min(v0,v4); v4=max(v0,v4); v0=t;\n t=min(v1,v5); v5=max(v1,v5); v1=t;\n t=min(v2,v4); v4=max(v2,v4); v2=t;\n t=min(v1,v2); v2=max(v1,v2); v1=t;\n t=min(v3,v5); v5=max(v3,v5); v3=t;\n t=min(v3,v4); v4=max(v3,v4); v3=t;\n return (v2 + v3) * 0.5;\n}\nfloat _gpu_median_7(float a, float b, float c, float d, float e, float f, float g) {\n float t; float v0=a,v1=b,v2=c,v3=d,v4=e,v5=f,v6=g;\n t=min(v0,v1); v1=max(v0,v1); v0=t;\n t=min(v2,v3); v3=max(v2,v3); v2=t;\n t=min(v4,v5); v5=max(v4,v5); v4=t;\n t=min(v0,v2); v2=max(v0,v2); v0=t;\n t=min(v1,v3); v3=max(v1,v3); v1=t;\n t=min(v4,v6); v6=max(v4,v6); v4=t;\n t=min(v0,v4); v4=max(v0,v4); v0=t;\n t=min(v1,v5); v5=max(v1,v5); v1=t;\n t=min(v2,v6); v6=max(v2,v6); v2=t;\n t=min(v1,v2); v2=max(v1,v2); v1=t;\n t=min(v3,v5); v5=max(v3,v5); v3=t;\n t=min(v2,v4); v4=max(v2,v4); v2=t;\n t=min(v3,v4); v4=max(v3,v4); v3=t;\n return v3;\n}\nfloat _gpu_median_8(float a, float b, float c, float d, float e, float f, float g, float h) {\n float t; float v0=a,v1=b,v2=c,v3=d,v4=e,v5=f,v6=g,v7=h;\n t=min(v0,v1); v1=max(v0,v1); v0=t;\n t=min(v2,v3); v3=max(v2,v3); v2=t;\n t=min(v4,v5); v5=max(v4,v5); v4=t;\n t=min(v6,v7); v7=max(v6,v7); v6=t;\n t=min(v0,v2); v2=max(v0,v2); v0=t;\n t=min(v1,v3); v3=max(v1,v3); v1=t;\n t=min(v4,v6); v6=max(v4,v6); v4=t;\n t=min(v5,v7); v7=max(v5,v7); v5=t;\n t=min(v0,v4); v4=max(v0,v4); v0=t;\n t=min(v1,v5); v5=max(v1,v5); v1=t;\n t=min(v2,v6); v6=max(v2,v6); v2=t;\n t=min(v3,v7); v7=max(v3,v7); v3=t;\n t=min(v1,v2); v2=max(v1,v2); v1=t;\n t=min(v3,v4); v4=max(v3,v4); v3=t;\n t=min(v5,v6); v6=max(v5,v6); v5=t;\n t=min(v3,v5); v5=max(v3,v5); v3=t;\n t=min(v2,v4); v4=max(v2,v4); v2=t;\n t=min(v3,v4); v4=max(v3,v4); v3=t;\n return (v3 + v4) * 0.5;\n}\n";
|
|
170
|
+
/**
|
|
171
|
+
* GPU Median preamble (WGSL syntax).
|
|
172
|
+
*
|
|
173
|
+
* Same sorting-network logic as the GLSL version with WGSL syntax.
|
|
174
|
+
*/
|
|
175
|
+
export declare const GPU_MEDIAN_PREAMBLE_WGSL = "\nfn _gpu_median_2(a: f32, b: f32) -> f32 {\n return (a + b) * 0.5;\n}\nfn _gpu_median_3(a: f32, b: f32, c: f32) -> f32 {\n return max(min(a, b), min(max(a, b), c));\n}\nfn _gpu_median_4(a: f32, b: f32, c: f32, d: f32) -> f32 {\n let lo = max(min(a, b), min(c, d));\n let hi = min(max(a, b), max(c, d));\n return (lo + hi) * 0.5;\n}\nfn _gpu_median_5(a: f32, b: f32, c: f32, d: f32, e: f32) -> f32 {\n // 9-comparator Bose-Nelson sort; v2 holds the median.\n var v0=a; var v1=b; var v2=c; var v3=d; var v4=e; var t: f32;\n t=min(v0,v1); v1=max(v0,v1); v0=t;\n t=min(v3,v4); v4=max(v3,v4); v3=t;\n t=min(v2,v4); v4=max(v2,v4); v2=t;\n t=min(v2,v3); v3=max(v2,v3); v2=t;\n t=min(v0,v3); v3=max(v0,v3); v0=t;\n t=min(v0,v2); v2=max(v0,v2); v0=t;\n t=min(v1,v4); v4=max(v1,v4); v1=t;\n t=min(v1,v3); v3=max(v1,v3); v1=t;\n t=min(v1,v2); v2=max(v1,v2); v1=t;\n return v2;\n}\nfn _gpu_median_6(a: f32, b: f32, c: f32, d: f32, e: f32, f: f32) -> f32 {\n var v0=a; var v1=b; var v2=c; var v3=d; var v4=e; var v5=f; var t: f32;\n t=min(v0,v1); v1=max(v0,v1); v0=t;\n t=min(v2,v3); v3=max(v2,v3); v2=t;\n t=min(v4,v5); v5=max(v4,v5); v4=t;\n t=min(v0,v2); v2=max(v0,v2); v0=t;\n t=min(v1,v3); v3=max(v1,v3); v1=t;\n t=min(v0,v4); v4=max(v0,v4); v0=t;\n t=min(v1,v5); v5=max(v1,v5); v1=t;\n t=min(v2,v4); v4=max(v2,v4); v2=t;\n t=min(v1,v2); v2=max(v1,v2); v1=t;\n t=min(v3,v5); v5=max(v3,v5); v3=t;\n t=min(v3,v4); v4=max(v3,v4); v3=t;\n return (v2 + v3) * 0.5;\n}\nfn _gpu_median_7(a: f32, b: f32, c: f32, d: f32, e: f32, f: f32, g: f32) -> f32 {\n var v0=a; var v1=b; var v2=c; var v3=d; var v4=e; var v5=f; var v6=g; var t: f32;\n t=min(v0,v1); v1=max(v0,v1); v0=t;\n t=min(v2,v3); v3=max(v2,v3); v2=t;\n t=min(v4,v5); v5=max(v4,v5); v4=t;\n t=min(v0,v2); v2=max(v0,v2); v0=t;\n t=min(v1,v3); v3=max(v1,v3); v1=t;\n t=min(v4,v6); v6=max(v4,v6); v4=t;\n t=min(v0,v4); v4=max(v0,v4); v0=t;\n t=min(v1,v5); v5=max(v1,v5); v1=t;\n t=min(v2,v6); v6=max(v2,v6); v2=t;\n t=min(v1,v2); v2=max(v1,v2); v1=t;\n t=min(v3,v5); v5=max(v3,v5); v3=t;\n t=min(v2,v4); v4=max(v2,v4); v2=t;\n t=min(v3,v4); v4=max(v3,v4); v3=t;\n return v3;\n}\nfn _gpu_median_8(a: f32, b: f32, c: f32, d: f32, e: f32, f: f32, g: f32, h: f32) -> f32 {\n var v0=a; var v1=b; var v2=c; var v3=d; var v4=e; var v5=f; var v6=g; var v7=h; var t: f32;\n t=min(v0,v1); v1=max(v0,v1); v0=t;\n t=min(v2,v3); v3=max(v2,v3); v2=t;\n t=min(v4,v5); v5=max(v4,v5); v4=t;\n t=min(v6,v7); v7=max(v6,v7); v6=t;\n t=min(v0,v2); v2=max(v0,v2); v0=t;\n t=min(v1,v3); v3=max(v1,v3); v1=t;\n t=min(v4,v6); v6=max(v4,v6); v4=t;\n t=min(v5,v7); v7=max(v5,v7); v5=t;\n t=min(v0,v4); v4=max(v0,v4); v0=t;\n t=min(v1,v5); v5=max(v1,v5); v1=t;\n t=min(v2,v6); v6=max(v2,v6); v2=t;\n t=min(v3,v7); v7=max(v3,v7); v3=t;\n t=min(v1,v2); v2=max(v1,v2); v1=t;\n t=min(v3,v4); v4=max(v3,v4); v3=t;\n t=min(v5,v6); v6=max(v5,v6); v5=t;\n t=min(v3,v5); v5=max(v3,v5); v3=t;\n t=min(v2,v4); v4=max(v2,v4); v2=t;\n t=min(v3,v4); v4=max(v3,v4); v3=t;\n return (v3 + v4) * 0.5;\n}\n";
|
|
123
176
|
/**
|
|
124
177
|
* GPU color space conversion preamble (GLSL syntax).
|
|
125
178
|
*
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.59.0 */
|
|
2
2
|
* JavaScript interval arithmetic compilation target
|
|
3
3
|
*
|
|
4
4
|
* Compiles mathematical expressions to JavaScript code using interval arithmetic
|
|
@@ -61,9 +61,9 @@ export declare class ComputeEngineIntervalFunction extends Function {
|
|
|
61
61
|
gammaln: typeof import("../interval").gammaln;
|
|
62
62
|
factorial: typeof import("../interval").factorial;
|
|
63
63
|
factorial2: typeof import("../interval").factorial2;
|
|
64
|
-
binomial: typeof import("../interval
|
|
65
|
-
gcd: typeof import("../interval
|
|
66
|
-
lcm: typeof import("../interval
|
|
64
|
+
binomial: typeof import("../interval").binomial;
|
|
65
|
+
gcd: typeof import("../interval").gcd;
|
|
66
|
+
lcm: typeof import("../interval").lcm;
|
|
67
67
|
chop: typeof import("../interval/elementary").chop;
|
|
68
68
|
erf: typeof import("../interval/elementary").erf;
|
|
69
69
|
erfc: typeof import("../interval/elementary").erfc;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.59.0 */
|
|
2
2
|
import { chop, factorial, factorial2, gcd, lcm, limit } from '../numerics/numeric';
|
|
3
3
|
import { gamma, gammaln, erf, erfc, erfInv, beta, digamma, trigamma, polygamma, zeta, lambertW, besselJ, besselY, besselI, besselK, airyAi, airyBi, fresnelS, fresnelC, sinc } from '../numerics/special-functions';
|
|
4
4
|
import { choose } from '../boxed-expression/expand';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.59.0 */
|
|
2
2
|
import type { MathJsonSymbol } from '../math-json/types';
|
|
3
3
|
export declare function ask(ce: IComputeEngine, pattern: Expression): BoxedSubstitution[];
|
|
4
4
|
export declare function verify(ce: IComputeEngine, query: Expression): boolean | undefined;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.59.0 */
|
|
2
2
|
import { BoxedType } from '../common/type/boxed-type';
|
|
3
3
|
import type { MathJsonSymbol } from '../math-json/types';
|
|
4
4
|
import type { ValueDefinition, OperatorDefinition, AssignValue, Expression, BoxedDefinition, SymbolDefinition, IComputeEngine, Scope } from './global-types';
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.59.0 */
|
|
2
2
|
export declare function resolveBootstrapLibraries(libraries?: readonly (string | LibraryDefinition)[]): LibraryDefinition[];
|
|
3
3
|
export declare function loadLibraryDefinitions(engine: ComputeEngine, libraries: readonly LibraryDefinition[]): void;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.59.0 */
|
|
2
2
|
private _timeLimit;
|
|
3
3
|
private _iterationLimit;
|
|
4
4
|
private _recursionLimit;
|
|
5
|
+
private _maxCollectionSize;
|
|
5
6
|
private _deadline;
|
|
6
7
|
private _isVerifying;
|
|
7
8
|
get timeLimit(): number;
|
|
@@ -10,6 +11,8 @@
|
|
|
10
11
|
set iterationLimit(value: number);
|
|
11
12
|
get recursionLimit(): number;
|
|
12
13
|
set recursionLimit(value: number);
|
|
14
|
+
get maxCollectionSize(): number;
|
|
15
|
+
set maxCollectionSize(value: number);
|
|
13
16
|
get deadline(): number | undefined;
|
|
14
17
|
set deadline(value: number | undefined);
|
|
15
18
|
get timeRemaining(): number;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.59.0 */
|
|
2
2
|
export declare function pushScope(ce: IComputeEngine, scope?: Scope, name?: string): void;
|
|
3
3
|
export declare function popScope(ce: IComputeEngine): void;
|
|
4
4
|
export declare function pushEvalContext(ce: IComputeEngine, scope: Scope, name?: string): void;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.59.0 */
|
|
2
2
|
export declare function declareSequence(ce: IComputeEngine, name: string, def: SequenceDefinition): IComputeEngine;
|
|
3
3
|
export declare function getSequenceStatus(ce: IComputeEngine, name: string): SequenceStatus;
|
|
4
4
|
export declare function getSequence(ce: IComputeEngine, name: string): SequenceInfo | undefined;
|
|
@@ -1,6 +1,14 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.59.0 */
|
|
2
2
|
/**
|
|
3
|
-
* Internal holder for
|
|
3
|
+
* Internal holder for a rule array and its cache-staleness marker.
|
|
4
|
+
*
|
|
5
|
+
* Despite its name, this class is rule-agnostic and backs all three
|
|
6
|
+
* engine rule stores: `ce.simplificationRules`, `ce.solveRules` and
|
|
7
|
+
* `ce.harmonizationRules`.
|
|
8
|
+
*
|
|
9
|
+
* Note: mutation detection is length-based, so a same-length in-place
|
|
10
|
+
* element replacement is not detected. Use the property setter (full
|
|
11
|
+
* replacement) for that.
|
|
4
12
|
*
|
|
5
13
|
* @internal
|
|
6
14
|
*/
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/* 0.59.0 */
|
|
2
|
+
import type { FungrimLoadOptions, FungrimLoadReport, FungrimRuleData } from './types';
|
|
3
|
+
/** The compiled artifact (the whole slice, bundled as JSON). */
|
|
4
|
+
export declare const FUNGRIM_CORE: FungrimRuleData;
|
|
5
|
+
/**
|
|
6
|
+
* Load the compiled Fungrim identities into a Compute Engine instance.
|
|
7
|
+
*
|
|
8
|
+
* Synchronous and idempotent per engine: a second call with an overlapping
|
|
9
|
+
* selection skips the already-loaded rule ids. Shell declarations go into
|
|
10
|
+
* the **current** scope — call `loadIdentities` before declaring user
|
|
11
|
+
* symbols that could shadow shell heads.
|
|
12
|
+
*/
|
|
13
|
+
export declare function loadIdentities(ce: IComputeEngine, options?: FungrimLoadOptions): FungrimLoadReport;
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/* 0.59.0 */
|
|
2
|
+
import type { BoxedSubstitution } from '../types-serialization';
|
|
3
|
+
/** Raw MathJSON — the artifact is plain JSON. */
|
|
4
|
+
export type FungrimMathJson = unknown;
|
|
5
|
+
/**
|
|
6
|
+
* A declarative guard specification, compiled offline from a corpus entry's
|
|
7
|
+
* assumptions (FUNGRIM-PLAN-5-LOADER.md §2.2). The runtime loader turns each
|
|
8
|
+
* spec into a tri-valued condition closure; every predicate must return a
|
|
9
|
+
* definitive positive for the rule to fire (fail-closed).
|
|
10
|
+
*/
|
|
11
|
+
export type GuardSpec = {
|
|
12
|
+
k: 'type';
|
|
13
|
+
wc: string;
|
|
14
|
+
t: 'integer' | 'real' | 'rational' | 'complex';
|
|
15
|
+
} | {
|
|
16
|
+
k: 'cmp';
|
|
17
|
+
wc: string;
|
|
18
|
+
op: 'gt' | 'ge' | 'lt' | 'le';
|
|
19
|
+
bound: FungrimMathJson;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Phase 3: comparison over a part extractor of the substituted value —
|
|
23
|
+
* `Greater(Re(z), 0)`, `Less(Abs(q), 1)`, `Element(Im(z), Interval(a,b))`.
|
|
24
|
+
* Literal substitutions fold numerically; symbol substitutions consult the
|
|
25
|
+
* Track-3 part-bound assumption facts.
|
|
26
|
+
*/
|
|
27
|
+
| {
|
|
28
|
+
k: 'part-cmp';
|
|
29
|
+
wc: string;
|
|
30
|
+
part: 're' | 'im' | 'abs' | 'arg';
|
|
31
|
+
op: 'gt' | 'ge' | 'lt' | 'le';
|
|
32
|
+
bound: FungrimMathJson;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Phase 3: membership in an inert or compound set (`HH`, explicit
|
|
36
|
+
* `Set(…)`, `Union(…)`). Fires only on a literal `True` from the Element
|
|
37
|
+
* evaluation — for inert shells like `HH` (no `contains` handler) that is
|
|
38
|
+
* the Track-3 stored-membership exact-match path
|
|
39
|
+
* (`assume(Element(tau, HH))`); literals can never discharge those.
|
|
40
|
+
*/
|
|
41
|
+
| {
|
|
42
|
+
k: 'member';
|
|
43
|
+
wc: string;
|
|
44
|
+
set: FungrimMathJson;
|
|
45
|
+
} | {
|
|
46
|
+
k: 'ne';
|
|
47
|
+
lhs: FungrimMathJson;
|
|
48
|
+
rhs: FungrimMathJson;
|
|
49
|
+
} | {
|
|
50
|
+
k: 'eval';
|
|
51
|
+
pred: FungrimMathJson;
|
|
52
|
+
};
|
|
53
|
+
/** Corpus entry class of a compiled rule. */
|
|
54
|
+
export type FungrimRuleClass = 'specific-value' | 'identity';
|
|
55
|
+
/** Which engine rule store a compiled rule is routed to. */
|
|
56
|
+
export type FungrimRuleTarget = 'simplify' | 'solve' | 'harmonization';
|
|
57
|
+
/**
|
|
58
|
+
* One compiled rule record from the artifact. `match`/`replace` are stored
|
|
59
|
+
* in CANONICAL-form MathJSON: the loader must box them canonically (in a
|
|
60
|
+
* scope where the wildcards carry their guard-implied types) before handing
|
|
61
|
+
* them to the engine.
|
|
62
|
+
*/
|
|
63
|
+
export type CompiledFungrimRule = {
|
|
64
|
+
/** `'fungrim:<entry-id>'` — surfaces in `simplify()` steps' `because`. */
|
|
65
|
+
id: string;
|
|
66
|
+
match: FungrimMathJson;
|
|
67
|
+
replace: FungrimMathJson;
|
|
68
|
+
guards: GuardSpec[];
|
|
69
|
+
purpose: RulePurpose;
|
|
70
|
+
target: FungrimRuleTarget;
|
|
71
|
+
class: FungrimRuleClass;
|
|
72
|
+
/** Heads referenced by the rule (for shell pruning and diagnostics). */
|
|
73
|
+
heads: string[];
|
|
74
|
+
/** Corpus topics (for load-time filtering). */
|
|
75
|
+
topics: string[];
|
|
76
|
+
};
|
|
77
|
+
/** A pruned shell declaration: a head referenced by the compiled rules that
|
|
78
|
+
* is not a Compute Engine built-in. */
|
|
79
|
+
export type FungrimShellDeclaration = {
|
|
80
|
+
signature: string;
|
|
81
|
+
description?: string;
|
|
82
|
+
arity?: number | number[];
|
|
83
|
+
};
|
|
84
|
+
/** Provenance and compile-time statistics baked into the artifact. */
|
|
85
|
+
export type FungrimManifest = {
|
|
86
|
+
schemaVersion: number;
|
|
87
|
+
generator: string;
|
|
88
|
+
upstream: {
|
|
89
|
+
name: string;
|
|
90
|
+
snapshotSha256: string | null;
|
|
91
|
+
translator: string | null;
|
|
92
|
+
};
|
|
93
|
+
slice: {
|
|
94
|
+
classes: string[];
|
|
95
|
+
guardLevels: string[];
|
|
96
|
+
entries: number;
|
|
97
|
+
};
|
|
98
|
+
counts: {
|
|
99
|
+
rules: number;
|
|
100
|
+
byPurpose: Record<string, number>;
|
|
101
|
+
byClass: Record<string, number>;
|
|
102
|
+
byTarget: Record<string, number>;
|
|
103
|
+
};
|
|
104
|
+
/** Offline skip counts by reason (guard-uncompilable, compat-signature,
|
|
105
|
+
* wildcard-loss, no-fire, duplicate-undirected, lhs-not-value-form, …). */
|
|
106
|
+
ledger: Record<string, number>;
|
|
107
|
+
};
|
|
108
|
+
/** The shape of the compiled artifact (`fungrim-core-data.json`). */
|
|
109
|
+
export type FungrimRuleData = {
|
|
110
|
+
manifest: FungrimManifest;
|
|
111
|
+
declarations: Record<string, FungrimShellDeclaration>;
|
|
112
|
+
rules: CompiledFungrimRule[];
|
|
113
|
+
};
|
|
114
|
+
/**
|
|
115
|
+
* Debug hook invoked when a rule's condition fails specifically because a
|
|
116
|
+
* guard predicate returned `undefined` (unknown) — as opposed to a
|
|
117
|
+
* definitive negative. Converts "the rule silently didn't fire" into an
|
|
118
|
+
* actionable trace (FUNGRIM-PLAN-5-LOADER.md §2.8).
|
|
119
|
+
*/
|
|
120
|
+
export type FungrimGuardUndecidedHandler = (ruleId: string, wildcards: BoxedSubstitution) => void;
|
|
121
|
+
/** Options for `loadIdentities()` (FUNGRIM-PLAN-5-LOADER.md §2.1). */
|
|
122
|
+
export type FungrimLoadOptions = {
|
|
123
|
+
/** Only load rules tagged with at least one of these corpus topics. */
|
|
124
|
+
topics?: ReadonlyArray<string>;
|
|
125
|
+
/** Only load rules of these classes. */
|
|
126
|
+
classes?: ReadonlyArray<FungrimRuleClass>;
|
|
127
|
+
/** Only load rules with these purposes. */
|
|
128
|
+
purposes?: ReadonlyArray<RulePurpose>;
|
|
129
|
+
/** When `true`, rules targeting the solve/harmonization stores are routed
|
|
130
|
+
* to `ce.solveRules`/`ce.harmonizationRules`. **Default**: `false`
|
|
131
|
+
* (such rules are skipped with reason `'solve-disabled'`). */
|
|
132
|
+
solve?: boolean;
|
|
133
|
+
/** Debug hook for guard predicates that return `undefined`. */
|
|
134
|
+
onGuardUndecided?: FungrimGuardUndecidedHandler;
|
|
135
|
+
/** Alternate compiled artifact (testing, future per-family data modules).
|
|
136
|
+
* **Default**: the bundled `FUNGRIM_CORE` artifact. */
|
|
137
|
+
data?: FungrimRuleData;
|
|
138
|
+
};
|
|
139
|
+
/** The report returned by `loadIdentities()` (FUNGRIM-PLAN-5-LOADER.md §2.8). */
|
|
140
|
+
export type FungrimLoadReport = {
|
|
141
|
+
/** Number of rules registered by this call. */
|
|
142
|
+
loaded: number;
|
|
143
|
+
byTarget: Record<FungrimRuleTarget, number>;
|
|
144
|
+
byPurpose: Record<RulePurpose, number>;
|
|
145
|
+
/** Shell heads newly declared in the current scope by this call. */
|
|
146
|
+
declared: string[];
|
|
147
|
+
/** Runtime skips: selection filters, already-loaded ids, boxing failures
|
|
148
|
+
* in the user's environment. */
|
|
149
|
+
skipped: {
|
|
150
|
+
id: string;
|
|
151
|
+
reason: string;
|
|
152
|
+
}[];
|
|
153
|
+
/** Baked-in offline skip counts by reason, from the artifact manifest —
|
|
154
|
+
* what the *corpus* contains vs. what this artifact can do. */
|
|
155
|
+
compileLedger: Record<string, number>;
|
|
156
|
+
};
|
|
157
|
+
export type IdentitiesLoadOptions = FungrimLoadOptions;
|
|
158
|
+
export type IdentitiesLoadReport = FungrimLoadReport;
|
|
159
|
+
export type IdentitiesRuleData = FungrimRuleData;
|
|
160
|
+
export type IdentitiesGuardUndecidedHandler = FungrimGuardUndecidedHandler;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.59.0 */
|
|
2
2
|
export type * from './types-serialization';
|
|
3
3
|
export type { ValueDefinition, SequenceDefinition, SequenceStatus, SequenceInfo, OEISSequenceInfo, OEISOptions, OperatorDefinition, BaseDefinition, SimplifyOptions, SymbolDefinition, SymbolDefinitions, LibraryDefinition, AngularUnit, Sign, BaseCollectionHandlers, IndexedCollectionHandlers, CollectionHandlers, TaggedValueDefinition, TaggedOperatorDefinition, BoxedDefinition, BoxedBaseDefinition, BoxedValueDefinition, OperatorDefinitionFlags, BoxedOperatorDefinition, } from './types-definitions';
|
|
4
4
|
export type * from './types-evaluation';
|