mathjs 7.2.0 → 7.5.1
Sign up to get free protection for your applications and to get access to all the features.
- package/HISTORY.md +34 -0
- package/dist/math.js +3421 -2476
- package/dist/math.min.js +5 -5
- package/dist/math.min.map +1 -1
- package/docs/expressions/syntax.md +30 -4
- package/docs/reference/functions/bin.md +38 -0
- package/docs/reference/functions/ceil.md +10 -1
- package/docs/reference/functions/fix.md +10 -2
- package/docs/reference/functions/floor.md +12 -3
- package/docs/reference/functions/hex.md +38 -0
- package/docs/reference/functions/lsolve.md +2 -1
- package/docs/reference/functions/lsolveAll.md +45 -0
- package/docs/reference/functions/oct.md +38 -0
- package/docs/reference/functions/rotationMatrix.md +51 -0
- package/docs/reference/functions/round.md +6 -2
- package/docs/reference/functions/usolve.md +2 -1
- package/docs/reference/functions/usolveAll.md +45 -0
- package/docs/reference/functions.md +8 -2
- package/es/entry/dependenciesAny/dependenciesBin.generated.js +10 -0
- package/es/entry/dependenciesAny/dependenciesCeil.generated.js +4 -0
- package/es/entry/dependenciesAny/dependenciesFix.generated.js +2 -0
- package/es/entry/dependenciesAny/dependenciesFloor.generated.js +4 -0
- package/es/entry/dependenciesAny/dependenciesHex.generated.js +10 -0
- package/es/entry/dependenciesAny/dependenciesLsolveAll.generated.js +22 -0
- package/es/entry/dependenciesAny/dependenciesOct.generated.js +10 -0
- package/es/entry/dependenciesAny/dependenciesRotationMatrix.generated.js +30 -0
- package/es/entry/dependenciesAny/dependenciesUsolveAll.generated.js +22 -0
- package/es/entry/dependenciesAny.generated.js +6 -0
- package/es/entry/impureFunctionsAny.generated.js +63 -57
- package/es/entry/pureFunctionsAny.generated.js +323 -277
- package/es/expression/embeddedDocs/embeddedDocs.js +12 -0
- package/es/expression/embeddedDocs/function/algebra/lsolve.js +2 -2
- package/es/expression/embeddedDocs/function/algebra/lsolveAll.js +8 -0
- package/es/expression/embeddedDocs/function/algebra/usolve.js +2 -2
- package/es/expression/embeddedDocs/function/algebra/usolveAll.js +8 -0
- package/es/expression/embeddedDocs/function/matrix/rotationMatrix.js +8 -0
- package/es/expression/embeddedDocs/function/utils/bin.js +8 -0
- package/es/expression/embeddedDocs/function/utils/hex.js +8 -0
- package/es/expression/embeddedDocs/function/utils/oct.js +8 -0
- package/es/expression/parse.js +28 -1
- package/es/factoriesAny.js +6 -0
- package/es/function/algebra/solver/lsolve.js +42 -69
- package/es/function/algebra/solver/lsolveAll.js +213 -0
- package/es/function/algebra/solver/lusolve.js +12 -27
- package/es/function/algebra/solver/usolve.js +41 -64
- package/es/function/algebra/solver/usolveAll.js +213 -0
- package/es/function/algebra/solver/utils/solveValidation.js +66 -107
- package/es/function/arithmetic/ceil.js +88 -4
- package/es/function/arithmetic/fix.js +43 -6
- package/es/function/arithmetic/floor.js +90 -6
- package/es/function/arithmetic/mod.js +10 -1
- package/es/function/arithmetic/round.js +6 -2
- package/es/function/matrix/rotationMatrix.js +175 -0
- package/es/function/matrix/sqrtm.js +4 -0
- package/es/function/probability/pickRandom.js +2 -6
- package/es/function/statistics/variance.js +4 -4
- package/es/function/string/baseUtils.js +36 -0
- package/es/function/string/bin.js +23 -0
- package/es/function/string/hex.js +23 -0
- package/es/function/string/oct.js +23 -0
- package/es/type/bignumber/BigNumber.js +4 -1
- package/es/type/number.js +10 -0
- package/es/utils/object.js +3 -1
- package/es/version.js +1 -1
- package/examples/advanced/web_server/math_worker.js +1 -1
- package/lib/entry/dependenciesAny/dependenciesBin.generated.js +20 -0
- package/lib/entry/dependenciesAny/dependenciesCeil.generated.js +6 -0
- package/lib/entry/dependenciesAny/dependenciesFix.generated.js +3 -0
- package/lib/entry/dependenciesAny/dependenciesFloor.generated.js +6 -0
- package/lib/entry/dependenciesAny/dependenciesHex.generated.js +20 -0
- package/lib/entry/dependenciesAny/dependenciesLsolveAll.generated.js +38 -0
- package/lib/entry/dependenciesAny/dependenciesOct.generated.js +20 -0
- package/lib/entry/dependenciesAny/dependenciesRotationMatrix.generated.js +50 -0
- package/lib/entry/dependenciesAny/dependenciesUsolveAll.generated.js +38 -0
- package/lib/entry/dependenciesAny.generated.js +48 -0
- package/lib/entry/impureFunctionsAny.generated.js +65 -59
- package/lib/entry/pureFunctionsAny.generated.js +373 -321
- package/lib/expression/embeddedDocs/embeddedDocs.js +18 -0
- package/lib/expression/embeddedDocs/function/algebra/lsolve.js +2 -2
- package/lib/expression/embeddedDocs/function/algebra/lsolveAll.js +15 -0
- package/lib/expression/embeddedDocs/function/algebra/usolve.js +2 -2
- package/lib/expression/embeddedDocs/function/algebra/usolveAll.js +15 -0
- package/lib/expression/embeddedDocs/function/matrix/rotationMatrix.js +15 -0
- package/lib/expression/embeddedDocs/function/utils/bin.js +15 -0
- package/lib/expression/embeddedDocs/function/utils/hex.js +15 -0
- package/lib/expression/embeddedDocs/function/utils/oct.js +15 -0
- package/lib/expression/parse.js +28 -1
- package/lib/factoriesAny.js +48 -0
- package/lib/function/algebra/solver/lsolve.js +42 -69
- package/lib/function/algebra/solver/lsolveAll.js +223 -0
- package/lib/function/algebra/solver/lusolve.js +12 -27
- package/lib/function/algebra/solver/usolve.js +41 -64
- package/lib/function/algebra/solver/usolveAll.js +223 -0
- package/lib/function/algebra/solver/utils/solveValidation.js +65 -106
- package/lib/function/arithmetic/ceil.js +91 -4
- package/lib/function/arithmetic/fix.js +44 -6
- package/lib/function/arithmetic/floor.js +93 -6
- package/lib/function/arithmetic/mod.js +10 -1
- package/lib/function/arithmetic/round.js +6 -2
- package/lib/function/matrix/rotationMatrix.js +185 -0
- package/lib/function/matrix/sqrtm.js +4 -0
- package/lib/function/probability/pickRandom.js +3 -7
- package/lib/function/statistics/variance.js +4 -4
- package/lib/function/string/baseUtils.js +45 -0
- package/lib/function/string/bin.js +31 -0
- package/lib/function/string/hex.js +31 -0
- package/lib/function/string/oct.js +31 -0
- package/lib/header.js +2 -2
- package/lib/type/bignumber/BigNumber.js +3 -1
- package/lib/type/number.js +10 -0
- package/lib/utils/object.js +3 -1
- package/lib/version.js +1 -1
- package/package.json +12 -12
- package/src/entry/dependenciesAny/dependenciesBin.generated.js +11 -0
- package/src/entry/dependenciesAny/dependenciesCeil.generated.js +4 -0
- package/src/entry/dependenciesAny/dependenciesFix.generated.js +2 -0
- package/src/entry/dependenciesAny/dependenciesFloor.generated.js +4 -0
- package/src/entry/dependenciesAny/dependenciesHex.generated.js +11 -0
- package/src/entry/dependenciesAny/dependenciesLsolveAll.generated.js +23 -0
- package/src/entry/dependenciesAny/dependenciesOct.generated.js +11 -0
- package/src/entry/dependenciesAny/dependenciesRotationMatrix.generated.js +31 -0
- package/src/entry/dependenciesAny/dependenciesUsolveAll.generated.js +23 -0
- package/src/entry/dependenciesAny.generated.js +6 -0
- package/src/entry/impureFunctionsAny.generated.js +104 -92
- package/src/entry/pureFunctionsAny.generated.js +94 -82
- package/src/expression/embeddedDocs/embeddedDocs.js +12 -0
- package/src/expression/embeddedDocs/function/algebra/lsolve.js +2 -2
- package/src/expression/embeddedDocs/function/algebra/lsolveAll.js +17 -0
- package/src/expression/embeddedDocs/function/algebra/usolve.js +2 -2
- package/src/expression/embeddedDocs/function/algebra/usolveAll.js +15 -0
- package/src/expression/embeddedDocs/function/matrix/rotationMatrix.js +19 -0
- package/src/expression/embeddedDocs/function/utils/bin.js +12 -0
- package/src/expression/embeddedDocs/function/utils/hex.js +12 -0
- package/src/expression/embeddedDocs/function/utils/oct.js +12 -0
- package/src/expression/parse.js +25 -0
- package/src/factoriesAny.js +6 -0
- package/src/function/algebra/solver/lsolve.js +52 -58
- package/src/function/algebra/solver/lsolveAll.js +197 -0
- package/src/function/algebra/solver/lusolve.js +9 -19
- package/src/function/algebra/solver/usolve.js +52 -55
- package/src/function/algebra/solver/usolveAll.js +199 -0
- package/src/function/algebra/solver/utils/solveValidation.js +78 -86
- package/src/function/arithmetic/ceil.js +63 -3
- package/src/function/arithmetic/fix.js +45 -6
- package/src/function/arithmetic/floor.js +65 -5
- package/src/function/arithmetic/mod.js +8 -1
- package/src/function/arithmetic/round.js +6 -2
- package/src/function/matrix/rotationMatrix.js +185 -0
- package/src/function/matrix/sqrtm.js +4 -0
- package/src/function/probability/pickRandom.js +2 -6
- package/src/function/statistics/variance.js +4 -4
- package/src/function/string/baseUtils.js +29 -0
- package/src/function/string/bin.js +23 -0
- package/src/function/string/hex.js +23 -0
- package/src/function/string/oct.js +24 -0
- package/src/type/bignumber/BigNumber.js +2 -1
- package/src/type/number.js +9 -1
- package/src/utils/object.js +3 -1
- package/src/version.js +1 -1
@@ -9,14 +9,19 @@ var _factory = require("../../utils/factory");
|
|
9
9
|
|
10
10
|
var _collection = require("../../utils/collection");
|
11
11
|
|
12
|
+
var _algorithm = require("../../type/matrix/utils/algorithm14");
|
13
|
+
|
12
14
|
var name = 'fix';
|
13
|
-
var dependencies = ['typed', 'Complex', 'ceil', 'floor'];
|
15
|
+
var dependencies = ['typed', 'Complex', 'matrix', 'ceil', 'floor'];
|
14
16
|
var createFix = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
|
15
17
|
var typed = _ref.typed,
|
16
18
|
_Complex = _ref.Complex,
|
19
|
+
matrix = _ref.matrix,
|
17
20
|
ceil = _ref.ceil,
|
18
21
|
floor = _ref.floor;
|
19
|
-
|
22
|
+
var algorithm14 = (0, _algorithm.createAlgorithm14)({
|
23
|
+
typed: typed
|
24
|
+
});
|
20
25
|
/**
|
21
26
|
* Round a value towards zero.
|
22
27
|
* For matrices, the function is evaluated element wise.
|
@@ -32,34 +37,67 @@ var createFix = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functio
|
|
32
37
|
* math.fix(-4.2) // returns number -4
|
33
38
|
* math.fix(-4.7) // returns number -4
|
34
39
|
*
|
35
|
-
*
|
40
|
+
* math.fix(3.12, 1) // returns number 3.1
|
41
|
+
* math.fix(3.18, 1) // returns number 3.1
|
42
|
+
* math.fix(-4.12, 1) // returns number -4.1
|
43
|
+
* math.fix(-4.17, 1) // returns number -4.1
|
44
|
+
*
|
45
|
+
* const c = math.complex(3.22, -2.78)
|
36
46
|
* math.fix(c) // returns Complex 3 - 2i
|
47
|
+
* math.fix(c, 1) // returns Complex 3.2 - 2.7i
|
37
48
|
*
|
38
|
-
* math.fix([3.2, 3.8, -4.7])
|
49
|
+
* math.fix([3.2, 3.8, -4.7]) // returns Array [3, 3, -4]
|
50
|
+
* math.fix([3.2, 3.8, -4.7], 1) // returns Array [3.2, 3.8, -4.7]
|
39
51
|
*
|
40
52
|
* See also:
|
41
53
|
*
|
42
54
|
* ceil, floor, round
|
43
55
|
*
|
44
|
-
* @param
|
45
|
-
* @
|
56
|
+
* @param {number | BigNumber | Fraction | Complex | Array | Matrix} x Number to be rounded
|
57
|
+
* @param {number | BigNumber | Array} [n=0] Number of decimals
|
58
|
+
* @return {number | BigNumber | Fraction | Complex | Array | Matrix} Rounded value
|
46
59
|
*/
|
60
|
+
|
47
61
|
return typed('fix', {
|
48
62
|
number: function number(x) {
|
49
63
|
return x > 0 ? floor(x) : ceil(x);
|
50
64
|
},
|
65
|
+
'number, number | BigNumber': function numberNumberBigNumber(x, n) {
|
66
|
+
return x > 0 ? floor(x, n) : ceil(x, n);
|
67
|
+
},
|
51
68
|
Complex: function Complex(x) {
|
52
69
|
return new _Complex(x.re > 0 ? Math.floor(x.re) : Math.ceil(x.re), x.im > 0 ? Math.floor(x.im) : Math.ceil(x.im));
|
53
70
|
},
|
71
|
+
'Complex, number | BigNumber': function ComplexNumberBigNumber(x, n) {
|
72
|
+
return new _Complex(x.re > 0 ? floor(x.re, n) : ceil(x.re, n), x.im > 0 ? floor(x.im, n) : ceil(x.im, n));
|
73
|
+
},
|
54
74
|
BigNumber: function BigNumber(x) {
|
55
75
|
return x.isNegative() ? ceil(x) : floor(x);
|
56
76
|
},
|
77
|
+
'BigNumber, number | BigNumber': function BigNumberNumberBigNumber(x, n) {
|
78
|
+
return x.isNegative() ? ceil(x, n) : floor(x, n);
|
79
|
+
},
|
57
80
|
Fraction: function Fraction(x) {
|
58
81
|
return x.s < 0 ? x.ceil() : x.floor();
|
59
82
|
},
|
83
|
+
'Fraction, number | BigNumber': function FractionNumberBigNumber(x, n) {
|
84
|
+
return x.s < 0 ? x.ceil(n) : x.floor(n);
|
85
|
+
},
|
60
86
|
'Array | Matrix': function ArrayMatrix(x) {
|
61
87
|
// deep map collection, skip zeros since fix(0) = 0
|
62
88
|
return (0, _collection.deepMap)(x, this, true);
|
89
|
+
},
|
90
|
+
'Array | Matrix, number | BigNumber': function ArrayMatrixNumberBigNumber(x, n) {
|
91
|
+
var _this = this;
|
92
|
+
|
93
|
+
// deep map collection, skip zeros since fix(0) = 0
|
94
|
+
return (0, _collection.deepMap)(x, function (i) {
|
95
|
+
return _this(i, n);
|
96
|
+
}, true);
|
97
|
+
},
|
98
|
+
'number | Complex | BigNumber, Array': function numberComplexBigNumberArray(x, y) {
|
99
|
+
// use matrix implementation
|
100
|
+
return algorithm14(matrix(y), x, this, true).valueOf();
|
63
101
|
}
|
64
102
|
});
|
65
103
|
});
|
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
});
|
6
6
|
exports.createFloor = void 0;
|
7
7
|
|
8
|
+
var _decimal = require("decimal.js");
|
9
|
+
|
8
10
|
var _factory = require("../../utils/factory");
|
9
11
|
|
10
12
|
var _collection = require("../../utils/collection");
|
@@ -13,13 +15,37 @@ var _number = require("../../utils/number");
|
|
13
15
|
|
14
16
|
var _nearlyEqual = require("../../utils/bignumber/nearlyEqual");
|
15
17
|
|
18
|
+
var _algorithm = require("../../type/matrix/utils/algorithm11");
|
19
|
+
|
20
|
+
var _algorithm2 = require("../../type/matrix/utils/algorithm14");
|
21
|
+
|
22
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
23
|
+
|
24
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
25
|
+
|
26
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
27
|
+
|
28
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
29
|
+
|
30
|
+
function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
31
|
+
|
32
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
33
|
+
|
16
34
|
var name = 'floor';
|
17
|
-
var dependencies = ['typed', 'config', 'round'];
|
35
|
+
var dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar'];
|
18
36
|
var createFloor = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
|
19
37
|
var typed = _ref.typed,
|
20
38
|
config = _ref.config,
|
21
|
-
round = _ref.round
|
22
|
-
|
39
|
+
round = _ref.round,
|
40
|
+
matrix = _ref.matrix,
|
41
|
+
equalScalar = _ref.equalScalar;
|
42
|
+
var algorithm11 = (0, _algorithm.createAlgorithm11)({
|
43
|
+
typed: typed,
|
44
|
+
equalScalar: equalScalar
|
45
|
+
});
|
46
|
+
var algorithm14 = (0, _algorithm2.createAlgorithm14)({
|
47
|
+
typed: typed
|
48
|
+
});
|
23
49
|
/**
|
24
50
|
* Round a value towards minus infinity.
|
25
51
|
* For matrices, the function is evaluated element wise.
|
@@ -27,6 +53,7 @@ var createFloor = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
|
|
27
53
|
* Syntax:
|
28
54
|
*
|
29
55
|
* math.floor(x)
|
56
|
+
* math.floor(x, n)
|
30
57
|
*
|
31
58
|
* Examples:
|
32
59
|
*
|
@@ -35,18 +62,27 @@ var createFloor = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
|
|
35
62
|
* math.floor(-4.2) // returns number -5
|
36
63
|
* math.floor(-4.7) // returns number -5
|
37
64
|
*
|
38
|
-
*
|
39
|
-
* math.floor(
|
65
|
+
* math.floor(3.212, 2) // returns number 3.21
|
66
|
+
* math.floor(3.288, 2) // returns number 3.28
|
67
|
+
* math.floor(-4.212, 2) // returns number -4.22
|
68
|
+
* math.floor(-4.782, 2) // returns number -4.79
|
40
69
|
*
|
41
|
-
* math.
|
70
|
+
* const c = math.complex(3.24, -2.71)
|
71
|
+
* math.floor(c) // returns Complex 3 - 3i
|
72
|
+
* math.floor(c, 1) // returns Complex 3.2 - 2.8i
|
73
|
+
*
|
74
|
+
* math.floor([3.2, 3.8, -4.7]) // returns Array [3, 3, -5]
|
75
|
+
* math.floor([3.21, 3.82, -4.71], 1) // returns Array [3.2, 3.8, -4.8]
|
42
76
|
*
|
43
77
|
* See also:
|
44
78
|
*
|
45
79
|
* ceil, fix, round
|
46
80
|
*
|
47
81
|
* @param {number | BigNumber | Fraction | Complex | Array | Matrix} x Number to be rounded
|
82
|
+
* @param {number | BigNumber | Array} [n=0] Number of decimals
|
48
83
|
* @return {number | BigNumber | Fraction | Complex | Array | Matrix} Rounded value
|
49
84
|
*/
|
85
|
+
|
50
86
|
return typed('floor', {
|
51
87
|
number: function number(x) {
|
52
88
|
if ((0, _number.nearlyEqual)(x, round(x), config.epsilon)) {
|
@@ -55,9 +91,32 @@ var createFloor = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
|
|
55
91
|
return Math.floor(x);
|
56
92
|
}
|
57
93
|
},
|
94
|
+
'number, number': function numberNumber(x, n) {
|
95
|
+
if ((0, _number.nearlyEqual)(x, round(x, n), config.epsilon)) {
|
96
|
+
return round(x, n);
|
97
|
+
} else {
|
98
|
+
var _$split = "".concat(x, "e").split('e'),
|
99
|
+
_$split2 = _slicedToArray(_$split, 2),
|
100
|
+
number = _$split2[0],
|
101
|
+
exponent = _$split2[1];
|
102
|
+
|
103
|
+
var result = Math.floor(Number("".concat(number, "e").concat(Number(exponent) + n)));
|
104
|
+
|
105
|
+
var _$split3 = "".concat(result, "e").split('e');
|
106
|
+
|
107
|
+
var _$split4 = _slicedToArray(_$split3, 2);
|
108
|
+
|
109
|
+
number = _$split4[0];
|
110
|
+
exponent = _$split4[1];
|
111
|
+
return Number("".concat(number, "e").concat(Number(exponent) - n));
|
112
|
+
}
|
113
|
+
},
|
58
114
|
Complex: function Complex(x) {
|
59
115
|
return x.floor();
|
60
116
|
},
|
117
|
+
'Complex, number': function ComplexNumber(x, n) {
|
118
|
+
return x.floor(n);
|
119
|
+
},
|
61
120
|
BigNumber: function BigNumber(x) {
|
62
121
|
if ((0, _nearlyEqual.nearlyEqual)(x, round(x), config.epsilon)) {
|
63
122
|
return round(x);
|
@@ -65,12 +124,40 @@ var createFloor = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
|
|
65
124
|
return x.floor();
|
66
125
|
}
|
67
126
|
},
|
127
|
+
'BigNumber, BigNumber': function BigNumberBigNumber(x, n) {
|
128
|
+
if ((0, _nearlyEqual.nearlyEqual)(x, round(x, n), config.epsilon)) {
|
129
|
+
return round(x, n);
|
130
|
+
} else {
|
131
|
+
return x.toDecimalPlaces(n.toNumber(), _decimal.Decimal.ROUND_FLOOR);
|
132
|
+
}
|
133
|
+
},
|
68
134
|
Fraction: function Fraction(x) {
|
69
135
|
return x.floor();
|
70
136
|
},
|
137
|
+
'Fraction, number': function FractionNumber(x, n) {
|
138
|
+
return x.floor(n);
|
139
|
+
},
|
71
140
|
'Array | Matrix': function ArrayMatrix(x) {
|
72
141
|
// deep map collection, skip zeros since floor(0) = 0
|
73
142
|
return (0, _collection.deepMap)(x, this, true);
|
143
|
+
},
|
144
|
+
'Array | Matrix, number': function ArrayMatrixNumber(x, n) {
|
145
|
+
var _this = this;
|
146
|
+
|
147
|
+
// deep map collection, skip zeros since ceil(0) = 0
|
148
|
+
return (0, _collection.deepMap)(x, function (i) {
|
149
|
+
return _this(i, n);
|
150
|
+
}, true);
|
151
|
+
},
|
152
|
+
'SparseMatrix, number | BigNumber': function SparseMatrixNumberBigNumber(x, y) {
|
153
|
+
return algorithm11(x, y, this, false);
|
154
|
+
},
|
155
|
+
'DenseMatrix, number | BigNumber': function DenseMatrixNumberBigNumber(x, y) {
|
156
|
+
return algorithm14(x, y, this, false);
|
157
|
+
},
|
158
|
+
'number | Complex | BigNumber, Array': function numberComplexBigNumberArray(x, y) {
|
159
|
+
// use matrix implementation
|
160
|
+
return algorithm14(matrix(y), x, this, true).valueOf();
|
74
161
|
}
|
75
162
|
});
|
76
163
|
});
|
@@ -94,10 +94,19 @@ var createMod = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functio
|
|
94
94
|
return typed(name, {
|
95
95
|
'number, number': _number.modNumber,
|
96
96
|
'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {
|
97
|
+
if (y.isNeg()) {
|
98
|
+
throw new Error('Cannot calculate mod for a negative divisor');
|
99
|
+
}
|
100
|
+
|
97
101
|
return y.isZero() ? x : x.mod(y);
|
98
102
|
},
|
99
103
|
'Fraction, Fraction': function FractionFraction(x, y) {
|
100
|
-
|
104
|
+
if (y.compare(0) < 0) {
|
105
|
+
throw new Error('Cannot calculate mod for a negative divisor');
|
106
|
+
} // Workaround suggested in Fraction.js library to calculate correct modulo for negative dividend
|
107
|
+
|
108
|
+
|
109
|
+
return x.compare(0) >= 0 ? x.mod(y) : x.mod(y).add(y).mod(y);
|
101
110
|
},
|
102
111
|
'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {
|
103
112
|
return algorithm05(x, y, this, false);
|
@@ -57,10 +57,14 @@ var createRound = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
|
|
57
57
|
*
|
58
58
|
* Examples:
|
59
59
|
*
|
60
|
-
* math.round(3.
|
61
|
-
* math.round(3.
|
60
|
+
* math.round(3.22) // returns number 3
|
61
|
+
* math.round(3.82) // returns number 4
|
62
62
|
* math.round(-4.2) // returns number -4
|
63
63
|
* math.round(-4.7) // returns number -5
|
64
|
+
* math.round(3.22, 1) // returns number 3.2
|
65
|
+
* math.round(3.88, 1) // returns number 3.8
|
66
|
+
* math.round(-4.21, 1) // returns number -4.2
|
67
|
+
* math.round(-4.71, 1) // returns number -4.7
|
64
68
|
* math.round(math.pi, 3) // returns number 3.142
|
65
69
|
* math.round(123.45678, 2) // returns number 123.46
|
66
70
|
*
|
@@ -0,0 +1,185 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.createRotationMatrix = void 0;
|
7
|
+
|
8
|
+
var _is = require("../../utils/is");
|
9
|
+
|
10
|
+
var _factory = require("../../utils/factory");
|
11
|
+
|
12
|
+
var name = 'rotationMatrix';
|
13
|
+
var dependencies = ['typed', 'config', 'multiplyScalar', 'addScalar', 'unaryMinus', 'norm', 'matrix', 'BigNumber', 'DenseMatrix', 'SparseMatrix', 'cos', 'sin'];
|
14
|
+
var createRotationMatrix = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
|
15
|
+
var typed = _ref.typed,
|
16
|
+
config = _ref.config,
|
17
|
+
multiplyScalar = _ref.multiplyScalar,
|
18
|
+
addScalar = _ref.addScalar,
|
19
|
+
unaryMinus = _ref.unaryMinus,
|
20
|
+
norm = _ref.norm,
|
21
|
+
BigNumber = _ref.BigNumber,
|
22
|
+
matrix = _ref.matrix,
|
23
|
+
DenseMatrix = _ref.DenseMatrix,
|
24
|
+
SparseMatrix = _ref.SparseMatrix,
|
25
|
+
cos = _ref.cos,
|
26
|
+
sin = _ref.sin;
|
27
|
+
|
28
|
+
/**
|
29
|
+
* Create a 2-dimensional counter-clockwise rotation matrix (2x2) for a given angle (expressed in radians).
|
30
|
+
* Create a 2-dimensional counter-clockwise rotation matrix (3x3) by a given angle (expressed in radians) around a given axis (1x3).
|
31
|
+
*
|
32
|
+
* Syntax:
|
33
|
+
*
|
34
|
+
* math.rotationMatrix(theta)
|
35
|
+
* math.rotationMatrix(theta, format)
|
36
|
+
* math.rotationMatrix(theta, [v])
|
37
|
+
* math.rotationMatrix(theta, [v], format)
|
38
|
+
*
|
39
|
+
* Examples:
|
40
|
+
*
|
41
|
+
* math.rotationMatrix(math.pi / 2) // returns [[0, -1], [1, 0]]
|
42
|
+
* math.rotationMatrix(math.bignumber(45)) // returns [[ bignumber(1 / sqrt(2)), - bignumber(1 / sqrt(2))], [ bignumber(1 / sqrt(2)), bignumber(1 / sqrt(2))]]
|
43
|
+
* math.rotationMatrix(math.complex(1 + i)) // returns [[cos(1 + i), -sin(1 + i)], [sin(1 + i), cos(1 + i)]]
|
44
|
+
* math.rotationMatrix(math.unit('1rad')) // returns [[cos(1), -sin(1)], [sin(1), cos(1)]]
|
45
|
+
*
|
46
|
+
* math.rotationMatrix(math.pi / 2, [0, 1, 0]) // returns [[0, 0, 1], [0, 1, 0], [-1, 0, 0]]
|
47
|
+
* math.rotationMatrix(math.pi / 2, matrix([0, 1, 0])) // returns matrix([[0, 0, 1], [0, 1, 0], [-1, 0, 0]])
|
48
|
+
*
|
49
|
+
*
|
50
|
+
* See also:
|
51
|
+
*
|
52
|
+
* matrix, cos, sin
|
53
|
+
*
|
54
|
+
*
|
55
|
+
* @param {number | BigNumber | Complex | Unit} theta Rotation angle
|
56
|
+
* @param {Array | Matrix} [v] Rotation axis
|
57
|
+
* @param {string} [format] Result Matrix storage format
|
58
|
+
* @return {Array | Matrix} Rotation matrix
|
59
|
+
*/
|
60
|
+
return typed(name, {
|
61
|
+
'': function _() {
|
62
|
+
return config.matrix === 'Matrix' ? matrix([]) : [];
|
63
|
+
},
|
64
|
+
string: function string(format) {
|
65
|
+
return matrix(format);
|
66
|
+
},
|
67
|
+
'number | BigNumber | Complex | Unit': function numberBigNumberComplexUnit(theta) {
|
68
|
+
return _rotationMatrix2x2(theta, config.matrix === 'Matrix' ? 'dense' : undefined);
|
69
|
+
},
|
70
|
+
'number | BigNumber | Complex | Unit, string': function numberBigNumberComplexUnitString(theta, format) {
|
71
|
+
return _rotationMatrix2x2(theta, format);
|
72
|
+
},
|
73
|
+
'number | BigNumber | Complex | Unit, Array': function numberBigNumberComplexUnitArray(theta, v) {
|
74
|
+
var matrixV = matrix(v);
|
75
|
+
|
76
|
+
_validateVector(matrixV);
|
77
|
+
|
78
|
+
return _rotationMatrix3x3(theta, matrixV, config.matrix === 'Matrix' ? 'dense' : undefined);
|
79
|
+
},
|
80
|
+
'number | BigNumber | Complex | Unit, Matrix': function numberBigNumberComplexUnitMatrix(theta, v) {
|
81
|
+
_validateVector(v);
|
82
|
+
|
83
|
+
return _rotationMatrix3x3(theta, v, config.matrix === 'Matrix' ? 'dense' : undefined);
|
84
|
+
},
|
85
|
+
'number | BigNumber | Complex | Unit, Array, string': function numberBigNumberComplexUnitArrayString(theta, v, format) {
|
86
|
+
var matrixV = matrix(v);
|
87
|
+
|
88
|
+
_validateVector(matrixV);
|
89
|
+
|
90
|
+
return _rotationMatrix3x3(theta, matrixV, format);
|
91
|
+
},
|
92
|
+
'number | BigNumber | Complex | Unit, Matrix, string': function numberBigNumberComplexUnitMatrixString(theta, v, format) {
|
93
|
+
_validateVector(v);
|
94
|
+
|
95
|
+
return _rotationMatrix3x3(theta, v, format);
|
96
|
+
}
|
97
|
+
});
|
98
|
+
/**
|
99
|
+
* Returns 2x2 matrix of 2D rotation of angle theta
|
100
|
+
*
|
101
|
+
* @param {number | BigNumber | Complex | Unit} theta The rotation angle
|
102
|
+
* @param {string} format The result Matrix storage format
|
103
|
+
* @returns {Matrix}
|
104
|
+
* @private
|
105
|
+
*/
|
106
|
+
|
107
|
+
function _rotationMatrix2x2(theta, format) {
|
108
|
+
var Big = (0, _is.isBigNumber)(theta);
|
109
|
+
var minusOne = Big ? new BigNumber(-1) : -1;
|
110
|
+
var cosTheta = cos(theta);
|
111
|
+
var sinTheta = sin(theta);
|
112
|
+
var data = [[cosTheta, multiplyScalar(minusOne, sinTheta)], [sinTheta, cosTheta]];
|
113
|
+
return _convertToFormat(data, format);
|
114
|
+
}
|
115
|
+
|
116
|
+
function _validateVector(v) {
|
117
|
+
var size = v.size();
|
118
|
+
|
119
|
+
if (size.length < 1 || size[0] !== 3) {
|
120
|
+
throw new RangeError('Vector must be of dimensions 1x3');
|
121
|
+
}
|
122
|
+
}
|
123
|
+
|
124
|
+
function _mul(array) {
|
125
|
+
return array.reduce(function (p, curr) {
|
126
|
+
return multiplyScalar(p, curr);
|
127
|
+
});
|
128
|
+
}
|
129
|
+
|
130
|
+
function _convertToFormat(data, format) {
|
131
|
+
if (format) {
|
132
|
+
if (format === 'sparse') {
|
133
|
+
return new SparseMatrix(data);
|
134
|
+
}
|
135
|
+
|
136
|
+
if (format === 'dense') {
|
137
|
+
return new DenseMatrix(data);
|
138
|
+
}
|
139
|
+
|
140
|
+
throw new TypeError("Unknown matrix type \"".concat(format, "\""));
|
141
|
+
}
|
142
|
+
|
143
|
+
return data;
|
144
|
+
}
|
145
|
+
/**
|
146
|
+
* Returns a 3x3 matrix of rotation of angle theta around vector v
|
147
|
+
*
|
148
|
+
* @param {number | BigNumber | Complex | Unit} theta The rotation angle
|
149
|
+
* @param {Matrix} v The rotation axis vector
|
150
|
+
* @param {string} format The storage format of the resulting matrix
|
151
|
+
* @returns {Matrix}
|
152
|
+
* @private
|
153
|
+
*/
|
154
|
+
|
155
|
+
|
156
|
+
function _rotationMatrix3x3(theta, v, format) {
|
157
|
+
var normV = norm(v);
|
158
|
+
|
159
|
+
if (normV === 0) {
|
160
|
+
return _convertToFormat([], format);
|
161
|
+
}
|
162
|
+
|
163
|
+
var Big = (0, _is.isBigNumber)(theta) ? BigNumber : null;
|
164
|
+
var one = Big ? new Big(1) : 1;
|
165
|
+
var minusOne = Big ? new Big(-1) : -1;
|
166
|
+
var vx = Big ? new Big(v.get([0]) / normV) : v.get([0]) / normV;
|
167
|
+
var vy = Big ? new Big(v.get([1]) / normV) : v.get([1]) / normV;
|
168
|
+
var vz = Big ? new Big(v.get([2]) / normV) : v.get([2]) / normV;
|
169
|
+
var c = cos(theta);
|
170
|
+
var oneMinusC = addScalar(one, unaryMinus(c));
|
171
|
+
var s = sin(theta);
|
172
|
+
var r11 = addScalar(c, _mul([vx, vx, oneMinusC]));
|
173
|
+
var r12 = addScalar(_mul([vx, vy, oneMinusC]), _mul([minusOne, vz, s]));
|
174
|
+
var r13 = addScalar(_mul([vx, vz, oneMinusC]), _mul([vy, s]));
|
175
|
+
var r21 = addScalar(_mul([vx, vy, oneMinusC]), _mul([vz, s]));
|
176
|
+
var r22 = addScalar(c, _mul([vy, vy, oneMinusC]));
|
177
|
+
var r23 = addScalar(_mul([vy, vz, oneMinusC]), _mul([minusOne, vx, s]));
|
178
|
+
var r31 = addScalar(_mul([vx, vz, oneMinusC]), _mul([minusOne, vy, s]));
|
179
|
+
var r32 = addScalar(_mul([vy, vz, oneMinusC]), _mul([vx, s]));
|
180
|
+
var r33 = addScalar(c, _mul([vz, vz, oneMinusC]));
|
181
|
+
var data = [[r11, r12, r13], [r21, r22, r23], [r31, r32, r33]];
|
182
|
+
return _convertToFormat(data, format);
|
183
|
+
}
|
184
|
+
});
|
185
|
+
exports.createRotationMatrix = createRotationMatrix;
|
@@ -105,6 +105,10 @@ var createSqrtm = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
|
|
105
105
|
throw new RangeError('Matrix must be square ' + '(size: ' + (0, _string.format)(size) + ')');
|
106
106
|
}
|
107
107
|
}
|
108
|
+
|
109
|
+
default:
|
110
|
+
// Multi dimensional array
|
111
|
+
throw new RangeError('Matrix must be at most two dimensional ' + '(size: ' + (0, _string.format)(size) + ')');
|
108
112
|
}
|
109
113
|
}
|
110
114
|
});
|
@@ -9,10 +9,10 @@ var _factory = require("../../utils/factory");
|
|
9
9
|
|
10
10
|
var _is = require("../../utils/is");
|
11
11
|
|
12
|
-
var _array = require("../../utils/array");
|
13
|
-
|
14
12
|
var _seededRNG = require("./util/seededRNG");
|
15
13
|
|
14
|
+
var _array = require("../../utils/array");
|
15
|
+
|
16
16
|
var name = 'pickRandom';
|
17
17
|
var dependencies = ['typed', 'config', '?on'];
|
18
18
|
var createPickRandom = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
|
@@ -86,16 +86,12 @@ var createPickRandom = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
|
|
86
86
|
number = 1;
|
87
87
|
}
|
88
88
|
|
89
|
-
possibles = possibles.valueOf(); // get Array
|
89
|
+
possibles = (0, _array.flatten)(possibles.valueOf()).valueOf(); // get Array
|
90
90
|
|
91
91
|
if (weights) {
|
92
92
|
weights = weights.valueOf(); // get Array
|
93
93
|
}
|
94
94
|
|
95
|
-
if ((0, _array.arraySize)(possibles).length > 1) {
|
96
|
-
throw new Error('Only one dimensional vectors supported');
|
97
|
-
}
|
98
|
-
|
99
95
|
var totalWeights = 0;
|
100
96
|
|
101
97
|
if (typeof weights !== 'undefined') {
|
@@ -109,7 +109,7 @@ var createVariance = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
|
|
109
109
|
*/
|
110
110
|
|
111
111
|
function _var(array, normalization) {
|
112
|
-
var sum
|
112
|
+
var sum;
|
113
113
|
var num = 0;
|
114
114
|
|
115
115
|
if (array.length === 0) {
|
@@ -119,7 +119,7 @@ var createVariance = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
|
|
119
119
|
|
120
120
|
(0, _collection.deepForEach)(array, function (value) {
|
121
121
|
try {
|
122
|
-
sum = add(sum, value);
|
122
|
+
sum = sum === undefined ? value : add(sum, value);
|
123
123
|
num++;
|
124
124
|
} catch (err) {
|
125
125
|
throw (0, _improveErrorMessage.improveErrorMessage)(err, 'variance', value);
|
@@ -128,10 +128,10 @@ var createVariance = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
|
|
128
128
|
if (num === 0) throw new Error('Cannot calculate variance of an empty array');
|
129
129
|
var mean = divide(sum, num); // calculate the variance
|
130
130
|
|
131
|
-
sum =
|
131
|
+
sum = undefined;
|
132
132
|
(0, _collection.deepForEach)(array, function (value) {
|
133
133
|
var diff = subtract(value, mean);
|
134
|
-
sum = add(sum, multiply(diff, diff));
|
134
|
+
sum = sum === undefined ? multiply(diff, diff) : add(sum, multiply(diff, diff));
|
135
135
|
});
|
136
136
|
|
137
137
|
if (isNaN(sum)) {
|
@@ -0,0 +1,45 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.createBaseFormatterFactory = createBaseFormatterFactory;
|
7
|
+
|
8
|
+
var _factory = require("../../utils/factory");
|
9
|
+
|
10
|
+
var _number = require("../../utils/number");
|
11
|
+
|
12
|
+
function baseFormatter(base) {
|
13
|
+
var prefixes = {
|
14
|
+
2: '0b',
|
15
|
+
8: '0o',
|
16
|
+
16: '0x'
|
17
|
+
};
|
18
|
+
var prefix = prefixes[base];
|
19
|
+
return function (n) {
|
20
|
+
if (n > Math.pow(2, 31) - 1 || n < -Math.pow(2, 31)) {
|
21
|
+
throw new Error('Value must be in range [-2^31, 2^31-1]');
|
22
|
+
}
|
23
|
+
|
24
|
+
if (!(0, _number.isInteger)(n)) {
|
25
|
+
throw new Error('Value must be an integer');
|
26
|
+
}
|
27
|
+
|
28
|
+
if (n < 0) {
|
29
|
+
n = n + Math.pow(2, 32);
|
30
|
+
}
|
31
|
+
|
32
|
+
return "".concat(prefix).concat(n.toString(base));
|
33
|
+
};
|
34
|
+
}
|
35
|
+
|
36
|
+
var dependencies = ['typed'];
|
37
|
+
|
38
|
+
function createBaseFormatterFactory(name, base) {
|
39
|
+
return (0, _factory.factory)(name, dependencies, function (_ref) {
|
40
|
+
var typed = _ref.typed;
|
41
|
+
return typed(name, {
|
42
|
+
number: baseFormatter(base)
|
43
|
+
});
|
44
|
+
});
|
45
|
+
}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.createBin = void 0;
|
7
|
+
|
8
|
+
var _baseUtils = require("./baseUtils");
|
9
|
+
|
10
|
+
/**
|
11
|
+
* Format a number as binary.
|
12
|
+
*
|
13
|
+
* Syntax:
|
14
|
+
*
|
15
|
+
* math.bin(value)
|
16
|
+
*
|
17
|
+
* Examples:
|
18
|
+
*
|
19
|
+
* //the following outputs "0b10"
|
20
|
+
* math.bin(2)
|
21
|
+
*
|
22
|
+
* See also:
|
23
|
+
*
|
24
|
+
* oct
|
25
|
+
* hex
|
26
|
+
*
|
27
|
+
* @param {number} value Value to be stringified
|
28
|
+
* @return {string} The formatted value
|
29
|
+
*/
|
30
|
+
var createBin = (0, _baseUtils.createBaseFormatterFactory)('bin', 2);
|
31
|
+
exports.createBin = createBin;
|
@@ -0,0 +1,31 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.createHex = void 0;
|
7
|
+
|
8
|
+
var _baseUtils = require("./baseUtils");
|
9
|
+
|
10
|
+
/**
|
11
|
+
* Format a number as hexadecimal.
|
12
|
+
*
|
13
|
+
* Syntax:
|
14
|
+
*
|
15
|
+
* math.hex(value)
|
16
|
+
*
|
17
|
+
* Examples:
|
18
|
+
*
|
19
|
+
* //the following outputs "0xF0"
|
20
|
+
* math.hex(240)
|
21
|
+
*
|
22
|
+
* See also:
|
23
|
+
*
|
24
|
+
* oct
|
25
|
+
* bin
|
26
|
+
*
|
27
|
+
* @param {number} value Value to be stringified
|
28
|
+
* @return {string} The formatted value
|
29
|
+
*/
|
30
|
+
var createHex = (0, _baseUtils.createBaseFormatterFactory)('hex', 16);
|
31
|
+
exports.createHex = createHex;
|