mathjs 11.5.1 → 11.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 (157) hide show
  1. package/HISTORY.md +21 -0
  2. package/lib/browser/math.js +1 -1
  3. package/lib/browser/math.js.LICENSE.txt +2 -2
  4. package/lib/browser/math.js.map +1 -1
  5. package/lib/cjs/entry/dependenciesAny/dependenciesAdd.generated.js +2 -0
  6. package/lib/cjs/entry/dependenciesAny/dependenciesAnd.generated.js +2 -0
  7. package/lib/cjs/entry/dependenciesAny/dependenciesAtan2.generated.js +2 -0
  8. package/lib/cjs/entry/dependenciesAny/dependenciesBitAnd.generated.js +2 -0
  9. package/lib/cjs/entry/dependenciesAny/dependenciesBitOr.generated.js +2 -0
  10. package/lib/cjs/entry/dependenciesAny/dependenciesBitXor.generated.js +2 -0
  11. package/lib/cjs/entry/dependenciesAny/dependenciesCompare.generated.js +2 -0
  12. package/lib/cjs/entry/dependenciesAny/dependenciesCompareText.generated.js +2 -0
  13. package/lib/cjs/entry/dependenciesAny/dependenciesDotDivide.generated.js +2 -0
  14. package/lib/cjs/entry/dependenciesAny/dependenciesDotMultiply.generated.js +2 -0
  15. package/lib/cjs/entry/dependenciesAny/dependenciesDotPow.generated.js +2 -0
  16. package/lib/cjs/entry/dependenciesAny/dependenciesEqual.generated.js +2 -0
  17. package/lib/cjs/entry/dependenciesAny/dependenciesFft.generated.js +10 -0
  18. package/lib/cjs/entry/dependenciesAny/dependenciesGcd.generated.js +2 -0
  19. package/lib/cjs/entry/dependenciesAny/dependenciesLarger.generated.js +2 -0
  20. package/lib/cjs/entry/dependenciesAny/dependenciesLargerEq.generated.js +2 -0
  21. package/lib/cjs/entry/dependenciesAny/dependenciesLcm.generated.js +2 -0
  22. package/lib/cjs/entry/dependenciesAny/dependenciesLeftShift.generated.js +2 -0
  23. package/lib/cjs/entry/dependenciesAny/dependenciesMod.generated.js +2 -0
  24. package/lib/cjs/entry/dependenciesAny/dependenciesNthRoot.generated.js +2 -0
  25. package/lib/cjs/entry/dependenciesAny/dependenciesOr.generated.js +2 -0
  26. package/lib/cjs/entry/dependenciesAny/dependenciesRightArithShift.generated.js +2 -0
  27. package/lib/cjs/entry/dependenciesAny/dependenciesRightLogShift.generated.js +2 -0
  28. package/lib/cjs/entry/dependenciesAny/dependenciesSimplifyConstant.generated.js +0 -2
  29. package/lib/cjs/entry/dependenciesAny/dependenciesSmaller.generated.js +2 -0
  30. package/lib/cjs/entry/dependenciesAny/dependenciesSmallerEq.generated.js +2 -0
  31. package/lib/cjs/entry/dependenciesAny/dependenciesSubtract.generated.js +2 -0
  32. package/lib/cjs/entry/dependenciesAny/dependenciesTo.generated.js +2 -0
  33. package/lib/cjs/entry/dependenciesAny/dependenciesUnequal.generated.js +2 -0
  34. package/lib/cjs/entry/dependenciesAny/dependenciesXor.generated.js +2 -0
  35. package/lib/cjs/entry/dependenciesNumber/dependenciesSimplifyConstant.generated.js +0 -2
  36. package/lib/cjs/entry/impureFunctionsAny.generated.js +102 -103
  37. package/lib/cjs/entry/impureFunctionsNumber.generated.js +41 -42
  38. package/lib/cjs/entry/pureFunctionsAny.generated.js +405 -372
  39. package/lib/cjs/expression/embeddedDocs/function/matrix/sort.js +1 -1
  40. package/lib/cjs/function/algebra/simplifyConstant.js +1 -2
  41. package/lib/cjs/function/arithmetic/add.js +38 -37
  42. package/lib/cjs/function/arithmetic/dotDivide.js +5 -3
  43. package/lib/cjs/function/arithmetic/dotMultiply.js +5 -3
  44. package/lib/cjs/function/arithmetic/dotPow.js +5 -3
  45. package/lib/cjs/function/arithmetic/gcd.js +5 -3
  46. package/lib/cjs/function/arithmetic/lcm.js +5 -3
  47. package/lib/cjs/function/arithmetic/mod.js +5 -3
  48. package/lib/cjs/function/arithmetic/nthRoot.js +5 -3
  49. package/lib/cjs/function/arithmetic/subtract.js +5 -3
  50. package/lib/cjs/function/bitwise/bitAnd.js +5 -3
  51. package/lib/cjs/function/bitwise/bitOr.js +5 -3
  52. package/lib/cjs/function/bitwise/bitXor.js +5 -3
  53. package/lib/cjs/function/bitwise/leftShift.js +5 -3
  54. package/lib/cjs/function/bitwise/rightArithShift.js +5 -3
  55. package/lib/cjs/function/bitwise/rightLogShift.js +5 -3
  56. package/lib/cjs/function/geometry/distance.js +3 -3
  57. package/lib/cjs/function/logical/and.js +5 -3
  58. package/lib/cjs/function/logical/or.js +5 -3
  59. package/lib/cjs/function/logical/xor.js +5 -3
  60. package/lib/cjs/function/matrix/column.js +3 -1
  61. package/lib/cjs/function/matrix/fft.js +43 -4
  62. package/lib/cjs/function/matrix/getMatrixDataType.js +1 -1
  63. package/lib/cjs/function/matrix/row.js +3 -1
  64. package/lib/cjs/function/matrix/subset.js +1 -1
  65. package/lib/cjs/function/relational/compare.js +5 -3
  66. package/lib/cjs/function/relational/compareText.js +5 -3
  67. package/lib/cjs/function/relational/equal.js +5 -3
  68. package/lib/cjs/function/relational/larger.js +5 -3
  69. package/lib/cjs/function/relational/largerEq.js +5 -3
  70. package/lib/cjs/function/relational/smaller.js +5 -3
  71. package/lib/cjs/function/relational/smallerEq.js +5 -3
  72. package/lib/cjs/function/relational/unequal.js +5 -3
  73. package/lib/cjs/function/statistics/max.js +1 -1
  74. package/lib/cjs/function/statistics/quantileSeq.js +4 -3
  75. package/lib/cjs/function/trigonometry/atan2.js +5 -3
  76. package/lib/cjs/function/unit/to.js +8 -6
  77. package/lib/cjs/header.js +2 -2
  78. package/lib/cjs/type/matrix/utils/broadcast.js +84 -0
  79. package/lib/cjs/type/matrix/utils/matrixAlgorithmSuite.js +27 -20
  80. package/lib/cjs/version.js +1 -1
  81. package/lib/esm/entry/dependenciesAny/dependenciesAdd.generated.js +2 -0
  82. package/lib/esm/entry/dependenciesAny/dependenciesAnd.generated.js +2 -0
  83. package/lib/esm/entry/dependenciesAny/dependenciesAtan2.generated.js +2 -0
  84. package/lib/esm/entry/dependenciesAny/dependenciesBitAnd.generated.js +2 -0
  85. package/lib/esm/entry/dependenciesAny/dependenciesBitOr.generated.js +2 -0
  86. package/lib/esm/entry/dependenciesAny/dependenciesBitXor.generated.js +2 -0
  87. package/lib/esm/entry/dependenciesAny/dependenciesCompare.generated.js +2 -0
  88. package/lib/esm/entry/dependenciesAny/dependenciesCompareText.generated.js +2 -0
  89. package/lib/esm/entry/dependenciesAny/dependenciesDotDivide.generated.js +2 -0
  90. package/lib/esm/entry/dependenciesAny/dependenciesDotMultiply.generated.js +2 -0
  91. package/lib/esm/entry/dependenciesAny/dependenciesDotPow.generated.js +2 -0
  92. package/lib/esm/entry/dependenciesAny/dependenciesEqual.generated.js +2 -0
  93. package/lib/esm/entry/dependenciesAny/dependenciesFft.generated.js +10 -0
  94. package/lib/esm/entry/dependenciesAny/dependenciesGcd.generated.js +2 -0
  95. package/lib/esm/entry/dependenciesAny/dependenciesLarger.generated.js +2 -0
  96. package/lib/esm/entry/dependenciesAny/dependenciesLargerEq.generated.js +2 -0
  97. package/lib/esm/entry/dependenciesAny/dependenciesLcm.generated.js +2 -0
  98. package/lib/esm/entry/dependenciesAny/dependenciesLeftShift.generated.js +2 -0
  99. package/lib/esm/entry/dependenciesAny/dependenciesMod.generated.js +2 -0
  100. package/lib/esm/entry/dependenciesAny/dependenciesNthRoot.generated.js +2 -0
  101. package/lib/esm/entry/dependenciesAny/dependenciesOr.generated.js +2 -0
  102. package/lib/esm/entry/dependenciesAny/dependenciesRightArithShift.generated.js +2 -0
  103. package/lib/esm/entry/dependenciesAny/dependenciesRightLogShift.generated.js +2 -0
  104. package/lib/esm/entry/dependenciesAny/dependenciesSimplifyConstant.generated.js +0 -2
  105. package/lib/esm/entry/dependenciesAny/dependenciesSmaller.generated.js +2 -0
  106. package/lib/esm/entry/dependenciesAny/dependenciesSmallerEq.generated.js +2 -0
  107. package/lib/esm/entry/dependenciesAny/dependenciesSubtract.generated.js +2 -0
  108. package/lib/esm/entry/dependenciesAny/dependenciesTo.generated.js +2 -0
  109. package/lib/esm/entry/dependenciesAny/dependenciesUnequal.generated.js +2 -0
  110. package/lib/esm/entry/dependenciesAny/dependenciesXor.generated.js +2 -0
  111. package/lib/esm/entry/dependenciesNumber/dependenciesSimplifyConstant.generated.js +0 -2
  112. package/lib/esm/entry/impureFunctionsAny.generated.js +100 -101
  113. package/lib/esm/entry/impureFunctionsNumber.generated.js +38 -39
  114. package/lib/esm/entry/pureFunctionsAny.generated.js +332 -299
  115. package/lib/esm/expression/embeddedDocs/function/matrix/sort.js +1 -1
  116. package/lib/esm/function/algebra/simplifyConstant.js +1 -2
  117. package/lib/esm/function/arithmetic/add.js +38 -37
  118. package/lib/esm/function/arithmetic/dotDivide.js +5 -3
  119. package/lib/esm/function/arithmetic/dotMultiply.js +5 -3
  120. package/lib/esm/function/arithmetic/dotPow.js +5 -3
  121. package/lib/esm/function/arithmetic/gcd.js +5 -3
  122. package/lib/esm/function/arithmetic/lcm.js +5 -3
  123. package/lib/esm/function/arithmetic/mod.js +5 -3
  124. package/lib/esm/function/arithmetic/nthRoot.js +5 -3
  125. package/lib/esm/function/arithmetic/subtract.js +5 -3
  126. package/lib/esm/function/bitwise/bitAnd.js +5 -3
  127. package/lib/esm/function/bitwise/bitOr.js +5 -3
  128. package/lib/esm/function/bitwise/bitXor.js +5 -3
  129. package/lib/esm/function/bitwise/leftShift.js +5 -3
  130. package/lib/esm/function/bitwise/rightArithShift.js +5 -3
  131. package/lib/esm/function/bitwise/rightLogShift.js +5 -3
  132. package/lib/esm/function/geometry/distance.js +3 -3
  133. package/lib/esm/function/logical/and.js +5 -3
  134. package/lib/esm/function/logical/or.js +5 -3
  135. package/lib/esm/function/logical/xor.js +5 -3
  136. package/lib/esm/function/matrix/column.js +3 -1
  137. package/lib/esm/function/matrix/fft.js +37 -4
  138. package/lib/esm/function/matrix/getMatrixDataType.js +1 -1
  139. package/lib/esm/function/matrix/row.js +3 -1
  140. package/lib/esm/function/matrix/subset.js +1 -1
  141. package/lib/esm/function/relational/compare.js +5 -3
  142. package/lib/esm/function/relational/compareText.js +5 -3
  143. package/lib/esm/function/relational/equal.js +5 -3
  144. package/lib/esm/function/relational/larger.js +5 -3
  145. package/lib/esm/function/relational/largerEq.js +5 -3
  146. package/lib/esm/function/relational/smaller.js +5 -3
  147. package/lib/esm/function/relational/smallerEq.js +5 -3
  148. package/lib/esm/function/relational/unequal.js +5 -3
  149. package/lib/esm/function/statistics/max.js +1 -1
  150. package/lib/esm/function/statistics/quantileSeq.js +4 -3
  151. package/lib/esm/function/trigonometry/atan2.js +5 -3
  152. package/lib/esm/function/unit/to.js +8 -6
  153. package/lib/esm/type/matrix/utils/broadcast.js +75 -0
  154. package/lib/esm/type/matrix/utils/matrixAlgorithmSuite.js +25 -20
  155. package/lib/esm/version.js +1 -1
  156. package/package.json +11 -11
  157. package/types/index.d.ts +4 -4
@@ -9,7 +9,7 @@ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers
9
9
  var _array = require("../../utils/array.js");
10
10
  var _factory = require("../../utils/factory.js");
11
11
  var name = 'fft';
12
- var dependencies = ['typed', 'matrix', 'addScalar', 'multiplyScalar', 'divideScalar', 'exp', 'tau', 'i'];
12
+ var dependencies = ['typed', 'matrix', 'addScalar', 'multiplyScalar', 'divideScalar', 'exp', 'tau', 'i', 'dotDivide', 'conj', 'pow', 'ceil', 'log2'];
13
13
  var createFft = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
14
14
  var typed = _ref.typed,
15
15
  matrix = _ref.matrix,
@@ -18,7 +18,12 @@ var createFft = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functio
18
18
  divideScalar = _ref.divideScalar,
19
19
  exp = _ref.exp,
20
20
  tau = _ref.tau,
21
- I = _ref.i;
21
+ I = _ref.i,
22
+ dotDivide = _ref.dotDivide,
23
+ conj = _ref.conj,
24
+ pow = _ref.pow,
25
+ ceil = _ref.ceil,
26
+ log2 = _ref.log2;
22
27
  /**
23
28
  * Calculate N-dimensional fourier transform
24
29
  *
@@ -84,7 +89,38 @@ var createFft = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functio
84
89
  }
85
90
  return _transpose(_1dFft(_transpose(arr), 1));
86
91
  }
87
-
92
+ /**
93
+ * Perform an 1-dimensional non-power-of-2 Fourier transform using Chirp-Z Transform
94
+ *
95
+ * @param {Array} arr The array
96
+ * @return {Array} resulting array
97
+ */
98
+ function _czt(arr) {
99
+ var n = arr.length;
100
+ var w = exp(divideScalar(multiplyScalar(-1, multiplyScalar(I, tau)), n));
101
+ var chirp = [];
102
+ for (var i = 1 - n; i < n; i++) {
103
+ chirp.push(pow(w, divideScalar(pow(i, 2), 2)));
104
+ }
105
+ var N2 = pow(2, ceil(log2(n + n - 1)));
106
+ var xp = [].concat((0, _toConsumableArray2["default"])(new Array(n).fill(0).map(function (_, i) {
107
+ return multiplyScalar(arr[i], chirp[n - 1 + i]);
108
+ })), (0, _toConsumableArray2["default"])(new Array(N2 - n).fill(0)));
109
+ var ichirp = [].concat((0, _toConsumableArray2["default"])(new Array(n + n - 1).fill(0).map(function (_, i) {
110
+ return divideScalar(1, chirp[i]);
111
+ })), (0, _toConsumableArray2["default"])(new Array(N2 - (n + n - 1)).fill(0)));
112
+ var fftXp = _fft(xp);
113
+ var fftIchirp = _fft(ichirp);
114
+ var fftProduct = new Array(N2).fill(0).map(function (_, i) {
115
+ return multiplyScalar(fftXp[i], fftIchirp[i]);
116
+ });
117
+ var ifftProduct = dotDivide(conj(_ndFft(conj(fftProduct))), N2);
118
+ var ret = [];
119
+ for (var _i = n - 1; _i < n + n - 1; _i++) {
120
+ ret.push(multiplyScalar(ifftProduct[_i], chirp[_i]));
121
+ }
122
+ return ret;
123
+ }
88
124
  /**
89
125
  * Perform an 1-dimensional Fourier transform
90
126
  *
@@ -107,8 +143,11 @@ var createFft = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functio
107
143
  ret[k + len / 2] = addScalar(p, multiplyScalar(-1, q));
108
144
  }
109
145
  return ret;
146
+ } else {
147
+ // use chirp-z transform for non-power-of-2 FFT
148
+ return _czt(arr);
110
149
  }
111
- throw new Error('Can only calculate FFT of power-of-two size');
150
+ // throw new Error('Can only calculate FFT of power-of-two size')
112
151
  }
113
152
  });
114
153
  exports.createFft = createFft;
@@ -25,7 +25,7 @@ var createGetMatrixDataType = /* #__PURE__ */(0, _factory.factory)(name, depende
25
25
  *
26
26
  * const x = [ [1, 2, 3], [4, 5, 6] ]
27
27
  * const mixedX = [ [1, true], [2, 3] ]
28
- * const fractionX = [ [math.fraction(1, 3)], [math.fraction(1, 3] ]
28
+ * const fractionX = [ [math.fraction(1, 3)], [math.fraction(1, 3)] ]
29
29
  * const unitX = [ [math.unit('5cm')], [math.unit('5cm')] ]
30
30
  * const bigNumberX = [ [math.bignumber(1)], [math.bignumber(0)] ]
31
31
  * const sparse = math.sparse(x)
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.createRow = void 0;
7
7
  var _factory = require("../../utils/factory.js");
8
+ var _is = require("../../utils/is.js");
8
9
  var _object = require("../../utils/object.js");
9
10
  var _array = require("../../utils/array.js");
10
11
  var name = 'row';
@@ -56,7 +57,8 @@ var createRow = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functio
56
57
  (0, _array.validateIndex)(row, value.size()[0]);
57
58
  var columnRange = range(0, value.size()[1]);
58
59
  var index = new Index(row, columnRange);
59
- return value.subset(index);
60
+ var result = value.subset(index);
61
+ return (0, _is.isMatrix)(result) ? result : matrix([[result]]);
60
62
  }
61
63
  });
62
64
  exports.createRow = createRow;
@@ -31,7 +31,7 @@ var createSubset = /* #__PURE__ */(0, _factory.factory)(name, dependencies, func
31
31
  *
32
32
  * // replace a subset
33
33
  * const e = []
34
- * const f = math.subset(e, math.index(0, [0, 2]), [5, 6]) // f = [[5, 6]] and e = [[5, 0, 6]]
34
+ * const f = math.subset(e, math.index(0, [0, 2]), [5, 6]) // f = [[5, 6]]
35
35
  * const g = math.subset(f, math.index(1, 1), 7, 0) // g = [[5, 6], [0, 7]]
36
36
  *
37
37
  * // get submatrix using ranges
@@ -13,7 +13,7 @@ var _matAlgo05xSfSf = require("../../type/matrix/utils/matAlgo05xSfSf.js");
13
13
  var _matrixAlgorithmSuite = require("../../type/matrix/utils/matrixAlgorithmSuite.js");
14
14
  var _compareUnits = require("./compareUnits.js");
15
15
  var name = 'compare';
16
- var dependencies = ['typed', 'config', 'matrix', 'equalScalar', 'BigNumber', 'Fraction', 'DenseMatrix'];
16
+ var dependencies = ['typed', 'config', 'matrix', 'equalScalar', 'BigNumber', 'Fraction', 'DenseMatrix', 'concat'];
17
17
  var createCompare = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
18
18
  var typed = _ref.typed,
19
19
  config = _ref.config,
@@ -21,7 +21,8 @@ var createCompare = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
21
21
  matrix = _ref.matrix,
22
22
  BigNumber = _ref.BigNumber,
23
23
  Fraction = _ref.Fraction,
24
- DenseMatrix = _ref.DenseMatrix;
24
+ DenseMatrix = _ref.DenseMatrix,
25
+ concat = _ref.concat;
25
26
  var matAlgo03xDSf = (0, _matAlgo03xDSf.createMatAlgo03xDSf)({
26
27
  typed: typed
27
28
  });
@@ -35,7 +36,8 @@ var createCompare = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
35
36
  });
36
37
  var matrixAlgorithmSuite = (0, _matrixAlgorithmSuite.createMatrixAlgorithmSuite)({
37
38
  typed: typed,
38
- matrix: matrix
39
+ matrix: matrix,
40
+ concat: concat
39
41
  });
40
42
  var compareUnits = (0, _compareUnits.createCompareUnits)({
41
43
  typed: typed
@@ -8,14 +8,16 @@ var _string = require("../../utils/string.js");
8
8
  var _factory = require("../../utils/factory.js");
9
9
  var _matrixAlgorithmSuite = require("../../type/matrix/utils/matrixAlgorithmSuite.js");
10
10
  var name = 'compareText';
11
- var dependencies = ['typed', 'matrix'];
11
+ var dependencies = ['typed', 'matrix', 'concat'];
12
12
  _string.compareText.signature = 'any, any';
13
13
  var createCompareText = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
14
14
  var typed = _ref.typed,
15
- matrix = _ref.matrix;
15
+ matrix = _ref.matrix,
16
+ concat = _ref.concat;
16
17
  var matrixAlgorithmSuite = (0, _matrixAlgorithmSuite.createMatrixAlgorithmSuite)({
17
18
  typed: typed,
18
- matrix: matrix
19
+ matrix: matrix,
20
+ concat: concat
19
21
  });
20
22
 
21
23
  /**
@@ -10,12 +10,13 @@ var _matAlgo07xSSf = require("../../type/matrix/utils/matAlgo07xSSf.js");
10
10
  var _matAlgo12xSfs = require("../../type/matrix/utils/matAlgo12xSfs.js");
11
11
  var _matrixAlgorithmSuite = require("../../type/matrix/utils/matrixAlgorithmSuite.js");
12
12
  var name = 'equal';
13
- var dependencies = ['typed', 'matrix', 'equalScalar', 'DenseMatrix'];
13
+ var dependencies = ['typed', 'matrix', 'equalScalar', 'DenseMatrix', 'concat'];
14
14
  var createEqual = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
15
15
  var typed = _ref.typed,
16
16
  matrix = _ref.matrix,
17
17
  equalScalar = _ref.equalScalar,
18
- DenseMatrix = _ref.DenseMatrix;
18
+ DenseMatrix = _ref.DenseMatrix,
19
+ concat = _ref.concat;
19
20
  var matAlgo03xDSf = (0, _matAlgo03xDSf.createMatAlgo03xDSf)({
20
21
  typed: typed
21
22
  });
@@ -29,7 +30,8 @@ var createEqual = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
29
30
  });
30
31
  var matrixAlgorithmSuite = (0, _matrixAlgorithmSuite.createMatrixAlgorithmSuite)({
31
32
  typed: typed,
32
- matrix: matrix
33
+ matrix: matrix,
34
+ concat: concat
33
35
  });
34
36
 
35
37
  /**
@@ -13,12 +13,13 @@ var _matAlgo12xSfs = require("../../type/matrix/utils/matAlgo12xSfs.js");
13
13
  var _matrixAlgorithmSuite = require("../../type/matrix/utils/matrixAlgorithmSuite.js");
14
14
  var _compareUnits = require("./compareUnits.js");
15
15
  var name = 'larger';
16
- var dependencies = ['typed', 'config', 'matrix', 'DenseMatrix'];
16
+ var dependencies = ['typed', 'config', 'matrix', 'DenseMatrix', 'concat'];
17
17
  var createLarger = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
18
18
  var typed = _ref.typed,
19
19
  config = _ref.config,
20
20
  matrix = _ref.matrix,
21
- DenseMatrix = _ref.DenseMatrix;
21
+ DenseMatrix = _ref.DenseMatrix,
22
+ concat = _ref.concat;
22
23
  var matAlgo03xDSf = (0, _matAlgo03xDSf.createMatAlgo03xDSf)({
23
24
  typed: typed
24
25
  });
@@ -32,7 +33,8 @@ var createLarger = /* #__PURE__ */(0, _factory.factory)(name, dependencies, func
32
33
  });
33
34
  var matrixAlgorithmSuite = (0, _matrixAlgorithmSuite.createMatrixAlgorithmSuite)({
34
35
  typed: typed,
35
- matrix: matrix
36
+ matrix: matrix,
37
+ concat: concat
36
38
  });
37
39
  var compareUnits = (0, _compareUnits.createCompareUnits)({
38
40
  typed: typed
@@ -13,12 +13,13 @@ var _matAlgo12xSfs = require("../../type/matrix/utils/matAlgo12xSfs.js");
13
13
  var _matrixAlgorithmSuite = require("../../type/matrix/utils/matrixAlgorithmSuite.js");
14
14
  var _compareUnits = require("./compareUnits.js");
15
15
  var name = 'largerEq';
16
- var dependencies = ['typed', 'config', 'matrix', 'DenseMatrix'];
16
+ var dependencies = ['typed', 'config', 'matrix', 'DenseMatrix', 'concat'];
17
17
  var createLargerEq = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
18
18
  var typed = _ref.typed,
19
19
  config = _ref.config,
20
20
  matrix = _ref.matrix,
21
- DenseMatrix = _ref.DenseMatrix;
21
+ DenseMatrix = _ref.DenseMatrix,
22
+ concat = _ref.concat;
22
23
  var matAlgo03xDSf = (0, _matAlgo03xDSf.createMatAlgo03xDSf)({
23
24
  typed: typed
24
25
  });
@@ -32,7 +33,8 @@ var createLargerEq = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
32
33
  });
33
34
  var matrixAlgorithmSuite = (0, _matrixAlgorithmSuite.createMatrixAlgorithmSuite)({
34
35
  typed: typed,
35
- matrix: matrix
36
+ matrix: matrix,
37
+ concat: concat
36
38
  });
37
39
  var compareUnits = (0, _compareUnits.createCompareUnits)({
38
40
  typed: typed
@@ -13,12 +13,13 @@ var _matAlgo12xSfs = require("../../type/matrix/utils/matAlgo12xSfs.js");
13
13
  var _matrixAlgorithmSuite = require("../../type/matrix/utils/matrixAlgorithmSuite.js");
14
14
  var _compareUnits = require("./compareUnits.js");
15
15
  var name = 'smaller';
16
- var dependencies = ['typed', 'config', 'matrix', 'DenseMatrix'];
16
+ var dependencies = ['typed', 'config', 'matrix', 'DenseMatrix', 'concat'];
17
17
  var createSmaller = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
18
18
  var typed = _ref.typed,
19
19
  config = _ref.config,
20
20
  matrix = _ref.matrix,
21
- DenseMatrix = _ref.DenseMatrix;
21
+ DenseMatrix = _ref.DenseMatrix,
22
+ concat = _ref.concat;
22
23
  var matAlgo03xDSf = (0, _matAlgo03xDSf.createMatAlgo03xDSf)({
23
24
  typed: typed
24
25
  });
@@ -32,7 +33,8 @@ var createSmaller = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
32
33
  });
33
34
  var matrixAlgorithmSuite = (0, _matrixAlgorithmSuite.createMatrixAlgorithmSuite)({
34
35
  typed: typed,
35
- matrix: matrix
36
+ matrix: matrix,
37
+ concat: concat
36
38
  });
37
39
  var compareUnits = (0, _compareUnits.createCompareUnits)({
38
40
  typed: typed
@@ -13,12 +13,13 @@ var _matAlgo12xSfs = require("../../type/matrix/utils/matAlgo12xSfs.js");
13
13
  var _matrixAlgorithmSuite = require("../../type/matrix/utils/matrixAlgorithmSuite.js");
14
14
  var _compareUnits = require("./compareUnits.js");
15
15
  var name = 'smallerEq';
16
- var dependencies = ['typed', 'config', 'matrix', 'DenseMatrix'];
16
+ var dependencies = ['typed', 'config', 'matrix', 'DenseMatrix', 'concat'];
17
17
  var createSmallerEq = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
18
18
  var typed = _ref.typed,
19
19
  config = _ref.config,
20
20
  matrix = _ref.matrix,
21
- DenseMatrix = _ref.DenseMatrix;
21
+ DenseMatrix = _ref.DenseMatrix,
22
+ concat = _ref.concat;
22
23
  var matAlgo03xDSf = (0, _matAlgo03xDSf.createMatAlgo03xDSf)({
23
24
  typed: typed
24
25
  });
@@ -32,7 +33,8 @@ var createSmallerEq = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
32
33
  });
33
34
  var matrixAlgorithmSuite = (0, _matrixAlgorithmSuite.createMatrixAlgorithmSuite)({
34
35
  typed: typed,
35
- matrix: matrix
36
+ matrix: matrix,
37
+ concat: concat
36
38
  });
37
39
  var compareUnits = (0, _compareUnits.createCompareUnits)({
38
40
  typed: typed
@@ -10,13 +10,14 @@ var _matAlgo07xSSf = require("../../type/matrix/utils/matAlgo07xSSf.js");
10
10
  var _matAlgo12xSfs = require("../../type/matrix/utils/matAlgo12xSfs.js");
11
11
  var _matrixAlgorithmSuite = require("../../type/matrix/utils/matrixAlgorithmSuite.js");
12
12
  var name = 'unequal';
13
- var dependencies = ['typed', 'config', 'equalScalar', 'matrix', 'DenseMatrix'];
13
+ var dependencies = ['typed', 'config', 'equalScalar', 'matrix', 'DenseMatrix', 'concat'];
14
14
  var createUnequal = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
15
15
  var typed = _ref.typed,
16
16
  config = _ref.config,
17
17
  equalScalar = _ref.equalScalar,
18
18
  matrix = _ref.matrix,
19
- DenseMatrix = _ref.DenseMatrix;
19
+ DenseMatrix = _ref.DenseMatrix,
20
+ concat = _ref.concat;
20
21
  var matAlgo03xDSf = (0, _matAlgo03xDSf.createMatAlgo03xDSf)({
21
22
  typed: typed
22
23
  });
@@ -30,7 +31,8 @@ var createUnequal = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
30
31
  });
31
32
  var matrixAlgorithmSuite = (0, _matrixAlgorithmSuite.createMatrixAlgorithmSuite)({
32
33
  typed: typed,
33
- matrix: matrix
34
+ matrix: matrix,
35
+ concat: concat
34
36
  });
35
37
 
36
38
  /**
@@ -33,7 +33,7 @@ var createMax = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functio
33
33
  *
34
34
  * // maximum over a specified dimension (zero-based)
35
35
  * math.max([[2, 5], [4, 3], [1, 7]], 0) // returns [4, 7]
36
- * math.max([[2, 5], [4, 3]], [1, 7], 1) // returns [5, 4, 7]
36
+ * math.max([[2, 5], [4, 3], [1, 7]], 1) // returns [5, 4, 7]
37
37
  *
38
38
  * math.max(2.7, 7.1, -4.5, 2.0, 4.1) // returns 7.1
39
39
  * math.min(2.7, 7.1, -4.5, 2.0, 4.1) // returns -4.5
@@ -110,11 +110,12 @@ var createQuantileSeq = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
110
110
  return probArr;
111
111
  }
112
112
  }
113
- if (Array.isArray(probOrN)) {
113
+ if ((0, _is.isCollection)(probOrN)) {
114
114
  // quantileSeq([a, b, c, d, ...], [prob1, prob2, ...][,sorted])
115
- probArr = new Array(probOrN.length);
115
+ var probOrNArr = probOrN.valueOf();
116
+ probArr = new Array(probOrNArr.length);
116
117
  for (var _i2 = 0; _i2 < probArr.length; ++_i2) {
117
- var currProb = probOrN[_i2];
118
+ var currProb = probOrNArr[_i2];
118
119
  if ((0, _is.isNumber)(currProb)) {
119
120
  if (currProb < 0 || currProb > 1) {
120
121
  throw new Error('Probability must be between 0 and 1, inclusive');
@@ -12,13 +12,14 @@ var _matAlgo11xS0s = require("../../type/matrix/utils/matAlgo11xS0s.js");
12
12
  var _matAlgo12xSfs = require("../../type/matrix/utils/matAlgo12xSfs.js");
13
13
  var _matrixAlgorithmSuite = require("../../type/matrix/utils/matrixAlgorithmSuite.js");
14
14
  var name = 'atan2';
15
- var dependencies = ['typed', 'matrix', 'equalScalar', 'BigNumber', 'DenseMatrix'];
15
+ var dependencies = ['typed', 'matrix', 'equalScalar', 'BigNumber', 'DenseMatrix', 'concat'];
16
16
  var createAtan2 = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
17
17
  var typed = _ref.typed,
18
18
  matrix = _ref.matrix,
19
19
  equalScalar = _ref.equalScalar,
20
20
  BigNumber = _ref.BigNumber,
21
- DenseMatrix = _ref.DenseMatrix;
21
+ DenseMatrix = _ref.DenseMatrix,
22
+ concat = _ref.concat;
22
23
  var matAlgo02xDS0 = (0, _matAlgo02xDS.createMatAlgo02xDS0)({
23
24
  typed: typed,
24
25
  equalScalar: equalScalar
@@ -40,7 +41,8 @@ var createAtan2 = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
40
41
  });
41
42
  var matrixAlgorithmSuite = (0, _matrixAlgorithmSuite.createMatrixAlgorithmSuite)({
42
43
  typed: typed,
43
- matrix: matrix
44
+ matrix: matrix,
45
+ concat: concat
44
46
  });
45
47
 
46
48
  /**
@@ -7,13 +7,15 @@ exports.createTo = void 0;
7
7
  var _factory = require("../../utils/factory.js");
8
8
  var _matrixAlgorithmSuite = require("../../type/matrix/utils/matrixAlgorithmSuite.js");
9
9
  var name = 'to';
10
- var dependencies = ['typed', 'matrix'];
10
+ var dependencies = ['typed', 'matrix', 'concat'];
11
11
  var createTo = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
12
12
  var typed = _ref.typed,
13
- matrix = _ref.matrix;
13
+ matrix = _ref.matrix,
14
+ concat = _ref.concat;
14
15
  var matrixAlgorithmSuite = (0, _matrixAlgorithmSuite.createMatrixAlgorithmSuite)({
15
16
  typed: typed,
16
- matrix: matrix
17
+ matrix: matrix,
18
+ concat: concat
17
19
  });
18
20
 
19
21
  /**
@@ -27,9 +29,9 @@ var createTo = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function
27
29
  *
28
30
  * Examples:
29
31
  *
30
- * math.to(math.unit('2 inch'), 'cm') // returns Unit 5.08 cm
31
- * math.to(math.unit('2 inch'), math.unit(null, 'cm')) // returns Unit 5.08 cm
32
- * math.to(math.unit(16, 'bytes'), 'bits') // returns Unit 128 bits
32
+ * math.to(math.unit('2 inch'), 'cm') // returns Unit 5.08 cm
33
+ * math.to(math.unit('2 inch'), math.unit('cm')) // returns Unit 5.08 cm
34
+ * math.to(math.unit(16, 'bytes'), 'bits') // returns Unit 128 bits
33
35
  *
34
36
  * See also:
35
37
  *
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 11.5.1
10
- * @date 2023-01-31
9
+ * @version 11.6.0
10
+ * @date 2023-02-24
11
11
  *
12
12
  * @license
13
13
  * Copyright (C) 2013-2023 Jos de Jong <wjosdejong@gmail.com>
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.createBroadcast = void 0;
8
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
+ var _factory = require("../../../utils/factory.js");
10
+ var name = 'broadcast';
11
+ var dependancies = ['concat'];
12
+ var createBroadcast = /* #__PURE__ */(0, _factory.factory)(name, dependancies, function (_ref) {
13
+ var concat = _ref.concat;
14
+ /**
15
+ * Broadcasts two matrices, and return both in an array
16
+ * It checks if it's possible with broadcasting rules
17
+ *
18
+ * @param {Matrix} A First Matrix
19
+ * @param {Matrix} B Second Matrix
20
+ *
21
+ * @return {Matrix[]} [ broadcastedA, broadcastedB ]
22
+ */
23
+ return function (A, B) {
24
+ var N = Math.max(A._size.length, B._size.length); // max number of dims
25
+ if (A._size.length === B._size.length) {
26
+ if (A._size.every(function (dim, i) {
27
+ return dim === B._size[i];
28
+ })) {
29
+ // If matrices have the same size return them
30
+ return [A, B];
31
+ }
32
+ }
33
+ var sizeA = _padLeft(A._size, N, 0); // pad to the left to align dimensions to the right
34
+ var sizeB = _padLeft(B._size, N, 0); // pad to the left to align dimensions to the right
35
+
36
+ // calculate the max dimensions
37
+ var sizeMax = [];
38
+ for (var dim = 0; dim < N; dim++) {
39
+ sizeMax[dim] = Math.max(sizeA[dim], sizeB[dim]);
40
+ }
41
+
42
+ // check if the broadcasting rules applyes for both matrices
43
+ for (var _dim = 0; _dim < N; _dim++) {
44
+ _checkRules(sizeA, sizeMax, _dim);
45
+ _checkRules(sizeB, sizeMax, _dim);
46
+ }
47
+
48
+ // reshape A or B if needed to make them ready for concat
49
+ var AA = A.clone();
50
+ var BB = B.clone();
51
+ if (AA._size.length < N) {
52
+ AA.reshape(_padLeft(AA._size, N, 1));
53
+ } else if (BB._size.length < N) {
54
+ BB.reshape(_padLeft(BB._size, N, 1));
55
+ }
56
+
57
+ // stretches the matrices on each dimension to make them the same size
58
+ for (var _dim2 = 0; _dim2 < N; _dim2++) {
59
+ if (AA._size[_dim2] < sizeMax[_dim2]) {
60
+ AA = _stretch(AA, sizeMax[_dim2], _dim2);
61
+ }
62
+ if (BB._size[_dim2] < sizeMax[_dim2]) {
63
+ BB = _stretch(BB, sizeMax[_dim2], _dim2);
64
+ }
65
+ }
66
+
67
+ // return the array with the two broadcasted matrices
68
+ return [AA, BB];
69
+ };
70
+ function _padLeft(shape, N, filler) {
71
+ // pads an array of dimensions with numbers to the left, unitl the number of dimensions is N
72
+ return [].concat((0, _toConsumableArray2["default"])(Array(N - shape.length).fill(filler)), (0, _toConsumableArray2["default"])(shape));
73
+ }
74
+ function _stretch(arrayToStretch, sizeToStretch, dimToStretch) {
75
+ // stretches a matrix up to a certain size in a certain dimension
76
+ return concat.apply(void 0, (0, _toConsumableArray2["default"])(Array(sizeToStretch).fill(arrayToStretch)).concat([dimToStretch]));
77
+ }
78
+ function _checkRules(shape, sizeMax, dim) {
79
+ if (shape[dim] < sizeMax[dim] & shape[dim] > 1) {
80
+ throw new Error("shape missmatch: missmatch is found in arg with shape (".concat(shape, ") not possible to broadcast dimension ").concat(dim, " with size ").concat(shape[dim], " to size ").concat(sizeMax[dim]));
81
+ }
82
+ }
83
+ });
84
+ exports.createBroadcast = createBroadcast;