mathjs 10.5.0 → 10.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. package/HISTORY.md +12 -0
  2. package/docs/datatypes/matrices.md +17 -0
  3. package/docs/expressions/syntax.md +4 -1
  4. package/docs/reference/functions/fix.md +1 -0
  5. package/docs/reference/functions/floor.md +4 -0
  6. package/docs/reference/functions/resolve.md +2 -2
  7. package/docs/reference/functions/simplifyConstant.md +52 -0
  8. package/lib/browser/math.js +5 -5
  9. package/lib/browser/math.js.map +1 -1
  10. package/lib/cjs/entry/dependenciesAny/dependenciesCeil.generated.js +6 -0
  11. package/lib/cjs/entry/dependenciesAny/dependenciesFix.generated.js +9 -0
  12. package/lib/cjs/entry/dependenciesAny/dependenciesFloor.generated.js +6 -0
  13. package/lib/cjs/entry/dependenciesAny/dependenciesIndexNode.generated.js +0 -3
  14. package/lib/cjs/entry/dependenciesNumber/dependenciesCeil.generated.js +3 -0
  15. package/lib/cjs/entry/dependenciesNumber/dependenciesFix.generated.js +6 -0
  16. package/lib/cjs/entry/dependenciesNumber/dependenciesFloor.generated.js +3 -0
  17. package/lib/cjs/entry/dependenciesNumber/dependenciesIndexNode.generated.js +0 -3
  18. package/lib/cjs/entry/impureFunctionsAny.generated.js +0 -1
  19. package/lib/cjs/entry/impureFunctionsNumber.generated.js +6 -7
  20. package/lib/cjs/entry/pureFunctionsAny.generated.js +10 -3
  21. package/lib/cjs/entry/pureFunctionsNumber.generated.js +21 -15
  22. package/lib/cjs/expression/node/IndexNode.js +26 -61
  23. package/lib/cjs/factoriesNumber.js +29 -24
  24. package/lib/cjs/function/algebra/resolve.js +3 -3
  25. package/lib/cjs/function/arithmetic/ceil.js +75 -39
  26. package/lib/cjs/function/arithmetic/fix.js +54 -16
  27. package/lib/cjs/function/arithmetic/floor.js +79 -37
  28. package/lib/cjs/function/arithmetic/nthRoot.js +1 -3
  29. package/lib/cjs/function/arithmetic/round.js +27 -47
  30. package/lib/cjs/header.js +2 -2
  31. package/lib/cjs/plain/number/arithmetic.js +9 -27
  32. package/lib/cjs/type/matrix/function/sparse.js +6 -0
  33. package/lib/cjs/utils/lruQueue.js +1 -3
  34. package/lib/cjs/utils/object.js +3 -1
  35. package/lib/cjs/version.js +1 -1
  36. package/lib/esm/entry/dependenciesAny/dependenciesCeil.generated.js +4 -0
  37. package/lib/esm/entry/dependenciesAny/dependenciesFix.generated.js +6 -0
  38. package/lib/esm/entry/dependenciesAny/dependenciesFloor.generated.js +4 -0
  39. package/lib/esm/entry/dependenciesAny/dependenciesIndexNode.generated.js +0 -2
  40. package/lib/esm/entry/dependenciesNumber/dependenciesCeil.generated.js +2 -0
  41. package/lib/esm/entry/dependenciesNumber/dependenciesFix.generated.js +4 -0
  42. package/lib/esm/entry/dependenciesNumber/dependenciesFloor.generated.js +2 -0
  43. package/lib/esm/entry/dependenciesNumber/dependenciesIndexNode.generated.js +0 -2
  44. package/lib/esm/entry/impureFunctionsAny.generated.js +0 -1
  45. package/lib/esm/entry/impureFunctionsNumber.generated.js +7 -8
  46. package/lib/esm/entry/pureFunctionsAny.generated.js +10 -3
  47. package/lib/esm/entry/pureFunctionsNumber.generated.js +16 -10
  48. package/lib/esm/expression/node/BlockNode.js +3 -3
  49. package/lib/esm/expression/node/IndexNode.js +22 -59
  50. package/lib/esm/expression/parse.js +5 -5
  51. package/lib/esm/factoriesNumber.js +6 -6
  52. package/lib/esm/function/algebra/decomposition/qr.js +2 -2
  53. package/lib/esm/function/algebra/resolve.js +3 -3
  54. package/lib/esm/function/algebra/solver/utils/solveValidation.js +5 -5
  55. package/lib/esm/function/algebra/sparse/csChol.js +2 -2
  56. package/lib/esm/function/algebra/sparse/csLeaf.js +2 -2
  57. package/lib/esm/function/algebra/sparse/csLu.js +3 -3
  58. package/lib/esm/function/arithmetic/ceil.js +61 -24
  59. package/lib/esm/function/arithmetic/fix.js +51 -13
  60. package/lib/esm/function/arithmetic/floor.js +65 -23
  61. package/lib/esm/function/arithmetic/nthRoot.js +1 -3
  62. package/lib/esm/function/arithmetic/nthRoots.js +1 -1
  63. package/lib/esm/function/arithmetic/round.js +25 -43
  64. package/lib/esm/function/matrix/expm.js +2 -2
  65. package/lib/esm/function/probability/gamma.js +1 -1
  66. package/lib/esm/function/string/bin.js +1 -1
  67. package/lib/esm/function/string/hex.js +1 -1
  68. package/lib/esm/function/string/oct.js +1 -1
  69. package/lib/esm/plain/number/arithmetic.js +9 -17
  70. package/lib/esm/type/complex/Complex.js +2 -2
  71. package/lib/esm/type/matrix/DenseMatrix.js +2 -2
  72. package/lib/esm/type/matrix/FibonacciHeap.js +2 -2
  73. package/lib/esm/type/matrix/SparseMatrix.js +13 -13
  74. package/lib/esm/type/matrix/function/sparse.js +6 -0
  75. package/lib/esm/type/unit/Unit.js +7 -7
  76. package/lib/esm/utils/lruQueue.js +1 -2
  77. package/lib/esm/utils/number.js +3 -3
  78. package/lib/esm/utils/object.js +3 -1
  79. package/lib/esm/version.js +1 -1
  80. package/package.json +14 -3
  81. package/types/index.d.ts +1794 -1372
  82. package/types/index.ts +697 -266
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.createCeil = void 0;
8
+ exports.createCeilNumber = exports.createCeil = void 0;
9
9
 
10
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
11
 
@@ -19,27 +19,73 @@ var _number = require("../../utils/number.js");
19
19
 
20
20
  var _nearlyEqual = require("../../utils/bignumber/nearlyEqual.js");
21
21
 
22
- var _index = require("../../plain/number/index.js");
23
-
24
22
  var _algorithm = require("../../type/matrix/utils/algorithm11.js");
25
23
 
26
- var _algorithm2 = require("../../type/matrix/utils/algorithm14.js");
24
+ var _algorithm2 = require("../../type/matrix/utils/algorithm12.js");
25
+
26
+ var _algorithm3 = require("../../type/matrix/utils/algorithm14.js");
27
27
 
28
28
  var name = 'ceil';
29
- var dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar'];
30
- var createCeil = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
29
+ var dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar', 'zeros', 'DenseMatrix'];
30
+ var createCeilNumber = /* #__PURE__ */(0, _factory.factory)(name, ['typed', 'config', 'round'], function (_ref) {
31
31
  var typed = _ref.typed,
32
32
  config = _ref.config,
33
- round = _ref.round,
34
- matrix = _ref.matrix,
35
- equalScalar = _ref.equalScalar;
33
+ round = _ref.round;
34
+ return typed(name, {
35
+ number: function number(x) {
36
+ if ((0, _number.nearlyEqual)(x, round(x), config.epsilon)) {
37
+ return round(x);
38
+ } else {
39
+ return Math.ceil(x);
40
+ }
41
+ },
42
+ 'number, number': function numberNumber(x, n) {
43
+ if ((0, _number.nearlyEqual)(x, round(x, n), config.epsilon)) {
44
+ return round(x, n);
45
+ } else {
46
+ var _$split = "".concat(x, "e").split('e'),
47
+ _$split2 = (0, _slicedToArray2.default)(_$split, 2),
48
+ number = _$split2[0],
49
+ exponent = _$split2[1];
50
+
51
+ var result = Math.ceil(Number("".concat(number, "e").concat(Number(exponent) + n)));
52
+
53
+ var _$split3 = "".concat(result, "e").split('e');
54
+
55
+ var _$split4 = (0, _slicedToArray2.default)(_$split3, 2);
56
+
57
+ number = _$split4[0];
58
+ exponent = _$split4[1];
59
+ return Number("".concat(number, "e").concat(Number(exponent) - n));
60
+ }
61
+ }
62
+ });
63
+ });
64
+ exports.createCeilNumber = createCeilNumber;
65
+ var createCeil = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref2) {
66
+ var typed = _ref2.typed,
67
+ config = _ref2.config,
68
+ round = _ref2.round,
69
+ matrix = _ref2.matrix,
70
+ equalScalar = _ref2.equalScalar,
71
+ zeros = _ref2.zeros,
72
+ DenseMatrix = _ref2.DenseMatrix;
36
73
  var algorithm11 = (0, _algorithm.createAlgorithm11)({
37
74
  typed: typed,
38
75
  equalScalar: equalScalar
39
76
  });
40
- var algorithm14 = (0, _algorithm2.createAlgorithm14)({
77
+ var algorithm12 = (0, _algorithm2.createAlgorithm12)({
78
+ typed: typed,
79
+ DenseMatrix: DenseMatrix
80
+ });
81
+ var algorithm14 = (0, _algorithm3.createAlgorithm14)({
41
82
  typed: typed
42
83
  });
84
+ var ceilNumber = createCeilNumber({
85
+ typed: typed,
86
+ config: config,
87
+ round: round
88
+ });
43
89
  /**
44
90
  * Round a value towards plus infinity
45
91
  * If `x` is complex, both real and imaginary part are rounded towards plus infinity.
@@ -79,39 +125,17 @@ var createCeil = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
79
125
  */
80
126
 
81
127
  return typed('ceil', {
82
- number: function number(x) {
83
- if ((0, _number.nearlyEqual)(x, round(x), config.epsilon)) {
84
- return round(x);
85
- } else {
86
- return (0, _index.ceilNumber)(x);
87
- }
88
- },
89
- 'number, number': function numberNumber(x, n) {
90
- if ((0, _number.nearlyEqual)(x, round(x, n), config.epsilon)) {
91
- return round(x, n);
92
- } else {
93
- var _$split = "".concat(x, "e").split('e'),
94
- _$split2 = (0, _slicedToArray2.default)(_$split, 2),
95
- number = _$split2[0],
96
- exponent = _$split2[1];
97
-
98
- var result = Math.ceil(Number("".concat(number, "e").concat(Number(exponent) + n)));
99
-
100
- var _$split3 = "".concat(result, "e").split('e');
101
-
102
- var _$split4 = (0, _slicedToArray2.default)(_$split3, 2);
103
-
104
- number = _$split4[0];
105
- exponent = _$split4[1];
106
- return Number("".concat(number, "e").concat(Number(exponent) - n));
107
- }
108
- },
128
+ number: ceilNumber.signatures.number,
129
+ 'number,number': ceilNumber.signatures['number,number'],
109
130
  Complex: function Complex(x) {
110
131
  return x.ceil();
111
132
  },
112
133
  'Complex, number': function ComplexNumber(x, n) {
113
134
  return x.ceil(n);
114
135
  },
136
+ 'Complex, BigNumber': function ComplexBigNumber(x, n) {
137
+ return x.ceil(n.toNumber());
138
+ },
115
139
  BigNumber: function BigNumber(x) {
116
140
  if ((0, _nearlyEqual.nearlyEqual)(x, round(x), config.epsilon)) {
117
141
  return round(x);
@@ -132,11 +156,14 @@ var createCeil = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
132
156
  'Fraction, number': function FractionNumber(x, n) {
133
157
  return x.ceil(n);
134
158
  },
159
+ 'Fraction, BigNumber': function FractionBigNumber(x, n) {
160
+ return x.ceil(n.toNumber());
161
+ },
135
162
  'Array | Matrix': function ArrayMatrix(x) {
136
163
  // deep map collection, skip zeros since ceil(0) = 0
137
164
  return (0, _collection.deepMap)(x, this, true);
138
165
  },
139
- 'Array | Matrix, number': function ArrayMatrixNumber(x, n) {
166
+ 'Array, number | BigNumber': function ArrayNumberBigNumber(x, n) {
140
167
  var _this = this;
141
168
 
142
169
  // deep map collection, skip zeros since ceil(0) = 0
@@ -150,9 +177,18 @@ var createCeil = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
150
177
  'DenseMatrix, number | BigNumber': function DenseMatrixNumberBigNumber(x, y) {
151
178
  return algorithm14(x, y, this, false);
152
179
  },
153
- 'number | Complex | BigNumber, Array': function numberComplexBigNumberArray(x, y) {
180
+ 'number | Complex | Fraction | BigNumber, Array': function numberComplexFractionBigNumberArray(x, y) {
154
181
  // use matrix implementation
155
182
  return algorithm14(matrix(y), x, this, true).valueOf();
183
+ },
184
+ 'number | Complex | Fraction | BigNumber, Matrix': function numberComplexFractionBigNumberMatrix(x, y) {
185
+ if (equalScalar(x, 0)) return zeros(y.size(), y.storage());
186
+
187
+ if (y.storage() === 'dense') {
188
+ return algorithm14(y, x, this, true);
189
+ }
190
+
191
+ return algorithm12(y, x, this, true);
156
192
  }
157
193
  });
158
194
  });
@@ -3,25 +3,53 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.createFix = void 0;
6
+ exports.createFixNumber = exports.createFix = void 0;
7
7
 
8
8
  var _factory = require("../../utils/factory.js");
9
9
 
10
10
  var _collection = require("../../utils/collection.js");
11
11
 
12
- var _algorithm = require("../../type/matrix/utils/algorithm14.js");
12
+ var _algorithm = require("../../type/matrix/utils/algorithm12.js");
13
+
14
+ var _algorithm2 = require("../../type/matrix/utils/algorithm14.js");
13
15
 
14
16
  var name = 'fix';
15
- var dependencies = ['typed', 'Complex', 'matrix', 'ceil', 'floor'];
16
- var createFix = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
17
+ var dependencies = ['typed', 'Complex', 'matrix', 'ceil', 'floor', 'equalScalar', 'zeros', 'DenseMatrix'];
18
+ var createFixNumber = /* #__PURE__ */(0, _factory.factory)(name, ['typed', 'ceil', 'floor'], function (_ref) {
17
19
  var typed = _ref.typed,
18
- _Complex = _ref.Complex,
19
- matrix = _ref.matrix,
20
20
  ceil = _ref.ceil,
21
21
  floor = _ref.floor;
22
- var algorithm14 = (0, _algorithm.createAlgorithm14)({
22
+ return typed(name, {
23
+ number: function number(x) {
24
+ return x > 0 ? floor(x) : ceil(x);
25
+ },
26
+ 'number, number': function numberNumber(x, n) {
27
+ return x > 0 ? floor(x, n) : ceil(x, n);
28
+ }
29
+ });
30
+ });
31
+ exports.createFixNumber = createFixNumber;
32
+ var createFix = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref2) {
33
+ var typed = _ref2.typed,
34
+ _Complex = _ref2.Complex,
35
+ matrix = _ref2.matrix,
36
+ ceil = _ref2.ceil,
37
+ floor = _ref2.floor,
38
+ equalScalar = _ref2.equalScalar,
39
+ zeros = _ref2.zeros,
40
+ DenseMatrix = _ref2.DenseMatrix;
41
+ var algorithm12 = (0, _algorithm.createAlgorithm12)({
42
+ typed: typed,
43
+ DenseMatrix: DenseMatrix
44
+ });
45
+ var algorithm14 = (0, _algorithm2.createAlgorithm14)({
23
46
  typed: typed
24
47
  });
48
+ var fixNumber = createFixNumber({
49
+ typed: typed,
50
+ ceil: ceil,
51
+ floor: floor
52
+ });
25
53
  /**
26
54
  * Round a value towards zero.
27
55
  * For matrices, the function is evaluated element wise.
@@ -29,6 +57,7 @@ var createFix = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functio
29
57
  * Syntax:
30
58
  *
31
59
  * math.fix(x)
60
+ * math.fix(x,n)
32
61
  *
33
62
  * Examples:
34
63
  *
@@ -59,16 +88,16 @@ var createFix = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functio
59
88
  */
60
89
 
61
90
  return typed('fix', {
62
- number: function number(x) {
63
- return x > 0 ? floor(x) : ceil(x);
64
- },
65
- 'number, number | BigNumber': function numberNumberBigNumber(x, n) {
66
- return x > 0 ? floor(x, n) : ceil(x, n);
67
- },
91
+ number: fixNumber.signatures.number,
92
+ 'number, number | BigNumber': fixNumber.signatures['number,number'],
68
93
  Complex: function Complex(x) {
69
94
  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));
70
95
  },
71
- 'Complex, number | BigNumber': function ComplexNumberBigNumber(x, n) {
96
+ 'Complex, number': function ComplexNumber(x, n) {
97
+ 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));
98
+ },
99
+ 'Complex, BigNumber': function ComplexBigNumber(x, bn) {
100
+ var n = bn.toNumber();
72
101
  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
102
  },
74
103
  BigNumber: function BigNumber(x) {
@@ -81,7 +110,7 @@ var createFix = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functio
81
110
  return x.s < 0 ? x.ceil() : x.floor();
82
111
  },
83
112
  'Fraction, number | BigNumber': function FractionNumberBigNumber(x, n) {
84
- return x.s < 0 ? x.ceil(n) : x.floor(n);
113
+ return x.s < 0 ? ceil(x, n) : floor(x, n);
85
114
  },
86
115
  'Array | Matrix': function ArrayMatrix(x) {
87
116
  // deep map collection, skip zeros since fix(0) = 0
@@ -95,9 +124,18 @@ var createFix = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functio
95
124
  return _this(i, n);
96
125
  }, true);
97
126
  },
98
- 'number | Complex | BigNumber, Array': function numberComplexBigNumberArray(x, y) {
127
+ 'number | Complex | Fraction | BigNumber, Array': function numberComplexFractionBigNumberArray(x, y) {
99
128
  // use matrix implementation
100
129
  return algorithm14(matrix(y), x, this, true).valueOf();
130
+ },
131
+ 'number | Complex | Fraction | BigNumber, Matrix': function numberComplexFractionBigNumberMatrix(x, y) {
132
+ if (equalScalar(x, 0)) return zeros(y.size(), y.storage());
133
+
134
+ if (y.storage() === 'dense') {
135
+ return algorithm14(y, x, this, true);
136
+ }
137
+
138
+ return algorithm12(y, x, this, true);
101
139
  }
102
140
  });
103
141
  });
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.createFloor = void 0;
8
+ exports.createFloorNumber = exports.createFloor = void 0;
9
9
 
10
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
11
 
@@ -21,23 +21,71 @@ var _nearlyEqual = require("../../utils/bignumber/nearlyEqual.js");
21
21
 
22
22
  var _algorithm = require("../../type/matrix/utils/algorithm11.js");
23
23
 
24
- var _algorithm2 = require("../../type/matrix/utils/algorithm14.js");
24
+ var _algorithm2 = require("../../type/matrix/utils/algorithm12.js");
25
+
26
+ var _algorithm3 = require("../../type/matrix/utils/algorithm14.js");
25
27
 
26
28
  var name = 'floor';
27
- var dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar'];
28
- var createFloor = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
29
+ var dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar', 'zeros', 'DenseMatrix'];
30
+ var createFloorNumber = /* #__PURE__ */(0, _factory.factory)(name, ['typed', 'config', 'round'], function (_ref) {
29
31
  var typed = _ref.typed,
30
32
  config = _ref.config,
31
- round = _ref.round,
32
- matrix = _ref.matrix,
33
- equalScalar = _ref.equalScalar;
33
+ round = _ref.round;
34
+ return typed(name, {
35
+ number: function number(x) {
36
+ if ((0, _number.nearlyEqual)(x, round(x), config.epsilon)) {
37
+ return round(x);
38
+ } else {
39
+ return Math.floor(x);
40
+ }
41
+ },
42
+ 'number, number': function numberNumber(x, n) {
43
+ if ((0, _number.nearlyEqual)(x, round(x, n), config.epsilon)) {
44
+ return round(x, n);
45
+ } else {
46
+ var _$split = "".concat(x, "e").split('e'),
47
+ _$split2 = (0, _slicedToArray2.default)(_$split, 2),
48
+ number = _$split2[0],
49
+ exponent = _$split2[1];
50
+
51
+ var result = Math.floor(Number("".concat(number, "e").concat(Number(exponent) + n)));
52
+
53
+ var _$split3 = "".concat(result, "e").split('e');
54
+
55
+ var _$split4 = (0, _slicedToArray2.default)(_$split3, 2);
56
+
57
+ number = _$split4[0];
58
+ exponent = _$split4[1];
59
+ return Number("".concat(number, "e").concat(Number(exponent) - n));
60
+ }
61
+ }
62
+ });
63
+ });
64
+ exports.createFloorNumber = createFloorNumber;
65
+ var createFloor = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref2) {
66
+ var typed = _ref2.typed,
67
+ config = _ref2.config,
68
+ round = _ref2.round,
69
+ matrix = _ref2.matrix,
70
+ equalScalar = _ref2.equalScalar,
71
+ zeros = _ref2.zeros,
72
+ DenseMatrix = _ref2.DenseMatrix;
34
73
  var algorithm11 = (0, _algorithm.createAlgorithm11)({
35
74
  typed: typed,
36
75
  equalScalar: equalScalar
37
76
  });
38
- var algorithm14 = (0, _algorithm2.createAlgorithm14)({
77
+ var algorithm12 = (0, _algorithm2.createAlgorithm12)({
78
+ typed: typed,
79
+ DenseMatrix: DenseMatrix
80
+ });
81
+ var algorithm14 = (0, _algorithm3.createAlgorithm14)({
39
82
  typed: typed
40
83
  });
84
+ var floorNumber = createFloorNumber({
85
+ typed: typed,
86
+ config: config,
87
+ round: round
88
+ });
41
89
  /**
42
90
  * Round a value towards minus infinity.
43
91
  * For matrices, the function is evaluated element wise.
@@ -66,6 +114,10 @@ var createFloor = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
66
114
  * math.floor([3.2, 3.8, -4.7]) // returns Array [3, 3, -5]
67
115
  * math.floor([3.21, 3.82, -4.71], 1) // returns Array [3.2, 3.8, -4.8]
68
116
  *
117
+ * math.floor(math.tau, [2, 3]) // returns Array [6.28, 6.283]
118
+ *
119
+ * // Note that floor(array, array) currently not implemented.
120
+ *
69
121
  * See also:
70
122
  *
71
123
  * ceil, fix, round
@@ -76,39 +128,17 @@ var createFloor = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
76
128
  */
77
129
 
78
130
  return typed('floor', {
79
- number: function number(x) {
80
- if ((0, _number.nearlyEqual)(x, round(x), config.epsilon)) {
81
- return round(x);
82
- } else {
83
- return Math.floor(x);
84
- }
85
- },
86
- 'number, number': function numberNumber(x, n) {
87
- if ((0, _number.nearlyEqual)(x, round(x, n), config.epsilon)) {
88
- return round(x, n);
89
- } else {
90
- var _$split = "".concat(x, "e").split('e'),
91
- _$split2 = (0, _slicedToArray2.default)(_$split, 2),
92
- number = _$split2[0],
93
- exponent = _$split2[1];
94
-
95
- var result = Math.floor(Number("".concat(number, "e").concat(Number(exponent) + n)));
96
-
97
- var _$split3 = "".concat(result, "e").split('e');
98
-
99
- var _$split4 = (0, _slicedToArray2.default)(_$split3, 2);
100
-
101
- number = _$split4[0];
102
- exponent = _$split4[1];
103
- return Number("".concat(number, "e").concat(Number(exponent) - n));
104
- }
105
- },
131
+ number: floorNumber.signatures.number,
132
+ 'number,number': floorNumber.signatures['number,number'],
106
133
  Complex: function Complex(x) {
107
134
  return x.floor();
108
135
  },
109
136
  'Complex, number': function ComplexNumber(x, n) {
110
137
  return x.floor(n);
111
138
  },
139
+ 'Complex, BigNumber': function ComplexBigNumber(x, n) {
140
+ return x.floor(n.toNumber());
141
+ },
112
142
  BigNumber: function BigNumber(x) {
113
143
  if ((0, _nearlyEqual.nearlyEqual)(x, round(x), config.epsilon)) {
114
144
  return round(x);
@@ -129,11 +159,14 @@ var createFloor = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
129
159
  'Fraction, number': function FractionNumber(x, n) {
130
160
  return x.floor(n);
131
161
  },
162
+ 'Fraction, BigNumber': function FractionBigNumber(x, n) {
163
+ return x.floor(n.toNumber());
164
+ },
132
165
  'Array | Matrix': function ArrayMatrix(x) {
133
166
  // deep map collection, skip zeros since floor(0) = 0
134
167
  return (0, _collection.deepMap)(x, this, true);
135
168
  },
136
- 'Array | Matrix, number': function ArrayMatrixNumber(x, n) {
169
+ 'Array, number | BigNumber': function ArrayNumberBigNumber(x, n) {
137
170
  var _this = this;
138
171
 
139
172
  // deep map collection, skip zeros since ceil(0) = 0
@@ -147,9 +180,18 @@ var createFloor = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
147
180
  'DenseMatrix, number | BigNumber': function DenseMatrixNumberBigNumber(x, y) {
148
181
  return algorithm14(x, y, this, false);
149
182
  },
150
- 'number | Complex | BigNumber, Array': function numberComplexBigNumberArray(x, y) {
183
+ 'number | Complex | Fraction | BigNumber, Array': function numberComplexFractionBigNumberArray(x, y) {
151
184
  // use matrix implementation
152
185
  return algorithm14(matrix(y), x, this, true).valueOf();
186
+ },
187
+ 'number | Complex | Fraction | BigNumber, Matrix': function numberComplexFractionBigNumberMatrix(x, y) {
188
+ if (equalScalar(x, 0)) return zeros(y.size(), y.storage());
189
+
190
+ if (y.storage() === 'dense') {
191
+ return algorithm14(y, x, this, true);
192
+ }
193
+
194
+ return algorithm12(y, x, this, true);
153
195
  }
154
196
  });
155
197
  });
@@ -81,9 +81,7 @@ var createNthRoot = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
81
81
 
82
82
  var complexErr = '' + 'Complex number not supported in function nthRoot. ' + 'Use nthRoots instead.';
83
83
  return typed(name, {
84
- number: function number(x) {
85
- return (0, _index.nthRootNumber)(x, 2);
86
- },
84
+ number: _index.nthRootNumber,
87
85
  'number, number': _index.nthRootNumber,
88
86
  BigNumber: function BigNumber(x) {
89
87
  return _bigNthRoot(x, new _BigNumber(2));
@@ -1,20 +1,14 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
8
- exports.createRoundNumber = exports.createRound = void 0;
9
-
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
6
+ exports.createRound = void 0;
11
7
 
12
8
  var _factory = require("../../utils/factory.js");
13
9
 
14
10
  var _collection = require("../../utils/collection.js");
15
11
 
16
- var _number = require("../../utils/number.js");
17
-
18
12
  var _algorithm = require("../../type/matrix/utils/algorithm11.js");
19
13
 
20
14
  var _algorithm2 = require("../../type/matrix/utils/algorithm12.js");
@@ -23,10 +17,6 @@ var _algorithm3 = require("../../type/matrix/utils/algorithm14.js");
23
17
 
24
18
  var _index = require("../../plain/number/index.js");
25
19
 
26
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
27
-
28
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
29
-
30
20
  var NO_INT = 'Number of decimals in function round must be an integer';
31
21
  var name = 'round';
32
22
  var dependencies = ['typed', 'matrix', 'equalScalar', 'zeros', 'BigNumber', 'DenseMatrix'];
@@ -84,7 +74,16 @@ var createRound = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
84
74
  * @return {number | BigNumber | Fraction | Complex | Array | Matrix} Rounded value
85
75
  */
86
76
 
87
- return typed(name, _objectSpread(_objectSpread({}, roundNumberSignatures), {}, {
77
+ return typed(name, {
78
+ number: _index.roundNumber,
79
+ 'number, number': _index.roundNumber,
80
+ 'number, BigNumber': function numberBigNumber(x, n) {
81
+ if (!n.isInteger()) {
82
+ throw new TypeError(NO_INT);
83
+ }
84
+
85
+ return new BigNumber(x).toDecimalPlaces(n.toNumber());
86
+ },
88
87
  Complex: function Complex(x) {
89
88
  return x.round();
90
89
  },
@@ -104,13 +103,6 @@ var createRound = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
104
103
 
105
104
  return x.round(_n);
106
105
  },
107
- 'number, BigNumber': function numberBigNumber(x, n) {
108
- if (!n.isInteger()) {
109
- throw new TypeError(NO_INT);
110
- }
111
-
112
- return new BigNumber(x).toDecimalPlaces(n.toNumber());
113
- },
114
106
  BigNumber: function BigNumber(x) {
115
107
  return x.toDecimalPlaces(0);
116
108
  },
@@ -131,6 +123,13 @@ var createRound = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
131
123
 
132
124
  return x.round(n);
133
125
  },
126
+ 'Fraction, BigNumber': function FractionBigNumber(x, n) {
127
+ if (!n.isInteger()) {
128
+ throw new TypeError(NO_INT);
129
+ }
130
+
131
+ return x.round(n.toNumber());
132
+ },
134
133
  'Array | Matrix': function ArrayMatrix(x) {
135
134
  // deep map collection, skip zeros since round(0) = 0
136
135
  return (0, _collection.deepMap)(x, this, true);
@@ -141,7 +140,11 @@ var createRound = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
141
140
  'DenseMatrix, number | BigNumber': function DenseMatrixNumberBigNumber(x, y) {
142
141
  return algorithm14(x, y, this, false);
143
142
  },
144
- 'number | Complex | BigNumber, SparseMatrix': function numberComplexBigNumberSparseMatrix(x, y) {
143
+ 'Array, number | BigNumber': function ArrayNumberBigNumber(x, y) {
144
+ // use matrix implementation
145
+ return algorithm14(matrix(x), y, this, false).valueOf();
146
+ },
147
+ 'number | Complex | BigNumber | Fraction, SparseMatrix': function numberComplexBigNumberFractionSparseMatrix(x, y) {
145
148
  // check scalar is zero
146
149
  if (equalScalar(x, 0)) {
147
150
  // do not execute algorithm, result will be a zero matrix
@@ -150,7 +153,7 @@ var createRound = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
150
153
 
151
154
  return algorithm12(y, x, this, true);
152
155
  },
153
- 'number | Complex | BigNumber, DenseMatrix': function numberComplexBigNumberDenseMatrix(x, y) {
156
+ 'number | Complex | BigNumber | Fraction, DenseMatrix': function numberComplexBigNumberFractionDenseMatrix(x, y) {
154
157
  // check scalar is zero
155
158
  if (equalScalar(x, 0)) {
156
159
  // do not execute algorithm, result will be a zero matrix
@@ -159,33 +162,10 @@ var createRound = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
159
162
 
160
163
  return algorithm14(y, x, this, true);
161
164
  },
162
- 'Array, number | BigNumber': function ArrayNumberBigNumber(x, y) {
163
- // use matrix implementation
164
- return algorithm14(matrix(x), y, this, false).valueOf();
165
- },
166
- 'number | Complex | BigNumber, Array': function numberComplexBigNumberArray(x, y) {
165
+ 'number | Complex | BigNumber | Fraction, Array': function numberComplexBigNumberFractionArray(x, y) {
167
166
  // use matrix implementation
168
167
  return algorithm14(matrix(y), x, this, true).valueOf();
169
168
  }
170
- }));
171
- });
172
- exports.createRound = createRound;
173
- var roundNumberSignatures = {
174
- number: _index.roundNumber,
175
- 'number, number': function numberNumber(x, n) {
176
- if (!(0, _number.isInteger)(n)) {
177
- throw new TypeError(NO_INT);
178
- }
179
-
180
- if (n < 0 || n > 15) {
181
- throw new Error('Number of decimals in function round must be in the range of 0-15');
182
- }
183
-
184
- return (0, _index.roundNumber)(x, n);
185
- }
186
- };
187
- var createRoundNumber = /* #__PURE__ */(0, _factory.factory)(name, ['typed'], function (_ref2) {
188
- var typed = _ref2.typed;
189
- return typed(name, roundNumberSignatures);
169
+ });
190
170
  });
191
- exports.createRoundNumber = createRoundNumber;
171
+ exports.createRound = createRound;
package/lib/cjs/header.js CHANGED
@@ -6,8 +6,8 @@
6
6
  * It features real and complex numbers, units, matrices, a large set of
7
7
  * mathematical functions, and a flexible expression parser.
8
8
  *
9
- * @version 10.5.0
10
- * @date 2022-04-19
9
+ * @version 10.5.1
10
+ * @date 2022-05-02
11
11
  *
12
12
  * @license
13
13
  * Copyright (C) 2013-2022 Jos de Jong <wjosdejong@gmail.com>