mathjs 13.0.2 → 13.1.0

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