mathjs 14.2.1 → 14.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/HISTORY.md +16 -0
- package/lib/browser/math.js +1 -1
- package/lib/browser/math.js.LICENSE.txt +2 -2
- package/lib/browser/math.js.map +1 -1
- package/lib/cjs/entry/dependenciesAny/dependenciesMax.generated.js +2 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesMaxTransform.generated.js +2 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesMin.generated.js +2 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesMinTransform.generated.js +2 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesMax.generated.js +2 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesMaxTransform.generated.js +2 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesMin.generated.js +2 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesMinTransform.generated.js +2 -0
- package/lib/cjs/entry/impureFunctionsAny.generated.js +2 -0
- package/lib/cjs/entry/impureFunctionsNumber.generated.js +2 -0
- package/lib/cjs/entry/pureFunctionsAny.generated.js +2 -0
- package/lib/cjs/entry/pureFunctionsNumber.generated.js +2 -0
- package/lib/cjs/expression/embeddedDocs/function/matrix/mapSlices.js +1 -1
- package/lib/cjs/expression/embeddedDocs/function/relational/larger.js +1 -1
- package/lib/cjs/expression/embeddedDocs/function/relational/smaller.js +1 -1
- package/lib/cjs/expression/embeddedDocs/function/statistics/max.js +1 -1
- package/lib/cjs/expression/embeddedDocs/function/statistics/min.js +1 -1
- package/lib/cjs/expression/transform/max.transform.js +5 -3
- package/lib/cjs/expression/transform/min.transform.js +5 -3
- package/lib/cjs/expression/transform/variance.transform.js +2 -2
- package/lib/cjs/function/matrix/flatten.js +1 -1
- package/lib/cjs/function/matrix/forEach.js +1 -1
- package/lib/cjs/function/matrix/map.js +1 -1
- package/lib/cjs/function/matrix/partitionSelect.js +2 -2
- package/lib/cjs/function/statistics/max.js +5 -4
- package/lib/cjs/function/statistics/min.js +5 -4
- package/lib/cjs/function/statistics/mode.js +2 -2
- package/lib/cjs/function/statistics/variance.js +2 -2
- package/lib/cjs/header.js +2 -2
- package/lib/cjs/type/matrix/DenseMatrix.js +45 -48
- package/lib/cjs/utils/array.js +120 -48
- package/lib/cjs/utils/collection.js +14 -15
- package/lib/cjs/utils/optimizeCallback.js +19 -2
- package/lib/cjs/version.js +1 -1
- package/lib/esm/entry/dependenciesAny/dependenciesMax.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesMaxTransform.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesMin.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesMinTransform.generated.js +2 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesMax.generated.js +2 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesMaxTransform.generated.js +2 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesMin.generated.js +2 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesMinTransform.generated.js +2 -0
- package/lib/esm/entry/impureFunctionsAny.generated.js +2 -0
- package/lib/esm/entry/impureFunctionsNumber.generated.js +2 -0
- package/lib/esm/entry/pureFunctionsAny.generated.js +2 -0
- package/lib/esm/entry/pureFunctionsNumber.generated.js +2 -0
- package/lib/esm/expression/embeddedDocs/function/matrix/mapSlices.js +1 -1
- package/lib/esm/expression/embeddedDocs/function/relational/larger.js +1 -1
- package/lib/esm/expression/embeddedDocs/function/relational/smaller.js +1 -1
- package/lib/esm/expression/embeddedDocs/function/statistics/max.js +1 -1
- package/lib/esm/expression/embeddedDocs/function/statistics/min.js +1 -1
- package/lib/esm/expression/transform/max.transform.js +5 -3
- package/lib/esm/expression/transform/min.transform.js +5 -3
- package/lib/esm/expression/transform/variance.transform.js +2 -2
- package/lib/esm/function/matrix/flatten.js +1 -1
- package/lib/esm/function/matrix/forEach.js +2 -2
- package/lib/esm/function/matrix/map.js +2 -2
- package/lib/esm/function/matrix/partitionSelect.js +2 -2
- package/lib/esm/function/statistics/max.js +5 -4
- package/lib/esm/function/statistics/min.js +5 -4
- package/lib/esm/function/statistics/mode.js +2 -2
- package/lib/esm/function/statistics/variance.js +2 -2
- package/lib/esm/type/matrix/DenseMatrix.js +46 -49
- package/lib/esm/utils/array.js +118 -47
- package/lib/esm/utils/collection.js +15 -16
- package/lib/esm/utils/optimizeCallback.js +19 -2
- package/lib/esm/version.js +1 -1
- package/package.json +9 -9
- package/types/index.d.ts +2 -1
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.maxDependencies = void 0;
|
7
|
+
var _dependenciesIsNaNGenerated = require("./dependenciesIsNaN.generated.js");
|
7
8
|
var _dependenciesLargerGenerated = require("./dependenciesLarger.generated.js");
|
8
9
|
var _dependenciesNumericGenerated = require("./dependenciesNumeric.generated.js");
|
9
10
|
var _dependenciesTypedGenerated = require("./dependenciesTyped.generated.js");
|
@@ -14,6 +15,7 @@ var _factoriesAny = require("../../factoriesAny.js");
|
|
14
15
|
*/
|
15
16
|
|
16
17
|
const maxDependencies = exports.maxDependencies = {
|
18
|
+
isNaNDependencies: _dependenciesIsNaNGenerated.isNaNDependencies,
|
17
19
|
largerDependencies: _dependenciesLargerGenerated.largerDependencies,
|
18
20
|
numericDependencies: _dependenciesNumericGenerated.numericDependencies,
|
19
21
|
typedDependencies: _dependenciesTypedGenerated.typedDependencies,
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.maxTransformDependencies = void 0;
|
7
|
+
var _dependenciesIsNaNGenerated = require("./dependenciesIsNaN.generated.js");
|
7
8
|
var _dependenciesLargerGenerated = require("./dependenciesLarger.generated.js");
|
8
9
|
var _dependenciesNumericGenerated = require("./dependenciesNumeric.generated.js");
|
9
10
|
var _dependenciesTypedGenerated = require("./dependenciesTyped.generated.js");
|
@@ -14,6 +15,7 @@ var _factoriesAny = require("../../factoriesAny.js");
|
|
14
15
|
*/
|
15
16
|
|
16
17
|
const maxTransformDependencies = exports.maxTransformDependencies = {
|
18
|
+
isNaNDependencies: _dependenciesIsNaNGenerated.isNaNDependencies,
|
17
19
|
largerDependencies: _dependenciesLargerGenerated.largerDependencies,
|
18
20
|
numericDependencies: _dependenciesNumericGenerated.numericDependencies,
|
19
21
|
typedDependencies: _dependenciesTypedGenerated.typedDependencies,
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.minDependencies = void 0;
|
7
|
+
var _dependenciesIsNaNGenerated = require("./dependenciesIsNaN.generated.js");
|
7
8
|
var _dependenciesNumericGenerated = require("./dependenciesNumeric.generated.js");
|
8
9
|
var _dependenciesSmallerGenerated = require("./dependenciesSmaller.generated.js");
|
9
10
|
var _dependenciesTypedGenerated = require("./dependenciesTyped.generated.js");
|
@@ -14,6 +15,7 @@ var _factoriesAny = require("../../factoriesAny.js");
|
|
14
15
|
*/
|
15
16
|
|
16
17
|
const minDependencies = exports.minDependencies = {
|
18
|
+
isNaNDependencies: _dependenciesIsNaNGenerated.isNaNDependencies,
|
17
19
|
numericDependencies: _dependenciesNumericGenerated.numericDependencies,
|
18
20
|
smallerDependencies: _dependenciesSmallerGenerated.smallerDependencies,
|
19
21
|
typedDependencies: _dependenciesTypedGenerated.typedDependencies,
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.minTransformDependencies = void 0;
|
7
|
+
var _dependenciesIsNaNGenerated = require("./dependenciesIsNaN.generated.js");
|
7
8
|
var _dependenciesNumericGenerated = require("./dependenciesNumeric.generated.js");
|
8
9
|
var _dependenciesSmallerGenerated = require("./dependenciesSmaller.generated.js");
|
9
10
|
var _dependenciesTypedGenerated = require("./dependenciesTyped.generated.js");
|
@@ -14,6 +15,7 @@ var _factoriesAny = require("../../factoriesAny.js");
|
|
14
15
|
*/
|
15
16
|
|
16
17
|
const minTransformDependencies = exports.minTransformDependencies = {
|
18
|
+
isNaNDependencies: _dependenciesIsNaNGenerated.isNaNDependencies,
|
17
19
|
numericDependencies: _dependenciesNumericGenerated.numericDependencies,
|
18
20
|
smallerDependencies: _dependenciesSmallerGenerated.smallerDependencies,
|
19
21
|
typedDependencies: _dependenciesTypedGenerated.typedDependencies,
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.maxDependencies = void 0;
|
7
|
+
var _dependenciesIsNaNGenerated = require("./dependenciesIsNaN.generated.js");
|
7
8
|
var _dependenciesLargerGenerated = require("./dependenciesLarger.generated.js");
|
8
9
|
var _dependenciesNumericGenerated = require("./dependenciesNumeric.generated.js");
|
9
10
|
var _dependenciesTypedGenerated = require("./dependenciesTyped.generated.js");
|
@@ -14,6 +15,7 @@ var _factoriesNumber = require("../../factoriesNumber.js");
|
|
14
15
|
*/
|
15
16
|
|
16
17
|
const maxDependencies = exports.maxDependencies = {
|
18
|
+
isNaNDependencies: _dependenciesIsNaNGenerated.isNaNDependencies,
|
17
19
|
largerDependencies: _dependenciesLargerGenerated.largerDependencies,
|
18
20
|
numericDependencies: _dependenciesNumericGenerated.numericDependencies,
|
19
21
|
typedDependencies: _dependenciesTypedGenerated.typedDependencies,
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.maxTransformDependencies = void 0;
|
7
|
+
var _dependenciesIsNaNGenerated = require("./dependenciesIsNaN.generated.js");
|
7
8
|
var _dependenciesLargerGenerated = require("./dependenciesLarger.generated.js");
|
8
9
|
var _dependenciesNumericGenerated = require("./dependenciesNumeric.generated.js");
|
9
10
|
var _dependenciesTypedGenerated = require("./dependenciesTyped.generated.js");
|
@@ -14,6 +15,7 @@ var _factoriesNumber = require("../../factoriesNumber.js");
|
|
14
15
|
*/
|
15
16
|
|
16
17
|
const maxTransformDependencies = exports.maxTransformDependencies = {
|
18
|
+
isNaNDependencies: _dependenciesIsNaNGenerated.isNaNDependencies,
|
17
19
|
largerDependencies: _dependenciesLargerGenerated.largerDependencies,
|
18
20
|
numericDependencies: _dependenciesNumericGenerated.numericDependencies,
|
19
21
|
typedDependencies: _dependenciesTypedGenerated.typedDependencies,
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.minDependencies = void 0;
|
7
|
+
var _dependenciesIsNaNGenerated = require("./dependenciesIsNaN.generated.js");
|
7
8
|
var _dependenciesNumericGenerated = require("./dependenciesNumeric.generated.js");
|
8
9
|
var _dependenciesSmallerGenerated = require("./dependenciesSmaller.generated.js");
|
9
10
|
var _dependenciesTypedGenerated = require("./dependenciesTyped.generated.js");
|
@@ -14,6 +15,7 @@ var _factoriesNumber = require("../../factoriesNumber.js");
|
|
14
15
|
*/
|
15
16
|
|
16
17
|
const minDependencies = exports.minDependencies = {
|
18
|
+
isNaNDependencies: _dependenciesIsNaNGenerated.isNaNDependencies,
|
17
19
|
numericDependencies: _dependenciesNumericGenerated.numericDependencies,
|
18
20
|
smallerDependencies: _dependenciesSmallerGenerated.smallerDependencies,
|
19
21
|
typedDependencies: _dependenciesTypedGenerated.typedDependencies,
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.minTransformDependencies = void 0;
|
7
|
+
var _dependenciesIsNaNGenerated = require("./dependenciesIsNaN.generated.js");
|
7
8
|
var _dependenciesNumericGenerated = require("./dependenciesNumeric.generated.js");
|
8
9
|
var _dependenciesSmallerGenerated = require("./dependenciesSmaller.generated.js");
|
9
10
|
var _dependenciesTypedGenerated = require("./dependenciesTyped.generated.js");
|
@@ -14,6 +15,7 @@ var _factoriesNumber = require("../../factoriesNumber.js");
|
|
14
15
|
*/
|
15
16
|
|
16
17
|
const minTransformDependencies = exports.minTransformDependencies = {
|
18
|
+
isNaNDependencies: _dependenciesIsNaNGenerated.isNaNDependencies,
|
17
19
|
numericDependencies: _dependenciesNumericGenerated.numericDependencies,
|
18
20
|
smallerDependencies: _dependenciesSmallerGenerated.smallerDependencies,
|
19
21
|
typedDependencies: _dependenciesTypedGenerated.typedDependencies,
|
@@ -624,6 +624,7 @@ const help = exports.help = (0, _factoriesAny.createHelp)({
|
|
624
624
|
}),
|
625
625
|
min: (0, _factoriesAny.createMinTransform)({
|
626
626
|
config: _configReadonly.config,
|
627
|
+
isNaN: _pureFunctionsAnyGenerated.isNaN,
|
627
628
|
numeric: _pureFunctionsAnyGenerated.numeric,
|
628
629
|
smaller: _pureFunctionsAnyGenerated.smaller,
|
629
630
|
typed: _pureFunctionsAnyGenerated.typed
|
@@ -655,6 +656,7 @@ const help = exports.help = (0, _factoriesAny.createHelp)({
|
|
655
656
|
}),
|
656
657
|
max: (0, _factoriesAny.createMaxTransform)({
|
657
658
|
config: _configReadonly.config,
|
659
|
+
isNaN: _pureFunctionsAnyGenerated.isNaN,
|
658
660
|
larger: _pureFunctionsAnyGenerated.larger,
|
659
661
|
numeric: _pureFunctionsAnyGenerated.numeric,
|
660
662
|
typed: _pureFunctionsAnyGenerated.typed
|
@@ -462,12 +462,14 @@ const parser = exports.parser = (0, _factoriesNumber.createParser)({
|
|
462
462
|
}),
|
463
463
|
max: (0, _factoriesNumber.createMaxTransform)({
|
464
464
|
config: _configReadonly.config,
|
465
|
+
isNaN: _pureFunctionsNumberGenerated.isNaN,
|
465
466
|
larger: _pureFunctionsNumberGenerated.larger,
|
466
467
|
numeric: _pureFunctionsNumberGenerated.numeric,
|
467
468
|
typed: _pureFunctionsNumberGenerated.typed
|
468
469
|
}),
|
469
470
|
min: (0, _factoriesNumber.createMinTransform)({
|
470
471
|
config: _configReadonly.config,
|
472
|
+
isNaN: _pureFunctionsNumberGenerated.isNaN,
|
471
473
|
numeric: _pureFunctionsNumberGenerated.numeric,
|
472
474
|
smaller: _pureFunctionsNumberGenerated.smaller,
|
473
475
|
typed: _pureFunctionsNumberGenerated.typed
|
@@ -748,12 +748,14 @@ const matrixFromColumns = exports.matrixFromColumns = /* #__PURE__ */(0, _factor
|
|
748
748
|
});
|
749
749
|
const max = exports.max = /* #__PURE__ */(0, _factoriesAny.createMax)({
|
750
750
|
config: _configReadonly.config,
|
751
|
+
isNaN,
|
751
752
|
larger,
|
752
753
|
numeric,
|
753
754
|
typed
|
754
755
|
});
|
755
756
|
const min = exports.min = /* #__PURE__ */(0, _factoriesAny.createMin)({
|
756
757
|
config: _configReadonly.config,
|
758
|
+
isNaN,
|
757
759
|
numeric,
|
758
760
|
smaller,
|
759
761
|
typed
|
@@ -602,12 +602,14 @@ const corr = exports.corr = /* #__PURE__ */(0, _factoriesNumber.createCorr)({
|
|
602
602
|
});
|
603
603
|
const max = exports.max = /* #__PURE__ */(0, _factoriesNumber.createMax)({
|
604
604
|
config: _configReadonly.config,
|
605
|
+
isNaN,
|
605
606
|
larger,
|
606
607
|
numeric,
|
607
608
|
typed
|
608
609
|
});
|
609
610
|
const min = exports.min = /* #__PURE__ */(0, _factoriesNumber.createMin)({
|
610
611
|
config: _configReadonly.config,
|
612
|
+
isNaN,
|
611
613
|
numeric,
|
612
614
|
smaller,
|
613
615
|
typed
|
@@ -11,7 +11,7 @@ const mapSlicesDocs = exports.mapSlicesDocs = {
|
|
11
11
|
description: 'Generate a matrix one dimension less than A by applying callback to ' + 'each slice of A along dimension dim.',
|
12
12
|
examples: ['A = [[1, 2], [3, 4]]', 'mapSlices(A, 1, sum)',
|
13
13
|
// returns [4, 6]
|
14
|
-
'mapSlices(A, 2,
|
14
|
+
'mapSlices(A, 2, prod)' // returns [2, 12]
|
15
15
|
],
|
16
16
|
seealso: ['map', 'forEach']
|
17
17
|
};
|
@@ -8,7 +8,7 @@ const largerDocs = exports.largerDocs = {
|
|
8
8
|
name: 'larger',
|
9
9
|
category: 'Relational',
|
10
10
|
syntax: ['x > y', 'larger(x, y)'],
|
11
|
-
description: 'Check if value x is larger than y. Returns true if x is larger than y, and false if not.',
|
11
|
+
description: 'Check if value x is larger than y. Returns true if x is larger than y, and false if not. Comparing a value with NaN returns false.',
|
12
12
|
examples: ['2 > 3', '5 > 2*2', 'a = 3.3', 'b = 6-2.8', '(a > b)', '(b < a)', '5 cm > 2 inch'],
|
13
13
|
seealso: ['equal', 'unequal', 'smaller', 'smallerEq', 'largerEq', 'compare']
|
14
14
|
};
|
@@ -8,7 +8,7 @@ const smallerDocs = exports.smallerDocs = {
|
|
8
8
|
name: 'smaller',
|
9
9
|
category: 'Relational',
|
10
10
|
syntax: ['x < y', 'smaller(x, y)'],
|
11
|
-
description: 'Check if value x is smaller than value y. Returns true if x is smaller than y, and false if not.',
|
11
|
+
description: 'Check if value x is smaller than value y. Returns true if x is smaller than y, and false if not. Comparing a value with NaN returns false.',
|
12
12
|
examples: ['2 < 3', '5 < 2*2', 'a = 3.3', 'b = 6-2.8', '(a < b)', '5 cm < 2 inch'],
|
13
13
|
seealso: ['equal', 'unequal', 'larger', 'smallerEq', 'largerEq', 'compare']
|
14
14
|
};
|
@@ -8,7 +8,7 @@ const maxDocs = exports.maxDocs = {
|
|
8
8
|
name: 'max',
|
9
9
|
category: 'Statistics',
|
10
10
|
syntax: ['max(a, b, c, ...)', 'max(A)', 'max(A, dimension)'],
|
11
|
-
description: 'Compute the maximum value of a list of values.',
|
11
|
+
description: 'Compute the maximum value of a list of values. If any NaN values are found, the function yields the last NaN in the input.',
|
12
12
|
examples: ['max(2, 3, 4, 1)', 'max([2, 3, 4, 1])', 'max([2, 5; 4, 3])', 'max([2, 5; 4, 3], 1)', 'max([2, 5; 4, 3], 2)', 'max(2.7, 7.1, -4.5, 2.0, 4.1)', 'min(2.7, 7.1, -4.5, 2.0, 4.1)'],
|
13
13
|
seealso: ['mean', 'median', 'min', 'prod', 'std', 'sum', 'variance']
|
14
14
|
};
|
@@ -8,7 +8,7 @@ const minDocs = exports.minDocs = {
|
|
8
8
|
name: 'min',
|
9
9
|
category: 'Statistics',
|
10
10
|
syntax: ['min(a, b, c, ...)', 'min(A)', 'min(A, dimension)'],
|
11
|
-
description: 'Compute the minimum value of a list of values.',
|
11
|
+
description: 'Compute the minimum value of a list of values. If any NaN values are found, the function yields the last NaN in the input.',
|
12
12
|
examples: ['min(2, 3, 4, 1)', 'min([2, 3, 4, 1])', 'min([2, 5; 4, 3])', 'min([2, 5; 4, 3], 1)', 'min([2, 5; 4, 3], 2)', 'min(2.7, 7.1, -4.5, 2.0, 4.1)', 'max(2.7, 7.1, -4.5, 2.0, 4.1)'],
|
13
13
|
seealso: ['max', 'mean', 'median', 'prod', 'std', 'sum', 'variance']
|
14
14
|
};
|
@@ -9,19 +9,21 @@ var _errorTransform = require("./utils/errorTransform.js");
|
|
9
9
|
var _max = require("../../function/statistics/max.js");
|
10
10
|
var _lastDimToZeroBase = require("./utils/lastDimToZeroBase.js");
|
11
11
|
const name = 'max';
|
12
|
-
const dependencies = ['typed', 'config', 'numeric', 'larger'];
|
12
|
+
const dependencies = ['typed', 'config', 'numeric', 'larger', 'isNaN'];
|
13
13
|
const createMaxTransform = exports.createMaxTransform = /* #__PURE__ */(0, _factory.factory)(name, dependencies, _ref => {
|
14
14
|
let {
|
15
15
|
typed,
|
16
16
|
config,
|
17
17
|
numeric,
|
18
|
-
larger
|
18
|
+
larger,
|
19
|
+
isNaN: mathIsNaN
|
19
20
|
} = _ref;
|
20
21
|
const max = (0, _max.createMax)({
|
21
22
|
typed,
|
22
23
|
config,
|
23
24
|
numeric,
|
24
|
-
larger
|
25
|
+
larger,
|
26
|
+
isNaN: mathIsNaN
|
25
27
|
});
|
26
28
|
|
27
29
|
/**
|
@@ -9,19 +9,21 @@ var _errorTransform = require("./utils/errorTransform.js");
|
|
9
9
|
var _min = require("../../function/statistics/min.js");
|
10
10
|
var _lastDimToZeroBase = require("./utils/lastDimToZeroBase.js");
|
11
11
|
const name = 'min';
|
12
|
-
const dependencies = ['typed', 'config', 'numeric', 'smaller'];
|
12
|
+
const dependencies = ['typed', 'config', 'numeric', 'smaller', 'isNaN'];
|
13
13
|
const createMinTransform = exports.createMinTransform = /* #__PURE__ */(0, _factory.factory)(name, dependencies, _ref => {
|
14
14
|
let {
|
15
15
|
typed,
|
16
16
|
config,
|
17
17
|
numeric,
|
18
|
-
smaller
|
18
|
+
smaller,
|
19
|
+
isNaN: mathIsNaN
|
19
20
|
} = _ref;
|
20
21
|
const min = (0, _min.createMin)({
|
21
22
|
typed,
|
22
23
|
config,
|
23
24
|
numeric,
|
24
|
-
smaller
|
25
|
+
smaller,
|
26
|
+
isNaN: mathIsNaN
|
25
27
|
});
|
26
28
|
|
27
29
|
/**
|
@@ -26,7 +26,7 @@ const createVarianceTransform = exports.createVarianceTransform = /* #__PURE__ *
|
|
26
26
|
multiply,
|
27
27
|
divide,
|
28
28
|
mapSlices,
|
29
|
-
isNaN
|
29
|
+
isNaN: mathIsNaN
|
30
30
|
} = _ref;
|
31
31
|
const variance = (0, _variance.createVariance)({
|
32
32
|
typed,
|
@@ -35,7 +35,7 @@ const createVarianceTransform = exports.createVarianceTransform = /* #__PURE__ *
|
|
35
35
|
multiply,
|
36
36
|
divide,
|
37
37
|
mapSlices,
|
38
|
-
isNaN
|
38
|
+
isNaN: mathIsNaN
|
39
39
|
});
|
40
40
|
return typed(name, {
|
41
41
|
'...any': function (args) {
|
@@ -38,7 +38,7 @@ const createFlatten = exports.createFlatten = /* #__PURE__ */(0, _factory.factor
|
|
38
38
|
Matrix: function (x) {
|
39
39
|
// Return the same matrix type as x (Dense or Sparse Matrix)
|
40
40
|
// Return the same data type as x
|
41
|
-
return x.create((0, _array.flatten)(x.
|
41
|
+
return x.create((0, _array.flatten)(x.valueOf()), x.datatype());
|
42
42
|
}
|
43
43
|
});
|
44
44
|
});
|
@@ -58,5 +58,5 @@ const createForEach = exports.createForEach = /* #__PURE__ */(0, _factory.factor
|
|
58
58
|
* @private
|
59
59
|
*/
|
60
60
|
function _forEach(array, callback) {
|
61
|
-
(0, _array.
|
61
|
+
(0, _array.deepForEach)(array, (0, _optimizeCallback.optimizeCallback)(callback, array, name));
|
62
62
|
}
|
@@ -143,6 +143,6 @@ const createMap = exports.createMap = /* #__PURE__ */(0, _factory.factory)(name,
|
|
143
143
|
* @private
|
144
144
|
*/
|
145
145
|
function _mapArray(array, callback) {
|
146
|
-
return (0, _array.
|
146
|
+
return (0, _array.deepMap)(array, (0, _optimizeCallback.optimizeCallback)(callback, array, name));
|
147
147
|
}
|
148
148
|
});
|
@@ -13,7 +13,7 @@ const createPartitionSelect = exports.createPartitionSelect = /* #__PURE__ */(0,
|
|
13
13
|
let {
|
14
14
|
typed,
|
15
15
|
isNumeric,
|
16
|
-
isNaN,
|
16
|
+
isNaN: mathIsNaN,
|
17
17
|
compare
|
18
18
|
} = _ref;
|
19
19
|
const asc = compare;
|
@@ -104,7 +104,7 @@ const createPartitionSelect = exports.createPartitionSelect = /* #__PURE__ */(0,
|
|
104
104
|
|
105
105
|
// check for NaN values since these can cause an infinite while loop
|
106
106
|
for (let i = 0; i < arr.length; i++) {
|
107
|
-
if (isNumeric(arr[i]) &&
|
107
|
+
if (isNumeric(arr[i]) && mathIsNaN(arr[i])) {
|
108
108
|
return arr[i]; // return NaN
|
109
109
|
}
|
110
110
|
}
|
@@ -9,13 +9,14 @@ var _factory = require("../../utils/factory.js");
|
|
9
9
|
var _number = require("../../utils/number.js");
|
10
10
|
var _improveErrorMessage = require("./utils/improveErrorMessage.js");
|
11
11
|
const name = 'max';
|
12
|
-
const dependencies = ['typed', 'config', 'numeric', 'larger'];
|
12
|
+
const dependencies = ['typed', 'config', 'numeric', 'larger', 'isNaN'];
|
13
13
|
const createMax = exports.createMax = /* #__PURE__ */(0, _factory.factory)(name, dependencies, _ref => {
|
14
14
|
let {
|
15
15
|
typed,
|
16
16
|
config,
|
17
17
|
numeric,
|
18
|
-
larger
|
18
|
+
larger,
|
19
|
+
isNaN: mathIsNaN
|
19
20
|
} = _ref;
|
20
21
|
/**
|
21
22
|
* Compute the maximum value of a matrix or a list with values.
|
@@ -89,8 +90,8 @@ const createMax = exports.createMax = /* #__PURE__ */(0, _factory.factory)(name,
|
|
89
90
|
let res;
|
90
91
|
(0, _collection.deepForEach)(array, function (value) {
|
91
92
|
try {
|
92
|
-
if (
|
93
|
-
res =
|
93
|
+
if (mathIsNaN(value)) {
|
94
|
+
res = value;
|
94
95
|
} else if (res === undefined || larger(value, res)) {
|
95
96
|
res = value;
|
96
97
|
}
|
@@ -9,13 +9,14 @@ var _factory = require("../../utils/factory.js");
|
|
9
9
|
var _number = require("../../utils/number.js");
|
10
10
|
var _improveErrorMessage = require("./utils/improveErrorMessage.js");
|
11
11
|
const name = 'min';
|
12
|
-
const dependencies = ['typed', 'config', 'numeric', 'smaller'];
|
12
|
+
const dependencies = ['typed', 'config', 'numeric', 'smaller', 'isNaN'];
|
13
13
|
const createMin = exports.createMin = /* #__PURE__ */(0, _factory.factory)(name, dependencies, _ref => {
|
14
14
|
let {
|
15
15
|
typed,
|
16
16
|
config,
|
17
17
|
numeric,
|
18
|
-
smaller
|
18
|
+
smaller,
|
19
|
+
isNaN: mathIsNaN
|
19
20
|
} = _ref;
|
20
21
|
/**
|
21
22
|
* Compute the minimum value of a matrix or a list of values.
|
@@ -89,8 +90,8 @@ const createMin = exports.createMin = /* #__PURE__ */(0, _factory.factory)(name,
|
|
89
90
|
let min;
|
90
91
|
(0, _collection.deepForEach)(array, function (value) {
|
91
92
|
try {
|
92
|
-
if (
|
93
|
-
min =
|
93
|
+
if (mathIsNaN(value)) {
|
94
|
+
min = value;
|
94
95
|
} else if (min === undefined || smaller(value, min)) {
|
95
96
|
min = value;
|
96
97
|
}
|
@@ -11,7 +11,7 @@ const dependencies = ['typed', 'isNaN', 'isNumeric'];
|
|
11
11
|
const createMode = exports.createMode = /* #__PURE__ */(0, _factory.factory)(name, dependencies, _ref => {
|
12
12
|
let {
|
13
13
|
typed,
|
14
|
-
isNaN,
|
14
|
+
isNaN: mathIsNaN,
|
15
15
|
isNumeric
|
16
16
|
} = _ref;
|
17
17
|
/**
|
@@ -63,7 +63,7 @@ const createMode = exports.createMode = /* #__PURE__ */(0, _factory.factory)(nam
|
|
63
63
|
let max = 0;
|
64
64
|
for (let i = 0; i < values.length; i++) {
|
65
65
|
const value = values[i];
|
66
|
-
if (isNumeric(value) &&
|
66
|
+
if (isNumeric(value) && mathIsNaN(value)) {
|
67
67
|
throw new Error('Cannot calculate mode of an array containing NaN values');
|
68
68
|
}
|
69
69
|
if (!(value in count)) {
|
@@ -19,7 +19,7 @@ const createVariance = exports.createVariance = /* #__PURE__ */(0, _factory.fact
|
|
19
19
|
multiply,
|
20
20
|
divide,
|
21
21
|
mapSlices,
|
22
|
-
isNaN
|
22
|
+
isNaN: mathIsNaN
|
23
23
|
} = _ref;
|
24
24
|
/**
|
25
25
|
* Compute the variance of a matrix or a list with values.
|
@@ -129,7 +129,7 @@ const createVariance = exports.createVariance = /* #__PURE__ */(0, _factory.fact
|
|
129
129
|
const diff = subtract(value, mean);
|
130
130
|
sum = sum === undefined ? multiply(diff, diff) : add(sum, multiply(diff, diff));
|
131
131
|
});
|
132
|
-
if (
|
132
|
+
if (mathIsNaN(sum)) {
|
133
133
|
return sum;
|
134
134
|
}
|
135
135
|
switch (normalization) {
|
package/lib/cjs/header.js
CHANGED
@@ -6,8 +6,8 @@
|
|
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.
|
10
|
-
* @date 2025-02-
|
9
|
+
* @version 14.3.0
|
10
|
+
* @date 2025-02-28
|
11
11
|
*
|
12
12
|
* @license
|
13
13
|
* Copyright (C) 2013-2025 Jos de Jong <wjosdejong@gmail.com>
|
@@ -532,56 +532,35 @@ const createDenseMatrixClass = exports.createDenseMatrixClass = /* #__PURE__ */(
|
|
532
532
|
* array, and the Matrix being traversed.
|
533
533
|
*/
|
534
534
|
DenseMatrix.prototype._forEach = function (callback) {
|
535
|
-
// matrix instance
|
536
535
|
const me = this;
|
537
536
|
const s = me.size();
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
|
537
|
+
const maxDepth = s.length - 1;
|
538
|
+
if (maxDepth < 0) {
|
539
|
+
return;
|
540
|
+
}
|
541
|
+
if (maxDepth === 0) {
|
542
|
+
const thisSize = s[0];
|
543
|
+
for (let i = 0; i < thisSize; i++) {
|
542
544
|
callback(me._data, i, [i]);
|
543
545
|
}
|
544
546
|
return;
|
545
547
|
}
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
data[0] = me._data[0];
|
554
|
-
for (let i = 0; i < last; i++) {
|
555
|
-
data[i + 1] = data[i][0];
|
556
|
-
}
|
557
|
-
index[last] = -1;
|
558
|
-
while (true) {
|
559
|
-
let i;
|
560
|
-
for (i = last; i >= 0; i--) {
|
561
|
-
// march index to the next permutation
|
562
|
-
index[i]++;
|
563
|
-
if (index[i] === s[i]) {
|
564
|
-
index[i] = 0;
|
565
|
-
continue;
|
566
|
-
}
|
567
|
-
|
568
|
-
// update references to matrix dimensions
|
569
|
-
data[i] = i === 0 ? me._data[index[i]] : data[i - 1][index[i]];
|
570
|
-
for (let j = i; j < last; j++) {
|
571
|
-
data[j + 1] = data[j][0];
|
548
|
+
const index = Array(s.length);
|
549
|
+
function recurse(data, depth) {
|
550
|
+
const thisSize = s[depth];
|
551
|
+
if (depth < maxDepth) {
|
552
|
+
for (let i = 0; i < thisSize; i++) {
|
553
|
+
index[depth] = i;
|
554
|
+
recurse(data[i], depth + 1);
|
572
555
|
}
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
|
577
|
-
callback(data[last], j, index.slice(0));
|
556
|
+
} else {
|
557
|
+
for (let i = 0; i < thisSize; i++) {
|
558
|
+
index[depth] = i;
|
559
|
+
callback(data, i, index.slice());
|
578
560
|
}
|
579
|
-
break;
|
580
|
-
}
|
581
|
-
if (i === -1) {
|
582
|
-
break;
|
583
561
|
}
|
584
562
|
}
|
563
|
+
recurse(me._data, 0);
|
585
564
|
};
|
586
565
|
|
587
566
|
/**
|
@@ -624,19 +603,37 @@ const createDenseMatrixClass = exports.createDenseMatrixClass = /* #__PURE__ */(
|
|
624
603
|
* @return {Iterable<{ value, index: number[] }>}
|
625
604
|
*/
|
626
605
|
DenseMatrix.prototype[Symbol.iterator] = function* () {
|
627
|
-
const
|
628
|
-
|
606
|
+
const maxDepth = this._size.length - 1;
|
607
|
+
if (maxDepth < 0) {
|
608
|
+
return;
|
609
|
+
}
|
610
|
+
if (maxDepth === 0) {
|
611
|
+
for (let i = 0; i < this._data.length; i++) {
|
612
|
+
yield {
|
613
|
+
value: this._data[i],
|
614
|
+
index: [i]
|
615
|
+
};
|
616
|
+
}
|
617
|
+
return;
|
618
|
+
}
|
619
|
+
const index = [];
|
620
|
+
const recurse = function* (value, depth) {
|
621
|
+
if (depth < maxDepth) {
|
629
622
|
for (let i = 0; i < value.length; i++) {
|
630
|
-
|
623
|
+
index[depth] = i;
|
624
|
+
yield* recurse(value[i], depth + 1);
|
631
625
|
}
|
632
626
|
} else {
|
633
|
-
|
634
|
-
|
635
|
-
|
636
|
-
|
627
|
+
for (let i = 0; i < value.length; i++) {
|
628
|
+
index[depth] = i;
|
629
|
+
yield {
|
630
|
+
value: value[i],
|
631
|
+
index: index.slice()
|
632
|
+
};
|
633
|
+
}
|
637
634
|
}
|
638
635
|
};
|
639
|
-
yield* recurse(this._data,
|
636
|
+
yield* recurse(this._data, 0);
|
640
637
|
};
|
641
638
|
|
642
639
|
/**
|