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
@@ -9,14 +9,19 @@ var _factory = require("../../utils/factory");
9
9
 
10
10
  var _collection = require("../../utils/collection");
11
11
 
12
+ var _algorithm = require("../../type/matrix/utils/algorithm14");
13
+
12
14
  var name = 'fix';
13
- var dependencies = ['typed', 'Complex', 'ceil', 'floor'];
15
+ var dependencies = ['typed', 'Complex', 'matrix', 'ceil', 'floor'];
14
16
  var createFix = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
15
17
  var typed = _ref.typed,
16
18
  _Complex = _ref.Complex,
19
+ matrix = _ref.matrix,
17
20
  ceil = _ref.ceil,
18
21
  floor = _ref.floor;
19
-
22
+ var algorithm14 = (0, _algorithm.createAlgorithm14)({
23
+ typed: typed
24
+ });
20
25
  /**
21
26
  * Round a value towards zero.
22
27
  * For matrices, the function is evaluated element wise.
@@ -32,34 +37,67 @@ var createFix = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functio
32
37
  * math.fix(-4.2) // returns number -4
33
38
  * math.fix(-4.7) // returns number -4
34
39
  *
35
- * const c = math.complex(3.2, -2.7)
40
+ * math.fix(3.12, 1) // returns number 3.1
41
+ * math.fix(3.18, 1) // returns number 3.1
42
+ * math.fix(-4.12, 1) // returns number -4.1
43
+ * math.fix(-4.17, 1) // returns number -4.1
44
+ *
45
+ * const c = math.complex(3.22, -2.78)
36
46
  * math.fix(c) // returns Complex 3 - 2i
47
+ * math.fix(c, 1) // returns Complex 3.2 - 2.7i
37
48
  *
38
- * math.fix([3.2, 3.8, -4.7]) // returns Array [3, 3, -4]
49
+ * math.fix([3.2, 3.8, -4.7]) // returns Array [3, 3, -4]
50
+ * math.fix([3.2, 3.8, -4.7], 1) // returns Array [3.2, 3.8, -4.7]
39
51
  *
40
52
  * See also:
41
53
  *
42
54
  * ceil, floor, round
43
55
  *
44
- * @param {number | BigNumber | Fraction | Complex | Array | Matrix} x Number to be rounded
45
- * @return {number | BigNumber | Fraction | Complex | Array | Matrix} Rounded value
56
+ * @param {number | BigNumber | Fraction | Complex | Array | Matrix} x Number to be rounded
57
+ * @param {number | BigNumber | Array} [n=0] Number of decimals
58
+ * @return {number | BigNumber | Fraction | Complex | Array | Matrix} Rounded value
46
59
  */
60
+
47
61
  return typed('fix', {
48
62
  number: function number(x) {
49
63
  return x > 0 ? floor(x) : ceil(x);
50
64
  },
65
+ 'number, number | BigNumber': function numberNumberBigNumber(x, n) {
66
+ return x > 0 ? floor(x, n) : ceil(x, n);
67
+ },
51
68
  Complex: function Complex(x) {
52
69
  return new _Complex(x.re > 0 ? Math.floor(x.re) : Math.ceil(x.re), x.im > 0 ? Math.floor(x.im) : Math.ceil(x.im));
53
70
  },
71
+ 'Complex, number | BigNumber': function ComplexNumberBigNumber(x, n) {
72
+ return new _Complex(x.re > 0 ? floor(x.re, n) : ceil(x.re, n), x.im > 0 ? floor(x.im, n) : ceil(x.im, n));
73
+ },
54
74
  BigNumber: function BigNumber(x) {
55
75
  return x.isNegative() ? ceil(x) : floor(x);
56
76
  },
77
+ 'BigNumber, number | BigNumber': function BigNumberNumberBigNumber(x, n) {
78
+ return x.isNegative() ? ceil(x, n) : floor(x, n);
79
+ },
57
80
  Fraction: function Fraction(x) {
58
81
  return x.s < 0 ? x.ceil() : x.floor();
59
82
  },
83
+ 'Fraction, number | BigNumber': function FractionNumberBigNumber(x, n) {
84
+ return x.s < 0 ? x.ceil(n) : x.floor(n);
85
+ },
60
86
  'Array | Matrix': function ArrayMatrix(x) {
61
87
  // deep map collection, skip zeros since fix(0) = 0
62
88
  return (0, _collection.deepMap)(x, this, true);
89
+ },
90
+ 'Array | Matrix, number | BigNumber': function ArrayMatrixNumberBigNumber(x, n) {
91
+ var _this = this;
92
+
93
+ // deep map collection, skip zeros since fix(0) = 0
94
+ return (0, _collection.deepMap)(x, function (i) {
95
+ return _this(i, n);
96
+ }, true);
97
+ },
98
+ 'number | Complex | BigNumber, Array': function numberComplexBigNumberArray(x, y) {
99
+ // use matrix implementation
100
+ return algorithm14(matrix(y), x, this, true).valueOf();
63
101
  }
64
102
  });
65
103
  });
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.createFloor = 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");
@@ -13,13 +15,37 @@ var _number = require("../../utils/number");
13
15
 
14
16
  var _nearlyEqual = require("../../utils/bignumber/nearlyEqual");
15
17
 
18
+ var _algorithm = require("../../type/matrix/utils/algorithm11");
19
+
20
+ var _algorithm2 = require("../../type/matrix/utils/algorithm14");
21
+
22
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
23
+
24
+ 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."); }
25
+
26
+ 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); }
27
+
28
+ 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; }
29
+
30
+ 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; }
31
+
32
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
33
+
16
34
  var name = 'floor';
17
- var dependencies = ['typed', 'config', 'round'];
35
+ var dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar'];
18
36
  var createFloor = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
19
37
  var typed = _ref.typed,
20
38
  config = _ref.config,
21
- round = _ref.round;
22
-
39
+ round = _ref.round,
40
+ matrix = _ref.matrix,
41
+ equalScalar = _ref.equalScalar;
42
+ var algorithm11 = (0, _algorithm.createAlgorithm11)({
43
+ typed: typed,
44
+ equalScalar: equalScalar
45
+ });
46
+ var algorithm14 = (0, _algorithm2.createAlgorithm14)({
47
+ typed: typed
48
+ });
23
49
  /**
24
50
  * Round a value towards minus infinity.
25
51
  * For matrices, the function is evaluated element wise.
@@ -27,6 +53,7 @@ var createFloor = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
27
53
  * Syntax:
28
54
  *
29
55
  * math.floor(x)
56
+ * math.floor(x, n)
30
57
  *
31
58
  * Examples:
32
59
  *
@@ -35,18 +62,27 @@ var createFloor = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
35
62
  * math.floor(-4.2) // returns number -5
36
63
  * math.floor(-4.7) // returns number -5
37
64
  *
38
- * const c = math.complex(3.2, -2.7)
39
- * math.floor(c) // returns Complex 3 - 3i
65
+ * math.floor(3.212, 2) // returns number 3.21
66
+ * math.floor(3.288, 2) // returns number 3.28
67
+ * math.floor(-4.212, 2) // returns number -4.22
68
+ * math.floor(-4.782, 2) // returns number -4.79
40
69
  *
41
- * math.floor([3.2, 3.8, -4.7]) // returns Array [3, 3, -5]
70
+ * const c = math.complex(3.24, -2.71)
71
+ * math.floor(c) // returns Complex 3 - 3i
72
+ * math.floor(c, 1) // returns Complex 3.2 - 2.8i
73
+ *
74
+ * math.floor([3.2, 3.8, -4.7]) // returns Array [3, 3, -5]
75
+ * math.floor([3.21, 3.82, -4.71], 1) // returns Array [3.2, 3.8, -4.8]
42
76
  *
43
77
  * See also:
44
78
  *
45
79
  * ceil, fix, round
46
80
  *
47
81
  * @param {number | BigNumber | Fraction | Complex | Array | Matrix} x Number to be rounded
82
+ * @param {number | BigNumber | Array} [n=0] Number of decimals
48
83
  * @return {number | BigNumber | Fraction | Complex | Array | Matrix} Rounded value
49
84
  */
85
+
50
86
  return typed('floor', {
51
87
  number: function number(x) {
52
88
  if ((0, _number.nearlyEqual)(x, round(x), config.epsilon)) {
@@ -55,9 +91,32 @@ var createFloor = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
55
91
  return Math.floor(x);
56
92
  }
57
93
  },
94
+ 'number, number': function numberNumber(x, n) {
95
+ if ((0, _number.nearlyEqual)(x, round(x, n), config.epsilon)) {
96
+ return round(x, n);
97
+ } else {
98
+ var _$split = "".concat(x, "e").split('e'),
99
+ _$split2 = _slicedToArray(_$split, 2),
100
+ number = _$split2[0],
101
+ exponent = _$split2[1];
102
+
103
+ var result = Math.floor(Number("".concat(number, "e").concat(Number(exponent) + n)));
104
+
105
+ var _$split3 = "".concat(result, "e").split('e');
106
+
107
+ var _$split4 = _slicedToArray(_$split3, 2);
108
+
109
+ number = _$split4[0];
110
+ exponent = _$split4[1];
111
+ return Number("".concat(number, "e").concat(Number(exponent) - n));
112
+ }
113
+ },
58
114
  Complex: function Complex(x) {
59
115
  return x.floor();
60
116
  },
117
+ 'Complex, number': function ComplexNumber(x, n) {
118
+ return x.floor(n);
119
+ },
61
120
  BigNumber: function BigNumber(x) {
62
121
  if ((0, _nearlyEqual.nearlyEqual)(x, round(x), config.epsilon)) {
63
122
  return round(x);
@@ -65,12 +124,40 @@ var createFloor = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
65
124
  return x.floor();
66
125
  }
67
126
  },
127
+ 'BigNumber, BigNumber': function BigNumberBigNumber(x, n) {
128
+ if ((0, _nearlyEqual.nearlyEqual)(x, round(x, n), config.epsilon)) {
129
+ return round(x, n);
130
+ } else {
131
+ return x.toDecimalPlaces(n.toNumber(), _decimal.Decimal.ROUND_FLOOR);
132
+ }
133
+ },
68
134
  Fraction: function Fraction(x) {
69
135
  return x.floor();
70
136
  },
137
+ 'Fraction, number': function FractionNumber(x, n) {
138
+ return x.floor(n);
139
+ },
71
140
  'Array | Matrix': function ArrayMatrix(x) {
72
141
  // deep map collection, skip zeros since floor(0) = 0
73
142
  return (0, _collection.deepMap)(x, this, true);
143
+ },
144
+ 'Array | Matrix, number': function ArrayMatrixNumber(x, n) {
145
+ var _this = this;
146
+
147
+ // deep map collection, skip zeros since ceil(0) = 0
148
+ return (0, _collection.deepMap)(x, function (i) {
149
+ return _this(i, n);
150
+ }, true);
151
+ },
152
+ 'SparseMatrix, number | BigNumber': function SparseMatrixNumberBigNumber(x, y) {
153
+ return algorithm11(x, y, this, false);
154
+ },
155
+ 'DenseMatrix, number | BigNumber': function DenseMatrixNumberBigNumber(x, y) {
156
+ return algorithm14(x, y, this, false);
157
+ },
158
+ 'number | Complex | BigNumber, Array': function numberComplexBigNumberArray(x, y) {
159
+ // use matrix implementation
160
+ return algorithm14(matrix(y), x, this, true).valueOf();
74
161
  }
75
162
  });
76
163
  });
@@ -94,10 +94,19 @@ var createMod = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functio
94
94
  return typed(name, {
95
95
  'number, number': _number.modNumber,
96
96
  'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {
97
+ if (y.isNeg()) {
98
+ throw new Error('Cannot calculate mod for a negative divisor');
99
+ }
100
+
97
101
  return y.isZero() ? x : x.mod(y);
98
102
  },
99
103
  'Fraction, Fraction': function FractionFraction(x, y) {
100
- return x.mod(y);
104
+ if (y.compare(0) < 0) {
105
+ throw new Error('Cannot calculate mod for a negative divisor');
106
+ } // Workaround suggested in Fraction.js library to calculate correct modulo for negative dividend
107
+
108
+
109
+ return x.compare(0) >= 0 ? x.mod(y) : x.mod(y).add(y).mod(y);
101
110
  },
102
111
  'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {
103
112
  return algorithm05(x, y, this, false);
@@ -57,10 +57,14 @@ var createRound = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
57
57
  *
58
58
  * Examples:
59
59
  *
60
- * math.round(3.2) // returns number 3
61
- * math.round(3.8) // returns number 4
60
+ * math.round(3.22) // returns number 3
61
+ * math.round(3.82) // returns number 4
62
62
  * math.round(-4.2) // returns number -4
63
63
  * math.round(-4.7) // returns number -5
64
+ * math.round(3.22, 1) // returns number 3.2
65
+ * math.round(3.88, 1) // returns number 3.8
66
+ * math.round(-4.21, 1) // returns number -4.2
67
+ * math.round(-4.71, 1) // returns number -4.7
64
68
  * math.round(math.pi, 3) // returns number 3.142
65
69
  * math.round(123.45678, 2) // returns number 123.46
66
70
  *
@@ -0,0 +1,185 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createRotationMatrix = void 0;
7
+
8
+ var _is = require("../../utils/is");
9
+
10
+ var _factory = require("../../utils/factory");
11
+
12
+ var name = 'rotationMatrix';
13
+ var dependencies = ['typed', 'config', 'multiplyScalar', 'addScalar', 'unaryMinus', 'norm', 'matrix', 'BigNumber', 'DenseMatrix', 'SparseMatrix', 'cos', 'sin'];
14
+ var createRotationMatrix = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
15
+ var typed = _ref.typed,
16
+ config = _ref.config,
17
+ multiplyScalar = _ref.multiplyScalar,
18
+ addScalar = _ref.addScalar,
19
+ unaryMinus = _ref.unaryMinus,
20
+ norm = _ref.norm,
21
+ BigNumber = _ref.BigNumber,
22
+ matrix = _ref.matrix,
23
+ DenseMatrix = _ref.DenseMatrix,
24
+ SparseMatrix = _ref.SparseMatrix,
25
+ cos = _ref.cos,
26
+ sin = _ref.sin;
27
+
28
+ /**
29
+ * Create a 2-dimensional counter-clockwise rotation matrix (2x2) for a given angle (expressed in radians).
30
+ * Create a 2-dimensional counter-clockwise rotation matrix (3x3) by a given angle (expressed in radians) around a given axis (1x3).
31
+ *
32
+ * Syntax:
33
+ *
34
+ * math.rotationMatrix(theta)
35
+ * math.rotationMatrix(theta, format)
36
+ * math.rotationMatrix(theta, [v])
37
+ * math.rotationMatrix(theta, [v], format)
38
+ *
39
+ * Examples:
40
+ *
41
+ * math.rotationMatrix(math.pi / 2) // returns [[0, -1], [1, 0]]
42
+ * math.rotationMatrix(math.bignumber(45)) // returns [[ bignumber(1 / sqrt(2)), - bignumber(1 / sqrt(2))], [ bignumber(1 / sqrt(2)), bignumber(1 / sqrt(2))]]
43
+ * math.rotationMatrix(math.complex(1 + i)) // returns [[cos(1 + i), -sin(1 + i)], [sin(1 + i), cos(1 + i)]]
44
+ * math.rotationMatrix(math.unit('1rad')) // returns [[cos(1), -sin(1)], [sin(1), cos(1)]]
45
+ *
46
+ * math.rotationMatrix(math.pi / 2, [0, 1, 0]) // returns [[0, 0, 1], [0, 1, 0], [-1, 0, 0]]
47
+ * math.rotationMatrix(math.pi / 2, matrix([0, 1, 0])) // returns matrix([[0, 0, 1], [0, 1, 0], [-1, 0, 0]])
48
+ *
49
+ *
50
+ * See also:
51
+ *
52
+ * matrix, cos, sin
53
+ *
54
+ *
55
+ * @param {number | BigNumber | Complex | Unit} theta Rotation angle
56
+ * @param {Array | Matrix} [v] Rotation axis
57
+ * @param {string} [format] Result Matrix storage format
58
+ * @return {Array | Matrix} Rotation matrix
59
+ */
60
+ return typed(name, {
61
+ '': function _() {
62
+ return config.matrix === 'Matrix' ? matrix([]) : [];
63
+ },
64
+ string: function string(format) {
65
+ return matrix(format);
66
+ },
67
+ 'number | BigNumber | Complex | Unit': function numberBigNumberComplexUnit(theta) {
68
+ return _rotationMatrix2x2(theta, config.matrix === 'Matrix' ? 'dense' : undefined);
69
+ },
70
+ 'number | BigNumber | Complex | Unit, string': function numberBigNumberComplexUnitString(theta, format) {
71
+ return _rotationMatrix2x2(theta, format);
72
+ },
73
+ 'number | BigNumber | Complex | Unit, Array': function numberBigNumberComplexUnitArray(theta, v) {
74
+ var matrixV = matrix(v);
75
+
76
+ _validateVector(matrixV);
77
+
78
+ return _rotationMatrix3x3(theta, matrixV, config.matrix === 'Matrix' ? 'dense' : undefined);
79
+ },
80
+ 'number | BigNumber | Complex | Unit, Matrix': function numberBigNumberComplexUnitMatrix(theta, v) {
81
+ _validateVector(v);
82
+
83
+ return _rotationMatrix3x3(theta, v, config.matrix === 'Matrix' ? 'dense' : undefined);
84
+ },
85
+ 'number | BigNumber | Complex | Unit, Array, string': function numberBigNumberComplexUnitArrayString(theta, v, format) {
86
+ var matrixV = matrix(v);
87
+
88
+ _validateVector(matrixV);
89
+
90
+ return _rotationMatrix3x3(theta, matrixV, format);
91
+ },
92
+ 'number | BigNumber | Complex | Unit, Matrix, string': function numberBigNumberComplexUnitMatrixString(theta, v, format) {
93
+ _validateVector(v);
94
+
95
+ return _rotationMatrix3x3(theta, v, format);
96
+ }
97
+ });
98
+ /**
99
+ * Returns 2x2 matrix of 2D rotation of angle theta
100
+ *
101
+ * @param {number | BigNumber | Complex | Unit} theta The rotation angle
102
+ * @param {string} format The result Matrix storage format
103
+ * @returns {Matrix}
104
+ * @private
105
+ */
106
+
107
+ function _rotationMatrix2x2(theta, format) {
108
+ var Big = (0, _is.isBigNumber)(theta);
109
+ var minusOne = Big ? new BigNumber(-1) : -1;
110
+ var cosTheta = cos(theta);
111
+ var sinTheta = sin(theta);
112
+ var data = [[cosTheta, multiplyScalar(minusOne, sinTheta)], [sinTheta, cosTheta]];
113
+ return _convertToFormat(data, format);
114
+ }
115
+
116
+ function _validateVector(v) {
117
+ var size = v.size();
118
+
119
+ if (size.length < 1 || size[0] !== 3) {
120
+ throw new RangeError('Vector must be of dimensions 1x3');
121
+ }
122
+ }
123
+
124
+ function _mul(array) {
125
+ return array.reduce(function (p, curr) {
126
+ return multiplyScalar(p, curr);
127
+ });
128
+ }
129
+
130
+ function _convertToFormat(data, format) {
131
+ if (format) {
132
+ if (format === 'sparse') {
133
+ return new SparseMatrix(data);
134
+ }
135
+
136
+ if (format === 'dense') {
137
+ return new DenseMatrix(data);
138
+ }
139
+
140
+ throw new TypeError("Unknown matrix type \"".concat(format, "\""));
141
+ }
142
+
143
+ return data;
144
+ }
145
+ /**
146
+ * Returns a 3x3 matrix of rotation of angle theta around vector v
147
+ *
148
+ * @param {number | BigNumber | Complex | Unit} theta The rotation angle
149
+ * @param {Matrix} v The rotation axis vector
150
+ * @param {string} format The storage format of the resulting matrix
151
+ * @returns {Matrix}
152
+ * @private
153
+ */
154
+
155
+
156
+ function _rotationMatrix3x3(theta, v, format) {
157
+ var normV = norm(v);
158
+
159
+ if (normV === 0) {
160
+ return _convertToFormat([], format);
161
+ }
162
+
163
+ var Big = (0, _is.isBigNumber)(theta) ? BigNumber : null;
164
+ var one = Big ? new Big(1) : 1;
165
+ var minusOne = Big ? new Big(-1) : -1;
166
+ var vx = Big ? new Big(v.get([0]) / normV) : v.get([0]) / normV;
167
+ var vy = Big ? new Big(v.get([1]) / normV) : v.get([1]) / normV;
168
+ var vz = Big ? new Big(v.get([2]) / normV) : v.get([2]) / normV;
169
+ var c = cos(theta);
170
+ var oneMinusC = addScalar(one, unaryMinus(c));
171
+ var s = sin(theta);
172
+ var r11 = addScalar(c, _mul([vx, vx, oneMinusC]));
173
+ var r12 = addScalar(_mul([vx, vy, oneMinusC]), _mul([minusOne, vz, s]));
174
+ var r13 = addScalar(_mul([vx, vz, oneMinusC]), _mul([vy, s]));
175
+ var r21 = addScalar(_mul([vx, vy, oneMinusC]), _mul([vz, s]));
176
+ var r22 = addScalar(c, _mul([vy, vy, oneMinusC]));
177
+ var r23 = addScalar(_mul([vy, vz, oneMinusC]), _mul([minusOne, vx, s]));
178
+ var r31 = addScalar(_mul([vx, vz, oneMinusC]), _mul([minusOne, vy, s]));
179
+ var r32 = addScalar(_mul([vy, vz, oneMinusC]), _mul([vx, s]));
180
+ var r33 = addScalar(c, _mul([vz, vz, oneMinusC]));
181
+ var data = [[r11, r12, r13], [r21, r22, r23], [r31, r32, r33]];
182
+ return _convertToFormat(data, format);
183
+ }
184
+ });
185
+ exports.createRotationMatrix = createRotationMatrix;
@@ -105,6 +105,10 @@ var createSqrtm = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
105
105
  throw new RangeError('Matrix must be square ' + '(size: ' + (0, _string.format)(size) + ')');
106
106
  }
107
107
  }
108
+
109
+ default:
110
+ // Multi dimensional array
111
+ throw new RangeError('Matrix must be at most two dimensional ' + '(size: ' + (0, _string.format)(size) + ')');
108
112
  }
109
113
  }
110
114
  });
@@ -9,10 +9,10 @@ var _factory = require("../../utils/factory");
9
9
 
10
10
  var _is = require("../../utils/is");
11
11
 
12
- var _array = require("../../utils/array");
13
-
14
12
  var _seededRNG = require("./util/seededRNG");
15
13
 
14
+ var _array = require("../../utils/array");
15
+
16
16
  var name = 'pickRandom';
17
17
  var dependencies = ['typed', 'config', '?on'];
18
18
  var createPickRandom = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
@@ -86,16 +86,12 @@ var createPickRandom = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
86
86
  number = 1;
87
87
  }
88
88
 
89
- possibles = possibles.valueOf(); // get Array
89
+ possibles = (0, _array.flatten)(possibles.valueOf()).valueOf(); // get Array
90
90
 
91
91
  if (weights) {
92
92
  weights = weights.valueOf(); // get Array
93
93
  }
94
94
 
95
- if ((0, _array.arraySize)(possibles).length > 1) {
96
- throw new Error('Only one dimensional vectors supported');
97
- }
98
-
99
95
  var totalWeights = 0;
100
96
 
101
97
  if (typeof weights !== 'undefined') {
@@ -109,7 +109,7 @@ var createVariance = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
109
109
  */
110
110
 
111
111
  function _var(array, normalization) {
112
- var sum = 0;
112
+ var sum;
113
113
  var num = 0;
114
114
 
115
115
  if (array.length === 0) {
@@ -119,7 +119,7 @@ var createVariance = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
119
119
 
120
120
  (0, _collection.deepForEach)(array, function (value) {
121
121
  try {
122
- sum = add(sum, value);
122
+ sum = sum === undefined ? value : add(sum, value);
123
123
  num++;
124
124
  } catch (err) {
125
125
  throw (0, _improveErrorMessage.improveErrorMessage)(err, 'variance', value);
@@ -128,10 +128,10 @@ var createVariance = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
128
128
  if (num === 0) throw new Error('Cannot calculate variance of an empty array');
129
129
  var mean = divide(sum, num); // calculate the variance
130
130
 
131
- sum = 0;
131
+ sum = undefined;
132
132
  (0, _collection.deepForEach)(array, function (value) {
133
133
  var diff = subtract(value, mean);
134
- sum = add(sum, multiply(diff, diff));
134
+ sum = sum === undefined ? multiply(diff, diff) : add(sum, multiply(diff, diff));
135
135
  });
136
136
 
137
137
  if (isNaN(sum)) {
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createBaseFormatterFactory = createBaseFormatterFactory;
7
+
8
+ var _factory = require("../../utils/factory");
9
+
10
+ var _number = require("../../utils/number");
11
+
12
+ function baseFormatter(base) {
13
+ var prefixes = {
14
+ 2: '0b',
15
+ 8: '0o',
16
+ 16: '0x'
17
+ };
18
+ var prefix = prefixes[base];
19
+ return function (n) {
20
+ if (n > Math.pow(2, 31) - 1 || n < -Math.pow(2, 31)) {
21
+ throw new Error('Value must be in range [-2^31, 2^31-1]');
22
+ }
23
+
24
+ if (!(0, _number.isInteger)(n)) {
25
+ throw new Error('Value must be an integer');
26
+ }
27
+
28
+ if (n < 0) {
29
+ n = n + Math.pow(2, 32);
30
+ }
31
+
32
+ return "".concat(prefix).concat(n.toString(base));
33
+ };
34
+ }
35
+
36
+ var dependencies = ['typed'];
37
+
38
+ function createBaseFormatterFactory(name, base) {
39
+ return (0, _factory.factory)(name, dependencies, function (_ref) {
40
+ var typed = _ref.typed;
41
+ return typed(name, {
42
+ number: baseFormatter(base)
43
+ });
44
+ });
45
+ }
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createBin = void 0;
7
+
8
+ var _baseUtils = require("./baseUtils");
9
+
10
+ /**
11
+ * Format a number as binary.
12
+ *
13
+ * Syntax:
14
+ *
15
+ * math.bin(value)
16
+ *
17
+ * Examples:
18
+ *
19
+ * //the following outputs "0b10"
20
+ * math.bin(2)
21
+ *
22
+ * See also:
23
+ *
24
+ * oct
25
+ * hex
26
+ *
27
+ * @param {number} value Value to be stringified
28
+ * @return {string} The formatted value
29
+ */
30
+ var createBin = (0, _baseUtils.createBaseFormatterFactory)('bin', 2);
31
+ exports.createBin = createBin;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createHex = void 0;
7
+
8
+ var _baseUtils = require("./baseUtils");
9
+
10
+ /**
11
+ * Format a number as hexadecimal.
12
+ *
13
+ * Syntax:
14
+ *
15
+ * math.hex(value)
16
+ *
17
+ * Examples:
18
+ *
19
+ * //the following outputs "0xF0"
20
+ * math.hex(240)
21
+ *
22
+ * See also:
23
+ *
24
+ * oct
25
+ * bin
26
+ *
27
+ * @param {number} value Value to be stringified
28
+ * @return {string} The formatted value
29
+ */
30
+ var createHex = (0, _baseUtils.createBaseFormatterFactory)('hex', 16);
31
+ exports.createHex = createHex;