@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.
Files changed (153) hide show
  1. package/dist/compute-engine.esm.js +42905 -0
  2. package/dist/compute-engine.min.esm.js +125 -0
  3. package/dist/compute-engine.min.umd.js +127 -0
  4. package/dist/compute-engine.umd.js +42930 -0
  5. package/dist/math-json.esm.js +130 -0
  6. package/dist/math-json.min.esm.js +130 -0
  7. package/dist/math-json.min.umd.js +4 -0
  8. package/dist/math-json.umd.js +155 -0
  9. package/dist/types/common/ansi-codes.d.ts +41 -0
  10. package/dist/types/common/configuration-change.d.ts +28 -0
  11. package/dist/types/common/fuzzy-string-match.d.ts +2 -0
  12. package/dist/types/common/grapheme-splitter.d.ts +15 -0
  13. package/dist/types/common/interruptible.d.ts +20 -0
  14. package/dist/types/common/one-of.d.ts +10 -0
  15. package/dist/types/common/signals.d.ts +96 -0
  16. package/dist/types/common/type/ast-nodes.d.ts +146 -0
  17. package/dist/types/common/type/boxed-type.d.ts +30 -0
  18. package/dist/types/common/type/lexer.d.ts +51 -0
  19. package/dist/types/common/type/parse.d.ts +211 -0
  20. package/dist/types/common/type/parser.d.ts +45 -0
  21. package/dist/types/common/type/primitive.d.ts +10 -0
  22. package/dist/types/common/type/serialize.d.ts +2 -0
  23. package/dist/types/common/type/subtype.d.ts +6 -0
  24. package/dist/types/common/type/type-builder.d.ts +32 -0
  25. package/dist/types/common/type/types.d.ts +300 -0
  26. package/dist/types/common/type/utils.d.ts +36 -0
  27. package/dist/types/common/utils.d.ts +23 -0
  28. package/dist/types/compute-engine/assume.d.ts +26 -0
  29. package/dist/types/compute-engine/boxed-expression/abstract-boxed-expression.d.ts +165 -0
  30. package/dist/types/compute-engine/boxed-expression/apply.d.ts +5 -0
  31. package/dist/types/compute-engine/boxed-expression/arithmetic-add.d.ts +16 -0
  32. package/dist/types/compute-engine/boxed-expression/arithmetic-mul-div.d.ts +27 -0
  33. package/dist/types/compute-engine/boxed-expression/arithmetic-power.d.ts +38 -0
  34. package/dist/types/compute-engine/boxed-expression/ascii-math.d.ts +11 -0
  35. package/dist/types/compute-engine/boxed-expression/box.d.ts +47 -0
  36. package/dist/types/compute-engine/boxed-expression/boxed-dictionary.d.ts +44 -0
  37. package/dist/types/compute-engine/boxed-expression/boxed-function.d.ts +136 -0
  38. package/dist/types/compute-engine/boxed-expression/boxed-number.d.ts +103 -0
  39. package/dist/types/compute-engine/boxed-expression/boxed-operator-definition.d.ts +53 -0
  40. package/dist/types/compute-engine/boxed-expression/boxed-patterns.d.ts +107 -0
  41. package/dist/types/compute-engine/boxed-expression/boxed-string.d.ts +27 -0
  42. package/dist/types/compute-engine/boxed-expression/boxed-symbol.d.ts +170 -0
  43. package/dist/types/compute-engine/boxed-expression/boxed-tensor.d.ts +83 -0
  44. package/dist/types/compute-engine/boxed-expression/boxed-value-definition.d.ts +46 -0
  45. package/dist/types/compute-engine/boxed-expression/cache.d.ts +7 -0
  46. package/dist/types/compute-engine/boxed-expression/canonical-utils.d.ts +5 -0
  47. package/dist/types/compute-engine/boxed-expression/canonical.d.ts +2 -0
  48. package/dist/types/compute-engine/boxed-expression/compare.d.ts +13 -0
  49. package/dist/types/compute-engine/boxed-expression/expand.d.ts +20 -0
  50. package/dist/types/compute-engine/boxed-expression/expression-map.d.ts +12 -0
  51. package/dist/types/compute-engine/boxed-expression/factor.d.ts +10 -0
  52. package/dist/types/compute-engine/boxed-expression/flatten.d.ts +25 -0
  53. package/dist/types/compute-engine/boxed-expression/hold.d.ts +10 -0
  54. package/dist/types/compute-engine/boxed-expression/match.d.ts +41 -0
  55. package/dist/types/compute-engine/boxed-expression/negate.d.ts +11 -0
  56. package/dist/types/compute-engine/boxed-expression/numerics.d.ts +34 -0
  57. package/dist/types/compute-engine/boxed-expression/order.d.ts +71 -0
  58. package/dist/types/compute-engine/boxed-expression/polynomials.d.ts +105 -0
  59. package/dist/types/compute-engine/boxed-expression/product.d.ts +66 -0
  60. package/dist/types/compute-engine/boxed-expression/rules.d.ts +129 -0
  61. package/dist/types/compute-engine/boxed-expression/serialize.d.ts +3 -0
  62. package/dist/types/compute-engine/boxed-expression/sgn.d.ts +46 -0
  63. package/dist/types/compute-engine/boxed-expression/simplify.d.ts +6 -0
  64. package/dist/types/compute-engine/boxed-expression/solve.d.ts +20 -0
  65. package/dist/types/compute-engine/boxed-expression/terms.d.ts +10 -0
  66. package/dist/types/compute-engine/boxed-expression/trigonometry.d.ts +9 -0
  67. package/dist/types/compute-engine/boxed-expression/utils.d.ts +64 -0
  68. package/dist/types/compute-engine/boxed-expression/validate.d.ts +58 -0
  69. package/dist/types/compute-engine/collection-utils.d.ts +35 -0
  70. package/dist/types/compute-engine/compilation/base-compiler.d.ts +31 -0
  71. package/dist/types/compute-engine/compilation/javascript-target.d.ts +68 -0
  72. package/dist/types/compute-engine/compilation/types.d.ts +83 -0
  73. package/dist/types/compute-engine/cost-function.d.ts +13 -0
  74. package/dist/types/compute-engine/function-utils.d.ts +120 -0
  75. package/dist/types/compute-engine/global-types.d.ts +2930 -0
  76. package/dist/types/compute-engine/index.d.ts +660 -0
  77. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-algebra.d.ts +2 -0
  78. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-arithmetic.d.ts +2 -0
  79. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-calculus.d.ts +2 -0
  80. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-complex.d.ts +2 -0
  81. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-core.d.ts +27 -0
  82. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-linear-algebra.d.ts +2 -0
  83. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-logic.d.ts +2 -0
  84. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-other.d.ts +2 -0
  85. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-relational-operators.d.ts +2 -0
  86. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-sets.d.ts +2 -0
  87. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-statistics.d.ts +2 -0
  88. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-symbols.d.ts +3 -0
  89. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-trigonometry.d.ts +2 -0
  90. package/dist/types/compute-engine/latex-syntax/dictionary/definitions.d.ts +88 -0
  91. package/dist/types/compute-engine/latex-syntax/parse-symbol.d.ts +21 -0
  92. package/dist/types/compute-engine/latex-syntax/parse.d.ts +316 -0
  93. package/dist/types/compute-engine/latex-syntax/serialize-number.d.ts +29 -0
  94. package/dist/types/compute-engine/latex-syntax/serializer-style.d.ts +10 -0
  95. package/dist/types/compute-engine/latex-syntax/serializer.d.ts +37 -0
  96. package/dist/types/compute-engine/latex-syntax/tokenizer.d.ts +18 -0
  97. package/dist/types/compute-engine/latex-syntax/types.d.ts +896 -0
  98. package/dist/types/compute-engine/latex-syntax/utils.d.ts +5 -0
  99. package/dist/types/compute-engine/library/arithmetic.d.ts +4 -0
  100. package/dist/types/compute-engine/library/calculus.d.ts +2 -0
  101. package/dist/types/compute-engine/library/collections.d.ts +27 -0
  102. package/dist/types/compute-engine/library/combinatorics.d.ts +2 -0
  103. package/dist/types/compute-engine/library/complex.d.ts +2 -0
  104. package/dist/types/compute-engine/library/control-structures.d.ts +2 -0
  105. package/dist/types/compute-engine/library/core.d.ts +2 -0
  106. package/dist/types/compute-engine/library/invisible-operator.d.ts +4 -0
  107. package/dist/types/compute-engine/library/library.d.ts +17 -0
  108. package/dist/types/compute-engine/library/linear-algebra.d.ts +2 -0
  109. package/dist/types/compute-engine/library/logic-analysis.d.ts +64 -0
  110. package/dist/types/compute-engine/library/logic-utils.d.ts +58 -0
  111. package/dist/types/compute-engine/library/logic.d.ts +7 -0
  112. package/dist/types/compute-engine/library/number-theory.d.ts +2 -0
  113. package/dist/types/compute-engine/library/polynomials.d.ts +2 -0
  114. package/dist/types/compute-engine/library/random-expression.d.ts +2 -0
  115. package/dist/types/compute-engine/library/relational-operator.d.ts +2 -0
  116. package/dist/types/compute-engine/library/sets.d.ts +2 -0
  117. package/dist/types/compute-engine/library/statistics.d.ts +2 -0
  118. package/dist/types/compute-engine/library/trigonometry.d.ts +2 -0
  119. package/dist/types/compute-engine/library/utils.d.ts +77 -0
  120. package/dist/types/compute-engine/numeric-value/big-numeric-value.d.ts +57 -0
  121. package/dist/types/compute-engine/numeric-value/exact-numeric-value.d.ts +75 -0
  122. package/dist/types/compute-engine/numeric-value/machine-numeric-value.d.ts +56 -0
  123. package/dist/types/compute-engine/numeric-value/types.d.ts +116 -0
  124. package/dist/types/compute-engine/numerics/bigint.d.ts +2 -0
  125. package/dist/types/compute-engine/numerics/expression.d.ts +4 -0
  126. package/dist/types/compute-engine/numerics/interval.d.ts +12 -0
  127. package/dist/types/compute-engine/numerics/monte-carlo.d.ts +4 -0
  128. package/dist/types/compute-engine/numerics/numeric-bigint.d.ts +18 -0
  129. package/dist/types/compute-engine/numerics/numeric-bignum.d.ts +9 -0
  130. package/dist/types/compute-engine/numerics/numeric-complex.d.ts +3 -0
  131. package/dist/types/compute-engine/numerics/numeric.d.ts +60 -0
  132. package/dist/types/compute-engine/numerics/primes.d.ts +7 -0
  133. package/dist/types/compute-engine/numerics/rationals.d.ts +43 -0
  134. package/dist/types/compute-engine/numerics/richardson.d.ts +80 -0
  135. package/dist/types/compute-engine/numerics/special-functions.d.ts +28 -0
  136. package/dist/types/compute-engine/numerics/statistics.d.ts +24 -0
  137. package/dist/types/compute-engine/numerics/strings.d.ts +2 -0
  138. package/dist/types/compute-engine/numerics/types.d.ts +30 -0
  139. package/dist/types/compute-engine/symbolic/antiderivative.d.ts +3 -0
  140. package/dist/types/compute-engine/symbolic/derivative.d.ts +18 -0
  141. package/dist/types/compute-engine/symbolic/distribute.d.ts +5 -0
  142. package/dist/types/compute-engine/symbolic/simplify-product.d.ts +6 -0
  143. package/dist/types/compute-engine/symbolic/simplify-rules.d.ts +27 -0
  144. package/dist/types/compute-engine/symbolic/simplify-sum.d.ts +6 -0
  145. package/dist/types/compute-engine/tensor/tensor-fields.d.ts +128 -0
  146. package/dist/types/compute-engine/tensor/tensors.d.ts +93 -0
  147. package/dist/types/compute-engine/types.d.ts +8 -0
  148. package/dist/types/compute-engine.d.ts +3 -0
  149. package/dist/types/math-json/symbols.d.ts +11 -0
  150. package/dist/types/math-json/types.d.ts +122 -0
  151. package/dist/types/math-json/utils.d.ts +87 -0
  152. package/dist/types/math-json.d.ts +3 -0
  153. package/package.json +1 -1
@@ -0,0 +1,4 @@
1
+ /* 0.32.1 */
2
+ estimate: number;
3
+ error: number;
4
+ };
@@ -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,3 @@
1
+ /* 0.32.1 */
2
+ export declare function gamma(c: Complex): Complex;
3
+ export declare function gammaln(c: Complex): Complex;
@@ -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,2 @@
1
+ /* 0.32.1 */
2
+ export declare function numberToString(num: number | bigint, fractionalDigits?: number | string): string;
@@ -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,3 @@
1
+ /* 0.32.1 */
2
+ /** Calculate the antiderivative of fn, as an expression (not a function) */
3
+ export declare function antiderivative(fn: BoxedExpression, index: string): BoxedExpression;
@@ -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,5 @@
1
+ /* 0.32.1 */
2
+ /**
3
+ *
4
+ */
5
+ export declare function distribute(expr: BoxedExpression, g?: string, f?: string): BoxedExpression;
@@ -0,0 +1,6 @@
1
+ /* 0.32.1 */
2
+ /**
3
+ * Product simplification rules extracted from simplify-rules.ts.
4
+ * Handles 13 patterns for simplifying Product expressions.
5
+ */
6
+ export declare function simplifyProduct(x: BoxedExpression): RuleStep | 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,6 @@
1
+ /* 0.32.1 */
2
+ /**
3
+ * Sum simplification rules extracted from simplify-rules.ts.
4
+ * Handles 16 patterns for simplifying Sum expressions.
5
+ */
6
+ export declare function simplifySum(x: BoxedExpression): RuleStep | undefined;
@@ -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,3 @@
1
+ /* 0.32.1 */
2
+ export { ComputeEngine } from './compute-engine/index';
3
+ export * from './compute-engine/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';