mathjs 13.0.2 → 13.1.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 (214) hide show
  1. package/HISTORY.md +26 -1
  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/core/create.js +12 -9
  6. package/lib/cjs/core/function/import.js +1 -1
  7. package/lib/cjs/core/function/typed.js +3 -4
  8. package/lib/cjs/entry/dependenciesAny/dependenciesFlatten.generated.js +0 -2
  9. package/lib/cjs/entry/dependenciesAny/dependenciesSqueeze.generated.js +0 -2
  10. package/lib/cjs/entry/impureFunctionsAny.generated.js +2 -2
  11. package/lib/cjs/entry/pureFunctionsAny.generated.js +6 -8
  12. package/lib/cjs/entry/typeChecks.js +18 -0
  13. package/lib/cjs/expression/embeddedDocs/embeddedDocs.js +2 -2
  14. package/lib/cjs/expression/embeddedDocs/function/arithmetic/hypot.js +1 -1
  15. package/lib/cjs/expression/embeddedDocs/function/matrix/diff.js +1 -1
  16. package/lib/cjs/expression/embeddedDocs/function/matrix/fft.js +1 -1
  17. package/lib/cjs/expression/embeddedDocs/function/matrix/ifft.js +1 -1
  18. package/lib/cjs/expression/embeddedDocs/function/matrix/kron.js +1 -1
  19. package/lib/cjs/expression/embeddedDocs/function/matrix/map.js +3 -3
  20. package/lib/cjs/expression/embeddedDocs/function/special/zeta.js +1 -1
  21. package/lib/cjs/expression/embeddedDocs/function/statistics/quantileSeq.js +1 -1
  22. package/lib/cjs/expression/embeddedDocs/function/trigonometry/acoth.js +1 -1
  23. package/lib/cjs/expression/embeddedDocs/function/trigonometry/acsch.js +1 -1
  24. package/lib/cjs/expression/embeddedDocs/function/utils/clone.js +1 -1
  25. package/lib/cjs/expression/function/evaluate.js +5 -0
  26. package/lib/cjs/expression/node/FunctionNode.js +1 -1
  27. package/lib/cjs/expression/transform/filter.transform.js +2 -2
  28. package/lib/cjs/expression/transform/map.transform.js +104 -37
  29. package/lib/cjs/expression/transform/utils/dimToZeroBase.js +23 -0
  30. package/lib/cjs/expression/transform/utils/lastDimToZeroBase.js +3 -4
  31. package/lib/cjs/function/arithmetic/hypot.js +3 -3
  32. package/lib/cjs/function/matrix/apply.js +1 -1
  33. package/lib/cjs/function/matrix/fft.js +3 -3
  34. package/lib/cjs/function/matrix/filter.js +2 -2
  35. package/lib/cjs/function/matrix/flatten.js +5 -6
  36. package/lib/cjs/function/matrix/ifft.js +2 -2
  37. package/lib/cjs/function/matrix/kron.js +4 -4
  38. package/lib/cjs/function/matrix/map.js +109 -18
  39. package/lib/cjs/function/matrix/size.js +7 -7
  40. package/lib/cjs/function/matrix/squeeze.js +3 -4
  41. package/lib/cjs/function/probability/random.js +1 -1
  42. package/lib/cjs/function/probability/randomInt.js +1 -1
  43. package/lib/cjs/function/statistics/cumsum.js +2 -2
  44. package/lib/cjs/function/trigonometry/acoth.js +2 -2
  45. package/lib/cjs/function/trigonometry/acsch.js +2 -2
  46. package/lib/cjs/header.js +2 -2
  47. package/lib/cjs/type/matrix/DenseMatrix.js +3 -28
  48. package/lib/cjs/type/matrix/SparseMatrix.js +5 -8
  49. package/lib/cjs/type/unit/Unit.js +57 -114
  50. package/lib/cjs/utils/array.js +27 -0
  51. package/lib/cjs/utils/collection.js +1 -1
  52. package/lib/cjs/utils/function.js +0 -14
  53. package/lib/cjs/utils/is.js +27 -0
  54. package/lib/cjs/utils/map.js +2 -20
  55. package/lib/cjs/version.js +1 -1
  56. package/lib/esm/core/create.js +9 -6
  57. package/lib/esm/core/function/import.js +1 -1
  58. package/lib/esm/core/function/typed.js +2 -3
  59. package/lib/esm/entry/dependenciesAny/dependenciesFlatten.generated.js +0 -2
  60. package/lib/esm/entry/dependenciesAny/dependenciesSqueeze.generated.js +0 -2
  61. package/lib/esm/entry/impureFunctionsAny.generated.js +3 -3
  62. package/lib/esm/entry/pureFunctionsAny.generated.js +7 -9
  63. package/lib/esm/entry/typeChecks.js +1 -1
  64. package/lib/esm/expression/embeddedDocs/embeddedDocs.js +2 -2
  65. package/lib/esm/expression/embeddedDocs/function/arithmetic/hypot.js +1 -1
  66. package/lib/esm/expression/embeddedDocs/function/matrix/diff.js +1 -1
  67. package/lib/esm/expression/embeddedDocs/function/matrix/fft.js +1 -1
  68. package/lib/esm/expression/embeddedDocs/function/matrix/ifft.js +1 -1
  69. package/lib/esm/expression/embeddedDocs/function/matrix/kron.js +1 -1
  70. package/lib/esm/expression/embeddedDocs/function/matrix/map.js +3 -3
  71. package/lib/esm/expression/embeddedDocs/function/special/zeta.js +1 -1
  72. package/lib/esm/expression/embeddedDocs/function/statistics/quantileSeq.js +1 -1
  73. package/lib/esm/expression/embeddedDocs/function/trigonometry/acoth.js +1 -1
  74. package/lib/esm/expression/embeddedDocs/function/trigonometry/acsch.js +1 -1
  75. package/lib/esm/expression/embeddedDocs/function/utils/clone.js +1 -1
  76. package/lib/esm/expression/function/compile.js +1 -1
  77. package/lib/esm/expression/function/evaluate.js +8 -3
  78. package/lib/esm/expression/node/FunctionNode.js +1 -1
  79. package/lib/esm/expression/parse.js +2 -2
  80. package/lib/esm/expression/transform/filter.transform.js +4 -4
  81. package/lib/esm/expression/transform/forEach.transform.js +4 -4
  82. package/lib/esm/expression/transform/map.transform.js +104 -37
  83. package/lib/esm/expression/transform/print.transform.js +2 -2
  84. package/lib/esm/expression/transform/utils/dimToZeroBase.js +16 -0
  85. package/lib/esm/expression/transform/utils/lastDimToZeroBase.js +4 -6
  86. package/lib/esm/function/algebra/decomposition/slu.js +1 -1
  87. package/lib/esm/function/algebra/derivative.js +15 -15
  88. package/lib/esm/function/algebra/lyap.js +4 -4
  89. package/lib/esm/function/algebra/simplify/util.js +3 -3
  90. package/lib/esm/function/algebra/simplifyConstant.js +9 -9
  91. package/lib/esm/function/algebra/solver/lsolve.js +3 -3
  92. package/lib/esm/function/algebra/solver/lsolveAll.js +3 -3
  93. package/lib/esm/function/algebra/solver/lusolve.js +5 -5
  94. package/lib/esm/function/algebra/solver/usolve.js +3 -3
  95. package/lib/esm/function/algebra/solver/usolveAll.js +3 -3
  96. package/lib/esm/function/algebra/sylvester.js +7 -7
  97. package/lib/esm/function/arithmetic/addScalar.js +4 -4
  98. package/lib/esm/function/arithmetic/ceil.js +6 -6
  99. package/lib/esm/function/arithmetic/divide.js +5 -5
  100. package/lib/esm/function/arithmetic/divideScalar.js +5 -5
  101. package/lib/esm/function/arithmetic/fix.js +5 -5
  102. package/lib/esm/function/arithmetic/floor.js +6 -6
  103. package/lib/esm/function/arithmetic/hypot.js +3 -3
  104. package/lib/esm/function/arithmetic/mod.js +3 -3
  105. package/lib/esm/function/arithmetic/multiply.js +7 -7
  106. package/lib/esm/function/arithmetic/multiplyScalar.js +4 -4
  107. package/lib/esm/function/arithmetic/norm.js +2 -2
  108. package/lib/esm/function/arithmetic/pow.js +6 -6
  109. package/lib/esm/function/arithmetic/round.js +7 -7
  110. package/lib/esm/function/arithmetic/subtractScalar.js +4 -4
  111. package/lib/esm/function/arithmetic/xgcd.js +1 -1
  112. package/lib/esm/function/combinatorics/bellNumbers.js +1 -1
  113. package/lib/esm/function/combinatorics/catalan.js +1 -1
  114. package/lib/esm/function/combinatorics/composition.js +1 -1
  115. package/lib/esm/function/combinatorics/stirlingS2.js +1 -1
  116. package/lib/esm/function/geometry/distance.js +4 -4
  117. package/lib/esm/function/geometry/intersect.js +2 -2
  118. package/lib/esm/function/logical/and.js +2 -2
  119. package/lib/esm/function/logical/or.js +2 -2
  120. package/lib/esm/function/logical/xor.js +2 -2
  121. package/lib/esm/function/matrix/apply.js +2 -2
  122. package/lib/esm/function/matrix/column.js +1 -1
  123. package/lib/esm/function/matrix/concat.js +1 -1
  124. package/lib/esm/function/matrix/count.js +1 -1
  125. package/lib/esm/function/matrix/cross.js +3 -3
  126. package/lib/esm/function/matrix/diag.js +10 -10
  127. package/lib/esm/function/matrix/diff.js +2 -2
  128. package/lib/esm/function/matrix/eigs.js +3 -3
  129. package/lib/esm/function/matrix/fft.js +3 -3
  130. package/lib/esm/function/matrix/filter.js +4 -4
  131. package/lib/esm/function/matrix/flatten.js +5 -6
  132. package/lib/esm/function/matrix/forEach.js +4 -4
  133. package/lib/esm/function/matrix/identity.js +6 -6
  134. package/lib/esm/function/matrix/ifft.js +3 -3
  135. package/lib/esm/function/matrix/inv.js +1 -1
  136. package/lib/esm/function/matrix/kron.js +7 -7
  137. package/lib/esm/function/matrix/map.js +110 -19
  138. package/lib/esm/function/matrix/matrixFromFunction.js +6 -6
  139. package/lib/esm/function/matrix/ones.js +2 -2
  140. package/lib/esm/function/matrix/partitionSelect.js +2 -2
  141. package/lib/esm/function/matrix/pinv.js +1 -1
  142. package/lib/esm/function/matrix/range.js +10 -10
  143. package/lib/esm/function/matrix/reshape.js +2 -2
  144. package/lib/esm/function/matrix/rotate.js +4 -4
  145. package/lib/esm/function/matrix/rotationMatrix.js +6 -6
  146. package/lib/esm/function/matrix/row.js +1 -1
  147. package/lib/esm/function/matrix/size.js +8 -8
  148. package/lib/esm/function/matrix/sort.js +4 -4
  149. package/lib/esm/function/matrix/sqrtm.js +1 -1
  150. package/lib/esm/function/matrix/squeeze.js +3 -4
  151. package/lib/esm/function/matrix/subset.js +2 -2
  152. package/lib/esm/function/matrix/zeros.js +2 -2
  153. package/lib/esm/function/probability/combinations.js +1 -1
  154. package/lib/esm/function/probability/combinationsWithRep.js +2 -2
  155. package/lib/esm/function/probability/kldivergence.js +4 -4
  156. package/lib/esm/function/probability/multinomial.js +1 -1
  157. package/lib/esm/function/probability/permutations.js +2 -2
  158. package/lib/esm/function/probability/pickRandom.js +6 -6
  159. package/lib/esm/function/probability/random.js +1 -1
  160. package/lib/esm/function/probability/randomInt.js +1 -1
  161. package/lib/esm/function/relational/compare.js +6 -6
  162. package/lib/esm/function/relational/deepEqual.js +1 -1
  163. package/lib/esm/function/relational/equal.js +1 -1
  164. package/lib/esm/function/relational/equalScalar.js +7 -7
  165. package/lib/esm/function/relational/equalText.js +1 -1
  166. package/lib/esm/function/relational/larger.js +3 -3
  167. package/lib/esm/function/relational/largerEq.js +4 -4
  168. package/lib/esm/function/relational/smaller.js +3 -3
  169. package/lib/esm/function/relational/smallerEq.js +3 -3
  170. package/lib/esm/function/relational/unequal.js +1 -1
  171. package/lib/esm/function/set/setCartesian.js +1 -1
  172. package/lib/esm/function/set/setDifference.js +1 -1
  173. package/lib/esm/function/set/setDistinct.js +1 -1
  174. package/lib/esm/function/set/setIntersect.js +1 -1
  175. package/lib/esm/function/set/setIsSubset.js +1 -1
  176. package/lib/esm/function/set/setMultiplicity.js +1 -1
  177. package/lib/esm/function/set/setPowerset.js +1 -1
  178. package/lib/esm/function/set/setSize.js +2 -2
  179. package/lib/esm/function/set/setSymDifference.js +1 -1
  180. package/lib/esm/function/set/setUnion.js +1 -1
  181. package/lib/esm/function/signal/freqz.js +6 -6
  182. package/lib/esm/function/statistics/corr.js +2 -2
  183. package/lib/esm/function/statistics/cumsum.js +3 -3
  184. package/lib/esm/function/statistics/max.js +1 -1
  185. package/lib/esm/function/statistics/median.js +3 -3
  186. package/lib/esm/function/statistics/min.js +1 -1
  187. package/lib/esm/function/statistics/prod.js +1 -1
  188. package/lib/esm/function/statistics/variance.js +2 -2
  189. package/lib/esm/function/string/bin.js +2 -2
  190. package/lib/esm/function/string/hex.js +2 -2
  191. package/lib/esm/function/string/oct.js +2 -2
  192. package/lib/esm/function/trigonometry/acoth.js +2 -2
  193. package/lib/esm/function/trigonometry/acsch.js +2 -2
  194. package/lib/esm/type/bigint.js +1 -1
  195. package/lib/esm/type/complex/function/complex.js +2 -2
  196. package/lib/esm/type/fraction/function/fraction.js +1 -1
  197. package/lib/esm/type/matrix/DenseMatrix.js +13 -38
  198. package/lib/esm/type/matrix/SparseMatrix.js +5 -8
  199. package/lib/esm/type/matrix/function/index.js +1 -1
  200. package/lib/esm/type/matrix/function/matrix.js +1 -1
  201. package/lib/esm/type/matrix/function/sparse.js +2 -2
  202. package/lib/esm/type/number.js +1 -1
  203. package/lib/esm/type/unit/Unit.js +57 -114
  204. package/lib/esm/type/unit/function/createUnit.js +3 -3
  205. package/lib/esm/type/unit/function/splitUnit.js +1 -1
  206. package/lib/esm/type/unit/function/unit.js +2 -2
  207. package/lib/esm/utils/array.js +26 -0
  208. package/lib/esm/utils/collection.js +1 -1
  209. package/lib/esm/utils/function.js +0 -13
  210. package/lib/esm/utils/is.js +24 -0
  211. package/lib/esm/utils/map.js +2 -19
  212. package/lib/esm/version.js +1 -1
  213. package/package.json +19 -19
  214. package/types/index.d.ts +108 -25
@@ -20,16 +20,16 @@ export var createMultiplyScalar = /* #__PURE__ */factory(name, dependencies, _re
20
20
  */
21
21
  return typed('multiplyScalar', {
22
22
  'number, number': multiplyNumber,
23
- 'Complex, Complex': function ComplexComplex(x, y) {
23
+ 'Complex, Complex': function Complex_Complex(x, y) {
24
24
  return x.mul(y);
25
25
  },
26
- 'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {
26
+ 'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {
27
27
  return x.times(y);
28
28
  },
29
- 'bigint, bigint': function bigintBigint(x, y) {
29
+ 'bigint, bigint': function bigint_bigint(x, y) {
30
30
  return x * y;
31
31
  },
32
- 'Fraction, Fraction': function FractionFraction(x, y) {
32
+ 'Fraction, Fraction': function Fraction_Fraction(x, y) {
33
33
  return x.mul(y);
34
34
  },
35
35
  'number | Fraction | BigNumber | Complex, Unit': (x, y) => y.multiply(x),
@@ -74,10 +74,10 @@ export var createNorm = /* #__PURE__ */factory(name, dependencies, _ref => {
74
74
  Matrix: function Matrix(x) {
75
75
  return _norm(x, 2);
76
76
  },
77
- 'Array, number | BigNumber | string': function ArrayNumberBigNumberString(x, p) {
77
+ 'Array, number | BigNumber | string': function Array_number__BigNumber__string(x, p) {
78
78
  return _norm(matrix(x), p);
79
79
  },
80
- 'Matrix, number | BigNumber | string': function MatrixNumberBigNumberString(x, p) {
80
+ 'Matrix, number | BigNumber | string': function Matrix_number__BigNumber__string(x, p) {
81
81
  return _norm(x, p);
82
82
  }
83
83
  });
@@ -56,10 +56,10 @@ export var createPow = /* #__PURE__ */factory(name, dependencies, _ref => {
56
56
  */
57
57
  return typed(name, {
58
58
  'number, number': _pow,
59
- 'Complex, Complex': function ComplexComplex(x, y) {
59
+ 'Complex, Complex': function Complex_Complex(x, y) {
60
60
  return x.pow(y);
61
61
  },
62
- 'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {
62
+ 'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {
63
63
  if (y.isInteger() || x >= 0 || config.predictable) {
64
64
  return x.pow(y);
65
65
  } else {
@@ -67,7 +67,7 @@ export var createPow = /* #__PURE__ */factory(name, dependencies, _ref => {
67
67
  }
68
68
  },
69
69
  'bigint, bigint': (x, y) => x ** y,
70
- 'Fraction, Fraction': function FractionFraction(x, y) {
70
+ 'Fraction, Fraction': function Fraction_Fraction(x, y) {
71
71
  var result = x.pow(y);
72
72
  if (result != null) {
73
73
  return result;
@@ -79,14 +79,14 @@ export var createPow = /* #__PURE__ */factory(name, dependencies, _ref => {
79
79
  }
80
80
  },
81
81
  'Array, number': _powArray,
82
- 'Array, BigNumber': function ArrayBigNumber(x, y) {
82
+ 'Array, BigNumber': function Array_BigNumber(x, y) {
83
83
  return _powArray(x, y.toNumber());
84
84
  },
85
85
  'Matrix, number': _powMatrix,
86
- 'Matrix, BigNumber': function MatrixBigNumber(x, y) {
86
+ 'Matrix, BigNumber': function Matrix_BigNumber(x, y) {
87
87
  return _powMatrix(x, y.toNumber());
88
88
  },
89
- 'Unit, number | BigNumber': function UnitNumberBigNumber(x, y) {
89
+ 'Unit, number | BigNumber': function Unit_number__BigNumber(x, y) {
90
90
  return x.pow(y);
91
91
  }
92
92
  });
@@ -85,7 +85,7 @@ export var createRound = /* #__PURE__ */factory(name, dependencies, _ref => {
85
85
  var xSelected = nearlyEqual(x, xEpsilon, config.relTol, config.absTol) ? xEpsilon : x;
86
86
  return roundNumber(xSelected);
87
87
  },
88
- 'number, number': function numberNumber(x, n) {
88
+ 'number, number': function number_number(x, n) {
89
89
  // Same as number: unless user specifies more decimals than relTol
90
90
  var epsilonExponent = toExponent(config.relTol);
91
91
  if (n >= epsilonExponent) {
@@ -95,7 +95,7 @@ export var createRound = /* #__PURE__ */factory(name, dependencies, _ref => {
95
95
  var xSelected = nearlyEqual(x, xEpsilon, config.relTol, config.absTol) ? xEpsilon : x;
96
96
  return roundNumber(xSelected, n);
97
97
  },
98
- 'number, BigNumber': function numberBigNumber(x, n) {
98
+ 'number, BigNumber': function number_BigNumber(x, n) {
99
99
  if (!n.isInteger()) {
100
100
  throw new TypeError(NO_INT);
101
101
  }
@@ -104,13 +104,13 @@ export var createRound = /* #__PURE__ */factory(name, dependencies, _ref => {
104
104
  Complex: function Complex(x) {
105
105
  return x.round();
106
106
  },
107
- 'Complex, number': function ComplexNumber(x, n) {
107
+ 'Complex, number': function Complex_number(x, n) {
108
108
  if (n % 1) {
109
109
  throw new TypeError(NO_INT);
110
110
  }
111
111
  return x.round(n);
112
112
  },
113
- 'Complex, BigNumber': function ComplexBigNumber(x, n) {
113
+ 'Complex, BigNumber': function Complex_BigNumber(x, n) {
114
114
  if (!n.isInteger()) {
115
115
  throw new TypeError(NO_INT);
116
116
  }
@@ -123,7 +123,7 @@ export var createRound = /* #__PURE__ */factory(name, dependencies, _ref => {
123
123
  var xSelected = bigNearlyEqual(x, xEpsilon, config.relTol, config.absTol) ? xEpsilon : x;
124
124
  return xSelected.toDecimalPlaces(0);
125
125
  },
126
- 'BigNumber, BigNumber': function BigNumberBigNumber(x, n) {
126
+ 'BigNumber, BigNumber': function BigNumber_BigNumber(x, n) {
127
127
  if (!n.isInteger()) {
128
128
  throw new TypeError(NO_INT);
129
129
  }
@@ -140,13 +140,13 @@ export var createRound = /* #__PURE__ */factory(name, dependencies, _ref => {
140
140
  Fraction: function Fraction(x) {
141
141
  return x.round();
142
142
  },
143
- 'Fraction, number': function FractionNumber(x, n) {
143
+ 'Fraction, number': function Fraction_number(x, n) {
144
144
  if (n % 1) {
145
145
  throw new TypeError(NO_INT);
146
146
  }
147
147
  return x.round(n);
148
148
  },
149
- 'Fraction, BigNumber': function FractionBigNumber(x, n) {
149
+ 'Fraction, BigNumber': function Fraction_BigNumber(x, n) {
150
150
  if (!n.isInteger()) {
151
151
  throw new TypeError(NO_INT);
152
152
  }
@@ -20,16 +20,16 @@ export var createSubtractScalar = /* #__PURE__ */factory(name, dependencies, _re
20
20
  */
21
21
  return typed(name, {
22
22
  'number, number': subtractNumber,
23
- 'Complex, Complex': function ComplexComplex(x, y) {
23
+ 'Complex, Complex': function Complex_Complex(x, y) {
24
24
  return x.sub(y);
25
25
  },
26
- 'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {
26
+ 'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {
27
27
  return x.minus(y);
28
28
  },
29
- 'bigint, bigint': function bigintBigint(x, y) {
29
+ 'bigint, bigint': function bigint_bigint(x, y) {
30
30
  return x - y;
31
31
  },
32
- 'Fraction, Fraction': function FractionFraction(x, y) {
32
+ 'Fraction, Fraction': function Fraction_Fraction(x, y) {
33
33
  return x.sub(y);
34
34
  },
35
35
  'Unit, Unit': typed.referToSelf(self => (x, y) => {
@@ -33,7 +33,7 @@ export var createXgcd = /* #__PURE__ */factory(name, dependencies, _ref => {
33
33
  * where `div = gcd(a, b)` and `a*m + b*n = div`
34
34
  */
35
35
  return typed(name, {
36
- 'number, number': function numberNumber(a, b) {
36
+ 'number, number': function number_number(a, b) {
37
37
  var res = xgcdNumber(a, b);
38
38
  return config.matrix === 'Array' ? res : matrix(res);
39
39
  },
@@ -31,7 +31,7 @@ export var createBellNumbers = /* #__PURE__ */factory(name, dependencies, _ref =
31
31
  * @return {Number | BigNumber} B(n)
32
32
  */
33
33
  return typed(name, {
34
- 'number | BigNumber': function numberBigNumber(n) {
34
+ 'number | BigNumber': function number__BigNumber(n) {
35
35
  if (!isInteger(n) || isNegative(n)) {
36
36
  throw new TypeError('Non-negative integer value expected in function bellNumbers');
37
37
  }
@@ -33,7 +33,7 @@ export var createCatalan = /* #__PURE__ */factory(name, dependencies, _ref => {
33
33
  * @return {Number | BigNumber} Cn(n)
34
34
  */
35
35
  return typed(name, {
36
- 'number | BigNumber': function numberBigNumber(n) {
36
+ 'number | BigNumber': function number__BigNumber(n) {
37
37
  if (!isInteger(n) || isNegative(n)) {
38
38
  throw new TypeError('Non-negative integer value expected in function catalan');
39
39
  }
@@ -34,7 +34,7 @@ export var createComposition = /* #__PURE__ */factory(name, dependencies, _ref =
34
34
  * @return {Number | BigNumber} Returns the composition counts of n into k parts.
35
35
  */
36
36
  return typed(name, {
37
- 'number | BigNumber, number | BigNumber': function numberBigNumberNumberBigNumber(n, k) {
37
+ 'number | BigNumber, number | BigNumber': function number__BigNumber_number__BigNumber(n, k) {
38
38
  if (!isInteger(n) || !isPositive(n) || !isInteger(k) || !isPositive(k)) {
39
39
  throw new TypeError('Positive integer value expected in function composition');
40
40
  } else if (larger(k, n)) {
@@ -49,7 +49,7 @@ export var createStirlingS2 = /* #__PURE__ */factory(name, dependencies, _ref =>
49
49
  * @return {Number | BigNumber} S(n,k)
50
50
  */
51
51
  return typed(name, {
52
- 'number | BigNumber, number | BigNumber': function numberBigNumberNumberBigNumber(n, k) {
52
+ 'number | BigNumber, number | BigNumber': function number__BigNumber_number__BigNumber(n, k) {
53
53
  if (!isInteger(n) || isNegative(n) || !isInteger(k) || isNegative(k)) {
54
54
  throw new TypeError('Non-negative integer value expected in function stirlingS2');
55
55
  } else if (larger(k, n)) {
@@ -65,7 +65,7 @@ export var createDistance = /* #__PURE__ */factory(name, dependencies, _ref => {
65
65
  * @return {Number | BigNumber} Returns the distance from two/three points
66
66
  */
67
67
  return typed(name, {
68
- 'Array, Array, Array': function ArrayArrayArray(x, y, z) {
68
+ 'Array, Array, Array': function Array_Array_Array(x, y, z) {
69
69
  // Point to Line 2D (x=Point, y=LinePoint1, z=LinePoint2)
70
70
  if (x.length === 2 && y.length === 2 && z.length === 2) {
71
71
  if (!_2d(x)) {
@@ -88,7 +88,7 @@ export var createDistance = /* #__PURE__ */factory(name, dependencies, _ref => {
88
88
  throw new TypeError('Invalid Arguments: Try again');
89
89
  }
90
90
  },
91
- 'Object, Object, Object': function ObjectObjectObject(x, y, z) {
91
+ 'Object, Object, Object': function Object_Object_Object(x, y, z) {
92
92
  if (Object.keys(x).length === 2 && Object.keys(y).length === 2 && Object.keys(z).length === 2) {
93
93
  if (!_2d(x)) {
94
94
  throw new TypeError('Values of pointX and pointY should be numbers or BigNumbers');
@@ -114,7 +114,7 @@ export var createDistance = /* #__PURE__ */factory(name, dependencies, _ref => {
114
114
  throw new TypeError('Invalid Arguments: Try again');
115
115
  }
116
116
  },
117
- 'Array, Array': function ArrayArray(x, y) {
117
+ 'Array, Array': function Array_Array(x, y) {
118
118
  // Point to Line 2D (x=[pointX, pointY], y=[x-coeff, y-coeff, const])
119
119
  if (x.length === 2 && y.length === 3) {
120
120
  if (!_2d(x)) {
@@ -146,7 +146,7 @@ export var createDistance = /* #__PURE__ */factory(name, dependencies, _ref => {
146
146
  throw new TypeError('Invalid Arguments: Try again');
147
147
  }
148
148
  },
149
- 'Object, Object': function ObjectObject(x, y) {
149
+ 'Object, Object': function Object_Object(x, y) {
150
150
  if (Object.keys(x).length === 2 && Object.keys(y).length === 3) {
151
151
  if (!_2d(x)) {
152
152
  throw new TypeError('Values of pointX and pointY should be numbers or BigNumbers');
@@ -49,11 +49,11 @@ export var createIntersect = /* #__PURE__ */factory(name, dependencies, _ref =>
49
49
  return typed('intersect', {
50
50
  'Array, Array, Array': _AAA,
51
51
  'Array, Array, Array, Array': _AAAA,
52
- 'Matrix, Matrix, Matrix': function MatrixMatrixMatrix(x, y, plane) {
52
+ 'Matrix, Matrix, Matrix': function Matrix_Matrix_Matrix(x, y, plane) {
53
53
  var arr = _AAA(x.valueOf(), y.valueOf(), plane.valueOf());
54
54
  return arr === null ? null : matrix(arr);
55
55
  },
56
- 'Matrix, Matrix, Matrix, Matrix': function MatrixMatrixMatrixMatrix(w, x, y, z) {
56
+ 'Matrix, Matrix, Matrix, Matrix': function Matrix_Matrix_Matrix_Matrix(w, x, y, z) {
57
57
  // TODO: output matrix type should match input matrix type
58
58
  var arr = _AAAA(w.valueOf(), x.valueOf(), y.valueOf(), z.valueOf());
59
59
  return arr === null ? null : matrix(arr);
@@ -67,10 +67,10 @@ export var createAnd = /* #__PURE__ */factory(name, dependencies, _ref => {
67
67
  */
68
68
  return typed(name, {
69
69
  'number, number': andNumber,
70
- 'Complex, Complex': function ComplexComplex(x, y) {
70
+ 'Complex, Complex': function Complex_Complex(x, y) {
71
71
  return (x.re !== 0 || x.im !== 0) && (y.re !== 0 || y.im !== 0);
72
72
  },
73
- 'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {
73
+ 'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {
74
74
  return !x.isZero() && !y.isZero() && !x.isNaN() && !y.isNaN();
75
75
  },
76
76
  'bigint, bigint': andNumber,
@@ -61,10 +61,10 @@ export var createOr = /* #__PURE__ */factory(name, dependencies, _ref => {
61
61
  */
62
62
  return typed(name, {
63
63
  'number, number': orNumber,
64
- 'Complex, Complex': function ComplexComplex(x, y) {
64
+ 'Complex, Complex': function Complex_Complex(x, y) {
65
65
  return x.re !== 0 || x.im !== 0 || y.re !== 0 || y.im !== 0;
66
66
  },
67
- 'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {
67
+ 'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {
68
68
  return !x.isZero() && !x.isNaN() || !y.isZero() && !y.isNaN();
69
69
  },
70
70
  'bigint, bigint': orNumber,
@@ -60,11 +60,11 @@ export var createXor = /* #__PURE__ */factory(name, dependencies, _ref => {
60
60
  */
61
61
  return typed(name, {
62
62
  'number, number': xorNumber,
63
- 'Complex, Complex': function ComplexComplex(x, y) {
63
+ 'Complex, Complex': function Complex_Complex(x, y) {
64
64
  return (x.re !== 0 || x.im !== 0) !== (y.re !== 0 || y.im !== 0);
65
65
  },
66
66
  'bigint, bigint': xorNumber,
67
- 'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {
67
+ 'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {
68
68
  return (!x.isZero() && !x.isNaN()) !== (!y.isZero() && !y.isNaN());
69
69
  },
70
70
  'Unit, Unit': typed.referToSelf(self => (x, y) => self(x.value || 0, y.value || 0))
@@ -42,7 +42,7 @@ export var createApply = /* #__PURE__ */factory(name, dependencies, _ref => {
42
42
  * @return {Array | Matrix} res The residual matrix with the function applied over some dimension.
43
43
  */
44
44
  return typed(name, {
45
- 'Array | Matrix, number | BigNumber, function': function ArrayMatrixNumberBigNumberFunction(mat, dim, callback) {
45
+ 'Array | Matrix, number | BigNumber, function': function Array__Matrix_number__BigNumber_function(mat, dim, callback) {
46
46
  if (!isInteger(dim)) {
47
47
  throw new TypeError('Integer number expected for dimension');
48
48
  }
@@ -51,7 +51,7 @@ export var createApply = /* #__PURE__ */factory(name, dependencies, _ref => {
51
51
  throw new IndexError(dim, size.length);
52
52
  }
53
53
  if (isMatrix(mat)) {
54
- return mat.create(_apply(mat.valueOf(), dim, callback));
54
+ return mat.create(_apply(mat.valueOf(), dim, callback), mat.datatype());
55
55
  } else {
56
56
  return _apply(mat, dim, callback);
57
57
  }
@@ -34,7 +34,7 @@ export var createColumn = /* #__PURE__ */factory(name, dependencies, _ref => {
34
34
  */
35
35
  return typed(name, {
36
36
  'Matrix, number': _column,
37
- 'Array, number': function ArrayNumber(value, column) {
37
+ 'Array, number': function Array_number(value, column) {
38
38
  return _column(matrix(clone(value)), column).valueOf();
39
39
  }
40
40
  });
@@ -43,7 +43,7 @@ export var createConcat = /* #__PURE__ */factory(name, dependencies, _ref => {
43
43
  */
44
44
  return typed(name, {
45
45
  // TODO: change signature to '...Array | Matrix, dim?' when supported
46
- '...Array | Matrix | number | BigNumber': function ArrayMatrixNumberBigNumber(args) {
46
+ '...Array | Matrix | number | BigNumber': function Array__Matrix__number__BigNumber(args) {
47
47
  var i;
48
48
  var len = args.length;
49
49
  var dim = -1; // zero-based dimension
@@ -32,7 +32,7 @@ export var createCount = /* #__PURE__ */factory(name, dependencies, _ref => {
32
32
  string: function string(x) {
33
33
  return x.length;
34
34
  },
35
- 'Matrix | Array': function MatrixArray(x) {
35
+ 'Matrix | Array': function Matrix__Array(x) {
36
36
  return prod(size(x));
37
37
  }
38
38
  });
@@ -43,13 +43,13 @@ export var createCross = /* #__PURE__ */factory(name, dependencies, _ref => {
43
43
  * @return {Array | Matrix} Returns the cross product of `x` and `y`
44
44
  */
45
45
  return typed(name, {
46
- 'Matrix, Matrix': function MatrixMatrix(x, y) {
46
+ 'Matrix, Matrix': function Matrix_Matrix(x, y) {
47
47
  return matrix(_cross(x.toArray(), y.toArray()));
48
48
  },
49
- 'Matrix, Array': function MatrixArray(x, y) {
49
+ 'Matrix, Array': function Matrix_Array(x, y) {
50
50
  return matrix(_cross(x.toArray(), y));
51
51
  },
52
- 'Array, Matrix': function ArrayMatrix(x, y) {
52
+ 'Array, Matrix': function Array_Matrix(x, y) {
53
53
  return matrix(_cross(x, y.toArray()));
54
54
  },
55
55
  'Array, Array': _cross
@@ -54,37 +54,37 @@ export var createDiag = /* #__PURE__ */factory(name, dependencies, _ref => {
54
54
  Array: function Array(x) {
55
55
  return _diag(x, 0, arraySize(x), null);
56
56
  },
57
- 'Array, number': function ArrayNumber(x, k) {
57
+ 'Array, number': function Array_number(x, k) {
58
58
  return _diag(x, k, arraySize(x), null);
59
59
  },
60
- 'Array, BigNumber': function ArrayBigNumber(x, k) {
60
+ 'Array, BigNumber': function Array_BigNumber(x, k) {
61
61
  return _diag(x, k.toNumber(), arraySize(x), null);
62
62
  },
63
- 'Array, string': function ArrayString(x, format) {
63
+ 'Array, string': function Array_string(x, format) {
64
64
  return _diag(x, 0, arraySize(x), format);
65
65
  },
66
- 'Array, number, string': function ArrayNumberString(x, k, format) {
66
+ 'Array, number, string': function Array_number_string(x, k, format) {
67
67
  return _diag(x, k, arraySize(x), format);
68
68
  },
69
- 'Array, BigNumber, string': function ArrayBigNumberString(x, k, format) {
69
+ 'Array, BigNumber, string': function Array_BigNumber_string(x, k, format) {
70
70
  return _diag(x, k.toNumber(), arraySize(x), format);
71
71
  },
72
72
  Matrix: function Matrix(x) {
73
73
  return _diag(x, 0, x.size(), x.storage());
74
74
  },
75
- 'Matrix, number': function MatrixNumber(x, k) {
75
+ 'Matrix, number': function Matrix_number(x, k) {
76
76
  return _diag(x, k, x.size(), x.storage());
77
77
  },
78
- 'Matrix, BigNumber': function MatrixBigNumber(x, k) {
78
+ 'Matrix, BigNumber': function Matrix_BigNumber(x, k) {
79
79
  return _diag(x, k.toNumber(), x.size(), x.storage());
80
80
  },
81
- 'Matrix, string': function MatrixString(x, format) {
81
+ 'Matrix, string': function Matrix_string(x, format) {
82
82
  return _diag(x, 0, x.size(), format);
83
83
  },
84
- 'Matrix, number, string': function MatrixNumberString(x, k, format) {
84
+ 'Matrix, number, string': function Matrix_number_string(x, k, format) {
85
85
  return _diag(x, k, x.size(), format);
86
86
  },
87
- 'Matrix, BigNumber, string': function MatrixBigNumberString(x, k, format) {
87
+ 'Matrix, BigNumber, string': function Matrix_BigNumber_string(x, k, format) {
88
88
  return _diag(x, k.toNumber(), x.size(), format);
89
89
  }
90
90
  });
@@ -57,7 +57,7 @@ export var createDiff = /* #__PURE__ */factory(name, dependencies, _ref => {
57
57
  * @return {Array | Matrix} Difference between array elements in given dimension
58
58
  */
59
59
  return typed(name, {
60
- 'Array | Matrix': function ArrayMatrix(arr) {
60
+ 'Array | Matrix': function Array__Matrix(arr) {
61
61
  // No dimension specified => assume dimension 0
62
62
  if (isMatrix(arr)) {
63
63
  return matrix(_diff(arr.toArray()));
@@ -65,7 +65,7 @@ export var createDiff = /* #__PURE__ */factory(name, dependencies, _ref => {
65
65
  return _diff(arr);
66
66
  }
67
67
  },
68
- 'Array | Matrix, number': function ArrayMatrixNumber(arr, dim) {
68
+ 'Array | Matrix, number': function Array__Matrix_number(arr, dim) {
69
69
  if (!isInteger(dim)) throw new RangeError('Dimension must be a whole number');
70
70
  if (isMatrix(arr)) {
71
71
  return matrix(_recursive(arr.toArray(), dim));
@@ -158,7 +158,7 @@ export var createEigs = /* #__PURE__ */factory(name, dependencies, _ref => {
158
158
  Array: function Array(x) {
159
159
  return doEigs(matrix(x));
160
160
  },
161
- 'Array, number|BigNumber': function ArrayNumberBigNumber(x, prec) {
161
+ 'Array, number|BigNumber': function Array_numberBigNumber(x, prec) {
162
162
  return doEigs(matrix(x), {
163
163
  precision: prec
164
164
  });
@@ -171,13 +171,13 @@ export var createEigs = /* #__PURE__ */factory(name, dependencies, _ref => {
171
171
  matricize: true
172
172
  });
173
173
  },
174
- 'Matrix, number|BigNumber': function MatrixNumberBigNumber(mat, prec) {
174
+ 'Matrix, number|BigNumber': function Matrix_numberBigNumber(mat, prec) {
175
175
  return doEigs(mat, {
176
176
  precision: prec,
177
177
  matricize: true
178
178
  });
179
179
  },
180
- 'Matrix, Object': function MatrixObject(mat, opts) {
180
+ 'Matrix, Object': function Matrix_Object(mat, opts) {
181
181
  var useOpts = {
182
182
  matricize: true
183
183
  };
@@ -19,7 +19,7 @@ export var createFft = /* #__PURE__ */factory(name, dependencies, _ref => {
19
19
  log2
20
20
  } = _ref;
21
21
  /**
22
- * Calculate N-dimensional fourier transform
22
+ * Calculate N-dimensional Fourier transform
23
23
  *
24
24
  * Syntax:
25
25
  *
@@ -35,12 +35,12 @@ export var createFft = /* #__PURE__ */factory(name, dependencies, _ref => {
35
35
  * ifft
36
36
  *
37
37
  * @param {Array | Matrix} arr An array or matrix
38
- * @return {Array | Matrix} N-dimensional fourier transformation of the array
38
+ * @return {Array | Matrix} N-dimensional Fourier transformation of the array
39
39
  */
40
40
  return typed(name, {
41
41
  Array: _ndFft,
42
42
  Matrix: function Matrix(matrix) {
43
- return matrix.create(_ndFft(matrix.toArray()));
43
+ return matrix.create(_ndFft(matrix.valueOf()), matrix.datatype());
44
44
  }
45
45
  });
46
46
 
@@ -38,12 +38,12 @@ export var createFilter = /* #__PURE__ */factory(name, dependencies, _ref => {
38
38
  */
39
39
  return typed('filter', {
40
40
  'Array, function': _filterCallback,
41
- 'Matrix, function': function MatrixFunction(x, test) {
42
- return x.create(_filterCallback(x.toArray(), test));
41
+ 'Matrix, function': function Matrix_function(x, test) {
42
+ return x.create(_filterCallback(x.valueOf(), test), x.datatype());
43
43
  },
44
44
  'Array, RegExp': filterRegExp,
45
- 'Matrix, RegExp': function MatrixRegExp(x, test) {
46
- return x.create(filterRegExp(x.toArray(), test));
45
+ 'Matrix, RegExp': function Matrix_RegExp(x, test) {
46
+ return x.create(filterRegExp(x.valueOf(), test), x.datatype());
47
47
  }
48
48
  });
49
49
  });
@@ -1,11 +1,10 @@
1
1
  import { flatten as flattenArray } from '../../utils/array.js';
2
2
  import { factory } from '../../utils/factory.js';
3
3
  var name = 'flatten';
4
- var dependencies = ['typed', 'matrix'];
4
+ var dependencies = ['typed'];
5
5
  export var createFlatten = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
- typed,
8
- matrix
7
+ typed
9
8
  } = _ref;
10
9
  /**
11
10
  * Flatten a multidimensional matrix into a single dimensional matrix.
@@ -31,9 +30,9 @@ export var createFlatten = /* #__PURE__ */factory(name, dependencies, _ref => {
31
30
  return flattenArray(x);
32
31
  },
33
32
  Matrix: function Matrix(x) {
34
- var flat = flattenArray(x.toArray());
35
- // TODO: return the same matrix type as x (Dense or Sparse Matrix)
36
- return matrix(flat);
33
+ // Return the same matrix type as x (Dense or Sparse Matrix)
34
+ // Return the same data type as x
35
+ return x.create(flattenArray(x.toArray()), x.datatype());
37
36
  }
38
37
  });
39
38
  });
@@ -32,7 +32,7 @@ export var createForEach = /* #__PURE__ */factory(name, dependencies, _ref => {
32
32
  */
33
33
  return typed(name, {
34
34
  'Array, function': _forEach,
35
- 'Matrix, function': function MatrixFunction(x, callback) {
35
+ 'Matrix, function': function Matrix_function(x, callback) {
36
36
  x.forEach(callback);
37
37
  }
38
38
  });
@@ -45,16 +45,16 @@ export var createForEach = /* #__PURE__ */factory(name, dependencies, _ref => {
45
45
  * @private
46
46
  */
47
47
  function _forEach(array, callback) {
48
- var recurse = function recurse(value, index) {
48
+ var _recurse = function recurse(value, index) {
49
49
  if (Array.isArray(value)) {
50
50
  forEachArray(value, function (child, i) {
51
51
  // we create a copy of the index array and append the new index value
52
- recurse(child, index.concat(i));
52
+ _recurse(child, index.concat(i));
53
53
  });
54
54
  } else {
55
55
  // invoke the callback function with the right number of arguments
56
56
  return applyCallback(callback, value, index, array, 'forEach');
57
57
  }
58
58
  };
59
- recurse(array, []);
59
+ _recurse(array, []);
60
60
  }
@@ -50,28 +50,28 @@ export var createIdentity = /* #__PURE__ */factory(name, dependencies, _ref => {
50
50
  string: function string(format) {
51
51
  return matrix(format);
52
52
  },
53
- 'number | BigNumber': function numberBigNumber(rows) {
53
+ 'number | BigNumber': function number__BigNumber(rows) {
54
54
  return _identity(rows, rows, config.matrix === 'Matrix' ? 'dense' : undefined);
55
55
  },
56
- 'number | BigNumber, string': function numberBigNumberString(rows, format) {
56
+ 'number | BigNumber, string': function number__BigNumber_string(rows, format) {
57
57
  return _identity(rows, rows, format);
58
58
  },
59
- 'number | BigNumber, number | BigNumber': function numberBigNumberNumberBigNumber(rows, cols) {
59
+ 'number | BigNumber, number | BigNumber': function number__BigNumber_number__BigNumber(rows, cols) {
60
60
  return _identity(rows, cols, config.matrix === 'Matrix' ? 'dense' : undefined);
61
61
  },
62
- 'number | BigNumber, number | BigNumber, string': function numberBigNumberNumberBigNumberString(rows, cols, format) {
62
+ 'number | BigNumber, number | BigNumber, string': function number__BigNumber_number__BigNumber_string(rows, cols, format) {
63
63
  return _identity(rows, cols, format);
64
64
  },
65
65
  Array: function Array(size) {
66
66
  return _identityVector(size);
67
67
  },
68
- 'Array, string': function ArrayString(size, format) {
68
+ 'Array, string': function Array_string(size, format) {
69
69
  return _identityVector(size, format);
70
70
  },
71
71
  Matrix: function Matrix(size) {
72
72
  return _identityVector(size.valueOf(), size.storage());
73
73
  },
74
- 'Matrix, string': function MatrixString(size, format) {
74
+ 'Matrix, string': function Matrix_string(size, format) {
75
75
  return _identityVector(size.valueOf(), format);
76
76
  }
77
77
  });
@@ -11,7 +11,7 @@ export var createIfft = /* #__PURE__ */factory(name, dependencies, _ref => {
11
11
  conj
12
12
  } = _ref;
13
13
  /**
14
- * Calculate N-dimensional inverse fourier transform
14
+ * Calculate N-dimensional inverse Fourier transform
15
15
  *
16
16
  * Syntax:
17
17
  *
@@ -26,10 +26,10 @@ export var createIfft = /* #__PURE__ */factory(name, dependencies, _ref => {
26
26
  * fft
27
27
  *
28
28
  * @param {Array | Matrix} arr An array or matrix
29
- * @return {Array | Matrix} N-dimensional fourier transformation of the array
29
+ * @return {Array | Matrix} N-dimensional Fourier transformation of the array
30
30
  */
31
31
  return typed(name, {
32
- 'Array | Matrix': function ArrayMatrix(arr) {
32
+ 'Array | Matrix': function Array__Matrix(arr) {
33
33
  var size = isMatrix(arr) ? arr.size() : arraySize(arr);
34
34
  return dotDivide(conj(fft(conj(arr))), size.reduce((acc, curr) => acc * curr, 1));
35
35
  }
@@ -37,7 +37,7 @@ export var createInv = /* #__PURE__ */factory(name, dependencies, _ref => {
37
37
  * @return {number | Complex | Array | Matrix} The inverse of `x`.
38
38
  */
39
39
  return typed(name, {
40
- 'Array | Matrix': function ArrayMatrix(x) {
40
+ 'Array | Matrix': function Array__Matrix(x) {
41
41
  var size = isMatrix(x) ? x.size() : arraySize(x);
42
42
  switch (size.length) {
43
43
  case 1: