mathjs 11.11.0 → 11.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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) {
|