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.
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,