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
@@ -1,4 +1,4 @@
|
|
1
|
-
import { isArray, isDenseMatrix,
|
1
|
+
import { isArray, isMatrix, isDenseMatrix, isSparseMatrix } from '../../../../utils/is';
|
2
2
|
import { arraySize } from '../../../../utils/array';
|
3
3
|
import { format } from '../../../../utils/string';
|
4
4
|
export function createSolveValidation(_ref) {
|
@@ -14,135 +14,101 @@ export function createSolveValidation(_ref) {
|
|
14
14
|
* @return {DenseMatrix} Dense column vector b
|
15
15
|
*/
|
16
16
|
return function solveValidation(m, b, copy) {
|
17
|
-
|
18
|
-
var size = m.size(); // validate matrix dimensions
|
19
|
-
|
20
|
-
if (size.length !== 2) {
|
21
|
-
throw new RangeError('Matrix must be two dimensional (size: ' + format(size) + ')');
|
22
|
-
} // rows & columns
|
17
|
+
var mSize = m.size();
|
23
18
|
|
19
|
+
if (mSize.length !== 2) {
|
20
|
+
throw new RangeError('Matrix must be two dimensional (size: ' + format(mSize) + ')');
|
21
|
+
}
|
24
22
|
|
25
|
-
var rows =
|
26
|
-
var columns =
|
23
|
+
var rows = mSize[0];
|
24
|
+
var columns = mSize[1];
|
27
25
|
|
28
26
|
if (rows !== columns) {
|
29
|
-
throw new RangeError('Matrix must be square (size: ' + format(
|
30
|
-
}
|
31
|
-
|
27
|
+
throw new RangeError('Matrix must be square (size: ' + format(mSize) + ')');
|
28
|
+
}
|
32
29
|
|
33
|
-
var data
|
30
|
+
var data = [];
|
34
31
|
|
35
32
|
if (isMatrix(b)) {
|
36
|
-
|
37
|
-
var
|
33
|
+
var bSize = b.size();
|
34
|
+
var bdata = b._data; // 1-dim vector
|
38
35
|
|
39
|
-
if (
|
40
|
-
|
41
|
-
if (msize[0] !== rows) {
|
36
|
+
if (bSize.length === 1) {
|
37
|
+
if (bSize[0] !== rows) {
|
42
38
|
throw new RangeError('Dimension mismatch. Matrix columns must match vector length.');
|
43
|
-
}
|
44
|
-
|
39
|
+
}
|
45
40
|
|
46
|
-
|
47
|
-
|
48
|
-
bdata = b._data; // loop b data
|
49
|
-
|
50
|
-
for (i = 0; i < rows; i++) {
|
51
|
-
// row array
|
41
|
+
for (var i = 0; i < rows; i++) {
|
52
42
|
data[i] = [bdata[i]];
|
53
|
-
}
|
54
|
-
|
43
|
+
}
|
55
44
|
|
56
45
|
return new DenseMatrix({
|
57
46
|
data: data,
|
58
47
|
size: [rows, 1],
|
59
48
|
datatype: b._datatype
|
60
49
|
});
|
61
|
-
} //
|
50
|
+
} // 2-dim column
|
62
51
|
|
63
52
|
|
64
|
-
if (
|
65
|
-
|
66
|
-
if (msize[0] !== rows || msize[1] !== 1) {
|
53
|
+
if (bSize.length === 2) {
|
54
|
+
if (bSize[0] !== rows || bSize[1] !== 1) {
|
67
55
|
throw new RangeError('Dimension mismatch. Matrix columns must match vector length.');
|
68
|
-
}
|
69
|
-
|
56
|
+
}
|
70
57
|
|
71
58
|
if (isDenseMatrix(b)) {
|
72
|
-
// check a copy is needed
|
73
59
|
if (copy) {
|
74
|
-
|
75
|
-
data = []; // matrix data (DenseMatrix)
|
76
|
-
|
77
|
-
bdata = b._data; // loop b data
|
78
|
-
|
79
|
-
for (i = 0; i < rows; i++) {
|
80
|
-
// row array
|
81
|
-
data[i] = [bdata[i][0]];
|
82
|
-
} // return Dense Matrix
|
60
|
+
data = [];
|
83
61
|
|
62
|
+
for (var _i = 0; _i < rows; _i++) {
|
63
|
+
data[_i] = [bdata[_i][0]];
|
64
|
+
}
|
84
65
|
|
85
66
|
return new DenseMatrix({
|
86
67
|
data: data,
|
87
68
|
size: [rows, 1],
|
88
69
|
datatype: b._datatype
|
89
70
|
});
|
90
|
-
}
|
91
|
-
|
71
|
+
}
|
92
72
|
|
93
73
|
return b;
|
94
|
-
}
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
data: data,
|
118
|
-
size: [rows, 1],
|
119
|
-
datatype: b._datatype
|
120
|
-
});
|
121
|
-
} // throw error
|
122
|
-
|
123
|
-
|
124
|
-
throw new RangeError('Dimension mismatch. Matrix columns must match vector length.');
|
125
|
-
} // check b is array
|
74
|
+
}
|
75
|
+
|
76
|
+
if (isSparseMatrix(b)) {
|
77
|
+
for (var _i2 = 0; _i2 < rows; _i2++) {
|
78
|
+
data[_i2] = [0];
|
79
|
+
}
|
80
|
+
|
81
|
+
var values = b._values;
|
82
|
+
var index = b._index;
|
83
|
+
var ptr = b._ptr;
|
84
|
+
|
85
|
+
for (var k1 = ptr[1], k = ptr[0]; k < k1; k++) {
|
86
|
+
var _i3 = index[k];
|
87
|
+
data[_i3][0] = values[k];
|
88
|
+
}
|
89
|
+
|
90
|
+
return new DenseMatrix({
|
91
|
+
data: data,
|
92
|
+
size: [rows, 1],
|
93
|
+
datatype: b._datatype
|
94
|
+
});
|
95
|
+
}
|
96
|
+
}
|
126
97
|
|
98
|
+
throw new RangeError('Dimension mismatch. The right side has to be either 1- or 2-dimensional vector.');
|
99
|
+
}
|
127
100
|
|
128
101
|
if (isArray(b)) {
|
129
|
-
|
130
|
-
var asize = arraySize(b); // check matrix dimensions, vector
|
102
|
+
var bsize = arraySize(b);
|
131
103
|
|
132
|
-
if (
|
133
|
-
|
134
|
-
if (asize[0] !== rows) {
|
104
|
+
if (bsize.length === 1) {
|
105
|
+
if (bsize[0] !== rows) {
|
135
106
|
throw new RangeError('Dimension mismatch. Matrix columns must match vector length.');
|
136
|
-
}
|
137
|
-
|
138
|
-
|
139
|
-
data = []; // loop b
|
140
|
-
|
141
|
-
for (i = 0; i < rows; i++) {
|
142
|
-
// row array
|
143
|
-
data[i] = [b[i]];
|
144
|
-
} // return Dense Matrix
|
107
|
+
}
|
145
108
|
|
109
|
+
for (var _i4 = 0; _i4 < rows; _i4++) {
|
110
|
+
data[_i4] = [b[_i4]];
|
111
|
+
}
|
146
112
|
|
147
113
|
return new DenseMatrix({
|
148
114
|
data: data,
|
@@ -150,29 +116,22 @@ export function createSolveValidation(_ref) {
|
|
150
116
|
});
|
151
117
|
}
|
152
118
|
|
153
|
-
if (
|
154
|
-
|
155
|
-
if (asize[0] !== rows || asize[1] !== 1) {
|
119
|
+
if (bsize.length === 2) {
|
120
|
+
if (bsize[0] !== rows || bsize[1] !== 1) {
|
156
121
|
throw new RangeError('Dimension mismatch. Matrix columns must match vector length.');
|
157
|
-
}
|
158
|
-
|
159
|
-
|
160
|
-
data = []; // loop b data
|
161
|
-
|
162
|
-
for (i = 0; i < rows; i++) {
|
163
|
-
// row array
|
164
|
-
data[i] = [b[i][0]];
|
165
|
-
} // return Dense Matrix
|
122
|
+
}
|
166
123
|
|
124
|
+
for (var _i5 = 0; _i5 < rows; _i5++) {
|
125
|
+
data[_i5] = [b[_i5][0]];
|
126
|
+
}
|
167
127
|
|
168
128
|
return new DenseMatrix({
|
169
129
|
data: data,
|
170
130
|
size: [rows, 1]
|
171
131
|
});
|
172
|
-
}
|
173
|
-
|
132
|
+
}
|
174
133
|
|
175
|
-
throw new RangeError('Dimension mismatch.
|
134
|
+
throw new RangeError('Dimension mismatch. The right side has to be either 1- or 2-dimensional vector.');
|
176
135
|
}
|
177
136
|
};
|
178
137
|
}
|
@@ -1,15 +1,38 @@
|
|
1
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
2
|
+
|
3
|
+
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."); }
|
4
|
+
|
5
|
+
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); }
|
6
|
+
|
7
|
+
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; }
|
8
|
+
|
9
|
+
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; }
|
10
|
+
|
11
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
12
|
+
|
13
|
+
import { Decimal } from 'decimal.js';
|
1
14
|
import { factory } from '../../utils/factory';
|
2
15
|
import { deepMap } from '../../utils/collection';
|
3
16
|
import { nearlyEqual } from '../../utils/number';
|
4
17
|
import { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual';
|
5
18
|
import { ceilNumber } from '../../plain/number';
|
19
|
+
import { createAlgorithm11 } from '../../type/matrix/utils/algorithm11';
|
20
|
+
import { createAlgorithm14 } from '../../type/matrix/utils/algorithm14';
|
6
21
|
var name = 'ceil';
|
7
|
-
var dependencies = ['typed', 'config', 'round'];
|
22
|
+
var dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar'];
|
8
23
|
export var createCeil = /* #__PURE__ */factory(name, dependencies, function (_ref) {
|
9
24
|
var typed = _ref.typed,
|
10
25
|
config = _ref.config,
|
11
|
-
round = _ref.round
|
12
|
-
|
26
|
+
round = _ref.round,
|
27
|
+
matrix = _ref.matrix,
|
28
|
+
equalScalar = _ref.equalScalar;
|
29
|
+
var algorithm11 = createAlgorithm11({
|
30
|
+
typed: typed,
|
31
|
+
equalScalar: equalScalar
|
32
|
+
});
|
33
|
+
var algorithm14 = createAlgorithm14({
|
34
|
+
typed: typed
|
35
|
+
});
|
13
36
|
/**
|
14
37
|
* Round a value towards plus infinity
|
15
38
|
* If `x` is complex, both real and imaginary part are rounded towards plus infinity.
|
@@ -18,6 +41,7 @@ export var createCeil = /* #__PURE__ */factory(name, dependencies, function (_re
|
|
18
41
|
* Syntax:
|
19
42
|
*
|
20
43
|
* math.ceil(x)
|
44
|
+
* math.ceil(x, n)
|
21
45
|
*
|
22
46
|
* Examples:
|
23
47
|
*
|
@@ -26,18 +50,27 @@ export var createCeil = /* #__PURE__ */factory(name, dependencies, function (_re
|
|
26
50
|
* math.ceil(-4.2) // returns number -4
|
27
51
|
* math.ceil(-4.7) // returns number -4
|
28
52
|
*
|
29
|
-
*
|
53
|
+
* math.ceil(3.212, 2) // returns number 3.22
|
54
|
+
* math.ceil(3.288, 2) // returns number 3.29
|
55
|
+
* math.ceil(-4.212, 2) // returns number -4.21
|
56
|
+
* math.ceil(-4.782, 2) // returns number -4.78
|
57
|
+
*
|
58
|
+
* const c = math.complex(3.24, -2.71)
|
30
59
|
* math.ceil(c) // returns Complex 4 - 2i
|
60
|
+
* math.ceil(c, 1) // returns Complex 3.3 - 2.7i
|
31
61
|
*
|
32
62
|
* math.ceil([3.2, 3.8, -4.7]) // returns Array [4, 4, -4]
|
63
|
+
* math.ceil([3.21, 3.82, -4.71], 1) // returns Array [3.3, 3.9, -4.7]
|
33
64
|
*
|
34
65
|
* See also:
|
35
66
|
*
|
36
67
|
* floor, fix, round
|
37
68
|
*
|
38
69
|
* @param {number | BigNumber | Fraction | Complex | Array | Matrix} x Number to be rounded
|
70
|
+
* @param {number | BigNumber | Array} [n=0] Number of decimals
|
39
71
|
* @return {number | BigNumber | Fraction | Complex | Array | Matrix} Rounded value
|
40
72
|
*/
|
73
|
+
|
41
74
|
return typed('ceil', {
|
42
75
|
number: function number(x) {
|
43
76
|
if (nearlyEqual(x, round(x), config.epsilon)) {
|
@@ -46,9 +79,32 @@ export var createCeil = /* #__PURE__ */factory(name, dependencies, function (_re
|
|
46
79
|
return ceilNumber(x);
|
47
80
|
}
|
48
81
|
},
|
82
|
+
'number, number': function numberNumber(x, n) {
|
83
|
+
if (nearlyEqual(x, round(x, n), config.epsilon)) {
|
84
|
+
return round(x, n);
|
85
|
+
} else {
|
86
|
+
var _$split = "".concat(x, "e").split('e'),
|
87
|
+
_$split2 = _slicedToArray(_$split, 2),
|
88
|
+
number = _$split2[0],
|
89
|
+
exponent = _$split2[1];
|
90
|
+
|
91
|
+
var result = Math.ceil(Number("".concat(number, "e").concat(Number(exponent) + n)));
|
92
|
+
|
93
|
+
var _$split3 = "".concat(result, "e").split('e');
|
94
|
+
|
95
|
+
var _$split4 = _slicedToArray(_$split3, 2);
|
96
|
+
|
97
|
+
number = _$split4[0];
|
98
|
+
exponent = _$split4[1];
|
99
|
+
return Number("".concat(number, "e").concat(Number(exponent) - n));
|
100
|
+
}
|
101
|
+
},
|
49
102
|
Complex: function Complex(x) {
|
50
103
|
return x.ceil();
|
51
104
|
},
|
105
|
+
'Complex, number': function ComplexNumber(x, n) {
|
106
|
+
return x.ceil(n);
|
107
|
+
},
|
52
108
|
BigNumber: function BigNumber(x) {
|
53
109
|
if (bigNearlyEqual(x, round(x), config.epsilon)) {
|
54
110
|
return round(x);
|
@@ -56,12 +112,40 @@ export var createCeil = /* #__PURE__ */factory(name, dependencies, function (_re
|
|
56
112
|
return x.ceil();
|
57
113
|
}
|
58
114
|
},
|
115
|
+
'BigNumber, BigNumber': function BigNumberBigNumber(x, n) {
|
116
|
+
if (bigNearlyEqual(x, round(x, n), config.epsilon)) {
|
117
|
+
return round(x, n);
|
118
|
+
} else {
|
119
|
+
return x.toDecimalPlaces(n.toNumber(), Decimal.ROUND_CEIL);
|
120
|
+
}
|
121
|
+
},
|
59
122
|
Fraction: function Fraction(x) {
|
60
123
|
return x.ceil();
|
61
124
|
},
|
125
|
+
'Fraction, number': function FractionNumber(x, n) {
|
126
|
+
return x.ceil(n);
|
127
|
+
},
|
62
128
|
'Array | Matrix': function ArrayMatrix(x) {
|
63
129
|
// deep map collection, skip zeros since ceil(0) = 0
|
64
130
|
return deepMap(x, this, true);
|
131
|
+
},
|
132
|
+
'Array | Matrix, number': function ArrayMatrixNumber(x, n) {
|
133
|
+
var _this = this;
|
134
|
+
|
135
|
+
// deep map collection, skip zeros since ceil(0) = 0
|
136
|
+
return deepMap(x, function (i) {
|
137
|
+
return _this(i, n);
|
138
|
+
}, true);
|
139
|
+
},
|
140
|
+
'SparseMatrix, number | BigNumber': function SparseMatrixNumberBigNumber(x, y) {
|
141
|
+
return algorithm11(x, y, this, false);
|
142
|
+
},
|
143
|
+
'DenseMatrix, number | BigNumber': function DenseMatrixNumberBigNumber(x, y) {
|
144
|
+
return algorithm14(x, y, this, false);
|
145
|
+
},
|
146
|
+
'number | Complex | BigNumber, Array': function numberComplexBigNumberArray(x, y) {
|
147
|
+
// use matrix implementation
|
148
|
+
return algorithm14(matrix(y), x, this, true).valueOf();
|
65
149
|
}
|
66
150
|
});
|
67
151
|
});
|
@@ -1,13 +1,17 @@
|
|
1
1
|
import { factory } from '../../utils/factory';
|
2
2
|
import { deepMap } from '../../utils/collection';
|
3
|
+
import { createAlgorithm14 } from '../../type/matrix/utils/algorithm14';
|
3
4
|
var name = 'fix';
|
4
|
-
var dependencies = ['typed', 'Complex', 'ceil', 'floor'];
|
5
|
+
var dependencies = ['typed', 'Complex', 'matrix', 'ceil', 'floor'];
|
5
6
|
export var createFix = /* #__PURE__ */factory(name, dependencies, function (_ref) {
|
6
7
|
var typed = _ref.typed,
|
7
8
|
_Complex = _ref.Complex,
|
9
|
+
matrix = _ref.matrix,
|
8
10
|
ceil = _ref.ceil,
|
9
11
|
floor = _ref.floor;
|
10
|
-
|
12
|
+
var algorithm14 = createAlgorithm14({
|
13
|
+
typed: typed
|
14
|
+
});
|
11
15
|
/**
|
12
16
|
* Round a value towards zero.
|
13
17
|
* For matrices, the function is evaluated element wise.
|
@@ -23,34 +27,67 @@ export var createFix = /* #__PURE__ */factory(name, dependencies, function (_ref
|
|
23
27
|
* math.fix(-4.2) // returns number -4
|
24
28
|
* math.fix(-4.7) // returns number -4
|
25
29
|
*
|
26
|
-
*
|
30
|
+
* math.fix(3.12, 1) // returns number 3.1
|
31
|
+
* math.fix(3.18, 1) // returns number 3.1
|
32
|
+
* math.fix(-4.12, 1) // returns number -4.1
|
33
|
+
* math.fix(-4.17, 1) // returns number -4.1
|
34
|
+
*
|
35
|
+
* const c = math.complex(3.22, -2.78)
|
27
36
|
* math.fix(c) // returns Complex 3 - 2i
|
37
|
+
* math.fix(c, 1) // returns Complex 3.2 - 2.7i
|
28
38
|
*
|
29
|
-
* math.fix([3.2, 3.8, -4.7])
|
39
|
+
* math.fix([3.2, 3.8, -4.7]) // returns Array [3, 3, -4]
|
40
|
+
* math.fix([3.2, 3.8, -4.7], 1) // returns Array [3.2, 3.8, -4.7]
|
30
41
|
*
|
31
42
|
* See also:
|
32
43
|
*
|
33
44
|
* ceil, floor, round
|
34
45
|
*
|
35
|
-
* @param
|
36
|
-
* @
|
46
|
+
* @param {number | BigNumber | Fraction | Complex | Array | Matrix} x Number to be rounded
|
47
|
+
* @param {number | BigNumber | Array} [n=0] Number of decimals
|
48
|
+
* @return {number | BigNumber | Fraction | Complex | Array | Matrix} Rounded value
|
37
49
|
*/
|
50
|
+
|
38
51
|
return typed('fix', {
|
39
52
|
number: function number(x) {
|
40
53
|
return x > 0 ? floor(x) : ceil(x);
|
41
54
|
},
|
55
|
+
'number, number | BigNumber': function numberNumberBigNumber(x, n) {
|
56
|
+
return x > 0 ? floor(x, n) : ceil(x, n);
|
57
|
+
},
|
42
58
|
Complex: function Complex(x) {
|
43
59
|
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));
|
44
60
|
},
|
61
|
+
'Complex, number | BigNumber': function ComplexNumberBigNumber(x, n) {
|
62
|
+
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));
|
63
|
+
},
|
45
64
|
BigNumber: function BigNumber(x) {
|
46
65
|
return x.isNegative() ? ceil(x) : floor(x);
|
47
66
|
},
|
67
|
+
'BigNumber, number | BigNumber': function BigNumberNumberBigNumber(x, n) {
|
68
|
+
return x.isNegative() ? ceil(x, n) : floor(x, n);
|
69
|
+
},
|
48
70
|
Fraction: function Fraction(x) {
|
49
71
|
return x.s < 0 ? x.ceil() : x.floor();
|
50
72
|
},
|
73
|
+
'Fraction, number | BigNumber': function FractionNumberBigNumber(x, n) {
|
74
|
+
return x.s < 0 ? x.ceil(n) : x.floor(n);
|
75
|
+
},
|
51
76
|
'Array | Matrix': function ArrayMatrix(x) {
|
52
77
|
// deep map collection, skip zeros since fix(0) = 0
|
53
78
|
return deepMap(x, this, true);
|
79
|
+
},
|
80
|
+
'Array | Matrix, number | BigNumber': function ArrayMatrixNumberBigNumber(x, n) {
|
81
|
+
var _this = this;
|
82
|
+
|
83
|
+
// deep map collection, skip zeros since fix(0) = 0
|
84
|
+
return deepMap(x, function (i) {
|
85
|
+
return _this(i, n);
|
86
|
+
}, true);
|
87
|
+
},
|
88
|
+
'number | Complex | BigNumber, Array': function numberComplexBigNumberArray(x, y) {
|
89
|
+
// use matrix implementation
|
90
|
+
return algorithm14(matrix(y), x, this, true).valueOf();
|
54
91
|
}
|
55
92
|
});
|
56
93
|
});
|
@@ -1,14 +1,37 @@
|
|
1
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
2
|
+
|
3
|
+
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."); }
|
4
|
+
|
5
|
+
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); }
|
6
|
+
|
7
|
+
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; }
|
8
|
+
|
9
|
+
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; }
|
10
|
+
|
11
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
12
|
+
|
13
|
+
import { Decimal } from 'decimal.js';
|
1
14
|
import { factory } from '../../utils/factory';
|
2
15
|
import { deepMap } from '../../utils/collection';
|
3
16
|
import { nearlyEqual } from '../../utils/number';
|
4
17
|
import { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual';
|
18
|
+
import { createAlgorithm11 } from '../../type/matrix/utils/algorithm11';
|
19
|
+
import { createAlgorithm14 } from '../../type/matrix/utils/algorithm14';
|
5
20
|
var name = 'floor';
|
6
|
-
var dependencies = ['typed', 'config', 'round'];
|
21
|
+
var dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar'];
|
7
22
|
export var createFloor = /* #__PURE__ */factory(name, dependencies, function (_ref) {
|
8
23
|
var typed = _ref.typed,
|
9
24
|
config = _ref.config,
|
10
|
-
round = _ref.round
|
11
|
-
|
25
|
+
round = _ref.round,
|
26
|
+
matrix = _ref.matrix,
|
27
|
+
equalScalar = _ref.equalScalar;
|
28
|
+
var algorithm11 = createAlgorithm11({
|
29
|
+
typed: typed,
|
30
|
+
equalScalar: equalScalar
|
31
|
+
});
|
32
|
+
var algorithm14 = createAlgorithm14({
|
33
|
+
typed: typed
|
34
|
+
});
|
12
35
|
/**
|
13
36
|
* Round a value towards minus infinity.
|
14
37
|
* For matrices, the function is evaluated element wise.
|
@@ -16,6 +39,7 @@ export var createFloor = /* #__PURE__ */factory(name, dependencies, function (_r
|
|
16
39
|
* Syntax:
|
17
40
|
*
|
18
41
|
* math.floor(x)
|
42
|
+
* math.floor(x, n)
|
19
43
|
*
|
20
44
|
* Examples:
|
21
45
|
*
|
@@ -24,18 +48,27 @@ export var createFloor = /* #__PURE__ */factory(name, dependencies, function (_r
|
|
24
48
|
* math.floor(-4.2) // returns number -5
|
25
49
|
* math.floor(-4.7) // returns number -5
|
26
50
|
*
|
27
|
-
*
|
28
|
-
* math.floor(
|
51
|
+
* math.floor(3.212, 2) // returns number 3.21
|
52
|
+
* math.floor(3.288, 2) // returns number 3.28
|
53
|
+
* math.floor(-4.212, 2) // returns number -4.22
|
54
|
+
* math.floor(-4.782, 2) // returns number -4.79
|
29
55
|
*
|
30
|
-
* math.
|
56
|
+
* const c = math.complex(3.24, -2.71)
|
57
|
+
* math.floor(c) // returns Complex 3 - 3i
|
58
|
+
* math.floor(c, 1) // returns Complex 3.2 - 2.8i
|
59
|
+
*
|
60
|
+
* math.floor([3.2, 3.8, -4.7]) // returns Array [3, 3, -5]
|
61
|
+
* math.floor([3.21, 3.82, -4.71], 1) // returns Array [3.2, 3.8, -4.8]
|
31
62
|
*
|
32
63
|
* See also:
|
33
64
|
*
|
34
65
|
* ceil, fix, round
|
35
66
|
*
|
36
67
|
* @param {number | BigNumber | Fraction | Complex | Array | Matrix} x Number to be rounded
|
68
|
+
* @param {number | BigNumber | Array} [n=0] Number of decimals
|
37
69
|
* @return {number | BigNumber | Fraction | Complex | Array | Matrix} Rounded value
|
38
70
|
*/
|
71
|
+
|
39
72
|
return typed('floor', {
|
40
73
|
number: function number(x) {
|
41
74
|
if (nearlyEqual(x, round(x), config.epsilon)) {
|
@@ -44,9 +77,32 @@ export var createFloor = /* #__PURE__ */factory(name, dependencies, function (_r
|
|
44
77
|
return Math.floor(x);
|
45
78
|
}
|
46
79
|
},
|
80
|
+
'number, number': function numberNumber(x, n) {
|
81
|
+
if (nearlyEqual(x, round(x, n), config.epsilon)) {
|
82
|
+
return round(x, n);
|
83
|
+
} else {
|
84
|
+
var _$split = "".concat(x, "e").split('e'),
|
85
|
+
_$split2 = _slicedToArray(_$split, 2),
|
86
|
+
number = _$split2[0],
|
87
|
+
exponent = _$split2[1];
|
88
|
+
|
89
|
+
var result = Math.floor(Number("".concat(number, "e").concat(Number(exponent) + n)));
|
90
|
+
|
91
|
+
var _$split3 = "".concat(result, "e").split('e');
|
92
|
+
|
93
|
+
var _$split4 = _slicedToArray(_$split3, 2);
|
94
|
+
|
95
|
+
number = _$split4[0];
|
96
|
+
exponent = _$split4[1];
|
97
|
+
return Number("".concat(number, "e").concat(Number(exponent) - n));
|
98
|
+
}
|
99
|
+
},
|
47
100
|
Complex: function Complex(x) {
|
48
101
|
return x.floor();
|
49
102
|
},
|
103
|
+
'Complex, number': function ComplexNumber(x, n) {
|
104
|
+
return x.floor(n);
|
105
|
+
},
|
50
106
|
BigNumber: function BigNumber(x) {
|
51
107
|
if (bigNearlyEqual(x, round(x), config.epsilon)) {
|
52
108
|
return round(x);
|
@@ -54,12 +110,40 @@ export var createFloor = /* #__PURE__ */factory(name, dependencies, function (_r
|
|
54
110
|
return x.floor();
|
55
111
|
}
|
56
112
|
},
|
113
|
+
'BigNumber, BigNumber': function BigNumberBigNumber(x, n) {
|
114
|
+
if (bigNearlyEqual(x, round(x, n), config.epsilon)) {
|
115
|
+
return round(x, n);
|
116
|
+
} else {
|
117
|
+
return x.toDecimalPlaces(n.toNumber(), Decimal.ROUND_FLOOR);
|
118
|
+
}
|
119
|
+
},
|
57
120
|
Fraction: function Fraction(x) {
|
58
121
|
return x.floor();
|
59
122
|
},
|
123
|
+
'Fraction, number': function FractionNumber(x, n) {
|
124
|
+
return x.floor(n);
|
125
|
+
},
|
60
126
|
'Array | Matrix': function ArrayMatrix(x) {
|
61
127
|
// deep map collection, skip zeros since floor(0) = 0
|
62
128
|
return deepMap(x, this, true);
|
129
|
+
},
|
130
|
+
'Array | Matrix, number': function ArrayMatrixNumber(x, n) {
|
131
|
+
var _this = this;
|
132
|
+
|
133
|
+
// deep map collection, skip zeros since ceil(0) = 0
|
134
|
+
return deepMap(x, function (i) {
|
135
|
+
return _this(i, n);
|
136
|
+
}, true);
|
137
|
+
},
|
138
|
+
'SparseMatrix, number | BigNumber': function SparseMatrixNumberBigNumber(x, y) {
|
139
|
+
return algorithm11(x, y, this, false);
|
140
|
+
},
|
141
|
+
'DenseMatrix, number | BigNumber': function DenseMatrixNumberBigNumber(x, y) {
|
142
|
+
return algorithm14(x, y, this, false);
|
143
|
+
},
|
144
|
+
'number | Complex | BigNumber, Array': function numberComplexBigNumberArray(x, y) {
|
145
|
+
// use matrix implementation
|
146
|
+
return algorithm14(matrix(y), x, this, true).valueOf();
|
63
147
|
}
|
64
148
|
});
|
65
149
|
});
|
@@ -78,10 +78,19 @@ export var createMod = /* #__PURE__ */factory(name, dependencies, function (_ref
|
|
78
78
|
return typed(name, {
|
79
79
|
'number, number': modNumber,
|
80
80
|
'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {
|
81
|
+
if (y.isNeg()) {
|
82
|
+
throw new Error('Cannot calculate mod for a negative divisor');
|
83
|
+
}
|
84
|
+
|
81
85
|
return y.isZero() ? x : x.mod(y);
|
82
86
|
},
|
83
87
|
'Fraction, Fraction': function FractionFraction(x, y) {
|
84
|
-
|
88
|
+
if (y.compare(0) < 0) {
|
89
|
+
throw new Error('Cannot calculate mod for a negative divisor');
|
90
|
+
} // Workaround suggested in Fraction.js library to calculate correct modulo for negative dividend
|
91
|
+
|
92
|
+
|
93
|
+
return x.compare(0) >= 0 ? x.mod(y) : x.mod(y).add(y).mod(y);
|
85
94
|
},
|
86
95
|
'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {
|
87
96
|
return algorithm05(x, y, this, false);
|
@@ -43,10 +43,14 @@ export var createRound = /* #__PURE__ */factory(name, dependencies, function (_r
|
|
43
43
|
*
|
44
44
|
* Examples:
|
45
45
|
*
|
46
|
-
* math.round(3.
|
47
|
-
* math.round(3.
|
46
|
+
* math.round(3.22) // returns number 3
|
47
|
+
* math.round(3.82) // returns number 4
|
48
48
|
* math.round(-4.2) // returns number -4
|
49
49
|
* math.round(-4.7) // returns number -5
|
50
|
+
* math.round(3.22, 1) // returns number 3.2
|
51
|
+
* math.round(3.88, 1) // returns number 3.8
|
52
|
+
* math.round(-4.21, 1) // returns number -4.2
|
53
|
+
* math.round(-4.71, 1) // returns number -4.7
|
50
54
|
* math.round(math.pi, 3) // returns number 3.142
|
51
55
|
* math.round(123.45678, 2) // returns number 123.46
|
52
56
|
*
|