mathjs 9.3.2 → 9.4.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 (410) hide show
  1. package/HISTORY.md +22 -0
  2. package/README.md +1 -0
  3. package/bin/cli.js +11 -11
  4. package/docs/expressions/parsing.md +21 -4
  5. package/docs/reference/functions/complex.md +5 -49
  6. package/docs/reference/functions/eigs.md +12 -12
  7. package/docs/reference/functions/flatten.md +1 -0
  8. package/docs/reference/functions/matrixFromColumns.md +1 -1
  9. package/docs/reference/functions/matrixFromFunction.md +12 -0
  10. package/docs/reference/functions/matrixFromRows.md +1 -1
  11. package/docs/reference/functions.md +4 -1
  12. package/examples/advanced/custom_scope_objects.js +115 -0
  13. package/lib/browser/math.js +10 -10
  14. package/lib/browser/math.js.map +1 -1
  15. package/lib/cjs/core/create.js +8 -7
  16. package/lib/cjs/core/function/import.js +9 -7
  17. package/lib/cjs/core/function/typed.js +6 -1
  18. package/lib/cjs/defaultInstance.js +3 -3
  19. package/lib/cjs/entry/allFactoriesAny.js +3 -3
  20. package/lib/cjs/entry/allFactoriesNumber.js +3 -3
  21. package/lib/cjs/entry/configReadonly.js +5 -4
  22. package/lib/cjs/entry/dependenciesAny/dependenciesEigs.generated.js +51 -0
  23. package/lib/cjs/entry/dependenciesAny/dependenciesMatrixFromColumns.generated.js +29 -0
  24. package/lib/cjs/entry/dependenciesAny/dependenciesMatrixFromFunction.generated.js +26 -0
  25. package/lib/cjs/entry/dependenciesAny/dependenciesMatrixFromRows.generated.js +29 -0
  26. package/lib/cjs/entry/dependenciesAny.generated.js +24 -0
  27. package/lib/cjs/entry/impureFunctionsAny.generated.js +22 -17
  28. package/lib/cjs/entry/impureFunctionsNumber.generated.js +11 -9
  29. package/lib/cjs/entry/pureFunctionsAny.generated.js +78 -41
  30. package/lib/cjs/expression/Parser.js +22 -15
  31. package/lib/cjs/expression/embeddedDocs/embeddedDocs.js +9 -0
  32. package/lib/cjs/expression/embeddedDocs/function/matrix/column.js +1 -1
  33. package/lib/cjs/expression/embeddedDocs/function/matrix/matrixFromColumns.js +15 -0
  34. package/lib/cjs/expression/embeddedDocs/function/matrix/matrixFromFunction.js +15 -0
  35. package/lib/cjs/expression/embeddedDocs/function/matrix/matrixFromRows.js +15 -0
  36. package/lib/cjs/expression/embeddedDocs/function/matrix/row.js +1 -1
  37. package/lib/cjs/expression/function/evaluate.js +6 -4
  38. package/lib/cjs/expression/keywords.js +1 -3
  39. package/lib/cjs/expression/node/AccessorNode.js +1 -0
  40. package/lib/cjs/expression/node/AssignmentNode.js +6 -3
  41. package/lib/cjs/expression/node/FunctionAssignmentNode.js +2 -4
  42. package/lib/cjs/expression/node/FunctionNode.js +76 -46
  43. package/lib/cjs/expression/node/IndexNode.js +5 -13
  44. package/lib/cjs/expression/node/Node.js +15 -9
  45. package/lib/cjs/expression/node/ObjectNode.js +5 -3
  46. package/lib/cjs/expression/node/SymbolNode.js +2 -2
  47. package/lib/cjs/expression/node/utils/access.js +5 -3
  48. package/lib/cjs/expression/node/utils/assign.js +5 -3
  49. package/lib/cjs/expression/parse.js +10 -14
  50. package/lib/cjs/expression/transform/utils/compileInlineExpression.js +5 -3
  51. package/lib/cjs/factoriesAny.js +24 -0
  52. package/lib/cjs/function/algebra/decomposition/qr.js +5 -3
  53. package/lib/cjs/function/algebra/simplify/resolve.js +7 -1
  54. package/lib/cjs/function/algebra/simplify.js +20 -14
  55. package/lib/cjs/function/algebra/solver/lsolveAll.js +6 -16
  56. package/lib/cjs/function/algebra/solver/usolveAll.js +6 -16
  57. package/lib/cjs/function/arithmetic/ceil.js +6 -16
  58. package/lib/cjs/function/arithmetic/floor.js +6 -16
  59. package/lib/cjs/function/arithmetic/norm.js +2 -2
  60. package/lib/cjs/function/arithmetic/pow.js +9 -7
  61. package/lib/cjs/function/arithmetic/round.js +7 -5
  62. package/lib/cjs/function/complex/im.js +3 -0
  63. package/lib/cjs/function/complex/re.js +3 -0
  64. package/lib/cjs/function/matrix/eigs/complexEigs.js +631 -0
  65. package/lib/cjs/function/matrix/eigs/realSymetric.js +341 -0
  66. package/lib/cjs/function/matrix/eigs.js +188 -334
  67. package/lib/cjs/function/matrix/flatten.js +1 -0
  68. package/lib/cjs/function/matrix/matrixFromColumns.js +118 -0
  69. package/lib/cjs/function/matrix/matrixFromFunction.js +85 -0
  70. package/lib/cjs/function/matrix/matrixFromRows.js +108 -0
  71. package/lib/cjs/function/probability/pickRandom.js +1 -1
  72. package/lib/cjs/function/probability/util/seededRNG.js +2 -2
  73. package/lib/cjs/function/relational/compareNatural.js +2 -2
  74. package/lib/cjs/header.js +2 -2
  75. package/lib/cjs/plain/bignumber/index.js +2 -2
  76. package/lib/cjs/type/bignumber/BigNumber.js +2 -2
  77. package/lib/cjs/type/complex/Complex.js +5 -5
  78. package/lib/cjs/type/fraction/Fraction.js +2 -2
  79. package/lib/cjs/type/matrix/DenseMatrix.js +138 -0
  80. package/lib/cjs/type/matrix/Matrix.js +10 -0
  81. package/lib/cjs/type/matrix/SparseMatrix.js +77 -3
  82. package/lib/cjs/type/matrix/function/matrix.js +2 -1
  83. package/lib/cjs/type/unit/Unit.js +15 -13
  84. package/lib/cjs/utils/array.js +1 -1
  85. package/lib/cjs/utils/customs.js +18 -4
  86. package/lib/cjs/utils/emitter.js +2 -2
  87. package/lib/cjs/utils/function.js +6 -2
  88. package/lib/cjs/utils/is.js +7 -5
  89. package/lib/cjs/utils/latex.js +2 -2
  90. package/lib/cjs/utils/map.js +197 -0
  91. package/lib/cjs/utils/object.js +6 -5
  92. package/lib/cjs/utils/scope.js +33 -0
  93. package/lib/cjs/utils/snapshot.js +17 -16
  94. package/lib/cjs/utils/string.js +6 -4
  95. package/lib/cjs/version.js +1 -1
  96. package/lib/esm/constants.js +15 -15
  97. package/lib/esm/core/create.js +1 -2
  98. package/lib/esm/core/function/typed.js +5 -1
  99. package/lib/esm/entry/configReadonly.js +1 -2
  100. package/lib/esm/entry/dependenciesAny/dependenciesEigs.generated.js +34 -0
  101. package/lib/esm/entry/dependenciesAny/dependenciesMatrixFromColumns.generated.js +16 -0
  102. package/lib/esm/entry/dependenciesAny/dependenciesMatrixFromFunction.generated.js +14 -0
  103. package/lib/esm/entry/dependenciesAny/dependenciesMatrixFromRows.generated.js +16 -0
  104. package/lib/esm/entry/dependenciesAny.generated.js +3 -0
  105. package/lib/esm/entry/impureFunctionsAny.generated.js +13 -10
  106. package/lib/esm/entry/impureFunctionsNumber.generated.js +1 -1
  107. package/lib/esm/entry/pureFunctionsAny.generated.js +66 -32
  108. package/lib/esm/expression/Help.js +1 -1
  109. package/lib/esm/expression/Parser.js +23 -15
  110. package/lib/esm/expression/embeddedDocs/embeddedDocs.js +6 -0
  111. package/lib/esm/expression/embeddedDocs/function/matrix/column.js +1 -1
  112. package/lib/esm/expression/embeddedDocs/function/matrix/matrixFromColumns.js +8 -0
  113. package/lib/esm/expression/embeddedDocs/function/matrix/matrixFromFunction.js +8 -0
  114. package/lib/esm/expression/embeddedDocs/function/matrix/matrixFromRows.js +8 -0
  115. package/lib/esm/expression/embeddedDocs/function/matrix/row.js +1 -1
  116. package/lib/esm/expression/function/compile.js +1 -1
  117. package/lib/esm/expression/function/evaluate.js +6 -5
  118. package/lib/esm/expression/function/help.js +1 -1
  119. package/lib/esm/expression/function/parser.js +1 -1
  120. package/lib/esm/expression/keywords.js +1 -3
  121. package/lib/esm/expression/node/AccessorNode.js +2 -1
  122. package/lib/esm/expression/node/ArrayNode.js +1 -1
  123. package/lib/esm/expression/node/AssignmentNode.js +7 -4
  124. package/lib/esm/expression/node/BlockNode.js +1 -1
  125. package/lib/esm/expression/node/ConditionalNode.js +1 -1
  126. package/lib/esm/expression/node/ConstantNode.js +1 -1
  127. package/lib/esm/expression/node/FunctionAssignmentNode.js +3 -4
  128. package/lib/esm/expression/node/FunctionNode.js +57 -39
  129. package/lib/esm/expression/node/IndexNode.js +1 -1
  130. package/lib/esm/expression/node/Node.js +7 -8
  131. package/lib/esm/expression/node/ObjectNode.js +1 -1
  132. package/lib/esm/expression/node/OperatorNode.js +1 -1
  133. package/lib/esm/expression/node/ParenthesisNode.js +1 -1
  134. package/lib/esm/expression/node/RangeNode.js +1 -1
  135. package/lib/esm/expression/node/RelationalNode.js +1 -1
  136. package/lib/esm/expression/node/SymbolNode.js +3 -3
  137. package/lib/esm/expression/parse.js +2 -3
  138. package/lib/esm/expression/transform/apply.transform.js +1 -1
  139. package/lib/esm/expression/transform/column.transform.js +1 -1
  140. package/lib/esm/expression/transform/concat.transform.js +1 -1
  141. package/lib/esm/expression/transform/diff.transform.js +1 -1
  142. package/lib/esm/expression/transform/filter.transform.js +1 -1
  143. package/lib/esm/expression/transform/forEach.transform.js +1 -1
  144. package/lib/esm/expression/transform/index.transform.js +1 -1
  145. package/lib/esm/expression/transform/map.transform.js +1 -1
  146. package/lib/esm/expression/transform/max.transform.js +1 -1
  147. package/lib/esm/expression/transform/mean.transform.js +1 -1
  148. package/lib/esm/expression/transform/min.transform.js +1 -1
  149. package/lib/esm/expression/transform/range.transform.js +1 -1
  150. package/lib/esm/expression/transform/row.transform.js +1 -1
  151. package/lib/esm/expression/transform/std.transform.js +1 -1
  152. package/lib/esm/expression/transform/subset.transform.js +1 -1
  153. package/lib/esm/expression/transform/sum.transform.js +1 -1
  154. package/lib/esm/expression/transform/utils/compileInlineExpression.js +4 -3
  155. package/lib/esm/expression/transform/variance.transform.js +1 -1
  156. package/lib/esm/factoriesAny.js +3 -0
  157. package/lib/esm/factoriesNumber.js +1 -1
  158. package/lib/esm/function/algebra/decomposition/lup.js +1 -1
  159. package/lib/esm/function/algebra/decomposition/qr.js +2 -3
  160. package/lib/esm/function/algebra/decomposition/slu.js +1 -1
  161. package/lib/esm/function/algebra/derivative.js +1 -1
  162. package/lib/esm/function/algebra/rationalize.js +1 -1
  163. package/lib/esm/function/algebra/simplify/resolve.js +7 -2
  164. package/lib/esm/function/algebra/simplify/simplifyConstant.js +1 -1
  165. package/lib/esm/function/algebra/simplify/simplifyCore.js +1 -1
  166. package/lib/esm/function/algebra/simplify/util.js +1 -1
  167. package/lib/esm/function/algebra/simplify.js +16 -12
  168. package/lib/esm/function/algebra/solver/lsolve.js +1 -1
  169. package/lib/esm/function/algebra/solver/lsolveAll.js +1 -1
  170. package/lib/esm/function/algebra/solver/lusolve.js +1 -1
  171. package/lib/esm/function/algebra/solver/usolve.js +1 -1
  172. package/lib/esm/function/algebra/solver/usolveAll.js +1 -1
  173. package/lib/esm/function/algebra/sparse/csAmd.js +1 -1
  174. package/lib/esm/function/algebra/sparse/csChol.js +1 -1
  175. package/lib/esm/function/algebra/sparse/csCounts.js +1 -1
  176. package/lib/esm/function/algebra/sparse/csLu.js +1 -1
  177. package/lib/esm/function/algebra/sparse/csSpsolve.js +1 -1
  178. package/lib/esm/function/algebra/sparse/csSqr.js +1 -1
  179. package/lib/esm/function/algebra/sparse/csSymperm.js +1 -1
  180. package/lib/esm/function/arithmetic/abs.js +1 -1
  181. package/lib/esm/function/arithmetic/add.js +1 -1
  182. package/lib/esm/function/arithmetic/addScalar.js +1 -1
  183. package/lib/esm/function/arithmetic/cbrt.js +1 -1
  184. package/lib/esm/function/arithmetic/ceil.js +1 -1
  185. package/lib/esm/function/arithmetic/cube.js +1 -1
  186. package/lib/esm/function/arithmetic/divide.js +1 -1
  187. package/lib/esm/function/arithmetic/divideScalar.js +1 -1
  188. package/lib/esm/function/arithmetic/dotDivide.js +1 -1
  189. package/lib/esm/function/arithmetic/dotMultiply.js +1 -1
  190. package/lib/esm/function/arithmetic/dotPow.js +1 -1
  191. package/lib/esm/function/arithmetic/exp.js +1 -1
  192. package/lib/esm/function/arithmetic/expm1.js +1 -1
  193. package/lib/esm/function/arithmetic/fix.js +1 -1
  194. package/lib/esm/function/arithmetic/floor.js +1 -1
  195. package/lib/esm/function/arithmetic/gcd.js +1 -1
  196. package/lib/esm/function/arithmetic/hypot.js +1 -1
  197. package/lib/esm/function/arithmetic/lcm.js +1 -1
  198. package/lib/esm/function/arithmetic/log.js +1 -1
  199. package/lib/esm/function/arithmetic/log10.js +1 -1
  200. package/lib/esm/function/arithmetic/log1p.js +1 -1
  201. package/lib/esm/function/arithmetic/log2.js +1 -1
  202. package/lib/esm/function/arithmetic/mod.js +1 -1
  203. package/lib/esm/function/arithmetic/multiply.js +1 -1
  204. package/lib/esm/function/arithmetic/multiplyScalar.js +1 -1
  205. package/lib/esm/function/arithmetic/norm.js +3 -3
  206. package/lib/esm/function/arithmetic/nthRoot.js +2 -2
  207. package/lib/esm/function/arithmetic/nthRoots.js +1 -1
  208. package/lib/esm/function/arithmetic/pow.js +10 -8
  209. package/lib/esm/function/arithmetic/round.js +6 -6
  210. package/lib/esm/function/arithmetic/sign.js +1 -1
  211. package/lib/esm/function/arithmetic/sqrt.js +1 -1
  212. package/lib/esm/function/arithmetic/square.js +1 -1
  213. package/lib/esm/function/arithmetic/subtract.js +1 -1
  214. package/lib/esm/function/arithmetic/unaryMinus.js +1 -1
  215. package/lib/esm/function/arithmetic/unaryPlus.js +1 -1
  216. package/lib/esm/function/arithmetic/xgcd.js +1 -1
  217. package/lib/esm/function/bitwise/bitAnd.js +1 -1
  218. package/lib/esm/function/bitwise/bitNot.js +1 -1
  219. package/lib/esm/function/bitwise/bitOr.js +1 -1
  220. package/lib/esm/function/bitwise/bitXor.js +1 -1
  221. package/lib/esm/function/bitwise/leftShift.js +1 -1
  222. package/lib/esm/function/bitwise/rightArithShift.js +1 -1
  223. package/lib/esm/function/bitwise/rightLogShift.js +1 -1
  224. package/lib/esm/function/combinatorics/bellNumbers.js +1 -1
  225. package/lib/esm/function/combinatorics/catalan.js +1 -1
  226. package/lib/esm/function/combinatorics/composition.js +1 -1
  227. package/lib/esm/function/combinatorics/stirlingS2.js +1 -1
  228. package/lib/esm/function/complex/arg.js +1 -1
  229. package/lib/esm/function/complex/conj.js +1 -1
  230. package/lib/esm/function/complex/im.js +4 -1
  231. package/lib/esm/function/complex/re.js +4 -1
  232. package/lib/esm/function/geometry/distance.js +1 -1
  233. package/lib/esm/function/geometry/intersect.js +1 -1
  234. package/lib/esm/function/logical/and.js +1 -1
  235. package/lib/esm/function/logical/not.js +1 -1
  236. package/lib/esm/function/logical/or.js +1 -1
  237. package/lib/esm/function/logical/xor.js +1 -1
  238. package/lib/esm/function/matrix/apply.js +1 -1
  239. package/lib/esm/function/matrix/column.js +1 -1
  240. package/lib/esm/function/matrix/concat.js +1 -1
  241. package/lib/esm/function/matrix/count.js +1 -1
  242. package/lib/esm/function/matrix/cross.js +1 -1
  243. package/lib/esm/function/matrix/ctranspose.js +1 -1
  244. package/lib/esm/function/matrix/det.js +1 -1
  245. package/lib/esm/function/matrix/diag.js +1 -1
  246. package/lib/esm/function/matrix/diff.js +1 -1
  247. package/lib/esm/function/matrix/dot.js +1 -1
  248. package/lib/esm/function/matrix/eigs/complexEigs.js +586 -0
  249. package/lib/esm/function/matrix/eigs/realSymetric.js +335 -0
  250. package/lib/esm/function/matrix/eigs.js +187 -335
  251. package/lib/esm/function/matrix/expm.js +1 -1
  252. package/lib/esm/function/matrix/filter.js +1 -1
  253. package/lib/esm/function/matrix/flatten.js +2 -1
  254. package/lib/esm/function/matrix/forEach.js +1 -1
  255. package/lib/esm/function/matrix/getMatrixDataType.js +1 -1
  256. package/lib/esm/function/matrix/identity.js +1 -1
  257. package/lib/esm/function/matrix/inv.js +1 -1
  258. package/lib/esm/function/matrix/kron.js +1 -1
  259. package/lib/esm/function/matrix/map.js +1 -1
  260. package/lib/esm/function/matrix/matrixFromColumns.js +93 -0
  261. package/lib/esm/function/matrix/matrixFromFunction.js +78 -0
  262. package/lib/esm/function/matrix/matrixFromRows.js +83 -0
  263. package/lib/esm/function/matrix/ones.js +1 -1
  264. package/lib/esm/function/matrix/partitionSelect.js +1 -1
  265. package/lib/esm/function/matrix/range.js +1 -1
  266. package/lib/esm/function/matrix/reshape.js +1 -1
  267. package/lib/esm/function/matrix/resize.js +1 -1
  268. package/lib/esm/function/matrix/rotate.js +1 -1
  269. package/lib/esm/function/matrix/rotationMatrix.js +1 -1
  270. package/lib/esm/function/matrix/row.js +1 -1
  271. package/lib/esm/function/matrix/size.js +1 -1
  272. package/lib/esm/function/matrix/sort.js +1 -1
  273. package/lib/esm/function/matrix/sqrtm.js +1 -1
  274. package/lib/esm/function/matrix/squeeze.js +1 -1
  275. package/lib/esm/function/matrix/subset.js +1 -1
  276. package/lib/esm/function/matrix/trace.js +1 -1
  277. package/lib/esm/function/matrix/transpose.js +1 -1
  278. package/lib/esm/function/matrix/zeros.js +1 -1
  279. package/lib/esm/function/probability/combinations.js +1 -1
  280. package/lib/esm/function/probability/combinationsWithRep.js +1 -1
  281. package/lib/esm/function/probability/factorial.js +1 -1
  282. package/lib/esm/function/probability/gamma.js +1 -1
  283. package/lib/esm/function/probability/kldivergence.js +1 -1
  284. package/lib/esm/function/probability/multinomial.js +1 -1
  285. package/lib/esm/function/probability/permutations.js +1 -1
  286. package/lib/esm/function/probability/pickRandom.js +2 -2
  287. package/lib/esm/function/probability/random.js +2 -2
  288. package/lib/esm/function/probability/randomInt.js +1 -1
  289. package/lib/esm/function/relational/compare.js +2 -2
  290. package/lib/esm/function/relational/compareNatural.js +1 -1
  291. package/lib/esm/function/relational/compareText.js +2 -2
  292. package/lib/esm/function/relational/deepEqual.js +1 -1
  293. package/lib/esm/function/relational/equal.js +2 -2
  294. package/lib/esm/function/relational/equalScalar.js +2 -2
  295. package/lib/esm/function/relational/equalText.js +1 -1
  296. package/lib/esm/function/relational/larger.js +2 -2
  297. package/lib/esm/function/relational/largerEq.js +2 -2
  298. package/lib/esm/function/relational/smaller.js +2 -2
  299. package/lib/esm/function/relational/smallerEq.js +2 -2
  300. package/lib/esm/function/relational/unequal.js +2 -2
  301. package/lib/esm/function/set/setCartesian.js +1 -1
  302. package/lib/esm/function/set/setDifference.js +1 -1
  303. package/lib/esm/function/set/setDistinct.js +1 -1
  304. package/lib/esm/function/set/setIntersect.js +1 -1
  305. package/lib/esm/function/set/setIsSubset.js +1 -1
  306. package/lib/esm/function/set/setMultiplicity.js +1 -1
  307. package/lib/esm/function/set/setPowerset.js +1 -1
  308. package/lib/esm/function/set/setSize.js +1 -1
  309. package/lib/esm/function/set/setSymDifference.js +1 -1
  310. package/lib/esm/function/set/setUnion.js +1 -1
  311. package/lib/esm/function/special/erf.js +1 -1
  312. package/lib/esm/function/statistics/mad.js +1 -1
  313. package/lib/esm/function/statistics/max.js +1 -1
  314. package/lib/esm/function/statistics/mean.js +1 -1
  315. package/lib/esm/function/statistics/median.js +1 -1
  316. package/lib/esm/function/statistics/min.js +1 -1
  317. package/lib/esm/function/statistics/mode.js +1 -1
  318. package/lib/esm/function/statistics/prod.js +1 -1
  319. package/lib/esm/function/statistics/quantileSeq.js +1 -1
  320. package/lib/esm/function/statistics/std.js +1 -1
  321. package/lib/esm/function/statistics/sum.js +1 -1
  322. package/lib/esm/function/statistics/variance.js +1 -1
  323. package/lib/esm/function/string/bin.js +1 -1
  324. package/lib/esm/function/string/format.js +1 -1
  325. package/lib/esm/function/string/hex.js +1 -1
  326. package/lib/esm/function/string/oct.js +1 -1
  327. package/lib/esm/function/string/print.js +1 -1
  328. package/lib/esm/function/trigonometry/acos.js +1 -1
  329. package/lib/esm/function/trigonometry/acosh.js +1 -1
  330. package/lib/esm/function/trigonometry/acot.js +1 -1
  331. package/lib/esm/function/trigonometry/acoth.js +1 -1
  332. package/lib/esm/function/trigonometry/acsc.js +1 -1
  333. package/lib/esm/function/trigonometry/acsch.js +1 -1
  334. package/lib/esm/function/trigonometry/asec.js +1 -1
  335. package/lib/esm/function/trigonometry/asech.js +1 -1
  336. package/lib/esm/function/trigonometry/asin.js +1 -1
  337. package/lib/esm/function/trigonometry/asinh.js +1 -1
  338. package/lib/esm/function/trigonometry/atan.js +1 -1
  339. package/lib/esm/function/trigonometry/atan2.js +1 -1
  340. package/lib/esm/function/trigonometry/atanh.js +1 -1
  341. package/lib/esm/function/trigonometry/cos.js +1 -1
  342. package/lib/esm/function/trigonometry/cosh.js +1 -1
  343. package/lib/esm/function/trigonometry/cot.js +1 -1
  344. package/lib/esm/function/trigonometry/coth.js +1 -1
  345. package/lib/esm/function/trigonometry/csc.js +1 -1
  346. package/lib/esm/function/trigonometry/csch.js +1 -1
  347. package/lib/esm/function/trigonometry/sec.js +1 -1
  348. package/lib/esm/function/trigonometry/sech.js +1 -1
  349. package/lib/esm/function/trigonometry/sin.js +1 -1
  350. package/lib/esm/function/trigonometry/sinh.js +1 -1
  351. package/lib/esm/function/trigonometry/tan.js +1 -1
  352. package/lib/esm/function/trigonometry/tanh.js +1 -1
  353. package/lib/esm/function/unit/to.js +1 -1
  354. package/lib/esm/function/utils/clone.js +1 -1
  355. package/lib/esm/function/utils/hasNumericValue.js +1 -1
  356. package/lib/esm/function/utils/isInteger.js +1 -1
  357. package/lib/esm/function/utils/isNaN.js +1 -1
  358. package/lib/esm/function/utils/isNegative.js +1 -1
  359. package/lib/esm/function/utils/isNumeric.js +1 -1
  360. package/lib/esm/function/utils/isPositive.js +1 -1
  361. package/lib/esm/function/utils/isPrime.js +1 -1
  362. package/lib/esm/function/utils/isZero.js +1 -1
  363. package/lib/esm/function/utils/numeric.js +1 -1
  364. package/lib/esm/function/utils/typeOf.js +1 -1
  365. package/lib/esm/json/reviver.js +1 -1
  366. package/lib/esm/type/bignumber/BigNumber.js +1 -1
  367. package/lib/esm/type/bignumber/function/bignumber.js +1 -1
  368. package/lib/esm/type/boolean.js +1 -1
  369. package/lib/esm/type/chain/Chain.js +1 -1
  370. package/lib/esm/type/chain/function/chain.js +1 -1
  371. package/lib/esm/type/complex/function/complex.js +1 -1
  372. package/lib/esm/type/fraction/function/fraction.js +1 -1
  373. package/lib/esm/type/matrix/DenseMatrix.js +75 -1
  374. package/lib/esm/type/matrix/FibonacciHeap.js +1 -1
  375. package/lib/esm/type/matrix/ImmutableDenseMatrix.js +1 -1
  376. package/lib/esm/type/matrix/Matrix.js +10 -0
  377. package/lib/esm/type/matrix/MatrixIndex.js +1 -1
  378. package/lib/esm/type/matrix/Spa.js +1 -1
  379. package/lib/esm/type/matrix/SparseMatrix.js +37 -3
  380. package/lib/esm/type/matrix/function/index.js +1 -1
  381. package/lib/esm/type/matrix/function/matrix.js +3 -2
  382. package/lib/esm/type/matrix/function/sparse.js +1 -1
  383. package/lib/esm/type/matrix/utils/algorithm01.js +1 -1
  384. package/lib/esm/type/matrix/utils/algorithm02.js +1 -1
  385. package/lib/esm/type/matrix/utils/algorithm03.js +1 -1
  386. package/lib/esm/type/matrix/utils/algorithm04.js +1 -1
  387. package/lib/esm/type/matrix/utils/algorithm05.js +1 -1
  388. package/lib/esm/type/matrix/utils/algorithm06.js +1 -1
  389. package/lib/esm/type/matrix/utils/algorithm07.js +1 -1
  390. package/lib/esm/type/matrix/utils/algorithm08.js +1 -1
  391. package/lib/esm/type/matrix/utils/algorithm09.js +1 -1
  392. package/lib/esm/type/matrix/utils/algorithm10.js +1 -1
  393. package/lib/esm/type/matrix/utils/algorithm11.js +1 -1
  394. package/lib/esm/type/matrix/utils/algorithm12.js +1 -1
  395. package/lib/esm/type/matrix/utils/algorithm13.js +1 -1
  396. package/lib/esm/type/matrix/utils/algorithm14.js +1 -1
  397. package/lib/esm/type/number.js +1 -1
  398. package/lib/esm/type/string.js +1 -1
  399. package/lib/esm/type/unit/Unit.js +4 -5
  400. package/lib/esm/type/unit/function/createUnit.js +1 -1
  401. package/lib/esm/type/unit/function/splitUnit.js +1 -1
  402. package/lib/esm/type/unit/function/unit.js +1 -1
  403. package/lib/esm/type/unit/physicalConstants.js +2 -2
  404. package/lib/esm/utils/array.js +1 -1
  405. package/lib/esm/utils/customs.js +10 -0
  406. package/lib/esm/utils/map.js +135 -0
  407. package/lib/esm/utils/scope.js +26 -0
  408. package/lib/esm/utils/snapshot.js +3 -4
  409. package/lib/esm/version.js +1 -1
  410. package/package.json +18 -9
@@ -2,7 +2,7 @@ import { factory } from '../../utils/factory.js';
2
2
  import { deepMap } from '../../utils/collection.js';
3
3
  var name = 'sin';
4
4
  var dependencies = ['typed'];
5
- export var createSin = /* #__PURE__ */factory(name, dependencies, (_ref) => {
5
+ export var createSin = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed
8
8
  } = _ref;
@@ -3,7 +3,7 @@ import { deepMap } from '../../utils/collection.js';
3
3
  import { sinhNumber } from '../../plain/number/index.js';
4
4
  var name = 'sinh';
5
5
  var dependencies = ['typed'];
6
- export var createSinh = /* #__PURE__ */factory(name, dependencies, (_ref) => {
6
+ export var createSinh = /* #__PURE__ */factory(name, dependencies, _ref => {
7
7
  var {
8
8
  typed
9
9
  } = _ref;
@@ -2,7 +2,7 @@ import { factory } from '../../utils/factory.js';
2
2
  import { deepMap } from '../../utils/collection.js';
3
3
  var name = 'tan';
4
4
  var dependencies = ['typed'];
5
- export var createTan = /* #__PURE__ */factory(name, dependencies, (_ref) => {
5
+ export var createTan = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed
8
8
  } = _ref;
@@ -3,7 +3,7 @@ import { deepMap } from '../../utils/collection.js';
3
3
  import { tanh as _tanh } from '../../utils/number.js';
4
4
  var name = 'tanh';
5
5
  var dependencies = ['typed'];
6
- export var createTanh = /* #__PURE__ */factory(name, dependencies, (_ref) => {
6
+ export var createTanh = /* #__PURE__ */factory(name, dependencies, _ref => {
7
7
  var {
8
8
  typed
9
9
  } = _ref;
@@ -3,7 +3,7 @@ import { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';
3
3
  import { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';
4
4
  var name = 'to';
5
5
  var dependencies = ['typed', 'matrix'];
6
- export var createTo = /* #__PURE__ */factory(name, dependencies, (_ref) => {
6
+ export var createTo = /* #__PURE__ */factory(name, dependencies, _ref => {
7
7
  var {
8
8
  typed,
9
9
  matrix
@@ -2,7 +2,7 @@ import { clone as objectClone } from '../../utils/object.js';
2
2
  import { factory } from '../../utils/factory.js';
3
3
  var name = 'clone';
4
4
  var dependencies = ['typed'];
5
- export var createClone = /* #__PURE__ */factory(name, dependencies, (_ref) => {
5
+ export var createClone = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed
8
8
  } = _ref;
@@ -1,7 +1,7 @@
1
1
  import { factory } from '../../utils/factory.js';
2
2
  var name = 'hasNumericValue';
3
3
  var dependencies = ['typed', 'isNumeric'];
4
- export var createHasNumericValue = /* #__PURE__ */factory(name, dependencies, (_ref) => {
4
+ export var createHasNumericValue = /* #__PURE__ */factory(name, dependencies, _ref => {
5
5
  var {
6
6
  typed,
7
7
  isNumeric
@@ -3,7 +3,7 @@ import { isInteger as isIntegerNumber } from '../../utils/number.js';
3
3
  import { factory } from '../../utils/factory.js';
4
4
  var name = 'isInteger';
5
5
  var dependencies = ['typed'];
6
- export var createIsInteger = /* #__PURE__ */factory(name, dependencies, (_ref) => {
6
+ export var createIsInteger = /* #__PURE__ */factory(name, dependencies, _ref => {
7
7
  var {
8
8
  typed
9
9
  } = _ref;
@@ -3,7 +3,7 @@ import { factory } from '../../utils/factory.js';
3
3
  import { isNaNNumber } from '../../plain/number/index.js';
4
4
  var name = 'isNaN';
5
5
  var dependencies = ['typed'];
6
- export var createIsNaN = /* #__PURE__ */factory(name, dependencies, (_ref) => {
6
+ export var createIsNaN = /* #__PURE__ */factory(name, dependencies, _ref => {
7
7
  var {
8
8
  typed
9
9
  } = _ref;
@@ -3,7 +3,7 @@ import { factory } from '../../utils/factory.js';
3
3
  import { isNegativeNumber } from '../../plain/number/index.js';
4
4
  var name = 'isNegative';
5
5
  var dependencies = ['typed'];
6
- export var createIsNegative = /* #__PURE__ */factory(name, dependencies, (_ref) => {
6
+ export var createIsNegative = /* #__PURE__ */factory(name, dependencies, _ref => {
7
7
  var {
8
8
  typed
9
9
  } = _ref;
@@ -2,7 +2,7 @@ import { deepMap } from '../../utils/collection.js';
2
2
  import { factory } from '../../utils/factory.js';
3
3
  var name = 'isNumeric';
4
4
  var dependencies = ['typed'];
5
- export var createIsNumeric = /* #__PURE__ */factory(name, dependencies, (_ref) => {
5
+ export var createIsNumeric = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed
8
8
  } = _ref;
@@ -3,7 +3,7 @@ import { factory } from '../../utils/factory.js';
3
3
  import { isPositiveNumber } from '../../plain/number/index.js';
4
4
  var name = 'isPositive';
5
5
  var dependencies = ['typed'];
6
- export var createIsPositive = /* #__PURE__ */factory(name, dependencies, (_ref) => {
6
+ export var createIsPositive = /* #__PURE__ */factory(name, dependencies, _ref => {
7
7
  var {
8
8
  typed
9
9
  } = _ref;
@@ -2,7 +2,7 @@ import { deepMap } from '../../utils/collection.js';
2
2
  import { factory } from '../../utils/factory.js';
3
3
  var name = 'isPrime';
4
4
  var dependencies = ['typed'];
5
- export var createIsPrime = /* #__PURE__ */factory(name, dependencies, (_ref) => {
5
+ export var createIsPrime = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed
8
8
  } = _ref;
@@ -3,7 +3,7 @@ import { factory } from '../../utils/factory.js';
3
3
  import { isZeroNumber } from '../../plain/number/index.js';
4
4
  var name = 'isZero';
5
5
  var dependencies = ['typed'];
6
- export var createIsZero = /* #__PURE__ */factory(name, dependencies, (_ref) => {
6
+ export var createIsZero = /* #__PURE__ */factory(name, dependencies, _ref => {
7
7
  var {
8
8
  typed
9
9
  } = _ref;
@@ -3,7 +3,7 @@ import { factory } from '../../utils/factory.js';
3
3
  import { noBignumber, noFraction } from '../../utils/noop.js';
4
4
  var name = 'numeric';
5
5
  var dependencies = ['number', '?bignumber', '?fraction'];
6
- export var createNumeric = /* #__PURE__ */factory(name, dependencies, (_ref) => {
6
+ export var createNumeric = /* #__PURE__ */factory(name, dependencies, _ref => {
7
7
  var {
8
8
  number: _number,
9
9
  bignumber,
@@ -2,7 +2,7 @@ import { factory } from '../../utils/factory.js';
2
2
  import { typeOf as _typeOf } from '../../utils/is.js';
3
3
  var name = 'typeOf';
4
4
  var dependencies = ['typed'];
5
- export var createTypeOf = /* #__PURE__ */factory(name, dependencies, (_ref) => {
5
+ export var createTypeOf = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed
8
8
  } = _ref;
@@ -1,7 +1,7 @@
1
1
  import { factory } from '../utils/factory.js';
2
2
  var name = 'reviver';
3
3
  var dependencies = ['classes'];
4
- export var createReviver = /* #__PURE__ */factory(name, dependencies, (_ref) => {
4
+ export var createReviver = /* #__PURE__ */factory(name, dependencies, _ref => {
5
5
  var {
6
6
  classes
7
7
  } = _ref;
@@ -2,7 +2,7 @@ import Decimal from 'decimal.js';
2
2
  import { factory } from '../../utils/factory.js';
3
3
  var name = 'BigNumber';
4
4
  var dependencies = ['?on', 'config'];
5
- export var createBigNumberClass = /* #__PURE__ */factory(name, dependencies, (_ref) => {
5
+ export var createBigNumberClass = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  on,
8
8
  config
@@ -2,7 +2,7 @@ import { factory } from '../../../utils/factory.js';
2
2
  import { deepMap } from '../../../utils/collection.js';
3
3
  var name = 'bignumber';
4
4
  var dependencies = ['typed', 'BigNumber'];
5
- export var createBignumber = /* #__PURE__ */factory(name, dependencies, (_ref) => {
5
+ export var createBignumber = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed,
8
8
  BigNumber
@@ -2,7 +2,7 @@ import { factory } from '../utils/factory.js';
2
2
  import { deepMap } from '../utils/collection.js';
3
3
  var name = 'boolean';
4
4
  var dependencies = ['typed'];
5
- export var createBoolean = /* #__PURE__ */factory(name, dependencies, (_ref) => {
5
+ export var createBoolean = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed
8
8
  } = _ref;
@@ -4,7 +4,7 @@ import { hasOwnProperty, lazy } from '../../utils/object.js';
4
4
  import { factory } from '../../utils/factory.js';
5
5
  var name = 'Chain';
6
6
  var dependencies = ['?on', 'math'];
7
- export var createChainClass = /* #__PURE__ */factory(name, dependencies, (_ref) => {
7
+ export var createChainClass = /* #__PURE__ */factory(name, dependencies, _ref => {
8
8
  var {
9
9
  on,
10
10
  math
@@ -1,7 +1,7 @@
1
1
  import { factory } from '../../../utils/factory.js';
2
2
  var name = 'chain';
3
3
  var dependencies = ['typed', 'Chain'];
4
- export var createChain = /* #__PURE__ */factory(name, dependencies, (_ref) => {
4
+ export var createChain = /* #__PURE__ */factory(name, dependencies, _ref => {
5
5
  var {
6
6
  typed,
7
7
  Chain
@@ -2,7 +2,7 @@ import { factory } from '../../../utils/factory.js';
2
2
  import { deepMap } from '../../../utils/collection.js';
3
3
  var name = 'complex';
4
4
  var dependencies = ['typed', 'Complex'];
5
- export var createComplex = /* #__PURE__ */factory(name, dependencies, (_ref) => {
5
+ export var createComplex = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed,
8
8
  Complex
@@ -2,7 +2,7 @@ import { factory } from '../../../utils/factory.js';
2
2
  import { deepMap } from '../../../utils/collection.js';
3
3
  var name = 'fraction';
4
4
  var dependencies = ['typed', 'Fraction'];
5
- export var createFraction = /* #__PURE__ */factory(name, dependencies, (_ref) => {
5
+ export var createFraction = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed,
8
8
  Fraction
@@ -7,7 +7,7 @@ import { DimensionError } from '../../error/DimensionError.js';
7
7
  import { factory } from '../../utils/factory.js';
8
8
  var name = 'DenseMatrix';
9
9
  var dependencies = ['Matrix'];
10
- export var createDenseMatrixClass = /* #__PURE__ */factory(name, dependencies, (_ref) => {
10
+ export var createDenseMatrixClass = /* #__PURE__ */factory(name, dependencies, _ref => {
11
11
  var {
12
12
  Matrix
13
13
  } = _ref;
@@ -15,6 +15,7 @@ export var createDenseMatrixClass = /* #__PURE__ */factory(name, dependencies, (
15
15
  /**
16
16
  * Dense Matrix implementation. A regular, dense matrix, supporting multi-dimensional matrices. This is the default matrix type.
17
17
  * @class DenseMatrix
18
+ * @enum {{ value, index: number[] }}
18
19
  */
19
20
  function DenseMatrix(data, datatype) {
20
21
  if (!(this instanceof DenseMatrix)) {
@@ -617,6 +618,79 @@ export var createDenseMatrixClass = /* #__PURE__ */factory(name, dependencies, (
617
618
 
618
619
  recurse(this._data, []);
619
620
  };
621
+ /**
622
+ * Iterate over the matrix elements
623
+ * @return {Iterable<{ value, index: number[] }>}
624
+ */
625
+
626
+
627
+ DenseMatrix.prototype[Symbol.iterator] = function* () {
628
+ var recurse = function* recurse(value, index) {
629
+ if (isArray(value)) {
630
+ for (var i = 0; i < value.length; i++) {
631
+ yield* recurse(value[i], index.concat(i));
632
+ }
633
+ } else {
634
+ yield {
635
+ value,
636
+ index
637
+ };
638
+ }
639
+ };
640
+
641
+ yield* recurse(this._data, []);
642
+ };
643
+ /**
644
+ * Returns an array containing the rows of a 2D matrix
645
+ * @returns {Array<Matrix>}
646
+ */
647
+
648
+
649
+ DenseMatrix.prototype.rows = function () {
650
+ var result = [];
651
+ var s = this.size();
652
+
653
+ if (s.length !== 2) {
654
+ throw new TypeError('Rows can only be returned for a 2D matrix.');
655
+ }
656
+
657
+ var data = this._data;
658
+
659
+ for (var row of data) {
660
+ result.push(new DenseMatrix([row], this._datatype));
661
+ }
662
+
663
+ return result;
664
+ };
665
+ /**
666
+ * Returns an array containing the columns of a 2D matrix
667
+ * @returns {Array<Matrix>}
668
+ */
669
+
670
+
671
+ DenseMatrix.prototype.columns = function () {
672
+ var _this = this;
673
+
674
+ var result = [];
675
+ var s = this.size();
676
+
677
+ if (s.length !== 2) {
678
+ throw new TypeError('Rows can only be returned for a 2D matrix.');
679
+ }
680
+
681
+ var data = this._data;
682
+
683
+ var _loop = function _loop(i) {
684
+ var col = data.map(row => [row[i]]);
685
+ result.push(new DenseMatrix(col, _this._datatype));
686
+ };
687
+
688
+ for (var i = 0; i < s[1]; i++) {
689
+ _loop(i);
690
+ }
691
+
692
+ return result;
693
+ };
620
694
  /**
621
695
  * Create an Array with a copy of the data of the DenseMatrix
622
696
  * @memberof DenseMatrix
@@ -1,7 +1,7 @@
1
1
  import { factory } from '../../utils/factory.js';
2
2
  var name = 'FibonacciHeap';
3
3
  var dependencies = ['smaller', 'larger'];
4
- export var createFibonacciHeapClass = /* #__PURE__ */factory(name, dependencies, (_ref) => {
4
+ export var createFibonacciHeapClass = /* #__PURE__ */factory(name, dependencies, _ref => {
5
5
  var {
6
6
  smaller,
7
7
  larger
@@ -3,7 +3,7 @@ import { clone } from '../../utils/object.js';
3
3
  import { factory } from '../../utils/factory.js';
4
4
  var name = 'ImmutableDenseMatrix';
5
5
  var dependencies = ['smaller', 'DenseMatrix'];
6
- export var createImmutableDenseMatrixClass = /* #__PURE__ */factory(name, dependencies, (_ref) => {
6
+ export var createImmutableDenseMatrixClass = /* #__PURE__ */factory(name, dependencies, _ref => {
7
7
  var {
8
8
  smaller,
9
9
  DenseMatrix
@@ -199,6 +199,16 @@ export var createMatrixClass = /* #__PURE__ */factory(name, dependencies, () =>
199
199
  // must be implemented by each of the Matrix implementations
200
200
  throw new Error('Cannot invoke forEach on a Matrix interface');
201
201
  };
202
+ /**
203
+ * Iterate over the matrix elements
204
+ * @return {Iterable<{ value, index: number[] }>}
205
+ */
206
+
207
+
208
+ Matrix.prototype[Symbol.iterator] = function () {
209
+ // must be implemented by each of the Matrix implementations
210
+ throw new Error('Cannot iterate a Matrix interface');
211
+ };
202
212
  /**
203
213
  * Create an Array with a copy of the data of the Matrix
204
214
  * @returns {Array} array
@@ -4,7 +4,7 @@ import { isInteger } from '../../utils/number.js';
4
4
  import { factory } from '../../utils/factory.js';
5
5
  var name = 'Index';
6
6
  var dependencies = ['ImmutableDenseMatrix'];
7
- export var createIndexClass = /* #__PURE__ */factory(name, dependencies, (_ref) => {
7
+ export var createIndexClass = /* #__PURE__ */factory(name, dependencies, _ref => {
8
8
  var {
9
9
  ImmutableDenseMatrix
10
10
  } = _ref;
@@ -1,7 +1,7 @@
1
1
  import { factory } from '../../utils/factory.js';
2
2
  var name = 'Spa';
3
3
  var dependencies = ['addScalar', 'equalScalar', 'FibonacciHeap'];
4
- export var createSpaClass = /* #__PURE__ */factory(name, dependencies, (_ref) => {
4
+ export var createSpaClass = /* #__PURE__ */factory(name, dependencies, _ref => {
5
5
  var {
6
6
  addScalar,
7
7
  equalScalar,
@@ -7,7 +7,7 @@ import { factory } from '../../utils/factory.js';
7
7
  import { DimensionError } from '../../error/DimensionError.js';
8
8
  var name = 'SparseMatrix';
9
9
  var dependencies = ['typed', 'equalScalar', 'Matrix'];
10
- export var createSparseMatrixClass = /* #__PURE__ */factory(name, dependencies, (_ref) => {
10
+ export var createSparseMatrixClass = /* #__PURE__ */factory(name, dependencies, _ref => {
11
11
  var {
12
12
  typed,
13
13
  equalScalar,
@@ -15,8 +15,9 @@ export var createSparseMatrixClass = /* #__PURE__ */factory(name, dependencies,
15
15
  } = _ref;
16
16
 
17
17
  /**
18
- * Sparse Matrix implementation. This type implements a Compressed Column Storage format
19
- * for sparse matrices.
18
+ * Sparse Matrix implementation. This type implements
19
+ * a [Compressed Column Storage](https://en.wikipedia.org/wiki/Sparse_matrix#Compressed_sparse_column_(CSC_or_CCS))
20
+ * format for two-dimensional sparse matrices.
20
21
  * @class SparseMatrix
21
22
  */
22
23
  function SparseMatrix(data, datatype) {
@@ -598,6 +599,8 @@ export var createSparseMatrixClass = /* #__PURE__ */factory(name, dependencies,
598
599
  *
599
600
  * @memberof SparseMatrix
600
601
  * @param {number[] | Matrix} size The new size the matrix should have.
602
+ * Since sparse matrices are always two-dimensional,
603
+ * size must be two numbers in either an array or a matrix
601
604
  * @param {*} [defaultValue=0] Default value, filled in on new entries.
602
605
  * If not provided, the matrix elements will
603
606
  * be filled with zeros.
@@ -768,6 +771,8 @@ export var createSparseMatrixClass = /* #__PURE__ */factory(name, dependencies,
768
771
  *
769
772
  * @memberof SparseMatrix
770
773
  * @param {number[]} sizes The new size the matrix should have.
774
+ * Since sparse matrices are always two-dimensional,
775
+ * size must be two numbers in either an array or a matrix
771
776
  * @param {boolean} [copy] Return a reshaped copy of the matrix
772
777
  *
773
778
  * @return {Matrix} The reshaped matrix
@@ -1008,6 +1013,8 @@ export var createSparseMatrixClass = /* #__PURE__ */factory(name, dependencies,
1008
1013
  * parameters: the value of the element, the index
1009
1014
  * of the element, and the Matrix being traversed.
1010
1015
  * @param {boolean} [skipZeros] Invoke callback function for non-zero values only.
1016
+ * If false, the indices are guaranteed to be in order,
1017
+ * if true, the indices can be unordered.
1011
1018
  */
1012
1019
 
1013
1020
 
@@ -1054,6 +1061,33 @@ export var createSparseMatrixClass = /* #__PURE__ */factory(name, dependencies,
1054
1061
  }
1055
1062
  }
1056
1063
  };
1064
+ /**
1065
+ * Iterate over the matrix elements, skipping zeros
1066
+ * @return {Iterable<{ value, index: number[] }>}
1067
+ */
1068
+
1069
+
1070
+ SparseMatrix.prototype[Symbol.iterator] = function* () {
1071
+ if (!this._values) {
1072
+ throw new Error('Cannot iterate a Pattern only matrix');
1073
+ }
1074
+
1075
+ var columns = this._size[1];
1076
+
1077
+ for (var j = 0; j < columns; j++) {
1078
+ var k0 = this._ptr[j];
1079
+ var k1 = this._ptr[j + 1];
1080
+
1081
+ for (var k = k0; k < k1; k++) {
1082
+ // row index
1083
+ var i = this._index[k];
1084
+ yield {
1085
+ value: this._values[k],
1086
+ index: [i, j]
1087
+ };
1088
+ }
1089
+ }
1090
+ };
1057
1091
  /**
1058
1092
  * Create an Array with a copy of the data of the SparseMatrix
1059
1093
  * @memberof SparseMatrix
@@ -2,7 +2,7 @@ import { factory } from '../../../utils/factory.js';
2
2
  import { isBigNumber, isMatrix } from '../../../utils/is.js';
3
3
  var name = 'index';
4
4
  var dependencies = ['typed', 'Index'];
5
- export var createIndex = /* #__PURE__ */factory(name, dependencies, (_ref) => {
5
+ export var createIndex = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed,
8
8
  Index
@@ -1,7 +1,7 @@
1
1
  import { factory } from '../../../utils/factory.js';
2
2
  var name = 'matrix';
3
3
  var dependencies = ['typed', 'Matrix', 'DenseMatrix', 'SparseMatrix'];
4
- export var createMatrix = /* #__PURE__ */factory(name, dependencies, (_ref) => {
4
+ export var createMatrix = /* #__PURE__ */factory(name, dependencies, _ref => {
5
5
  var {
6
6
  typed,
7
7
  Matrix,
@@ -37,7 +37,8 @@ export var createMatrix = /* #__PURE__ */factory(name, dependencies, (_ref) => {
37
37
  * bignumber, boolean, complex, index, number, string, unit, sparse
38
38
  *
39
39
  * @param {Array | Matrix} [data] A multi dimensional array
40
- * @param {string} [format] The Matrix storage format
40
+ * @param {string} [format] The Matrix storage format, either `'dense'` or `'sparse'`
41
+ * @param {string} [datatype] Type of the values
41
42
  *
42
43
  * @return {Matrix} The created matrix
43
44
  */
@@ -1,7 +1,7 @@
1
1
  import { factory } from '../../../utils/factory.js';
2
2
  var name = 'sparse';
3
3
  var dependencies = ['typed', 'SparseMatrix'];
4
- export var createSparse = /* #__PURE__ */factory(name, dependencies, (_ref) => {
4
+ export var createSparse = /* #__PURE__ */factory(name, dependencies, _ref => {
5
5
  var {
6
6
  typed,
7
7
  SparseMatrix
@@ -2,7 +2,7 @@ import { factory } from '../../../utils/factory.js';
2
2
  import { DimensionError } from '../../../error/DimensionError.js';
3
3
  var name = 'algorithm01';
4
4
  var dependencies = ['typed'];
5
- export var createAlgorithm01 = /* #__PURE__ */factory(name, dependencies, (_ref) => {
5
+ export var createAlgorithm01 = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed
8
8
  } = _ref;
@@ -2,7 +2,7 @@ import { factory } from '../../../utils/factory.js';
2
2
  import { DimensionError } from '../../../error/DimensionError.js';
3
3
  var name = 'algorithm02';
4
4
  var dependencies = ['typed', 'equalScalar'];
5
- export var createAlgorithm02 = /* #__PURE__ */factory(name, dependencies, (_ref) => {
5
+ export var createAlgorithm02 = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed,
8
8
  equalScalar
@@ -2,7 +2,7 @@ import { factory } from '../../../utils/factory.js';
2
2
  import { DimensionError } from '../../../error/DimensionError.js';
3
3
  var name = 'algorithm03';
4
4
  var dependencies = ['typed'];
5
- export var createAlgorithm03 = /* #__PURE__ */factory(name, dependencies, (_ref) => {
5
+ export var createAlgorithm03 = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed
8
8
  } = _ref;
@@ -2,7 +2,7 @@ import { factory } from '../../../utils/factory.js';
2
2
  import { DimensionError } from '../../../error/DimensionError.js';
3
3
  var name = 'algorithm04';
4
4
  var dependencies = ['typed', 'equalScalar'];
5
- export var createAlgorithm04 = /* #__PURE__ */factory(name, dependencies, (_ref) => {
5
+ export var createAlgorithm04 = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed,
8
8
  equalScalar
@@ -2,7 +2,7 @@ import { factory } from '../../../utils/factory.js';
2
2
  import { DimensionError } from '../../../error/DimensionError.js';
3
3
  var name = 'algorithm05';
4
4
  var dependencies = ['typed', 'equalScalar'];
5
- export var createAlgorithm05 = /* #__PURE__ */factory(name, dependencies, (_ref) => {
5
+ export var createAlgorithm05 = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed,
8
8
  equalScalar
@@ -3,7 +3,7 @@ import { DimensionError } from '../../../error/DimensionError.js';
3
3
  import { scatter } from '../../../utils/collection.js';
4
4
  var name = 'algorithm06';
5
5
  var dependencies = ['typed', 'equalScalar'];
6
- export var createAlgorithm06 = /* #__PURE__ */factory(name, dependencies, (_ref) => {
6
+ export var createAlgorithm06 = /* #__PURE__ */factory(name, dependencies, _ref => {
7
7
  var {
8
8
  typed,
9
9
  equalScalar
@@ -2,7 +2,7 @@ import { factory } from '../../../utils/factory.js';
2
2
  import { DimensionError } from '../../../error/DimensionError.js';
3
3
  var name = 'algorithm07';
4
4
  var dependencies = ['typed', 'DenseMatrix'];
5
- export var createAlgorithm07 = /* #__PURE__ */factory(name, dependencies, (_ref) => {
5
+ export var createAlgorithm07 = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed,
8
8
  DenseMatrix
@@ -2,7 +2,7 @@ import { factory } from '../../../utils/factory.js';
2
2
  import { DimensionError } from '../../../error/DimensionError.js';
3
3
  var name = 'algorithm08';
4
4
  var dependencies = ['typed', 'equalScalar'];
5
- export var createAlgorithm08 = /* #__PURE__ */factory(name, dependencies, (_ref) => {
5
+ export var createAlgorithm08 = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed,
8
8
  equalScalar
@@ -2,7 +2,7 @@ import { factory } from '../../../utils/factory.js';
2
2
  import { DimensionError } from '../../../error/DimensionError.js';
3
3
  var name = 'algorithm09';
4
4
  var dependencies = ['typed', 'equalScalar'];
5
- export var createAlgorithm09 = /* #__PURE__ */factory(name, dependencies, (_ref) => {
5
+ export var createAlgorithm09 = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed,
8
8
  equalScalar
@@ -1,7 +1,7 @@
1
1
  import { factory } from '../../../utils/factory.js';
2
2
  var name = 'algorithm10';
3
3
  var dependencies = ['typed', 'DenseMatrix'];
4
- export var createAlgorithm10 = /* #__PURE__ */factory(name, dependencies, (_ref) => {
4
+ export var createAlgorithm10 = /* #__PURE__ */factory(name, dependencies, _ref => {
5
5
  var {
6
6
  typed,
7
7
  DenseMatrix
@@ -1,7 +1,7 @@
1
1
  import { factory } from '../../../utils/factory.js';
2
2
  var name = 'algorithm11';
3
3
  var dependencies = ['typed', 'equalScalar'];
4
- export var createAlgorithm11 = /* #__PURE__ */factory(name, dependencies, (_ref) => {
4
+ export var createAlgorithm11 = /* #__PURE__ */factory(name, dependencies, _ref => {
5
5
  var {
6
6
  typed,
7
7
  equalScalar