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
@@ -27,6 +27,12 @@ var _isNaN = require("./function/utils/isNaN");
|
|
27
27
|
|
28
28
|
var _format = require("./function/utils/format");
|
29
29
|
|
30
|
+
var _bin = require("./function/utils/bin");
|
31
|
+
|
32
|
+
var _oct = require("./function/utils/oct");
|
33
|
+
|
34
|
+
var _hex = require("./function/utils/hex");
|
35
|
+
|
30
36
|
var _clone = require("./function/utils/clone");
|
31
37
|
|
32
38
|
var _to = require("./function/units/to");
|
@@ -343,6 +349,8 @@ var _qr = require("./function/algebra/qr");
|
|
343
349
|
|
344
350
|
var _usolve = require("./function/algebra/usolve");
|
345
351
|
|
352
|
+
var _usolveAll = require("./function/algebra/usolveAll");
|
353
|
+
|
346
354
|
var _slu = require("./function/algebra/slu");
|
347
355
|
|
348
356
|
var _rationalize = require("./function/algebra/rationalize");
|
@@ -353,6 +361,8 @@ var _lup = require("./function/algebra/lup");
|
|
353
361
|
|
354
362
|
var _lsolve = require("./function/algebra/lsolve");
|
355
363
|
|
364
|
+
var _lsolveAll = require("./function/algebra/lsolveAll");
|
365
|
+
|
356
366
|
var _derivative = require("./function/algebra/derivative");
|
357
367
|
|
358
368
|
var _version = require("./constants/version");
|
@@ -427,6 +437,8 @@ var _column = require("./function/matrix/column");
|
|
427
437
|
|
428
438
|
var _row = require("./function/matrix/row");
|
429
439
|
|
440
|
+
var _rotationMatrix = require("./function/matrix/rotationMatrix");
|
441
|
+
|
430
442
|
var embeddedDocs = {
|
431
443
|
// construction functions
|
432
444
|
bignumber: _bignumber.bignumberDocs,
|
@@ -668,12 +680,14 @@ var embeddedDocs = {
|
|
668
680
|
// functions - algebra
|
669
681
|
derivative: _derivative.derivativeDocs,
|
670
682
|
lsolve: _lsolve.lsolveDocs,
|
683
|
+
lsolveAll: _lsolveAll.lsolveAllDocs,
|
671
684
|
lup: _lup.lupDocs,
|
672
685
|
lusolve: _lusolve.lusolveDocs,
|
673
686
|
simplify: _simplify.simplifyDocs,
|
674
687
|
rationalize: _rationalize.rationalizeDocs,
|
675
688
|
slu: _slu.sluDocs,
|
676
689
|
usolve: _usolve.usolveDocs,
|
690
|
+
usolveAll: _usolveAll.usolveAllDocs,
|
677
691
|
qr: _qr.qrDocs,
|
678
692
|
// functions - arithmetic
|
679
693
|
abs: _abs.absDocs,
|
@@ -768,6 +782,7 @@ var embeddedDocs = {
|
|
768
782
|
range: _range.rangeDocs,
|
769
783
|
resize: _resize.resizeDocs,
|
770
784
|
reshape: _reshape.reshapeDocs,
|
785
|
+
rotationMatrix: _rotationMatrix.rotationMatrixDocs,
|
771
786
|
row: _row.rowDocs,
|
772
787
|
size: _size.sizeDocs,
|
773
788
|
sort: _sort.sortDocs,
|
@@ -856,6 +871,9 @@ var embeddedDocs = {
|
|
856
871
|
// functions - utils
|
857
872
|
clone: _clone.cloneDocs,
|
858
873
|
format: _format.formatDocs,
|
874
|
+
bin: _bin.binDocs,
|
875
|
+
oct: _oct.octDocs,
|
876
|
+
hex: _hex.hexDocs,
|
859
877
|
isNaN: _isNaN.isNaNDocs,
|
860
878
|
isInteger: _isInteger.isIntegerDocs,
|
861
879
|
isNegative: _isNegative.isNegativeDocs,
|
@@ -8,8 +8,8 @@ var lsolveDocs = {
|
|
8
8
|
name: 'lsolve',
|
9
9
|
category: 'Algebra',
|
10
10
|
syntax: ['x=lsolve(L, b)'],
|
11
|
-
description: '
|
11
|
+
description: 'Finds one solution of the linear system L * x = b where L is an [n x n] lower triangular matrix and b is a [n] column vector.',
|
12
12
|
examples: ['a = [-2, 3; 2, 1]', 'b = [11, 9]', 'x = lsolve(a, b)'],
|
13
|
-
seealso: ['lup', 'lusolve', 'usolve', 'matrix', 'sparse']
|
13
|
+
seealso: ['lsolveAll', 'lup', 'lusolve', 'usolve', 'matrix', 'sparse']
|
14
14
|
};
|
15
15
|
exports.lsolveDocs = lsolveDocs;
|
@@ -0,0 +1,15 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.lsolveAllDocs = void 0;
|
7
|
+
var lsolveAllDocs = {
|
8
|
+
name: 'lsolveAll',
|
9
|
+
category: 'Algebra',
|
10
|
+
syntax: ['x=lsolveAll(L, b)'],
|
11
|
+
description: 'Finds all solutions of the linear system L * x = b where L is an [n x n] lower triangular matrix and b is a [n] column vector.',
|
12
|
+
examples: ['a = [-2, 3; 2, 1]', 'b = [11, 9]', 'x = lsolve(a, b)'],
|
13
|
+
seealso: ['lsolve', 'lup', 'lusolve', 'usolve', 'matrix', 'sparse']
|
14
|
+
};
|
15
|
+
exports.lsolveAllDocs = lsolveAllDocs;
|
@@ -8,8 +8,8 @@ var usolveDocs = {
|
|
8
8
|
name: 'usolve',
|
9
9
|
category: 'Algebra',
|
10
10
|
syntax: ['x=usolve(U, b)'],
|
11
|
-
description: '
|
11
|
+
description: 'Finds one solution of the linear system U * x = b where U is an [n x n] upper triangular matrix and b is a [n] column vector.',
|
12
12
|
examples: ['x=usolve(sparse([1, 1, 1, 1; 0, 1, 1, 1; 0, 0, 1, 1; 0, 0, 0, 1]), [1; 2; 3; 4])'],
|
13
|
-
seealso: ['lup', 'lusolve', 'lsolve', 'matrix', 'sparse']
|
13
|
+
seealso: ['usolveAll', 'lup', 'lusolve', 'lsolve', 'matrix', 'sparse']
|
14
14
|
};
|
15
15
|
exports.usolveDocs = usolveDocs;
|
@@ -0,0 +1,15 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.usolveAllDocs = void 0;
|
7
|
+
var usolveAllDocs = {
|
8
|
+
name: 'usolveAll',
|
9
|
+
category: 'Algebra',
|
10
|
+
syntax: ['x=usolve(U, b)'],
|
11
|
+
description: 'Finds all solutions of the linear system U * x = b where U is an [n x n] upper triangular matrix and b is a [n] column vector.',
|
12
|
+
examples: ['x=usolve(sparse([1, 1, 1, 1; 0, 1, 1, 1; 0, 0, 1, 1; 0, 0, 0, 1]), [1; 2; 3; 4])'],
|
13
|
+
seealso: ['usolve', 'lup', 'lusolve', 'lsolve', 'matrix', 'sparse']
|
14
|
+
};
|
15
|
+
exports.usolveAllDocs = usolveAllDocs;
|
@@ -0,0 +1,15 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.rotationMatrixDocs = void 0;
|
7
|
+
var rotationMatrixDocs = {
|
8
|
+
name: 'rotationMatrix',
|
9
|
+
category: 'Matrix',
|
10
|
+
syntax: ['rotationMatrix(theta)', 'rotationMatrix(theta, v)', 'rotationMatrix(theta, v, format)'],
|
11
|
+
description: 'Returns a 2-D rotation matrix (2x2) for a given angle (in radians). ' + 'Returns a 2-D rotation matrix (3x3) of a given angle (in radians) around given axis.',
|
12
|
+
examples: ['rotationMatrix(pi / 2)', 'rotationMatrix(unit("45deg"), [0, 0, 1])', 'rotationMatrix(1, matrix([0, 0, 1]), "sparse")'],
|
13
|
+
seealso: ['cos', 'sin']
|
14
|
+
};
|
15
|
+
exports.rotationMatrixDocs = rotationMatrixDocs;
|
@@ -0,0 +1,15 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.binDocs = void 0;
|
7
|
+
var binDocs = {
|
8
|
+
name: 'bin',
|
9
|
+
category: 'Utils',
|
10
|
+
syntax: ['bin(value)'],
|
11
|
+
description: 'Format a number as binary',
|
12
|
+
examples: ['bin(2)'],
|
13
|
+
seealso: ['oct', 'hex']
|
14
|
+
};
|
15
|
+
exports.binDocs = binDocs;
|
@@ -0,0 +1,15 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.hexDocs = void 0;
|
7
|
+
var hexDocs = {
|
8
|
+
name: 'hex',
|
9
|
+
category: 'Utils',
|
10
|
+
syntax: ['hex(value)'],
|
11
|
+
description: 'Format a number as hexadecimal',
|
12
|
+
examples: ['hex(240)'],
|
13
|
+
seealso: ['bin', 'oct']
|
14
|
+
};
|
15
|
+
exports.hexDocs = hexDocs;
|
@@ -0,0 +1,15 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.octDocs = void 0;
|
7
|
+
var octDocs = {
|
8
|
+
name: 'oct',
|
9
|
+
category: 'Utils',
|
10
|
+
syntax: ['oct(value)'],
|
11
|
+
description: 'Format a number as octal',
|
12
|
+
examples: ['oct(56)'],
|
13
|
+
seealso: ['bin', 'hex']
|
14
|
+
};
|
15
|
+
exports.octDocs = octDocs;
|
package/lib/expression/parse.js
CHANGED
@@ -313,7 +313,24 @@ var createParse = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
|
|
313
313
|
|
314
314
|
|
315
315
|
if (parse.isDigitDot(c1)) {
|
316
|
-
state.tokenType = TOKENTYPE.NUMBER; //
|
316
|
+
state.tokenType = TOKENTYPE.NUMBER; // check for binary, octal, or hex
|
317
|
+
|
318
|
+
var _c = currentString(state, 2);
|
319
|
+
|
320
|
+
if (_c === '0b' || _c === '0o' || _c === '0x') {
|
321
|
+
state.token += currentCharacter(state);
|
322
|
+
next(state);
|
323
|
+
state.token += currentCharacter(state);
|
324
|
+
next(state);
|
325
|
+
|
326
|
+
while (parse.isHexDigit(currentCharacter(state))) {
|
327
|
+
state.token += currentCharacter(state);
|
328
|
+
next(state);
|
329
|
+
}
|
330
|
+
|
331
|
+
return;
|
332
|
+
} // get number, can have a single dot
|
333
|
+
|
317
334
|
|
318
335
|
if (currentCharacter(state) === '.') {
|
319
336
|
state.token += currentCharacter(state);
|
@@ -525,6 +542,16 @@ var createParse = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
|
|
525
542
|
parse.isDigit = function isDigit(c) {
|
526
543
|
return c >= '0' && c <= '9';
|
527
544
|
};
|
545
|
+
/**
|
546
|
+
* checks if the given char c is a hex digit
|
547
|
+
* @param {string} c a string with one character
|
548
|
+
* @return {boolean}
|
549
|
+
*/
|
550
|
+
|
551
|
+
|
552
|
+
parse.isHexDigit = function isHexDigit(c) {
|
553
|
+
return c >= '0' && c <= '9' || c >= 'a' && c <= 'f' || c >= 'A' && c <= 'F';
|
554
|
+
};
|
528
555
|
/**
|
529
556
|
* Start of the parse levels below, in order of precedence
|
530
557
|
* @return {Node} node
|
package/lib/factoriesAny.js
CHANGED
@@ -483,6 +483,12 @@ Object.defineProperty(exports, "createResize", {
|
|
483
483
|
return _resize.createResize;
|
484
484
|
}
|
485
485
|
});
|
486
|
+
Object.defineProperty(exports, "createRotationMatrix", {
|
487
|
+
enumerable: true,
|
488
|
+
get: function get() {
|
489
|
+
return _rotationMatrix.createRotationMatrix;
|
490
|
+
}
|
491
|
+
});
|
486
492
|
Object.defineProperty(exports, "createRow", {
|
487
493
|
enumerable: true,
|
488
494
|
get: function get() {
|
@@ -549,6 +555,24 @@ Object.defineProperty(exports, "createFormat", {
|
|
549
555
|
return _format.createFormat;
|
550
556
|
}
|
551
557
|
});
|
558
|
+
Object.defineProperty(exports, "createBin", {
|
559
|
+
enumerable: true,
|
560
|
+
get: function get() {
|
561
|
+
return _bin.createBin;
|
562
|
+
}
|
563
|
+
});
|
564
|
+
Object.defineProperty(exports, "createOct", {
|
565
|
+
enumerable: true,
|
566
|
+
get: function get() {
|
567
|
+
return _oct.createOct;
|
568
|
+
}
|
569
|
+
});
|
570
|
+
Object.defineProperty(exports, "createHex", {
|
571
|
+
enumerable: true,
|
572
|
+
get: function get() {
|
573
|
+
return _hex.createHex;
|
574
|
+
}
|
575
|
+
});
|
552
576
|
Object.defineProperty(exports, "createPrint", {
|
553
577
|
enumerable: true,
|
554
578
|
get: function get() {
|
@@ -633,6 +657,18 @@ Object.defineProperty(exports, "createUsolve", {
|
|
633
657
|
return _usolve.createUsolve;
|
634
658
|
}
|
635
659
|
});
|
660
|
+
Object.defineProperty(exports, "createLsolveAll", {
|
661
|
+
enumerable: true,
|
662
|
+
get: function get() {
|
663
|
+
return _lsolveAll.createLsolveAll;
|
664
|
+
}
|
665
|
+
});
|
666
|
+
Object.defineProperty(exports, "createUsolveAll", {
|
667
|
+
enumerable: true,
|
668
|
+
get: function get() {
|
669
|
+
return _usolveAll.createUsolveAll;
|
670
|
+
}
|
671
|
+
});
|
636
672
|
Object.defineProperty(exports, "createLeftShift", {
|
637
673
|
enumerable: true,
|
638
674
|
get: function get() {
|
@@ -2096,6 +2132,8 @@ var _reshape = require("./function/matrix/reshape");
|
|
2096
2132
|
|
2097
2133
|
var _resize = require("./function/matrix/resize");
|
2098
2134
|
|
2135
|
+
var _rotationMatrix = require("./function/matrix/rotationMatrix");
|
2136
|
+
|
2099
2137
|
var _row = require("./function/matrix/row");
|
2100
2138
|
|
2101
2139
|
var _size = require("./function/matrix/size");
|
@@ -2118,6 +2156,12 @@ var _prod = require("./function/statistics/prod");
|
|
2118
2156
|
|
2119
2157
|
var _format = require("./function/string/format");
|
2120
2158
|
|
2159
|
+
var _bin = require("./function/string/bin");
|
2160
|
+
|
2161
|
+
var _oct = require("./function/string/oct");
|
2162
|
+
|
2163
|
+
var _hex = require("./function/string/hex");
|
2164
|
+
|
2121
2165
|
var _print = require("./function/string/print");
|
2122
2166
|
|
2123
2167
|
var _to = require("./function/unit/to");
|
@@ -2146,6 +2190,10 @@ var _lsolve = require("./function/algebra/solver/lsolve");
|
|
2146
2190
|
|
2147
2191
|
var _usolve = require("./function/algebra/solver/usolve");
|
2148
2192
|
|
2193
|
+
var _lsolveAll = require("./function/algebra/solver/lsolveAll");
|
2194
|
+
|
2195
|
+
var _usolveAll = require("./function/algebra/solver/usolveAll");
|
2196
|
+
|
2149
2197
|
var _leftShift = require("./function/bitwise/leftShift");
|
2150
2198
|
|
2151
2199
|
var _rightArithShift = require("./function/bitwise/rightArithShift");
|
@@ -23,7 +23,7 @@ var createLsolve = /* #__PURE__ */(0, _factory.factory)(name, dependencies, func
|
|
23
23
|
DenseMatrix: DenseMatrix
|
24
24
|
});
|
25
25
|
/**
|
26
|
-
*
|
26
|
+
* Finds one solution of a linear equation system by forwards substitution. Matrix must be a lower triangular matrix. Throws an error if there's no solution.
|
27
27
|
*
|
28
28
|
* `L * x = b`
|
29
29
|
*
|
@@ -39,7 +39,7 @@ var createLsolve = /* #__PURE__ */(0, _factory.factory)(name, dependencies, func
|
|
39
39
|
*
|
40
40
|
* See also:
|
41
41
|
*
|
42
|
-
* lup, slu, usolve, lusolve
|
42
|
+
* lsolveAll, lup, slu, usolve, lusolve
|
43
43
|
*
|
44
44
|
* @param {Matrix, Array} L A N x N matrix or array (L)
|
45
45
|
* @param {Matrix, Array} b A column vector with the b values
|
@@ -49,19 +49,15 @@ var createLsolve = /* #__PURE__ */(0, _factory.factory)(name, dependencies, func
|
|
49
49
|
|
50
50
|
return typed(name, {
|
51
51
|
'SparseMatrix, Array | Matrix': function SparseMatrixArrayMatrix(m, b) {
|
52
|
-
// process matrix
|
53
52
|
return _sparseForwardSubstitution(m, b);
|
54
53
|
},
|
55
54
|
'DenseMatrix, Array | Matrix': function DenseMatrixArrayMatrix(m, b) {
|
56
|
-
// process matrix
|
57
55
|
return _denseForwardSubstitution(m, b);
|
58
56
|
},
|
59
57
|
'Array, Array | Matrix': function ArrayArrayMatrix(a, b) {
|
60
|
-
|
61
|
-
var m = matrix(a); // use matrix implementation
|
62
|
-
|
63
|
-
var r = _denseForwardSubstitution(m, b); // result
|
58
|
+
var m = matrix(a);
|
64
59
|
|
60
|
+
var r = _denseForwardSubstitution(m, b);
|
65
61
|
|
66
62
|
return r.valueOf();
|
67
63
|
}
|
@@ -69,48 +65,38 @@ var createLsolve = /* #__PURE__ */(0, _factory.factory)(name, dependencies, func
|
|
69
65
|
|
70
66
|
function _denseForwardSubstitution(m, b) {
|
71
67
|
// validate matrix and vector, return copy of column vector b
|
72
|
-
b = solveValidation(m, b, true);
|
73
|
-
|
74
|
-
var bdata = b._data; // rows & columns
|
75
|
-
|
68
|
+
b = solveValidation(m, b, true);
|
69
|
+
var bdata = b._data;
|
76
70
|
var rows = m._size[0];
|
77
71
|
var columns = m._size[1]; // result
|
78
72
|
|
79
|
-
var x = [];
|
80
|
-
|
81
|
-
var data = m._data; // forward solve m * x = b, loop columns
|
73
|
+
var x = [];
|
74
|
+
var mdata = m._data; // loop columns
|
82
75
|
|
83
76
|
for (var j = 0; j < columns; j++) {
|
84
|
-
|
85
|
-
var
|
86
|
-
|
87
|
-
var xj = void 0; // forward substitution (outer product) avoids inner looping when bj === 0
|
77
|
+
var bj = bdata[j][0] || 0;
|
78
|
+
var xj = void 0;
|
88
79
|
|
89
80
|
if (!equalScalar(bj, 0)) {
|
90
|
-
//
|
91
|
-
var vjj =
|
81
|
+
// non-degenerate row, find solution
|
82
|
+
var vjj = mdata[j][j];
|
92
83
|
|
93
84
|
if (equalScalar(vjj, 0)) {
|
94
|
-
// system cannot be solved
|
95
85
|
throw new Error('Linear system cannot be solved since matrix is singular');
|
96
|
-
}
|
97
|
-
|
86
|
+
}
|
98
87
|
|
99
88
|
xj = divideScalar(bj, vjj); // loop rows
|
100
89
|
|
101
90
|
for (var i = j + 1; i < rows; i++) {
|
102
|
-
|
103
|
-
bdata[i] = [subtract(bdata[i][0] || 0, multiplyScalar(xj, data[i][j]))];
|
91
|
+
bdata[i] = [subtract(bdata[i][0] || 0, multiplyScalar(xj, mdata[i][j]))];
|
104
92
|
}
|
105
93
|
} else {
|
106
|
-
//
|
94
|
+
// degenerate row, we can choose any value
|
107
95
|
xj = 0;
|
108
|
-
}
|
109
|
-
|
96
|
+
}
|
110
97
|
|
111
98
|
x[j] = [xj];
|
112
|
-
}
|
113
|
-
|
99
|
+
}
|
114
100
|
|
115
101
|
return new DenseMatrix({
|
116
102
|
data: x,
|
@@ -120,72 +106,59 @@ var createLsolve = /* #__PURE__ */(0, _factory.factory)(name, dependencies, func
|
|
120
106
|
|
121
107
|
function _sparseForwardSubstitution(m, b) {
|
122
108
|
// validate matrix and vector, return copy of column vector b
|
123
|
-
b = solveValidation(m, b, true);
|
124
|
-
|
125
|
-
var bdata = b._data; // rows & columns
|
126
|
-
|
109
|
+
b = solveValidation(m, b, true);
|
110
|
+
var bdata = b._data;
|
127
111
|
var rows = m._size[0];
|
128
|
-
var columns = m._size[1];
|
129
|
-
|
112
|
+
var columns = m._size[1];
|
130
113
|
var values = m._values;
|
131
114
|
var index = m._index;
|
132
|
-
var ptr = m._ptr; //
|
115
|
+
var ptr = m._ptr; // result
|
133
116
|
|
134
|
-
var
|
135
|
-
|
136
|
-
var x = []; // forward solve m * x = b, loop columns
|
117
|
+
var x = []; // loop columns
|
137
118
|
|
138
119
|
for (var j = 0; j < columns; j++) {
|
139
|
-
|
140
|
-
var bj = bdata[j][0] || 0; // forward substitution (outer product) avoids inner looping when bj === 0
|
120
|
+
var bj = bdata[j][0] || 0;
|
141
121
|
|
142
122
|
if (!equalScalar(bj, 0)) {
|
143
|
-
//
|
144
|
-
var vjj = 0; //
|
123
|
+
// non-degenerate row, find solution
|
124
|
+
var vjj = 0; // matrix values & indices (column j)
|
145
125
|
|
146
|
-
var
|
147
|
-
var
|
126
|
+
var jValues = [];
|
127
|
+
var jIndices = []; // first and last index in the column
|
148
128
|
|
149
|
-
var
|
129
|
+
var firstIndex = ptr[j];
|
130
|
+
var lastIndex = ptr[j + 1]; // values in column, find value at [j, j]
|
150
131
|
|
151
|
-
for (k =
|
152
|
-
// row
|
153
|
-
i = index[k]; // check row (rows are not sorted!)
|
132
|
+
for (var k = firstIndex; k < lastIndex; k++) {
|
133
|
+
var i = index[k]; // check row (rows are not sorted!)
|
154
134
|
|
155
135
|
if (i === j) {
|
156
|
-
// update vjj
|
157
136
|
vjj = values[k];
|
158
137
|
} else if (i > j) {
|
159
138
|
// store lower triangular
|
160
|
-
|
161
|
-
|
139
|
+
jValues.push(values[k]);
|
140
|
+
jIndices.push(i);
|
162
141
|
}
|
163
|
-
} // at this point we must have a value
|
142
|
+
} // at this point we must have a value in vjj
|
164
143
|
|
165
144
|
|
166
145
|
if (equalScalar(vjj, 0)) {
|
167
|
-
// system cannot be solved, there is no value @ [j, j]
|
168
146
|
throw new Error('Linear system cannot be solved since matrix is singular');
|
169
|
-
}
|
170
|
-
|
171
|
-
|
172
|
-
var xj = divideScalar(bj, vjj); // loop lower triangular
|
173
|
-
|
174
|
-
for (k = 0, l = jindex.length; k < l; k++) {
|
175
|
-
// row
|
176
|
-
i = jindex[k]; // update copy of b
|
147
|
+
}
|
177
148
|
|
178
|
-
|
179
|
-
} // update x
|
149
|
+
var xj = divideScalar(bj, vjj);
|
180
150
|
|
151
|
+
for (var _k = 0, l = jIndices.length; _k < l; _k++) {
|
152
|
+
var _i = jIndices[_k];
|
153
|
+
bdata[_i] = [subtract(bdata[_i][0] || 0, multiplyScalar(xj, jValues[_k]))];
|
154
|
+
}
|
181
155
|
|
182
156
|
x[j] = [xj];
|
183
157
|
} else {
|
184
|
-
//
|
158
|
+
// degenerate row, we can choose any value
|
185
159
|
x[j] = [0];
|
186
160
|
}
|
187
|
-
}
|
188
|
-
|
161
|
+
}
|
189
162
|
|
190
163
|
return new DenseMatrix({
|
191
164
|
data: x,
|