@cortex-js/compute-engine 0.32.0 → 0.32.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/compute-engine.esm.js +42905 -0
- package/dist/compute-engine.min.esm.js +125 -0
- package/dist/compute-engine.min.umd.js +127 -0
- package/dist/compute-engine.umd.js +42930 -0
- package/dist/math-json.esm.js +130 -0
- package/dist/math-json.min.esm.js +130 -0
- package/dist/math-json.min.umd.js +4 -0
- package/dist/math-json.umd.js +155 -0
- package/dist/types/common/ansi-codes.d.ts +41 -0
- package/dist/types/common/configuration-change.d.ts +28 -0
- package/dist/types/common/fuzzy-string-match.d.ts +2 -0
- package/dist/types/common/grapheme-splitter.d.ts +15 -0
- package/dist/types/common/interruptible.d.ts +20 -0
- package/dist/types/common/one-of.d.ts +10 -0
- package/dist/types/common/signals.d.ts +96 -0
- package/dist/types/common/type/ast-nodes.d.ts +146 -0
- package/dist/types/common/type/boxed-type.d.ts +30 -0
- package/dist/types/common/type/lexer.d.ts +51 -0
- package/dist/types/common/type/parse.d.ts +211 -0
- package/dist/types/common/type/parser.d.ts +45 -0
- package/dist/types/common/type/primitive.d.ts +10 -0
- package/dist/types/common/type/serialize.d.ts +2 -0
- package/dist/types/common/type/subtype.d.ts +6 -0
- package/dist/types/common/type/type-builder.d.ts +32 -0
- package/dist/types/common/type/types.d.ts +300 -0
- package/dist/types/common/type/utils.d.ts +36 -0
- package/dist/types/common/utils.d.ts +23 -0
- package/dist/types/compute-engine/assume.d.ts +26 -0
- package/dist/types/compute-engine/boxed-expression/abstract-boxed-expression.d.ts +165 -0
- package/dist/types/compute-engine/boxed-expression/apply.d.ts +5 -0
- package/dist/types/compute-engine/boxed-expression/arithmetic-add.d.ts +16 -0
- package/dist/types/compute-engine/boxed-expression/arithmetic-mul-div.d.ts +27 -0
- package/dist/types/compute-engine/boxed-expression/arithmetic-power.d.ts +38 -0
- package/dist/types/compute-engine/boxed-expression/ascii-math.d.ts +11 -0
- package/dist/types/compute-engine/boxed-expression/box.d.ts +47 -0
- package/dist/types/compute-engine/boxed-expression/boxed-dictionary.d.ts +44 -0
- package/dist/types/compute-engine/boxed-expression/boxed-function.d.ts +136 -0
- package/dist/types/compute-engine/boxed-expression/boxed-number.d.ts +103 -0
- package/dist/types/compute-engine/boxed-expression/boxed-operator-definition.d.ts +53 -0
- package/dist/types/compute-engine/boxed-expression/boxed-patterns.d.ts +107 -0
- package/dist/types/compute-engine/boxed-expression/boxed-string.d.ts +27 -0
- package/dist/types/compute-engine/boxed-expression/boxed-symbol.d.ts +170 -0
- package/dist/types/compute-engine/boxed-expression/boxed-tensor.d.ts +83 -0
- package/dist/types/compute-engine/boxed-expression/boxed-value-definition.d.ts +46 -0
- package/dist/types/compute-engine/boxed-expression/cache.d.ts +7 -0
- package/dist/types/compute-engine/boxed-expression/canonical-utils.d.ts +5 -0
- package/dist/types/compute-engine/boxed-expression/canonical.d.ts +2 -0
- package/dist/types/compute-engine/boxed-expression/compare.d.ts +13 -0
- package/dist/types/compute-engine/boxed-expression/expand.d.ts +20 -0
- package/dist/types/compute-engine/boxed-expression/expression-map.d.ts +12 -0
- package/dist/types/compute-engine/boxed-expression/factor.d.ts +10 -0
- package/dist/types/compute-engine/boxed-expression/flatten.d.ts +25 -0
- package/dist/types/compute-engine/boxed-expression/hold.d.ts +10 -0
- package/dist/types/compute-engine/boxed-expression/match.d.ts +41 -0
- package/dist/types/compute-engine/boxed-expression/negate.d.ts +11 -0
- package/dist/types/compute-engine/boxed-expression/numerics.d.ts +34 -0
- package/dist/types/compute-engine/boxed-expression/order.d.ts +71 -0
- package/dist/types/compute-engine/boxed-expression/polynomials.d.ts +105 -0
- package/dist/types/compute-engine/boxed-expression/product.d.ts +66 -0
- package/dist/types/compute-engine/boxed-expression/rules.d.ts +129 -0
- package/dist/types/compute-engine/boxed-expression/serialize.d.ts +3 -0
- package/dist/types/compute-engine/boxed-expression/sgn.d.ts +46 -0
- package/dist/types/compute-engine/boxed-expression/simplify.d.ts +6 -0
- package/dist/types/compute-engine/boxed-expression/solve.d.ts +20 -0
- package/dist/types/compute-engine/boxed-expression/terms.d.ts +10 -0
- package/dist/types/compute-engine/boxed-expression/trigonometry.d.ts +9 -0
- package/dist/types/compute-engine/boxed-expression/utils.d.ts +64 -0
- package/dist/types/compute-engine/boxed-expression/validate.d.ts +58 -0
- package/dist/types/compute-engine/collection-utils.d.ts +35 -0
- package/dist/types/compute-engine/compilation/base-compiler.d.ts +31 -0
- package/dist/types/compute-engine/compilation/javascript-target.d.ts +68 -0
- package/dist/types/compute-engine/compilation/types.d.ts +83 -0
- package/dist/types/compute-engine/cost-function.d.ts +13 -0
- package/dist/types/compute-engine/function-utils.d.ts +120 -0
- package/dist/types/compute-engine/global-types.d.ts +2930 -0
- package/dist/types/compute-engine/index.d.ts +660 -0
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-algebra.d.ts +2 -0
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-arithmetic.d.ts +2 -0
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-calculus.d.ts +2 -0
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-complex.d.ts +2 -0
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-core.d.ts +27 -0
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-linear-algebra.d.ts +2 -0
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-logic.d.ts +2 -0
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-other.d.ts +2 -0
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-relational-operators.d.ts +2 -0
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-sets.d.ts +2 -0
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-statistics.d.ts +2 -0
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-symbols.d.ts +3 -0
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-trigonometry.d.ts +2 -0
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions.d.ts +88 -0
- package/dist/types/compute-engine/latex-syntax/parse-symbol.d.ts +21 -0
- package/dist/types/compute-engine/latex-syntax/parse.d.ts +316 -0
- package/dist/types/compute-engine/latex-syntax/serialize-number.d.ts +29 -0
- package/dist/types/compute-engine/latex-syntax/serializer-style.d.ts +10 -0
- package/dist/types/compute-engine/latex-syntax/serializer.d.ts +37 -0
- package/dist/types/compute-engine/latex-syntax/tokenizer.d.ts +18 -0
- package/dist/types/compute-engine/latex-syntax/types.d.ts +896 -0
- package/dist/types/compute-engine/latex-syntax/utils.d.ts +5 -0
- package/dist/types/compute-engine/library/arithmetic.d.ts +4 -0
- package/dist/types/compute-engine/library/calculus.d.ts +2 -0
- package/dist/types/compute-engine/library/collections.d.ts +27 -0
- package/dist/types/compute-engine/library/combinatorics.d.ts +2 -0
- package/dist/types/compute-engine/library/complex.d.ts +2 -0
- package/dist/types/compute-engine/library/control-structures.d.ts +2 -0
- package/dist/types/compute-engine/library/core.d.ts +2 -0
- package/dist/types/compute-engine/library/invisible-operator.d.ts +4 -0
- package/dist/types/compute-engine/library/library.d.ts +17 -0
- package/dist/types/compute-engine/library/linear-algebra.d.ts +2 -0
- package/dist/types/compute-engine/library/logic-analysis.d.ts +64 -0
- package/dist/types/compute-engine/library/logic-utils.d.ts +58 -0
- package/dist/types/compute-engine/library/logic.d.ts +7 -0
- package/dist/types/compute-engine/library/number-theory.d.ts +2 -0
- package/dist/types/compute-engine/library/polynomials.d.ts +2 -0
- package/dist/types/compute-engine/library/random-expression.d.ts +2 -0
- package/dist/types/compute-engine/library/relational-operator.d.ts +2 -0
- package/dist/types/compute-engine/library/sets.d.ts +2 -0
- package/dist/types/compute-engine/library/statistics.d.ts +2 -0
- package/dist/types/compute-engine/library/trigonometry.d.ts +2 -0
- package/dist/types/compute-engine/library/utils.d.ts +77 -0
- package/dist/types/compute-engine/numeric-value/big-numeric-value.d.ts +57 -0
- package/dist/types/compute-engine/numeric-value/exact-numeric-value.d.ts +75 -0
- package/dist/types/compute-engine/numeric-value/machine-numeric-value.d.ts +56 -0
- package/dist/types/compute-engine/numeric-value/types.d.ts +116 -0
- package/dist/types/compute-engine/numerics/bigint.d.ts +2 -0
- package/dist/types/compute-engine/numerics/expression.d.ts +4 -0
- package/dist/types/compute-engine/numerics/interval.d.ts +12 -0
- package/dist/types/compute-engine/numerics/monte-carlo.d.ts +4 -0
- package/dist/types/compute-engine/numerics/numeric-bigint.d.ts +18 -0
- package/dist/types/compute-engine/numerics/numeric-bignum.d.ts +9 -0
- package/dist/types/compute-engine/numerics/numeric-complex.d.ts +3 -0
- package/dist/types/compute-engine/numerics/numeric.d.ts +60 -0
- package/dist/types/compute-engine/numerics/primes.d.ts +7 -0
- package/dist/types/compute-engine/numerics/rationals.d.ts +43 -0
- package/dist/types/compute-engine/numerics/richardson.d.ts +80 -0
- package/dist/types/compute-engine/numerics/special-functions.d.ts +28 -0
- package/dist/types/compute-engine/numerics/statistics.d.ts +24 -0
- package/dist/types/compute-engine/numerics/strings.d.ts +2 -0
- package/dist/types/compute-engine/numerics/types.d.ts +30 -0
- package/dist/types/compute-engine/symbolic/antiderivative.d.ts +3 -0
- package/dist/types/compute-engine/symbolic/derivative.d.ts +18 -0
- package/dist/types/compute-engine/symbolic/distribute.d.ts +5 -0
- package/dist/types/compute-engine/symbolic/simplify-product.d.ts +6 -0
- package/dist/types/compute-engine/symbolic/simplify-rules.d.ts +27 -0
- package/dist/types/compute-engine/symbolic/simplify-sum.d.ts +6 -0
- package/dist/types/compute-engine/tensor/tensor-fields.d.ts +128 -0
- package/dist/types/compute-engine/tensor/tensors.d.ts +93 -0
- package/dist/types/compute-engine/types.d.ts +8 -0
- package/dist/types/compute-engine.d.ts +3 -0
- package/dist/types/math-json/symbols.d.ts +11 -0
- package/dist/types/math-json/types.d.ts +122 -0
- package/dist/types/math-json/utils.d.ts +87 -0
- package/dist/types/math-json.d.ts +3 -0
- package/package.json +1 -1
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/* 0.32.1 */
|
|
2
|
+
export declare function lcm(a: bigint, b: bigint): bigint;
|
|
3
|
+
/** Return `[factor, root]` such that
|
|
4
|
+
* pow(n, 1/exponent) = factor * pow(root, 1/exponent)
|
|
5
|
+
*
|
|
6
|
+
* canonicalInteger(75, 2) -> [5, 3] = 5^2 * 3
|
|
7
|
+
*
|
|
8
|
+
*/
|
|
9
|
+
export declare function canonicalInteger(n: bigint, exponent: number): [factor: bigint, root: bigint];
|
|
10
|
+
export declare function reducedInteger(n: bigint): bigint | number;
|
|
11
|
+
/**
|
|
12
|
+
* Computes the factorial of a number as a generator to allow interruptibility.
|
|
13
|
+
* Yields intermediate values periodically, but these are not intended to be the primary result.
|
|
14
|
+
*
|
|
15
|
+
* @param n - The number to compute the factorial of (as a BigInt).
|
|
16
|
+
* @returns A generator that can be iterated for intermediate values, with the final value returned when the computation completes.
|
|
17
|
+
*/
|
|
18
|
+
export declare function factorial(n: bigint): Generator<bigint, bigint>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/* 0.32.1 */
|
|
2
|
+
export declare function gcd(a: BigNum, b: BigNum): BigNum;
|
|
3
|
+
export declare function lcm(a: BigNum, b: BigNum): BigNum;
|
|
4
|
+
export declare function factorial2(ce: IBigNum, n: BigNum): BigNum;
|
|
5
|
+
/**
|
|
6
|
+
* If the exponent of the bignum is in the range of the exponents
|
|
7
|
+
* for machine numbers,return true.
|
|
8
|
+
*/
|
|
9
|
+
export declare function isInMachineRange(d: BigNum): boolean;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/* 0.32.1 */
|
|
2
|
+
export declare const MACHINE_PRECISION_BITS = 53;
|
|
3
|
+
export declare const MACHINE_PRECISION: number;
|
|
4
|
+
export declare const DEFAULT_TOLERANCE = 1e-10;
|
|
5
|
+
export declare const SMALL_INTEGER = 1000000;
|
|
6
|
+
/** The largest number of digits of a bigint */
|
|
7
|
+
export declare const MAX_BIGINT_DIGITS = 1024;
|
|
8
|
+
export declare const MAX_ITERATION = 1000000;
|
|
9
|
+
export declare const MAX_SYMBOLIC_TERMS = 200;
|
|
10
|
+
/**
|
|
11
|
+
* Returns the smallest floating-point number greater than x.
|
|
12
|
+
* Denormalized values may not be supported.
|
|
13
|
+
*/
|
|
14
|
+
export declare function nextUp(x: number): number;
|
|
15
|
+
export declare function nextDown(x: number): number;
|
|
16
|
+
/** Return `[factor, root]` such that
|
|
17
|
+
* pow(n, 1/exponent) = factor * pow(root, 1/exponent)
|
|
18
|
+
*
|
|
19
|
+
* canonicalInteger(75, 2) -> [5, 3] = 5^2 * 3
|
|
20
|
+
*
|
|
21
|
+
*/
|
|
22
|
+
export declare function canonicalInteger(n: number, exponent: number): readonly [factor: number, root: number];
|
|
23
|
+
export declare function gcd(a: number, b: number): number;
|
|
24
|
+
export declare function lcm(a: number, b: number): number;
|
|
25
|
+
export declare function factorial(n: number): number;
|
|
26
|
+
export declare function factorial2(n: number): number;
|
|
27
|
+
export declare function chop(n: number, tolerance?: number): 0 | number;
|
|
28
|
+
/**
|
|
29
|
+
* An 8th-order centered difference approximation can be used to get a highly
|
|
30
|
+
* accurate approximation of the first derivative of a function.
|
|
31
|
+
* The formula for the 8th-order centered difference approximation for the
|
|
32
|
+
* first derivative is given by:
|
|
33
|
+
*
|
|
34
|
+
* $$ f'(x) \approx \frac{1}{280h} \left[ -f(x-4h) + \frac{4}{3}f(x-3h) - \frac{1}{5}f(x-2h) + \frac{8}{5}f(x-h) - \frac{8}{5}f(x+h) + \frac{1}{5}f(x+2h) - \frac{4}{3}f(x+3h) + f(x+4h) \right]$$
|
|
35
|
+
*
|
|
36
|
+
* Note: Mathematica uses an 8th order approximation for the first derivative
|
|
37
|
+
*
|
|
38
|
+
* f: the function
|
|
39
|
+
* x: the point at which to approximate the derivative
|
|
40
|
+
* h: the step size
|
|
41
|
+
*
|
|
42
|
+
* See https://en.wikipedia.org/wiki/Finite_difference_coefficient
|
|
43
|
+
*/
|
|
44
|
+
export declare function centeredDiff8thOrder(f: (number: any) => number, x: number, h?: number): number;
|
|
45
|
+
/**
|
|
46
|
+
*
|
|
47
|
+
* @param f
|
|
48
|
+
* @param x
|
|
49
|
+
* @param dir Direction of approach: > 0 for right, < 0 for left, 0 for both
|
|
50
|
+
* @returns
|
|
51
|
+
*/
|
|
52
|
+
export declare function limit(f: (x: number) => number, x: number, dir?: number): number;
|
|
53
|
+
export declare function cantorEnumerateRationals(): Generator<[number, number]>;
|
|
54
|
+
export declare function cantorEnumeratePositiveRationals(): Generator<[
|
|
55
|
+
number,
|
|
56
|
+
number
|
|
57
|
+
]>;
|
|
58
|
+
export declare function cantorEnumerateComplexNumbers(): Generator<[number, number]>;
|
|
59
|
+
export declare function cantorEnumerateIntegers(): Generator<number>;
|
|
60
|
+
export declare function cantorEnumerateNaturalNumbers(): Generator<number>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/* 0.32.1 */
|
|
2
|
+
export declare function primeFactors(n: number): {
|
|
3
|
+
[factor: number]: number;
|
|
4
|
+
};
|
|
5
|
+
export declare function isPrime(n: number): boolean | undefined;
|
|
6
|
+
export declare function isPrimeBigint(n: bigint): boolean | undefined;
|
|
7
|
+
export declare function bigPrimeFactors(d: bigint): Map<bigint, number>;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/* 0.32.1 */
|
|
2
|
+
export declare function isRational(x: any | null): x is Rational;
|
|
3
|
+
export declare function isMachineRational(x: any | null): x is [SmallInteger, SmallInteger];
|
|
4
|
+
export declare function isBigRational(x: any | null): x is [bigint, bigint];
|
|
5
|
+
export declare function isZero(x: Rational): boolean;
|
|
6
|
+
export declare function isPositive(x: Rational): boolean;
|
|
7
|
+
export declare function isOne(x: Rational): boolean;
|
|
8
|
+
export declare function isNegativeOne(x: Rational): boolean;
|
|
9
|
+
export declare function isInteger(x: Rational): boolean;
|
|
10
|
+
export declare function machineNumerator(x: Rational): number;
|
|
11
|
+
export declare function machineDenominator(x: Rational): number;
|
|
12
|
+
export declare function rationalAsFloat(x: Rational): number;
|
|
13
|
+
export declare function isNeg(x: Rational): boolean;
|
|
14
|
+
export declare function div(lhs: Rational, rhs: Rational): Rational;
|
|
15
|
+
/**
|
|
16
|
+
* Add a literal numeric value to a rational.
|
|
17
|
+
* If the rational is a bigint, this is a hint to do the calculation in bigint
|
|
18
|
+
* (no need to check `bignumPreferred()`).
|
|
19
|
+
* @param lhs
|
|
20
|
+
* @param rhs
|
|
21
|
+
* @returns
|
|
22
|
+
*/
|
|
23
|
+
export declare function add(lhs: Rational, rhs: Rational): Rational;
|
|
24
|
+
export declare function mul(lhs: Rational, rhs: Rational): Rational;
|
|
25
|
+
export declare function neg(x: [SmallInteger, SmallInteger]): [SmallInteger, SmallInteger];
|
|
26
|
+
export declare function neg(x: [bigint, bigint]): [bigint, bigint];
|
|
27
|
+
export declare function neg(x: Rational): Rational;
|
|
28
|
+
export declare function inverse(x: [SmallInteger, SmallInteger]): [SmallInteger, SmallInteger];
|
|
29
|
+
export declare function inverse(x: [bigint, bigint]): [bigint, bigint];
|
|
30
|
+
export declare function inverse(x: Rational): Rational;
|
|
31
|
+
export declare function asMachineRational(r: Rational): [SmallInteger, SmallInteger];
|
|
32
|
+
export declare function pow(r: Rational, exp: SmallInteger): Rational;
|
|
33
|
+
export declare function sqrt(r: Rational): Rational | undefined;
|
|
34
|
+
export declare function rationalGcd(lhs: Rational, rhs: Rational): Rational;
|
|
35
|
+
export declare function reducedRational(r: [SmallInteger, SmallInteger]): [SmallInteger, SmallInteger];
|
|
36
|
+
export declare function reducedRational(r: [bigint, bigint]): [bigint, bigint];
|
|
37
|
+
export declare function reducedRational(r: Rational): Rational;
|
|
38
|
+
/** Return a rational approximation of x */
|
|
39
|
+
export declare function rationalize(x: number): [n: number, d: number] | number;
|
|
40
|
+
/** Return [factor, root] such that factor * sqrt(root) = sqrt(n)
|
|
41
|
+
* when factor and root are rationals
|
|
42
|
+
*/
|
|
43
|
+
export declare function reduceRationalSquareRoot(n: Rational): [factor: Rational, root: number | bigint];
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/* 0.32.1 */
|
|
2
|
+
|
|
3
|
+
Translated from https://github.com/JuliaMath/Richardson.jl/blob/master/src/Richardson.jl
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
The `Richardson` module provides a function `extrapolate` that
|
|
7
|
+
extrapolates a given function `f(x)` to `f(x0)`, evaluating
|
|
8
|
+
`f` only at a geometric sequence of points `> x0`
|
|
9
|
+
(or optionally `< x0`).
|
|
10
|
+
|
|
11
|
+
The key algorithm is Richardson extrapolation using a Neville—Aitken
|
|
12
|
+
tableau, which adaptively increases the degree of an extrapolation
|
|
13
|
+
polynomial until convergence is achieved to a desired tolerance
|
|
14
|
+
(or convergence stalls due to e.g. floating-point errors). This
|
|
15
|
+
allows one to obtain `f(x0)` to high-order accuracy, assuming
|
|
16
|
+
that `f(x0+h)` has a Taylor series or some other power
|
|
17
|
+
series in `h`.
|
|
18
|
+
*/
|
|
19
|
+
export interface ExtrapolateOptions {
|
|
20
|
+
contract?: number;
|
|
21
|
+
step?: number;
|
|
22
|
+
power?: number;
|
|
23
|
+
atol?: number;
|
|
24
|
+
rtol?: number;
|
|
25
|
+
maxeval?: number;
|
|
26
|
+
breaktol?: number;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
*
|
|
30
|
+
* Extrapolate `f(x)` to `f₀ ≈ f(x0)`, evaluating `f` only at `x > x0` points
|
|
31
|
+
(or `x < x0` if `h < 0`) using Richardson extrapolation starting at
|
|
32
|
+
`x=x₀+h`. It returns a tuple `(f₀, err)` of the estimated `f(x0)`
|
|
33
|
+
and an error estimate.
|
|
34
|
+
|
|
35
|
+
The return value of `f` can be any type supporting `±` and `norm`
|
|
36
|
+
operations (i.e. a normed vector space).
|
|
37
|
+
Similarly, `h` and `x0` can be in any normed vector space,
|
|
38
|
+
in which case `extrapolate` performs Richardson extrapolation
|
|
39
|
+
of `f(x0+s*h)` to `s=0⁺` (i.e. it takes the limit as `x` goes
|
|
40
|
+
to `x0` along the `h` direction).
|
|
41
|
+
|
|
42
|
+
On each step of Richardson extrapolation, it shrinks `x-x0` by
|
|
43
|
+
a factor of `contract`, stopping when the estimated error is
|
|
44
|
+
`< max(rtol*norm(f₀), atol)`, when the estimated error
|
|
45
|
+
increases by more than `breaktol` (e.g. due to numerical errors in the
|
|
46
|
+
computation of `f`), when `f` returns a non-finite value (`NaN` or `Inf`),
|
|
47
|
+
or when `f` has been evaluated `maxeval` times. Note that
|
|
48
|
+
if the function may converge to zero, you may want
|
|
49
|
+
specify a nonzero `atol` (which cannot be set by default
|
|
50
|
+
because it depends on the scale/units of `f`); alternatively,
|
|
51
|
+
in such cases `extrapolate` will halt when it becomes
|
|
52
|
+
limited by the floating-point precision. (Passing `breaktol=Inf`
|
|
53
|
+
can be useful to force `extrapolate` to continue shrinking `h` even
|
|
54
|
+
if polynomial extrapolation is initially failing to converge,
|
|
55
|
+
possibly at the cost of extraneous function evaluations.)
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
If `x0 = ±∞` (`±Inf`), then `extrapolate` computes the limit of
|
|
59
|
+
`f(x)` as `x ⟶ ±∞` using geometrically *increasing* values
|
|
60
|
+
of `h` (by factors of `1/contract`).
|
|
61
|
+
|
|
62
|
+
In general, the starting `h` should be large enough that `f(x0+h)`
|
|
63
|
+
can be computed accurately and efficiently (e.g. without
|
|
64
|
+
severe cancellation errors), but small enough that `f` does not
|
|
65
|
+
oscillate much between `x0` and `h`. i.e. `h` should be a typical
|
|
66
|
+
scale over which the function `f` varies significantly.
|
|
67
|
+
|
|
68
|
+
Technically, Richardson extrapolation assumes that `f(x0+h)` can
|
|
69
|
+
be expanded in a power series in `h^power`, where the default
|
|
70
|
+
`power=1` corresponds to an ordinary Taylor series (i.e. assuming
|
|
71
|
+
`f` is analytic at `x0`). If this is not true, you may obtain
|
|
72
|
+
slow convergence from `extrapolate`, but you can pass a different
|
|
73
|
+
value of `power` (e.g. `power=0.5`) if your `f` has some different
|
|
74
|
+
(Puiseux) power-series expansion. Conversely, if `f` is
|
|
75
|
+
an *even* function around `x0`, i.e. `f(x0+h) == f(x0-h)`,
|
|
76
|
+
so that its Taylor series contains only *even* powers of `h`,
|
|
77
|
+
you can accelerate convergence by passing `power=2`.
|
|
78
|
+
|
|
79
|
+
*/
|
|
80
|
+
export declare function extrapolate(f: (x: number) => number, x0: number, options?: ExtrapolateOptions): [val: number, err: number];
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/* 0.32.1 */
|
|
2
|
+
import type { BigNum } from './types';
|
|
3
|
+
export declare function gammaln(z: number): number;
|
|
4
|
+
export declare function gamma(z: number): number;
|
|
5
|
+
/**
|
|
6
|
+
* Inverse Error Function.
|
|
7
|
+
*
|
|
8
|
+
*/
|
|
9
|
+
export declare function erfInv(x: number): number;
|
|
10
|
+
/**
|
|
11
|
+
* Trivial function, used when compiling.
|
|
12
|
+
*/
|
|
13
|
+
export declare function erfc(x: number): number;
|
|
14
|
+
/**
|
|
15
|
+
* An approximation of the gaussian error function, Erf(), using
|
|
16
|
+
* Abramowitz and Stegun approximation.
|
|
17
|
+
*
|
|
18
|
+
* Thoughts for future improvements:
|
|
19
|
+
* - https://math.stackexchange.com/questions/321569/approximating-the-error-function-erf-by-analytical-functions
|
|
20
|
+
* - https://en.wikipedia.org/wiki/Error_function#Approximation_with_elementary_functions
|
|
21
|
+
|
|
22
|
+
*
|
|
23
|
+
* References:
|
|
24
|
+
* - NIST: https://dlmf.nist.gov/7.24#i
|
|
25
|
+
*/
|
|
26
|
+
export declare function erf(x: number): number;
|
|
27
|
+
export declare function bigGammaln(ce: ComputeEngine, z: BigNum): BigNum;
|
|
28
|
+
export declare function bigGamma(ce: ComputeEngine, z: BigNum): BigNum;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/* 0.32.1 */
|
|
2
|
+
import type { BigNum } from './types';
|
|
3
|
+
export declare function mean(values: Iterable<number>): number;
|
|
4
|
+
export declare function bigMean(bignum: BigNumFactory, values: Iterable<BigNum>): BigNum;
|
|
5
|
+
export declare function median(values: Iterable<number>): number;
|
|
6
|
+
export declare function bigMedian(values: Iterable<BigNum>): BigNum;
|
|
7
|
+
export declare function variance(values: Iterable<number>): number;
|
|
8
|
+
export declare function bigVariance(bignum: BigNumFactory, values: Iterable<BigNum>): BigNum;
|
|
9
|
+
export declare function populationVariance(values: Iterable<number>): number;
|
|
10
|
+
export declare function bigPopulationVariance(bignum: BigNumFactory, values: Iterable<BigNum>): BigNum;
|
|
11
|
+
export declare function standardDeviation(values: Iterable<number>): number;
|
|
12
|
+
export declare function bigStandardDeviation(bignum: BigNumFactory, values: Iterable<BigNum>): BigNum;
|
|
13
|
+
export declare function populationStandardDeviation(values: Iterable<number>): number;
|
|
14
|
+
export declare function bigPopulationStandardDeviation(bignum: BigNumFactory, values: Iterable<BigNum>): BigNum;
|
|
15
|
+
export declare function kurtosis(values: Iterable<number>): number;
|
|
16
|
+
export declare function bigKurtosis(bignum: BigNumFactory, values: Iterable<BigNum>): BigNum;
|
|
17
|
+
export declare function skewness(values: Iterable<number>): number;
|
|
18
|
+
export declare function bigSkewness(bignum: BigNumFactory, values: Iterable<BigNum>): BigNum;
|
|
19
|
+
export declare function mode(values: Iterable<number>): number;
|
|
20
|
+
export declare function bigMode(bignum: BigNumFactory, values: Iterable<BigNum>): BigNum;
|
|
21
|
+
export declare function quartiles(values: Iterable<number>): [number, number, number];
|
|
22
|
+
export declare function bigQuartiles(values: Iterable<BigNum>): [BigNum, BigNum, BigNum];
|
|
23
|
+
export declare function interquartileRange(values: Iterable<number>): number;
|
|
24
|
+
export declare function bigInterquartileRange(values: Iterable<BigNum>): BigNum;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/* 0.32.1 */
|
|
2
|
+
type IsInteger<N extends number> = `${N}` extends `${string}.${string}` ? never : `${N}` extends `-${string}.${string}` ? never : number;
|
|
3
|
+
/** A `SmallInteger` is an integer < 1e6
|
|
4
|
+
* @category Numerics
|
|
5
|
+
*/
|
|
6
|
+
export type SmallInteger = IsInteger<number>;
|
|
7
|
+
/**
|
|
8
|
+
* A rational number is a number that can be expressed as the quotient or fraction p/q of two integers,
|
|
9
|
+
* a numerator p and a non-zero denominator q.
|
|
10
|
+
*
|
|
11
|
+
* A rational can either be represented as a pair of small integers or
|
|
12
|
+
* a pair of big integers.
|
|
13
|
+
*
|
|
14
|
+
* @category Numerics
|
|
15
|
+
*/
|
|
16
|
+
export type Rational = [SmallInteger, SmallInteger] | [bigint, bigint];
|
|
17
|
+
/** @category Numerics */
|
|
18
|
+
export type BigNum = Decimal;
|
|
19
|
+
/** @category Numerics */
|
|
20
|
+
export interface IBigNum {
|
|
21
|
+
readonly _BIGNUM_NAN: BigNum;
|
|
22
|
+
readonly _BIGNUM_ZERO: BigNum;
|
|
23
|
+
readonly _BIGNUM_ONE: BigNum;
|
|
24
|
+
readonly _BIGNUM_TWO: BigNum;
|
|
25
|
+
readonly _BIGNUM_HALF: BigNum;
|
|
26
|
+
readonly _BIGNUM_PI: BigNum;
|
|
27
|
+
readonly _BIGNUM_NEGATIVE_ONE: BigNum;
|
|
28
|
+
bignum(value: string | number | bigint | BigNum): BigNum;
|
|
29
|
+
}
|
|
30
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/* 0.32.1 */
|
|
2
|
+
/**
|
|
3
|
+
*
|
|
4
|
+
* @param fn The function to differentiate, a function literal.
|
|
5
|
+
*
|
|
6
|
+
* @returns a function expression representing the derivative of `fn` with
|
|
7
|
+
* respect to the variables in `degrees`.
|
|
8
|
+
*/
|
|
9
|
+
export declare function derivative(fn: BoxedExpression, order: number): BoxedExpression | undefined;
|
|
10
|
+
/**
|
|
11
|
+
* Calculate the partial derivative of an expression with respect to a
|
|
12
|
+
* variable, `v`.
|
|
13
|
+
*
|
|
14
|
+
* All expressions that do not explicitly depend on `v` are taken to have zero
|
|
15
|
+
* partial derivative.
|
|
16
|
+
*
|
|
17
|
+
*/
|
|
18
|
+
export declare function differentiate(expr: BoxedExpression, v: string): BoxedExpression | undefined;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/* 0.32.1 */
|
|
2
|
+
/**
|
|
3
|
+
* @todo: a set to "tidy" an expression. Different from a canonical form, but
|
|
4
|
+
* inline with the user's expectations.
|
|
5
|
+
*
|
|
6
|
+
* Example:
|
|
7
|
+
*
|
|
8
|
+
* - a^n * a^m -> a^(n+m)
|
|
9
|
+
* - a / √b -> (a * √b) / b
|
|
10
|
+
*
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* A set of simplification rules.
|
|
14
|
+
*
|
|
15
|
+
* The rules are expressed as
|
|
16
|
+
*
|
|
17
|
+
* `[lhs, rhs, condition]`
|
|
18
|
+
*
|
|
19
|
+
* where `lhs` is rewritten as `rhs` if `condition` is true.
|
|
20
|
+
*
|
|
21
|
+
* `lhs` and `rhs` can be either an Expression or a LaTeX string.
|
|
22
|
+
*
|
|
23
|
+
* If using an Expression, the expression is *not* canonicalized before being
|
|
24
|
+
* used. Therefore in some cases using Expression, while more verbose,
|
|
25
|
+
* may be necessary as the expression could be simplified by the canonicalization.
|
|
26
|
+
*/
|
|
27
|
+
export declare const SIMPLIFY_RULES: Rule[];
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/* 0.32.1 */
|
|
2
|
+
import { BoxedExpression, ComputeEngine, DataTypeMap, TensorDataType, TensorField } from '../global-types';
|
|
3
|
+
/** @category Tensors */
|
|
4
|
+
export declare function makeTensorField<DT extends keyof DataTypeMap>(ce: ComputeEngine, dtype: DT): TensorField<DataTypeMap[DT]>;
|
|
5
|
+
/** @category Tensors */
|
|
6
|
+
export declare class TensorFieldNumber implements TensorField<number> {
|
|
7
|
+
private ce;
|
|
8
|
+
one: number;
|
|
9
|
+
zero: number;
|
|
10
|
+
nan: number;
|
|
11
|
+
constructor(ce: ComputeEngine);
|
|
12
|
+
cast(x: number, dtype: 'float64'): undefined | number;
|
|
13
|
+
cast(x: number, dtype: 'float32'): undefined | number;
|
|
14
|
+
cast(x: number, dtype: 'int32'): undefined | number;
|
|
15
|
+
cast(x: number, dtype: 'uint8'): undefined | number;
|
|
16
|
+
cast(x: number, dtype: 'complex128'): undefined | Complex;
|
|
17
|
+
cast(x: number, dtype: 'complex64'): undefined | Complex;
|
|
18
|
+
cast(x: number, dtype: 'bool'): undefined | boolean;
|
|
19
|
+
cast(x: number, dtype: 'expression'): undefined | BoxedExpression;
|
|
20
|
+
cast(x: number[], dtype: 'float64'): undefined | number[];
|
|
21
|
+
cast(x: number[], dtype: 'float32'): undefined | number[];
|
|
22
|
+
cast(x: number[], dtype: 'int32'): undefined | number[];
|
|
23
|
+
cast(x: number[], dtype: 'uint8'): undefined | number[];
|
|
24
|
+
cast(x: number[], dtype: 'complex128'): undefined | Complex[];
|
|
25
|
+
cast(x: number[], dtype: 'complex64'): undefined | Complex[];
|
|
26
|
+
cast(x: number[], dtype: 'bool'): undefined | boolean[];
|
|
27
|
+
cast(x: number[], dtype: 'expression'): undefined | BoxedExpression[];
|
|
28
|
+
expression(x: number): BoxedExpression;
|
|
29
|
+
isZero(x: number): boolean;
|
|
30
|
+
isOne(x: number): boolean;
|
|
31
|
+
equals(lhs: number, rhs: number): boolean;
|
|
32
|
+
add(lhs: number, rhs: number): number;
|
|
33
|
+
addn(...xs: number[]): number;
|
|
34
|
+
neg(x: number): number;
|
|
35
|
+
sub(lhs: number, rhs: number): number;
|
|
36
|
+
mul(lhs: number, rhs: number): number;
|
|
37
|
+
muln(...xs: number[]): number;
|
|
38
|
+
div(lhs: number, rhs: number): number;
|
|
39
|
+
pow(lhs: number, rhs: number): number;
|
|
40
|
+
conjugate(x: number): number;
|
|
41
|
+
}
|
|
42
|
+
/** @category Tensors */
|
|
43
|
+
export declare class TensorFieldExpression implements TensorField<BoxedExpression> {
|
|
44
|
+
one: BoxedExpression;
|
|
45
|
+
zero: BoxedExpression;
|
|
46
|
+
nan: BoxedExpression;
|
|
47
|
+
private ce;
|
|
48
|
+
constructor(ce: ComputeEngine);
|
|
49
|
+
cast(x: BoxedExpression, dtype: 'float64'): undefined | number;
|
|
50
|
+
cast(x: BoxedExpression, dtype: 'float32'): undefined | number;
|
|
51
|
+
cast(x: BoxedExpression, dtype: 'int32'): undefined | number;
|
|
52
|
+
cast(x: BoxedExpression, dtype: 'uint8'): undefined | number;
|
|
53
|
+
cast(x: BoxedExpression, dtype: 'complex128'): undefined | Complex;
|
|
54
|
+
cast(x: BoxedExpression, dtype: 'complex64'): undefined | Complex;
|
|
55
|
+
cast(x: BoxedExpression, dtype: 'bool'): undefined | boolean;
|
|
56
|
+
cast(x: BoxedExpression, dtype: 'expression'): undefined | BoxedExpression;
|
|
57
|
+
cast(x: BoxedExpression[], dtype: 'float64'): undefined | number[];
|
|
58
|
+
cast(x: BoxedExpression[], dtype: 'float32'): undefined | number[];
|
|
59
|
+
cast(x: BoxedExpression[], dtype: 'int32'): undefined | number[];
|
|
60
|
+
cast(x: BoxedExpression[], dtype: 'uint8'): undefined | number[];
|
|
61
|
+
cast(x: BoxedExpression[], dtype: 'complex128'): undefined | Complex[];
|
|
62
|
+
cast(x: BoxedExpression[], dtype: 'complex64'): undefined | Complex[];
|
|
63
|
+
cast(x: BoxedExpression[], dtype: 'bool'): undefined | boolean[];
|
|
64
|
+
cast(x: BoxedExpression[], dtype: 'expression'): undefined | BoxedExpression[];
|
|
65
|
+
expression(x: BoxedExpression): BoxedExpression;
|
|
66
|
+
isZero(x: BoxedExpression): boolean;
|
|
67
|
+
isOne(x: BoxedExpression): boolean;
|
|
68
|
+
equals(lhs: BoxedExpression, rhs: BoxedExpression): boolean;
|
|
69
|
+
add(lhs: BoxedExpression, rhs: BoxedExpression): BoxedExpression;
|
|
70
|
+
addn(...xs: BoxedExpression[]): BoxedExpression;
|
|
71
|
+
neg(x: BoxedExpression): BoxedExpression;
|
|
72
|
+
sub(lhs: BoxedExpression, rhs: BoxedExpression): BoxedExpression;
|
|
73
|
+
mul(lhs: BoxedExpression, rhs: BoxedExpression): BoxedExpression;
|
|
74
|
+
muln(...xs: BoxedExpression[]): BoxedExpression;
|
|
75
|
+
div(lhs: BoxedExpression, rhs: BoxedExpression): BoxedExpression;
|
|
76
|
+
pow(lhs: BoxedExpression, rhs: number): BoxedExpression;
|
|
77
|
+
conjugate(x: BoxedExpression): BoxedExpression;
|
|
78
|
+
}
|
|
79
|
+
/** @category Tensors */
|
|
80
|
+
export declare class TensorFieldComplex implements TensorField<Complex> {
|
|
81
|
+
one: Complex;
|
|
82
|
+
zero: Complex;
|
|
83
|
+
nan: Complex;
|
|
84
|
+
private ce;
|
|
85
|
+
constructor(ce: ComputeEngine);
|
|
86
|
+
cast(x: Complex, dtype: 'float64'): undefined | number;
|
|
87
|
+
cast(x: Complex, dtype: 'float32'): undefined | number;
|
|
88
|
+
cast(x: Complex, dtype: 'int32'): undefined | number;
|
|
89
|
+
cast(x: Complex, dtype: 'uint8'): undefined | number;
|
|
90
|
+
cast(x: Complex, dtype: 'complex128'): undefined | Complex;
|
|
91
|
+
cast(x: Complex, dtype: 'complex64'): undefined | Complex;
|
|
92
|
+
cast(x: Complex, dtype: 'bool'): undefined | boolean;
|
|
93
|
+
cast(x: Complex, dtype: 'expression'): undefined | BoxedExpression;
|
|
94
|
+
cast(x: Complex[], dtype: 'float64'): undefined | number[];
|
|
95
|
+
cast(x: Complex[], dtype: 'float32'): undefined | number[];
|
|
96
|
+
cast(x: Complex[], dtype: 'int32'): undefined | number[];
|
|
97
|
+
cast(x: Complex[], dtype: 'uint8'): undefined | number[];
|
|
98
|
+
cast(x: Complex[], dtype: 'complex128'): undefined | Complex[];
|
|
99
|
+
cast(x: Complex[], dtype: 'complex64'): undefined | Complex[];
|
|
100
|
+
cast(x: Complex[], dtype: 'bool'): undefined | boolean[];
|
|
101
|
+
cast(x: Complex[], dtype: 'expression'): undefined | BoxedExpression[];
|
|
102
|
+
expression(z: Complex): BoxedExpression;
|
|
103
|
+
isZero(z: Complex): boolean;
|
|
104
|
+
isOne(z: Complex): boolean;
|
|
105
|
+
equals(lhs: Complex, rhs: Complex): boolean;
|
|
106
|
+
add(lhs: Complex, rhs: Complex): Complex;
|
|
107
|
+
addn(...xs: Complex[]): Complex;
|
|
108
|
+
neg(z: Complex): Complex;
|
|
109
|
+
sub(lhs: Complex, rhs: Complex): Complex;
|
|
110
|
+
mul(lhs: Complex, rhs: Complex): Complex;
|
|
111
|
+
muln(...xs: Complex[]): Complex;
|
|
112
|
+
div(lhs: Complex, rhs: Complex): Complex;
|
|
113
|
+
pow(lhs: Complex, rhs: number): Complex;
|
|
114
|
+
conjugate(z: Complex): Complex;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* @category Tensors
|
|
118
|
+
* @internal
|
|
119
|
+
*/
|
|
120
|
+
export declare function getSupertype(t1: TensorDataType | undefined, t2: TensorDataType): TensorDataType;
|
|
121
|
+
/**
|
|
122
|
+
* If the expression is a literal number, return the datatype of the
|
|
123
|
+
* number (or boolean). Otherwise, return the `expression`.
|
|
124
|
+
*
|
|
125
|
+
* @category Tensors
|
|
126
|
+
* @internal
|
|
127
|
+
*/
|
|
128
|
+
export declare function getExpressionDatatype(expr: BoxedExpression): TensorDataType;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/* 0.32.1 */
|
|
2
|
+
/** @category Tensors */
|
|
3
|
+
export declare abstract class AbstractTensor<DT extends keyof DataTypeMap> implements Tensor<DT> {
|
|
4
|
+
private ce;
|
|
5
|
+
/**
|
|
6
|
+
* Return a tuple of tensors that have the same dtype.
|
|
7
|
+
* If necessary, one of the two input tensors is upcast.
|
|
8
|
+
*
|
|
9
|
+
* The shape of the tensors is reshaped to a compatible
|
|
10
|
+
* shape. If the shape is not compatible, `undefined` is returned.
|
|
11
|
+
*
|
|
12
|
+
* @param lhs
|
|
13
|
+
* @param rhs
|
|
14
|
+
*/
|
|
15
|
+
static align<T1 extends TensorDataType, T2 extends TensorDataType>(lhs: AbstractTensor<T1>, rhs: AbstractTensor<T2>): [AbstractTensor<T1>, AbstractTensor<T1>];
|
|
16
|
+
static align<T1 extends TensorDataType, T2 extends TensorDataType>(lhs: AbstractTensor<T1>, rhs: AbstractTensor<T2>): [AbstractTensor<T2>, AbstractTensor<T2>];
|
|
17
|
+
/**
|
|
18
|
+
* Apply a function to the elements of two tensors, or to a tensor
|
|
19
|
+
* and a scalar.
|
|
20
|
+
*
|
|
21
|
+
* The tensors are aligned and broadcasted if necessary.
|
|
22
|
+
*
|
|
23
|
+
* @param fn
|
|
24
|
+
* @param lhs
|
|
25
|
+
* @param rhs
|
|
26
|
+
* @returns
|
|
27
|
+
*/
|
|
28
|
+
static broadcast<T extends TensorDataType>(fn: (lhs: DataTypeMap[T], rhs: DataTypeMap[T]) => DataTypeMap[T], lhs: AbstractTensor<T>, rhs: AbstractTensor<T> | DataTypeMap[T]): AbstractTensor<T>;
|
|
29
|
+
readonly field: TensorField<DataTypeMap[DT]>;
|
|
30
|
+
readonly shape: number[];
|
|
31
|
+
readonly rank: number;
|
|
32
|
+
private readonly _strides;
|
|
33
|
+
constructor(ce: ComputeEngine, tensorData: TensorData<DT>);
|
|
34
|
+
abstract get dtype(): DT;
|
|
35
|
+
abstract get data(): DataTypeMap[DT][];
|
|
36
|
+
get expression(): BoxedExpression;
|
|
37
|
+
/**
|
|
38
|
+
* Like expression(), but return a nested JS array instead
|
|
39
|
+
* of a BoxedExpression
|
|
40
|
+
*/
|
|
41
|
+
get array(): NestedArray<DataTypeMap[DT]>;
|
|
42
|
+
/** Indices are 1-based, return a 0-based index in the data */
|
|
43
|
+
private _index;
|
|
44
|
+
get isSquare(): boolean;
|
|
45
|
+
get isSymmetric(): boolean;
|
|
46
|
+
get isSkewSymmetric(): boolean;
|
|
47
|
+
get isUpperTriangular(): boolean;
|
|
48
|
+
get isLowerTriangular(): boolean;
|
|
49
|
+
get isTriangular(): boolean;
|
|
50
|
+
get isDiagonal(): boolean;
|
|
51
|
+
get isIdentity(): boolean;
|
|
52
|
+
get isZero(): boolean;
|
|
53
|
+
/**
|
|
54
|
+
* The number of indices should match the rank of the tensor.
|
|
55
|
+
*
|
|
56
|
+
* Note: the indices are 1-based
|
|
57
|
+
* Note: the data is broadcast (wraps around) if the indices are out of bounds
|
|
58
|
+
*
|
|
59
|
+
* LaTeX notation `A\lbracki, j\rbrack` or `A_{i, j}`
|
|
60
|
+
*/
|
|
61
|
+
at(...indices: number[]): DataTypeMap[DT];
|
|
62
|
+
diagonal(axis1?: number, axis2?: number): undefined | DataTypeMap[DT][];
|
|
63
|
+
trace(axis1?: number, axis2?: number): undefined | DataTypeMap[DT];
|
|
64
|
+
/**
|
|
65
|
+
* Change the shape of the tensor
|
|
66
|
+
*
|
|
67
|
+
* The data is reused (and shared) between the two tensors.
|
|
68
|
+
*/
|
|
69
|
+
reshape(...shape: number[]): AbstractTensor<DT>;
|
|
70
|
+
slice(index: number): AbstractTensor<DT>;
|
|
71
|
+
flatten(): DataTypeMap[DT][];
|
|
72
|
+
upcast<DT extends keyof DataTypeMap>(dtype: DT): AbstractTensor<DT>;
|
|
73
|
+
/** Transpose the first and second axis */
|
|
74
|
+
transpose(): undefined | AbstractTensor<DT>;
|
|
75
|
+
/** Transpose two axes. */
|
|
76
|
+
transpose(axis1: number, axis2: number, fn?: (v: DataTypeMap[DT]) => DataTypeMap[DT]): undefined | AbstractTensor<DT>;
|
|
77
|
+
conjugateTranspose(axis1: number, axis2: number): undefined | AbstractTensor<DT>;
|
|
78
|
+
determinant(): undefined | DataTypeMap[DT];
|
|
79
|
+
inverse(): undefined | AbstractTensor<DT>;
|
|
80
|
+
pseudoInverse(): undefined | AbstractTensor<DT>;
|
|
81
|
+
adjugateMatrix(): undefined | AbstractTensor<DT>;
|
|
82
|
+
minor(i: number, j: number): undefined | DataTypeMap[DT];
|
|
83
|
+
map1(fn: (lhs: DataTypeMap[DT], rhs: DataTypeMap[DT]) => DataTypeMap[DT], scalar: DataTypeMap[DT]): AbstractTensor<DT>;
|
|
84
|
+
map2(fn: (lhs: DataTypeMap[DT], rhs: DataTypeMap[DT]) => DataTypeMap[DT], rhs: AbstractTensor<DT>): AbstractTensor<DT>;
|
|
85
|
+
add(rhs: AbstractTensor<DT> | DataTypeMap[DT]): AbstractTensor<DT>;
|
|
86
|
+
subtract(rhs: AbstractTensor<DT> | DataTypeMap[DT]): AbstractTensor<DT>;
|
|
87
|
+
multiply(rhs: AbstractTensor<DT> | DataTypeMap[DT]): AbstractTensor<DT>;
|
|
88
|
+
divide(rhs: AbstractTensor<DT> | DataTypeMap[DT]): AbstractTensor<DT>;
|
|
89
|
+
power(rhs: AbstractTensor<DT> | DataTypeMap[DT]): AbstractTensor<DT>;
|
|
90
|
+
equals(rhs: AbstractTensor<DT>): boolean;
|
|
91
|
+
}
|
|
92
|
+
/** @category Tensors */
|
|
93
|
+
export declare function makeTensor<T extends TensorDataType>(ce: ComputeEngine, data: TensorData<T>): AbstractTensor<T>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/* 0.32.1 */
|
|
2
|
+
export * from '../math-json/types';
|
|
3
|
+
export * from '../common/type/boxed-type';
|
|
4
|
+
export * from '../common/type/types';
|
|
5
|
+
export type * from './latex-syntax/types';
|
|
6
|
+
export * from './numerics/types';
|
|
7
|
+
export * from './numeric-value/types';
|
|
8
|
+
export * from './global-types';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/* 0.32.1 */
|
|
2
|
+
* Return true if the string is a valid symbol.
|
|
3
|
+
*
|
|
4
|
+
* Check for symbols matching a profile of [Unicode UAX31](https://unicode.org/reports/tr31/)
|
|
5
|
+
*
|
|
6
|
+
* See https://cortexjs.io/math-json/#symbols for a full definition of the
|
|
7
|
+
* profile.
|
|
8
|
+
*/
|
|
9
|
+
export declare function isValidSymbol(s: string): boolean;
|
|
10
|
+
export declare const EMOJIS: RegExp;
|
|
11
|
+
export declare function validateSymbol(s: unknown): 'valid' | 'not-a-string' | 'empty-string' | 'expected-nfc' | 'unexpected-mixed-emoji' | 'unexpected-bidi-marker' | 'unexpected-script' | 'invalid-first-char' | 'invalid-char';
|