mathjs 7.2.0 → 7.5.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 +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
|
*
|