mathjs 11.9.1 → 11.10.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 +10 -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/dependenciesIndexClass.generated.js +2 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesIndexTransform.generated.js +2 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesQuantileSeq.generated.js +2 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesQuantileSeqTransform.generated.js +28 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesSubset.generated.js +4 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesSubsetTransform.generated.js +4 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesZeta.generated.js +46 -0
- package/lib/cjs/entry/dependenciesAny.generated.js +14 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesQuantileSeq.generated.js +2 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesZeta.generated.js +42 -0
- package/lib/cjs/entry/dependenciesNumber.generated.js +7 -0
- package/lib/cjs/entry/impureFunctionsAny.generated.js +52 -40
- package/lib/cjs/entry/impureFunctionsNumber.generated.js +1 -0
- package/lib/cjs/entry/pureFunctionsAny.generated.js +159 -136
- package/lib/cjs/entry/pureFunctionsNumber.generated.js +19 -1
- package/lib/cjs/expression/embeddedDocs/construction/index.js +1 -1
- package/lib/cjs/expression/embeddedDocs/embeddedDocs.js +2 -0
- package/lib/cjs/expression/embeddedDocs/function/special/zeta.js +15 -0
- package/lib/cjs/expression/node/utils/assign.js +7 -2
- package/lib/cjs/expression/transform/index.transform.js +9 -6
- package/lib/cjs/expression/transform/quantileSeq.transform.js +50 -0
- package/lib/cjs/expression/transform/subset.transform.js +7 -3
- package/lib/cjs/factoriesAny.js +14 -0
- package/lib/cjs/factoriesNumber.js +7 -0
- package/lib/cjs/function/matrix/concat.js +2 -29
- package/lib/cjs/function/matrix/subset.js +86 -24
- package/lib/cjs/function/special/zeta.js +169 -0
- package/lib/cjs/function/statistics/quantileSeq.js +39 -17
- package/lib/cjs/header.js +2 -2
- package/lib/cjs/type/matrix/DenseMatrix.js +19 -9
- package/lib/cjs/type/matrix/MatrixIndex.js +38 -6
- package/lib/cjs/type/matrix/function/index.js +6 -4
- package/lib/cjs/type/matrix/utils/broadcast.js +8 -14
- package/lib/cjs/utils/array.js +253 -19
- package/lib/cjs/version.js +1 -1
- package/lib/esm/entry/dependenciesAny/dependenciesIndexClass.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesIndexTransform.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesQuantileSeq.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesQuantileSeqTransform.generated.js +20 -0
- package/lib/esm/entry/dependenciesAny/dependenciesSubset.generated.js +4 -0
- package/lib/esm/entry/dependenciesAny/dependenciesSubsetTransform.generated.js +4 -0
- package/lib/esm/entry/dependenciesAny/dependenciesZeta.generated.js +38 -0
- package/lib/esm/entry/dependenciesAny.generated.js +2 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesQuantileSeq.generated.js +2 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesZeta.generated.js +34 -0
- package/lib/esm/entry/dependenciesNumber.generated.js +1 -0
- package/lib/esm/entry/impureFunctionsAny.generated.js +53 -41
- package/lib/esm/entry/impureFunctionsNumber.generated.js +2 -1
- package/lib/esm/entry/pureFunctionsAny.generated.js +140 -118
- package/lib/esm/entry/pureFunctionsNumber.generated.js +18 -1
- package/lib/esm/expression/embeddedDocs/construction/index.js +1 -1
- package/lib/esm/expression/embeddedDocs/embeddedDocs.js +2 -0
- package/lib/esm/expression/embeddedDocs/function/special/zeta.js +8 -0
- package/lib/esm/expression/node/utils/assign.js +7 -2
- package/lib/esm/expression/transform/index.transform.js +9 -6
- package/lib/esm/expression/transform/quantileSeq.transform.js +41 -0
- package/lib/esm/expression/transform/subset.transform.js +7 -3
- package/lib/esm/factoriesAny.js +2 -0
- package/lib/esm/factoriesNumber.js +1 -1
- package/lib/esm/function/matrix/concat.js +3 -30
- package/lib/esm/function/matrix/subset.js +85 -25
- package/lib/esm/function/special/zeta.js +146 -0
- package/lib/esm/function/statistics/quantileSeq.js +30 -16
- package/lib/esm/type/matrix/DenseMatrix.js +20 -10
- package/lib/esm/type/matrix/MatrixIndex.js +39 -7
- package/lib/esm/type/matrix/function/index.js +6 -4
- package/lib/esm/type/matrix/utils/broadcast.js +8 -14
- package/lib/esm/utils/array.js +241 -20
- package/lib/esm/version.js +1 -1
- package/package.json +1 -1
- package/types/index.d.ts +16 -0
|
@@ -8,13 +8,17 @@ var _factory = require("../../utils/factory.js");
|
|
|
8
8
|
var _errorTransform = require("./utils/errorTransform.js");
|
|
9
9
|
var _subset = require("../../function/matrix/subset.js");
|
|
10
10
|
var name = 'subset';
|
|
11
|
-
var dependencies = ['typed', 'matrix'];
|
|
11
|
+
var dependencies = ['typed', 'matrix', 'zeros', 'add'];
|
|
12
12
|
var createSubsetTransform = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
|
|
13
13
|
var typed = _ref.typed,
|
|
14
|
-
matrix = _ref.matrix
|
|
14
|
+
matrix = _ref.matrix,
|
|
15
|
+
zeros = _ref.zeros,
|
|
16
|
+
add = _ref.add;
|
|
15
17
|
var subset = (0, _subset.createSubset)({
|
|
16
18
|
typed: typed,
|
|
17
|
-
matrix: matrix
|
|
19
|
+
matrix: matrix,
|
|
20
|
+
zeros: zeros,
|
|
21
|
+
add: add
|
|
18
22
|
});
|
|
19
23
|
|
|
20
24
|
/**
|
package/lib/cjs/factoriesAny.js
CHANGED
|
@@ -1485,6 +1485,12 @@ Object.defineProperty(exports, "createQuantileSeq", {
|
|
|
1485
1485
|
return _quantileSeq.createQuantileSeq;
|
|
1486
1486
|
}
|
|
1487
1487
|
});
|
|
1488
|
+
Object.defineProperty(exports, "createQuantileSeqTransform", {
|
|
1489
|
+
enumerable: true,
|
|
1490
|
+
get: function get() {
|
|
1491
|
+
return _quantileSeqTransform.createQuantileSeqTransform;
|
|
1492
|
+
}
|
|
1493
|
+
});
|
|
1488
1494
|
Object.defineProperty(exports, "createQuantumOfCirculation", {
|
|
1489
1495
|
enumerable: true,
|
|
1490
1496
|
get: function get() {
|
|
@@ -2109,6 +2115,12 @@ Object.defineProperty(exports, "createZeros", {
|
|
|
2109
2115
|
return _zeros.createZeros;
|
|
2110
2116
|
}
|
|
2111
2117
|
});
|
|
2118
|
+
Object.defineProperty(exports, "createZeta", {
|
|
2119
|
+
enumerable: true,
|
|
2120
|
+
get: function get() {
|
|
2121
|
+
return _zeta.createZeta;
|
|
2122
|
+
}
|
|
2123
|
+
});
|
|
2112
2124
|
Object.defineProperty(exports, "createZpk2tf", {
|
|
2113
2125
|
enumerable: true,
|
|
2114
2126
|
get: function get() {
|
|
@@ -2213,6 +2225,7 @@ var _fft = require("./function/matrix/fft.js");
|
|
|
2213
2225
|
var _ifft = require("./function/matrix/ifft.js");
|
|
2214
2226
|
var _solveODE = require("./function/numeric/solveODE.js");
|
|
2215
2227
|
var _erf = require("./function/special/erf.js");
|
|
2228
|
+
var _zeta = require("./function/special/zeta.js");
|
|
2216
2229
|
var _mode = require("./function/statistics/mode.js");
|
|
2217
2230
|
var _prod = require("./function/statistics/prod.js");
|
|
2218
2231
|
var _format = require("./function/string/format.js");
|
|
@@ -2398,5 +2411,6 @@ var _concatTransform = require("./expression/transform/concat.transform.js");
|
|
|
2398
2411
|
var _diffTransform = require("./expression/transform/diff.transform.js");
|
|
2399
2412
|
var _stdTransform = require("./expression/transform/std.transform.js");
|
|
2400
2413
|
var _sumTransform = require("./expression/transform/sum.transform.js");
|
|
2414
|
+
var _quantileSeqTransform = require("./expression/transform/quantileSeq.transform.js");
|
|
2401
2415
|
var _cumsumTransform = require("./expression/transform/cumsum.transform.js");
|
|
2402
2416
|
var _varianceTransform = require("./expression/transform/variance.transform.js");
|
|
@@ -779,6 +779,12 @@ Object.defineProperty(exports, "createVersion", {
|
|
|
779
779
|
});
|
|
780
780
|
exports.createXgcd = void 0;
|
|
781
781
|
exports.createXor = void 0;
|
|
782
|
+
Object.defineProperty(exports, "createZeta", {
|
|
783
|
+
enumerable: true,
|
|
784
|
+
get: function get() {
|
|
785
|
+
return _zeta.createZeta;
|
|
786
|
+
}
|
|
787
|
+
});
|
|
782
788
|
var _index = require("./plain/number/index.js");
|
|
783
789
|
var _factory = require("./utils/factory.js");
|
|
784
790
|
var _noop = require("./utils/noop.js");
|
|
@@ -855,6 +861,7 @@ var _largerEq = require("./function/relational/largerEq.js");
|
|
|
855
861
|
var _deepEqual = require("./function/relational/deepEqual.js");
|
|
856
862
|
var _unequal = require("./function/relational/unequal.js");
|
|
857
863
|
var _erf = require("./function/special/erf.js");
|
|
864
|
+
var _zeta = require("./function/special/zeta.js");
|
|
858
865
|
var _mode = require("./function/statistics/mode.js");
|
|
859
866
|
var _prod = require("./function/statistics/prod.js");
|
|
860
867
|
var _max = require("./function/statistics/max.js");
|
|
@@ -97,7 +97,7 @@ var createConcat = /* #__PURE__ */(0, _factory.factory)(name, dependencies, func
|
|
|
97
97
|
}
|
|
98
98
|
var res = matrices.shift();
|
|
99
99
|
while (matrices.length) {
|
|
100
|
-
res =
|
|
100
|
+
res = (0, _array.concat)(res, matrices.shift(), dim);
|
|
101
101
|
}
|
|
102
102
|
return asMatrix ? matrix(res) : res;
|
|
103
103
|
},
|
|
@@ -106,31 +106,4 @@ var createConcat = /* #__PURE__ */(0, _factory.factory)(name, dependencies, func
|
|
|
106
106
|
}
|
|
107
107
|
});
|
|
108
108
|
});
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* Recursively concatenate two matrices.
|
|
112
|
-
* The contents of the matrices is not cloned.
|
|
113
|
-
* @param {Array} a Multi dimensional array
|
|
114
|
-
* @param {Array} b Multi dimensional array
|
|
115
|
-
* @param {number} concatDim The dimension on which to concatenate (zero-based)
|
|
116
|
-
* @param {number} dim The current dim (zero-based)
|
|
117
|
-
* @return {Array} c The concatenated matrix
|
|
118
|
-
* @private
|
|
119
|
-
*/
|
|
120
|
-
exports.createConcat = createConcat;
|
|
121
|
-
function _concat(a, b, concatDim, dim) {
|
|
122
|
-
if (dim < concatDim) {
|
|
123
|
-
// recurse into next dimension
|
|
124
|
-
if (a.length !== b.length) {
|
|
125
|
-
throw new _DimensionError.DimensionError(a.length, b.length);
|
|
126
|
-
}
|
|
127
|
-
var c = [];
|
|
128
|
-
for (var i = 0; i < a.length; i++) {
|
|
129
|
-
c[i] = _concat(a[i], b[i], concatDim, dim + 1);
|
|
130
|
-
}
|
|
131
|
-
return c;
|
|
132
|
-
} else {
|
|
133
|
-
// concatenate this dimension
|
|
134
|
-
return a.concat(b);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
109
|
+
exports.createConcat = createConcat;
|
|
@@ -11,10 +11,12 @@ var _customs = require("../../utils/customs.js");
|
|
|
11
11
|
var _DimensionError = require("../../error/DimensionError.js");
|
|
12
12
|
var _factory = require("../../utils/factory.js");
|
|
13
13
|
var name = 'subset';
|
|
14
|
-
var dependencies = ['typed', 'matrix'];
|
|
14
|
+
var dependencies = ['typed', 'matrix', 'zeros', 'add'];
|
|
15
15
|
var createSubset = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
|
|
16
16
|
var typed = _ref.typed,
|
|
17
|
-
matrix = _ref.matrix
|
|
17
|
+
matrix = _ref.matrix,
|
|
18
|
+
zeros = _ref.zeros,
|
|
19
|
+
add = _ref.add;
|
|
18
20
|
/**
|
|
19
21
|
* Get or set a subset of a matrix or string.
|
|
20
22
|
*
|
|
@@ -26,13 +28,15 @@ var createSubset = /* #__PURE__ */(0, _factory.factory)(name, dependencies, func
|
|
|
26
28
|
*
|
|
27
29
|
* // get a subset
|
|
28
30
|
* const d = [[1, 2], [3, 4]]
|
|
29
|
-
* math.subset(d, math.index(1, 0))
|
|
30
|
-
* math.subset(d, math.index([0, 1], 1))
|
|
31
|
+
* math.subset(d, math.index(1, 0)) // returns 3
|
|
32
|
+
* math.subset(d, math.index([0, 1], 1)) // returns [[2], [4]]
|
|
33
|
+
* math.subset(d, math.index([false, true], 0)) // returns [[3]]
|
|
31
34
|
*
|
|
32
35
|
* // replace a subset
|
|
33
36
|
* const e = []
|
|
34
|
-
* const f = math.subset(e, math.index(0, [0, 2]), [5, 6]) // f = [[5, 6]]
|
|
35
|
-
* const g = math.subset(f, math.index(1, 1), 7, 0) // g = [[5, 6], [0, 7]]
|
|
37
|
+
* const f = math.subset(e, math.index(0, [0, 2]), [5, 6]) // f = [[5, 0, 6]]
|
|
38
|
+
* const g = math.subset(f, math.index(1, 1), 7, 0) // g = [[5, 0, 6], [0, 7, 0]]
|
|
39
|
+
* math.subset(g, math.index([false, true], 1), 8) // returns [[5, 0, 6], [0, 8, 0]]
|
|
36
40
|
*
|
|
37
41
|
* // get submatrix using ranges
|
|
38
42
|
* const M = [
|
|
@@ -40,7 +44,7 @@ var createSubset = /* #__PURE__ */(0, _factory.factory)(name, dependencies, func
|
|
|
40
44
|
* [4,5,6],
|
|
41
45
|
* [7,8,9]
|
|
42
46
|
* ]
|
|
43
|
-
* math.subset(M, math.index(math.range(0,2), math.range(0,3))) // [[1,2,3],[4,5,6]]
|
|
47
|
+
* math.subset(M, math.index(math.range(0,2), math.range(0,3))) // [[1, 2, 3], [4, 5, 6]]
|
|
44
48
|
*
|
|
45
49
|
* See also:
|
|
46
50
|
*
|
|
@@ -59,36 +63,80 @@ var createSubset = /* #__PURE__ */(0, _factory.factory)(name, dependencies, func
|
|
|
59
63
|
* math.matrix elements will be left undefined.
|
|
60
64
|
* @return {Array | Matrix | string} Either the retrieved subset or the updated matrix.
|
|
61
65
|
*/
|
|
66
|
+
|
|
62
67
|
return typed(name, {
|
|
63
68
|
// get subset
|
|
64
|
-
'Array, Index': function ArrayIndex(value, index) {
|
|
65
|
-
var m = matrix(value);
|
|
66
|
-
var subset = m.subset(index); // returns a Matrix
|
|
67
|
-
return index.isScalar() ? subset : subset.valueOf(); // return an Array (like the input)
|
|
68
|
-
},
|
|
69
|
-
|
|
70
69
|
'Matrix, Index': function MatrixIndex(value, index) {
|
|
70
|
+
if ((0, _array.isEmptyIndex)(index)) {
|
|
71
|
+
return matrix();
|
|
72
|
+
}
|
|
73
|
+
(0, _array.validateIndexSourceSize)(value, index);
|
|
71
74
|
return value.subset(index);
|
|
72
75
|
},
|
|
76
|
+
'Array, Index': typed.referTo('Matrix, Index', function (subsetRef) {
|
|
77
|
+
return function (value, index) {
|
|
78
|
+
var subsetResult = subsetRef(matrix(value), index);
|
|
79
|
+
return index.isScalar() ? subsetResult : subsetResult.valueOf();
|
|
80
|
+
};
|
|
81
|
+
}),
|
|
73
82
|
'Object, Index': _getObjectProperty,
|
|
74
83
|
'string, Index': _getSubstring,
|
|
75
84
|
// set subset
|
|
76
|
-
'Array, Index, any': function ArrayIndexAny(value, index, replacement) {
|
|
77
|
-
return matrix((0, _object.clone)(value)).subset(index, replacement, undefined).valueOf();
|
|
78
|
-
},
|
|
79
|
-
'Array, Index, any, any': function ArrayIndexAnyAny(value, index, replacement, defaultValue) {
|
|
80
|
-
return matrix((0, _object.clone)(value)).subset(index, replacement, defaultValue).valueOf();
|
|
81
|
-
},
|
|
82
|
-
'Matrix, Index, any': function MatrixIndexAny(value, index, replacement) {
|
|
83
|
-
return value.clone().subset(index, replacement);
|
|
84
|
-
},
|
|
85
85
|
'Matrix, Index, any, any': function MatrixIndexAnyAny(value, index, replacement, defaultValue) {
|
|
86
|
-
|
|
86
|
+
if ((0, _array.isEmptyIndex)(index)) {
|
|
87
|
+
return value;
|
|
88
|
+
}
|
|
89
|
+
(0, _array.validateIndexSourceSize)(value, index);
|
|
90
|
+
return value.clone().subset(index, _broadcastReplacement(replacement, index), defaultValue);
|
|
87
91
|
},
|
|
92
|
+
'Array, Index, any, any': typed.referTo('Matrix, Index, any, any', function (subsetRef) {
|
|
93
|
+
return function (value, index, replacement, defaultValue) {
|
|
94
|
+
var subsetResult = subsetRef(matrix(value), index, replacement, defaultValue);
|
|
95
|
+
return subsetResult.isMatrix ? subsetResult.valueOf() : subsetResult;
|
|
96
|
+
};
|
|
97
|
+
}),
|
|
98
|
+
'Array, Index, any': typed.referTo('Matrix, Index, any, any', function (subsetRef) {
|
|
99
|
+
return function (value, index, replacement) {
|
|
100
|
+
return subsetRef(matrix(value), index, replacement, undefined).valueOf();
|
|
101
|
+
};
|
|
102
|
+
}),
|
|
103
|
+
'Matrix, Index, any': typed.referTo('Matrix, Index, any, any', function (subsetRef) {
|
|
104
|
+
return function (value, index, replacement) {
|
|
105
|
+
return subsetRef(value, index, replacement, undefined);
|
|
106
|
+
};
|
|
107
|
+
}),
|
|
88
108
|
'string, Index, string': _setSubstring,
|
|
89
109
|
'string, Index, string, string': _setSubstring,
|
|
90
110
|
'Object, Index, any': _setObjectProperty
|
|
91
111
|
});
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Broadcasts a replacment value to be the same size as index
|
|
115
|
+
* @param {number | BigNumber | Array | Matrix} replacement Replacement value to try to broadcast
|
|
116
|
+
* @param {*} index Index value
|
|
117
|
+
* @returns broadcasted replacement that matches the size of index
|
|
118
|
+
*/
|
|
119
|
+
|
|
120
|
+
function _broadcastReplacement(replacement, index) {
|
|
121
|
+
if (typeof replacement === 'string') {
|
|
122
|
+
throw new Error('can\'t boradcast a string');
|
|
123
|
+
}
|
|
124
|
+
if (index._isScalar) {
|
|
125
|
+
return replacement;
|
|
126
|
+
}
|
|
127
|
+
var indexSize = index.size();
|
|
128
|
+
if (indexSize.every(function (d) {
|
|
129
|
+
return d > 0;
|
|
130
|
+
})) {
|
|
131
|
+
try {
|
|
132
|
+
return add(replacement, zeros(indexSize));
|
|
133
|
+
} catch (error) {
|
|
134
|
+
return replacement;
|
|
135
|
+
}
|
|
136
|
+
} else {
|
|
137
|
+
return replacement;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
92
140
|
});
|
|
93
141
|
|
|
94
142
|
/**
|
|
@@ -104,6 +152,10 @@ function _getSubstring(str, index) {
|
|
|
104
152
|
// TODO: better error message
|
|
105
153
|
throw new TypeError('Index expected');
|
|
106
154
|
}
|
|
155
|
+
if ((0, _array.isEmptyIndex)(index)) {
|
|
156
|
+
return '';
|
|
157
|
+
}
|
|
158
|
+
(0, _array.validateIndexSourceSize)(Array.from(str), index);
|
|
107
159
|
if (index.size().length !== 1) {
|
|
108
160
|
throw new _DimensionError.DimensionError(index.size().length, 1);
|
|
109
161
|
}
|
|
@@ -125,7 +177,7 @@ function _getSubstring(str, index) {
|
|
|
125
177
|
* @param {string} str string to be replaced
|
|
126
178
|
* @param {Index} index An index or list of indices (character positions)
|
|
127
179
|
* @param {string} replacement Replacement string
|
|
128
|
-
* @param {string} [defaultValue] Default value to be
|
|
180
|
+
* @param {string} [defaultValue] Default value to be used when resizing
|
|
129
181
|
* the string. is ' ' by default
|
|
130
182
|
* @returns {string} result
|
|
131
183
|
* @private
|
|
@@ -135,6 +187,10 @@ function _setSubstring(str, index, replacement, defaultValue) {
|
|
|
135
187
|
// TODO: better error message
|
|
136
188
|
throw new TypeError('Index expected');
|
|
137
189
|
}
|
|
190
|
+
if ((0, _array.isEmptyIndex)(index)) {
|
|
191
|
+
return str;
|
|
192
|
+
}
|
|
193
|
+
(0, _array.validateIndexSourceSize)(Array.from(str), index);
|
|
138
194
|
if (index.size().length !== 1) {
|
|
139
195
|
throw new _DimensionError.DimensionError(index.size().length, 1);
|
|
140
196
|
}
|
|
@@ -184,6 +240,9 @@ function _setSubstring(str, index, replacement, defaultValue) {
|
|
|
184
240
|
* @private
|
|
185
241
|
*/
|
|
186
242
|
function _getObjectProperty(object, index) {
|
|
243
|
+
if ((0, _array.isEmptyIndex)(index)) {
|
|
244
|
+
return undefined;
|
|
245
|
+
}
|
|
187
246
|
if (index.size().length !== 1) {
|
|
188
247
|
throw new _DimensionError.DimensionError(index.size(), 1);
|
|
189
248
|
}
|
|
@@ -203,6 +262,9 @@ function _getObjectProperty(object, index) {
|
|
|
203
262
|
* @private
|
|
204
263
|
*/
|
|
205
264
|
function _setObjectProperty(object, index, replacement) {
|
|
265
|
+
if ((0, _array.isEmptyIndex)(index)) {
|
|
266
|
+
return object;
|
|
267
|
+
}
|
|
206
268
|
if (index.size().length !== 1) {
|
|
207
269
|
throw new _DimensionError.DimensionError(index.size(), 1);
|
|
208
270
|
}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createZeta = void 0;
|
|
7
|
+
var _factory = require("../../utils/factory.js");
|
|
8
|
+
var name = 'zeta';
|
|
9
|
+
var dependencies = ['typed', 'config', 'multiply', 'pow', 'divide', 'factorial', 'equal', 'smallerEq', 'isNegative', 'gamma', 'sin', 'subtract', 'add', '?Complex', '?BigNumber', 'pi'];
|
|
10
|
+
var createZeta = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
|
|
11
|
+
var typed = _ref.typed,
|
|
12
|
+
config = _ref.config,
|
|
13
|
+
multiply = _ref.multiply,
|
|
14
|
+
pow = _ref.pow,
|
|
15
|
+
divide = _ref.divide,
|
|
16
|
+
factorial = _ref.factorial,
|
|
17
|
+
equal = _ref.equal,
|
|
18
|
+
smallerEq = _ref.smallerEq,
|
|
19
|
+
isNegative = _ref.isNegative,
|
|
20
|
+
gamma = _ref.gamma,
|
|
21
|
+
sin = _ref.sin,
|
|
22
|
+
subtract = _ref.subtract,
|
|
23
|
+
add = _ref.add,
|
|
24
|
+
Complex = _ref.Complex,
|
|
25
|
+
_BigNumber = _ref.BigNumber,
|
|
26
|
+
pi = _ref.pi;
|
|
27
|
+
/**
|
|
28
|
+
* Compute the Riemann Zeta function of a value using an infinite series for
|
|
29
|
+
* all of the complex plane using Riemann's Functional equation.
|
|
30
|
+
*
|
|
31
|
+
* Based off the paper by Xavier Gourdon and Pascal Sebah
|
|
32
|
+
* ( http://numbers.computation.free.fr/Constants/Miscellaneous/zetaevaluations.pdf )
|
|
33
|
+
*
|
|
34
|
+
* Implementation and slight modification by Anik Patel
|
|
35
|
+
*
|
|
36
|
+
* Note: the implementation is accurate up to about 6 digits.
|
|
37
|
+
*
|
|
38
|
+
* Syntax:
|
|
39
|
+
*
|
|
40
|
+
* math.zeta(n)
|
|
41
|
+
*
|
|
42
|
+
* Examples:
|
|
43
|
+
*
|
|
44
|
+
* math.zeta(5) // returns 1.0369277551433895
|
|
45
|
+
* math.zeta(-0.5) // returns -0.2078862249773449
|
|
46
|
+
* math.zeta(math.i) // returns 0.0033002236853253153 - 0.4181554491413212i
|
|
47
|
+
*
|
|
48
|
+
*
|
|
49
|
+
* @param {number | Complex | BigNumber} s A Real, Complex or BigNumber parameter to the Riemann Zeta Function
|
|
50
|
+
* @return {number | Complex | BigNumber} The Riemann Zeta of `s`
|
|
51
|
+
*/
|
|
52
|
+
return typed(name, {
|
|
53
|
+
number: function number(s) {
|
|
54
|
+
return zetaNumeric(s, function (value) {
|
|
55
|
+
return value;
|
|
56
|
+
}, function () {
|
|
57
|
+
return 20;
|
|
58
|
+
});
|
|
59
|
+
},
|
|
60
|
+
BigNumber: function BigNumber(s) {
|
|
61
|
+
return zetaNumeric(s, function (value) {
|
|
62
|
+
return new _BigNumber(value);
|
|
63
|
+
}, function () {
|
|
64
|
+
// epsilon is for example 1e-12. Extract the positive exponent 12 from that
|
|
65
|
+
return Math.abs(Math.log10(config.epsilon));
|
|
66
|
+
});
|
|
67
|
+
},
|
|
68
|
+
Complex: zetaComplex
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* @param {number | BigNumber} s
|
|
73
|
+
* @param {(value: number) => number | BigNumber} createValue
|
|
74
|
+
* @param {(value: number | BigNumber | Complex) => number} determineDigits
|
|
75
|
+
* @returns {number | BigNumber}
|
|
76
|
+
*/
|
|
77
|
+
function zetaNumeric(s, createValue, determineDigits) {
|
|
78
|
+
if (equal(s, 0)) {
|
|
79
|
+
return createValue(-0.5);
|
|
80
|
+
}
|
|
81
|
+
if (equal(s, 1)) {
|
|
82
|
+
return createValue(NaN);
|
|
83
|
+
}
|
|
84
|
+
if (!isFinite(s)) {
|
|
85
|
+
return isNegative(s) ? createValue(NaN) : createValue(1);
|
|
86
|
+
}
|
|
87
|
+
return zeta(s, createValue, determineDigits, function (s) {
|
|
88
|
+
return s;
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* @param {Complex} s
|
|
94
|
+
* @returns {Complex}
|
|
95
|
+
*/
|
|
96
|
+
function zetaComplex(s) {
|
|
97
|
+
if (s.re === 0 && s.im === 0) {
|
|
98
|
+
return new Complex(-0.5);
|
|
99
|
+
}
|
|
100
|
+
if (s.re === 1) {
|
|
101
|
+
return new Complex(NaN, NaN);
|
|
102
|
+
}
|
|
103
|
+
if (s.re === Infinity && s.im === 0) {
|
|
104
|
+
return new Complex(1);
|
|
105
|
+
}
|
|
106
|
+
if (s.im === Infinity || s.re === -Infinity) {
|
|
107
|
+
return new Complex(NaN, NaN);
|
|
108
|
+
}
|
|
109
|
+
return zeta(s, function (value) {
|
|
110
|
+
return value;
|
|
111
|
+
}, function (s) {
|
|
112
|
+
return Math.round(1.3 * 15 + 0.9 * Math.abs(s.im));
|
|
113
|
+
}, function (s) {
|
|
114
|
+
return s.re;
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* @param {number | BigNumber | Complex} s
|
|
120
|
+
* @param {(value: number) => number | BigNumber | Complex} createValue
|
|
121
|
+
* @param {(value: number | BigNumber | Complex) => number} determineDigits
|
|
122
|
+
* @param {(value: number | BigNumber | Complex) => number} getRe
|
|
123
|
+
* @returns {*|number}
|
|
124
|
+
*/
|
|
125
|
+
function zeta(s, createValue, determineDigits, getRe) {
|
|
126
|
+
var n = determineDigits(s);
|
|
127
|
+
if (getRe(s) > -(n - 1) / 2) {
|
|
128
|
+
return f(s, createValue(n), createValue);
|
|
129
|
+
} else {
|
|
130
|
+
// Function Equation for reflection to x < 1
|
|
131
|
+
var c = multiply(pow(2, s), pow(createValue(pi), subtract(s, 1)));
|
|
132
|
+
c = multiply(c, sin(multiply(divide(createValue(pi), 2), s)));
|
|
133
|
+
c = multiply(c, gamma(subtract(1, s)));
|
|
134
|
+
return multiply(c, zeta(subtract(1, s), createValue, determineDigits, getRe));
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Calculate a portion of the sum
|
|
140
|
+
* @param {number | BigNumber} k a positive integer
|
|
141
|
+
* @param {number | BigNumber} n a positive integer
|
|
142
|
+
* @return {number} the portion of the sum
|
|
143
|
+
**/
|
|
144
|
+
function d(k, n) {
|
|
145
|
+
var S = k;
|
|
146
|
+
for (var j = k; smallerEq(j, n); j = add(j, 1)) {
|
|
147
|
+
var factor = divide(multiply(factorial(add(n, subtract(j, 1))), pow(4, j)), multiply(factorial(subtract(n, j)), factorial(multiply(2, j))));
|
|
148
|
+
S = add(S, factor);
|
|
149
|
+
}
|
|
150
|
+
return multiply(n, S);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Calculate the positive Riemann Zeta function
|
|
155
|
+
* @param {number} s a real or complex number with s.re > 1
|
|
156
|
+
* @param {number} n a positive integer
|
|
157
|
+
* @param {(number) => number | BigNumber | Complex} createValue
|
|
158
|
+
* @return {number} Riemann Zeta of s
|
|
159
|
+
**/
|
|
160
|
+
function f(s, n, createValue) {
|
|
161
|
+
var c = divide(1, multiply(d(createValue(0), n), subtract(1, pow(2, subtract(1, s)))));
|
|
162
|
+
var S = createValue(0);
|
|
163
|
+
for (var k = createValue(1); smallerEq(k, n); k = add(k, 1)) {
|
|
164
|
+
S = add(S, divide(multiply(Math.pow(-1, k - 1), d(k, n)), pow(k, s)));
|
|
165
|
+
}
|
|
166
|
+
return multiply(c, S);
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
exports.createZeta = createZeta;
|
|
@@ -5,17 +5,18 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.createQuantileSeq = void 0;
|
|
7
7
|
var _is = require("../../utils/is.js");
|
|
8
|
-
var _number = require("../../utils/number.js");
|
|
9
8
|
var _array = require("../../utils/array.js");
|
|
10
9
|
var _factory = require("../../utils/factory.js");
|
|
10
|
+
var _apply = require("../matrix/apply.js");
|
|
11
11
|
var name = 'quantileSeq';
|
|
12
|
-
var dependencies = ['typed', 'add', 'multiply', 'partitionSelect', 'compare'];
|
|
12
|
+
var dependencies = ['typed', 'add', 'multiply', 'partitionSelect', 'compare', 'isInteger'];
|
|
13
13
|
var createQuantileSeq = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
|
|
14
14
|
var typed = _ref.typed,
|
|
15
15
|
add = _ref.add,
|
|
16
16
|
multiply = _ref.multiply,
|
|
17
17
|
partitionSelect = _ref.partitionSelect,
|
|
18
|
-
compare = _ref.compare
|
|
18
|
+
compare = _ref.compare,
|
|
19
|
+
isInteger = _ref.isInteger;
|
|
19
20
|
/**
|
|
20
21
|
* Compute the prob order quantile of a matrix or a list with values.
|
|
21
22
|
* The sequence is sorted and the middle value is returned.
|
|
@@ -50,6 +51,40 @@ var createQuantileSeq = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
|
|
|
50
51
|
* @param {Boolean} sorted=false is data sorted in ascending order
|
|
51
52
|
* @return {Number, BigNumber, Unit, Array} Quantile(s)
|
|
52
53
|
*/
|
|
54
|
+
|
|
55
|
+
var apply = (0, _apply.createApply)({
|
|
56
|
+
typed: typed,
|
|
57
|
+
isInteger: isInteger
|
|
58
|
+
});
|
|
59
|
+
/**
|
|
60
|
+
* Check if array value types are valid, throw error otherwise.
|
|
61
|
+
* @param {number | BigNumber | Unit} x
|
|
62
|
+
* @param {number | BigNumber | Unit} x
|
|
63
|
+
* @private
|
|
64
|
+
*/
|
|
65
|
+
var validate = typed({
|
|
66
|
+
'number | BigNumber | Unit': function numberBigNumberUnit(x) {
|
|
67
|
+
return x;
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
return typed(name, {
|
|
71
|
+
'Array|Matrix, number|BigNumber|Array': function ArrayMatrixNumberBigNumberArray(data, prob) {
|
|
72
|
+
return quantileSeq(data, prob, false);
|
|
73
|
+
},
|
|
74
|
+
'Array|Matrix, number|BigNumber|Array, boolean': quantileSeq,
|
|
75
|
+
'Array|Matrix, number|BigNumber|Array, number': function ArrayMatrixNumberBigNumberArrayNumber(data, prob, dim) {
|
|
76
|
+
return _quantileSeqDim(data, prob, false, dim);
|
|
77
|
+
},
|
|
78
|
+
'Array|Matrix, number|BigNumber|Array, boolean, number': function ArrayMatrixNumberBigNumberArrayBooleanNumber(data, prob, sorted, dim) {
|
|
79
|
+
return _quantileSeqDim(data, prob, sorted, dim);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
function _quantileSeqDim(data, prob, sorted, dim) {
|
|
83
|
+
// return [1.3, 1.2]
|
|
84
|
+
return apply(data, dim, function (x) {
|
|
85
|
+
return quantileSeq(x, prob, sorted);
|
|
86
|
+
});
|
|
87
|
+
}
|
|
53
88
|
function quantileSeq(data, probOrN, sorted) {
|
|
54
89
|
var probArr, dataArr, one;
|
|
55
90
|
if (arguments.length < 2 || arguments.length > 3) {
|
|
@@ -69,7 +104,7 @@ var createQuantileSeq = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
|
|
|
69
104
|
}
|
|
70
105
|
if (probOrN > 1) {
|
|
71
106
|
// quantileSeq([a, b, c, d, ...], N[,sorted])
|
|
72
|
-
if (!
|
|
107
|
+
if (!isInteger(probOrN)) {
|
|
73
108
|
throw new Error('N must be a positive integer');
|
|
74
109
|
}
|
|
75
110
|
var nPlusOne = probOrN + 1;
|
|
@@ -223,18 +258,5 @@ var createQuantileSeq = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
|
|
|
223
258
|
var one = new fracPart.constructor(1);
|
|
224
259
|
return add(multiply(left, one.minus(fracPart)), multiply(right, fracPart));
|
|
225
260
|
}
|
|
226
|
-
|
|
227
|
-
/**
|
|
228
|
-
* Check if array value types are valid, throw error otherwise.
|
|
229
|
-
* @param {number | BigNumber | Unit} x
|
|
230
|
-
* @param {number | BigNumber | Unit} x
|
|
231
|
-
* @private
|
|
232
|
-
*/
|
|
233
|
-
var validate = typed({
|
|
234
|
-
'number | BigNumber | Unit': function numberBigNumberUnit(x) {
|
|
235
|
-
return x;
|
|
236
|
-
}
|
|
237
|
-
});
|
|
238
|
-
return quantileSeq;
|
|
239
261
|
});
|
|
240
262
|
exports.createQuantileSeq = createQuantileSeq;
|
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 11.
|
|
10
|
-
* @date 2023-
|
|
9
|
+
* @version 11.10.0
|
|
10
|
+
* @date 2023-08-23
|
|
11
11
|
*
|
|
12
12
|
* @license
|
|
13
13
|
* Copyright (C) 2013-2023 Jos de Jong <wjosdejong@gmail.com>
|
|
@@ -339,6 +339,18 @@ var createDenseMatrixClass = /* #__PURE__ */(0, _factory.factory)(name, dependen
|
|
|
339
339
|
} else {
|
|
340
340
|
// set a submatrix
|
|
341
341
|
|
|
342
|
+
// broadcast submatrix
|
|
343
|
+
if (!(0, _object.deepStrictEqual)(sSize, iSize)) {
|
|
344
|
+
try {
|
|
345
|
+
if (sSize.length === 0) {
|
|
346
|
+
submatrix = (0, _array.broadcastTo)([submatrix], iSize);
|
|
347
|
+
} else {
|
|
348
|
+
submatrix = (0, _array.broadcastTo)(submatrix, iSize);
|
|
349
|
+
}
|
|
350
|
+
sSize = (0, _array.arraySize)(submatrix);
|
|
351
|
+
} catch (_unused) {}
|
|
352
|
+
}
|
|
353
|
+
|
|
342
354
|
// validate dimensions
|
|
343
355
|
if (iSize.length < matrix._size.length) {
|
|
344
356
|
throw new _DimensionError.DimensionError(iSize.length, matrix._size.length, '<');
|
|
@@ -975,19 +987,17 @@ var createDenseMatrixClass = /* #__PURE__ */(0, _factory.factory)(name, dependen
|
|
|
975
987
|
|
|
976
988
|
/**
|
|
977
989
|
* Preprocess data, which can be an Array or DenseMatrix with nested Arrays and
|
|
978
|
-
* Matrices.
|
|
990
|
+
* Matrices. Clones all (nested) Arrays, and replaces all nested Matrices with Arrays
|
|
979
991
|
* @memberof DenseMatrix
|
|
980
|
-
* @param {Array} data
|
|
992
|
+
* @param {Array | Matrix} data
|
|
981
993
|
* @return {Array} data
|
|
982
994
|
*/
|
|
983
995
|
function preprocess(data) {
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
data[i] = preprocess(elem.valueOf());
|
|
990
|
-
}
|
|
996
|
+
if ((0, _is.isMatrix)(data)) {
|
|
997
|
+
return preprocess(data.valueOf());
|
|
998
|
+
}
|
|
999
|
+
if ((0, _is.isArray)(data)) {
|
|
1000
|
+
return data.map(preprocess);
|
|
991
1001
|
}
|
|
992
1002
|
return data;
|
|
993
1003
|
}
|