mathjs 11.5.1 → 11.7.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 (177) hide show
  1. package/HISTORY.md +34 -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/partitionSelect.js +1 -1
  40. package/lib/cjs/expression/embeddedDocs/function/matrix/sort.js +1 -1
  41. package/lib/cjs/function/algebra/simplifyConstant.js +1 -2
  42. package/lib/cjs/function/arithmetic/add.js +38 -37
  43. package/lib/cjs/function/arithmetic/dotDivide.js +5 -3
  44. package/lib/cjs/function/arithmetic/dotMultiply.js +5 -3
  45. package/lib/cjs/function/arithmetic/dotPow.js +5 -3
  46. package/lib/cjs/function/arithmetic/expm1.js +1 -1
  47. package/lib/cjs/function/arithmetic/gcd.js +40 -15
  48. package/lib/cjs/function/arithmetic/lcm.js +5 -3
  49. package/lib/cjs/function/arithmetic/mod.js +5 -3
  50. package/lib/cjs/function/arithmetic/nthRoot.js +5 -3
  51. package/lib/cjs/function/arithmetic/nthRoots.js +2 -1
  52. package/lib/cjs/function/arithmetic/round.js +1 -1
  53. package/lib/cjs/function/arithmetic/sign.js +1 -1
  54. package/lib/cjs/function/arithmetic/subtract.js +5 -3
  55. package/lib/cjs/function/bitwise/bitAnd.js +5 -3
  56. package/lib/cjs/function/bitwise/bitOr.js +5 -3
  57. package/lib/cjs/function/bitwise/bitXor.js +5 -3
  58. package/lib/cjs/function/bitwise/leftShift.js +5 -3
  59. package/lib/cjs/function/bitwise/rightArithShift.js +6 -4
  60. package/lib/cjs/function/bitwise/rightLogShift.js +5 -3
  61. package/lib/cjs/function/geometry/distance.js +3 -3
  62. package/lib/cjs/function/logical/and.js +5 -3
  63. package/lib/cjs/function/logical/or.js +5 -3
  64. package/lib/cjs/function/logical/xor.js +5 -3
  65. package/lib/cjs/function/matrix/column.js +3 -1
  66. package/lib/cjs/function/matrix/det.js +7 -1
  67. package/lib/cjs/function/matrix/diff.js +3 -3
  68. package/lib/cjs/function/matrix/fft.js +43 -4
  69. package/lib/cjs/function/matrix/getMatrixDataType.js +1 -1
  70. package/lib/cjs/function/matrix/partitionSelect.js +7 -2
  71. package/lib/cjs/function/matrix/row.js +3 -1
  72. package/lib/cjs/function/matrix/subset.js +1 -1
  73. package/lib/cjs/function/relational/compare.js +5 -3
  74. package/lib/cjs/function/relational/compareText.js +5 -3
  75. package/lib/cjs/function/relational/equal.js +5 -3
  76. package/lib/cjs/function/relational/larger.js +5 -3
  77. package/lib/cjs/function/relational/largerEq.js +5 -3
  78. package/lib/cjs/function/relational/smaller.js +5 -3
  79. package/lib/cjs/function/relational/smallerEq.js +5 -3
  80. package/lib/cjs/function/relational/unequal.js +5 -3
  81. package/lib/cjs/function/set/setIsSubset.js +1 -1
  82. package/lib/cjs/function/set/setSize.js +3 -2
  83. package/lib/cjs/function/statistics/max.js +1 -1
  84. package/lib/cjs/function/statistics/quantileSeq.js +4 -3
  85. package/lib/cjs/function/trigonometry/atan2.js +5 -3
  86. package/lib/cjs/function/unit/to.js +8 -6
  87. package/lib/cjs/header.js +2 -2
  88. package/lib/cjs/type/matrix/utils/broadcast.js +84 -0
  89. package/lib/cjs/type/matrix/utils/matrixAlgorithmSuite.js +27 -20
  90. package/lib/cjs/version.js +1 -1
  91. package/lib/esm/entry/dependenciesAny/dependenciesAdd.generated.js +2 -0
  92. package/lib/esm/entry/dependenciesAny/dependenciesAnd.generated.js +2 -0
  93. package/lib/esm/entry/dependenciesAny/dependenciesAtan2.generated.js +2 -0
  94. package/lib/esm/entry/dependenciesAny/dependenciesBitAnd.generated.js +2 -0
  95. package/lib/esm/entry/dependenciesAny/dependenciesBitOr.generated.js +2 -0
  96. package/lib/esm/entry/dependenciesAny/dependenciesBitXor.generated.js +2 -0
  97. package/lib/esm/entry/dependenciesAny/dependenciesCompare.generated.js +2 -0
  98. package/lib/esm/entry/dependenciesAny/dependenciesCompareText.generated.js +2 -0
  99. package/lib/esm/entry/dependenciesAny/dependenciesDotDivide.generated.js +2 -0
  100. package/lib/esm/entry/dependenciesAny/dependenciesDotMultiply.generated.js +2 -0
  101. package/lib/esm/entry/dependenciesAny/dependenciesDotPow.generated.js +2 -0
  102. package/lib/esm/entry/dependenciesAny/dependenciesEqual.generated.js +2 -0
  103. package/lib/esm/entry/dependenciesAny/dependenciesFft.generated.js +10 -0
  104. package/lib/esm/entry/dependenciesAny/dependenciesGcd.generated.js +2 -0
  105. package/lib/esm/entry/dependenciesAny/dependenciesLarger.generated.js +2 -0
  106. package/lib/esm/entry/dependenciesAny/dependenciesLargerEq.generated.js +2 -0
  107. package/lib/esm/entry/dependenciesAny/dependenciesLcm.generated.js +2 -0
  108. package/lib/esm/entry/dependenciesAny/dependenciesLeftShift.generated.js +2 -0
  109. package/lib/esm/entry/dependenciesAny/dependenciesMod.generated.js +2 -0
  110. package/lib/esm/entry/dependenciesAny/dependenciesNthRoot.generated.js +2 -0
  111. package/lib/esm/entry/dependenciesAny/dependenciesOr.generated.js +2 -0
  112. package/lib/esm/entry/dependenciesAny/dependenciesRightArithShift.generated.js +2 -0
  113. package/lib/esm/entry/dependenciesAny/dependenciesRightLogShift.generated.js +2 -0
  114. package/lib/esm/entry/dependenciesAny/dependenciesSimplifyConstant.generated.js +0 -2
  115. package/lib/esm/entry/dependenciesAny/dependenciesSmaller.generated.js +2 -0
  116. package/lib/esm/entry/dependenciesAny/dependenciesSmallerEq.generated.js +2 -0
  117. package/lib/esm/entry/dependenciesAny/dependenciesSubtract.generated.js +2 -0
  118. package/lib/esm/entry/dependenciesAny/dependenciesTo.generated.js +2 -0
  119. package/lib/esm/entry/dependenciesAny/dependenciesUnequal.generated.js +2 -0
  120. package/lib/esm/entry/dependenciesAny/dependenciesXor.generated.js +2 -0
  121. package/lib/esm/entry/dependenciesNumber/dependenciesSimplifyConstant.generated.js +0 -2
  122. package/lib/esm/entry/impureFunctionsAny.generated.js +100 -101
  123. package/lib/esm/entry/impureFunctionsNumber.generated.js +38 -39
  124. package/lib/esm/entry/pureFunctionsAny.generated.js +332 -299
  125. package/lib/esm/expression/embeddedDocs/function/matrix/partitionSelect.js +1 -1
  126. package/lib/esm/expression/embeddedDocs/function/matrix/sort.js +1 -1
  127. package/lib/esm/function/algebra/simplifyConstant.js +1 -2
  128. package/lib/esm/function/arithmetic/add.js +38 -37
  129. package/lib/esm/function/arithmetic/dotDivide.js +5 -3
  130. package/lib/esm/function/arithmetic/dotMultiply.js +5 -3
  131. package/lib/esm/function/arithmetic/dotPow.js +5 -3
  132. package/lib/esm/function/arithmetic/expm1.js +1 -1
  133. package/lib/esm/function/arithmetic/gcd.js +32 -13
  134. package/lib/esm/function/arithmetic/lcm.js +5 -3
  135. package/lib/esm/function/arithmetic/mod.js +5 -3
  136. package/lib/esm/function/arithmetic/nthRoot.js +5 -3
  137. package/lib/esm/function/arithmetic/nthRoots.js +2 -1
  138. package/lib/esm/function/arithmetic/round.js +1 -1
  139. package/lib/esm/function/arithmetic/sign.js +1 -1
  140. package/lib/esm/function/arithmetic/subtract.js +5 -3
  141. package/lib/esm/function/bitwise/bitAnd.js +5 -3
  142. package/lib/esm/function/bitwise/bitOr.js +5 -3
  143. package/lib/esm/function/bitwise/bitXor.js +5 -3
  144. package/lib/esm/function/bitwise/leftShift.js +5 -3
  145. package/lib/esm/function/bitwise/rightArithShift.js +6 -4
  146. package/lib/esm/function/bitwise/rightLogShift.js +5 -3
  147. package/lib/esm/function/geometry/distance.js +3 -3
  148. package/lib/esm/function/logical/and.js +5 -3
  149. package/lib/esm/function/logical/or.js +5 -3
  150. package/lib/esm/function/logical/xor.js +5 -3
  151. package/lib/esm/function/matrix/column.js +3 -1
  152. package/lib/esm/function/matrix/det.js +7 -1
  153. package/lib/esm/function/matrix/diff.js +3 -3
  154. package/lib/esm/function/matrix/fft.js +37 -4
  155. package/lib/esm/function/matrix/getMatrixDataType.js +1 -1
  156. package/lib/esm/function/matrix/partitionSelect.js +7 -2
  157. package/lib/esm/function/matrix/row.js +3 -1
  158. package/lib/esm/function/matrix/subset.js +1 -1
  159. package/lib/esm/function/relational/compare.js +5 -3
  160. package/lib/esm/function/relational/compareText.js +5 -3
  161. package/lib/esm/function/relational/equal.js +5 -3
  162. package/lib/esm/function/relational/larger.js +5 -3
  163. package/lib/esm/function/relational/largerEq.js +5 -3
  164. package/lib/esm/function/relational/smaller.js +5 -3
  165. package/lib/esm/function/relational/smallerEq.js +5 -3
  166. package/lib/esm/function/relational/unequal.js +5 -3
  167. package/lib/esm/function/set/setIsSubset.js +1 -1
  168. package/lib/esm/function/set/setSize.js +3 -2
  169. package/lib/esm/function/statistics/max.js +1 -1
  170. package/lib/esm/function/statistics/quantileSeq.js +4 -3
  171. package/lib/esm/function/trigonometry/atan2.js +5 -3
  172. package/lib/esm/function/unit/to.js +8 -6
  173. package/lib/esm/type/matrix/utils/broadcast.js +75 -0
  174. package/lib/esm/type/matrix/utils/matrixAlgorithmSuite.js +25 -20
  175. package/lib/esm/version.js +1 -1
  176. package/package.json +14 -14
  177. package/types/index.d.ts +247 -471
@@ -6,14 +6,15 @@ import { factory } from '../../utils/factory.js';
6
6
  import { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';
7
7
  import { andNumber } from '../../plain/number/index.js';
8
8
  var name = 'and';
9
- var dependencies = ['typed', 'matrix', 'equalScalar', 'zeros', 'not'];
9
+ var dependencies = ['typed', 'matrix', 'equalScalar', 'zeros', 'not', 'concat'];
10
10
  export var createAnd = /* #__PURE__ */factory(name, dependencies, _ref => {
11
11
  var {
12
12
  typed,
13
13
  matrix,
14
14
  equalScalar,
15
15
  zeros,
16
- not
16
+ not,
17
+ concat
17
18
  } = _ref;
18
19
  var matAlgo02xDS0 = createMatAlgo02xDS0({
19
20
  typed,
@@ -32,7 +33,8 @@ export var createAnd = /* #__PURE__ */factory(name, dependencies, _ref => {
32
33
  });
33
34
  var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
34
35
  typed,
35
- matrix
36
+ matrix,
37
+ concat
36
38
  });
37
39
 
38
40
  /**
@@ -5,13 +5,14 @@ import { factory } from '../../utils/factory.js';
5
5
  import { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';
6
6
  import { orNumber } from '../../plain/number/index.js';
7
7
  var name = 'or';
8
- var dependencies = ['typed', 'matrix', 'equalScalar', 'DenseMatrix'];
8
+ var dependencies = ['typed', 'matrix', 'equalScalar', 'DenseMatrix', 'concat'];
9
9
  export var createOr = /* #__PURE__ */factory(name, dependencies, _ref => {
10
10
  var {
11
11
  typed,
12
12
  matrix,
13
13
  equalScalar,
14
- DenseMatrix
14
+ DenseMatrix,
15
+ concat
15
16
  } = _ref;
16
17
  var matAlgo03xDSf = createMatAlgo03xDSf({
17
18
  typed
@@ -26,7 +27,8 @@ export var createOr = /* #__PURE__ */factory(name, dependencies, _ref => {
26
27
  });
27
28
  var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
28
29
  typed,
29
- matrix
30
+ matrix,
31
+ concat
30
32
  });
31
33
 
32
34
  /**
@@ -5,12 +5,13 @@ import { factory } from '../../utils/factory.js';
5
5
  import { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';
6
6
  import { xorNumber } from '../../plain/number/index.js';
7
7
  var name = 'xor';
8
- var dependencies = ['typed', 'matrix', 'DenseMatrix'];
8
+ var dependencies = ['typed', 'matrix', 'DenseMatrix', 'concat'];
9
9
  export var createXor = /* #__PURE__ */factory(name, dependencies, _ref => {
10
10
  var {
11
11
  typed,
12
12
  matrix,
13
- DenseMatrix
13
+ DenseMatrix,
14
+ concat
14
15
  } = _ref;
15
16
  var matAlgo03xDSf = createMatAlgo03xDSf({
16
17
  typed
@@ -25,7 +26,8 @@ export var createXor = /* #__PURE__ */factory(name, dependencies, _ref => {
25
26
  });
26
27
  var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
27
28
  typed,
28
- matrix
29
+ matrix,
30
+ concat
29
31
  });
30
32
 
31
33
  /**
@@ -1,4 +1,5 @@
1
1
  import { factory } from '../../utils/factory.js';
2
+ import { isMatrix } from '../../utils/is.js';
2
3
  import { clone } from '../../utils/object.js';
3
4
  import { validateIndex } from '../../utils/array.js';
4
5
  var name = 'column';
@@ -52,6 +53,7 @@ export var createColumn = /* #__PURE__ */factory(name, dependencies, _ref => {
52
53
  validateIndex(column, value.size()[1]);
53
54
  var rowRange = range(0, value.size()[0]);
54
55
  var index = new Index(rowRange, column);
55
- return value.subset(index);
56
+ var result = value.subset(index);
57
+ return isMatrix(result) ? result : matrix([[result]]);
56
58
  }
57
59
  });
@@ -62,16 +62,22 @@ export var createDet = /* #__PURE__ */factory(name, dependencies, _ref => {
62
62
  // vector
63
63
  if (size[0] === 1) {
64
64
  return clone(x.valueOf()[0]);
65
+ }
66
+ if (size[0] === 0) {
67
+ return 1; // det of an empty matrix is per definition 1
65
68
  } else {
66
69
  throw new RangeError('Matrix must be square ' + '(size: ' + format(size) + ')');
67
70
  }
68
71
  case 2:
69
72
  {
70
- // two dimensional array
73
+ // two-dimensional array
71
74
  var rows = size[0];
72
75
  var cols = size[1];
73
76
  if (rows === cols) {
74
77
  return _det(x.clone().valueOf(), rows, cols);
78
+ }
79
+ if (cols === 0) {
80
+ return 1; // det of an empty matrix is per definition 1
75
81
  } else {
76
82
  throw new RangeError('Matrix must be square ' + '(size: ' + format(size) + ')');
77
83
  }
@@ -52,9 +52,9 @@ export var createDiff = /* #__PURE__ */factory(name, dependencies, _ref => {
52
52
  * subtract
53
53
  * partitionSelect
54
54
  *
55
- * @param {Array | Matrix} arr An array or matrix
56
- * @param {number} dim Dimension
57
- * @return {Array | Matrix} Difference between array elements in given dimension
55
+ * @param {Array | Matrix} arr An array or matrix
56
+ * @param {number | BigNumber} dim Dimension
57
+ * @return {Array | Matrix} Difference between array elements in given dimension
58
58
  */
59
59
  return typed(name, {
60
60
  'Array | Matrix': function ArrayMatrix(arr) {
@@ -1,7 +1,7 @@
1
1
  import { arraySize } from '../../utils/array.js';
2
2
  import { factory } from '../../utils/factory.js';
3
3
  var name = 'fft';
4
- var dependencies = ['typed', 'matrix', 'addScalar', 'multiplyScalar', 'divideScalar', 'exp', 'tau', 'i'];
4
+ var dependencies = ['typed', 'matrix', 'addScalar', 'multiplyScalar', 'divideScalar', 'exp', 'tau', 'i', 'dotDivide', 'conj', 'pow', 'ceil', 'log2'];
5
5
  export var createFft = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed,
@@ -11,7 +11,12 @@ export var createFft = /* #__PURE__ */factory(name, dependencies, _ref => {
11
11
  divideScalar,
12
12
  exp,
13
13
  tau,
14
- i: I
14
+ i: I,
15
+ dotDivide,
16
+ conj,
17
+ pow,
18
+ ceil,
19
+ log2
15
20
  } = _ref;
16
21
  /**
17
22
  * Calculate N-dimensional fourier transform
@@ -70,7 +75,32 @@ export var createFft = /* #__PURE__ */factory(name, dependencies, _ref => {
70
75
  }
71
76
  return _transpose(_1dFft(_transpose(arr), 1));
72
77
  }
73
-
78
+ /**
79
+ * Perform an 1-dimensional non-power-of-2 Fourier transform using Chirp-Z Transform
80
+ *
81
+ * @param {Array} arr The array
82
+ * @return {Array} resulting array
83
+ */
84
+ function _czt(arr) {
85
+ var n = arr.length;
86
+ var w = exp(divideScalar(multiplyScalar(-1, multiplyScalar(I, tau)), n));
87
+ var chirp = [];
88
+ for (var i = 1 - n; i < n; i++) {
89
+ chirp.push(pow(w, divideScalar(pow(i, 2), 2)));
90
+ }
91
+ var N2 = pow(2, ceil(log2(n + n - 1)));
92
+ var xp = [...new Array(n).fill(0).map((_, i) => multiplyScalar(arr[i], chirp[n - 1 + i])), ...new Array(N2 - n).fill(0)];
93
+ var ichirp = [...new Array(n + n - 1).fill(0).map((_, i) => divideScalar(1, chirp[i])), ...new Array(N2 - (n + n - 1)).fill(0)];
94
+ var fftXp = _fft(xp);
95
+ var fftIchirp = _fft(ichirp);
96
+ var fftProduct = new Array(N2).fill(0).map((_, i) => multiplyScalar(fftXp[i], fftIchirp[i]));
97
+ var ifftProduct = dotDivide(conj(_ndFft(conj(fftProduct))), N2);
98
+ var ret = [];
99
+ for (var _i = n - 1; _i < n + n - 1; _i++) {
100
+ ret.push(multiplyScalar(ifftProduct[_i], chirp[_i]));
101
+ }
102
+ return ret;
103
+ }
74
104
  /**
75
105
  * Perform an 1-dimensional Fourier transform
76
106
  *
@@ -89,7 +119,10 @@ export var createFft = /* #__PURE__ */factory(name, dependencies, _ref => {
89
119
  ret[k + len / 2] = addScalar(p, multiplyScalar(-1, q));
90
120
  }
91
121
  return ret;
122
+ } else {
123
+ // use chirp-z transform for non-power-of-2 FFT
124
+ return _czt(arr);
92
125
  }
93
- throw new Error('Can only calculate FFT of power-of-two size');
126
+ // throw new Error('Can only calculate FFT of power-of-two size')
94
127
  }
95
128
  });
@@ -21,7 +21,7 @@ export var createGetMatrixDataType = /* #__PURE__ */factory(name, dependencies,
21
21
  *
22
22
  * const x = [ [1, 2, 3], [4, 5, 6] ]
23
23
  * const mixedX = [ [1, true], [2, 3] ]
24
- * const fractionX = [ [math.fraction(1, 3)], [math.fraction(1, 3] ]
24
+ * const fractionX = [ [math.fraction(1, 3)], [math.fraction(1, 3)] ]
25
25
  * const unitX = [ [math.unit('5cm')], [math.unit('5cm')] ]
26
26
  * const bigNumberX = [ [math.bignumber(1)], [math.bignumber(0)] ]
27
27
  * const sparse = math.sparse(x)
@@ -25,14 +25,19 @@ export var createPartitionSelect = /* #__PURE__ */factory(name, dependencies, _r
25
25
  *
26
26
  * Examples:
27
27
  *
28
- * math.partitionSelect([5, 10, 1], 2) // returns 10
29
- * math.partitionSelect(['C', 'B', 'A', 'D'], 1) // returns 'B'
28
+ * math.partitionSelect([5, 10, 1], 2) // returns 10
29
+ * math.partitionSelect(['C', 'B', 'A', 'D'], 1, math.compareText) // returns 'B'
30
30
  *
31
31
  * function sortByLength (a, b) {
32
32
  * return a.length - b.length
33
33
  * }
34
34
  * math.partitionSelect(['Langdon', 'Tom', 'Sara'], 2, sortByLength) // returns 'Langdon'
35
35
  *
36
+ * // the input array is mutated
37
+ * arr = [5, 2, 1]
38
+ * math.partitionSelect(arr, 0) // returns 1, arr is now: [1, 2, 5]
39
+ * math.partitionSelect(arr, 1, 'desc') // returns 2, arr is now: [5, 2, 1]
40
+ *
36
41
  * See also:
37
42
  *
38
43
  * sort
@@ -1,4 +1,5 @@
1
1
  import { factory } from '../../utils/factory.js';
2
+ import { isMatrix } from '../../utils/is.js';
2
3
  import { clone } from '../../utils/object.js';
3
4
  import { validateIndex } from '../../utils/array.js';
4
5
  var name = 'row';
@@ -52,6 +53,7 @@ export var createRow = /* #__PURE__ */factory(name, dependencies, _ref => {
52
53
  validateIndex(row, value.size()[0]);
53
54
  var columnRange = range(0, value.size()[1]);
54
55
  var index = new Index(row, columnRange);
55
- return value.subset(index);
56
+ var result = value.subset(index);
57
+ return isMatrix(result) ? result : matrix([[result]]);
56
58
  }
57
59
  });
@@ -27,7 +27,7 @@ export var createSubset = /* #__PURE__ */factory(name, dependencies, _ref => {
27
27
  *
28
28
  * // replace a subset
29
29
  * const e = []
30
- * const f = math.subset(e, math.index(0, [0, 2]), [5, 6]) // f = [[5, 6]] and e = [[5, 0, 6]]
30
+ * const f = math.subset(e, math.index(0, [0, 2]), [5, 6]) // f = [[5, 6]]
31
31
  * const g = math.subset(f, math.index(1, 1), 7, 0) // g = [[5, 6], [0, 7]]
32
32
  *
33
33
  * // get submatrix using ranges
@@ -7,7 +7,7 @@ import { createMatAlgo05xSfSf } from '../../type/matrix/utils/matAlgo05xSfSf.js'
7
7
  import { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';
8
8
  import { createCompareUnits } from './compareUnits.js';
9
9
  var name = 'compare';
10
- var dependencies = ['typed', 'config', 'matrix', 'equalScalar', 'BigNumber', 'Fraction', 'DenseMatrix'];
10
+ var dependencies = ['typed', 'config', 'matrix', 'equalScalar', 'BigNumber', 'Fraction', 'DenseMatrix', 'concat'];
11
11
  export var createCompare = /* #__PURE__ */factory(name, dependencies, _ref => {
12
12
  var {
13
13
  typed,
@@ -16,7 +16,8 @@ export var createCompare = /* #__PURE__ */factory(name, dependencies, _ref => {
16
16
  matrix,
17
17
  BigNumber,
18
18
  Fraction,
19
- DenseMatrix
19
+ DenseMatrix,
20
+ concat
20
21
  } = _ref;
21
22
  var matAlgo03xDSf = createMatAlgo03xDSf({
22
23
  typed
@@ -31,7 +32,8 @@ export var createCompare = /* #__PURE__ */factory(name, dependencies, _ref => {
31
32
  });
32
33
  var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
33
34
  typed,
34
- matrix
35
+ matrix,
36
+ concat
35
37
  });
36
38
  var compareUnits = createCompareUnits({
37
39
  typed
@@ -2,16 +2,18 @@ import { compareText as _compareText } from '../../utils/string.js';
2
2
  import { factory } from '../../utils/factory.js';
3
3
  import { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';
4
4
  var name = 'compareText';
5
- var dependencies = ['typed', 'matrix'];
5
+ var dependencies = ['typed', 'matrix', 'concat'];
6
6
  _compareText.signature = 'any, any';
7
7
  export var createCompareText = /* #__PURE__ */factory(name, dependencies, _ref => {
8
8
  var {
9
9
  typed,
10
- matrix
10
+ matrix,
11
+ concat
11
12
  } = _ref;
12
13
  var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
13
14
  typed,
14
- matrix
15
+ matrix,
16
+ concat
15
17
  });
16
18
 
17
19
  /**
@@ -4,13 +4,14 @@ import { createMatAlgo07xSSf } from '../../type/matrix/utils/matAlgo07xSSf.js';
4
4
  import { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';
5
5
  import { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';
6
6
  var name = 'equal';
7
- var dependencies = ['typed', 'matrix', 'equalScalar', 'DenseMatrix'];
7
+ var dependencies = ['typed', 'matrix', 'equalScalar', 'DenseMatrix', 'concat'];
8
8
  export var createEqual = /* #__PURE__ */factory(name, dependencies, _ref => {
9
9
  var {
10
10
  typed,
11
11
  matrix,
12
12
  equalScalar,
13
- DenseMatrix
13
+ DenseMatrix,
14
+ concat
14
15
  } = _ref;
15
16
  var matAlgo03xDSf = createMatAlgo03xDSf({
16
17
  typed
@@ -25,7 +26,8 @@ export var createEqual = /* #__PURE__ */factory(name, dependencies, _ref => {
25
26
  });
26
27
  var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
27
28
  typed,
28
- matrix
29
+ matrix,
30
+ concat
29
31
  });
30
32
 
31
33
  /**
@@ -7,13 +7,14 @@ import { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';
7
7
  import { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';
8
8
  import { createCompareUnits } from './compareUnits.js';
9
9
  var name = 'larger';
10
- var dependencies = ['typed', 'config', 'matrix', 'DenseMatrix'];
10
+ var dependencies = ['typed', 'config', 'matrix', 'DenseMatrix', 'concat'];
11
11
  export var createLarger = /* #__PURE__ */factory(name, dependencies, _ref => {
12
12
  var {
13
13
  typed,
14
14
  config,
15
15
  matrix,
16
- DenseMatrix
16
+ DenseMatrix,
17
+ concat
17
18
  } = _ref;
18
19
  var matAlgo03xDSf = createMatAlgo03xDSf({
19
20
  typed
@@ -28,7 +29,8 @@ export var createLarger = /* #__PURE__ */factory(name, dependencies, _ref => {
28
29
  });
29
30
  var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
30
31
  typed,
31
- matrix
32
+ matrix,
33
+ concat
32
34
  });
33
35
  var compareUnits = createCompareUnits({
34
36
  typed
@@ -7,13 +7,14 @@ import { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';
7
7
  import { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';
8
8
  import { createCompareUnits } from './compareUnits.js';
9
9
  var name = 'largerEq';
10
- var dependencies = ['typed', 'config', 'matrix', 'DenseMatrix'];
10
+ var dependencies = ['typed', 'config', 'matrix', 'DenseMatrix', 'concat'];
11
11
  export var createLargerEq = /* #__PURE__ */factory(name, dependencies, _ref => {
12
12
  var {
13
13
  typed,
14
14
  config,
15
15
  matrix,
16
- DenseMatrix
16
+ DenseMatrix,
17
+ concat
17
18
  } = _ref;
18
19
  var matAlgo03xDSf = createMatAlgo03xDSf({
19
20
  typed
@@ -28,7 +29,8 @@ export var createLargerEq = /* #__PURE__ */factory(name, dependencies, _ref => {
28
29
  });
29
30
  var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
30
31
  typed,
31
- matrix
32
+ matrix,
33
+ concat
32
34
  });
33
35
  var compareUnits = createCompareUnits({
34
36
  typed
@@ -7,13 +7,14 @@ import { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';
7
7
  import { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';
8
8
  import { createCompareUnits } from './compareUnits.js';
9
9
  var name = 'smaller';
10
- var dependencies = ['typed', 'config', 'matrix', 'DenseMatrix'];
10
+ var dependencies = ['typed', 'config', 'matrix', 'DenseMatrix', 'concat'];
11
11
  export var createSmaller = /* #__PURE__ */factory(name, dependencies, _ref => {
12
12
  var {
13
13
  typed,
14
14
  config,
15
15
  matrix,
16
- DenseMatrix
16
+ DenseMatrix,
17
+ concat
17
18
  } = _ref;
18
19
  var matAlgo03xDSf = createMatAlgo03xDSf({
19
20
  typed
@@ -28,7 +29,8 @@ export var createSmaller = /* #__PURE__ */factory(name, dependencies, _ref => {
28
29
  });
29
30
  var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
30
31
  typed,
31
- matrix
32
+ matrix,
33
+ concat
32
34
  });
33
35
  var compareUnits = createCompareUnits({
34
36
  typed
@@ -7,13 +7,14 @@ import { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';
7
7
  import { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';
8
8
  import { createCompareUnits } from './compareUnits.js';
9
9
  var name = 'smallerEq';
10
- var dependencies = ['typed', 'config', 'matrix', 'DenseMatrix'];
10
+ var dependencies = ['typed', 'config', 'matrix', 'DenseMatrix', 'concat'];
11
11
  export var createSmallerEq = /* #__PURE__ */factory(name, dependencies, _ref => {
12
12
  var {
13
13
  typed,
14
14
  config,
15
15
  matrix,
16
- DenseMatrix
16
+ DenseMatrix,
17
+ concat
17
18
  } = _ref;
18
19
  var matAlgo03xDSf = createMatAlgo03xDSf({
19
20
  typed
@@ -28,7 +29,8 @@ export var createSmallerEq = /* #__PURE__ */factory(name, dependencies, _ref =>
28
29
  });
29
30
  var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
30
31
  typed,
31
- matrix
32
+ matrix,
33
+ concat
32
34
  });
33
35
  var compareUnits = createCompareUnits({
34
36
  typed
@@ -4,14 +4,15 @@ import { createMatAlgo07xSSf } from '../../type/matrix/utils/matAlgo07xSSf.js';
4
4
  import { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';
5
5
  import { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';
6
6
  var name = 'unequal';
7
- var dependencies = ['typed', 'config', 'equalScalar', 'matrix', 'DenseMatrix'];
7
+ var dependencies = ['typed', 'config', 'equalScalar', 'matrix', 'DenseMatrix', 'concat'];
8
8
  export var createUnequal = /* #__PURE__ */factory(name, dependencies, _ref => {
9
9
  var {
10
10
  typed,
11
11
  config,
12
12
  equalScalar,
13
13
  matrix,
14
- DenseMatrix
14
+ DenseMatrix,
15
+ concat
15
16
  } = _ref;
16
17
  var matAlgo03xDSf = createMatAlgo03xDSf({
17
18
  typed
@@ -26,7 +27,8 @@ export var createUnequal = /* #__PURE__ */factory(name, dependencies, _ref => {
26
27
  });
27
28
  var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
28
29
  typed,
29
- matrix
30
+ matrix,
31
+ concat
30
32
  });
31
33
 
32
34
  /**
@@ -29,7 +29,7 @@ export var createSetIsSubset = /* #__PURE__ */factory(name, dependencies, _ref =
29
29
  *
30
30
  * @param {Array | Matrix} a1 A (multi)set
31
31
  * @param {Array | Matrix} a2 A (multi)set
32
- * @return {boolean} true | false
32
+ * @return {boolean} Returns true when a1 is a subset of a2, returns false otherwise
33
33
  */
34
34
  return typed(name, {
35
35
  'Array | Matrix, Array | Matrix': function ArrayMatrixArrayMatrix(a1, a2) {
@@ -25,8 +25,9 @@ export var createSetSize = /* #__PURE__ */factory(name, dependencies, _ref => {
25
25
  *
26
26
  * setUnion, setIntersect, setDifference
27
27
  *
28
- * @param {Array | Matrix} a A multiset
29
- * @return {number} The number of elements of the (multi)set
28
+ * @param {Array | Matrix} a A multiset
29
+ * @param {boolean} [unique] If true, only the unique values are counted. False by default
30
+ * @return {number} The number of elements of the (multi)set
30
31
  */
31
32
  return typed(name, {
32
33
  'Array | Matrix': function ArrayMatrix(a) {
@@ -29,7 +29,7 @@ export var createMax = /* #__PURE__ */factory(name, dependencies, _ref => {
29
29
  *
30
30
  * // maximum over a specified dimension (zero-based)
31
31
  * math.max([[2, 5], [4, 3], [1, 7]], 0) // returns [4, 7]
32
- * math.max([[2, 5], [4, 3]], [1, 7], 1) // returns [5, 4, 7]
32
+ * math.max([[2, 5], [4, 3], [1, 7]], 1) // returns [5, 4, 7]
33
33
  *
34
34
  * math.max(2.7, 7.1, -4.5, 2.0, 4.1) // returns 7.1
35
35
  * math.min(2.7, 7.1, -4.5, 2.0, 4.1) // returns -4.5
@@ -106,11 +106,12 @@ export var createQuantileSeq = /* #__PURE__ */factory(name, dependencies, _ref =
106
106
  return probArr;
107
107
  }
108
108
  }
109
- if (Array.isArray(probOrN)) {
109
+ if (isCollection(probOrN)) {
110
110
  // quantileSeq([a, b, c, d, ...], [prob1, prob2, ...][,sorted])
111
- probArr = new Array(probOrN.length);
111
+ var probOrNArr = probOrN.valueOf();
112
+ probArr = new Array(probOrNArr.length);
112
113
  for (var _i2 = 0; _i2 < probArr.length; ++_i2) {
113
- var currProb = probOrN[_i2];
114
+ var currProb = probOrNArr[_i2];
114
115
  if (isNumber(currProb)) {
115
116
  if (currProb < 0 || currProb > 1) {
116
117
  throw new Error('Probability must be between 0 and 1, inclusive');
@@ -6,14 +6,15 @@ import { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';
6
6
  import { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';
7
7
  import { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';
8
8
  var name = 'atan2';
9
- var dependencies = ['typed', 'matrix', 'equalScalar', 'BigNumber', 'DenseMatrix'];
9
+ var dependencies = ['typed', 'matrix', 'equalScalar', 'BigNumber', 'DenseMatrix', 'concat'];
10
10
  export var createAtan2 = /* #__PURE__ */factory(name, dependencies, _ref => {
11
11
  var {
12
12
  typed,
13
13
  matrix,
14
14
  equalScalar,
15
15
  BigNumber,
16
- DenseMatrix
16
+ DenseMatrix,
17
+ concat
17
18
  } = _ref;
18
19
  var matAlgo02xDS0 = createMatAlgo02xDS0({
19
20
  typed,
@@ -36,7 +37,8 @@ export var createAtan2 = /* #__PURE__ */factory(name, dependencies, _ref => {
36
37
  });
37
38
  var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
38
39
  typed,
39
- matrix
40
+ matrix,
41
+ concat
40
42
  });
41
43
 
42
44
  /**
@@ -1,15 +1,17 @@
1
1
  import { factory } from '../../utils/factory.js';
2
2
  import { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';
3
3
  var name = 'to';
4
- var dependencies = ['typed', 'matrix'];
4
+ var dependencies = ['typed', 'matrix', 'concat'];
5
5
  export var createTo = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed,
8
- matrix
8
+ matrix,
9
+ concat
9
10
  } = _ref;
10
11
  var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
11
12
  typed,
12
- matrix
13
+ matrix,
14
+ concat
13
15
  });
14
16
 
15
17
  /**
@@ -23,9 +25,9 @@ export var createTo = /* #__PURE__ */factory(name, dependencies, _ref => {
23
25
  *
24
26
  * Examples:
25
27
  *
26
- * math.to(math.unit('2 inch'), 'cm') // returns Unit 5.08 cm
27
- * math.to(math.unit('2 inch'), math.unit(null, 'cm')) // returns Unit 5.08 cm
28
- * math.to(math.unit(16, 'bytes'), 'bits') // returns Unit 128 bits
28
+ * math.to(math.unit('2 inch'), 'cm') // returns Unit 5.08 cm
29
+ * math.to(math.unit('2 inch'), math.unit('cm')) // returns Unit 5.08 cm
30
+ * math.to(math.unit(16, 'bytes'), 'bits') // returns Unit 128 bits
29
31
  *
30
32
  * See also:
31
33
  *