mathjs 11.5.1 → 11.7.0

Sign up to get free protection for your applications and to get access to all the features.
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
  *