mathjs 14.0.1 → 14.2.0
Sign up to get free protection for your applications and to get access to all the features.
- package/HISTORY.md +20 -0
- package/NOTICE +1 -1
- package/README.md +7 -7
- package/bin/cli.js +1 -1
- package/lib/browser/math.js +1 -1
- package/lib/browser/math.js.LICENSE.txt +5 -5
- package/lib/browser/math.js.map +1 -1
- package/lib/cjs/core/function/import.js +14 -4
- package/lib/cjs/entry/dependenciesAny/dependenciesLarger.generated.js +2 -0
- package/lib/cjs/entry/dependenciesAny/{dependenciesApply.generated.js → dependenciesMapSlices.generated.js} +3 -3
- package/lib/cjs/entry/dependenciesAny/{dependenciesApplyTransform.generated.js → dependenciesMapSlicesTransform.generated.js} +3 -3
- package/lib/cjs/entry/dependenciesAny/dependenciesQuantileSeq.generated.js +2 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesQuantileSeqTransform.generated.js +2 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesRandomInt.generated.js +2 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesSmaller.generated.js +2 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesVariance.generated.js +2 -2
- package/lib/cjs/entry/dependenciesAny/dependenciesVarianceTransform.generated.js +2 -2
- package/lib/cjs/entry/dependenciesAny.generated.js +14 -14
- package/lib/cjs/entry/dependenciesNumber/{dependenciesApply.generated.js → dependenciesMapSlices.generated.js} +3 -3
- package/lib/cjs/entry/dependenciesNumber/{dependenciesApplyTransform.generated.js → dependenciesMapSlicesTransform.generated.js} +3 -3
- package/lib/cjs/entry/dependenciesNumber/dependenciesQuantileSeq.generated.js +2 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesRandomInt.generated.js +2 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesVariance.generated.js +2 -2
- package/lib/cjs/entry/dependenciesNumber/dependenciesVarianceTransform.generated.js +2 -2
- package/lib/cjs/entry/dependenciesNumber.generated.js +14 -14
- package/lib/cjs/entry/impureFunctionsAny.generated.js +86 -85
- package/lib/cjs/entry/impureFunctionsNumber.generated.js +14 -14
- package/lib/cjs/entry/pureFunctionsAny.generated.js +330 -325
- package/lib/cjs/entry/pureFunctionsNumber.generated.js +18 -15
- package/lib/cjs/expression/embeddedDocs/embeddedDocs.js +2 -0
- package/lib/cjs/expression/embeddedDocs/function/arithmetic/sign.js +1 -1
- package/lib/cjs/expression/embeddedDocs/function/matrix/mapSlices.js +17 -0
- package/lib/cjs/expression/transform/index.transform.js +2 -2
- package/lib/cjs/expression/transform/{apply.transform.js → mapSlices.transform.js} +11 -10
- package/lib/cjs/expression/transform/quantileSeq.transform.js +5 -3
- package/lib/cjs/expression/transform/variance.transform.js +3 -3
- package/lib/cjs/factoriesAny.js +14 -14
- package/lib/cjs/factoriesNumber.js +16 -15
- package/lib/cjs/function/arithmetic/ceil.js +34 -26
- package/lib/cjs/function/arithmetic/fix.js +3 -0
- package/lib/cjs/function/arithmetic/floor.js +41 -26
- package/lib/cjs/function/arithmetic/log.js +12 -5
- package/lib/cjs/function/arithmetic/log10.js +15 -7
- package/lib/cjs/function/arithmetic/log2.js +9 -4
- package/lib/cjs/function/arithmetic/round.js +4 -0
- package/lib/cjs/function/matrix/ctranspose.js +1 -1
- package/lib/cjs/function/matrix/{apply.js → mapSlices.js} +19 -12
- package/lib/cjs/function/matrix/matrixFromFunction.js +36 -3
- package/lib/cjs/function/matrix/range.js +54 -5
- package/lib/cjs/function/probability/randomInt.js +26 -3
- package/lib/cjs/function/relational/larger.js +12 -4
- package/lib/cjs/function/relational/smaller.js +12 -4
- package/lib/cjs/function/statistics/max.js +1 -1
- package/lib/cjs/function/statistics/min.js +1 -1
- package/lib/cjs/function/statistics/quantileSeq.js +4 -9
- package/lib/cjs/function/statistics/variance.js +3 -3
- package/lib/cjs/function/string/hex.js +1 -1
- package/lib/cjs/function/string/print.js +2 -2
- package/lib/cjs/function/trigonometry/acoth.js +1 -1
- package/lib/cjs/function/trigonometry/acsc.js +1 -1
- package/lib/cjs/function/trigonometry/asin.js +1 -1
- package/lib/cjs/function/trigonometry/atan2.js +2 -1
- package/lib/cjs/function/trigonometry/cos.js +1 -1
- package/lib/cjs/function/trigonometry/sin.js +1 -1
- package/lib/cjs/function/utils/isInteger.js +1 -1
- package/lib/cjs/header.js +3 -3
- package/lib/cjs/type/matrix/MatrixIndex.js +6 -3
- package/lib/cjs/type/matrix/Range.js +15 -8
- package/lib/cjs/utils/bigint.js +33 -0
- package/lib/cjs/utils/factory.js +5 -2
- package/lib/cjs/utils/number.js +7 -19
- package/lib/cjs/utils/snapshot.js +8 -1
- package/lib/cjs/version.js +1 -1
- package/lib/esm/core/function/import.js +14 -4
- package/lib/esm/entry/dependenciesAny/dependenciesLarger.generated.js +2 -0
- package/lib/esm/entry/{dependenciesNumber/dependenciesApply.generated.js → dependenciesAny/dependenciesMapSlices.generated.js} +3 -3
- package/lib/esm/entry/{dependenciesNumber/dependenciesApplyTransform.generated.js → dependenciesAny/dependenciesMapSlicesTransform.generated.js} +3 -3
- package/lib/esm/entry/dependenciesAny/dependenciesQuantileSeq.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesQuantileSeqTransform.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesRandomInt.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesSmaller.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesVariance.generated.js +2 -2
- package/lib/esm/entry/dependenciesAny/dependenciesVarianceTransform.generated.js +2 -2
- package/lib/esm/entry/dependenciesAny.generated.js +2 -2
- package/lib/esm/entry/{dependenciesAny/dependenciesApply.generated.js → dependenciesNumber/dependenciesMapSlices.generated.js} +3 -3
- package/lib/esm/entry/{dependenciesAny/dependenciesApplyTransform.generated.js → dependenciesNumber/dependenciesMapSlicesTransform.generated.js} +3 -3
- package/lib/esm/entry/dependenciesNumber/dependenciesQuantileSeq.generated.js +2 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesRandomInt.generated.js +2 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesVariance.generated.js +2 -2
- package/lib/esm/entry/dependenciesNumber/dependenciesVarianceTransform.generated.js +2 -2
- package/lib/esm/entry/dependenciesNumber.generated.js +2 -2
- package/lib/esm/entry/impureFunctionsAny.generated.js +88 -87
- package/lib/esm/entry/impureFunctionsNumber.generated.js +16 -16
- package/lib/esm/entry/pureFunctionsAny.generated.js +328 -323
- package/lib/esm/entry/pureFunctionsNumber.generated.js +17 -14
- package/lib/esm/expression/embeddedDocs/embeddedDocs.js +2 -0
- package/lib/esm/expression/embeddedDocs/function/arithmetic/sign.js +1 -1
- package/lib/esm/expression/embeddedDocs/function/matrix/mapSlices.js +11 -0
- package/lib/esm/expression/transform/index.transform.js +3 -3
- package/lib/esm/expression/transform/mapSlices.transform.js +47 -0
- package/lib/esm/expression/transform/quantileSeq.transform.js +5 -3
- package/lib/esm/expression/transform/variance.transform.js +3 -3
- package/lib/esm/factoriesAny.js +2 -2
- package/lib/esm/factoriesNumber.js +2 -2
- package/lib/esm/function/arithmetic/ceil.js +35 -27
- package/lib/esm/function/arithmetic/fix.js +3 -0
- package/lib/esm/function/arithmetic/floor.js +42 -27
- package/lib/esm/function/arithmetic/log.js +12 -5
- package/lib/esm/function/arithmetic/log10.js +16 -8
- package/lib/esm/function/arithmetic/log2.js +9 -4
- package/lib/esm/function/arithmetic/round.js +4 -0
- package/lib/esm/function/matrix/ctranspose.js +1 -1
- package/lib/esm/function/matrix/{apply.js → mapSlices.js} +18 -11
- package/lib/esm/function/matrix/matrixFromFunction.js +36 -3
- package/lib/esm/function/matrix/range.js +54 -5
- package/lib/esm/function/probability/randomInt.js +26 -3
- package/lib/esm/function/relational/larger.js +12 -4
- package/lib/esm/function/relational/smaller.js +12 -4
- package/lib/esm/function/statistics/max.js +1 -1
- package/lib/esm/function/statistics/min.js +1 -1
- package/lib/esm/function/statistics/quantileSeq.js +4 -9
- package/lib/esm/function/statistics/variance.js +3 -3
- package/lib/esm/function/string/hex.js +1 -1
- package/lib/esm/function/string/print.js +2 -2
- package/lib/esm/function/trigonometry/acoth.js +1 -1
- package/lib/esm/function/trigonometry/acsc.js +1 -1
- package/lib/esm/function/trigonometry/asin.js +1 -1
- package/lib/esm/function/trigonometry/atan2.js +2 -1
- package/lib/esm/function/trigonometry/cos.js +1 -1
- package/lib/esm/function/trigonometry/sin.js +1 -1
- package/lib/esm/function/utils/isInteger.js +1 -1
- package/lib/esm/header.js +1 -1
- package/lib/esm/type/matrix/MatrixIndex.js +6 -3
- package/lib/esm/type/matrix/Range.js +16 -9
- package/lib/esm/utils/bigint.js +27 -0
- package/lib/esm/utils/factory.js +5 -2
- package/lib/esm/utils/number.js +6 -17
- package/lib/esm/utils/snapshot.js +8 -1
- package/lib/esm/version.js +1 -1
- package/package.json +13 -11
- package/types/index.d.ts +75 -12
- package/lib/esm/expression/transform/apply.transform.js +0 -44
@@ -26,7 +26,7 @@ const createAsin = exports.createAsin = /* #__PURE__ */(0, _factory.factory)(nam
|
|
26
26
|
* Examples:
|
27
27
|
*
|
28
28
|
* math.asin(0.5) // returns number 0.5235987755982989
|
29
|
-
* math.asin(math.sin(1.5)) // returns number
|
29
|
+
* math.asin(math.sin(1.5)) // returns number 1.5
|
30
30
|
*
|
31
31
|
* math.asin(2) // returns Complex 1.5707963267948966 -1.3169578969248166i
|
32
32
|
*
|
@@ -62,9 +62,10 @@ const createAtan2 = exports.createAtan2 = /* #__PURE__ */(0, _factory.factory)(n
|
|
62
62
|
*
|
63
63
|
* math.atan2(2, 2) / math.pi // returns number 0.25
|
64
64
|
*
|
65
|
-
* const angle = math.unit(60, 'deg')
|
65
|
+
* const angle = math.unit(60, 'deg')
|
66
66
|
* const x = math.cos(angle)
|
67
67
|
* const y = math.sin(angle)
|
68
|
+
* math.atan2(y, x) * 180 / math.pi // returns 60
|
68
69
|
*
|
69
70
|
* math.atan(2) // returns number 1.1071487177940904
|
70
71
|
*
|
@@ -34,7 +34,7 @@ const createCos = exports.createCos = /* #__PURE__ */(0, _factory.factory)(name,
|
|
34
34
|
* math.cos(math.unit(60, 'deg')) // returns number 0.5
|
35
35
|
*
|
36
36
|
* const angle = 0.2
|
37
|
-
* math.pow(math.sin(angle), 2) + math.pow(math.cos(angle), 2) // returns number
|
37
|
+
* math.pow(math.sin(angle), 2) + math.pow(math.cos(angle), 2) // returns number 1
|
38
38
|
*
|
39
39
|
* See also:
|
40
40
|
*
|
@@ -34,7 +34,7 @@ const createSin = exports.createSin = /* #__PURE__ */(0, _factory.factory)(name,
|
|
34
34
|
* math.sin(math.unit(30, 'deg')) // returns number 0.5
|
35
35
|
*
|
36
36
|
* const angle = 0.2
|
37
|
-
* math.pow(math.sin(angle), 2) + math.pow(math.cos(angle), 2) // returns number
|
37
|
+
* math.pow(math.sin(angle), 2) + math.pow(math.cos(angle), 2) // returns number 1
|
38
38
|
*
|
39
39
|
* See also:
|
40
40
|
*
|
@@ -32,7 +32,7 @@ const createIsInteger = exports.createIsInteger = /* #__PURE__ */(0, _factory.fa
|
|
32
32
|
* math.isInteger(math.fraction(4)) // returns true
|
33
33
|
* math.isInteger('3') // returns true
|
34
34
|
* math.isInteger([3, 0.5, -2]) // returns [true, false, true]
|
35
|
-
* math.isInteger(math.complex('2-4i')) // throws
|
35
|
+
* math.isInteger(math.complex('2-4i')) // throws TypeError
|
36
36
|
*
|
37
37
|
* See also:
|
38
38
|
*
|
package/lib/cjs/header.js
CHANGED
@@ -6,11 +6,11 @@
|
|
6
6
|
* It features real and complex numbers, units, matrices, a large set of
|
7
7
|
* mathematical functions, and a flexible expression parser.
|
8
8
|
*
|
9
|
-
* @version 14.0
|
10
|
-
* @date
|
9
|
+
* @version 14.2.0
|
10
|
+
* @date 2025-01-30
|
11
11
|
*
|
12
12
|
* @license
|
13
|
-
* Copyright (C) 2013-
|
13
|
+
* Copyright (C) 2013-2025 Jos de Jong <wjosdejong@gmail.com>
|
14
14
|
*
|
15
15
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
16
16
|
* use this file except in compliance with the License. You may obtain a copy
|
@@ -48,6 +48,7 @@ const createIndexClass = exports.createIndexClass = /* #__PURE__ */(0, _factory.
|
|
48
48
|
const arg = arguments[i];
|
49
49
|
const argIsArray = (0, _is.isArray)(arg);
|
50
50
|
const argIsMatrix = (0, _is.isMatrix)(arg);
|
51
|
+
const argType = typeof arg;
|
51
52
|
let sourceSize = null;
|
52
53
|
if ((0, _is.isRange)(arg)) {
|
53
54
|
this._dimensions.push(arg);
|
@@ -69,13 +70,15 @@ const createIndexClass = exports.createIndexClass = /* #__PURE__ */(0, _factory.
|
|
69
70
|
if (size.length !== 1 || size[0] !== 1 || sourceSize !== null) {
|
70
71
|
this._isScalar = false;
|
71
72
|
}
|
72
|
-
} else if (
|
73
|
+
} else if (argType === 'number') {
|
73
74
|
this._dimensions.push(_createImmutableMatrix([arg]));
|
74
|
-
} else if (
|
75
|
+
} else if (argType === 'bigint') {
|
76
|
+
this._dimensions.push(_createImmutableMatrix([Number(arg)]));
|
77
|
+
} else if (argType === 'string') {
|
75
78
|
// object property (arguments.count should be 1)
|
76
79
|
this._dimensions.push(arg);
|
77
80
|
} else {
|
78
|
-
throw new TypeError('Dimension must be an Array, Matrix, number, string, or Range');
|
81
|
+
throw new TypeError('Dimension must be an Array, Matrix, number, bigint, string, or Range');
|
79
82
|
}
|
80
83
|
this._sourceSize.push(sourceSize);
|
81
84
|
// TODO: implement support for wildcard '*'
|
@@ -11,14 +11,21 @@ const name = 'Range';
|
|
11
11
|
const dependencies = [];
|
12
12
|
const createRangeClass = exports.createRangeClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies, () => {
|
13
13
|
/**
|
14
|
-
* Create a range. A range has a start, step, and end,
|
15
|
-
* to iterate over the range.
|
14
|
+
* Create a range of numbers. A range has a start, step, and end,
|
15
|
+
* and contains functions to iterate over the range.
|
16
16
|
*
|
17
17
|
* A range can be constructed as:
|
18
18
|
*
|
19
19
|
* const range = new Range(start, end)
|
20
20
|
* const range = new Range(start, end, step)
|
21
21
|
*
|
22
|
+
* Note that the endpoints and step may be specified with other numeric
|
23
|
+
* types such as bigint or BigNumber, but they will be demoted to the
|
24
|
+
* built-in `number` type and the Range will only contain numbers. The
|
25
|
+
* rationale for this demotion is that Range objects are primarily used
|
26
|
+
* for indexing Matrix objects, and Matrix objects may only be indexed
|
27
|
+
* with `number`s.
|
28
|
+
*
|
22
29
|
* To get the result of the range:
|
23
30
|
* range.forEach(function (x) {
|
24
31
|
* console.log(x)
|
@@ -51,22 +58,22 @@ const createRangeClass = exports.createRangeClass = /* #__PURE__ */(0, _factory.
|
|
51
58
|
if (hasStart) {
|
52
59
|
if ((0, _is.isBigNumber)(start)) {
|
53
60
|
start = start.toNumber();
|
54
|
-
} else if (typeof start !== 'number') {
|
55
|
-
throw new TypeError('Parameter start must be a number');
|
61
|
+
} else if (typeof start !== 'number' && !(0, _is.isBigInt)(start)) {
|
62
|
+
throw new TypeError('Parameter start must be a number or bigint');
|
56
63
|
}
|
57
64
|
}
|
58
65
|
if (hasEnd) {
|
59
66
|
if ((0, _is.isBigNumber)(end)) {
|
60
67
|
end = end.toNumber();
|
61
|
-
} else if (typeof end !== 'number') {
|
62
|
-
throw new TypeError('Parameter end must be a number');
|
68
|
+
} else if (typeof end !== 'number' && !(0, _is.isBigInt)(end)) {
|
69
|
+
throw new TypeError('Parameter end must be a number or bigint');
|
63
70
|
}
|
64
71
|
}
|
65
72
|
if (hasStep) {
|
66
73
|
if ((0, _is.isBigNumber)(step)) {
|
67
74
|
step = step.toNumber();
|
68
|
-
} else if (typeof step !== 'number') {
|
69
|
-
throw new TypeError('Parameter step must be a number');
|
75
|
+
} else if (typeof step !== 'number' && !(0, _is.isBigInt)(step)) {
|
76
|
+
throw new TypeError('Parameter step must be a number or bigint');
|
70
77
|
}
|
71
78
|
}
|
72
79
|
this.start = hasStart ? parseFloat(start) : 0;
|
@@ -0,0 +1,33 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.promoteLogarithm = promoteLogarithm;
|
7
|
+
/**
|
8
|
+
* Build a bigint logarithm function from a number logarithm,
|
9
|
+
* still returning a number. The idea is that 15 hexadecimal digits
|
10
|
+
* (60 bits) saturates the mantissa of the log, and each additional hex
|
11
|
+
* digit effectively just adds the log of 16 to the resulting value. So
|
12
|
+
* convert the most significant 15 hex digits to a number and take its
|
13
|
+
* log, and then add the log of 16 for each additional hex digit that
|
14
|
+
* was in the bigint.
|
15
|
+
* For negative numbers (complex logarithms), following the bignum
|
16
|
+
* implementation, it just downgrades to number and uses the complex result.
|
17
|
+
* @param {number} log16 the log of 16
|
18
|
+
* @param {(number) -> number} numberLog the logarithm function for numbers
|
19
|
+
* @param {ConfigurationObject} config the mathjs configuration
|
20
|
+
* @param {(number) -> Complex} cplx the associated Complex log
|
21
|
+
* @returns {(bigint) -> number} the corresponding logarithm for bigints
|
22
|
+
*/
|
23
|
+
function promoteLogarithm(log16, numberLog, config, cplx) {
|
24
|
+
return function (b) {
|
25
|
+
if (b > 0 || config.predictable) {
|
26
|
+
if (b <= 0) return NaN;
|
27
|
+
const s = b.toString(16);
|
28
|
+
const s15 = s.substring(0, 15);
|
29
|
+
return log16 * (s.length - s15.length) + numberLog(Number('0x' + s15));
|
30
|
+
}
|
31
|
+
return cplx(b.toNumber());
|
32
|
+
};
|
33
|
+
}
|
package/lib/cjs/utils/factory.js
CHANGED
@@ -31,8 +31,11 @@ var _object = require("./object.js");
|
|
31
31
|
* @param {string} name Name of the function to be created
|
32
32
|
* @param {string[]} dependencies The names of all required dependencies
|
33
33
|
* @param {function} create Callback function called with an object with all dependencies
|
34
|
-
* @param {Object} [meta]
|
35
|
-
*
|
34
|
+
* @param {Object} [meta]
|
35
|
+
* Optional object with meta information that will be attached
|
36
|
+
* to the created factory function as property `meta`. For explanation
|
37
|
+
* of what meta properties can be specified and what they mean, see
|
38
|
+
* docs/core/extension.md.
|
36
39
|
* @returns {function}
|
37
40
|
*/
|
38
41
|
function factory(name, dependencies, create, meta) {
|
package/lib/cjs/utils/number.js
CHANGED
@@ -3,14 +3,13 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
-
exports.cbrt = exports.atanh = exports.asinh = exports.acosh =
|
6
|
+
exports.cbrt = exports.atanh = exports.asinh = exports.acosh = void 0;
|
7
7
|
exports.copysign = copysign;
|
8
8
|
exports.cosh = void 0;
|
9
9
|
exports.digits = digits;
|
10
10
|
exports.expm1 = void 0;
|
11
11
|
exports.format = format;
|
12
12
|
exports.isInteger = isInteger;
|
13
|
-
exports.isIntegerStr = isIntegerStr;
|
14
13
|
exports.log2 = exports.log1p = exports.log10 = void 0;
|
15
14
|
exports.nearlyEqual = nearlyEqual;
|
16
15
|
exports.normalizeFormatOptions = normalizeFormatOptions;
|
@@ -40,16 +39,6 @@ function isInteger(value) {
|
|
40
39
|
return isFinite(value) ? value === Math.round(value) : false;
|
41
40
|
}
|
42
41
|
|
43
|
-
/**
|
44
|
-
* Check if a string contains an integer
|
45
|
-
* @param {string} str
|
46
|
-
* @return {boolean} isInteger
|
47
|
-
*/
|
48
|
-
function isIntegerStr(str) {
|
49
|
-
// regex matching strings like "123" and "-123"
|
50
|
-
return /^-?\d+$/.test(str);
|
51
|
-
}
|
52
|
-
|
53
42
|
/**
|
54
43
|
* Ensure the number type is compatible with the provided value.
|
55
44
|
* If not, return 'number' instead.
|
@@ -69,8 +58,12 @@ function isIntegerStr(str) {
|
|
69
58
|
* @returns {'number' | 'BigNumber' | 'bigint' | 'Fraction'}
|
70
59
|
*/
|
71
60
|
function safeNumberType(numberStr, config) {
|
72
|
-
if (config.number === 'bigint'
|
73
|
-
|
61
|
+
if (config.number === 'bigint') {
|
62
|
+
try {
|
63
|
+
BigInt(numberStr);
|
64
|
+
} catch (_unused) {
|
65
|
+
return config.numberFallback;
|
66
|
+
}
|
74
67
|
}
|
75
68
|
return config.number;
|
76
69
|
}
|
@@ -634,11 +627,6 @@ function digits(value) {
|
|
634
627
|
.length;
|
635
628
|
}
|
636
629
|
|
637
|
-
/**
|
638
|
-
* Minimum number added to one that makes the result different than one
|
639
|
-
*/
|
640
|
-
const DBL_EPSILON = exports.DBL_EPSILON = Number.EPSILON || 2.2204460492503130808472633361816E-16;
|
641
|
-
|
642
630
|
/**
|
643
631
|
* Compares two floating point numbers.
|
644
632
|
* @param {number} a - First value to compare
|
@@ -110,16 +110,22 @@ function createSnapshotFromFactories(factories) {
|
|
110
110
|
const allClasses = {};
|
111
111
|
const allNodeClasses = {};
|
112
112
|
Object.keys(factories).forEach(factoryName => {
|
113
|
+
var _factory$meta$formerl, _factory$meta;
|
113
114
|
const factory = factories[factoryName];
|
114
115
|
const name = factory.fn;
|
115
116
|
const isTransformFunction = factory.meta && factory.meta.isTransformFunction;
|
116
117
|
const isClass = !isLowerCase(name[0]) && validateTypeOf(math[name]) === 'function';
|
117
118
|
const dependenciesName = factory.fn + (isTransformFunction ? 'Transform' : '') + 'Dependencies';
|
119
|
+
const former = (_factory$meta$formerl = (_factory$meta = factory.meta) === null || _factory$meta === void 0 ? void 0 : _factory$meta.formerly) !== null && _factory$meta$formerl !== void 0 ? _factory$meta$formerl : '';
|
118
120
|
allFactoryFunctions[factoryName] = 'function';
|
119
121
|
allFunctionsConstantsClasses[name] = validateTypeOf(math[name]);
|
122
|
+
if (former) {
|
123
|
+
allFunctionsConstantsClasses[former] = allFunctionsConstantsClasses[name];
|
124
|
+
}
|
120
125
|
allDependencyCollections[dependenciesName] = 'Object';
|
121
126
|
if (isTransformFunction) {
|
122
127
|
allTransformFunctions[name] = 'function';
|
128
|
+
if (former) allTransformFunctions[former] = 'function';
|
123
129
|
}
|
124
130
|
if (isClass) {
|
125
131
|
if ((0, _string.endsWith)(name, 'Node')) {
|
@@ -129,6 +135,7 @@ function createSnapshotFromFactories(factories) {
|
|
129
135
|
}
|
130
136
|
} else {
|
131
137
|
allFunctionsConstants[name] = validateTypeOf(math[name]);
|
138
|
+
if (former) allFunctionsConstants[former] = allFunctionsConstants[name];
|
132
139
|
}
|
133
140
|
});
|
134
141
|
let embeddedDocs = {};
|
@@ -140,7 +147,7 @@ function createSnapshotFromFactories(factories) {
|
|
140
147
|
embeddedDocs[name] = 'Object';
|
141
148
|
}
|
142
149
|
});
|
143
|
-
embeddedDocs = exclude(embeddedDocs, ['equalScalar', '
|
150
|
+
embeddedDocs = exclude(embeddedDocs, ['equalScalar', 'addScalar', 'subtractScalar', 'multiplyScalar', 'print', 'divideScalar', 'parse', 'compile', 'parser', 'chain', 'reviver', 'replacer']);
|
144
151
|
const allTypeChecks = {};
|
145
152
|
Object.keys(allIsFunctions).forEach(name => {
|
146
153
|
if (name.indexOf('is') === 0) {
|
package/lib/cjs/version.js
CHANGED
@@ -4,6 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.version = void 0;
|
7
|
-
const version = exports.version = '14.0
|
7
|
+
const version = exports.version = '14.2.0';
|
8
8
|
// Note: This file is automatically generated when building math.js.
|
9
9
|
// Changes made in this file will be overwritten.
|
@@ -217,6 +217,7 @@ export function importFactory(typed, load, math, importedFactories) {
|
|
217
217
|
* @private
|
218
218
|
*/
|
219
219
|
function _importFactory(factory, options) {
|
220
|
+
var _factory$meta$formerl, _factory$meta;
|
220
221
|
var name = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : factory.fn;
|
221
222
|
if (name.includes('.')) {
|
222
223
|
throw new Error('Factory name should not contain a nested path. ' + 'Name: ' + JSON.stringify(name));
|
@@ -260,28 +261,37 @@ export function importFactory(typed, load, math, importedFactories) {
|
|
260
261
|
throw new Error('Cannot import "' + name + '": already exists');
|
261
262
|
}
|
262
263
|
};
|
264
|
+
var former = (_factory$meta$formerl = (_factory$meta = factory.meta) === null || _factory$meta === void 0 ? void 0 : _factory$meta.formerly) !== null && _factory$meta$formerl !== void 0 ? _factory$meta$formerl : '';
|
265
|
+
var needsTransform = isTransformFunctionFactory(factory) || factoryAllowedInExpressions(factory);
|
266
|
+
var withTransform = math.expression.mathWithTransform;
|
263
267
|
|
264
268
|
// TODO: add unit test with non-lazy factory
|
265
269
|
if (!factory.meta || factory.meta.lazy !== false) {
|
266
270
|
lazy(namespace, name, resolver);
|
271
|
+
if (former) lazy(namespace, former, resolver);
|
267
272
|
|
268
273
|
// FIXME: remove the `if (existing &&` condition again. Can we make sure subset is loaded before subset.transform? (Name collision, and no dependencies between the two)
|
269
274
|
if (existing && existingTransform) {
|
270
275
|
_deleteTransform(name);
|
276
|
+
if (former) _deleteTransform(former);
|
271
277
|
} else {
|
272
|
-
if (
|
273
|
-
lazy(
|
278
|
+
if (needsTransform) {
|
279
|
+
lazy(withTransform, name, () => namespace[name]);
|
280
|
+
if (former) lazy(withTransform, former, () => namespace[name]);
|
274
281
|
}
|
275
282
|
}
|
276
283
|
} else {
|
277
284
|
namespace[name] = resolver();
|
285
|
+
if (former) namespace[former] = namespace[name];
|
278
286
|
|
279
287
|
// FIXME: remove the `if (existing &&` condition again. Can we make sure subset is loaded before subset.transform? (Name collision, and no dependencies between the two)
|
280
288
|
if (existing && existingTransform) {
|
281
289
|
_deleteTransform(name);
|
290
|
+
if (former) _deleteTransform(former);
|
282
291
|
} else {
|
283
|
-
if (
|
284
|
-
lazy(
|
292
|
+
if (needsTransform) {
|
293
|
+
lazy(withTransform, name, () => namespace[name]);
|
294
|
+
if (former) lazy(withTransform, former, () => namespace[name]);
|
285
295
|
}
|
286
296
|
}
|
287
297
|
}
|
@@ -4,6 +4,7 @@
|
|
4
4
|
*/
|
5
5
|
import { DenseMatrixDependencies } from './dependenciesDenseMatrixClass.generated.js';
|
6
6
|
import { SparseMatrixDependencies } from './dependenciesSparseMatrixClass.generated.js';
|
7
|
+
import { bignumberDependencies } from './dependenciesBignumber.generated.js';
|
7
8
|
import { concatDependencies } from './dependenciesConcat.generated.js';
|
8
9
|
import { matrixDependencies } from './dependenciesMatrix.generated.js';
|
9
10
|
import { typedDependencies } from './dependenciesTyped.generated.js';
|
@@ -11,6 +12,7 @@ import { createLarger } from '../../factoriesAny.js';
|
|
11
12
|
export var largerDependencies = {
|
12
13
|
DenseMatrixDependencies,
|
13
14
|
SparseMatrixDependencies,
|
15
|
+
bignumberDependencies,
|
14
16
|
concatDependencies,
|
15
17
|
matrixDependencies,
|
16
18
|
typedDependencies,
|
@@ -4,9 +4,9 @@
|
|
4
4
|
*/
|
5
5
|
import { isIntegerDependencies } from './dependenciesIsInteger.generated.js';
|
6
6
|
import { typedDependencies } from './dependenciesTyped.generated.js';
|
7
|
-
import {
|
8
|
-
export var
|
7
|
+
import { createMapSlices } from '../../factoriesAny.js';
|
8
|
+
export var mapSlicesDependencies = {
|
9
9
|
isIntegerDependencies,
|
10
10
|
typedDependencies,
|
11
|
-
|
11
|
+
createMapSlices
|
12
12
|
};
|
@@ -4,9 +4,9 @@
|
|
4
4
|
*/
|
5
5
|
import { isIntegerDependencies } from './dependenciesIsInteger.generated.js';
|
6
6
|
import { typedDependencies } from './dependenciesTyped.generated.js';
|
7
|
-
import {
|
8
|
-
export var
|
7
|
+
import { createMapSlicesTransform } from '../../factoriesAny.js';
|
8
|
+
export var mapSlicesTransformDependencies = {
|
9
9
|
isIntegerDependencies,
|
10
10
|
typedDependencies,
|
11
|
-
|
11
|
+
createMapSlicesTransform
|
12
12
|
};
|
@@ -8,6 +8,7 @@ import { compareDependencies } from './dependenciesCompare.generated.js';
|
|
8
8
|
import { divideDependencies } from './dependenciesDivide.generated.js';
|
9
9
|
import { isIntegerDependencies } from './dependenciesIsInteger.generated.js';
|
10
10
|
import { largerDependencies } from './dependenciesLarger.generated.js';
|
11
|
+
import { mapSlicesDependencies } from './dependenciesMapSlices.generated.js';
|
11
12
|
import { multiplyDependencies } from './dependenciesMultiply.generated.js';
|
12
13
|
import { partitionSelectDependencies } from './dependenciesPartitionSelect.generated.js';
|
13
14
|
import { smallerDependencies } from './dependenciesSmaller.generated.js';
|
@@ -22,6 +23,7 @@ export var quantileSeqDependencies = {
|
|
22
23
|
divideDependencies,
|
23
24
|
isIntegerDependencies,
|
24
25
|
largerDependencies,
|
26
|
+
mapSlicesDependencies,
|
25
27
|
multiplyDependencies,
|
26
28
|
partitionSelectDependencies,
|
27
29
|
smallerDependencies,
|
@@ -8,6 +8,7 @@ import { compareDependencies } from './dependenciesCompare.generated.js';
|
|
8
8
|
import { divideDependencies } from './dependenciesDivide.generated.js';
|
9
9
|
import { isIntegerDependencies } from './dependenciesIsInteger.generated.js';
|
10
10
|
import { largerDependencies } from './dependenciesLarger.generated.js';
|
11
|
+
import { mapSlicesDependencies } from './dependenciesMapSlices.generated.js';
|
11
12
|
import { multiplyDependencies } from './dependenciesMultiply.generated.js';
|
12
13
|
import { partitionSelectDependencies } from './dependenciesPartitionSelect.generated.js';
|
13
14
|
import { smallerDependencies } from './dependenciesSmaller.generated.js';
|
@@ -22,6 +23,7 @@ export var quantileSeqTransformDependencies = {
|
|
22
23
|
divideDependencies,
|
23
24
|
isIntegerDependencies,
|
24
25
|
largerDependencies,
|
26
|
+
mapSlicesDependencies,
|
25
27
|
multiplyDependencies,
|
26
28
|
partitionSelectDependencies,
|
27
29
|
smallerDependencies,
|
@@ -2,9 +2,11 @@
|
|
2
2
|
* THIS FILE IS AUTO-GENERATED
|
3
3
|
* DON'T MAKE CHANGES HERE
|
4
4
|
*/
|
5
|
+
import { log2Dependencies } from './dependenciesLog2.generated.js';
|
5
6
|
import { typedDependencies } from './dependenciesTyped.generated.js';
|
6
7
|
import { createRandomInt } from '../../factoriesAny.js';
|
7
8
|
export var randomIntDependencies = {
|
9
|
+
log2Dependencies,
|
8
10
|
typedDependencies,
|
9
11
|
createRandomInt
|
10
12
|
};
|
@@ -4,6 +4,7 @@
|
|
4
4
|
*/
|
5
5
|
import { DenseMatrixDependencies } from './dependenciesDenseMatrixClass.generated.js';
|
6
6
|
import { SparseMatrixDependencies } from './dependenciesSparseMatrixClass.generated.js';
|
7
|
+
import { bignumberDependencies } from './dependenciesBignumber.generated.js';
|
7
8
|
import { concatDependencies } from './dependenciesConcat.generated.js';
|
8
9
|
import { matrixDependencies } from './dependenciesMatrix.generated.js';
|
9
10
|
import { typedDependencies } from './dependenciesTyped.generated.js';
|
@@ -11,6 +12,7 @@ import { createSmaller } from '../../factoriesAny.js';
|
|
11
12
|
export var smallerDependencies = {
|
12
13
|
DenseMatrixDependencies,
|
13
14
|
SparseMatrixDependencies,
|
15
|
+
bignumberDependencies,
|
14
16
|
concatDependencies,
|
15
17
|
matrixDependencies,
|
16
18
|
typedDependencies,
|
@@ -3,18 +3,18 @@
|
|
3
3
|
* DON'T MAKE CHANGES HERE
|
4
4
|
*/
|
5
5
|
import { addDependencies } from './dependenciesAdd.generated.js';
|
6
|
-
import { applyDependencies } from './dependenciesApply.generated.js';
|
7
6
|
import { divideDependencies } from './dependenciesDivide.generated.js';
|
8
7
|
import { isNaNDependencies } from './dependenciesIsNaN.generated.js';
|
8
|
+
import { mapSlicesDependencies } from './dependenciesMapSlices.generated.js';
|
9
9
|
import { multiplyDependencies } from './dependenciesMultiply.generated.js';
|
10
10
|
import { subtractDependencies } from './dependenciesSubtract.generated.js';
|
11
11
|
import { typedDependencies } from './dependenciesTyped.generated.js';
|
12
12
|
import { createVariance } from '../../factoriesAny.js';
|
13
13
|
export var varianceDependencies = {
|
14
14
|
addDependencies,
|
15
|
-
applyDependencies,
|
16
15
|
divideDependencies,
|
17
16
|
isNaNDependencies,
|
17
|
+
mapSlicesDependencies,
|
18
18
|
multiplyDependencies,
|
19
19
|
subtractDependencies,
|
20
20
|
typedDependencies,
|
@@ -3,18 +3,18 @@
|
|
3
3
|
* DON'T MAKE CHANGES HERE
|
4
4
|
*/
|
5
5
|
import { addDependencies } from './dependenciesAdd.generated.js';
|
6
|
-
import { applyDependencies } from './dependenciesApply.generated.js';
|
7
6
|
import { divideDependencies } from './dependenciesDivide.generated.js';
|
8
7
|
import { isNaNDependencies } from './dependenciesIsNaN.generated.js';
|
8
|
+
import { mapSlicesDependencies } from './dependenciesMapSlices.generated.js';
|
9
9
|
import { multiplyDependencies } from './dependenciesMultiply.generated.js';
|
10
10
|
import { subtractDependencies } from './dependenciesSubtract.generated.js';
|
11
11
|
import { typedDependencies } from './dependenciesTyped.generated.js';
|
12
12
|
import { createVarianceTransform } from '../../factoriesAny.js';
|
13
13
|
export var varianceTransformDependencies = {
|
14
14
|
addDependencies,
|
15
|
-
applyDependencies,
|
16
15
|
divideDependencies,
|
17
16
|
isNaNDependencies,
|
17
|
+
mapSlicesDependencies,
|
18
18
|
multiplyDependencies,
|
19
19
|
subtractDependencies,
|
20
20
|
typedDependencies,
|
@@ -14,8 +14,6 @@ export { addDependencies } from './dependenciesAny/dependenciesAdd.generated.js'
|
|
14
14
|
export { addScalarDependencies } from './dependenciesAny/dependenciesAddScalar.generated.js';
|
15
15
|
export { andDependencies } from './dependenciesAny/dependenciesAnd.generated.js';
|
16
16
|
export { andTransformDependencies } from './dependenciesAny/dependenciesAndTransform.generated.js';
|
17
|
-
export { applyDependencies } from './dependenciesAny/dependenciesApply.generated.js';
|
18
|
-
export { applyTransformDependencies } from './dependenciesAny/dependenciesApplyTransform.generated.js';
|
19
17
|
export { argDependencies } from './dependenciesAny/dependenciesArg.generated.js';
|
20
18
|
export { ArrayNodeDependencies } from './dependenciesAny/dependenciesArrayNode.generated.js';
|
21
19
|
export { asecDependencies } from './dependenciesAny/dependenciesAsec.generated.js';
|
@@ -193,6 +191,8 @@ export { madDependencies } from './dependenciesAny/dependenciesMad.generated.js'
|
|
193
191
|
export { magneticConstantDependencies } from './dependenciesAny/dependenciesMagneticConstant.generated.js';
|
194
192
|
export { magneticFluxQuantumDependencies } from './dependenciesAny/dependenciesMagneticFluxQuantum.generated.js';
|
195
193
|
export { mapDependencies } from './dependenciesAny/dependenciesMap.generated.js';
|
194
|
+
export { mapSlicesDependencies } from './dependenciesAny/dependenciesMapSlices.generated.js';
|
195
|
+
export { mapSlicesTransformDependencies } from './dependenciesAny/dependenciesMapSlicesTransform.generated.js';
|
196
196
|
export { mapTransformDependencies } from './dependenciesAny/dependenciesMapTransform.generated.js';
|
197
197
|
export { matrixDependencies } from './dependenciesAny/dependenciesMatrix.generated.js';
|
198
198
|
export { MatrixDependencies } from './dependenciesAny/dependenciesMatrixClass.generated.js';
|
@@ -4,9 +4,9 @@
|
|
4
4
|
*/
|
5
5
|
import { isIntegerDependencies } from './dependenciesIsInteger.generated.js';
|
6
6
|
import { typedDependencies } from './dependenciesTyped.generated.js';
|
7
|
-
import {
|
8
|
-
export var
|
7
|
+
import { createMapSlices } from '../../factoriesNumber.js';
|
8
|
+
export var mapSlicesDependencies = {
|
9
9
|
isIntegerDependencies,
|
10
10
|
typedDependencies,
|
11
|
-
|
11
|
+
createMapSlices
|
12
12
|
};
|
@@ -4,9 +4,9 @@
|
|
4
4
|
*/
|
5
5
|
import { isIntegerDependencies } from './dependenciesIsInteger.generated.js';
|
6
6
|
import { typedDependencies } from './dependenciesTyped.generated.js';
|
7
|
-
import {
|
8
|
-
export var
|
7
|
+
import { createMapSlicesTransform } from '../../factoriesNumber.js';
|
8
|
+
export var mapSlicesTransformDependencies = {
|
9
9
|
isIntegerDependencies,
|
10
10
|
typedDependencies,
|
11
|
-
|
11
|
+
createMapSlicesTransform
|
12
12
|
};
|
@@ -7,6 +7,7 @@ import { compareDependencies } from './dependenciesCompare.generated.js';
|
|
7
7
|
import { divideDependencies } from './dependenciesDivide.generated.js';
|
8
8
|
import { isIntegerDependencies } from './dependenciesIsInteger.generated.js';
|
9
9
|
import { largerDependencies } from './dependenciesLarger.generated.js';
|
10
|
+
import { mapSlicesDependencies } from './dependenciesMapSlices.generated.js';
|
10
11
|
import { multiplyDependencies } from './dependenciesMultiply.generated.js';
|
11
12
|
import { partitionSelectDependencies } from './dependenciesPartitionSelect.generated.js';
|
12
13
|
import { smallerDependencies } from './dependenciesSmaller.generated.js';
|
@@ -20,6 +21,7 @@ export var quantileSeqDependencies = {
|
|
20
21
|
divideDependencies,
|
21
22
|
isIntegerDependencies,
|
22
23
|
largerDependencies,
|
24
|
+
mapSlicesDependencies,
|
23
25
|
multiplyDependencies,
|
24
26
|
partitionSelectDependencies,
|
25
27
|
smallerDependencies,
|
@@ -2,9 +2,11 @@
|
|
2
2
|
* THIS FILE IS AUTO-GENERATED
|
3
3
|
* DON'T MAKE CHANGES HERE
|
4
4
|
*/
|
5
|
+
import { log2Dependencies } from './dependenciesLog2.generated.js';
|
5
6
|
import { typedDependencies } from './dependenciesTyped.generated.js';
|
6
7
|
import { createRandomInt } from '../../factoriesNumber.js';
|
7
8
|
export var randomIntDependencies = {
|
9
|
+
log2Dependencies,
|
8
10
|
typedDependencies,
|
9
11
|
createRandomInt
|
10
12
|
};
|
@@ -3,18 +3,18 @@
|
|
3
3
|
* DON'T MAKE CHANGES HERE
|
4
4
|
*/
|
5
5
|
import { addDependencies } from './dependenciesAdd.generated.js';
|
6
|
-
import { applyDependencies } from './dependenciesApply.generated.js';
|
7
6
|
import { divideDependencies } from './dependenciesDivide.generated.js';
|
8
7
|
import { isNaNDependencies } from './dependenciesIsNaN.generated.js';
|
8
|
+
import { mapSlicesDependencies } from './dependenciesMapSlices.generated.js';
|
9
9
|
import { multiplyDependencies } from './dependenciesMultiply.generated.js';
|
10
10
|
import { subtractDependencies } from './dependenciesSubtract.generated.js';
|
11
11
|
import { typedDependencies } from './dependenciesTyped.generated.js';
|
12
12
|
import { createVariance } from '../../factoriesNumber.js';
|
13
13
|
export var varianceDependencies = {
|
14
14
|
addDependencies,
|
15
|
-
applyDependencies,
|
16
15
|
divideDependencies,
|
17
16
|
isNaNDependencies,
|
17
|
+
mapSlicesDependencies,
|
18
18
|
multiplyDependencies,
|
19
19
|
subtractDependencies,
|
20
20
|
typedDependencies,
|
@@ -3,18 +3,18 @@
|
|
3
3
|
* DON'T MAKE CHANGES HERE
|
4
4
|
*/
|
5
5
|
import { addDependencies } from './dependenciesAdd.generated.js';
|
6
|
-
import { applyDependencies } from './dependenciesApply.generated.js';
|
7
6
|
import { divideDependencies } from './dependenciesDivide.generated.js';
|
8
7
|
import { isNaNDependencies } from './dependenciesIsNaN.generated.js';
|
8
|
+
import { mapSlicesDependencies } from './dependenciesMapSlices.generated.js';
|
9
9
|
import { multiplyDependencies } from './dependenciesMultiply.generated.js';
|
10
10
|
import { subtractDependencies } from './dependenciesSubtract.generated.js';
|
11
11
|
import { typedDependencies } from './dependenciesTyped.generated.js';
|
12
12
|
import { createVarianceTransform } from '../../factoriesNumber.js';
|
13
13
|
export var varianceTransformDependencies = {
|
14
14
|
addDependencies,
|
15
|
-
applyDependencies,
|
16
15
|
divideDependencies,
|
17
16
|
isNaNDependencies,
|
17
|
+
mapSlicesDependencies,
|
18
18
|
multiplyDependencies,
|
19
19
|
subtractDependencies,
|
20
20
|
typedDependencies,
|