mathjs 7.3.0 → 7.6.0

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 (104) hide show
  1. package/HISTORY.md +29 -0
  2. package/dist/math.js +2716 -2222
  3. package/dist/math.min.js +5 -5
  4. package/dist/math.min.map +1 -1
  5. package/docs/datatypes/units.md +21 -0
  6. package/docs/reference/functions/ceil.md +10 -1
  7. package/docs/reference/functions/fix.md +10 -2
  8. package/docs/reference/functions/floor.md +12 -3
  9. package/docs/reference/functions/rotate.md +47 -0
  10. package/docs/reference/functions/rotationMatrix.md +51 -0
  11. package/docs/reference/functions/round.md +6 -2
  12. package/docs/reference/functions.md +2 -0
  13. package/es/entry/dependenciesAny/dependenciesCeil.generated.js +4 -0
  14. package/es/entry/dependenciesAny/dependenciesFix.generated.js +2 -0
  15. package/es/entry/dependenciesAny/dependenciesFloor.generated.js +4 -0
  16. package/es/entry/dependenciesAny/dependenciesRotate.generated.js +14 -0
  17. package/es/entry/dependenciesAny/dependenciesRotationMatrix.generated.js +30 -0
  18. package/es/entry/dependenciesAny.generated.js +2 -0
  19. package/es/entry/impureFunctionsAny.generated.js +55 -53
  20. package/es/entry/pureFunctionsAny.generated.js +230 -206
  21. package/es/expression/embeddedDocs/embeddedDocs.js +4 -0
  22. package/es/expression/embeddedDocs/function/matrix/rotate.js +8 -0
  23. package/es/expression/embeddedDocs/function/matrix/rotationMatrix.js +8 -0
  24. package/es/expression/node/FunctionNode.js +1 -1
  25. package/es/expression/node/Node.js +2 -2
  26. package/es/factoriesAny.js +2 -0
  27. package/es/function/arithmetic/ceil.js +88 -4
  28. package/es/function/arithmetic/fix.js +43 -6
  29. package/es/function/arithmetic/floor.js +90 -6
  30. package/es/function/arithmetic/round.js +6 -2
  31. package/es/function/matrix/rotate.js +78 -0
  32. package/es/function/matrix/rotationMatrix.js +176 -0
  33. package/es/function/matrix/sqrtm.js +4 -0
  34. package/es/function/probability/pickRandom.js +2 -6
  35. package/es/function/special/erf.js +1 -0
  36. package/es/plain/number/constants.js +1 -1
  37. package/es/plain/number/probability.js +1 -0
  38. package/es/type/unit/Unit.js +17 -18
  39. package/es/utils/object.js +3 -1
  40. package/es/version.js +1 -1
  41. package/examples/bignumbers.js +2 -0
  42. package/lib/entry/dependenciesAny/dependenciesCeil.generated.js +6 -0
  43. package/lib/entry/dependenciesAny/dependenciesFix.generated.js +3 -0
  44. package/lib/entry/dependenciesAny/dependenciesFloor.generated.js +6 -0
  45. package/lib/entry/dependenciesAny/dependenciesRotate.generated.js +26 -0
  46. package/lib/entry/dependenciesAny/dependenciesRotationMatrix.generated.js +50 -0
  47. package/lib/entry/dependenciesAny.generated.js +16 -0
  48. package/lib/entry/impureFunctionsAny.generated.js +58 -56
  49. package/lib/entry/mainAny.js +5 -0
  50. package/lib/entry/mainNumber.js +5 -0
  51. package/lib/entry/pureFunctionsAny.generated.js +270 -244
  52. package/lib/expression/embeddedDocs/embeddedDocs.js +6 -0
  53. package/lib/expression/embeddedDocs/function/matrix/rotate.js +15 -0
  54. package/lib/expression/embeddedDocs/function/matrix/rotationMatrix.js +15 -0
  55. package/lib/expression/node/FunctionNode.js +1 -1
  56. package/lib/expression/node/Node.js +2 -2
  57. package/lib/factoriesAny.js +16 -0
  58. package/lib/function/arithmetic/ceil.js +91 -4
  59. package/lib/function/arithmetic/fix.js +44 -6
  60. package/lib/function/arithmetic/floor.js +93 -6
  61. package/lib/function/arithmetic/round.js +6 -2
  62. package/lib/function/matrix/rotate.js +88 -0
  63. package/lib/function/matrix/rotationMatrix.js +186 -0
  64. package/lib/function/matrix/sqrtm.js +4 -0
  65. package/lib/function/probability/pickRandom.js +3 -7
  66. package/lib/function/special/erf.js +1 -0
  67. package/lib/header.js +2 -2
  68. package/lib/plain/bignumber/index.js +1 -0
  69. package/lib/plain/number/constants.js +2 -1
  70. package/lib/plain/number/index.js +9 -0
  71. package/lib/plain/number/probability.js +1 -0
  72. package/lib/type/unit/Unit.js +17 -18
  73. package/lib/utils/object.js +3 -1
  74. package/lib/version.js +1 -1
  75. package/package.json +11 -11
  76. package/src/core/function/import.js +2 -2
  77. package/src/entry/dependenciesAny/dependenciesCeil.generated.js +4 -0
  78. package/src/entry/dependenciesAny/dependenciesFix.generated.js +2 -0
  79. package/src/entry/dependenciesAny/dependenciesFloor.generated.js +4 -0
  80. package/src/entry/dependenciesAny/dependenciesRotate.generated.js +15 -0
  81. package/src/entry/dependenciesAny/dependenciesRotationMatrix.generated.js +31 -0
  82. package/src/entry/dependenciesAny.generated.js +2 -0
  83. package/src/entry/impureFunctionsAny.generated.js +84 -80
  84. package/src/entry/pureFunctionsAny.generated.js +75 -71
  85. package/src/expression/embeddedDocs/embeddedDocs.js +4 -0
  86. package/src/expression/embeddedDocs/function/matrix/rotate.js +19 -0
  87. package/src/expression/embeddedDocs/function/matrix/rotationMatrix.js +19 -0
  88. package/src/expression/node/FunctionNode.js +1 -1
  89. package/src/expression/node/Node.js +2 -1
  90. package/src/factoriesAny.js +2 -0
  91. package/src/function/arithmetic/ceil.js +63 -3
  92. package/src/function/arithmetic/fix.js +45 -6
  93. package/src/function/arithmetic/floor.js +65 -5
  94. package/src/function/arithmetic/round.js +6 -2
  95. package/src/function/matrix/rotate.js +79 -0
  96. package/src/function/matrix/rotationMatrix.js +186 -0
  97. package/src/function/matrix/sqrtm.js +4 -0
  98. package/src/function/probability/pickRandom.js +2 -6
  99. package/src/function/special/erf.js +2 -0
  100. package/src/plain/number/constants.js +1 -1
  101. package/src/plain/number/probability.js +2 -0
  102. package/src/type/unit/Unit.js +18 -21
  103. package/src/utils/object.js +3 -1
  104. package/src/version.js +1 -1
@@ -437,6 +437,10 @@ var _column = require("./function/matrix/column");
437
437
 
438
438
  var _row = require("./function/matrix/row");
439
439
 
440
+ var _rotationMatrix = require("./function/matrix/rotationMatrix");
441
+
442
+ var _rotate = require("./function/matrix/rotate");
443
+
440
444
  var embeddedDocs = {
441
445
  // construction functions
442
446
  bignumber: _bignumber.bignumberDocs,
@@ -780,6 +784,8 @@ var embeddedDocs = {
780
784
  range: _range.rangeDocs,
781
785
  resize: _resize.resizeDocs,
782
786
  reshape: _reshape.reshapeDocs,
787
+ rotate: _rotate.rotateDocs,
788
+ rotationMatrix: _rotationMatrix.rotationMatrixDocs,
783
789
  row: _row.rowDocs,
784
790
  size: _size.sizeDocs,
785
791
  sort: _sort.sortDocs,
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.rotateDocs = void 0;
7
+ var rotateDocs = {
8
+ name: 'rotate',
9
+ category: 'Matrix',
10
+ syntax: ['rotate(w, theta)', 'rotate(w, theta, v)'],
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: ['rotate([1, 0], math.pi / 2)', 'rotate(matrix([1, 0]), unit("35deg"))', 'rotate([1, 0, 0], unit("90deg"), [0, 0, 1])', 'rotate(matrix([1, 0, 0]), unit("90deg"), matrix([0, 0, 1]))'],
13
+ seealso: ['matrix', 'rotationMatrix']
14
+ };
15
+ exports.rotateDocs = rotateDocs;
@@ -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;
@@ -303,7 +303,7 @@ var createFunctionNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies
303
303
  var latex = ''; // Match everything of the form ${identifier} or ${identifier[2]} or $$
304
304
  // while submatching identifier and 2 (in the second case)
305
305
 
306
- var regex = new RegExp('\\$(?:\\{([a-z_][a-z_0-9]*)(?:\\[([0-9]+)\\])?\\}|\\$)', 'ig');
306
+ var regex = /\$(?:\{([a-z_][a-z_0-9]*)(?:\[([0-9]+)\])?\}|\$)/gi;
307
307
  var inputPos = 0; // position in the input string
308
308
 
309
309
  var match;
@@ -134,8 +134,8 @@ var createNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
134
134
 
135
135
  Node.prototype.traverse = function (callback) {
136
136
  // execute callback for itself
137
- callback(this, null, null); // eslint-disable-line standard/no-callback-literal
138
- // recursively traverse over all childs of a node
137
+ // eslint-disable-next-line
138
+ callback(this, null, null); // recursively traverse over all childs of a node
139
139
 
140
140
  function _traverse(node, callback) {
141
141
  node.forEach(function (child, path, parent) {
@@ -483,6 +483,18 @@ Object.defineProperty(exports, "createResize", {
483
483
  return _resize.createResize;
484
484
  }
485
485
  });
486
+ Object.defineProperty(exports, "createRotate", {
487
+ enumerable: true,
488
+ get: function get() {
489
+ return _rotate.createRotate;
490
+ }
491
+ });
492
+ Object.defineProperty(exports, "createRotationMatrix", {
493
+ enumerable: true,
494
+ get: function get() {
495
+ return _rotationMatrix.createRotationMatrix;
496
+ }
497
+ });
486
498
  Object.defineProperty(exports, "createRow", {
487
499
  enumerable: true,
488
500
  get: function get() {
@@ -2126,6 +2138,10 @@ var _reshape = require("./function/matrix/reshape");
2126
2138
 
2127
2139
  var _resize = require("./function/matrix/resize");
2128
2140
 
2141
+ var _rotate = require("./function/matrix/rotate");
2142
+
2143
+ var _rotationMatrix = require("./function/matrix/rotationMatrix");
2144
+
2129
2145
  var _row = require("./function/matrix/row");
2130
2146
 
2131
2147
  var _size = require("./function/matrix/size");
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.createCeil = void 0;
7
7
 
8
+ var _decimal = require("decimal.js");
9
+
8
10
  var _factory = require("../../utils/factory");
9
11
 
10
12
  var _collection = require("../../utils/collection");
@@ -15,13 +17,37 @@ var _nearlyEqual = require("../../utils/bignumber/nearlyEqual");
15
17
 
16
18
  var _number2 = require("../../plain/number");
17
19
 
20
+ var _algorithm = require("../../type/matrix/utils/algorithm11");
21
+
22
+ var _algorithm2 = require("../../type/matrix/utils/algorithm14");
23
+
24
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
25
+
26
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
27
+
28
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
29
+
30
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
31
+
32
+ function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
33
+
34
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
35
+
18
36
  var name = 'ceil';
19
- var dependencies = ['typed', 'config', 'round'];
37
+ var dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar'];
20
38
  var createCeil = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
21
39
  var typed = _ref.typed,
22
40
  config = _ref.config,
23
- round = _ref.round;
24
-
41
+ round = _ref.round,
42
+ matrix = _ref.matrix,
43
+ equalScalar = _ref.equalScalar;
44
+ var algorithm11 = (0, _algorithm.createAlgorithm11)({
45
+ typed: typed,
46
+ equalScalar: equalScalar
47
+ });
48
+ var algorithm14 = (0, _algorithm2.createAlgorithm14)({
49
+ typed: typed
50
+ });
25
51
  /**
26
52
  * Round a value towards plus infinity
27
53
  * If `x` is complex, both real and imaginary part are rounded towards plus infinity.
@@ -30,6 +56,7 @@ var createCeil = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
30
56
  * Syntax:
31
57
  *
32
58
  * math.ceil(x)
59
+ * math.ceil(x, n)
33
60
  *
34
61
  * Examples:
35
62
  *
@@ -38,18 +65,27 @@ var createCeil = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
38
65
  * math.ceil(-4.2) // returns number -4
39
66
  * math.ceil(-4.7) // returns number -4
40
67
  *
41
- * const c = math.complex(3.2, -2.7)
68
+ * math.ceil(3.212, 2) // returns number 3.22
69
+ * math.ceil(3.288, 2) // returns number 3.29
70
+ * math.ceil(-4.212, 2) // returns number -4.21
71
+ * math.ceil(-4.782, 2) // returns number -4.78
72
+ *
73
+ * const c = math.complex(3.24, -2.71)
42
74
  * math.ceil(c) // returns Complex 4 - 2i
75
+ * math.ceil(c, 1) // returns Complex 3.3 - 2.7i
43
76
  *
44
77
  * math.ceil([3.2, 3.8, -4.7]) // returns Array [4, 4, -4]
78
+ * math.ceil([3.21, 3.82, -4.71], 1) // returns Array [3.3, 3.9, -4.7]
45
79
  *
46
80
  * See also:
47
81
  *
48
82
  * floor, fix, round
49
83
  *
50
84
  * @param {number | BigNumber | Fraction | Complex | Array | Matrix} x Number to be rounded
85
+ * @param {number | BigNumber | Array} [n=0] Number of decimals
51
86
  * @return {number | BigNumber | Fraction | Complex | Array | Matrix} Rounded value
52
87
  */
88
+
53
89
  return typed('ceil', {
54
90
  number: function number(x) {
55
91
  if ((0, _number.nearlyEqual)(x, round(x), config.epsilon)) {
@@ -58,9 +94,32 @@ var createCeil = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
58
94
  return (0, _number2.ceilNumber)(x);
59
95
  }
60
96
  },
97
+ 'number, number': function numberNumber(x, n) {
98
+ if ((0, _number.nearlyEqual)(x, round(x, n), config.epsilon)) {
99
+ return round(x, n);
100
+ } else {
101
+ var _$split = "".concat(x, "e").split('e'),
102
+ _$split2 = _slicedToArray(_$split, 2),
103
+ number = _$split2[0],
104
+ exponent = _$split2[1];
105
+
106
+ var result = Math.ceil(Number("".concat(number, "e").concat(Number(exponent) + n)));
107
+
108
+ var _$split3 = "".concat(result, "e").split('e');
109
+
110
+ var _$split4 = _slicedToArray(_$split3, 2);
111
+
112
+ number = _$split4[0];
113
+ exponent = _$split4[1];
114
+ return Number("".concat(number, "e").concat(Number(exponent) - n));
115
+ }
116
+ },
61
117
  Complex: function Complex(x) {
62
118
  return x.ceil();
63
119
  },
120
+ 'Complex, number': function ComplexNumber(x, n) {
121
+ return x.ceil(n);
122
+ },
64
123
  BigNumber: function BigNumber(x) {
65
124
  if ((0, _nearlyEqual.nearlyEqual)(x, round(x), config.epsilon)) {
66
125
  return round(x);
@@ -68,12 +127,40 @@ var createCeil = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
68
127
  return x.ceil();
69
128
  }
70
129
  },
130
+ 'BigNumber, BigNumber': function BigNumberBigNumber(x, n) {
131
+ if ((0, _nearlyEqual.nearlyEqual)(x, round(x, n), config.epsilon)) {
132
+ return round(x, n);
133
+ } else {
134
+ return x.toDecimalPlaces(n.toNumber(), _decimal.Decimal.ROUND_CEIL);
135
+ }
136
+ },
71
137
  Fraction: function Fraction(x) {
72
138
  return x.ceil();
73
139
  },
140
+ 'Fraction, number': function FractionNumber(x, n) {
141
+ return x.ceil(n);
142
+ },
74
143
  'Array | Matrix': function ArrayMatrix(x) {
75
144
  // deep map collection, skip zeros since ceil(0) = 0
76
145
  return (0, _collection.deepMap)(x, this, true);
146
+ },
147
+ 'Array | Matrix, number': function ArrayMatrixNumber(x, n) {
148
+ var _this = this;
149
+
150
+ // deep map collection, skip zeros since ceil(0) = 0
151
+ return (0, _collection.deepMap)(x, function (i) {
152
+ return _this(i, n);
153
+ }, true);
154
+ },
155
+ 'SparseMatrix, number | BigNumber': function SparseMatrixNumberBigNumber(x, y) {
156
+ return algorithm11(x, y, this, false);
157
+ },
158
+ 'DenseMatrix, number | BigNumber': function DenseMatrixNumberBigNumber(x, y) {
159
+ return algorithm14(x, y, this, false);
160
+ },
161
+ 'number | Complex | BigNumber, Array': function numberComplexBigNumberArray(x, y) {
162
+ // use matrix implementation
163
+ return algorithm14(matrix(y), x, this, true).valueOf();
77
164
  }
78
165
  });
79
166
  });
@@ -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
  });
@@ -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,88 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createRotate = void 0;
7
+
8
+ var _factory = require("../../utils/factory");
9
+
10
+ var _array = require("../../utils/array");
11
+
12
+ var name = 'rotate';
13
+ var dependencies = ['typed', 'multiply', 'rotationMatrix'];
14
+ var createRotate = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
15
+ var typed = _ref.typed,
16
+ multiply = _ref.multiply,
17
+ rotationMatrix = _ref.rotationMatrix;
18
+
19
+ /**
20
+ * Rotate a vector of size 1x2 counter-clockwise by a given angle
21
+ * Rotate a vector of size 1x3 counter-clockwise by a given angle around the given axis
22
+ *
23
+ * Syntax:
24
+ *
25
+ * math.rotate(w, theta)
26
+ * math.rotate(w, theta, v)
27
+ *
28
+ * Examples:
29
+ *
30
+ * math.rotate([11, 12], math.pi / 2) // returns matrix([-12, 11])
31
+ * math.rotate(matrix([11, 12]), math.pi / 2) // returns matrix([-12, 11])
32
+ *
33
+ * math.rotate([1, 0, 0], unit('90deg'), [0, 0, 1]) // returns matrix([0, 1, 0])
34
+ * math.rotate(matrix([1, 0, 0]), unit('90deg'), [0, 0, 1]) // returns matrix([0, 1, 0])
35
+ *
36
+ * math.rotate([1, 0], math.complex(1 + i)) // returns matrix([cos(1 + i) - sin(1 + i), sin(1 + i) + cos(1 + i)])
37
+ *
38
+ * See also:
39
+ *
40
+ * matrix, rotationMatrix
41
+ *
42
+ * @param {Array | Matrix} w Vector to rotate
43
+ * @param {number | BigNumber | Complex | Unit} theta Rotation angle
44
+ * @param {Array | Matrix} [v] Rotation axis
45
+ * @return {Array | Matrix} Multiplication of the rotation matrix and w
46
+ */
47
+ return typed(name, {
48
+ 'Array , number | BigNumber | Complex | Unit': function ArrayNumberBigNumberComplexUnit(w, theta) {
49
+ _validateSize(w, 2);
50
+
51
+ var matrixRes = multiply(rotationMatrix(theta), w);
52
+ return matrixRes.toArray();
53
+ },
54
+ 'Matrix , number | BigNumber | Complex | Unit': function MatrixNumberBigNumberComplexUnit(w, theta) {
55
+ _validateSize(w, 2);
56
+
57
+ return multiply(rotationMatrix(theta), w);
58
+ },
59
+ 'Array, number | BigNumber | Complex | Unit, Array | Matrix': function ArrayNumberBigNumberComplexUnitArrayMatrix(w, theta, v) {
60
+ _validateSize(w, 3);
61
+
62
+ var matrixRes = multiply(rotationMatrix(theta, v), w);
63
+ return matrixRes;
64
+ },
65
+ 'Matrix, number | BigNumber | Complex | Unit, Array | Matrix': function MatrixNumberBigNumberComplexUnitArrayMatrix(w, theta, v) {
66
+ _validateSize(w, 3);
67
+
68
+ return multiply(rotationMatrix(theta, v), w);
69
+ }
70
+ });
71
+
72
+ function _validateSize(v, expectedSize) {
73
+ var actualSize = Array.isArray(v) ? (0, _array.arraySize)(v) : v.size();
74
+
75
+ if (actualSize.length > 2) {
76
+ throw new RangeError("Vector must be of dimensions 1x".concat(expectedSize));
77
+ }
78
+
79
+ if (actualSize.length === 2 && actualSize[1] !== 1) {
80
+ throw new RangeError("Vector must be of dimensions 1x".concat(expectedSize));
81
+ }
82
+
83
+ if (actualSize[0] !== expectedSize) {
84
+ throw new RangeError("Vector must be of dimensions 1x".concat(expectedSize));
85
+ }
86
+ }
87
+ });
88
+ exports.createRotate = createRotate;