mathjs 10.6.4 → 11.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 (454) hide show
  1. package/HISTORY.md +79 -1
  2. package/README.md +1 -1
  3. package/lib/browser/math.js +2 -41
  4. package/lib/browser/math.js.LICENSE.txt +43 -0
  5. package/lib/browser/math.js.map +1 -1
  6. package/lib/cjs/core/create.js +6 -5
  7. package/lib/cjs/core/function/import.js +4 -14
  8. package/lib/cjs/core/function/typed.js +54 -12
  9. package/lib/cjs/defaultInstance.js +3 -3
  10. package/lib/cjs/entry/allFactoriesAny.js +1 -1
  11. package/lib/cjs/entry/allFactoriesNumber.js +1 -1
  12. package/lib/cjs/entry/configReadonly.js +1 -1
  13. package/lib/cjs/entry/dependenciesAny/dependenciesChainClass.generated.js +3 -0
  14. package/lib/cjs/entry/dependenciesAny/dependenciesKldivergence.generated.js +3 -0
  15. package/lib/cjs/entry/dependenciesAny/dependenciesRationalize.generated.js +3 -0
  16. package/lib/cjs/entry/dependenciesAny/dependenciesResolve.generated.js +3 -0
  17. package/lib/cjs/entry/dependenciesAny/dependenciesSimplify.generated.js +3 -0
  18. package/lib/cjs/entry/dependenciesAny/dependenciesSimplifyConstant.generated.js +56 -0
  19. package/lib/cjs/entry/dependenciesAny/dependenciesSimplifyCore.generated.js +6 -0
  20. package/lib/cjs/entry/dependenciesAny/dependenciesSqrtm.generated.js +3 -0
  21. package/lib/cjs/entry/dependenciesAny/dependenciesStd.generated.js +3 -0
  22. package/lib/cjs/entry/dependenciesAny/dependenciesStdTransform.generated.js +3 -0
  23. package/lib/cjs/entry/dependenciesAny.generated.js +8 -0
  24. package/lib/cjs/entry/dependenciesNumber/dependenciesChainClass.generated.js +3 -0
  25. package/lib/cjs/entry/dependenciesNumber/dependenciesRationalize.generated.js +3 -0
  26. package/lib/cjs/entry/dependenciesNumber/dependenciesResolve.generated.js +3 -0
  27. package/lib/cjs/entry/dependenciesNumber/dependenciesSimplify.generated.js +3 -0
  28. package/lib/cjs/entry/dependenciesNumber/dependenciesSimplifyConstant.generated.js +50 -0
  29. package/lib/cjs/entry/dependenciesNumber/dependenciesSimplifyCore.generated.js +6 -0
  30. package/lib/cjs/entry/dependenciesNumber/dependenciesStd.generated.js +3 -0
  31. package/lib/cjs/entry/dependenciesNumber/dependenciesStdTransform.generated.js +3 -0
  32. package/lib/cjs/entry/dependenciesNumber.generated.js +8 -0
  33. package/lib/cjs/entry/impureFunctionsAny.generated.js +87 -61
  34. package/lib/cjs/entry/impureFunctionsNumber.generated.js +93 -69
  35. package/lib/cjs/entry/pureFunctionsAny.generated.js +50 -45
  36. package/lib/cjs/entry/pureFunctionsNumber.generated.js +22 -19
  37. package/lib/cjs/expression/Parser.js +1 -1
  38. package/lib/cjs/expression/embeddedDocs/construction/index.js +1 -1
  39. package/lib/cjs/expression/embeddedDocs/embeddedDocs.js +8 -5
  40. package/lib/cjs/expression/embeddedDocs/function/algebra/simplifyConstant.js +15 -0
  41. package/lib/cjs/expression/embeddedDocs/function/algebra/simplifyCore.js +1 -1
  42. package/lib/cjs/expression/node/AccessorNode.js +216 -173
  43. package/lib/cjs/expression/node/ArrayNode.js +206 -160
  44. package/lib/cjs/expression/node/AssignmentNode.js +321 -270
  45. package/lib/cjs/expression/node/BlockNode.js +223 -172
  46. package/lib/cjs/expression/node/ConditionalNode.js +253 -193
  47. package/lib/cjs/expression/node/ConstantNode.js +216 -171
  48. package/lib/cjs/expression/node/FunctionAssignmentNode.js +258 -196
  49. package/lib/cjs/expression/node/FunctionNode.js +456 -416
  50. package/lib/cjs/expression/node/IndexNode.js +256 -210
  51. package/lib/cjs/expression/node/Node.js +411 -378
  52. package/lib/cjs/expression/node/ObjectNode.js +223 -178
  53. package/lib/cjs/expression/node/OperatorNode.js +474 -397
  54. package/lib/cjs/expression/node/ParenthesisNode.js +189 -143
  55. package/lib/cjs/expression/node/RangeNode.js +272 -224
  56. package/lib/cjs/expression/node/RelationalNode.js +246 -195
  57. package/lib/cjs/expression/node/SymbolNode.js +219 -172
  58. package/lib/cjs/expression/node/utils/access.js +1 -1
  59. package/lib/cjs/expression/node/utils/assign.js +1 -1
  60. package/lib/cjs/expression/operators.js +117 -23
  61. package/lib/cjs/expression/parse.js +37 -19
  62. package/lib/cjs/expression/transform/std.transform.js +3 -1
  63. package/lib/cjs/factoriesAny.js +8 -0
  64. package/lib/cjs/factoriesNumber.js +10 -1
  65. package/lib/cjs/function/algebra/decomposition/qr.js +1 -1
  66. package/lib/cjs/function/algebra/derivative.js +25 -33
  67. package/lib/cjs/function/algebra/leafCount.js +0 -3
  68. package/lib/cjs/function/algebra/rationalize.js +78 -108
  69. package/lib/cjs/function/algebra/resolve.js +53 -16
  70. package/lib/cjs/function/algebra/simplify/util.js +1 -1
  71. package/lib/cjs/function/algebra/simplify.js +90 -115
  72. package/lib/cjs/function/algebra/{simplify/simplifyConstant.js → simplifyConstant.js} +44 -10
  73. package/lib/cjs/function/algebra/simplifyCore.js +196 -93
  74. package/lib/cjs/function/algebra/solver/lsolveAll.js +2 -2
  75. package/lib/cjs/function/algebra/solver/usolveAll.js +2 -2
  76. package/lib/cjs/function/algebra/symbolicEqual.js +14 -32
  77. package/lib/cjs/function/arithmetic/abs.js +7 -14
  78. package/lib/cjs/function/arithmetic/add.js +26 -70
  79. package/lib/cjs/function/arithmetic/addScalar.js +17 -9
  80. package/lib/cjs/function/arithmetic/cbrt.js +7 -11
  81. package/lib/cjs/function/arithmetic/ceil.js +50 -40
  82. package/lib/cjs/function/arithmetic/cube.js +5 -10
  83. package/lib/cjs/function/arithmetic/divide.js +7 -7
  84. package/lib/cjs/function/arithmetic/divideScalar.js +4 -18
  85. package/lib/cjs/function/arithmetic/dotDivide.js +22 -65
  86. package/lib/cjs/function/arithmetic/dotMultiply.js +16 -61
  87. package/lib/cjs/function/arithmetic/dotPow.js +30 -63
  88. package/lib/cjs/function/arithmetic/exp.js +8 -12
  89. package/lib/cjs/function/arithmetic/expm1.js +10 -10
  90. package/lib/cjs/function/arithmetic/fix.js +34 -28
  91. package/lib/cjs/function/arithmetic/floor.js +51 -41
  92. package/lib/cjs/function/arithmetic/gcd.js +27 -68
  93. package/lib/cjs/function/arithmetic/hypot.js +9 -5
  94. package/lib/cjs/function/arithmetic/invmod.js +2 -2
  95. package/lib/cjs/function/arithmetic/lcm.js +27 -68
  96. package/lib/cjs/function/arithmetic/log.js +10 -12
  97. package/lib/cjs/function/arithmetic/log10.js +5 -3
  98. package/lib/cjs/function/arithmetic/log1p.js +11 -7
  99. package/lib/cjs/function/arithmetic/log2.js +5 -3
  100. package/lib/cjs/function/arithmetic/mod.js +22 -64
  101. package/lib/cjs/function/arithmetic/multiply.js +40 -35
  102. package/lib/cjs/function/arithmetic/multiplyScalar.js +2 -9
  103. package/lib/cjs/function/arithmetic/norm.js +1 -5
  104. package/lib/cjs/function/arithmetic/nthRoot.js +83 -95
  105. package/lib/cjs/function/arithmetic/nthRoots.js +2 -2
  106. package/lib/cjs/function/arithmetic/round.js +56 -42
  107. package/lib/cjs/function/arithmetic/sign.js +14 -10
  108. package/lib/cjs/function/arithmetic/sqrt.js +5 -9
  109. package/lib/cjs/function/arithmetic/square.js +6 -10
  110. package/lib/cjs/function/arithmetic/subtract.js +44 -100
  111. package/lib/cjs/function/arithmetic/unaryMinus.js +14 -16
  112. package/lib/cjs/function/arithmetic/unaryPlus.js +6 -4
  113. package/lib/cjs/function/bitwise/bitAnd.js +17 -61
  114. package/lib/cjs/function/bitwise/bitNot.js +6 -4
  115. package/lib/cjs/function/bitwise/bitOr.js +16 -60
  116. package/lib/cjs/function/bitwise/bitXor.js +17 -61
  117. package/lib/cjs/function/bitwise/leftShift.js +69 -82
  118. package/lib/cjs/function/bitwise/rightArithShift.js +69 -82
  119. package/lib/cjs/function/bitwise/rightLogShift.js +69 -82
  120. package/lib/cjs/function/bitwise/useMatrixForArrayScalar.js +36 -0
  121. package/lib/cjs/function/complex/arg.js +5 -3
  122. package/lib/cjs/function/complex/conj.js +6 -7
  123. package/lib/cjs/function/complex/im.js +7 -8
  124. package/lib/cjs/function/complex/re.js +6 -10
  125. package/lib/cjs/function/geometry/distance.js +2 -2
  126. package/lib/cjs/function/logical/and.js +74 -80
  127. package/lib/cjs/function/logical/not.js +13 -6
  128. package/lib/cjs/function/logical/or.js +21 -63
  129. package/lib/cjs/function/logical/xor.js +21 -63
  130. package/lib/cjs/function/matrix/diff.js +11 -8
  131. package/lib/cjs/function/matrix/eigs/complexEigs.js +5 -5
  132. package/lib/cjs/function/matrix/fft.js +2 -2
  133. package/lib/cjs/function/matrix/matrixFromColumns.js +1 -1
  134. package/lib/cjs/function/matrix/matrixFromRows.js +1 -1
  135. package/lib/cjs/function/matrix/ones.js +2 -1
  136. package/lib/cjs/function/matrix/rotate.js +5 -5
  137. package/lib/cjs/function/matrix/sqrtm.js +3 -2
  138. package/lib/cjs/function/matrix/transpose.js +47 -48
  139. package/lib/cjs/function/matrix/zeros.js +2 -1
  140. package/lib/cjs/function/probability/factorial.js +5 -3
  141. package/lib/cjs/function/probability/gamma.js +38 -40
  142. package/lib/cjs/function/probability/kldivergence.js +5 -2
  143. package/lib/cjs/function/probability/lgamma.js +30 -30
  144. package/lib/cjs/function/probability/util/seededRNG.js +2 -2
  145. package/lib/cjs/function/relational/compare.js +21 -67
  146. package/lib/cjs/function/relational/compareNatural.js +59 -54
  147. package/lib/cjs/function/relational/compareText.js +10 -43
  148. package/lib/cjs/function/relational/compareUnits.js +24 -0
  149. package/lib/cjs/function/relational/equal.js +19 -80
  150. package/lib/cjs/function/relational/equalScalar.js +7 -9
  151. package/lib/cjs/function/relational/larger.js +21 -67
  152. package/lib/cjs/function/relational/largerEq.js +21 -67
  153. package/lib/cjs/function/relational/smaller.js +21 -67
  154. package/lib/cjs/function/relational/smallerEq.js +21 -67
  155. package/lib/cjs/function/relational/unequal.js +19 -80
  156. package/lib/cjs/function/special/erf.js +5 -3
  157. package/lib/cjs/function/statistics/std.js +11 -2
  158. package/lib/cjs/function/string/format.js +2 -2
  159. package/lib/cjs/function/string/hex.js +1 -2
  160. package/lib/cjs/function/trigonometry/acos.js +4 -8
  161. package/lib/cjs/function/trigonometry/acosh.js +2 -7
  162. package/lib/cjs/function/trigonometry/acot.js +6 -11
  163. package/lib/cjs/function/trigonometry/acoth.js +4 -8
  164. package/lib/cjs/function/trigonometry/acsc.js +6 -11
  165. package/lib/cjs/function/trigonometry/acsch.js +4 -8
  166. package/lib/cjs/function/trigonometry/asec.js +6 -10
  167. package/lib/cjs/function/trigonometry/asech.js +4 -8
  168. package/lib/cjs/function/trigonometry/asin.js +5 -10
  169. package/lib/cjs/function/trigonometry/asinh.js +4 -9
  170. package/lib/cjs/function/trigonometry/atan.js +5 -11
  171. package/lib/cjs/function/trigonometry/atan2.js +25 -63
  172. package/lib/cjs/function/trigonometry/atanh.js +4 -9
  173. package/lib/cjs/function/trigonometry/cos.js +11 -20
  174. package/lib/cjs/function/trigonometry/cosh.js +5 -19
  175. package/lib/cjs/function/trigonometry/cot.js +9 -15
  176. package/lib/cjs/function/trigonometry/coth.js +4 -15
  177. package/lib/cjs/function/trigonometry/csc.js +11 -17
  178. package/lib/cjs/function/trigonometry/csch.js +4 -15
  179. package/lib/cjs/function/trigonometry/sec.js +11 -17
  180. package/lib/cjs/function/trigonometry/sech.js +4 -15
  181. package/lib/cjs/function/trigonometry/sin.js +11 -21
  182. package/lib/cjs/function/trigonometry/sinh.js +5 -20
  183. package/lib/cjs/function/trigonometry/tan.js +11 -21
  184. package/lib/cjs/function/trigonometry/tanh.js +5 -20
  185. package/lib/cjs/function/trigonometry/trigUnit.js +24 -0
  186. package/lib/cjs/function/unit/to.js +7 -41
  187. package/lib/cjs/function/utils/clone.js +1 -1
  188. package/lib/cjs/function/utils/hasNumericValue.js +5 -1
  189. package/lib/cjs/function/utils/isInteger.js +6 -4
  190. package/lib/cjs/function/utils/isNaN.js +1 -1
  191. package/lib/cjs/function/utils/isNegative.js +11 -7
  192. package/lib/cjs/function/utils/isNumeric.js +6 -4
  193. package/lib/cjs/function/utils/isPositive.js +11 -7
  194. package/lib/cjs/function/utils/isPrime.js +5 -3
  195. package/lib/cjs/function/utils/isZero.js +21 -17
  196. package/lib/cjs/function/utils/numeric.js +11 -4
  197. package/lib/cjs/function/utils/typeOf.js +38 -44
  198. package/lib/cjs/header.js +2 -2
  199. package/lib/cjs/plain/bignumber/index.js +1 -1
  200. package/lib/cjs/type/bignumber/BigNumber.js +2 -2
  201. package/lib/cjs/type/bignumber/function/bignumber.js +6 -4
  202. package/lib/cjs/type/boolean.js +7 -5
  203. package/lib/cjs/type/chain/Chain.js +23 -3
  204. package/lib/cjs/type/complex/Complex.js +18 -14
  205. package/lib/cjs/type/complex/function/complex.js +6 -4
  206. package/lib/cjs/type/fraction/Fraction.js +10 -6
  207. package/lib/cjs/type/fraction/function/fraction.js +6 -4
  208. package/lib/cjs/type/matrix/DenseMatrix.js +21 -6
  209. package/lib/cjs/type/matrix/SparseMatrix.js +12 -2
  210. package/lib/cjs/type/matrix/utils/{algorithm01.js → matAlgo01xDSid.js} +4 -4
  211. package/lib/cjs/type/matrix/utils/{algorithm02.js → matAlgo02xDS0.js} +5 -5
  212. package/lib/cjs/type/matrix/utils/{algorithm03.js → matAlgo03xDSf.js} +5 -5
  213. package/lib/cjs/type/matrix/utils/{algorithm04.js → matAlgo04xSidSid.js} +7 -7
  214. package/lib/cjs/type/matrix/utils/{algorithm05.js → matAlgo05xSfSf.js} +5 -5
  215. package/lib/cjs/type/matrix/utils/{algorithm06.js → matAlgo06xS0S0.js} +5 -5
  216. package/lib/cjs/type/matrix/utils/{algorithm07.js → matAlgo07xSSf.js} +5 -5
  217. package/lib/cjs/type/matrix/utils/{algorithm08.js → matAlgo08xS0Sid.js} +6 -6
  218. package/lib/cjs/type/matrix/utils/{algorithm09.js → matAlgo09xS0Sf.js} +5 -5
  219. package/lib/cjs/type/matrix/utils/{algorithm10.js → matAlgo10xSids.js} +5 -5
  220. package/lib/cjs/type/matrix/utils/{algorithm11.js → matAlgo11xS0s.js} +5 -5
  221. package/lib/cjs/type/matrix/utils/{algorithm12.js → matAlgo12xSfs.js} +5 -5
  222. package/lib/cjs/type/matrix/utils/{algorithm13.js → matAlgo13xDD.js} +5 -5
  223. package/lib/cjs/type/matrix/utils/{algorithm14.js → matAlgo14xDs.js} +5 -5
  224. package/lib/cjs/type/matrix/utils/matrixAlgorithmSuite.js +238 -0
  225. package/lib/cjs/type/number.js +6 -4
  226. package/lib/cjs/type/string.js +7 -5
  227. package/lib/cjs/type/unit/Unit.js +98 -45
  228. package/lib/cjs/type/unit/function/createUnit.js +2 -1
  229. package/lib/cjs/type/unit/function/unit.js +14 -5
  230. package/lib/cjs/utils/customs.js +2 -2
  231. package/lib/cjs/utils/emitter.js +1 -1
  232. package/lib/cjs/utils/function.js +2 -2
  233. package/lib/cjs/utils/is.js +27 -25
  234. package/lib/cjs/utils/latex.js +3 -3
  235. package/lib/cjs/utils/lruQueue.js +1 -1
  236. package/lib/cjs/utils/map.js +3 -3
  237. package/lib/cjs/utils/object.js +2 -2
  238. package/lib/cjs/utils/snapshot.js +30 -57
  239. package/lib/cjs/utils/string.js +3 -3
  240. package/lib/cjs/version.js +1 -1
  241. package/lib/esm/core/create.js +2 -1
  242. package/lib/esm/core/function/import.js +2 -12
  243. package/lib/esm/core/function/typed.js +47 -11
  244. package/lib/esm/entry/dependenciesAny/dependenciesChainClass.generated.js +2 -0
  245. package/lib/esm/entry/dependenciesAny/dependenciesKldivergence.generated.js +2 -0
  246. package/lib/esm/entry/dependenciesAny/dependenciesRationalize.generated.js +2 -0
  247. package/lib/esm/entry/dependenciesAny/dependenciesResolve.generated.js +2 -0
  248. package/lib/esm/entry/dependenciesAny/dependenciesSimplify.generated.js +2 -0
  249. package/lib/esm/entry/dependenciesAny/dependenciesSimplifyConstant.generated.js +34 -0
  250. package/lib/esm/entry/dependenciesAny/dependenciesSimplifyCore.generated.js +4 -0
  251. package/lib/esm/entry/dependenciesAny/dependenciesSqrtm.generated.js +2 -0
  252. package/lib/esm/entry/dependenciesAny/dependenciesStd.generated.js +2 -0
  253. package/lib/esm/entry/dependenciesAny/dependenciesStdTransform.generated.js +2 -0
  254. package/lib/esm/entry/dependenciesAny.generated.js +1 -0
  255. package/lib/esm/entry/dependenciesNumber/dependenciesChainClass.generated.js +2 -0
  256. package/lib/esm/entry/dependenciesNumber/dependenciesRationalize.generated.js +2 -0
  257. package/lib/esm/entry/dependenciesNumber/dependenciesResolve.generated.js +2 -0
  258. package/lib/esm/entry/dependenciesNumber/dependenciesSimplify.generated.js +2 -0
  259. package/lib/esm/entry/dependenciesNumber/dependenciesSimplifyConstant.generated.js +30 -0
  260. package/lib/esm/entry/dependenciesNumber/dependenciesSimplifyCore.generated.js +4 -0
  261. package/lib/esm/entry/dependenciesNumber/dependenciesStd.generated.js +2 -0
  262. package/lib/esm/entry/dependenciesNumber/dependenciesStdTransform.generated.js +2 -0
  263. package/lib/esm/entry/dependenciesNumber.generated.js +1 -0
  264. package/lib/esm/entry/impureFunctionsAny.generated.js +73 -48
  265. package/lib/esm/entry/impureFunctionsNumber.generated.js +81 -58
  266. package/lib/esm/entry/pureFunctionsAny.generated.js +39 -36
  267. package/lib/esm/entry/pureFunctionsNumber.generated.js +14 -13
  268. package/lib/esm/expression/embeddedDocs/construction/index.js +1 -1
  269. package/lib/esm/expression/embeddedDocs/embeddedDocs.js +2 -0
  270. package/lib/esm/expression/embeddedDocs/function/algebra/simplifyConstant.js +8 -0
  271. package/lib/esm/expression/embeddedDocs/function/algebra/simplifyCore.js +1 -1
  272. package/lib/esm/expression/node/AccessorNode.js +158 -153
  273. package/lib/esm/expression/node/ArrayNode.js +162 -154
  274. package/lib/esm/expression/node/AssignmentNode.js +257 -245
  275. package/lib/esm/expression/node/BlockNode.js +177 -163
  276. package/lib/esm/expression/node/ConditionalNode.js +197 -174
  277. package/lib/esm/expression/node/ConstantNode.js +171 -163
  278. package/lib/esm/expression/node/FunctionAssignmentNode.js +205 -180
  279. package/lib/esm/expression/node/FunctionNode.js +407 -407
  280. package/lib/esm/expression/node/IndexNode.js +206 -198
  281. package/lib/esm/expression/node/Node.js +325 -325
  282. package/lib/esm/expression/node/ObjectNode.js +166 -157
  283. package/lib/esm/expression/node/OperatorNode.js +414 -377
  284. package/lib/esm/expression/node/ParenthesisNode.js +146 -138
  285. package/lib/esm/expression/node/RangeNode.js +221 -212
  286. package/lib/esm/expression/node/RelationalNode.js +190 -176
  287. package/lib/esm/expression/node/SymbolNode.js +161 -152
  288. package/lib/esm/expression/operators.js +96 -4
  289. package/lib/esm/expression/parse.js +25 -7
  290. package/lib/esm/expression/transform/std.transform.js +3 -1
  291. package/lib/esm/factoriesAny.js +1 -0
  292. package/lib/esm/factoriesNumber.js +1 -0
  293. package/lib/esm/function/algebra/derivative.js +25 -33
  294. package/lib/esm/function/algebra/leafCount.js +0 -3
  295. package/lib/esm/function/algebra/rationalize.js +83 -114
  296. package/lib/esm/function/algebra/resolve.js +25 -16
  297. package/lib/esm/function/algebra/simplify.js +85 -113
  298. package/lib/esm/function/algebra/{simplify/simplifyConstant.js → simplifyConstant.js} +39 -9
  299. package/lib/esm/function/algebra/simplifyCore.js +192 -91
  300. package/lib/esm/function/algebra/symbolicEqual.js +14 -32
  301. package/lib/esm/function/arithmetic/abs.js +3 -16
  302. package/lib/esm/function/arithmetic/add.js +21 -65
  303. package/lib/esm/function/arithmetic/addScalar.js +11 -5
  304. package/lib/esm/function/arithmetic/cbrt.js +7 -10
  305. package/lib/esm/function/arithmetic/ceil.js +25 -25
  306. package/lib/esm/function/arithmetic/cube.js +5 -9
  307. package/lib/esm/function/arithmetic/divide.js +7 -7
  308. package/lib/esm/function/arithmetic/divideScalar.js +2 -19
  309. package/lib/esm/function/arithmetic/dotDivide.js +22 -64
  310. package/lib/esm/function/arithmetic/dotMultiply.js +16 -60
  311. package/lib/esm/function/arithmetic/dotPow.js +30 -62
  312. package/lib/esm/function/arithmetic/exp.js +8 -11
  313. package/lib/esm/function/arithmetic/expm1.js +10 -9
  314. package/lib/esm/function/arithmetic/fix.js +18 -18
  315. package/lib/esm/function/arithmetic/floor.js +26 -26
  316. package/lib/esm/function/arithmetic/gcd.js +26 -70
  317. package/lib/esm/function/arithmetic/hypot.js +7 -6
  318. package/lib/esm/function/arithmetic/invmod.js +1 -1
  319. package/lib/esm/function/arithmetic/lcm.js +26 -70
  320. package/lib/esm/function/arithmetic/log.js +7 -10
  321. package/lib/esm/function/arithmetic/log10.js +1 -3
  322. package/lib/esm/function/arithmetic/log1p.js +4 -6
  323. package/lib/esm/function/arithmetic/log2.js +1 -3
  324. package/lib/esm/function/arithmetic/mod.js +21 -62
  325. package/lib/esm/function/arithmetic/multiply.js +23 -27
  326. package/lib/esm/function/arithmetic/multiplyScalar.js +2 -13
  327. package/lib/esm/function/arithmetic/norm.js +0 -4
  328. package/lib/esm/function/arithmetic/nthRoot.js +41 -76
  329. package/lib/esm/function/arithmetic/nthRoots.js +2 -2
  330. package/lib/esm/function/arithmetic/round.js +26 -28
  331. package/lib/esm/function/arithmetic/sign.js +5 -7
  332. package/lib/esm/function/arithmetic/sqrt.js +5 -8
  333. package/lib/esm/function/arithmetic/square.js +6 -9
  334. package/lib/esm/function/arithmetic/subtract.js +31 -95
  335. package/lib/esm/function/arithmetic/unaryMinus.js +6 -16
  336. package/lib/esm/function/arithmetic/unaryPlus.js +2 -4
  337. package/lib/esm/function/bitwise/bitAnd.js +16 -59
  338. package/lib/esm/function/bitwise/bitNot.js +2 -4
  339. package/lib/esm/function/bitwise/bitOr.js +16 -59
  340. package/lib/esm/function/bitwise/bitXor.js +16 -59
  341. package/lib/esm/function/bitwise/leftShift.js +39 -61
  342. package/lib/esm/function/bitwise/rightArithShift.js +39 -61
  343. package/lib/esm/function/bitwise/rightLogShift.js +39 -61
  344. package/lib/esm/function/bitwise/useMatrixForArrayScalar.js +13 -0
  345. package/lib/esm/function/complex/arg.js +1 -3
  346. package/lib/esm/function/complex/conj.js +3 -12
  347. package/lib/esm/function/complex/im.js +4 -15
  348. package/lib/esm/function/complex/re.js +3 -15
  349. package/lib/esm/function/geometry/distance.js +2 -2
  350. package/lib/esm/function/logical/and.js +35 -57
  351. package/lib/esm/function/logical/not.js +3 -6
  352. package/lib/esm/function/logical/or.js +16 -61
  353. package/lib/esm/function/logical/xor.js +16 -61
  354. package/lib/esm/function/matrix/diff.js +3 -8
  355. package/lib/esm/function/matrix/ones.js +2 -1
  356. package/lib/esm/function/matrix/rotate.js +5 -5
  357. package/lib/esm/function/matrix/sqrtm.js +3 -2
  358. package/lib/esm/function/matrix/transpose.js +47 -50
  359. package/lib/esm/function/matrix/zeros.js +2 -1
  360. package/lib/esm/function/probability/factorial.js +1 -3
  361. package/lib/esm/function/probability/gamma.js +38 -39
  362. package/lib/esm/function/probability/kldivergence.js +3 -2
  363. package/lib/esm/function/probability/lgamma.js +29 -29
  364. package/lib/esm/function/relational/compare.js +21 -67
  365. package/lib/esm/function/relational/compareNatural.js +54 -49
  366. package/lib/esm/function/relational/compareText.js +10 -42
  367. package/lib/esm/function/relational/compareUnits.js +15 -0
  368. package/lib/esm/function/relational/equal.js +19 -79
  369. package/lib/esm/function/relational/equalScalar.js +6 -9
  370. package/lib/esm/function/relational/larger.js +23 -73
  371. package/lib/esm/function/relational/largerEq.js +23 -73
  372. package/lib/esm/function/relational/smaller.js +23 -73
  373. package/lib/esm/function/relational/smallerEq.js +23 -73
  374. package/lib/esm/function/relational/unequal.js +19 -79
  375. package/lib/esm/function/special/erf.js +1 -3
  376. package/lib/esm/function/statistics/std.js +10 -2
  377. package/lib/esm/function/string/format.js +2 -2
  378. package/lib/esm/function/string/hex.js +1 -2
  379. package/lib/esm/function/trigonometry/acos.js +4 -7
  380. package/lib/esm/function/trigonometry/acosh.js +2 -6
  381. package/lib/esm/function/trigonometry/acot.js +6 -10
  382. package/lib/esm/function/trigonometry/acoth.js +4 -7
  383. package/lib/esm/function/trigonometry/acsc.js +6 -10
  384. package/lib/esm/function/trigonometry/acsch.js +4 -7
  385. package/lib/esm/function/trigonometry/asec.js +6 -9
  386. package/lib/esm/function/trigonometry/asech.js +4 -7
  387. package/lib/esm/function/trigonometry/asin.js +5 -9
  388. package/lib/esm/function/trigonometry/asinh.js +4 -8
  389. package/lib/esm/function/trigonometry/atan.js +5 -10
  390. package/lib/esm/function/trigonometry/atan2.js +26 -65
  391. package/lib/esm/function/trigonometry/atanh.js +4 -8
  392. package/lib/esm/function/trigonometry/cos.js +11 -22
  393. package/lib/esm/function/trigonometry/cosh.js +5 -20
  394. package/lib/esm/function/trigonometry/cot.js +10 -20
  395. package/lib/esm/function/trigonometry/coth.js +6 -20
  396. package/lib/esm/function/trigonometry/csc.js +12 -22
  397. package/lib/esm/function/trigonometry/csch.js +6 -20
  398. package/lib/esm/function/trigonometry/sec.js +12 -22
  399. package/lib/esm/function/trigonometry/sech.js +6 -20
  400. package/lib/esm/function/trigonometry/sin.js +11 -23
  401. package/lib/esm/function/trigonometry/sinh.js +5 -21
  402. package/lib/esm/function/trigonometry/tan.js +11 -23
  403. package/lib/esm/function/trigonometry/tanh.js +5 -21
  404. package/lib/esm/function/trigonometry/trigUnit.js +15 -0
  405. package/lib/esm/function/unit/to.js +8 -43
  406. package/lib/esm/function/utils/clone.js +1 -1
  407. package/lib/esm/function/utils/hasNumericValue.js +3 -1
  408. package/lib/esm/function/utils/isInteger.js +2 -4
  409. package/lib/esm/function/utils/isNaN.js +1 -1
  410. package/lib/esm/function/utils/isNegative.js +3 -7
  411. package/lib/esm/function/utils/isNumeric.js +4 -10
  412. package/lib/esm/function/utils/isPositive.js +3 -7
  413. package/lib/esm/function/utils/isPrime.js +1 -3
  414. package/lib/esm/function/utils/isZero.js +13 -17
  415. package/lib/esm/function/utils/numeric.js +11 -4
  416. package/lib/esm/function/utils/typeOf.js +38 -44
  417. package/lib/esm/type/bignumber/function/bignumber.js +1 -3
  418. package/lib/esm/type/boolean.js +1 -3
  419. package/lib/esm/type/chain/Chain.js +23 -3
  420. package/lib/esm/type/complex/Complex.js +4 -0
  421. package/lib/esm/type/complex/function/complex.js +1 -3
  422. package/lib/esm/type/fraction/Fraction.js +4 -0
  423. package/lib/esm/type/fraction/function/fraction.js +1 -3
  424. package/lib/esm/type/matrix/DenseMatrix.js +15 -1
  425. package/lib/esm/type/matrix/SparseMatrix.js +9 -0
  426. package/lib/esm/type/matrix/utils/{algorithm01.js → matAlgo01xDSid.js} +2 -2
  427. package/lib/esm/type/matrix/utils/{algorithm02.js → matAlgo02xDS0.js} +3 -3
  428. package/lib/esm/type/matrix/utils/{algorithm03.js → matAlgo03xDSf.js} +3 -3
  429. package/lib/esm/type/matrix/utils/{algorithm04.js → matAlgo04xSidSid.js} +5 -5
  430. package/lib/esm/type/matrix/utils/{algorithm05.js → matAlgo05xSfSf.js} +3 -3
  431. package/lib/esm/type/matrix/utils/{algorithm06.js → matAlgo06xS0S0.js} +3 -3
  432. package/lib/esm/type/matrix/utils/{algorithm07.js → matAlgo07xSSf.js} +3 -3
  433. package/lib/esm/type/matrix/utils/{algorithm08.js → matAlgo08xS0Sid.js} +4 -4
  434. package/lib/esm/type/matrix/utils/{algorithm09.js → matAlgo09xS0Sf.js} +3 -3
  435. package/lib/esm/type/matrix/utils/{algorithm10.js → matAlgo10xSids.js} +3 -3
  436. package/lib/esm/type/matrix/utils/{algorithm11.js → matAlgo11xS0s.js} +3 -3
  437. package/lib/esm/type/matrix/utils/{algorithm12.js → matAlgo12xSfs.js} +3 -3
  438. package/lib/esm/type/matrix/utils/{algorithm13.js → matAlgo13xDD.js} +3 -3
  439. package/lib/esm/type/matrix/utils/{algorithm14.js → matAlgo14xDs.js} +3 -3
  440. package/lib/esm/type/matrix/utils/matrixAlgorithmSuite.js +168 -0
  441. package/lib/esm/type/number.js +1 -3
  442. package/lib/esm/type/string.js +1 -3
  443. package/lib/esm/type/unit/Unit.js +85 -36
  444. package/lib/esm/type/unit/function/createUnit.js +2 -1
  445. package/lib/esm/type/unit/function/unit.js +10 -5
  446. package/lib/esm/utils/is.js +18 -18
  447. package/lib/esm/utils/snapshot.js +22 -48
  448. package/lib/esm/version.js +1 -1
  449. package/package.json +22 -25
  450. package/types/index.d.ts +211 -180
  451. package/types/index.ts +358 -144
  452. package/types/tsconfig.json +4 -1
  453. package/lib/cjs/utils/polyfills.js +0 -14
  454. package/lib/esm/utils/polyfills.js +0 -12
@@ -79,12 +79,14 @@ var createBignumber = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
79
79
  Fraction: function Fraction(x) {
80
80
  return new BigNumber(x.n).div(x.d).times(x.s);
81
81
  },
82
- null: function _null(x) {
82
+ "null": function _null(x) {
83
83
  return new BigNumber(0);
84
84
  },
85
- 'Array | Matrix': function ArrayMatrix(x) {
86
- return (0, _collection.deepMap)(x, this);
87
- }
85
+ 'Array | Matrix': typed.referToSelf(function (self) {
86
+ return function (x) {
87
+ return (0, _collection.deepMap)(x, self);
88
+ };
89
+ })
88
90
  });
89
91
  });
90
92
  exports.createBignumber = createBignumber;
@@ -45,13 +45,13 @@ var createBoolean = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
45
45
  '': function _() {
46
46
  return false;
47
47
  },
48
- boolean: function boolean(x) {
48
+ "boolean": function boolean(x) {
49
49
  return x;
50
50
  },
51
51
  number: function number(x) {
52
52
  return !!x;
53
53
  },
54
- null: function _null(x) {
54
+ "null": function _null(x) {
55
55
  return false;
56
56
  },
57
57
  BigNumber: function BigNumber(x) {
@@ -76,9 +76,11 @@ var createBoolean = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
76
76
 
77
77
  throw new Error('Cannot convert "' + x + '" to a boolean');
78
78
  },
79
- 'Array | Matrix': function ArrayMatrix(x) {
80
- return (0, _collection.deepMap)(x, this);
81
- }
79
+ 'Array | Matrix': typed.referToSelf(function (self) {
80
+ return function (x) {
81
+ return (0, _collection.deepMap)(x, self);
82
+ };
83
+ })
82
84
  });
83
85
  });
84
86
  exports.createBoolean = createBoolean;
@@ -14,10 +14,11 @@ var _object = require("../../utils/object.js");
14
14
  var _factory = require("../../utils/factory.js");
15
15
 
16
16
  var name = 'Chain';
17
- var dependencies = ['?on', 'math'];
17
+ var dependencies = ['?on', 'math', 'typed'];
18
18
  var createChainClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
19
19
  var on = _ref.on,
20
- math = _ref.math;
20
+ math = _ref.math,
21
+ typed = _ref.typed;
21
22
 
22
23
  /**
23
24
  * @constructor Chain
@@ -151,12 +152,31 @@ var createChainClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
151
152
 
152
153
  function chainify(fn) {
153
154
  return function () {
154
- var args = [this.value]; // `this` will be the context of a Chain instance
155
+ // Here, `this` will be the context of a Chain instance
156
+ if (arguments.length === 0) {
157
+ return new Chain(fn(this.value));
158
+ }
159
+
160
+ var args = [this.value];
155
161
 
156
162
  for (var i = 0; i < arguments.length; i++) {
157
163
  args[i + 1] = arguments[i];
158
164
  }
159
165
 
166
+ if (typed.isTypedFunction(fn)) {
167
+ var sigObject = typed.resolve(fn, args); // We want to detect if a rest parameter has matched across the
168
+ // value in the chain and the current arguments of this call.
169
+ // That is the case if and only if the matching signature has
170
+ // exactly one parameter (which then must be a rest parameter
171
+ // as it is matching at least two actual arguments).
172
+
173
+ if (sigObject.params.length === 1) {
174
+ throw new Error('chain function ' + fn.name + ' cannot match rest parameter between chain value and additional arguments.');
175
+ }
176
+
177
+ return new Chain(sigObject.implementation.apply(fn, args));
178
+ }
179
+
160
180
  return new Chain(fn.apply(fn, args));
161
181
  };
162
182
  }
@@ -23,15 +23,19 @@ var createComplexClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies
23
23
  /**
24
24
  * Attach type information
25
25
  */
26
- _complex.default.prototype.type = 'Complex';
27
- _complex.default.prototype.isComplex = true;
26
+ Object.defineProperty(_complex["default"], 'name', {
27
+ value: 'Complex'
28
+ });
29
+ _complex["default"].prototype.constructor = _complex["default"];
30
+ _complex["default"].prototype.type = 'Complex';
31
+ _complex["default"].prototype.isComplex = true;
28
32
  /**
29
33
  * Get a JSON representation of the complex number
30
34
  * @returns {Object} Returns a JSON object structured as:
31
35
  * `{"mathjs": "Complex", "re": 2, "im": 3}`
32
36
  */
33
37
 
34
- _complex.default.prototype.toJSON = function () {
38
+ _complex["default"].prototype.toJSON = function () {
35
39
  return {
36
40
  mathjs: 'Complex',
37
41
  re: this.re,
@@ -45,7 +49,7 @@ var createComplexClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies
45
49
  */
46
50
 
47
51
 
48
- _complex.default.prototype.toPolar = function () {
52
+ _complex["default"].prototype.toPolar = function () {
49
53
  return {
50
54
  r: this.abs(),
51
55
  phi: this.arg()
@@ -62,7 +66,7 @@ var createComplexClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies
62
66
  */
63
67
 
64
68
 
65
- _complex.default.prototype.format = function (options) {
69
+ _complex["default"].prototype.format = function (options) {
66
70
  var str = '';
67
71
  var im = this.im;
68
72
  var re = this.re;
@@ -127,14 +131,14 @@ var createComplexClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies
127
131
  */
128
132
 
129
133
 
130
- _complex.default.fromPolar = function (args) {
134
+ _complex["default"].fromPolar = function (args) {
131
135
  switch (arguments.length) {
132
136
  case 1:
133
137
  {
134
138
  var arg = arguments[0];
135
139
 
136
- if ((0, _typeof2.default)(arg) === 'object') {
137
- return (0, _complex.default)(arg);
140
+ if ((0, _typeof2["default"])(arg) === 'object') {
141
+ return (0, _complex["default"])(arg);
138
142
  } else {
139
143
  throw new TypeError('Input has to be an object with r and phi keys.');
140
144
  }
@@ -152,7 +156,7 @@ var createComplexClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies
152
156
  }
153
157
 
154
158
  if ((0, _is.isNumber)(phi)) {
155
- return new _complex.default({
159
+ return new _complex["default"]({
156
160
  r: r,
157
161
  phi: phi
158
162
  });
@@ -169,7 +173,7 @@ var createComplexClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies
169
173
  }
170
174
  };
171
175
 
172
- _complex.default.prototype.valueOf = _complex.default.prototype.toString;
176
+ _complex["default"].prototype.valueOf = _complex["default"].prototype.toString;
173
177
  /**
174
178
  * Create a Complex number from a JSON object
175
179
  * @param {Object} json A JSON Object structured as
@@ -179,8 +183,8 @@ var createComplexClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies
179
183
  * @return {Complex} Returns a new Complex number
180
184
  */
181
185
 
182
- _complex.default.fromJSON = function (json) {
183
- return new _complex.default(json);
186
+ _complex["default"].fromJSON = function (json) {
187
+ return new _complex["default"](json);
184
188
  };
185
189
  /**
186
190
  * Compare two complex numbers, `a` and `b`:
@@ -199,7 +203,7 @@ var createComplexClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies
199
203
  */
200
204
 
201
205
 
202
- _complex.default.compare = function (a, b) {
206
+ _complex["default"].compare = function (a, b) {
203
207
  if (a.re > b.re) {
204
208
  return 1;
205
209
  }
@@ -219,7 +223,7 @@ var createComplexClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies
219
223
  return 0;
220
224
  };
221
225
 
222
- return _complex.default;
226
+ return _complex["default"];
223
227
  }, {
224
228
  isClass: true
225
229
  });
@@ -76,7 +76,7 @@ var createComplex = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
76
76
  string: function string(x) {
77
77
  return Complex(x); // for example '2 + 3i'
78
78
  },
79
- null: function _null(x) {
79
+ "null": function _null(x) {
80
80
  return Complex(0);
81
81
  },
82
82
  Object: function Object(x) {
@@ -90,9 +90,11 @@ var createComplex = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
90
90
 
91
91
  throw new Error('Expected object with properties (re and im) or (r and phi) or (abs and arg)');
92
92
  },
93
- 'Array | Matrix': function ArrayMatrix(x) {
94
- return (0, _collection.deepMap)(x, this);
95
- }
93
+ 'Array | Matrix': typed.referToSelf(function (self) {
94
+ return function (x) {
95
+ return (0, _collection.deepMap)(x, self);
96
+ };
97
+ })
96
98
  });
97
99
  });
98
100
  exports.createComplex = createComplex;
@@ -17,15 +17,19 @@ var createFractionClass = /* #__PURE__ */(0, _factory.factory)(name, dependencie
17
17
  /**
18
18
  * Attach type information
19
19
  */
20
- _fraction.default.prototype.type = 'Fraction';
21
- _fraction.default.prototype.isFraction = true;
20
+ Object.defineProperty(_fraction["default"], 'name', {
21
+ value: 'Fraction'
22
+ });
23
+ _fraction["default"].prototype.constructor = _fraction["default"];
24
+ _fraction["default"].prototype.type = 'Fraction';
25
+ _fraction["default"].prototype.isFraction = true;
22
26
  /**
23
27
  * Get a JSON representation of a Fraction containing type information
24
28
  * @returns {Object} Returns a JSON object structured as:
25
29
  * `{"mathjs": "Fraction", "n": 3, "d": 8}`
26
30
  */
27
31
 
28
- _fraction.default.prototype.toJSON = function () {
32
+ _fraction["default"].prototype.toJSON = function () {
29
33
  return {
30
34
  mathjs: 'Fraction',
31
35
  n: this.s * this.n,
@@ -40,11 +44,11 @@ var createFractionClass = /* #__PURE__ */(0, _factory.factory)(name, dependencie
40
44
  */
41
45
 
42
46
 
43
- _fraction.default.fromJSON = function (json) {
44
- return new _fraction.default(json);
47
+ _fraction["default"].fromJSON = function (json) {
48
+ return new _fraction["default"](json);
45
49
  };
46
50
 
47
- return _fraction.default;
51
+ return _fraction["default"];
48
52
  }, {
49
53
  isClass: true
50
54
  });
@@ -66,7 +66,7 @@ var createFraction = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
66
66
  'number, number': function numberNumber(numerator, denominator) {
67
67
  return new Fraction(numerator, denominator);
68
68
  },
69
- null: function _null(x) {
69
+ "null": function _null(x) {
70
70
  return new Fraction(0);
71
71
  },
72
72
  BigNumber: function BigNumber(x) {
@@ -78,9 +78,11 @@ var createFraction = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
78
78
  Object: function Object(x) {
79
79
  return new Fraction(x);
80
80
  },
81
- 'Array | Matrix': function ArrayMatrix(x) {
82
- return (0, _collection.deepMap)(x, this);
83
- }
81
+ 'Array | Matrix': typed.referToSelf(function (self) {
82
+ return function (x) {
83
+ return (0, _collection.deepMap)(x, self);
84
+ };
85
+ })
84
86
  });
85
87
  });
86
88
  exports.createFraction = createFraction;
@@ -23,7 +23,9 @@ var _DimensionError = require("../../error/DimensionError.js");
23
23
 
24
24
  var _factory = require("../../utils/factory.js");
25
25
 
26
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
26
+ var _function = require("../../utils/function.js");
27
+
28
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
27
29
 
28
30
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
29
31
 
@@ -101,6 +103,10 @@ var createDenseMatrixClass = /* #__PURE__ */(0, _factory.factory)(name, dependen
101
103
  */
102
104
 
103
105
 
106
+ Object.defineProperty(DenseMatrix, 'name', {
107
+ value: 'DenseMatrix'
108
+ });
109
+ DenseMatrix.prototype.constructor = DenseMatrix;
104
110
  DenseMatrix.prototype.type = 'DenseMatrix';
105
111
  DenseMatrix.prototype.isDenseMatrix = true;
106
112
  /**
@@ -600,6 +606,7 @@ var createDenseMatrixClass = /* #__PURE__ */(0, _factory.factory)(name, dependen
600
606
  DenseMatrix.prototype.map = function (callback) {
601
607
  // matrix instance
602
608
  var me = this;
609
+ var args = (0, _function.maxArgumentCount)(callback);
603
610
 
604
611
  var recurse = function recurse(value, index) {
605
612
  if ((0, _is.isArray)(value)) {
@@ -607,7 +614,15 @@ var createDenseMatrixClass = /* #__PURE__ */(0, _factory.factory)(name, dependen
607
614
  return recurse(child, index.concat(i));
608
615
  });
609
616
  } else {
610
- return callback(value, index, me);
617
+ // invoke the callback function with the right number of arguments
618
+ if (args === 1) {
619
+ return callback(value);
620
+ } else if (args === 2) {
621
+ return callback(value, index);
622
+ } else {
623
+ // 3 or -1
624
+ return callback(value, index, me);
625
+ }
611
626
  }
612
627
  }; // determine the new datatype when the original matrix has datatype defined
613
628
  // TODO: should be done in matrix constructor instead
@@ -648,15 +663,15 @@ var createDenseMatrixClass = /* #__PURE__ */(0, _factory.factory)(name, dependen
648
663
  */
649
664
 
650
665
 
651
- DenseMatrix.prototype[Symbol.iterator] = /*#__PURE__*/_regenerator.default.mark(function _callee() {
666
+ DenseMatrix.prototype[Symbol.iterator] = /*#__PURE__*/_regenerator["default"].mark(function _callee() {
652
667
  var recurse;
653
- return _regenerator.default.wrap(function _callee$(_context2) {
668
+ return _regenerator["default"].wrap(function _callee$(_context2) {
654
669
  while (1) {
655
670
  switch (_context2.prev = _context2.next) {
656
671
  case 0:
657
- recurse = /*#__PURE__*/_regenerator.default.mark(function recurse(value, index) {
672
+ recurse = /*#__PURE__*/_regenerator["default"].mark(function recurse(value, index) {
658
673
  var i;
659
- return _regenerator.default.wrap(function recurse$(_context) {
674
+ return _regenerator["default"].wrap(function recurse$(_context) {
660
675
  while (1) {
661
676
  switch (_context.prev = _context.next) {
662
677
  case 0:
@@ -23,6 +23,8 @@ var _factory = require("../../utils/factory.js");
23
23
 
24
24
  var _DimensionError = require("../../error/DimensionError.js");
25
25
 
26
+ var _function = require("../../utils/function.js");
27
+
26
28
  var name = 'SparseMatrix';
27
29
  var dependencies = ['typed', 'equalScalar', 'Matrix'];
28
30
  var createSparseMatrixClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
@@ -182,6 +184,10 @@ var createSparseMatrixClass = /* #__PURE__ */(0, _factory.factory)(name, depende
182
184
  */
183
185
 
184
186
 
187
+ Object.defineProperty(SparseMatrix, 'name', {
188
+ value: 'SparseMatrix'
189
+ });
190
+ SparseMatrix.prototype.constructor = SparseMatrix;
185
191
  SparseMatrix.prototype.type = 'SparseMatrix';
186
192
  SparseMatrix.prototype.isSparseMatrix = true;
187
193
  /**
@@ -935,8 +941,12 @@ var createSparseMatrixClass = /* #__PURE__ */(0, _factory.factory)(name, depende
935
941
  var rows = this._size[0];
936
942
  var columns = this._size[1]; // invoke callback
937
943
 
944
+ var args = (0, _function.maxArgumentCount)(callback);
945
+
938
946
  var invoke = function invoke(v, i, j) {
939
947
  // invoke callback
948
+ if (args === 1) return callback(v);
949
+ if (args === 2) return callback(v, [i, j]);
940
950
  return callback(v, [i, j], me);
941
951
  }; // invoke _map
942
952
 
@@ -1087,9 +1097,9 @@ var createSparseMatrixClass = /* #__PURE__ */(0, _factory.factory)(name, depende
1087
1097
  */
1088
1098
 
1089
1099
 
1090
- SparseMatrix.prototype[Symbol.iterator] = /*#__PURE__*/_regenerator.default.mark(function _callee() {
1100
+ SparseMatrix.prototype[Symbol.iterator] = /*#__PURE__*/_regenerator["default"].mark(function _callee() {
1091
1101
  var columns, j, k0, k1, k, i;
1092
- return _regenerator.default.wrap(function _callee$(_context) {
1102
+ return _regenerator["default"].wrap(function _callee$(_context) {
1093
1103
  while (1) {
1094
1104
  switch (_context.prev = _context.next) {
1095
1105
  case 0:
@@ -3,15 +3,15 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.createAlgorithm01 = void 0;
6
+ exports.createMatAlgo01xDSid = void 0;
7
7
 
8
8
  var _factory = require("../../../utils/factory.js");
9
9
 
10
10
  var _DimensionError = require("../../../error/DimensionError.js");
11
11
 
12
- var name = 'algorithm01';
12
+ var name = 'matAlgo01xDSid';
13
13
  var dependencies = ['typed'];
14
- var createAlgorithm01 = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
14
+ var createMatAlgo01xDSid = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
15
15
  var typed = _ref.typed;
16
16
 
17
17
  /**
@@ -114,4 +114,4 @@ var createAlgorithm01 = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
114
114
  });
115
115
  };
116
116
  });
117
- exports.createAlgorithm01 = createAlgorithm01;
117
+ exports.createMatAlgo01xDSid = createMatAlgo01xDSid;
@@ -3,15 +3,15 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.createAlgorithm02 = void 0;
6
+ exports.createMatAlgo02xDS0 = void 0;
7
7
 
8
8
  var _factory = require("../../../utils/factory.js");
9
9
 
10
10
  var _DimensionError = require("../../../error/DimensionError.js");
11
11
 
12
- var name = 'algorithm02';
12
+ var name = 'matAlgo02xDS0';
13
13
  var dependencies = ['typed', 'equalScalar'];
14
- var createAlgorithm02 = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
14
+ var createMatAlgo02xDS0 = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
15
15
  var typed = _ref.typed,
16
16
  equalScalar = _ref.equalScalar;
17
17
 
@@ -34,7 +34,7 @@ var createAlgorithm02 = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
34
34
  *
35
35
  * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97477571
36
36
  */
37
- return function algorithm02(denseMatrix, sparseMatrix, callback, inverse) {
37
+ return function matAlgo02xDS0(denseMatrix, sparseMatrix, callback, inverse) {
38
38
  // dense matrix arrays
39
39
  var adata = denseMatrix._data;
40
40
  var asize = denseMatrix._size;
@@ -118,4 +118,4 @@ var createAlgorithm02 = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
118
118
  });
119
119
  };
120
120
  });
121
- exports.createAlgorithm02 = createAlgorithm02;
121
+ exports.createMatAlgo02xDS0 = createMatAlgo02xDS0;
@@ -3,15 +3,15 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.createAlgorithm03 = void 0;
6
+ exports.createMatAlgo03xDSf = void 0;
7
7
 
8
8
  var _factory = require("../../../utils/factory.js");
9
9
 
10
10
  var _DimensionError = require("../../../error/DimensionError.js");
11
11
 
12
- var name = 'algorithm03';
12
+ var name = 'matAlgo03xDSf';
13
13
  var dependencies = ['typed'];
14
- var createAlgorithm03 = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
14
+ var createMatAlgo03xDSf = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
15
15
  var typed = _ref.typed;
16
16
 
17
17
  /**
@@ -33,7 +33,7 @@ var createAlgorithm03 = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
33
33
  *
34
34
  * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97477571
35
35
  */
36
- return function algorithm03(denseMatrix, sparseMatrix, callback, inverse) {
36
+ return function matAlgo03xDSf(denseMatrix, sparseMatrix, callback, inverse) {
37
37
  // dense matrix arrays
38
38
  var adata = denseMatrix._data;
39
39
  var asize = denseMatrix._size;
@@ -124,4 +124,4 @@ var createAlgorithm03 = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
124
124
  });
125
125
  };
126
126
  });
127
- exports.createAlgorithm03 = createAlgorithm03;
127
+ exports.createMatAlgo03xDSf = createMatAlgo03xDSf;
@@ -3,15 +3,15 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.createAlgorithm04 = void 0;
6
+ exports.createMatAlgo04xSidSid = void 0;
7
7
 
8
8
  var _factory = require("../../../utils/factory.js");
9
9
 
10
10
  var _DimensionError = require("../../../error/DimensionError.js");
11
11
 
12
- var name = 'algorithm04';
12
+ var name = 'matAlgo04xSidSid';
13
13
  var dependencies = ['typed', 'equalScalar'];
14
- var createAlgorithm04 = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
14
+ var createMatAlgo04xSidSid = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
15
15
  var typed = _ref.typed,
16
16
  equalScalar = _ref.equalScalar;
17
17
 
@@ -21,8 +21,8 @@ var createAlgorithm04 = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
21
21
  *
22
22
  *
23
23
  * ┌ f(Aij, Bij) ; A(i,j) !== 0 && B(i,j) !== 0
24
- * C(i,j) = ┤ A(i,j) ; A(i,j) !== 0
25
- * └ B(i,j) ; B(i,j) !== 0
24
+ * C(i,j) = ┤ A(i,j) ; A(i,j) !== 0 && B(i,j) === 0
25
+ * └ B(i,j) ; A(i,j) === 0
26
26
  *
27
27
  *
28
28
  * @param {Matrix} a The SparseMatrix instance (A)
@@ -33,7 +33,7 @@ var createAlgorithm04 = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
33
33
  *
34
34
  * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294
35
35
  */
36
- return function algorithm04(a, b, callback) {
36
+ return function matAlgo04xSidSid(a, b, callback) {
37
37
  // sparse matrix arrays
38
38
  var avalues = a._values;
39
39
  var aindex = a._index;
@@ -181,4 +181,4 @@ var createAlgorithm04 = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
181
181
  });
182
182
  };
183
183
  });
184
- exports.createAlgorithm04 = createAlgorithm04;
184
+ exports.createMatAlgo04xSidSid = createMatAlgo04xSidSid;
@@ -3,15 +3,15 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.createAlgorithm05 = void 0;
6
+ exports.createMatAlgo05xSfSf = void 0;
7
7
 
8
8
  var _factory = require("../../../utils/factory.js");
9
9
 
10
10
  var _DimensionError = require("../../../error/DimensionError.js");
11
11
 
12
- var name = 'algorithm05';
12
+ var name = 'matAlgo05xSfSf';
13
13
  var dependencies = ['typed', 'equalScalar'];
14
- var createAlgorithm05 = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
14
+ var createMatAlgo05xSfSf = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
15
15
  var typed = _ref.typed,
16
16
  equalScalar = _ref.equalScalar;
17
17
 
@@ -33,7 +33,7 @@ var createAlgorithm05 = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
33
33
  *
34
34
  * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294
35
35
  */
36
- return function algorithm05(a, b, callback) {
36
+ return function matAlgo05xSfSf(a, b, callback) {
37
37
  // sparse matrix arrays
38
38
  var avalues = a._values;
39
39
  var aindex = a._index;
@@ -174,4 +174,4 @@ var createAlgorithm05 = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
174
174
  });
175
175
  };
176
176
  });
177
- exports.createAlgorithm05 = createAlgorithm05;
177
+ exports.createMatAlgo05xSfSf = createMatAlgo05xSfSf;
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.createAlgorithm06 = void 0;
6
+ exports.createMatAlgo06xS0S0 = void 0;
7
7
 
8
8
  var _factory = require("../../../utils/factory.js");
9
9
 
@@ -11,9 +11,9 @@ var _DimensionError = require("../../../error/DimensionError.js");
11
11
 
12
12
  var _collection = require("../../../utils/collection.js");
13
13
 
14
- var name = 'algorithm06';
14
+ var name = 'matAlgo06xS0S0';
15
15
  var dependencies = ['typed', 'equalScalar'];
16
- var createAlgorithm06 = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
16
+ var createMatAlgo06xS0S0 = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
17
17
  var typed = _ref.typed,
18
18
  equalScalar = _ref.equalScalar;
19
19
 
@@ -35,7 +35,7 @@ var createAlgorithm06 = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
35
35
  *
36
36
  * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294
37
37
  */
38
- return function algorithm06(a, b, callback) {
38
+ return function matAlgo06xS0S0(a, b, callback) {
39
39
  // sparse matrix arrays
40
40
  var avalues = a._values;
41
41
  var asize = a._size;
@@ -155,4 +155,4 @@ var createAlgorithm06 = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
155
155
  });
156
156
  };
157
157
  });
158
- exports.createAlgorithm06 = createAlgorithm06;
158
+ exports.createMatAlgo06xS0S0 = createMatAlgo06xS0S0;
@@ -3,15 +3,15 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.createAlgorithm07 = void 0;
6
+ exports.createMatAlgo07xSSf = void 0;
7
7
 
8
8
  var _factory = require("../../../utils/factory.js");
9
9
 
10
10
  var _DimensionError = require("../../../error/DimensionError.js");
11
11
 
12
- var name = 'algorithm07';
12
+ var name = 'matAlgo07xSSf';
13
13
  var dependencies = ['typed', 'DenseMatrix'];
14
- var createAlgorithm07 = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
14
+ var createMatAlgo07xSSf = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
15
15
  var typed = _ref.typed,
16
16
  DenseMatrix = _ref.DenseMatrix;
17
17
 
@@ -29,7 +29,7 @@ var createAlgorithm07 = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
29
29
  *
30
30
  * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294
31
31
  */
32
- return function algorithm07(a, b, callback) {
32
+ return function matAlgo07xSSf(a, b, callback) {
33
33
  // sparse matrix arrays
34
34
  var asize = a._size;
35
35
  var adt = a._datatype; // sparse matrix arrays
@@ -123,4 +123,4 @@ var createAlgorithm07 = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
123
123
  }
124
124
  }
125
125
  });
126
- exports.createAlgorithm07 = createAlgorithm07;
126
+ exports.createMatAlgo07xSSf = createMatAlgo07xSSf;