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
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createUsolveAll = void 0;
|
|
7
|
+
|
|
8
|
+
var _factory = require("../../../utils/factory");
|
|
9
|
+
|
|
10
|
+
var _solveValidation = require("./utils/solveValidation");
|
|
11
|
+
|
|
12
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
13
|
+
|
|
14
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
15
|
+
|
|
16
|
+
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); }
|
|
17
|
+
|
|
18
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
|
|
19
|
+
|
|
20
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
21
|
+
|
|
22
|
+
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; }
|
|
23
|
+
|
|
24
|
+
var name = 'usolveAll';
|
|
25
|
+
var dependencies = ['typed', 'matrix', 'divideScalar', 'multiplyScalar', 'subtract', 'equalScalar', 'DenseMatrix'];
|
|
26
|
+
var createUsolveAll = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
|
|
27
|
+
var typed = _ref.typed,
|
|
28
|
+
matrix = _ref.matrix,
|
|
29
|
+
divideScalar = _ref.divideScalar,
|
|
30
|
+
multiplyScalar = _ref.multiplyScalar,
|
|
31
|
+
subtract = _ref.subtract,
|
|
32
|
+
equalScalar = _ref.equalScalar,
|
|
33
|
+
DenseMatrix = _ref.DenseMatrix;
|
|
34
|
+
var solveValidation = (0, _solveValidation.createSolveValidation)({
|
|
35
|
+
DenseMatrix: DenseMatrix
|
|
36
|
+
});
|
|
37
|
+
/**
|
|
38
|
+
* Finds all solutions of a linear equation system by backward substitution. Matrix must be an upper triangular matrix.
|
|
39
|
+
*
|
|
40
|
+
* `U * x = b`
|
|
41
|
+
*
|
|
42
|
+
* Syntax:
|
|
43
|
+
*
|
|
44
|
+
* math.usolve(U, b)
|
|
45
|
+
*
|
|
46
|
+
* Examples:
|
|
47
|
+
*
|
|
48
|
+
* const a = [[-2, 3], [2, 1]]
|
|
49
|
+
* const b = [11, 9]
|
|
50
|
+
* const x = usolve(a, b) // [ [[8], [9]] ]
|
|
51
|
+
*
|
|
52
|
+
* See also:
|
|
53
|
+
*
|
|
54
|
+
* usolve, lup, slu, usolve, lusolve
|
|
55
|
+
*
|
|
56
|
+
* @param {Matrix, Array} U A N x N matrix or array (U)
|
|
57
|
+
* @param {Matrix, Array} b A column vector with the b values
|
|
58
|
+
*
|
|
59
|
+
* @return {DenseMatrix[] | Array[]} An array of affine-independent column vectors (x) that solve the linear system
|
|
60
|
+
*/
|
|
61
|
+
|
|
62
|
+
return typed(name, {
|
|
63
|
+
'SparseMatrix, Array | Matrix': function SparseMatrixArrayMatrix(m, b) {
|
|
64
|
+
return _sparseBackwardSubstitution(m, b);
|
|
65
|
+
},
|
|
66
|
+
'DenseMatrix, Array | Matrix': function DenseMatrixArrayMatrix(m, b) {
|
|
67
|
+
return _denseBackwardSubstitution(m, b);
|
|
68
|
+
},
|
|
69
|
+
'Array, Array | Matrix': function ArrayArrayMatrix(a, b) {
|
|
70
|
+
var m = matrix(a);
|
|
71
|
+
|
|
72
|
+
var R = _denseBackwardSubstitution(m, b);
|
|
73
|
+
|
|
74
|
+
return R.map(function (r) {
|
|
75
|
+
return r.valueOf();
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
function _denseBackwardSubstitution(m, b_) {
|
|
81
|
+
// the algorithm is derived from
|
|
82
|
+
// https://www.overleaf.com/project/5e6c87c554a3190001a3fc93
|
|
83
|
+
// array of right-hand sides
|
|
84
|
+
var B = [solveValidation(m, b_, true)._data.map(function (e) {
|
|
85
|
+
return e[0];
|
|
86
|
+
})];
|
|
87
|
+
var M = m._data;
|
|
88
|
+
var rows = m._size[0];
|
|
89
|
+
var columns = m._size[1]; // loop columns backwards
|
|
90
|
+
|
|
91
|
+
for (var i = columns - 1; i >= 0; i--) {
|
|
92
|
+
var L = B.length; // loop right-hand sides
|
|
93
|
+
|
|
94
|
+
for (var k = 0; k < L; k++) {
|
|
95
|
+
var b = B[k];
|
|
96
|
+
|
|
97
|
+
if (!equalScalar(M[i][i], 0)) {
|
|
98
|
+
// non-singular row
|
|
99
|
+
b[i] = divideScalar(b[i], M[i][i]);
|
|
100
|
+
|
|
101
|
+
for (var j = i - 1; j >= 0; j--) {
|
|
102
|
+
// b[j] -= b[i] * M[j,i]
|
|
103
|
+
b[j] = subtract(b[j], multiplyScalar(b[i], M[j][i]));
|
|
104
|
+
}
|
|
105
|
+
} else if (!equalScalar(b[i], 0)) {
|
|
106
|
+
// singular row, nonzero RHS
|
|
107
|
+
if (k === 0) {
|
|
108
|
+
// There is no valid solution
|
|
109
|
+
return [];
|
|
110
|
+
} else {
|
|
111
|
+
// This RHS is invalid but other solutions may still exist
|
|
112
|
+
B.splice(k, 1);
|
|
113
|
+
k -= 1;
|
|
114
|
+
L -= 1;
|
|
115
|
+
}
|
|
116
|
+
} else if (k === 0) {
|
|
117
|
+
// singular row, RHS is zero
|
|
118
|
+
var bNew = _toConsumableArray(b);
|
|
119
|
+
|
|
120
|
+
bNew[i] = 1;
|
|
121
|
+
|
|
122
|
+
for (var _j = i - 1; _j >= 0; _j--) {
|
|
123
|
+
bNew[_j] = subtract(bNew[_j], M[_j][i]);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
B.push(bNew);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
return B.map(function (x) {
|
|
132
|
+
return new DenseMatrix({
|
|
133
|
+
data: x.map(function (e) {
|
|
134
|
+
return [e];
|
|
135
|
+
}),
|
|
136
|
+
size: [rows, 1]
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
function _sparseBackwardSubstitution(m, b_) {
|
|
142
|
+
// array of right-hand sides
|
|
143
|
+
var B = [solveValidation(m, b_, true)._data.map(function (e) {
|
|
144
|
+
return e[0];
|
|
145
|
+
})];
|
|
146
|
+
var rows = m._size[0];
|
|
147
|
+
var columns = m._size[1];
|
|
148
|
+
var values = m._values;
|
|
149
|
+
var index = m._index;
|
|
150
|
+
var ptr = m._ptr; // loop columns backwards
|
|
151
|
+
|
|
152
|
+
for (var i = columns - 1; i >= 0; i--) {
|
|
153
|
+
var L = B.length; // loop right-hand sides
|
|
154
|
+
|
|
155
|
+
for (var k = 0; k < L; k++) {
|
|
156
|
+
var b = B[k]; // values & indices (column i)
|
|
157
|
+
|
|
158
|
+
var iValues = [];
|
|
159
|
+
var iIndices = []; // first & last indeces in column
|
|
160
|
+
|
|
161
|
+
var firstIndex = ptr[i];
|
|
162
|
+
var lastIndex = ptr[i + 1]; // find the value at [i, i]
|
|
163
|
+
|
|
164
|
+
var Mii = 0;
|
|
165
|
+
|
|
166
|
+
for (var j = lastIndex - 1; j >= firstIndex; j--) {
|
|
167
|
+
var J = index[j]; // check row
|
|
168
|
+
|
|
169
|
+
if (J === i) {
|
|
170
|
+
Mii = values[j];
|
|
171
|
+
} else if (J < i) {
|
|
172
|
+
// store upper triangular
|
|
173
|
+
iValues.push(values[j]);
|
|
174
|
+
iIndices.push(J);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
if (!equalScalar(Mii, 0)) {
|
|
179
|
+
// non-singular row
|
|
180
|
+
b[i] = divideScalar(b[i], Mii); // loop upper triangular
|
|
181
|
+
|
|
182
|
+
for (var _j2 = 0, _lastIndex = iIndices.length; _j2 < _lastIndex; _j2++) {
|
|
183
|
+
var _J = iIndices[_j2];
|
|
184
|
+
b[_J] = subtract(b[_J], multiplyScalar(b[i], iValues[_j2]));
|
|
185
|
+
}
|
|
186
|
+
} else if (!equalScalar(b[i], 0)) {
|
|
187
|
+
// singular row, nonzero RHS
|
|
188
|
+
if (k === 0) {
|
|
189
|
+
// There is no valid solution
|
|
190
|
+
return [];
|
|
191
|
+
} else {
|
|
192
|
+
// This RHS is invalid but other solutions may still exist
|
|
193
|
+
B.splice(k, 1);
|
|
194
|
+
k -= 1;
|
|
195
|
+
L -= 1;
|
|
196
|
+
}
|
|
197
|
+
} else if (k === 0) {
|
|
198
|
+
// singular row, RHS is zero
|
|
199
|
+
var bNew = _toConsumableArray(b);
|
|
200
|
+
|
|
201
|
+
bNew[i] = 1; // loop upper triangular
|
|
202
|
+
|
|
203
|
+
for (var _j3 = 0, _lastIndex2 = iIndices.length; _j3 < _lastIndex2; _j3++) {
|
|
204
|
+
var _J2 = iIndices[_j3];
|
|
205
|
+
bNew[_J2] = subtract(bNew[_J2], iValues[_j3]);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
B.push(bNew);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
return B.map(function (x) {
|
|
214
|
+
return new DenseMatrix({
|
|
215
|
+
data: x.map(function (e) {
|
|
216
|
+
return [e];
|
|
217
|
+
}),
|
|
218
|
+
size: [rows, 1]
|
|
219
|
+
});
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
exports.createUsolveAll = createUsolveAll;
|
|
@@ -24,135 +24,101 @@ function createSolveValidation(_ref) {
|
|
|
24
24
|
* @return {DenseMatrix} Dense column vector b
|
|
25
25
|
*/
|
|
26
26
|
return function solveValidation(m, b, copy) {
|
|
27
|
-
|
|
28
|
-
var size = m.size(); // validate matrix dimensions
|
|
29
|
-
|
|
30
|
-
if (size.length !== 2) {
|
|
31
|
-
throw new RangeError('Matrix must be two dimensional (size: ' + (0, _string.format)(size) + ')');
|
|
32
|
-
} // rows & columns
|
|
27
|
+
var mSize = m.size();
|
|
33
28
|
|
|
29
|
+
if (mSize.length !== 2) {
|
|
30
|
+
throw new RangeError('Matrix must be two dimensional (size: ' + (0, _string.format)(mSize) + ')');
|
|
31
|
+
}
|
|
34
32
|
|
|
35
|
-
var rows =
|
|
36
|
-
var columns =
|
|
33
|
+
var rows = mSize[0];
|
|
34
|
+
var columns = mSize[1];
|
|
37
35
|
|
|
38
36
|
if (rows !== columns) {
|
|
39
|
-
throw new RangeError('Matrix must be square (size: ' + (0, _string.format)(
|
|
40
|
-
}
|
|
41
|
-
|
|
37
|
+
throw new RangeError('Matrix must be square (size: ' + (0, _string.format)(mSize) + ')');
|
|
38
|
+
}
|
|
42
39
|
|
|
43
|
-
var data
|
|
40
|
+
var data = [];
|
|
44
41
|
|
|
45
42
|
if ((0, _is.isMatrix)(b)) {
|
|
46
|
-
|
|
47
|
-
var
|
|
43
|
+
var bSize = b.size();
|
|
44
|
+
var bdata = b._data; // 1-dim vector
|
|
48
45
|
|
|
49
|
-
if (
|
|
50
|
-
|
|
51
|
-
if (msize[0] !== rows) {
|
|
46
|
+
if (bSize.length === 1) {
|
|
47
|
+
if (bSize[0] !== rows) {
|
|
52
48
|
throw new RangeError('Dimension mismatch. Matrix columns must match vector length.');
|
|
53
|
-
}
|
|
54
|
-
|
|
49
|
+
}
|
|
55
50
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
bdata = b._data; // loop b data
|
|
59
|
-
|
|
60
|
-
for (i = 0; i < rows; i++) {
|
|
61
|
-
// row array
|
|
51
|
+
for (var i = 0; i < rows; i++) {
|
|
62
52
|
data[i] = [bdata[i]];
|
|
63
|
-
}
|
|
64
|
-
|
|
53
|
+
}
|
|
65
54
|
|
|
66
55
|
return new DenseMatrix({
|
|
67
56
|
data: data,
|
|
68
57
|
size: [rows, 1],
|
|
69
58
|
datatype: b._datatype
|
|
70
59
|
});
|
|
71
|
-
} //
|
|
60
|
+
} // 2-dim column
|
|
72
61
|
|
|
73
62
|
|
|
74
|
-
if (
|
|
75
|
-
|
|
76
|
-
if (msize[0] !== rows || msize[1] !== 1) {
|
|
63
|
+
if (bSize.length === 2) {
|
|
64
|
+
if (bSize[0] !== rows || bSize[1] !== 1) {
|
|
77
65
|
throw new RangeError('Dimension mismatch. Matrix columns must match vector length.');
|
|
78
|
-
}
|
|
79
|
-
|
|
66
|
+
}
|
|
80
67
|
|
|
81
68
|
if ((0, _is.isDenseMatrix)(b)) {
|
|
82
|
-
// check a copy is needed
|
|
83
69
|
if (copy) {
|
|
84
|
-
|
|
85
|
-
data = []; // matrix data (DenseMatrix)
|
|
86
|
-
|
|
87
|
-
bdata = b._data; // loop b data
|
|
88
|
-
|
|
89
|
-
for (i = 0; i < rows; i++) {
|
|
90
|
-
// row array
|
|
91
|
-
data[i] = [bdata[i][0]];
|
|
92
|
-
} // return Dense Matrix
|
|
70
|
+
data = [];
|
|
93
71
|
|
|
72
|
+
for (var _i = 0; _i < rows; _i++) {
|
|
73
|
+
data[_i] = [bdata[_i][0]];
|
|
74
|
+
}
|
|
94
75
|
|
|
95
76
|
return new DenseMatrix({
|
|
96
77
|
data: data,
|
|
97
78
|
size: [rows, 1],
|
|
98
79
|
datatype: b._datatype
|
|
99
80
|
});
|
|
100
|
-
}
|
|
101
|
-
|
|
81
|
+
}
|
|
102
82
|
|
|
103
83
|
return b;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
data: data,
|
|
128
|
-
size: [rows, 1],
|
|
129
|
-
datatype: b._datatype
|
|
130
|
-
});
|
|
131
|
-
} // throw error
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
throw new RangeError('Dimension mismatch. Matrix columns must match vector length.');
|
|
135
|
-
} // check b is array
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
if ((0, _is.isSparseMatrix)(b)) {
|
|
87
|
+
for (var _i2 = 0; _i2 < rows; _i2++) {
|
|
88
|
+
data[_i2] = [0];
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
var values = b._values;
|
|
92
|
+
var index = b._index;
|
|
93
|
+
var ptr = b._ptr;
|
|
94
|
+
|
|
95
|
+
for (var k1 = ptr[1], k = ptr[0]; k < k1; k++) {
|
|
96
|
+
var _i3 = index[k];
|
|
97
|
+
data[_i3][0] = values[k];
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
return new DenseMatrix({
|
|
101
|
+
data: data,
|
|
102
|
+
size: [rows, 1],
|
|
103
|
+
datatype: b._datatype
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
}
|
|
136
107
|
|
|
108
|
+
throw new RangeError('Dimension mismatch. The right side has to be either 1- or 2-dimensional vector.');
|
|
109
|
+
}
|
|
137
110
|
|
|
138
111
|
if ((0, _is.isArray)(b)) {
|
|
139
|
-
|
|
140
|
-
var asize = (0, _array.arraySize)(b); // check matrix dimensions, vector
|
|
112
|
+
var bsize = (0, _array.arraySize)(b);
|
|
141
113
|
|
|
142
|
-
if (
|
|
143
|
-
|
|
144
|
-
if (asize[0] !== rows) {
|
|
114
|
+
if (bsize.length === 1) {
|
|
115
|
+
if (bsize[0] !== rows) {
|
|
145
116
|
throw new RangeError('Dimension mismatch. Matrix columns must match vector length.');
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
data = []; // loop b
|
|
150
|
-
|
|
151
|
-
for (i = 0; i < rows; i++) {
|
|
152
|
-
// row array
|
|
153
|
-
data[i] = [b[i]];
|
|
154
|
-
} // return Dense Matrix
|
|
117
|
+
}
|
|
155
118
|
|
|
119
|
+
for (var _i4 = 0; _i4 < rows; _i4++) {
|
|
120
|
+
data[_i4] = [b[_i4]];
|
|
121
|
+
}
|
|
156
122
|
|
|
157
123
|
return new DenseMatrix({
|
|
158
124
|
data: data,
|
|
@@ -160,29 +126,22 @@ function createSolveValidation(_ref) {
|
|
|
160
126
|
});
|
|
161
127
|
}
|
|
162
128
|
|
|
163
|
-
if (
|
|
164
|
-
|
|
165
|
-
if (asize[0] !== rows || asize[1] !== 1) {
|
|
129
|
+
if (bsize.length === 2) {
|
|
130
|
+
if (bsize[0] !== rows || bsize[1] !== 1) {
|
|
166
131
|
throw new RangeError('Dimension mismatch. Matrix columns must match vector length.');
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
data = []; // loop b data
|
|
171
|
-
|
|
172
|
-
for (i = 0; i < rows; i++) {
|
|
173
|
-
// row array
|
|
174
|
-
data[i] = [b[i][0]];
|
|
175
|
-
} // return Dense Matrix
|
|
132
|
+
}
|
|
176
133
|
|
|
134
|
+
for (var _i5 = 0; _i5 < rows; _i5++) {
|
|
135
|
+
data[_i5] = [b[_i5][0]];
|
|
136
|
+
}
|
|
177
137
|
|
|
178
138
|
return new DenseMatrix({
|
|
179
139
|
data: data,
|
|
180
140
|
size: [rows, 1]
|
|
181
141
|
});
|
|
182
|
-
}
|
|
183
|
-
|
|
142
|
+
}
|
|
184
143
|
|
|
185
|
-
throw new RangeError('Dimension mismatch.
|
|
144
|
+
throw new RangeError('Dimension mismatch. The right side has to be either 1- or 2-dimensional vector.');
|
|
186
145
|
}
|
|
187
146
|
};
|
|
188
147
|
}
|
|
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.createCeil = 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");
|
|
@@ -15,13 +17,37 @@ var _nearlyEqual = require("../../utils/bignumber/nearlyEqual");
|
|
|
15
17
|
|
|
16
18
|
var _number2 = require("../../plain/number");
|
|
17
19
|
|
|
20
|
+
var _algorithm = require("../../type/matrix/utils/algorithm11");
|
|
21
|
+
|
|
22
|
+
var _algorithm2 = require("../../type/matrix/utils/algorithm14");
|
|
23
|
+
|
|
24
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
25
|
+
|
|
26
|
+
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."); }
|
|
27
|
+
|
|
28
|
+
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); }
|
|
29
|
+
|
|
30
|
+
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; }
|
|
31
|
+
|
|
32
|
+
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; }
|
|
33
|
+
|
|
34
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
35
|
+
|
|
18
36
|
var name = 'ceil';
|
|
19
|
-
var dependencies = ['typed', 'config', 'round'];
|
|
37
|
+
var dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar'];
|
|
20
38
|
var createCeil = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
|
|
21
39
|
var typed = _ref.typed,
|
|
22
40
|
config = _ref.config,
|
|
23
|
-
round = _ref.round
|
|
24
|
-
|
|
41
|
+
round = _ref.round,
|
|
42
|
+
matrix = _ref.matrix,
|
|
43
|
+
equalScalar = _ref.equalScalar;
|
|
44
|
+
var algorithm11 = (0, _algorithm.createAlgorithm11)({
|
|
45
|
+
typed: typed,
|
|
46
|
+
equalScalar: equalScalar
|
|
47
|
+
});
|
|
48
|
+
var algorithm14 = (0, _algorithm2.createAlgorithm14)({
|
|
49
|
+
typed: typed
|
|
50
|
+
});
|
|
25
51
|
/**
|
|
26
52
|
* Round a value towards plus infinity
|
|
27
53
|
* If `x` is complex, both real and imaginary part are rounded towards plus infinity.
|
|
@@ -30,6 +56,7 @@ var createCeil = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
|
|
|
30
56
|
* Syntax:
|
|
31
57
|
*
|
|
32
58
|
* math.ceil(x)
|
|
59
|
+
* math.ceil(x, n)
|
|
33
60
|
*
|
|
34
61
|
* Examples:
|
|
35
62
|
*
|
|
@@ -38,18 +65,27 @@ var createCeil = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
|
|
|
38
65
|
* math.ceil(-4.2) // returns number -4
|
|
39
66
|
* math.ceil(-4.7) // returns number -4
|
|
40
67
|
*
|
|
41
|
-
*
|
|
68
|
+
* math.ceil(3.212, 2) // returns number 3.22
|
|
69
|
+
* math.ceil(3.288, 2) // returns number 3.29
|
|
70
|
+
* math.ceil(-4.212, 2) // returns number -4.21
|
|
71
|
+
* math.ceil(-4.782, 2) // returns number -4.78
|
|
72
|
+
*
|
|
73
|
+
* const c = math.complex(3.24, -2.71)
|
|
42
74
|
* math.ceil(c) // returns Complex 4 - 2i
|
|
75
|
+
* math.ceil(c, 1) // returns Complex 3.3 - 2.7i
|
|
43
76
|
*
|
|
44
77
|
* math.ceil([3.2, 3.8, -4.7]) // returns Array [4, 4, -4]
|
|
78
|
+
* math.ceil([3.21, 3.82, -4.71], 1) // returns Array [3.3, 3.9, -4.7]
|
|
45
79
|
*
|
|
46
80
|
* See also:
|
|
47
81
|
*
|
|
48
82
|
* floor, fix, round
|
|
49
83
|
*
|
|
50
84
|
* @param {number | BigNumber | Fraction | Complex | Array | Matrix} x Number to be rounded
|
|
85
|
+
* @param {number | BigNumber | Array} [n=0] Number of decimals
|
|
51
86
|
* @return {number | BigNumber | Fraction | Complex | Array | Matrix} Rounded value
|
|
52
87
|
*/
|
|
88
|
+
|
|
53
89
|
return typed('ceil', {
|
|
54
90
|
number: function number(x) {
|
|
55
91
|
if ((0, _number.nearlyEqual)(x, round(x), config.epsilon)) {
|
|
@@ -58,9 +94,32 @@ var createCeil = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
|
|
|
58
94
|
return (0, _number2.ceilNumber)(x);
|
|
59
95
|
}
|
|
60
96
|
},
|
|
97
|
+
'number, number': function numberNumber(x, n) {
|
|
98
|
+
if ((0, _number.nearlyEqual)(x, round(x, n), config.epsilon)) {
|
|
99
|
+
return round(x, n);
|
|
100
|
+
} else {
|
|
101
|
+
var _$split = "".concat(x, "e").split('e'),
|
|
102
|
+
_$split2 = _slicedToArray(_$split, 2),
|
|
103
|
+
number = _$split2[0],
|
|
104
|
+
exponent = _$split2[1];
|
|
105
|
+
|
|
106
|
+
var result = Math.ceil(Number("".concat(number, "e").concat(Number(exponent) + n)));
|
|
107
|
+
|
|
108
|
+
var _$split3 = "".concat(result, "e").split('e');
|
|
109
|
+
|
|
110
|
+
var _$split4 = _slicedToArray(_$split3, 2);
|
|
111
|
+
|
|
112
|
+
number = _$split4[0];
|
|
113
|
+
exponent = _$split4[1];
|
|
114
|
+
return Number("".concat(number, "e").concat(Number(exponent) - n));
|
|
115
|
+
}
|
|
116
|
+
},
|
|
61
117
|
Complex: function Complex(x) {
|
|
62
118
|
return x.ceil();
|
|
63
119
|
},
|
|
120
|
+
'Complex, number': function ComplexNumber(x, n) {
|
|
121
|
+
return x.ceil(n);
|
|
122
|
+
},
|
|
64
123
|
BigNumber: function BigNumber(x) {
|
|
65
124
|
if ((0, _nearlyEqual.nearlyEqual)(x, round(x), config.epsilon)) {
|
|
66
125
|
return round(x);
|
|
@@ -68,12 +127,40 @@ var createCeil = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
|
|
|
68
127
|
return x.ceil();
|
|
69
128
|
}
|
|
70
129
|
},
|
|
130
|
+
'BigNumber, BigNumber': function BigNumberBigNumber(x, n) {
|
|
131
|
+
if ((0, _nearlyEqual.nearlyEqual)(x, round(x, n), config.epsilon)) {
|
|
132
|
+
return round(x, n);
|
|
133
|
+
} else {
|
|
134
|
+
return x.toDecimalPlaces(n.toNumber(), _decimal.Decimal.ROUND_CEIL);
|
|
135
|
+
}
|
|
136
|
+
},
|
|
71
137
|
Fraction: function Fraction(x) {
|
|
72
138
|
return x.ceil();
|
|
73
139
|
},
|
|
140
|
+
'Fraction, number': function FractionNumber(x, n) {
|
|
141
|
+
return x.ceil(n);
|
|
142
|
+
},
|
|
74
143
|
'Array | Matrix': function ArrayMatrix(x) {
|
|
75
144
|
// deep map collection, skip zeros since ceil(0) = 0
|
|
76
145
|
return (0, _collection.deepMap)(x, this, true);
|
|
146
|
+
},
|
|
147
|
+
'Array | Matrix, number': function ArrayMatrixNumber(x, n) {
|
|
148
|
+
var _this = this;
|
|
149
|
+
|
|
150
|
+
// deep map collection, skip zeros since ceil(0) = 0
|
|
151
|
+
return (0, _collection.deepMap)(x, function (i) {
|
|
152
|
+
return _this(i, n);
|
|
153
|
+
}, true);
|
|
154
|
+
},
|
|
155
|
+
'SparseMatrix, number | BigNumber': function SparseMatrixNumberBigNumber(x, y) {
|
|
156
|
+
return algorithm11(x, y, this, false);
|
|
157
|
+
},
|
|
158
|
+
'DenseMatrix, number | BigNumber': function DenseMatrixNumberBigNumber(x, y) {
|
|
159
|
+
return algorithm14(x, y, this, false);
|
|
160
|
+
},
|
|
161
|
+
'number | Complex | BigNumber, Array': function numberComplexBigNumberArray(x, y) {
|
|
162
|
+
// use matrix implementation
|
|
163
|
+
return algorithm14(matrix(y), x, this, true).valueOf();
|
|
77
164
|
}
|
|
78
165
|
});
|
|
79
166
|
});
|