mathjs 11.11.0 → 11.11.1
Sign up to get free protection for your applications and to get access to all the features.
- package/HISTORY.md +11 -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/dependenciesGcd.generated.js +4 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesMod.generated.js +4 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesPrintTransform.generated.js +24 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesQuantileSeq.generated.js +12 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesQuantileSeqTransform.generated.js +12 -0
- package/lib/cjs/entry/dependenciesAny.generated.js +7 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesQuantileSeq.generated.js +10 -0
- package/lib/cjs/entry/impureFunctionsAny.generated.js +23 -11
- package/lib/cjs/entry/impureFunctionsNumber.generated.js +13 -13
- package/lib/cjs/entry/pureFunctionsAny.generated.js +55 -43
- package/lib/cjs/entry/pureFunctionsNumber.generated.js +20 -15
- package/lib/cjs/expression/embeddedDocs/function/utils/print.js +1 -1
- package/lib/cjs/expression/node/FunctionNode.js +3 -1
- package/lib/cjs/expression/transform/print.transform.js +47 -0
- package/lib/cjs/expression/transform/quantileSeq.transform.js +27 -5
- package/lib/cjs/factoriesAny.js +8 -1
- package/lib/cjs/function/algebra/simplify/util.js +2 -2
- package/lib/cjs/function/arithmetic/gcd.js +40 -4
- package/lib/cjs/function/arithmetic/mod.js +32 -3
- package/lib/cjs/function/numeric/solveODE.js +2 -2
- package/lib/cjs/function/statistics/quantileSeq.js +90 -167
- package/lib/cjs/function/string/print.js +5 -1
- package/lib/cjs/header.js +2 -2
- package/lib/cjs/plain/number/arithmetic.js +4 -12
- package/lib/cjs/type/unit/Unit.js +2 -2
- package/lib/cjs/utils/print.js +8 -0
- package/lib/cjs/utils/snapshot.js +8 -8
- package/lib/cjs/version.js +1 -1
- package/lib/esm/entry/dependenciesAny/dependenciesGcd.generated.js +4 -0
- package/lib/esm/entry/dependenciesAny/dependenciesMod.generated.js +4 -0
- package/lib/esm/entry/dependenciesAny/dependenciesPrintTransform.generated.js +16 -0
- package/lib/esm/entry/dependenciesAny/dependenciesQuantileSeq.generated.js +12 -0
- package/lib/esm/entry/dependenciesAny/dependenciesQuantileSeqTransform.generated.js +12 -0
- package/lib/esm/entry/dependenciesAny.generated.js +1 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesQuantileSeq.generated.js +10 -0
- package/lib/esm/entry/impureFunctionsAny.generated.js +25 -13
- package/lib/esm/entry/impureFunctionsNumber.generated.js +15 -15
- package/lib/esm/entry/pureFunctionsAny.generated.js +51 -39
- package/lib/esm/entry/pureFunctionsNumber.generated.js +19 -14
- package/lib/esm/expression/embeddedDocs/function/utils/print.js +1 -1
- package/lib/esm/expression/node/FunctionNode.js +3 -1
- package/lib/esm/expression/transform/print.transform.js +42 -0
- package/lib/esm/expression/transform/quantileSeq.transform.js +23 -5
- package/lib/esm/factoriesAny.js +2 -1
- package/lib/esm/function/algebra/simplify/util.js +2 -2
- package/lib/esm/function/arithmetic/gcd.js +40 -4
- package/lib/esm/function/arithmetic/mod.js +32 -3
- package/lib/esm/function/numeric/solveODE.js +2 -2
- package/lib/esm/function/statistics/quantileSeq.js +82 -165
- package/lib/esm/function/string/print.js +5 -1
- package/lib/esm/plain/number/arithmetic.js +4 -12
- package/lib/esm/type/unit/Unit.js +2 -2
- package/lib/esm/utils/print.js +1 -0
- package/lib/esm/utils/snapshot.js +2 -2
- package/lib/esm/version.js +1 -1
- package/package.json +20 -20
@@ -8,7 +8,7 @@ var _factory = require("../../utils/factory.js");
|
|
8
8
|
var _quantileSeq = require("../../function/statistics/quantileSeq.js");
|
9
9
|
var _lastDimToZeroBase = require("./utils/lastDimToZeroBase.js");
|
10
10
|
var name = 'quantileSeq';
|
11
|
-
var dependencies = ['typed', 'add', 'multiply', 'partitionSelect', 'compare', 'isInteger'];
|
11
|
+
var dependencies = ['typed', 'bignumber', 'add', 'subtract', 'divide', 'multiply', 'partitionSelect', 'compare', 'isInteger', 'smaller', 'smallerEq', 'larger'];
|
12
12
|
|
13
13
|
/**
|
14
14
|
* Attach a transform function to math.quantileSeq
|
@@ -19,25 +19,47 @@ var dependencies = ['typed', 'add', 'multiply', 'partitionSelect', 'compare', 'i
|
|
19
19
|
*/
|
20
20
|
var createQuantileSeqTransform = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
|
21
21
|
var typed = _ref.typed,
|
22
|
+
bignumber = _ref.bignumber,
|
22
23
|
add = _ref.add,
|
24
|
+
subtract = _ref.subtract,
|
25
|
+
divide = _ref.divide,
|
23
26
|
multiply = _ref.multiply,
|
24
27
|
partitionSelect = _ref.partitionSelect,
|
25
28
|
compare = _ref.compare,
|
26
|
-
isInteger = _ref.isInteger
|
29
|
+
isInteger = _ref.isInteger,
|
30
|
+
smaller = _ref.smaller,
|
31
|
+
smallerEq = _ref.smallerEq,
|
32
|
+
larger = _ref.larger;
|
27
33
|
var quantileSeq = (0, _quantileSeq.createQuantileSeq)({
|
28
34
|
typed: typed,
|
35
|
+
bignumber: bignumber,
|
29
36
|
add: add,
|
37
|
+
subtract: subtract,
|
38
|
+
divide: divide,
|
30
39
|
multiply: multiply,
|
31
40
|
partitionSelect: partitionSelect,
|
32
41
|
compare: compare,
|
33
|
-
isInteger: isInteger
|
42
|
+
isInteger: isInteger,
|
43
|
+
smaller: smaller,
|
44
|
+
smallerEq: smallerEq,
|
45
|
+
larger: larger
|
34
46
|
});
|
35
47
|
return typed('quantileSeq', {
|
36
|
-
'Array|Matrix, number|BigNumber
|
48
|
+
'Array | Matrix, number | BigNumber': quantileSeq,
|
49
|
+
'Array | Matrix, number | BigNumber, number': function ArrayMatrixNumberBigNumberNumber(arr, prob, dim) {
|
37
50
|
return quantileSeq(arr, prob, dimToZeroBase(dim));
|
38
51
|
},
|
39
|
-
'Array|Matrix, number|BigNumber
|
52
|
+
'Array | Matrix, number | BigNumber, boolean': quantileSeq,
|
53
|
+
'Array | Matrix, number | BigNumber, boolean, number': function ArrayMatrixNumberBigNumberBooleanNumber(arr, prob, sorted, dim) {
|
40
54
|
return quantileSeq(arr, prob, sorted, dimToZeroBase(dim));
|
55
|
+
},
|
56
|
+
'Array | Matrix, Array | Matrix': quantileSeq,
|
57
|
+
'Array | Matrix, Array | Matrix, number': function ArrayMatrixArrayMatrixNumber(data, prob, dim) {
|
58
|
+
return quantileSeq(data, prob, dimToZeroBase(dim));
|
59
|
+
},
|
60
|
+
'Array | Matrix, Array | Matrix, boolean': quantileSeq,
|
61
|
+
'Array | Matrix, Array | Matrix, boolean, number': function ArrayMatrixArrayMatrixBooleanNumber(data, prob, sorted, dim) {
|
62
|
+
return quantileSeq(data, prob, sorted, dimToZeroBase(dim));
|
41
63
|
}
|
42
64
|
});
|
43
65
|
function dimToZeroBase(dim) {
|
package/lib/cjs/factoriesAny.js
CHANGED
@@ -1467,6 +1467,12 @@ Object.defineProperty(exports, "createPrint", {
|
|
1467
1467
|
return _print.createPrint;
|
1468
1468
|
}
|
1469
1469
|
});
|
1470
|
+
Object.defineProperty(exports, "createPrintTransform", {
|
1471
|
+
enumerable: true,
|
1472
|
+
get: function get() {
|
1473
|
+
return _printTransform.createPrintTransform;
|
1474
|
+
}
|
1475
|
+
});
|
1470
1476
|
Object.defineProperty(exports, "createProd", {
|
1471
1477
|
enumerable: true,
|
1472
1478
|
get: function get() {
|
@@ -2420,4 +2426,5 @@ var _stdTransform = require("./expression/transform/std.transform.js");
|
|
2420
2426
|
var _sumTransform = require("./expression/transform/sum.transform.js");
|
2421
2427
|
var _quantileSeqTransform = require("./expression/transform/quantileSeq.transform.js");
|
2422
2428
|
var _cumsumTransform = require("./expression/transform/cumsum.transform.js");
|
2423
|
-
var _varianceTransform = require("./expression/transform/variance.transform.js");
|
2429
|
+
var _varianceTransform = require("./expression/transform/variance.transform.js");
|
2430
|
+
var _printTransform = require("./expression/transform/print.transform.js");
|
@@ -9,8 +9,8 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
9
9
|
var _is = require("../../../utils/is.js");
|
10
10
|
var _factory = require("../../../utils/factory.js");
|
11
11
|
var _object = require("../../../utils/object.js");
|
12
|
-
function ownKeys(
|
13
|
-
function _objectSpread(
|
12
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
13
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
14
14
|
var name = 'simplifyUtil';
|
15
15
|
var dependencies = ['FunctionNode', 'OperatorNode', 'SymbolNode'];
|
16
16
|
var createUtil = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
|
@@ -7,15 +7,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
7
7
|
exports.createGcd = void 0;
|
8
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
9
9
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
10
|
+
var _number = require("../../utils/number.js");
|
10
11
|
var _factory = require("../../utils/factory.js");
|
12
|
+
var _mod = require("./mod.js");
|
11
13
|
var _matAlgo01xDSid = require("../../type/matrix/utils/matAlgo01xDSid.js");
|
12
14
|
var _matAlgo04xSidSid = require("../../type/matrix/utils/matAlgo04xSidSid.js");
|
13
15
|
var _matAlgo10xSids = require("../../type/matrix/utils/matAlgo10xSids.js");
|
14
16
|
var _matrixAlgorithmSuite = require("../../type/matrix/utils/matrixAlgorithmSuite.js");
|
15
|
-
var _index = require("../../plain/number/index.js");
|
16
17
|
var _ArgumentsError = require("../../error/ArgumentsError.js");
|
17
18
|
var name = 'gcd';
|
18
|
-
var dependencies = ['typed', 'matrix', 'equalScalar', 'BigNumber', 'DenseMatrix', 'concat'];
|
19
|
+
var dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar', 'zeros', 'BigNumber', 'DenseMatrix', 'concat'];
|
19
20
|
var gcdTypes = 'number | BigNumber | Fraction | Matrix | Array';
|
20
21
|
var gcdManyTypesSignature = "".concat(gcdTypes, ", ").concat(gcdTypes, ", ...").concat(gcdTypes);
|
21
22
|
function is1d(array) {
|
@@ -27,10 +28,23 @@ var createGcd = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functio
|
|
27
28
|
var _typed;
|
28
29
|
var typed = _ref.typed,
|
29
30
|
matrix = _ref.matrix,
|
31
|
+
config = _ref.config,
|
32
|
+
round = _ref.round,
|
30
33
|
equalScalar = _ref.equalScalar,
|
34
|
+
zeros = _ref.zeros,
|
31
35
|
BigNumber = _ref.BigNumber,
|
32
36
|
DenseMatrix = _ref.DenseMatrix,
|
33
37
|
concat = _ref.concat;
|
38
|
+
var mod = (0, _mod.createMod)({
|
39
|
+
typed: typed,
|
40
|
+
config: config,
|
41
|
+
round: round,
|
42
|
+
matrix: matrix,
|
43
|
+
equalScalar: equalScalar,
|
44
|
+
zeros: zeros,
|
45
|
+
DenseMatrix: DenseMatrix,
|
46
|
+
concat: concat
|
47
|
+
});
|
34
48
|
var matAlgo01xDSid = (0, _matAlgo01xDSid.createMatAlgo01xDSid)({
|
35
49
|
typed: typed
|
36
50
|
});
|
@@ -74,7 +88,7 @@ var createGcd = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functio
|
|
74
88
|
* @return {number | BigNumber | Fraction | Array | Matrix} The greatest common divisor
|
75
89
|
*/
|
76
90
|
return typed(name, {
|
77
|
-
'number, number':
|
91
|
+
'number, number': _gcdNumber,
|
78
92
|
'BigNumber, BigNumber': _gcdBigNumber,
|
79
93
|
'Fraction, Fraction': function FractionFraction(x, y) {
|
80
94
|
return x.gcd(y);
|
@@ -107,6 +121,28 @@ var createGcd = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functio
|
|
107
121
|
};
|
108
122
|
})), _typed));
|
109
123
|
|
124
|
+
/**
|
125
|
+
* Calculate gcd for numbers
|
126
|
+
* @param {number} a
|
127
|
+
* @param {number} b
|
128
|
+
* @returns {number} Returns the greatest common denominator of a and b
|
129
|
+
* @private
|
130
|
+
*/
|
131
|
+
function _gcdNumber(a, b) {
|
132
|
+
if (!(0, _number.isInteger)(a) || !(0, _number.isInteger)(b)) {
|
133
|
+
throw new Error('Parameters in function gcd must be integer numbers');
|
134
|
+
}
|
135
|
+
|
136
|
+
// https://en.wikipedia.org/wiki/Euclidean_algorithm
|
137
|
+
var r;
|
138
|
+
while (b !== 0) {
|
139
|
+
r = mod(a, b);
|
140
|
+
a = b;
|
141
|
+
b = r;
|
142
|
+
}
|
143
|
+
return a < 0 ? -a : a;
|
144
|
+
}
|
145
|
+
|
110
146
|
/**
|
111
147
|
* Calculate gcd for BigNumbers
|
112
148
|
* @param {BigNumber} a
|
@@ -122,7 +158,7 @@ var createGcd = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functio
|
|
122
158
|
// https://en.wikipedia.org/wiki/Euclidean_algorithm
|
123
159
|
var zero = new BigNumber(0);
|
124
160
|
while (!b.isZero()) {
|
125
|
-
var r =
|
161
|
+
var r = mod(a, b);
|
126
162
|
a = b;
|
127
163
|
b = r;
|
128
164
|
}
|
@@ -5,21 +5,33 @@ Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
});
|
6
6
|
exports.createMod = void 0;
|
7
7
|
var _factory = require("../../utils/factory.js");
|
8
|
+
var _floor = require("./floor.js");
|
8
9
|
var _matAlgo02xDS = require("../../type/matrix/utils/matAlgo02xDS0.js");
|
9
10
|
var _matAlgo03xDSf = require("../../type/matrix/utils/matAlgo03xDSf.js");
|
10
11
|
var _matAlgo05xSfSf = require("../../type/matrix/utils/matAlgo05xSfSf.js");
|
11
12
|
var _matAlgo11xS0s = require("../../type/matrix/utils/matAlgo11xS0s.js");
|
12
13
|
var _matAlgo12xSfs = require("../../type/matrix/utils/matAlgo12xSfs.js");
|
13
|
-
var _index = require("../../plain/number/index.js");
|
14
14
|
var _matrixAlgorithmSuite = require("../../type/matrix/utils/matrixAlgorithmSuite.js");
|
15
15
|
var name = 'mod';
|
16
|
-
var dependencies = ['typed', 'matrix', 'equalScalar', 'DenseMatrix', 'concat'];
|
16
|
+
var dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar', 'zeros', 'DenseMatrix', 'concat'];
|
17
17
|
var createMod = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
|
18
18
|
var typed = _ref.typed,
|
19
|
+
config = _ref.config,
|
20
|
+
round = _ref.round,
|
19
21
|
matrix = _ref.matrix,
|
20
22
|
equalScalar = _ref.equalScalar,
|
23
|
+
zeros = _ref.zeros,
|
21
24
|
DenseMatrix = _ref.DenseMatrix,
|
22
25
|
concat = _ref.concat;
|
26
|
+
var floor = (0, _floor.createFloor)({
|
27
|
+
typed: typed,
|
28
|
+
config: config,
|
29
|
+
round: round,
|
30
|
+
matrix: matrix,
|
31
|
+
equalScalar: equalScalar,
|
32
|
+
zeros: zeros,
|
33
|
+
DenseMatrix: DenseMatrix
|
34
|
+
});
|
23
35
|
var matAlgo02xDS0 = (0, _matAlgo02xDS.createMatAlgo02xDS0)({
|
24
36
|
typed: typed,
|
25
37
|
equalScalar: equalScalar
|
@@ -81,7 +93,7 @@ var createMod = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functio
|
|
81
93
|
* @return {number | BigNumber | Fraction | Array | Matrix} Returns the remainder of `x` divided by `y`.
|
82
94
|
*/
|
83
95
|
return typed(name, {
|
84
|
-
'number, number':
|
96
|
+
'number, number': _modNumber,
|
85
97
|
'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {
|
86
98
|
if (y.isNeg()) {
|
87
99
|
throw new Error('Cannot calculate mod for a negative divisor');
|
@@ -102,5 +114,22 @@ var createMod = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functio
|
|
102
114
|
Ss: matAlgo11xS0s,
|
103
115
|
sS: matAlgo12xSfs
|
104
116
|
}));
|
117
|
+
|
118
|
+
/**
|
119
|
+
* Calculate the modulus of two numbers
|
120
|
+
* @param {number} x
|
121
|
+
* @param {number} y
|
122
|
+
* @returns {number} res
|
123
|
+
* @private
|
124
|
+
*/
|
125
|
+
function _modNumber(x, y) {
|
126
|
+
// We don't use JavaScript's % operator here as this doesn't work
|
127
|
+
// correctly for x < 0 and x === 0
|
128
|
+
// see https://en.wikipedia.org/wiki/Modulo_operation
|
129
|
+
|
130
|
+
// We use mathjs floor to handle errors associated with
|
131
|
+
// precision float approximation
|
132
|
+
return y === 0 ? x : x - y * floor(x / y);
|
133
|
+
}
|
105
134
|
});
|
106
135
|
exports.createMod = createMod;
|
@@ -10,8 +10,8 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
|
|
10
10
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
11
11
|
var _is = require("../../utils/is.js");
|
12
12
|
var _factory = require("../../utils/factory.js");
|
13
|
-
function ownKeys(
|
14
|
-
function _objectSpread(
|
13
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
14
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
15
15
|
var name = 'solveODE';
|
16
16
|
var dependencies = ['typed', 'add', 'subtract', 'multiply', 'divide', 'max', 'map', 'abs', 'isPositive', 'isNegative', 'larger', 'smaller', 'matrix', 'bignumber', 'unaryMinus'];
|
17
17
|
var createSolveODE = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
|
@@ -9,14 +9,25 @@ var _array = require("../../utils/array.js");
|
|
9
9
|
var _factory = require("../../utils/factory.js");
|
10
10
|
var _apply = require("../matrix/apply.js");
|
11
11
|
var name = 'quantileSeq';
|
12
|
-
var dependencies = ['typed', 'add', 'multiply', 'partitionSelect', 'compare', 'isInteger'];
|
12
|
+
var dependencies = ['typed', '?bignumber', 'add', 'subtract', 'divide', 'multiply', 'partitionSelect', 'compare', 'isInteger', 'smaller', 'smallerEq', 'larger'];
|
13
13
|
var createQuantileSeq = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
|
14
14
|
var typed = _ref.typed,
|
15
|
+
bignumber = _ref.bignumber,
|
15
16
|
add = _ref.add,
|
17
|
+
subtract = _ref.subtract,
|
18
|
+
divide = _ref.divide,
|
16
19
|
multiply = _ref.multiply,
|
17
20
|
partitionSelect = _ref.partitionSelect,
|
18
21
|
compare = _ref.compare,
|
19
|
-
isInteger = _ref.isInteger
|
22
|
+
isInteger = _ref.isInteger,
|
23
|
+
smaller = _ref.smaller,
|
24
|
+
smallerEq = _ref.smallerEq,
|
25
|
+
larger = _ref.larger;
|
26
|
+
var apply = (0, _apply.createApply)({
|
27
|
+
typed: typed,
|
28
|
+
isInteger: isInteger
|
29
|
+
});
|
30
|
+
|
20
31
|
/**
|
21
32
|
* Compute the prob order quantile of a matrix or a list with values.
|
22
33
|
* The sequence is sorted and the middle value is returned.
|
@@ -51,130 +62,83 @@ var createQuantileSeq = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
|
|
51
62
|
* @param {Boolean} sorted=false is data sorted in ascending order
|
52
63
|
* @return {Number, BigNumber, Unit, Array} Quantile(s)
|
53
64
|
*/
|
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
65
|
return typed(name, {
|
71
|
-
'Array|Matrix, number|BigNumber
|
72
|
-
return
|
66
|
+
'Array | Matrix, number | BigNumber': function ArrayMatrixNumberBigNumber(data, p) {
|
67
|
+
return _quantileSeqProbNumber(data, p, false);
|
68
|
+
},
|
69
|
+
'Array | Matrix, number | BigNumber, number': function ArrayMatrixNumberBigNumberNumber(data, prob, dim) {
|
70
|
+
return _quantileSeqDim(data, prob, false, dim, _quantileSeqProbNumber);
|
71
|
+
},
|
72
|
+
'Array | Matrix, number | BigNumber, boolean': _quantileSeqProbNumber,
|
73
|
+
'Array | Matrix, number | BigNumber, boolean, number': function ArrayMatrixNumberBigNumberBooleanNumber(data, prob, sorted, dim) {
|
74
|
+
return _quantileSeqDim(data, prob, sorted, dim, _quantileSeqProbNumber);
|
73
75
|
},
|
74
|
-
'Array|Matrix,
|
75
|
-
|
76
|
-
return _quantileSeqDim(data, prob, false, dim);
|
76
|
+
'Array | Matrix, Array | Matrix': function ArrayMatrixArrayMatrix(data, p) {
|
77
|
+
return _quantileSeqProbCollection(data, p, false);
|
77
78
|
},
|
78
|
-
'Array|Matrix,
|
79
|
-
return _quantileSeqDim(data, prob,
|
79
|
+
'Array | Matrix, Array | Matrix, number': function ArrayMatrixArrayMatrixNumber(data, prob, dim) {
|
80
|
+
return _quantileSeqDim(data, prob, false, dim, _quantileSeqProbCollection);
|
81
|
+
},
|
82
|
+
'Array | Matrix, Array | Matrix, boolean': _quantileSeqProbCollection,
|
83
|
+
'Array | Matrix, Array | Matrix, boolean, number': function ArrayMatrixArrayMatrixBooleanNumber(data, prob, sorted, dim) {
|
84
|
+
return _quantileSeqDim(data, prob, sorted, dim, _quantileSeqProbCollection);
|
80
85
|
}
|
81
86
|
});
|
82
|
-
function _quantileSeqDim(data, prob, sorted, dim) {
|
83
|
-
// return [1.3, 1.2]
|
87
|
+
function _quantileSeqDim(data, prob, sorted, dim, fn) {
|
84
88
|
return apply(data, dim, function (x) {
|
85
|
-
return
|
89
|
+
return fn(x, prob, sorted);
|
86
90
|
});
|
87
91
|
}
|
88
|
-
function
|
89
|
-
var probArr
|
90
|
-
|
91
|
-
|
92
|
+
function _quantileSeqProbNumber(data, probOrN, sorted) {
|
93
|
+
var probArr;
|
94
|
+
var dataArr = data.valueOf();
|
95
|
+
if (smaller(probOrN, 0)) {
|
96
|
+
throw new Error('N/prob must be non-negative');
|
92
97
|
}
|
93
|
-
if ((
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
if (probOrN <= 1) {
|
102
|
-
// quantileSeq([a, b, c, d, ...], prob[,sorted])
|
103
|
-
return _quantileSeq(dataArr, probOrN, sorted);
|
104
|
-
}
|
105
|
-
if (probOrN > 1) {
|
106
|
-
// quantileSeq([a, b, c, d, ...], N[,sorted])
|
107
|
-
if (!isInteger(probOrN)) {
|
108
|
-
throw new Error('N must be a positive integer');
|
109
|
-
}
|
110
|
-
var nPlusOne = probOrN + 1;
|
111
|
-
probArr = new Array(probOrN);
|
112
|
-
for (var i = 0; i < probOrN;) {
|
113
|
-
probArr[i] = _quantileSeq(dataArr, ++i / nPlusOne, sorted);
|
114
|
-
}
|
115
|
-
return probArr;
|
116
|
-
}
|
117
|
-
}
|
118
|
-
if ((0, _is.isBigNumber)(probOrN)) {
|
119
|
-
var BigNumber = probOrN.constructor;
|
120
|
-
if (probOrN.isNegative()) {
|
121
|
-
throw new Error('N/prob must be non-negative');
|
122
|
-
}
|
123
|
-
one = new BigNumber(1);
|
124
|
-
if (probOrN.lte(one)) {
|
125
|
-
// quantileSeq([a, b, c, d, ...], prob[,sorted])
|
126
|
-
return new BigNumber(_quantileSeq(dataArr, probOrN, sorted));
|
127
|
-
}
|
128
|
-
if (probOrN.gt(one)) {
|
129
|
-
// quantileSeq([a, b, c, d, ...], N[,sorted])
|
130
|
-
if (!probOrN.isInteger()) {
|
131
|
-
throw new Error('N must be a positive integer');
|
132
|
-
}
|
133
|
-
|
134
|
-
// largest possible Array length is 2^32-1
|
135
|
-
// 2^32 < 10^15, thus safe conversion guaranteed
|
136
|
-
var intN = probOrN.toNumber();
|
137
|
-
if (intN > 4294967295) {
|
138
|
-
throw new Error('N must be less than or equal to 2^32-1, as that is the maximum length of an Array');
|
139
|
-
}
|
140
|
-
var _nPlusOne = new BigNumber(intN + 1);
|
141
|
-
probArr = new Array(intN);
|
142
|
-
for (var _i = 0; _i < intN;) {
|
143
|
-
probArr[_i] = new BigNumber(_quantileSeq(dataArr, new BigNumber(++_i).div(_nPlusOne), sorted));
|
144
|
-
}
|
145
|
-
return probArr;
|
146
|
-
}
|
147
|
-
}
|
148
|
-
if ((0, _is.isCollection)(probOrN)) {
|
149
|
-
// quantileSeq([a, b, c, d, ...], [prob1, prob2, ...][,sorted])
|
150
|
-
var probOrNArr = probOrN.valueOf();
|
151
|
-
probArr = new Array(probOrNArr.length);
|
152
|
-
for (var _i2 = 0; _i2 < probArr.length; ++_i2) {
|
153
|
-
var currProb = probOrNArr[_i2];
|
154
|
-
if ((0, _is.isNumber)(currProb)) {
|
155
|
-
if (currProb < 0 || currProb > 1) {
|
156
|
-
throw new Error('Probability must be between 0 and 1, inclusive');
|
157
|
-
}
|
158
|
-
} else if ((0, _is.isBigNumber)(currProb)) {
|
159
|
-
one = new currProb.constructor(1);
|
160
|
-
if (currProb.isNegative() || currProb.gt(one)) {
|
161
|
-
throw new Error('Probability must be between 0 and 1, inclusive');
|
162
|
-
}
|
163
|
-
} else {
|
164
|
-
throw new TypeError('Unexpected type of argument in function quantileSeq'); // FIXME: becomes redundant when converted to typed-function
|
165
|
-
}
|
166
|
-
|
167
|
-
probArr[_i2] = _quantileSeq(dataArr, currProb, sorted);
|
168
|
-
}
|
169
|
-
return probArr;
|
170
|
-
}
|
171
|
-
throw new TypeError('Unexpected type of argument in function quantileSeq'); // FIXME: becomes redundant when converted to typed-function
|
98
|
+
if (smallerEq(probOrN, 1)) {
|
99
|
+
// quantileSeq([a, b, c, d, ...], prob[,sorted])
|
100
|
+
return (0, _is.isNumber)(probOrN) ? _quantileSeq(dataArr, probOrN, sorted) : bignumber(_quantileSeq(dataArr, probOrN, sorted));
|
101
|
+
}
|
102
|
+
if (larger(probOrN, 1)) {
|
103
|
+
// quantileSeq([a, b, c, d, ...], N[,sorted])
|
104
|
+
if (!isInteger(probOrN)) {
|
105
|
+
throw new Error('N must be a positive integer');
|
172
106
|
}
|
173
107
|
|
174
|
-
|
108
|
+
// largest possible Array length is 2^32-1
|
109
|
+
// 2^32 < 10^15, thus safe conversion guaranteed
|
110
|
+
if (larger(probOrN, 4294967295)) {
|
111
|
+
throw new Error('N must be less than or equal to 2^32-1, as that is the maximum length of an Array');
|
112
|
+
}
|
113
|
+
var nPlusOne = add(probOrN, 1);
|
114
|
+
probArr = [];
|
115
|
+
for (var i = 0; smaller(i, probOrN); i++) {
|
116
|
+
var prob = divide(i + 1, nPlusOne);
|
117
|
+
probArr.push(_quantileSeq(dataArr, prob, sorted));
|
118
|
+
}
|
119
|
+
return (0, _is.isNumber)(probOrN) ? probArr : bignumber(probArr);
|
175
120
|
}
|
121
|
+
}
|
122
|
+
|
123
|
+
/**
|
124
|
+
* Calculate the prob order quantile of an n-dimensional array.
|
125
|
+
*
|
126
|
+
* @param {Array, Matrix} array
|
127
|
+
* @param {Array, Matrix} prob
|
128
|
+
* @param {Boolean} sorted
|
129
|
+
* @return {Number, BigNumber, Unit} prob order quantile
|
130
|
+
* @private
|
131
|
+
*/
|
176
132
|
|
177
|
-
|
133
|
+
function _quantileSeqProbCollection(data, probOrN, sorted) {
|
134
|
+
var dataArr = data.valueOf();
|
135
|
+
// quantileSeq([a, b, c, d, ...], [prob1, prob2, ...][,sorted])
|
136
|
+
var probOrNArr = probOrN.valueOf();
|
137
|
+
var probArr = [];
|
138
|
+
for (var i = 0; i < probOrNArr.length; ++i) {
|
139
|
+
probArr.push(_quantileSeq(dataArr, probOrNArr[i], sorted));
|
140
|
+
}
|
141
|
+
return probArr;
|
178
142
|
}
|
179
143
|
|
180
144
|
/**
|
@@ -192,71 +156,30 @@ var createQuantileSeq = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
|
|
192
156
|
if (len === 0) {
|
193
157
|
throw new Error('Cannot calculate quantile of an empty sequence');
|
194
158
|
}
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
validate(value);
|
201
|
-
return value;
|
202
|
-
}
|
203
|
-
var _integerPart = Math.floor(_index);
|
204
|
-
var _left;
|
205
|
-
var _right;
|
206
|
-
if (sorted) {
|
207
|
-
_left = flat[_integerPart];
|
208
|
-
_right = flat[_integerPart + 1];
|
209
|
-
} else {
|
210
|
-
_right = partitionSelect(flat, _integerPart + 1);
|
211
|
-
|
212
|
-
// max of partition is kth largest
|
213
|
-
_left = flat[_integerPart];
|
214
|
-
for (var i = 0; i < _integerPart; ++i) {
|
215
|
-
if (compare(flat[i], _left) > 0) {
|
216
|
-
_left = flat[i];
|
217
|
-
}
|
218
|
-
}
|
219
|
-
}
|
220
|
-
validate(_left);
|
221
|
-
validate(_right);
|
222
|
-
|
223
|
-
// Q(prob) = (1-f)*A[floor(index)] + f*A[floor(index)+1]
|
224
|
-
return add(multiply(_left, 1 - _fracPart), multiply(_right, _fracPart));
|
159
|
+
var index = (0, _is.isNumber)(prob) ? prob * (len - 1) : prob.times(len - 1);
|
160
|
+
var integerPart = (0, _is.isNumber)(prob) ? Math.floor(index) : index.floor().toNumber();
|
161
|
+
var fracPart = (0, _is.isNumber)(prob) ? index % 1 : index.minus(integerPart);
|
162
|
+
if (isInteger(index)) {
|
163
|
+
return sorted ? flat[index] : partitionSelect(flat, (0, _is.isNumber)(prob) ? index : index.valueOf());
|
225
164
|
}
|
226
|
-
|
227
|
-
// If prob is a BigNumber
|
228
|
-
var index = prob.times(len - 1);
|
229
|
-
if (index.isInteger()) {
|
230
|
-
index = index.toNumber();
|
231
|
-
var _value = sorted ? flat[index] : partitionSelect(flat, index);
|
232
|
-
validate(_value);
|
233
|
-
return _value;
|
234
|
-
}
|
235
|
-
var integerPart = index.floor();
|
236
|
-
var fracPart = index.minus(integerPart);
|
237
|
-
var integerPartNumber = integerPart.toNumber();
|
238
165
|
var left;
|
239
166
|
var right;
|
240
167
|
if (sorted) {
|
241
|
-
left = flat[
|
242
|
-
right = flat[
|
168
|
+
left = flat[integerPart];
|
169
|
+
right = flat[integerPart + 1];
|
243
170
|
} else {
|
244
|
-
right = partitionSelect(flat,
|
171
|
+
right = partitionSelect(flat, integerPart + 1);
|
245
172
|
|
246
173
|
// max of partition is kth largest
|
247
|
-
left = flat[
|
248
|
-
for (var
|
249
|
-
if (compare(flat[
|
250
|
-
left = flat[
|
174
|
+
left = flat[integerPart];
|
175
|
+
for (var i = 0; i < integerPart; ++i) {
|
176
|
+
if (compare(flat[i], left) > 0) {
|
177
|
+
left = flat[i];
|
251
178
|
}
|
252
179
|
}
|
253
180
|
}
|
254
|
-
validate(left);
|
255
|
-
validate(right);
|
256
|
-
|
257
181
|
// Q(prob) = (1-f)*A[floor(index)] + f*A[floor(index)+1]
|
258
|
-
|
259
|
-
return add(multiply(left, one.minus(fracPart)), multiply(right, fracPart));
|
182
|
+
return add(multiply(left, subtract(1, fracPart)), multiply(right, fracPart));
|
260
183
|
}
|
261
184
|
});
|
262
185
|
exports.createQuantileSeq = createQuantileSeq;
|
@@ -7,6 +7,7 @@ exports.createPrint = void 0;
|
|
7
7
|
var _string = require("../../utils/string.js");
|
8
8
|
var _is = require("../../utils/is.js");
|
9
9
|
var _factory = require("../../utils/factory.js");
|
10
|
+
var _print2 = require("../../utils/print.js");
|
10
11
|
var name = 'print';
|
11
12
|
var dependencies = ['typed'];
|
12
13
|
var createPrint = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
|
@@ -72,9 +73,12 @@ var createPrint = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
|
|
72
73
|
*/
|
73
74
|
exports.createPrint = createPrint;
|
74
75
|
function _print(template, values, options) {
|
75
|
-
return template.replace(
|
76
|
+
return template.replace(_print2.printTemplate, function (original, key) {
|
76
77
|
var keys = key.split('.');
|
77
78
|
var value = values[keys.shift()];
|
79
|
+
if (value !== undefined && value.isMatrix) {
|
80
|
+
value = value.toArray();
|
81
|
+
}
|
78
82
|
while (keys.length && value !== undefined) {
|
79
83
|
var k = keys.shift();
|
80
84
|
value = k ? value[k] : value + '.';
|
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.11.
|
10
|
-
* @date 2023-09-
|
9
|
+
* @version 11.11.1
|
10
|
+
* @date 2023-09-20
|
11
11
|
*
|
12
12
|
* @license
|
13
13
|
* Copyright (C) 2013-2023 Jos de Jong <wjosdejong@gmail.com>
|
@@ -177,18 +177,10 @@ log1pNumber.signature = n1;
|
|
177
177
|
* @private
|
178
178
|
*/
|
179
179
|
function modNumber(x, y) {
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
return x - y * Math.floor(x / y);
|
185
|
-
} else if (y === 0) {
|
186
|
-
return x;
|
187
|
-
} else {
|
188
|
-
// y < 0
|
189
|
-
// TODO: implement mod for a negative divisor
|
190
|
-
throw new Error('Cannot calculate mod for a negative divisor');
|
191
|
-
}
|
180
|
+
// We don't use JavaScript's % operator here as this doesn't work
|
181
|
+
// correctly for x < 0 and x === 0
|
182
|
+
// see https://en.wikipedia.org/wiki/Modulo_operation
|
183
|
+
return y === 0 ? x : x - y * Math.floor(x / y);
|
192
184
|
}
|
193
185
|
modNumber.signature = n2;
|
194
186
|
|
@@ -14,8 +14,8 @@ var _function = require("../../utils/function.js");
|
|
14
14
|
var _string = require("../../utils/string.js");
|
15
15
|
var _object = require("../../utils/object.js");
|
16
16
|
var _constants = require("../../utils/bignumber/constants.js");
|
17
|
-
function ownKeys(
|
18
|
-
function _objectSpread(
|
17
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
18
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
19
19
|
var name = 'Unit';
|
20
20
|
var dependencies = ['?on', 'config', 'addScalar', 'subtract', 'multiplyScalar', 'divideScalar', 'pow', 'abs', 'fix', 'round', 'equal', 'isNumeric', 'format', 'number', 'Complex', 'BigNumber', 'Fraction'];
|
21
21
|
var createUnitClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
|