@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/interval.esm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** Compute Engine 0.
|
|
1
|
+
/** Compute Engine 0.57.0 */
|
|
2
2
|
|
|
3
3
|
// src/compute-engine/interval/util.ts
|
|
4
4
|
function ok(value) {
|
|
@@ -5922,6 +5922,64 @@ function parseQuantifier(kind) {
|
|
|
5922
5922
|
}
|
|
5923
5923
|
|
|
5924
5924
|
// src/compute-engine/latex-syntax/dictionary/definitions-core.ts
|
|
5925
|
+
var COMPONENT_ACCESS_HEADS = {
|
|
5926
|
+
x: "First",
|
|
5927
|
+
y: "Second",
|
|
5928
|
+
z: "Third",
|
|
5929
|
+
real: "Real",
|
|
5930
|
+
re: "Real",
|
|
5931
|
+
imag: "Imaginary",
|
|
5932
|
+
im: "Imaginary",
|
|
5933
|
+
count: "Length",
|
|
5934
|
+
total: "Sum",
|
|
5935
|
+
max: "Max",
|
|
5936
|
+
min: "Min"
|
|
5937
|
+
};
|
|
5938
|
+
function memberHead(name) {
|
|
5939
|
+
return COMPONENT_ACCESS_HEADS[name] ?? null;
|
|
5940
|
+
}
|
|
5941
|
+
function parseComponentAccess(parser, lhs) {
|
|
5942
|
+
parser.skipVisualSpace();
|
|
5943
|
+
if (parser.match("\\operatorname")) {
|
|
5944
|
+
const name = parser.parseStringGroup();
|
|
5945
|
+
if (name === null) return null;
|
|
5946
|
+
const head = memberHead(name.trim());
|
|
5947
|
+
if (head === null) return null;
|
|
5948
|
+
return [head, lhs];
|
|
5949
|
+
}
|
|
5950
|
+
const tok = parser.peek;
|
|
5951
|
+
if (typeof tok === "string" && tok.startsWith("\\")) {
|
|
5952
|
+
const bare = tok.slice(1);
|
|
5953
|
+
const head = memberHead(bare);
|
|
5954
|
+
if (head !== null) {
|
|
5955
|
+
parser.nextToken();
|
|
5956
|
+
return [head, lhs];
|
|
5957
|
+
}
|
|
5958
|
+
return null;
|
|
5959
|
+
}
|
|
5960
|
+
if (typeof tok === "string" && /^[a-zA-Z]$/.test(tok)) {
|
|
5961
|
+
const head = memberHead(tok);
|
|
5962
|
+
if (head === null) return null;
|
|
5963
|
+
parser.nextToken();
|
|
5964
|
+
return [head, lhs];
|
|
5965
|
+
}
|
|
5966
|
+
return null;
|
|
5967
|
+
}
|
|
5968
|
+
function parseWhenRestriction(parser, lhs, close) {
|
|
5969
|
+
parser.addBoundary(close);
|
|
5970
|
+
parser.skipVisualSpace();
|
|
5971
|
+
const cond = parser.parseExpression({ minPrec: 0 });
|
|
5972
|
+
if (cond === null) {
|
|
5973
|
+
parser.removeBoundary();
|
|
5974
|
+
return null;
|
|
5975
|
+
}
|
|
5976
|
+
parser.skipVisualSpace();
|
|
5977
|
+
if (!parser.matchBoundary()) {
|
|
5978
|
+
parser.removeBoundary();
|
|
5979
|
+
return null;
|
|
5980
|
+
}
|
|
5981
|
+
return ["When", lhs, cond];
|
|
5982
|
+
}
|
|
5925
5983
|
function parseSequence(parser, terminator, lhs, prec, sep) {
|
|
5926
5984
|
if (terminator && terminator.minPrec >= prec) return null;
|
|
5927
5985
|
const result = lhs ? [lhs] : ["Nothing"];
|
|
@@ -6393,6 +6451,15 @@ var DEFINITIONS_CORE = [
|
|
|
6393
6451
|
}
|
|
6394
6452
|
},
|
|
6395
6453
|
{ name: "LatexTokens", serialize: serializeLatexTokens },
|
|
6454
|
+
// Component-access postfix: expr.member (C3)
|
|
6455
|
+
// The '.' trigger is consumed before the parse function is called.
|
|
6456
|
+
// Precedence 850 > 810 (At/indexing) so .x chains tightly.
|
|
6457
|
+
{
|
|
6458
|
+
kind: "postfix",
|
|
6459
|
+
precedence: 850,
|
|
6460
|
+
latexTrigger: ["."],
|
|
6461
|
+
parse: parseComponentAccess
|
|
6462
|
+
},
|
|
6396
6463
|
{
|
|
6397
6464
|
name: "At",
|
|
6398
6465
|
kind: "postfix",
|
|
@@ -6413,6 +6480,29 @@ var DEFINITIONS_CORE = [
|
|
|
6413
6480
|
latexTrigger: ["\\left", "\\lbrack"],
|
|
6414
6481
|
parse: parseAt("\\right", "\\rbrack")
|
|
6415
6482
|
},
|
|
6483
|
+
// When-restriction: `expr\left\{cond\right\}` → `When(expr, cond)` (D3)
|
|
6484
|
+
{
|
|
6485
|
+
name: "When",
|
|
6486
|
+
kind: "postfix",
|
|
6487
|
+
precedence: 800,
|
|
6488
|
+
latexTrigger: ["\\left", "\\{"],
|
|
6489
|
+
parse: (parser, lhs) => parseWhenRestriction(parser, lhs, ["\\right", "\\}"]),
|
|
6490
|
+
serialize: (serializer, expr) => {
|
|
6491
|
+
const e = operand(expr, 1);
|
|
6492
|
+
const cond = operand(expr, 2);
|
|
6493
|
+
if (!e || !cond) return "";
|
|
6494
|
+
const clauses = operator(cond) === "And" ? operands(cond) ?? [] : [cond];
|
|
6495
|
+
const inner = clauses.map((c) => `\\left\\{${serializer.serialize(c)}\\right\\}`).join("");
|
|
6496
|
+
return `${serializer.serialize(e)}${inner}`;
|
|
6497
|
+
}
|
|
6498
|
+
},
|
|
6499
|
+
// When-restriction: bare `expr\{cond\}` → `When(expr, cond)`
|
|
6500
|
+
{
|
|
6501
|
+
kind: "postfix",
|
|
6502
|
+
precedence: 800,
|
|
6503
|
+
latexTrigger: ["\\{"],
|
|
6504
|
+
parse: (parser, lhs) => parseWhenRestriction(parser, lhs, ["\\}"])
|
|
6505
|
+
},
|
|
6416
6506
|
{
|
|
6417
6507
|
kind: "postfix",
|
|
6418
6508
|
latexTrigger: ["_"],
|
|
@@ -6495,6 +6585,29 @@ var DEFINITIONS_CORE = [
|
|
|
6495
6585
|
return "";
|
|
6496
6586
|
}
|
|
6497
6587
|
},
|
|
6588
|
+
// Additional triggers for Range: `...`, `\ldots`, and `\dots` are
|
|
6589
|
+
// equivalent to `..` when used as infix operators (e.g. `[1...9]`).
|
|
6590
|
+
// No `name` field here — names must be unique per the dictionary rules;
|
|
6591
|
+
// the first Range entry owns the name. When there is no LHS the symbol
|
|
6592
|
+
// entries near the top of the file still fire (ContinuationPlaceholder).
|
|
6593
|
+
{
|
|
6594
|
+
latexTrigger: [".", ".", "."],
|
|
6595
|
+
kind: "infix",
|
|
6596
|
+
precedence: 800,
|
|
6597
|
+
parse: parseRange
|
|
6598
|
+
},
|
|
6599
|
+
{
|
|
6600
|
+
latexTrigger: ["\\ldots"],
|
|
6601
|
+
kind: "infix",
|
|
6602
|
+
precedence: 800,
|
|
6603
|
+
parse: parseRange
|
|
6604
|
+
},
|
|
6605
|
+
{
|
|
6606
|
+
latexTrigger: ["\\dots"],
|
|
6607
|
+
kind: "infix",
|
|
6608
|
+
precedence: 800,
|
|
6609
|
+
parse: parseRange
|
|
6610
|
+
},
|
|
6498
6611
|
{
|
|
6499
6612
|
latexTrigger: [";"],
|
|
6500
6613
|
kind: "infix",
|
|
@@ -6679,13 +6792,24 @@ var DEFINITIONS_CORE = [
|
|
|
6679
6792
|
const args = operands(expr);
|
|
6680
6793
|
if (!args || args.length < 2) return "";
|
|
6681
6794
|
const body = args[0];
|
|
6682
|
-
const
|
|
6683
|
-
|
|
6684
|
-
|
|
6685
|
-
|
|
6686
|
-
|
|
6687
|
-
|
|
6688
|
-
|
|
6795
|
+
const elements = args.slice(1);
|
|
6796
|
+
const allElements = elements.every((e) => operator(e) === "Element");
|
|
6797
|
+
if (!allElements) {
|
|
6798
|
+
return joinLatex([
|
|
6799
|
+
"\\operatorname{Loop}(",
|
|
6800
|
+
serializer.serialize(body),
|
|
6801
|
+
", ",
|
|
6802
|
+
serializer.serialize(elements[0]),
|
|
6803
|
+
")"
|
|
6804
|
+
]);
|
|
6805
|
+
}
|
|
6806
|
+
if (elements.length === 1) {
|
|
6807
|
+
const elem = elements[0];
|
|
6808
|
+
const index = operand(elem, 1);
|
|
6809
|
+
const coll = operand(elem, 2);
|
|
6810
|
+
if (operator(coll) === "Range") {
|
|
6811
|
+
const lo = operand(coll, 1);
|
|
6812
|
+
const hi = operand(coll, 2);
|
|
6689
6813
|
return joinLatex([
|
|
6690
6814
|
"\\text{for }",
|
|
6691
6815
|
serializer.serialize(index),
|
|
@@ -6697,13 +6821,27 @@ var DEFINITIONS_CORE = [
|
|
|
6697
6821
|
serializer.serialize(body)
|
|
6698
6822
|
]);
|
|
6699
6823
|
}
|
|
6824
|
+
return joinLatex([
|
|
6825
|
+
serializer.serialize(body),
|
|
6826
|
+
" \\operatorname{for} ",
|
|
6827
|
+
serializer.serialize(index),
|
|
6828
|
+
" = ",
|
|
6829
|
+
serializer.serialize(coll)
|
|
6830
|
+
]);
|
|
6700
6831
|
}
|
|
6832
|
+
const bindings = elements.map((elem) => {
|
|
6833
|
+
const name = operand(elem, 1);
|
|
6834
|
+
const coll = operand(elem, 2);
|
|
6835
|
+
return joinLatex([
|
|
6836
|
+
serializer.serialize(name),
|
|
6837
|
+
" = ",
|
|
6838
|
+
serializer.serialize(coll)
|
|
6839
|
+
]);
|
|
6840
|
+
}).join(", ");
|
|
6701
6841
|
return joinLatex([
|
|
6702
|
-
"\\operatorname{Loop}(",
|
|
6703
6842
|
serializer.serialize(body),
|
|
6704
|
-
"
|
|
6705
|
-
|
|
6706
|
-
")"
|
|
6843
|
+
" \\operatorname{for} ",
|
|
6844
|
+
bindings
|
|
6707
6845
|
]);
|
|
6708
6846
|
}
|
|
6709
6847
|
},
|
|
@@ -6736,6 +6874,18 @@ var DEFINITIONS_CORE = [
|
|
|
6736
6874
|
precedence: 245,
|
|
6737
6875
|
parse: (parser, until) => parseForExpression(parser, until)
|
|
6738
6876
|
},
|
|
6877
|
+
// \operatorname{for} as postfix infix (list comprehension):
|
|
6878
|
+
// `body \operatorname{for} x = L_1, y = L_2`
|
|
6879
|
+
// Precedence 19 — just below comma (20) so the body is allowed to use
|
|
6880
|
+
// any operator (including comma sequencing) up to the keyword, and the
|
|
6881
|
+
// bindings can be comma-separated below us.
|
|
6882
|
+
{
|
|
6883
|
+
symbolTrigger: "for",
|
|
6884
|
+
kind: "infix",
|
|
6885
|
+
associativity: "none",
|
|
6886
|
+
precedence: 19,
|
|
6887
|
+
parse: (parser, lhs, until) => parseForComprehension(parser, lhs, until)
|
|
6888
|
+
},
|
|
6739
6889
|
// \operatorname{break}
|
|
6740
6890
|
{
|
|
6741
6891
|
symbolTrigger: "break",
|
|
@@ -6940,7 +7090,10 @@ var DEFINITIONS_CORE = [
|
|
|
6940
7090
|
if (!sym || !parser.getSymbolType(sym).matches("function")) return null;
|
|
6941
7091
|
parser.addBoundary([")"]);
|
|
6942
7092
|
const expr = parser.parseExpression(until);
|
|
6943
|
-
if (!parser.matchBoundary())
|
|
7093
|
+
if (!parser.matchBoundary()) {
|
|
7094
|
+
parser.removeBoundary();
|
|
7095
|
+
return null;
|
|
7096
|
+
}
|
|
6944
7097
|
if (!parser.match("<}>")) return null;
|
|
6945
7098
|
return ["Derivative", lhs, expr];
|
|
6946
7099
|
}
|
|
@@ -7381,7 +7534,12 @@ function parseBrackets(parser, body) {
|
|
|
7381
7534
|
if (isEmptySequence(body)) return ["List"];
|
|
7382
7535
|
const h = operator(body);
|
|
7383
7536
|
if (h === "Range" || h === "Linspace") return body;
|
|
7384
|
-
if (h === "Sequence")
|
|
7537
|
+
if (h === "Sequence") {
|
|
7538
|
+
const elems = operands(body);
|
|
7539
|
+
const inferred = tryInferRangeFromElements(elems, parser);
|
|
7540
|
+
if (inferred) return inferred;
|
|
7541
|
+
return ["List", ...elems];
|
|
7542
|
+
}
|
|
7385
7543
|
if (h === "Delimiter") {
|
|
7386
7544
|
const delim = stringValue(operand(body, 2)) ?? "...";
|
|
7387
7545
|
if (delim === ";" || delim === ".;.") {
|
|
@@ -7394,12 +7552,37 @@ function parseBrackets(parser, body) {
|
|
|
7394
7552
|
}
|
|
7395
7553
|
if (delim === "," || delim === ".,.") {
|
|
7396
7554
|
body = operand(body, 1);
|
|
7397
|
-
if (operator(body) === "Sequence")
|
|
7555
|
+
if (operator(body) === "Sequence") {
|
|
7556
|
+
const elems = operands(body);
|
|
7557
|
+
const inferred = tryInferRangeFromElements(elems, parser);
|
|
7558
|
+
if (inferred) return inferred;
|
|
7559
|
+
return ["List", ...elems];
|
|
7560
|
+
}
|
|
7398
7561
|
return ["List", body ?? "Nothing"];
|
|
7399
7562
|
}
|
|
7400
7563
|
}
|
|
7401
7564
|
return ["List", body];
|
|
7402
7565
|
}
|
|
7566
|
+
function tryInferRangeFromElements(elems, parser) {
|
|
7567
|
+
if (elems.length < 4) return null;
|
|
7568
|
+
const penultimate = elems[elems.length - 2];
|
|
7569
|
+
if (symbol(penultimate) !== "ContinuationPlaceholder") return null;
|
|
7570
|
+
const samples = elems.slice(0, -2);
|
|
7571
|
+
const endExpr = elems[elems.length - 1];
|
|
7572
|
+
if (samples.length < 2) return null;
|
|
7573
|
+
const sampleNums = samples.map(machineValue);
|
|
7574
|
+
if (sampleNums.some((n) => n === null)) return null;
|
|
7575
|
+
const nums = sampleNums;
|
|
7576
|
+
const step = nums[nums.length - 1] - nums[nums.length - 2];
|
|
7577
|
+
const tol = parser.options.tolerance;
|
|
7578
|
+
if (Math.abs(step) < tol)
|
|
7579
|
+
return parser.error("degenerate-range-step", parser.index);
|
|
7580
|
+
for (let i = 1; i < nums.length; i++) {
|
|
7581
|
+
if (Math.abs(nums[i] - nums[i - 1] - step) > tol)
|
|
7582
|
+
return parser.error("inconsistent-range-samples", parser.index);
|
|
7583
|
+
}
|
|
7584
|
+
return ["Range", nums[0], endExpr, step];
|
|
7585
|
+
}
|
|
7403
7586
|
function serializeList(serializer, expr) {
|
|
7404
7587
|
if (nops(expr) > 1 && operands(expr).every((x) => {
|
|
7405
7588
|
const op = operator(x);
|
|
@@ -7651,6 +7834,35 @@ function parseForExpression(parser, until) {
|
|
|
7651
7834
|
["Element", index, ["Range", lower, upper]]
|
|
7652
7835
|
];
|
|
7653
7836
|
}
|
|
7837
|
+
function parseForComprehension(parser, lhs, until) {
|
|
7838
|
+
const bindingTerminator = {
|
|
7839
|
+
minPrec: 21,
|
|
7840
|
+
// Above comma (20) and ; (19), so `x = L_1` is captured whole
|
|
7841
|
+
condition: (p) => {
|
|
7842
|
+
if (until?.condition?.(p)) return true;
|
|
7843
|
+
const saved = p.index;
|
|
7844
|
+
p.skipVisualSpace();
|
|
7845
|
+
const isComma = p.peek === ",";
|
|
7846
|
+
p.index = saved;
|
|
7847
|
+
return isComma;
|
|
7848
|
+
}
|
|
7849
|
+
};
|
|
7850
|
+
const elements = [];
|
|
7851
|
+
do {
|
|
7852
|
+
parser.skipVisualSpace();
|
|
7853
|
+
const binding = parser.parseExpression(bindingTerminator);
|
|
7854
|
+
if (binding === null) break;
|
|
7855
|
+
const op = operator(binding);
|
|
7856
|
+
if (op !== "Equal" && op !== "Assign") return null;
|
|
7857
|
+
const name = operand(binding, 1);
|
|
7858
|
+
const list = operand(binding, 2);
|
|
7859
|
+
if (!name || !list) return null;
|
|
7860
|
+
elements.push(["Element", name, list]);
|
|
7861
|
+
parser.skipVisualSpace();
|
|
7862
|
+
} while (parser.match(","));
|
|
7863
|
+
if (elements.length === 0) return null;
|
|
7864
|
+
return ["Loop", lhs, ...elements];
|
|
7865
|
+
}
|
|
7654
7866
|
function parseWhereExpression(parser, lhs, until) {
|
|
7655
7867
|
const bindingTerminator = {
|
|
7656
7868
|
minPrec: 21,
|
|
@@ -13534,7 +13746,7 @@ var IntervalArithmetic = {
|
|
|
13534
13746
|
};
|
|
13535
13747
|
|
|
13536
13748
|
// src/interval.ts
|
|
13537
|
-
var version = "0.
|
|
13749
|
+
var version = "0.57.0";
|
|
13538
13750
|
export {
|
|
13539
13751
|
IntervalArithmetic,
|
|
13540
13752
|
_mul,
|