mathjs 7.2.0 → 7.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (159) hide show
  1. package/HISTORY.md +34 -0
  2. package/dist/math.js +3421 -2476
  3. package/dist/math.min.js +5 -5
  4. package/dist/math.min.map +1 -1
  5. package/docs/expressions/syntax.md +30 -4
  6. package/docs/reference/functions/bin.md +38 -0
  7. package/docs/reference/functions/ceil.md +10 -1
  8. package/docs/reference/functions/fix.md +10 -2
  9. package/docs/reference/functions/floor.md +12 -3
  10. package/docs/reference/functions/hex.md +38 -0
  11. package/docs/reference/functions/lsolve.md +2 -1
  12. package/docs/reference/functions/lsolveAll.md +45 -0
  13. package/docs/reference/functions/oct.md +38 -0
  14. package/docs/reference/functions/rotationMatrix.md +51 -0
  15. package/docs/reference/functions/round.md +6 -2
  16. package/docs/reference/functions/usolve.md +2 -1
  17. package/docs/reference/functions/usolveAll.md +45 -0
  18. package/docs/reference/functions.md +8 -2
  19. package/es/entry/dependenciesAny/dependenciesBin.generated.js +10 -0
  20. package/es/entry/dependenciesAny/dependenciesCeil.generated.js +4 -0
  21. package/es/entry/dependenciesAny/dependenciesFix.generated.js +2 -0
  22. package/es/entry/dependenciesAny/dependenciesFloor.generated.js +4 -0
  23. package/es/entry/dependenciesAny/dependenciesHex.generated.js +10 -0
  24. package/es/entry/dependenciesAny/dependenciesLsolveAll.generated.js +22 -0
  25. package/es/entry/dependenciesAny/dependenciesOct.generated.js +10 -0
  26. package/es/entry/dependenciesAny/dependenciesRotationMatrix.generated.js +30 -0
  27. package/es/entry/dependenciesAny/dependenciesUsolveAll.generated.js +22 -0
  28. package/es/entry/dependenciesAny.generated.js +6 -0
  29. package/es/entry/impureFunctionsAny.generated.js +63 -57
  30. package/es/entry/pureFunctionsAny.generated.js +323 -277
  31. package/es/expression/embeddedDocs/embeddedDocs.js +12 -0
  32. package/es/expression/embeddedDocs/function/algebra/lsolve.js +2 -2
  33. package/es/expression/embeddedDocs/function/algebra/lsolveAll.js +8 -0
  34. package/es/expression/embeddedDocs/function/algebra/usolve.js +2 -2
  35. package/es/expression/embeddedDocs/function/algebra/usolveAll.js +8 -0
  36. package/es/expression/embeddedDocs/function/matrix/rotationMatrix.js +8 -0
  37. package/es/expression/embeddedDocs/function/utils/bin.js +8 -0
  38. package/es/expression/embeddedDocs/function/utils/hex.js +8 -0
  39. package/es/expression/embeddedDocs/function/utils/oct.js +8 -0
  40. package/es/expression/parse.js +28 -1
  41. package/es/factoriesAny.js +6 -0
  42. package/es/function/algebra/solver/lsolve.js +42 -69
  43. package/es/function/algebra/solver/lsolveAll.js +213 -0
  44. package/es/function/algebra/solver/lusolve.js +12 -27
  45. package/es/function/algebra/solver/usolve.js +41 -64
  46. package/es/function/algebra/solver/usolveAll.js +213 -0
  47. package/es/function/algebra/solver/utils/solveValidation.js +66 -107
  48. package/es/function/arithmetic/ceil.js +88 -4
  49. package/es/function/arithmetic/fix.js +43 -6
  50. package/es/function/arithmetic/floor.js +90 -6
  51. package/es/function/arithmetic/mod.js +10 -1
  52. package/es/function/arithmetic/round.js +6 -2
  53. package/es/function/matrix/rotationMatrix.js +175 -0
  54. package/es/function/matrix/sqrtm.js +4 -0
  55. package/es/function/probability/pickRandom.js +2 -6
  56. package/es/function/statistics/variance.js +4 -4
  57. package/es/function/string/baseUtils.js +36 -0
  58. package/es/function/string/bin.js +23 -0
  59. package/es/function/string/hex.js +23 -0
  60. package/es/function/string/oct.js +23 -0
  61. package/es/type/bignumber/BigNumber.js +4 -1
  62. package/es/type/number.js +10 -0
  63. package/es/utils/object.js +3 -1
  64. package/es/version.js +1 -1
  65. package/examples/advanced/web_server/math_worker.js +1 -1
  66. package/lib/entry/dependenciesAny/dependenciesBin.generated.js +20 -0
  67. package/lib/entry/dependenciesAny/dependenciesCeil.generated.js +6 -0
  68. package/lib/entry/dependenciesAny/dependenciesFix.generated.js +3 -0
  69. package/lib/entry/dependenciesAny/dependenciesFloor.generated.js +6 -0
  70. package/lib/entry/dependenciesAny/dependenciesHex.generated.js +20 -0
  71. package/lib/entry/dependenciesAny/dependenciesLsolveAll.generated.js +38 -0
  72. package/lib/entry/dependenciesAny/dependenciesOct.generated.js +20 -0
  73. package/lib/entry/dependenciesAny/dependenciesRotationMatrix.generated.js +50 -0
  74. package/lib/entry/dependenciesAny/dependenciesUsolveAll.generated.js +38 -0
  75. package/lib/entry/dependenciesAny.generated.js +48 -0
  76. package/lib/entry/impureFunctionsAny.generated.js +65 -59
  77. package/lib/entry/pureFunctionsAny.generated.js +373 -321
  78. package/lib/expression/embeddedDocs/embeddedDocs.js +18 -0
  79. package/lib/expression/embeddedDocs/function/algebra/lsolve.js +2 -2
  80. package/lib/expression/embeddedDocs/function/algebra/lsolveAll.js +15 -0
  81. package/lib/expression/embeddedDocs/function/algebra/usolve.js +2 -2
  82. package/lib/expression/embeddedDocs/function/algebra/usolveAll.js +15 -0
  83. package/lib/expression/embeddedDocs/function/matrix/rotationMatrix.js +15 -0
  84. package/lib/expression/embeddedDocs/function/utils/bin.js +15 -0
  85. package/lib/expression/embeddedDocs/function/utils/hex.js +15 -0
  86. package/lib/expression/embeddedDocs/function/utils/oct.js +15 -0
  87. package/lib/expression/parse.js +28 -1
  88. package/lib/factoriesAny.js +48 -0
  89. package/lib/function/algebra/solver/lsolve.js +42 -69
  90. package/lib/function/algebra/solver/lsolveAll.js +223 -0
  91. package/lib/function/algebra/solver/lusolve.js +12 -27
  92. package/lib/function/algebra/solver/usolve.js +41 -64
  93. package/lib/function/algebra/solver/usolveAll.js +223 -0
  94. package/lib/function/algebra/solver/utils/solveValidation.js +65 -106
  95. package/lib/function/arithmetic/ceil.js +91 -4
  96. package/lib/function/arithmetic/fix.js +44 -6
  97. package/lib/function/arithmetic/floor.js +93 -6
  98. package/lib/function/arithmetic/mod.js +10 -1
  99. package/lib/function/arithmetic/round.js +6 -2
  100. package/lib/function/matrix/rotationMatrix.js +185 -0
  101. package/lib/function/matrix/sqrtm.js +4 -0
  102. package/lib/function/probability/pickRandom.js +3 -7
  103. package/lib/function/statistics/variance.js +4 -4
  104. package/lib/function/string/baseUtils.js +45 -0
  105. package/lib/function/string/bin.js +31 -0
  106. package/lib/function/string/hex.js +31 -0
  107. package/lib/function/string/oct.js +31 -0
  108. package/lib/header.js +2 -2
  109. package/lib/type/bignumber/BigNumber.js +3 -1
  110. package/lib/type/number.js +10 -0
  111. package/lib/utils/object.js +3 -1
  112. package/lib/version.js +1 -1
  113. package/package.json +12 -12
  114. package/src/entry/dependenciesAny/dependenciesBin.generated.js +11 -0
  115. package/src/entry/dependenciesAny/dependenciesCeil.generated.js +4 -0
  116. package/src/entry/dependenciesAny/dependenciesFix.generated.js +2 -0
  117. package/src/entry/dependenciesAny/dependenciesFloor.generated.js +4 -0
  118. package/src/entry/dependenciesAny/dependenciesHex.generated.js +11 -0
  119. package/src/entry/dependenciesAny/dependenciesLsolveAll.generated.js +23 -0
  120. package/src/entry/dependenciesAny/dependenciesOct.generated.js +11 -0
  121. package/src/entry/dependenciesAny/dependenciesRotationMatrix.generated.js +31 -0
  122. package/src/entry/dependenciesAny/dependenciesUsolveAll.generated.js +23 -0
  123. package/src/entry/dependenciesAny.generated.js +6 -0
  124. package/src/entry/impureFunctionsAny.generated.js +104 -92
  125. package/src/entry/pureFunctionsAny.generated.js +94 -82
  126. package/src/expression/embeddedDocs/embeddedDocs.js +12 -0
  127. package/src/expression/embeddedDocs/function/algebra/lsolve.js +2 -2
  128. package/src/expression/embeddedDocs/function/algebra/lsolveAll.js +17 -0
  129. package/src/expression/embeddedDocs/function/algebra/usolve.js +2 -2
  130. package/src/expression/embeddedDocs/function/algebra/usolveAll.js +15 -0
  131. package/src/expression/embeddedDocs/function/matrix/rotationMatrix.js +19 -0
  132. package/src/expression/embeddedDocs/function/utils/bin.js +12 -0
  133. package/src/expression/embeddedDocs/function/utils/hex.js +12 -0
  134. package/src/expression/embeddedDocs/function/utils/oct.js +12 -0
  135. package/src/expression/parse.js +25 -0
  136. package/src/factoriesAny.js +6 -0
  137. package/src/function/algebra/solver/lsolve.js +52 -58
  138. package/src/function/algebra/solver/lsolveAll.js +197 -0
  139. package/src/function/algebra/solver/lusolve.js +9 -19
  140. package/src/function/algebra/solver/usolve.js +52 -55
  141. package/src/function/algebra/solver/usolveAll.js +199 -0
  142. package/src/function/algebra/solver/utils/solveValidation.js +78 -86
  143. package/src/function/arithmetic/ceil.js +63 -3
  144. package/src/function/arithmetic/fix.js +45 -6
  145. package/src/function/arithmetic/floor.js +65 -5
  146. package/src/function/arithmetic/mod.js +8 -1
  147. package/src/function/arithmetic/round.js +6 -2
  148. package/src/function/matrix/rotationMatrix.js +185 -0
  149. package/src/function/matrix/sqrtm.js +4 -0
  150. package/src/function/probability/pickRandom.js +2 -6
  151. package/src/function/statistics/variance.js +4 -4
  152. package/src/function/string/baseUtils.js +29 -0
  153. package/src/function/string/bin.js +23 -0
  154. package/src/function/string/hex.js +23 -0
  155. package/src/function/string/oct.js +24 -0
  156. package/src/type/bignumber/BigNumber.js +2 -1
  157. package/src/type/number.js +9 -1
  158. package/src/utils/object.js +3 -1
  159. 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: 'Solves the linear system L * x = b where L is an [n x n] lower triangular matrix and b is a [n] column vector.',
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: 'Solves the linear system U * x = b where U is an [n x n] upper triangular matrix and b is a [n] column vector.',
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;
@@ -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; // get number, can have a single dot
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
@@ -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
- * Solves the linear equation system by forwards substitution. Matrix must be a lower triangular matrix.
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
- // create dense matrix from array
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); // column vector data
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 = []; // data
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
- // b[j]
85
- var bj = bdata[j][0] || 0; // x[j]
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
- // value @ [j, j]
91
- var vjj = data[j][j]; // check 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
- } // calculate xj
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
- // update copy of b
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
- // zero @ j
94
+ // degenerate row, we can choose any value
107
95
  xj = 0;
108
- } // update x
109
-
96
+ }
110
97
 
111
98
  x[j] = [xj];
112
- } // return vector
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); // column vector data
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]; // matrix arrays
129
-
112
+ var columns = m._size[1];
130
113
  var values = m._values;
131
114
  var index = m._index;
132
- var ptr = m._ptr; // vars
115
+ var ptr = m._ptr; // result
133
116
 
134
- var i, k; // result
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
- // b[j]
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
- // value @ [j, j]
144
- var vjj = 0; // lower triangular matrix values & index (column j)
123
+ // non-degenerate row, find solution
124
+ var vjj = 0; // matrix values & indices (column j)
145
125
 
146
- var jvalues = [];
147
- var jindex = []; // last index in column
126
+ var jValues = [];
127
+ var jIndices = []; // first and last index in the column
148
128
 
149
- var l = ptr[j + 1]; // values in column, find value @ [j, j]
129
+ var firstIndex = ptr[j];
130
+ var lastIndex = ptr[j + 1]; // values in column, find value at [j, j]
150
131
 
151
- for (k = ptr[j]; k < l; 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
- jvalues.push(values[k]);
161
- jindex.push(i);
139
+ jValues.push(values[k]);
140
+ jIndices.push(i);
162
141
  }
163
- } // at this point we must have a value @ [j, j]
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
- } // calculate xj
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
- bdata[i] = [subtract(bdata[i][0] || 0, multiplyScalar(xj, jvalues[k]))];
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
- // update x
158
+ // degenerate row, we can choose any value
185
159
  x[j] = [0];
186
160
  }
187
- } // return vector
188
-
161
+ }
189
162
 
190
163
  return new DenseMatrix({
191
164
  data: x,