@cortex-js/compute-engine 0.56.0 → 0.57.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/compile.esm.js +450 -42
- package/dist/compile.min.esm.js +57 -57
- package/dist/compile.min.umd.cjs +58 -58
- package/dist/compile.umd.cjs +450 -42
- package/dist/compute-engine.esm.js +677 -49
- package/dist/compute-engine.min.esm.js +62 -62
- package/dist/compute-engine.min.umd.cjs +62 -62
- package/dist/compute-engine.umd.cjs +677 -49
- package/dist/core.esm.js +676 -48
- package/dist/core.min.esm.js +61 -61
- package/dist/core.min.umd.cjs +61 -61
- package/dist/core.umd.cjs +676 -48
- package/dist/interval.esm.js +228 -16
- package/dist/interval.min.esm.js +6 -6
- package/dist/interval.min.umd.cjs +6 -6
- package/dist/interval.umd.cjs +228 -16
- package/dist/latex-syntax.esm.js +269 -16
- package/dist/latex-syntax.min.esm.js +6 -6
- package/dist/latex-syntax.min.umd.cjs +6 -6
- package/dist/latex-syntax.umd.cjs +269 -16
- package/dist/math-json.esm.js +2 -2
- package/dist/math-json.min.esm.js +2 -2
- package/dist/math-json.min.umd.cjs +2 -2
- package/dist/math-json.umd.cjs +2 -2
- package/dist/numerics.esm.js +2 -2
- package/dist/numerics.min.esm.js +2 -2
- package/dist/numerics.min.umd.cjs +2 -2
- package/dist/numerics.umd.cjs +2 -2
- 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 -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 +1 -1
- 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/compile.d.ts +1 -1
- package/dist/types/compute-engine/assume.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/abstract-boxed-expression.d.ts +6 -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 +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 +1 -1
- 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/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 +1 -1
- 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/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 +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 +55 -6
- package/dist/types/compute-engine/compilation/compile-expression.d.ts +1 -1
- package/dist/types/compute-engine/compilation/constant-folding.d.ts +1 -1
- package/dist/types/compute-engine/compilation/glsl-target.d.ts +1 -1
- package/dist/types/compute-engine/compilation/gpu-target.d.ts +1 -1
- package/dist/types/compute-engine/compilation/interval-javascript-target.d.ts +1 -1
- 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 +1 -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 +1 -1
- 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/global-types.d.ts +1 -1
- package/dist/types/compute-engine/index.d.ts +3 -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 +1 -1
- package/dist/types/compute-engine/interval/index.d.ts +1 -1
- 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 +1 -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 +1 -1
- 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 -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 +40 -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 +5 -3
- 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 +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/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 +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/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 +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/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 +1 -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/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 +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 +1 -1
- package/dist/types/compute-engine/types-definitions.d.ts +1 -1
- package/dist/types/compute-engine/types-engine.d.ts +18 -1
- package/dist/types/compute-engine/types-evaluation.d.ts +1 -1
- package/dist/types/compute-engine/types-expression.d.ts +1 -1
- package/dist/types/compute-engine/types-kernel-evaluation.d.ts +1 -1
- package/dist/types/compute-engine/types-kernel-serialization.d.ts +1 -1
- 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/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 +1 -1
package/dist/latex-syntax.esm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** Compute Engine 0.
|
|
1
|
+
/** Compute Engine 0.57.0 */
|
|
2
2
|
|
|
3
3
|
// src/math-json/utils.ts
|
|
4
4
|
var MISSING = ["Error", "'missing'"];
|
|
@@ -3681,6 +3681,64 @@ function parseQuantifier(kind) {
|
|
|
3681
3681
|
}
|
|
3682
3682
|
|
|
3683
3683
|
// src/compute-engine/latex-syntax/dictionary/definitions-core.ts
|
|
3684
|
+
var COMPONENT_ACCESS_HEADS = {
|
|
3685
|
+
x: "First",
|
|
3686
|
+
y: "Second",
|
|
3687
|
+
z: "Third",
|
|
3688
|
+
real: "Real",
|
|
3689
|
+
re: "Real",
|
|
3690
|
+
imag: "Imaginary",
|
|
3691
|
+
im: "Imaginary",
|
|
3692
|
+
count: "Length",
|
|
3693
|
+
total: "Sum",
|
|
3694
|
+
max: "Max",
|
|
3695
|
+
min: "Min"
|
|
3696
|
+
};
|
|
3697
|
+
function memberHead(name) {
|
|
3698
|
+
return COMPONENT_ACCESS_HEADS[name] ?? null;
|
|
3699
|
+
}
|
|
3700
|
+
function parseComponentAccess(parser, lhs) {
|
|
3701
|
+
parser.skipVisualSpace();
|
|
3702
|
+
if (parser.match("\\operatorname")) {
|
|
3703
|
+
const name = parser.parseStringGroup();
|
|
3704
|
+
if (name === null) return null;
|
|
3705
|
+
const head = memberHead(name.trim());
|
|
3706
|
+
if (head === null) return null;
|
|
3707
|
+
return [head, lhs];
|
|
3708
|
+
}
|
|
3709
|
+
const tok = parser.peek;
|
|
3710
|
+
if (typeof tok === "string" && tok.startsWith("\\")) {
|
|
3711
|
+
const bare = tok.slice(1);
|
|
3712
|
+
const head = memberHead(bare);
|
|
3713
|
+
if (head !== null) {
|
|
3714
|
+
parser.nextToken();
|
|
3715
|
+
return [head, lhs];
|
|
3716
|
+
}
|
|
3717
|
+
return null;
|
|
3718
|
+
}
|
|
3719
|
+
if (typeof tok === "string" && /^[a-zA-Z]$/.test(tok)) {
|
|
3720
|
+
const head = memberHead(tok);
|
|
3721
|
+
if (head === null) return null;
|
|
3722
|
+
parser.nextToken();
|
|
3723
|
+
return [head, lhs];
|
|
3724
|
+
}
|
|
3725
|
+
return null;
|
|
3726
|
+
}
|
|
3727
|
+
function parseWhenRestriction(parser, lhs, close) {
|
|
3728
|
+
parser.addBoundary(close);
|
|
3729
|
+
parser.skipVisualSpace();
|
|
3730
|
+
const cond = parser.parseExpression({ minPrec: 0 });
|
|
3731
|
+
if (cond === null) {
|
|
3732
|
+
parser.removeBoundary();
|
|
3733
|
+
return null;
|
|
3734
|
+
}
|
|
3735
|
+
parser.skipVisualSpace();
|
|
3736
|
+
if (!parser.matchBoundary()) {
|
|
3737
|
+
parser.removeBoundary();
|
|
3738
|
+
return null;
|
|
3739
|
+
}
|
|
3740
|
+
return ["When", lhs, cond];
|
|
3741
|
+
}
|
|
3684
3742
|
function parseSequence(parser, terminator, lhs, prec, sep) {
|
|
3685
3743
|
if (terminator && terminator.minPrec >= prec) return null;
|
|
3686
3744
|
const result = lhs ? [lhs] : ["Nothing"];
|
|
@@ -4152,6 +4210,15 @@ var DEFINITIONS_CORE = [
|
|
|
4152
4210
|
}
|
|
4153
4211
|
},
|
|
4154
4212
|
{ name: "LatexTokens", serialize: serializeLatexTokens },
|
|
4213
|
+
// Component-access postfix: expr.member (C3)
|
|
4214
|
+
// The '.' trigger is consumed before the parse function is called.
|
|
4215
|
+
// Precedence 850 > 810 (At/indexing) so .x chains tightly.
|
|
4216
|
+
{
|
|
4217
|
+
kind: "postfix",
|
|
4218
|
+
precedence: 850,
|
|
4219
|
+
latexTrigger: ["."],
|
|
4220
|
+
parse: parseComponentAccess
|
|
4221
|
+
},
|
|
4155
4222
|
{
|
|
4156
4223
|
name: "At",
|
|
4157
4224
|
kind: "postfix",
|
|
@@ -4172,6 +4239,29 @@ var DEFINITIONS_CORE = [
|
|
|
4172
4239
|
latexTrigger: ["\\left", "\\lbrack"],
|
|
4173
4240
|
parse: parseAt("\\right", "\\rbrack")
|
|
4174
4241
|
},
|
|
4242
|
+
// When-restriction: `expr\left\{cond\right\}` → `When(expr, cond)` (D3)
|
|
4243
|
+
{
|
|
4244
|
+
name: "When",
|
|
4245
|
+
kind: "postfix",
|
|
4246
|
+
precedence: 800,
|
|
4247
|
+
latexTrigger: ["\\left", "\\{"],
|
|
4248
|
+
parse: (parser, lhs) => parseWhenRestriction(parser, lhs, ["\\right", "\\}"]),
|
|
4249
|
+
serialize: (serializer, expr) => {
|
|
4250
|
+
const e = operand(expr, 1);
|
|
4251
|
+
const cond = operand(expr, 2);
|
|
4252
|
+
if (!e || !cond) return "";
|
|
4253
|
+
const clauses = operator(cond) === "And" ? operands(cond) ?? [] : [cond];
|
|
4254
|
+
const inner = clauses.map((c) => `\\left\\{${serializer.serialize(c)}\\right\\}`).join("");
|
|
4255
|
+
return `${serializer.serialize(e)}${inner}`;
|
|
4256
|
+
}
|
|
4257
|
+
},
|
|
4258
|
+
// When-restriction: bare `expr\{cond\}` → `When(expr, cond)`
|
|
4259
|
+
{
|
|
4260
|
+
kind: "postfix",
|
|
4261
|
+
precedence: 800,
|
|
4262
|
+
latexTrigger: ["\\{"],
|
|
4263
|
+
parse: (parser, lhs) => parseWhenRestriction(parser, lhs, ["\\}"])
|
|
4264
|
+
},
|
|
4175
4265
|
{
|
|
4176
4266
|
kind: "postfix",
|
|
4177
4267
|
latexTrigger: ["_"],
|
|
@@ -4254,6 +4344,29 @@ var DEFINITIONS_CORE = [
|
|
|
4254
4344
|
return "";
|
|
4255
4345
|
}
|
|
4256
4346
|
},
|
|
4347
|
+
// Additional triggers for Range: `...`, `\ldots`, and `\dots` are
|
|
4348
|
+
// equivalent to `..` when used as infix operators (e.g. `[1...9]`).
|
|
4349
|
+
// No `name` field here — names must be unique per the dictionary rules;
|
|
4350
|
+
// the first Range entry owns the name. When there is no LHS the symbol
|
|
4351
|
+
// entries near the top of the file still fire (ContinuationPlaceholder).
|
|
4352
|
+
{
|
|
4353
|
+
latexTrigger: [".", ".", "."],
|
|
4354
|
+
kind: "infix",
|
|
4355
|
+
precedence: 800,
|
|
4356
|
+
parse: parseRange
|
|
4357
|
+
},
|
|
4358
|
+
{
|
|
4359
|
+
latexTrigger: ["\\ldots"],
|
|
4360
|
+
kind: "infix",
|
|
4361
|
+
precedence: 800,
|
|
4362
|
+
parse: parseRange
|
|
4363
|
+
},
|
|
4364
|
+
{
|
|
4365
|
+
latexTrigger: ["\\dots"],
|
|
4366
|
+
kind: "infix",
|
|
4367
|
+
precedence: 800,
|
|
4368
|
+
parse: parseRange
|
|
4369
|
+
},
|
|
4257
4370
|
{
|
|
4258
4371
|
latexTrigger: [";"],
|
|
4259
4372
|
kind: "infix",
|
|
@@ -4438,13 +4551,24 @@ var DEFINITIONS_CORE = [
|
|
|
4438
4551
|
const args = operands(expr);
|
|
4439
4552
|
if (!args || args.length < 2) return "";
|
|
4440
4553
|
const body = args[0];
|
|
4441
|
-
const
|
|
4442
|
-
|
|
4443
|
-
|
|
4444
|
-
|
|
4445
|
-
|
|
4446
|
-
|
|
4447
|
-
|
|
4554
|
+
const elements = args.slice(1);
|
|
4555
|
+
const allElements = elements.every((e) => operator(e) === "Element");
|
|
4556
|
+
if (!allElements) {
|
|
4557
|
+
return joinLatex([
|
|
4558
|
+
"\\operatorname{Loop}(",
|
|
4559
|
+
serializer.serialize(body),
|
|
4560
|
+
", ",
|
|
4561
|
+
serializer.serialize(elements[0]),
|
|
4562
|
+
")"
|
|
4563
|
+
]);
|
|
4564
|
+
}
|
|
4565
|
+
if (elements.length === 1) {
|
|
4566
|
+
const elem = elements[0];
|
|
4567
|
+
const index = operand(elem, 1);
|
|
4568
|
+
const coll = operand(elem, 2);
|
|
4569
|
+
if (operator(coll) === "Range") {
|
|
4570
|
+
const lo = operand(coll, 1);
|
|
4571
|
+
const hi = operand(coll, 2);
|
|
4448
4572
|
return joinLatex([
|
|
4449
4573
|
"\\text{for }",
|
|
4450
4574
|
serializer.serialize(index),
|
|
@@ -4456,13 +4580,27 @@ var DEFINITIONS_CORE = [
|
|
|
4456
4580
|
serializer.serialize(body)
|
|
4457
4581
|
]);
|
|
4458
4582
|
}
|
|
4583
|
+
return joinLatex([
|
|
4584
|
+
serializer.serialize(body),
|
|
4585
|
+
" \\operatorname{for} ",
|
|
4586
|
+
serializer.serialize(index),
|
|
4587
|
+
" = ",
|
|
4588
|
+
serializer.serialize(coll)
|
|
4589
|
+
]);
|
|
4459
4590
|
}
|
|
4591
|
+
const bindings = elements.map((elem) => {
|
|
4592
|
+
const name = operand(elem, 1);
|
|
4593
|
+
const coll = operand(elem, 2);
|
|
4594
|
+
return joinLatex([
|
|
4595
|
+
serializer.serialize(name),
|
|
4596
|
+
" = ",
|
|
4597
|
+
serializer.serialize(coll)
|
|
4598
|
+
]);
|
|
4599
|
+
}).join(", ");
|
|
4460
4600
|
return joinLatex([
|
|
4461
|
-
"\\operatorname{Loop}(",
|
|
4462
4601
|
serializer.serialize(body),
|
|
4463
|
-
"
|
|
4464
|
-
|
|
4465
|
-
")"
|
|
4602
|
+
" \\operatorname{for} ",
|
|
4603
|
+
bindings
|
|
4466
4604
|
]);
|
|
4467
4605
|
}
|
|
4468
4606
|
},
|
|
@@ -4495,6 +4633,18 @@ var DEFINITIONS_CORE = [
|
|
|
4495
4633
|
precedence: 245,
|
|
4496
4634
|
parse: (parser, until) => parseForExpression(parser, until)
|
|
4497
4635
|
},
|
|
4636
|
+
// \operatorname{for} as postfix infix (list comprehension):
|
|
4637
|
+
// `body \operatorname{for} x = L_1, y = L_2`
|
|
4638
|
+
// Precedence 19 — just below comma (20) so the body is allowed to use
|
|
4639
|
+
// any operator (including comma sequencing) up to the keyword, and the
|
|
4640
|
+
// bindings can be comma-separated below us.
|
|
4641
|
+
{
|
|
4642
|
+
symbolTrigger: "for",
|
|
4643
|
+
kind: "infix",
|
|
4644
|
+
associativity: "none",
|
|
4645
|
+
precedence: 19,
|
|
4646
|
+
parse: (parser, lhs, until) => parseForComprehension(parser, lhs, until)
|
|
4647
|
+
},
|
|
4498
4648
|
// \operatorname{break}
|
|
4499
4649
|
{
|
|
4500
4650
|
symbolTrigger: "break",
|
|
@@ -4699,7 +4849,10 @@ var DEFINITIONS_CORE = [
|
|
|
4699
4849
|
if (!sym || !parser.getSymbolType(sym).matches("function")) return null;
|
|
4700
4850
|
parser.addBoundary([")"]);
|
|
4701
4851
|
const expr = parser.parseExpression(until);
|
|
4702
|
-
if (!parser.matchBoundary())
|
|
4852
|
+
if (!parser.matchBoundary()) {
|
|
4853
|
+
parser.removeBoundary();
|
|
4854
|
+
return null;
|
|
4855
|
+
}
|
|
4703
4856
|
if (!parser.match("<}>")) return null;
|
|
4704
4857
|
return ["Derivative", lhs, expr];
|
|
4705
4858
|
}
|
|
@@ -5140,7 +5293,12 @@ function parseBrackets(parser, body) {
|
|
|
5140
5293
|
if (isEmptySequence(body)) return ["List"];
|
|
5141
5294
|
const h = operator(body);
|
|
5142
5295
|
if (h === "Range" || h === "Linspace") return body;
|
|
5143
|
-
if (h === "Sequence")
|
|
5296
|
+
if (h === "Sequence") {
|
|
5297
|
+
const elems = operands(body);
|
|
5298
|
+
const inferred = tryInferRangeFromElements(elems, parser);
|
|
5299
|
+
if (inferred) return inferred;
|
|
5300
|
+
return ["List", ...elems];
|
|
5301
|
+
}
|
|
5144
5302
|
if (h === "Delimiter") {
|
|
5145
5303
|
const delim = stringValue(operand(body, 2)) ?? "...";
|
|
5146
5304
|
if (delim === ";" || delim === ".;.") {
|
|
@@ -5153,12 +5311,37 @@ function parseBrackets(parser, body) {
|
|
|
5153
5311
|
}
|
|
5154
5312
|
if (delim === "," || delim === ".,.") {
|
|
5155
5313
|
body = operand(body, 1);
|
|
5156
|
-
if (operator(body) === "Sequence")
|
|
5314
|
+
if (operator(body) === "Sequence") {
|
|
5315
|
+
const elems = operands(body);
|
|
5316
|
+
const inferred = tryInferRangeFromElements(elems, parser);
|
|
5317
|
+
if (inferred) return inferred;
|
|
5318
|
+
return ["List", ...elems];
|
|
5319
|
+
}
|
|
5157
5320
|
return ["List", body ?? "Nothing"];
|
|
5158
5321
|
}
|
|
5159
5322
|
}
|
|
5160
5323
|
return ["List", body];
|
|
5161
5324
|
}
|
|
5325
|
+
function tryInferRangeFromElements(elems, parser) {
|
|
5326
|
+
if (elems.length < 4) return null;
|
|
5327
|
+
const penultimate = elems[elems.length - 2];
|
|
5328
|
+
if (symbol(penultimate) !== "ContinuationPlaceholder") return null;
|
|
5329
|
+
const samples = elems.slice(0, -2);
|
|
5330
|
+
const endExpr = elems[elems.length - 1];
|
|
5331
|
+
if (samples.length < 2) return null;
|
|
5332
|
+
const sampleNums = samples.map(machineValue);
|
|
5333
|
+
if (sampleNums.some((n) => n === null)) return null;
|
|
5334
|
+
const nums = sampleNums;
|
|
5335
|
+
const step = nums[nums.length - 1] - nums[nums.length - 2];
|
|
5336
|
+
const tol = parser.options.tolerance;
|
|
5337
|
+
if (Math.abs(step) < tol)
|
|
5338
|
+
return parser.error("degenerate-range-step", parser.index);
|
|
5339
|
+
for (let i = 1; i < nums.length; i++) {
|
|
5340
|
+
if (Math.abs(nums[i] - nums[i - 1] - step) > tol)
|
|
5341
|
+
return parser.error("inconsistent-range-samples", parser.index);
|
|
5342
|
+
}
|
|
5343
|
+
return ["Range", nums[0], endExpr, step];
|
|
5344
|
+
}
|
|
5162
5345
|
function serializeList(serializer, expr) {
|
|
5163
5346
|
if (nops(expr) > 1 && operands(expr).every((x) => {
|
|
5164
5347
|
const op = operator(x);
|
|
@@ -5410,6 +5593,35 @@ function parseForExpression(parser, until) {
|
|
|
5410
5593
|
["Element", index, ["Range", lower, upper]]
|
|
5411
5594
|
];
|
|
5412
5595
|
}
|
|
5596
|
+
function parseForComprehension(parser, lhs, until) {
|
|
5597
|
+
const bindingTerminator = {
|
|
5598
|
+
minPrec: 21,
|
|
5599
|
+
// Above comma (20) and ; (19), so `x = L_1` is captured whole
|
|
5600
|
+
condition: (p) => {
|
|
5601
|
+
if (until?.condition?.(p)) return true;
|
|
5602
|
+
const saved = p.index;
|
|
5603
|
+
p.skipVisualSpace();
|
|
5604
|
+
const isComma = p.peek === ",";
|
|
5605
|
+
p.index = saved;
|
|
5606
|
+
return isComma;
|
|
5607
|
+
}
|
|
5608
|
+
};
|
|
5609
|
+
const elements = [];
|
|
5610
|
+
do {
|
|
5611
|
+
parser.skipVisualSpace();
|
|
5612
|
+
const binding = parser.parseExpression(bindingTerminator);
|
|
5613
|
+
if (binding === null) break;
|
|
5614
|
+
const op = operator(binding);
|
|
5615
|
+
if (op !== "Equal" && op !== "Assign") return null;
|
|
5616
|
+
const name = operand(binding, 1);
|
|
5617
|
+
const list = operand(binding, 2);
|
|
5618
|
+
if (!name || !list) return null;
|
|
5619
|
+
elements.push(["Element", name, list]);
|
|
5620
|
+
parser.skipVisualSpace();
|
|
5621
|
+
} while (parser.match(","));
|
|
5622
|
+
if (elements.length === 0) return null;
|
|
5623
|
+
return ["Loop", lhs, ...elements];
|
|
5624
|
+
}
|
|
5413
5625
|
function parseWhereExpression(parser, lhs, until) {
|
|
5414
5626
|
const bindingTerminator = {
|
|
5415
5627
|
minPrec: 21,
|
|
@@ -14466,6 +14678,19 @@ var _Parser = class __Parser {
|
|
|
14466
14678
|
} while (postfix !== null);
|
|
14467
14679
|
}
|
|
14468
14680
|
if (result !== null) result = this.parseSupsub(result);
|
|
14681
|
+
if (result !== null) {
|
|
14682
|
+
let postfix = null;
|
|
14683
|
+
let index = this.index;
|
|
14684
|
+
do {
|
|
14685
|
+
postfix = this.parsePostfixOperator(result, until);
|
|
14686
|
+
result = postfix ?? result;
|
|
14687
|
+
if (this.index === index && postfix !== null) {
|
|
14688
|
+
console.assert(this.index !== index, "No token consumed");
|
|
14689
|
+
break;
|
|
14690
|
+
}
|
|
14691
|
+
index = this.index;
|
|
14692
|
+
} while (postfix !== null);
|
|
14693
|
+
}
|
|
14469
14694
|
if (result === null) {
|
|
14470
14695
|
result = this.options.parseUnexpectedToken?.(null, this) ?? null;
|
|
14471
14696
|
if (result === null && this.peek.startsWith("\\")) {
|
|
@@ -14974,6 +15199,28 @@ function toDecimalNumber(wholePart, fractionalPart, exp) {
|
|
|
14974
15199
|
}
|
|
14975
15200
|
|
|
14976
15201
|
// src/compute-engine/latex-syntax/serializer.ts
|
|
15202
|
+
var DOT_NOTATION_MAP = {
|
|
15203
|
+
First: ".x",
|
|
15204
|
+
Second: ".y",
|
|
15205
|
+
Third: ".z",
|
|
15206
|
+
Real: ".\\operatorname{real}",
|
|
15207
|
+
Imaginary: ".\\operatorname{imag}",
|
|
15208
|
+
Length: ".\\operatorname{count}",
|
|
15209
|
+
Sum: ".\\operatorname{total}",
|
|
15210
|
+
Max: ".\\max",
|
|
15211
|
+
Min: ".\\min"
|
|
15212
|
+
};
|
|
15213
|
+
function trySerializeDotNotation(serializer, expr) {
|
|
15214
|
+
if (!serializer.options.dotNotation) return null;
|
|
15215
|
+
const ops = operands(expr);
|
|
15216
|
+
if (!ops || ops.length !== 1) return null;
|
|
15217
|
+
const head = operator(expr);
|
|
15218
|
+
if (!head) return null;
|
|
15219
|
+
const suffix = DOT_NOTATION_MAP[head];
|
|
15220
|
+
if (suffix === void 0) return null;
|
|
15221
|
+
const lhs = serializer.wrap(ops[0], 810);
|
|
15222
|
+
return `${lhs}${suffix}`;
|
|
15223
|
+
}
|
|
14977
15224
|
var ACCENT_MODIFIERS = {
|
|
14978
15225
|
deg: (s) => `${s}\\degree`,
|
|
14979
15226
|
prime: (s) => `${s}^{\\prime}`,
|
|
@@ -15017,6 +15264,7 @@ var Serializer5 = class {
|
|
|
15017
15264
|
constructor(dictionary, options) {
|
|
15018
15265
|
this.dictionary = dictionary;
|
|
15019
15266
|
this.options = {
|
|
15267
|
+
dotNotation: false,
|
|
15020
15268
|
dmsFormat: false,
|
|
15021
15269
|
angleNormalization: "none",
|
|
15022
15270
|
...options
|
|
@@ -15115,6 +15363,8 @@ var Serializer5 = class {
|
|
|
15115
15363
|
return def?.serialize?.(this, expr) ?? serializeSymbol(symbol(expr)) ?? "";
|
|
15116
15364
|
}
|
|
15117
15365
|
serializeFunction(expr, def) {
|
|
15366
|
+
const dotResult = trySerializeDotNotation(this, expr);
|
|
15367
|
+
if (dotResult !== null) return dotResult;
|
|
15118
15368
|
if (def?.serialize) return def.serialize(this, expr);
|
|
15119
15369
|
const h = operator(expr);
|
|
15120
15370
|
return serializeSymbol(h, "auto") + this.wrapArguments(expr);
|
|
@@ -15357,6 +15607,8 @@ function defaultParseOptions(opts) {
|
|
|
15357
15607
|
preserveLatex: opts.preserveLatex ?? false,
|
|
15358
15608
|
quantifierScope: opts.quantifierScope ?? "tight",
|
|
15359
15609
|
timeDerivativeVariable: opts.timeDerivativeVariable ?? "t",
|
|
15610
|
+
// Standalone mode has no engine; use the same default as ComputeEngine
|
|
15611
|
+
tolerance: 1e-7,
|
|
15360
15612
|
// Callbacks -- standalone mode has no engine, so these are stubs
|
|
15361
15613
|
getSymbolType: (_id) => BoxedType.unknown,
|
|
15362
15614
|
hasSubscriptEvaluate: (_id) => false,
|
|
@@ -15389,6 +15641,7 @@ function defaultSerializeOptions(opts) {
|
|
|
15389
15641
|
invisiblePlus: "",
|
|
15390
15642
|
multiply: "\\times",
|
|
15391
15643
|
missingSymbol: "\\blacksquare",
|
|
15644
|
+
dotNotation: false,
|
|
15392
15645
|
dmsFormat: false,
|
|
15393
15646
|
angleNormalization: "none",
|
|
15394
15647
|
// Style callbacks -- use same defaults as the engine
|
|
@@ -15457,7 +15710,7 @@ function serialize(expr) {
|
|
|
15457
15710
|
}
|
|
15458
15711
|
|
|
15459
15712
|
// src/latex-syntax.ts
|
|
15460
|
-
var version = "0.
|
|
15713
|
+
var version = "0.57.0";
|
|
15461
15714
|
export {
|
|
15462
15715
|
DEFINITIONS_ALGEBRA as ALGEBRA_DICTIONARY,
|
|
15463
15716
|
DEFINITIONS_ARITHMETIC as ARITHMETIC_DICTIONARY,
|