mathjs 10.6.2 → 11.0.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 (436) hide show
  1. package/HISTORY.md +74 -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/embeddedDocs.js +8 -5
  39. package/lib/cjs/expression/embeddedDocs/function/algebra/simplifyConstant.js +15 -0
  40. package/lib/cjs/expression/embeddedDocs/function/algebra/simplifyCore.js +1 -1
  41. package/lib/cjs/expression/node/AccessorNode.js +216 -173
  42. package/lib/cjs/expression/node/ArrayNode.js +206 -160
  43. package/lib/cjs/expression/node/AssignmentNode.js +321 -270
  44. package/lib/cjs/expression/node/BlockNode.js +223 -172
  45. package/lib/cjs/expression/node/ConditionalNode.js +253 -193
  46. package/lib/cjs/expression/node/ConstantNode.js +216 -171
  47. package/lib/cjs/expression/node/FunctionAssignmentNode.js +258 -196
  48. package/lib/cjs/expression/node/FunctionNode.js +456 -416
  49. package/lib/cjs/expression/node/IndexNode.js +256 -210
  50. package/lib/cjs/expression/node/Node.js +411 -378
  51. package/lib/cjs/expression/node/ObjectNode.js +223 -178
  52. package/lib/cjs/expression/node/OperatorNode.js +474 -397
  53. package/lib/cjs/expression/node/ParenthesisNode.js +189 -143
  54. package/lib/cjs/expression/node/RangeNode.js +272 -224
  55. package/lib/cjs/expression/node/RelationalNode.js +246 -195
  56. package/lib/cjs/expression/node/SymbolNode.js +219 -172
  57. package/lib/cjs/expression/node/utils/access.js +1 -1
  58. package/lib/cjs/expression/node/utils/assign.js +1 -1
  59. package/lib/cjs/expression/operators.js +117 -23
  60. package/lib/cjs/expression/parse.js +37 -19
  61. package/lib/cjs/expression/transform/std.transform.js +3 -1
  62. package/lib/cjs/factoriesAny.js +8 -0
  63. package/lib/cjs/factoriesNumber.js +10 -1
  64. package/lib/cjs/function/algebra/decomposition/qr.js +1 -1
  65. package/lib/cjs/function/algebra/derivative.js +22 -30
  66. package/lib/cjs/function/algebra/leafCount.js +0 -3
  67. package/lib/cjs/function/algebra/rationalize.js +78 -108
  68. package/lib/cjs/function/algebra/resolve.js +53 -16
  69. package/lib/cjs/function/algebra/simplify/util.js +1 -1
  70. package/lib/cjs/function/algebra/simplify.js +87 -114
  71. package/lib/cjs/function/algebra/{simplify/simplifyConstant.js → simplifyConstant.js} +44 -10
  72. package/lib/cjs/function/algebra/simplifyCore.js +196 -93
  73. package/lib/cjs/function/algebra/solver/lsolveAll.js +2 -2
  74. package/lib/cjs/function/algebra/solver/usolveAll.js +2 -2
  75. package/lib/cjs/function/algebra/symbolicEqual.js +9 -26
  76. package/lib/cjs/function/arithmetic/abs.js +7 -14
  77. package/lib/cjs/function/arithmetic/add.js +26 -70
  78. package/lib/cjs/function/arithmetic/addScalar.js +17 -9
  79. package/lib/cjs/function/arithmetic/cbrt.js +7 -11
  80. package/lib/cjs/function/arithmetic/ceil.js +56 -46
  81. package/lib/cjs/function/arithmetic/cube.js +5 -10
  82. package/lib/cjs/function/arithmetic/divide.js +7 -7
  83. package/lib/cjs/function/arithmetic/divideScalar.js +4 -18
  84. package/lib/cjs/function/arithmetic/dotDivide.js +22 -65
  85. package/lib/cjs/function/arithmetic/dotMultiply.js +16 -61
  86. package/lib/cjs/function/arithmetic/dotPow.js +30 -63
  87. package/lib/cjs/function/arithmetic/exp.js +8 -12
  88. package/lib/cjs/function/arithmetic/expm1.js +10 -10
  89. package/lib/cjs/function/arithmetic/fix.js +33 -27
  90. package/lib/cjs/function/arithmetic/floor.js +56 -46
  91. package/lib/cjs/function/arithmetic/gcd.js +27 -68
  92. package/lib/cjs/function/arithmetic/hypot.js +9 -5
  93. package/lib/cjs/function/arithmetic/invmod.js +1 -1
  94. package/lib/cjs/function/arithmetic/lcm.js +27 -68
  95. package/lib/cjs/function/arithmetic/log.js +10 -12
  96. package/lib/cjs/function/arithmetic/log10.js +5 -3
  97. package/lib/cjs/function/arithmetic/log1p.js +11 -7
  98. package/lib/cjs/function/arithmetic/log2.js +5 -3
  99. package/lib/cjs/function/arithmetic/mod.js +22 -64
  100. package/lib/cjs/function/arithmetic/multiply.js +40 -35
  101. package/lib/cjs/function/arithmetic/multiplyScalar.js +2 -9
  102. package/lib/cjs/function/arithmetic/norm.js +1 -5
  103. package/lib/cjs/function/arithmetic/nthRoot.js +80 -92
  104. package/lib/cjs/function/arithmetic/round.js +56 -42
  105. package/lib/cjs/function/arithmetic/sign.js +14 -10
  106. package/lib/cjs/function/arithmetic/sqrt.js +5 -9
  107. package/lib/cjs/function/arithmetic/square.js +6 -10
  108. package/lib/cjs/function/arithmetic/subtract.js +44 -100
  109. package/lib/cjs/function/arithmetic/unaryMinus.js +14 -16
  110. package/lib/cjs/function/arithmetic/unaryPlus.js +6 -4
  111. package/lib/cjs/function/bitwise/bitAnd.js +17 -61
  112. package/lib/cjs/function/bitwise/bitNot.js +5 -3
  113. package/lib/cjs/function/bitwise/bitOr.js +16 -60
  114. package/lib/cjs/function/bitwise/bitXor.js +17 -61
  115. package/lib/cjs/function/bitwise/leftShift.js +68 -81
  116. package/lib/cjs/function/bitwise/rightArithShift.js +68 -81
  117. package/lib/cjs/function/bitwise/rightLogShift.js +68 -81
  118. package/lib/cjs/function/bitwise/useMatrixForArrayScalar.js +36 -0
  119. package/lib/cjs/function/complex/arg.js +5 -3
  120. package/lib/cjs/function/complex/conj.js +6 -7
  121. package/lib/cjs/function/complex/im.js +7 -8
  122. package/lib/cjs/function/complex/re.js +6 -10
  123. package/lib/cjs/function/logical/and.js +74 -80
  124. package/lib/cjs/function/logical/not.js +13 -6
  125. package/lib/cjs/function/logical/or.js +21 -63
  126. package/lib/cjs/function/logical/xor.js +21 -63
  127. package/lib/cjs/function/matrix/diff.js +10 -7
  128. package/lib/cjs/function/matrix/eigs/complexEigs.js +5 -5
  129. package/lib/cjs/function/matrix/fft.js +2 -2
  130. package/lib/cjs/function/matrix/matrixFromColumns.js +1 -1
  131. package/lib/cjs/function/matrix/matrixFromRows.js +1 -1
  132. package/lib/cjs/function/matrix/ones.js +2 -1
  133. package/lib/cjs/function/matrix/sqrtm.js +3 -2
  134. package/lib/cjs/function/matrix/transpose.js +47 -48
  135. package/lib/cjs/function/matrix/zeros.js +2 -1
  136. package/lib/cjs/function/probability/factorial.js +5 -3
  137. package/lib/cjs/function/probability/gamma.js +38 -40
  138. package/lib/cjs/function/probability/kldivergence.js +5 -2
  139. package/lib/cjs/function/probability/lgamma.js +30 -30
  140. package/lib/cjs/function/probability/util/seededRNG.js +2 -2
  141. package/lib/cjs/function/relational/compare.js +21 -67
  142. package/lib/cjs/function/relational/compareNatural.js +59 -54
  143. package/lib/cjs/function/relational/compareText.js +10 -43
  144. package/lib/cjs/function/relational/compareUnits.js +24 -0
  145. package/lib/cjs/function/relational/equal.js +19 -80
  146. package/lib/cjs/function/relational/equalScalar.js +7 -9
  147. package/lib/cjs/function/relational/larger.js +21 -67
  148. package/lib/cjs/function/relational/largerEq.js +21 -67
  149. package/lib/cjs/function/relational/smaller.js +21 -67
  150. package/lib/cjs/function/relational/smallerEq.js +21 -67
  151. package/lib/cjs/function/relational/unequal.js +19 -80
  152. package/lib/cjs/function/special/erf.js +5 -3
  153. package/lib/cjs/function/statistics/std.js +11 -2
  154. package/lib/cjs/function/trigonometry/acos.js +4 -8
  155. package/lib/cjs/function/trigonometry/acosh.js +2 -7
  156. package/lib/cjs/function/trigonometry/acot.js +4 -8
  157. package/lib/cjs/function/trigonometry/acoth.js +4 -8
  158. package/lib/cjs/function/trigonometry/acsc.js +4 -8
  159. package/lib/cjs/function/trigonometry/acsch.js +4 -8
  160. package/lib/cjs/function/trigonometry/asec.js +4 -8
  161. package/lib/cjs/function/trigonometry/asech.js +4 -8
  162. package/lib/cjs/function/trigonometry/asin.js +4 -9
  163. package/lib/cjs/function/trigonometry/asinh.js +4 -9
  164. package/lib/cjs/function/trigonometry/atan.js +4 -9
  165. package/lib/cjs/function/trigonometry/atan2.js +24 -62
  166. package/lib/cjs/function/trigonometry/atanh.js +4 -9
  167. package/lib/cjs/function/trigonometry/cos.js +11 -20
  168. package/lib/cjs/function/trigonometry/cosh.js +5 -19
  169. package/lib/cjs/function/trigonometry/cot.js +9 -15
  170. package/lib/cjs/function/trigonometry/coth.js +4 -15
  171. package/lib/cjs/function/trigonometry/csc.js +11 -17
  172. package/lib/cjs/function/trigonometry/csch.js +4 -15
  173. package/lib/cjs/function/trigonometry/sec.js +11 -17
  174. package/lib/cjs/function/trigonometry/sech.js +4 -15
  175. package/lib/cjs/function/trigonometry/sin.js +11 -21
  176. package/lib/cjs/function/trigonometry/sinh.js +5 -20
  177. package/lib/cjs/function/trigonometry/tan.js +11 -21
  178. package/lib/cjs/function/trigonometry/tanh.js +5 -20
  179. package/lib/cjs/function/trigonometry/trigUnit.js +24 -0
  180. package/lib/cjs/function/unit/to.js +7 -41
  181. package/lib/cjs/function/utils/hasNumericValue.js +4 -0
  182. package/lib/cjs/function/utils/isInteger.js +5 -3
  183. package/lib/cjs/function/utils/isNegative.js +10 -6
  184. package/lib/cjs/function/utils/isNumeric.js +5 -3
  185. package/lib/cjs/function/utils/isPositive.js +10 -6
  186. package/lib/cjs/function/utils/isPrime.js +5 -3
  187. package/lib/cjs/function/utils/isZero.js +10 -6
  188. package/lib/cjs/function/utils/numeric.js +11 -4
  189. package/lib/cjs/function/utils/typeOf.js +38 -44
  190. package/lib/cjs/header.js +2 -2
  191. package/lib/cjs/plain/bignumber/index.js +1 -1
  192. package/lib/cjs/type/bignumber/BigNumber.js +2 -2
  193. package/lib/cjs/type/bignumber/function/bignumber.js +6 -4
  194. package/lib/cjs/type/boolean.js +7 -5
  195. package/lib/cjs/type/chain/Chain.js +23 -3
  196. package/lib/cjs/type/complex/Complex.js +18 -14
  197. package/lib/cjs/type/complex/function/complex.js +6 -4
  198. package/lib/cjs/type/fraction/Fraction.js +10 -6
  199. package/lib/cjs/type/fraction/function/fraction.js +6 -4
  200. package/lib/cjs/type/matrix/DenseMatrix.js +21 -6
  201. package/lib/cjs/type/matrix/SparseMatrix.js +12 -2
  202. package/lib/cjs/type/matrix/utils/{algorithm01.js → matAlgo01xDSid.js} +4 -4
  203. package/lib/cjs/type/matrix/utils/{algorithm02.js → matAlgo02xDS0.js} +5 -5
  204. package/lib/cjs/type/matrix/utils/{algorithm03.js → matAlgo03xDSf.js} +5 -5
  205. package/lib/cjs/type/matrix/utils/{algorithm04.js → matAlgo04xSidSid.js} +7 -7
  206. package/lib/cjs/type/matrix/utils/{algorithm05.js → matAlgo05xSfSf.js} +5 -5
  207. package/lib/cjs/type/matrix/utils/{algorithm06.js → matAlgo06xS0S0.js} +5 -5
  208. package/lib/cjs/type/matrix/utils/{algorithm07.js → matAlgo07xSSf.js} +5 -5
  209. package/lib/cjs/type/matrix/utils/{algorithm08.js → matAlgo08xS0Sid.js} +6 -6
  210. package/lib/cjs/type/matrix/utils/{algorithm09.js → matAlgo09xS0Sf.js} +5 -5
  211. package/lib/cjs/type/matrix/utils/{algorithm10.js → matAlgo10xSids.js} +5 -5
  212. package/lib/cjs/type/matrix/utils/{algorithm11.js → matAlgo11xS0s.js} +5 -5
  213. package/lib/cjs/type/matrix/utils/{algorithm12.js → matAlgo12xSfs.js} +5 -5
  214. package/lib/cjs/type/matrix/utils/{algorithm13.js → matAlgo13xDD.js} +5 -5
  215. package/lib/cjs/type/matrix/utils/{algorithm14.js → matAlgo14xDs.js} +5 -5
  216. package/lib/cjs/type/matrix/utils/matrixAlgorithmSuite.js +238 -0
  217. package/lib/cjs/type/number.js +6 -4
  218. package/lib/cjs/type/string.js +7 -5
  219. package/lib/cjs/type/unit/Unit.js +69 -21
  220. package/lib/cjs/type/unit/function/createUnit.js +2 -1
  221. package/lib/cjs/type/unit/function/unit.js +9 -3
  222. package/lib/cjs/utils/customs.js +2 -2
  223. package/lib/cjs/utils/emitter.js +1 -1
  224. package/lib/cjs/utils/function.js +2 -2
  225. package/lib/cjs/utils/is.js +27 -25
  226. package/lib/cjs/utils/latex.js +3 -3
  227. package/lib/cjs/utils/lruQueue.js +1 -1
  228. package/lib/cjs/utils/map.js +3 -3
  229. package/lib/cjs/utils/object.js +2 -2
  230. package/lib/cjs/utils/snapshot.js +30 -57
  231. package/lib/cjs/utils/string.js +3 -3
  232. package/lib/cjs/version.js +1 -1
  233. package/lib/esm/core/create.js +2 -1
  234. package/lib/esm/core/function/import.js +2 -12
  235. package/lib/esm/core/function/typed.js +47 -11
  236. package/lib/esm/entry/dependenciesAny/dependenciesChainClass.generated.js +2 -0
  237. package/lib/esm/entry/dependenciesAny/dependenciesKldivergence.generated.js +2 -0
  238. package/lib/esm/entry/dependenciesAny/dependenciesRationalize.generated.js +2 -0
  239. package/lib/esm/entry/dependenciesAny/dependenciesResolve.generated.js +2 -0
  240. package/lib/esm/entry/dependenciesAny/dependenciesSimplify.generated.js +2 -0
  241. package/lib/esm/entry/dependenciesAny/dependenciesSimplifyConstant.generated.js +34 -0
  242. package/lib/esm/entry/dependenciesAny/dependenciesSimplifyCore.generated.js +4 -0
  243. package/lib/esm/entry/dependenciesAny/dependenciesSqrtm.generated.js +2 -0
  244. package/lib/esm/entry/dependenciesAny/dependenciesStd.generated.js +2 -0
  245. package/lib/esm/entry/dependenciesAny/dependenciesStdTransform.generated.js +2 -0
  246. package/lib/esm/entry/dependenciesAny.generated.js +1 -0
  247. package/lib/esm/entry/dependenciesNumber/dependenciesChainClass.generated.js +2 -0
  248. package/lib/esm/entry/dependenciesNumber/dependenciesRationalize.generated.js +2 -0
  249. package/lib/esm/entry/dependenciesNumber/dependenciesResolve.generated.js +2 -0
  250. package/lib/esm/entry/dependenciesNumber/dependenciesSimplify.generated.js +2 -0
  251. package/lib/esm/entry/dependenciesNumber/dependenciesSimplifyConstant.generated.js +30 -0
  252. package/lib/esm/entry/dependenciesNumber/dependenciesSimplifyCore.generated.js +4 -0
  253. package/lib/esm/entry/dependenciesNumber/dependenciesStd.generated.js +2 -0
  254. package/lib/esm/entry/dependenciesNumber/dependenciesStdTransform.generated.js +2 -0
  255. package/lib/esm/entry/dependenciesNumber.generated.js +1 -0
  256. package/lib/esm/entry/impureFunctionsAny.generated.js +73 -48
  257. package/lib/esm/entry/impureFunctionsNumber.generated.js +81 -58
  258. package/lib/esm/entry/pureFunctionsAny.generated.js +39 -36
  259. package/lib/esm/entry/pureFunctionsNumber.generated.js +14 -13
  260. package/lib/esm/expression/embeddedDocs/embeddedDocs.js +2 -0
  261. package/lib/esm/expression/embeddedDocs/function/algebra/simplifyConstant.js +8 -0
  262. package/lib/esm/expression/embeddedDocs/function/algebra/simplifyCore.js +1 -1
  263. package/lib/esm/expression/node/AccessorNode.js +158 -153
  264. package/lib/esm/expression/node/ArrayNode.js +162 -154
  265. package/lib/esm/expression/node/AssignmentNode.js +257 -245
  266. package/lib/esm/expression/node/BlockNode.js +177 -163
  267. package/lib/esm/expression/node/ConditionalNode.js +197 -174
  268. package/lib/esm/expression/node/ConstantNode.js +171 -163
  269. package/lib/esm/expression/node/FunctionAssignmentNode.js +205 -180
  270. package/lib/esm/expression/node/FunctionNode.js +407 -407
  271. package/lib/esm/expression/node/IndexNode.js +206 -198
  272. package/lib/esm/expression/node/Node.js +325 -325
  273. package/lib/esm/expression/node/ObjectNode.js +166 -157
  274. package/lib/esm/expression/node/OperatorNode.js +414 -377
  275. package/lib/esm/expression/node/ParenthesisNode.js +146 -138
  276. package/lib/esm/expression/node/RangeNode.js +221 -212
  277. package/lib/esm/expression/node/RelationalNode.js +190 -176
  278. package/lib/esm/expression/node/SymbolNode.js +161 -152
  279. package/lib/esm/expression/operators.js +96 -4
  280. package/lib/esm/expression/parse.js +25 -7
  281. package/lib/esm/expression/transform/std.transform.js +3 -1
  282. package/lib/esm/factoriesAny.js +1 -0
  283. package/lib/esm/factoriesNumber.js +1 -0
  284. package/lib/esm/function/algebra/derivative.js +22 -30
  285. package/lib/esm/function/algebra/leafCount.js +0 -3
  286. package/lib/esm/function/algebra/rationalize.js +83 -114
  287. package/lib/esm/function/algebra/resolve.js +25 -16
  288. package/lib/esm/function/algebra/simplify.js +82 -112
  289. package/lib/esm/function/algebra/{simplify/simplifyConstant.js → simplifyConstant.js} +39 -9
  290. package/lib/esm/function/algebra/simplifyCore.js +192 -91
  291. package/lib/esm/function/algebra/symbolicEqual.js +9 -26
  292. package/lib/esm/function/arithmetic/abs.js +3 -16
  293. package/lib/esm/function/arithmetic/add.js +21 -65
  294. package/lib/esm/function/arithmetic/addScalar.js +11 -5
  295. package/lib/esm/function/arithmetic/cbrt.js +7 -10
  296. package/lib/esm/function/arithmetic/ceil.js +25 -25
  297. package/lib/esm/function/arithmetic/cube.js +5 -9
  298. package/lib/esm/function/arithmetic/divide.js +7 -7
  299. package/lib/esm/function/arithmetic/divideScalar.js +2 -19
  300. package/lib/esm/function/arithmetic/dotDivide.js +22 -64
  301. package/lib/esm/function/arithmetic/dotMultiply.js +16 -60
  302. package/lib/esm/function/arithmetic/dotPow.js +30 -62
  303. package/lib/esm/function/arithmetic/exp.js +8 -11
  304. package/lib/esm/function/arithmetic/expm1.js +10 -9
  305. package/lib/esm/function/arithmetic/fix.js +17 -17
  306. package/lib/esm/function/arithmetic/floor.js +25 -25
  307. package/lib/esm/function/arithmetic/gcd.js +26 -70
  308. package/lib/esm/function/arithmetic/hypot.js +7 -6
  309. package/lib/esm/function/arithmetic/lcm.js +26 -70
  310. package/lib/esm/function/arithmetic/log.js +7 -10
  311. package/lib/esm/function/arithmetic/log10.js +1 -3
  312. package/lib/esm/function/arithmetic/log1p.js +4 -6
  313. package/lib/esm/function/arithmetic/log2.js +1 -3
  314. package/lib/esm/function/arithmetic/mod.js +21 -62
  315. package/lib/esm/function/arithmetic/multiply.js +23 -27
  316. package/lib/esm/function/arithmetic/multiplyScalar.js +2 -13
  317. package/lib/esm/function/arithmetic/norm.js +0 -4
  318. package/lib/esm/function/arithmetic/nthRoot.js +38 -73
  319. package/lib/esm/function/arithmetic/round.js +26 -28
  320. package/lib/esm/function/arithmetic/sign.js +5 -7
  321. package/lib/esm/function/arithmetic/sqrt.js +5 -8
  322. package/lib/esm/function/arithmetic/square.js +6 -9
  323. package/lib/esm/function/arithmetic/subtract.js +31 -95
  324. package/lib/esm/function/arithmetic/unaryMinus.js +6 -16
  325. package/lib/esm/function/arithmetic/unaryPlus.js +2 -4
  326. package/lib/esm/function/bitwise/bitAnd.js +16 -59
  327. package/lib/esm/function/bitwise/bitNot.js +1 -3
  328. package/lib/esm/function/bitwise/bitOr.js +16 -59
  329. package/lib/esm/function/bitwise/bitXor.js +16 -59
  330. package/lib/esm/function/bitwise/leftShift.js +38 -60
  331. package/lib/esm/function/bitwise/rightArithShift.js +38 -60
  332. package/lib/esm/function/bitwise/rightLogShift.js +38 -60
  333. package/lib/esm/function/bitwise/useMatrixForArrayScalar.js +13 -0
  334. package/lib/esm/function/complex/arg.js +1 -3
  335. package/lib/esm/function/complex/conj.js +3 -12
  336. package/lib/esm/function/complex/im.js +4 -15
  337. package/lib/esm/function/complex/re.js +3 -15
  338. package/lib/esm/function/logical/and.js +35 -57
  339. package/lib/esm/function/logical/not.js +3 -6
  340. package/lib/esm/function/logical/or.js +16 -61
  341. package/lib/esm/function/logical/xor.js +16 -61
  342. package/lib/esm/function/matrix/diff.js +2 -7
  343. package/lib/esm/function/matrix/ones.js +2 -1
  344. package/lib/esm/function/matrix/sqrtm.js +3 -2
  345. package/lib/esm/function/matrix/transpose.js +47 -50
  346. package/lib/esm/function/matrix/zeros.js +2 -1
  347. package/lib/esm/function/probability/factorial.js +1 -3
  348. package/lib/esm/function/probability/gamma.js +38 -39
  349. package/lib/esm/function/probability/kldivergence.js +3 -2
  350. package/lib/esm/function/probability/lgamma.js +29 -29
  351. package/lib/esm/function/relational/compare.js +21 -67
  352. package/lib/esm/function/relational/compareNatural.js +54 -49
  353. package/lib/esm/function/relational/compareText.js +10 -42
  354. package/lib/esm/function/relational/compareUnits.js +15 -0
  355. package/lib/esm/function/relational/equal.js +19 -79
  356. package/lib/esm/function/relational/equalScalar.js +6 -9
  357. package/lib/esm/function/relational/larger.js +23 -73
  358. package/lib/esm/function/relational/largerEq.js +23 -73
  359. package/lib/esm/function/relational/smaller.js +23 -73
  360. package/lib/esm/function/relational/smallerEq.js +23 -73
  361. package/lib/esm/function/relational/unequal.js +19 -79
  362. package/lib/esm/function/special/erf.js +1 -3
  363. package/lib/esm/function/statistics/std.js +10 -2
  364. package/lib/esm/function/trigonometry/acos.js +4 -7
  365. package/lib/esm/function/trigonometry/acosh.js +2 -6
  366. package/lib/esm/function/trigonometry/acot.js +4 -7
  367. package/lib/esm/function/trigonometry/acoth.js +4 -7
  368. package/lib/esm/function/trigonometry/acsc.js +4 -7
  369. package/lib/esm/function/trigonometry/acsch.js +4 -7
  370. package/lib/esm/function/trigonometry/asec.js +4 -7
  371. package/lib/esm/function/trigonometry/asech.js +4 -7
  372. package/lib/esm/function/trigonometry/asin.js +4 -8
  373. package/lib/esm/function/trigonometry/asinh.js +4 -8
  374. package/lib/esm/function/trigonometry/atan.js +4 -8
  375. package/lib/esm/function/trigonometry/atan2.js +25 -64
  376. package/lib/esm/function/trigonometry/atanh.js +4 -8
  377. package/lib/esm/function/trigonometry/cos.js +11 -22
  378. package/lib/esm/function/trigonometry/cosh.js +5 -20
  379. package/lib/esm/function/trigonometry/cot.js +10 -20
  380. package/lib/esm/function/trigonometry/coth.js +6 -20
  381. package/lib/esm/function/trigonometry/csc.js +12 -22
  382. package/lib/esm/function/trigonometry/csch.js +6 -20
  383. package/lib/esm/function/trigonometry/sec.js +12 -22
  384. package/lib/esm/function/trigonometry/sech.js +6 -20
  385. package/lib/esm/function/trigonometry/sin.js +11 -23
  386. package/lib/esm/function/trigonometry/sinh.js +5 -21
  387. package/lib/esm/function/trigonometry/tan.js +11 -23
  388. package/lib/esm/function/trigonometry/tanh.js +5 -21
  389. package/lib/esm/function/trigonometry/trigUnit.js +15 -0
  390. package/lib/esm/function/unit/to.js +8 -43
  391. package/lib/esm/function/utils/hasNumericValue.js +2 -0
  392. package/lib/esm/function/utils/isInteger.js +1 -3
  393. package/lib/esm/function/utils/isNegative.js +2 -6
  394. package/lib/esm/function/utils/isNumeric.js +3 -9
  395. package/lib/esm/function/utils/isPositive.js +2 -6
  396. package/lib/esm/function/utils/isPrime.js +1 -3
  397. package/lib/esm/function/utils/isZero.js +2 -6
  398. package/lib/esm/function/utils/numeric.js +11 -4
  399. package/lib/esm/function/utils/typeOf.js +38 -44
  400. package/lib/esm/type/bignumber/function/bignumber.js +1 -3
  401. package/lib/esm/type/boolean.js +1 -3
  402. package/lib/esm/type/chain/Chain.js +23 -3
  403. package/lib/esm/type/complex/Complex.js +4 -0
  404. package/lib/esm/type/complex/function/complex.js +1 -3
  405. package/lib/esm/type/fraction/Fraction.js +4 -0
  406. package/lib/esm/type/fraction/function/fraction.js +1 -3
  407. package/lib/esm/type/matrix/DenseMatrix.js +15 -1
  408. package/lib/esm/type/matrix/SparseMatrix.js +9 -0
  409. package/lib/esm/type/matrix/utils/{algorithm01.js → matAlgo01xDSid.js} +2 -2
  410. package/lib/esm/type/matrix/utils/{algorithm02.js → matAlgo02xDS0.js} +3 -3
  411. package/lib/esm/type/matrix/utils/{algorithm03.js → matAlgo03xDSf.js} +3 -3
  412. package/lib/esm/type/matrix/utils/{algorithm04.js → matAlgo04xSidSid.js} +5 -5
  413. package/lib/esm/type/matrix/utils/{algorithm05.js → matAlgo05xSfSf.js} +3 -3
  414. package/lib/esm/type/matrix/utils/{algorithm06.js → matAlgo06xS0S0.js} +3 -3
  415. package/lib/esm/type/matrix/utils/{algorithm07.js → matAlgo07xSSf.js} +3 -3
  416. package/lib/esm/type/matrix/utils/{algorithm08.js → matAlgo08xS0Sid.js} +4 -4
  417. package/lib/esm/type/matrix/utils/{algorithm09.js → matAlgo09xS0Sf.js} +3 -3
  418. package/lib/esm/type/matrix/utils/{algorithm10.js → matAlgo10xSids.js} +3 -3
  419. package/lib/esm/type/matrix/utils/{algorithm11.js → matAlgo11xS0s.js} +3 -3
  420. package/lib/esm/type/matrix/utils/{algorithm12.js → matAlgo12xSfs.js} +3 -3
  421. package/lib/esm/type/matrix/utils/{algorithm13.js → matAlgo13xDD.js} +3 -3
  422. package/lib/esm/type/matrix/utils/{algorithm14.js → matAlgo14xDs.js} +3 -3
  423. package/lib/esm/type/matrix/utils/matrixAlgorithmSuite.js +168 -0
  424. package/lib/esm/type/number.js +1 -3
  425. package/lib/esm/type/string.js +1 -3
  426. package/lib/esm/type/unit/Unit.js +61 -13
  427. package/lib/esm/type/unit/function/createUnit.js +2 -1
  428. package/lib/esm/type/unit/function/unit.js +5 -3
  429. package/lib/esm/utils/is.js +18 -18
  430. package/lib/esm/utils/snapshot.js +22 -48
  431. package/lib/esm/version.js +1 -1
  432. package/package.json +21 -24
  433. package/types/index.d.ts +202 -181
  434. package/types/index.ts +264 -57
  435. package/lib/cjs/utils/polyfills.js +0 -14
  436. package/lib/esm/utils/polyfills.js +0 -12
@@ -5,6 +5,7 @@ import { clone, deepStrictEqual } from '../../utils/object.js';
5
5
  import { arraySize, getArrayDataType, processSizesWildcard, unsqueeze, validateIndex } from '../../utils/array.js';
6
6
  import { factory } from '../../utils/factory.js';
7
7
  import { DimensionError } from '../../error/DimensionError.js';
8
+ import { maxArgumentCount } from '../../utils/function.js';
8
9
  var name = 'SparseMatrix';
9
10
  var dependencies = ['typed', 'equalScalar', 'Matrix'];
10
11
  export var createSparseMatrixClass = /* #__PURE__ */factory(name, dependencies, _ref => {
@@ -166,6 +167,10 @@ export var createSparseMatrixClass = /* #__PURE__ */factory(name, dependencies,
166
167
  */
167
168
 
168
169
 
170
+ Object.defineProperty(SparseMatrix, 'name', {
171
+ value: 'SparseMatrix'
172
+ });
173
+ SparseMatrix.prototype.constructor = SparseMatrix;
169
174
  SparseMatrix.prototype.type = 'SparseMatrix';
170
175
  SparseMatrix.prototype.isSparseMatrix = true;
171
176
  /**
@@ -919,8 +924,12 @@ export var createSparseMatrixClass = /* #__PURE__ */factory(name, dependencies,
919
924
  var rows = this._size[0];
920
925
  var columns = this._size[1]; // invoke callback
921
926
 
927
+ var args = maxArgumentCount(callback);
928
+
922
929
  var invoke = function invoke(v, i, j) {
923
930
  // invoke callback
931
+ if (args === 1) return callback(v);
932
+ if (args === 2) return callback(v, [i, j]);
924
933
  return callback(v, [i, j], me);
925
934
  }; // invoke _map
926
935
 
@@ -1,8 +1,8 @@
1
1
  import { factory } from '../../../utils/factory.js';
2
2
  import { DimensionError } from '../../../error/DimensionError.js';
3
- var name = 'algorithm01';
3
+ var name = 'matAlgo01xDSid';
4
4
  var dependencies = ['typed'];
5
- export var createAlgorithm01 = /* #__PURE__ */factory(name, dependencies, _ref => {
5
+ export var createMatAlgo01xDSid = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed
8
8
  } = _ref;
@@ -1,8 +1,8 @@
1
1
  import { factory } from '../../../utils/factory.js';
2
2
  import { DimensionError } from '../../../error/DimensionError.js';
3
- var name = 'algorithm02';
3
+ var name = 'matAlgo02xDS0';
4
4
  var dependencies = ['typed', 'equalScalar'];
5
- export var createAlgorithm02 = /* #__PURE__ */factory(name, dependencies, _ref => {
5
+ export var createMatAlgo02xDS0 = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed,
8
8
  equalScalar
@@ -27,7 +27,7 @@ export var createAlgorithm02 = /* #__PURE__ */factory(name, dependencies, _ref =
27
27
  *
28
28
  * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97477571
29
29
  */
30
- return function algorithm02(denseMatrix, sparseMatrix, callback, inverse) {
30
+ return function matAlgo02xDS0(denseMatrix, sparseMatrix, callback, inverse) {
31
31
  // dense matrix arrays
32
32
  var adata = denseMatrix._data;
33
33
  var asize = denseMatrix._size;
@@ -1,8 +1,8 @@
1
1
  import { factory } from '../../../utils/factory.js';
2
2
  import { DimensionError } from '../../../error/DimensionError.js';
3
- var name = 'algorithm03';
3
+ var name = 'matAlgo03xDSf';
4
4
  var dependencies = ['typed'];
5
- export var createAlgorithm03 = /* #__PURE__ */factory(name, dependencies, _ref => {
5
+ export var createMatAlgo03xDSf = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed
8
8
  } = _ref;
@@ -26,7 +26,7 @@ export var createAlgorithm03 = /* #__PURE__ */factory(name, dependencies, _ref =
26
26
  *
27
27
  * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97477571
28
28
  */
29
- return function algorithm03(denseMatrix, sparseMatrix, callback, inverse) {
29
+ return function matAlgo03xDSf(denseMatrix, sparseMatrix, callback, inverse) {
30
30
  // dense matrix arrays
31
31
  var adata = denseMatrix._data;
32
32
  var asize = denseMatrix._size;
@@ -1,8 +1,8 @@
1
1
  import { factory } from '../../../utils/factory.js';
2
2
  import { DimensionError } from '../../../error/DimensionError.js';
3
- var name = 'algorithm04';
3
+ var name = 'matAlgo04xSidSid';
4
4
  var dependencies = ['typed', 'equalScalar'];
5
- export var createAlgorithm04 = /* #__PURE__ */factory(name, dependencies, _ref => {
5
+ export var createMatAlgo04xSidSid = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed,
8
8
  equalScalar
@@ -14,8 +14,8 @@ export var createAlgorithm04 = /* #__PURE__ */factory(name, dependencies, _ref =
14
14
  *
15
15
  *
16
16
  * ┌ f(Aij, Bij) ; A(i,j) !== 0 && B(i,j) !== 0
17
- * C(i,j) = ┤ A(i,j) ; A(i,j) !== 0
18
- * └ B(i,j) ; B(i,j) !== 0
17
+ * C(i,j) = ┤ A(i,j) ; A(i,j) !== 0 && B(i,j) === 0
18
+ * └ B(i,j) ; A(i,j) === 0
19
19
  *
20
20
  *
21
21
  * @param {Matrix} a The SparseMatrix instance (A)
@@ -26,7 +26,7 @@ export var createAlgorithm04 = /* #__PURE__ */factory(name, dependencies, _ref =
26
26
  *
27
27
  * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294
28
28
  */
29
- return function algorithm04(a, b, callback) {
29
+ return function matAlgo04xSidSid(a, b, callback) {
30
30
  // sparse matrix arrays
31
31
  var avalues = a._values;
32
32
  var aindex = a._index;
@@ -1,8 +1,8 @@
1
1
  import { factory } from '../../../utils/factory.js';
2
2
  import { DimensionError } from '../../../error/DimensionError.js';
3
- var name = 'algorithm05';
3
+ var name = 'matAlgo05xSfSf';
4
4
  var dependencies = ['typed', 'equalScalar'];
5
- export var createAlgorithm05 = /* #__PURE__ */factory(name, dependencies, _ref => {
5
+ export var createMatAlgo05xSfSf = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed,
8
8
  equalScalar
@@ -26,7 +26,7 @@ export var createAlgorithm05 = /* #__PURE__ */factory(name, dependencies, _ref =
26
26
  *
27
27
  * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294
28
28
  */
29
- return function algorithm05(a, b, callback) {
29
+ return function matAlgo05xSfSf(a, b, callback) {
30
30
  // sparse matrix arrays
31
31
  var avalues = a._values;
32
32
  var aindex = a._index;
@@ -1,9 +1,9 @@
1
1
  import { factory } from '../../../utils/factory.js';
2
2
  import { DimensionError } from '../../../error/DimensionError.js';
3
3
  import { scatter } from '../../../utils/collection.js';
4
- var name = 'algorithm06';
4
+ var name = 'matAlgo06xS0S0';
5
5
  var dependencies = ['typed', 'equalScalar'];
6
- export var createAlgorithm06 = /* #__PURE__ */factory(name, dependencies, _ref => {
6
+ export var createMatAlgo06xS0S0 = /* #__PURE__ */factory(name, dependencies, _ref => {
7
7
  var {
8
8
  typed,
9
9
  equalScalar
@@ -27,7 +27,7 @@ export var createAlgorithm06 = /* #__PURE__ */factory(name, dependencies, _ref =
27
27
  *
28
28
  * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294
29
29
  */
30
- return function algorithm06(a, b, callback) {
30
+ return function matAlgo06xS0S0(a, b, callback) {
31
31
  // sparse matrix arrays
32
32
  var avalues = a._values;
33
33
  var asize = a._size;
@@ -1,8 +1,8 @@
1
1
  import { factory } from '../../../utils/factory.js';
2
2
  import { DimensionError } from '../../../error/DimensionError.js';
3
- var name = 'algorithm07';
3
+ var name = 'matAlgo07xSSf';
4
4
  var dependencies = ['typed', 'DenseMatrix'];
5
- export var createAlgorithm07 = /* #__PURE__ */factory(name, dependencies, _ref => {
5
+ export var createMatAlgo07xSSf = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed,
8
8
  DenseMatrix
@@ -22,7 +22,7 @@ export var createAlgorithm07 = /* #__PURE__ */factory(name, dependencies, _ref =
22
22
  *
23
23
  * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294
24
24
  */
25
- return function algorithm07(a, b, callback) {
25
+ return function matAlgo07xSSf(a, b, callback) {
26
26
  // sparse matrix arrays
27
27
  var asize = a._size;
28
28
  var adt = a._datatype; // sparse matrix arrays
@@ -1,8 +1,8 @@
1
1
  import { factory } from '../../../utils/factory.js';
2
2
  import { DimensionError } from '../../../error/DimensionError.js';
3
- var name = 'algorithm08';
3
+ var name = 'matAlgo08xS0Sid';
4
4
  var dependencies = ['typed', 'equalScalar'];
5
- export var createAlgorithm08 = /* #__PURE__ */factory(name, dependencies, _ref => {
5
+ export var createMatAlgo08xS0Sid = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed,
8
8
  equalScalar
@@ -14,7 +14,7 @@ export var createAlgorithm08 = /* #__PURE__ */factory(name, dependencies, _ref =
14
14
  *
15
15
  *
16
16
  * ┌ f(Aij, Bij) ; A(i,j) !== 0 && B(i,j) !== 0
17
- * C(i,j) = ┤ A(i,j) ; A(i,j) !== 0
17
+ * C(i,j) = ┤ A(i,j) ; A(i,j) !== 0 && B(i,j) === 0
18
18
  * └ 0 ; otherwise
19
19
  *
20
20
  *
@@ -26,7 +26,7 @@ export var createAlgorithm08 = /* #__PURE__ */factory(name, dependencies, _ref =
26
26
  *
27
27
  * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294
28
28
  */
29
- return function algorithm08(a, b, callback) {
29
+ return function matAlgo08xS0Sid(a, b, callback) {
30
30
  // sparse matrix arrays
31
31
  var avalues = a._values;
32
32
  var aindex = a._index;
@@ -1,8 +1,8 @@
1
1
  import { factory } from '../../../utils/factory.js';
2
2
  import { DimensionError } from '../../../error/DimensionError.js';
3
- var name = 'algorithm09';
3
+ var name = 'matAlgo09xS0Sf';
4
4
  var dependencies = ['typed', 'equalScalar'];
5
- export var createAlgorithm09 = /* #__PURE__ */factory(name, dependencies, _ref => {
5
+ export var createMatAlgo09xS0Sf = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed,
8
8
  equalScalar
@@ -26,7 +26,7 @@ export var createAlgorithm09 = /* #__PURE__ */factory(name, dependencies, _ref =
26
26
  *
27
27
  * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294
28
28
  */
29
- return function algorithm09(a, b, callback) {
29
+ return function matAlgo09xS0Sf(a, b, callback) {
30
30
  // sparse matrix arrays
31
31
  var avalues = a._values;
32
32
  var aindex = a._index;
@@ -1,7 +1,7 @@
1
1
  import { factory } from '../../../utils/factory.js';
2
- var name = 'algorithm10';
2
+ var name = 'matAlgo10xSids';
3
3
  var dependencies = ['typed', 'DenseMatrix'];
4
- export var createAlgorithm10 = /* #__PURE__ */factory(name, dependencies, _ref => {
4
+ export var createMatAlgo10xSids = /* #__PURE__ */factory(name, dependencies, _ref => {
5
5
  var {
6
6
  typed,
7
7
  DenseMatrix
@@ -26,7 +26,7 @@ export var createAlgorithm10 = /* #__PURE__ */factory(name, dependencies, _ref =
26
26
  *
27
27
  * https://github.com/josdejong/mathjs/pull/346#issuecomment-97626813
28
28
  */
29
- return function algorithm10(s, b, callback, inverse) {
29
+ return function matAlgo10xSids(s, b, callback, inverse) {
30
30
  // sparse matrix arrays
31
31
  var avalues = s._values;
32
32
  var aindex = s._index;
@@ -1,7 +1,7 @@
1
1
  import { factory } from '../../../utils/factory.js';
2
- var name = 'algorithm11';
2
+ var name = 'matAlgo11xS0s';
3
3
  var dependencies = ['typed', 'equalScalar'];
4
- export var createAlgorithm11 = /* #__PURE__ */factory(name, dependencies, _ref => {
4
+ export var createMatAlgo11xS0s = /* #__PURE__ */factory(name, dependencies, _ref => {
5
5
  var {
6
6
  typed,
7
7
  equalScalar
@@ -26,7 +26,7 @@ export var createAlgorithm11 = /* #__PURE__ */factory(name, dependencies, _ref =
26
26
  *
27
27
  * https://github.com/josdejong/mathjs/pull/346#issuecomment-97626813
28
28
  */
29
- return function algorithm11(s, b, callback, inverse) {
29
+ return function matAlgo11xS0s(s, b, callback, inverse) {
30
30
  // sparse matrix arrays
31
31
  var avalues = s._values;
32
32
  var aindex = s._index;
@@ -1,7 +1,7 @@
1
1
  import { factory } from '../../../utils/factory.js';
2
- var name = 'algorithm12';
2
+ var name = 'matAlgo12xSfs';
3
3
  var dependencies = ['typed', 'DenseMatrix'];
4
- export var createAlgorithm12 = /* #__PURE__ */factory(name, dependencies, _ref => {
4
+ export var createMatAlgo12xSfs = /* #__PURE__ */factory(name, dependencies, _ref => {
5
5
  var {
6
6
  typed,
7
7
  DenseMatrix
@@ -26,7 +26,7 @@ export var createAlgorithm12 = /* #__PURE__ */factory(name, dependencies, _ref =
26
26
  *
27
27
  * https://github.com/josdejong/mathjs/pull/346#issuecomment-97626813
28
28
  */
29
- return function algorithm12(s, b, callback, inverse) {
29
+ return function matAlgo12xSfs(s, b, callback, inverse) {
30
30
  // sparse matrix arrays
31
31
  var avalues = s._values;
32
32
  var aindex = s._index;
@@ -1,8 +1,8 @@
1
1
  import { factory } from '../../../utils/factory.js';
2
2
  import { DimensionError } from '../../../error/DimensionError.js';
3
- var name = 'algorithm13';
3
+ var name = 'matAlgo13xDD';
4
4
  var dependencies = ['typed'];
5
- export var createAlgorithm13 = /* #__PURE__ */factory(name, dependencies, _ref => {
5
+ export var createMatAlgo13xDD = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed
8
8
  } = _ref;
@@ -21,7 +21,7 @@ export var createAlgorithm13 = /* #__PURE__ */factory(name, dependencies, _ref =
21
21
  *
22
22
  * https://github.com/josdejong/mathjs/pull/346#issuecomment-97658658
23
23
  */
24
- return function algorithm13(a, b, callback) {
24
+ return function matAlgo13xDD(a, b, callback) {
25
25
  // a arrays
26
26
  var adata = a._data;
27
27
  var asize = a._size;
@@ -1,8 +1,8 @@
1
1
  import { factory } from '../../../utils/factory.js';
2
2
  import { clone } from '../../../utils/object.js';
3
- var name = 'algorithm14';
3
+ var name = 'matAlgo14xDs';
4
4
  var dependencies = ['typed'];
5
- export var createAlgorithm14 = /* #__PURE__ */factory(name, dependencies, _ref => {
5
+ export var createMatAlgo14xDs = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed
8
8
  } = _ref;
@@ -22,7 +22,7 @@ export var createAlgorithm14 = /* #__PURE__ */factory(name, dependencies, _ref =
22
22
  *
23
23
  * https://github.com/josdejong/mathjs/pull/346#issuecomment-97659042
24
24
  */
25
- return function algorithm14(a, b, callback, inverse) {
25
+ return function matAlgo14xDs(a, b, callback, inverse) {
26
26
  // a arrays
27
27
  var adata = a._data;
28
28
  var asize = a._size;
@@ -0,0 +1,168 @@
1
+ import { factory } from '../../../utils/factory.js';
2
+ import { extend } from '../../../utils/object.js';
3
+ import { createMatAlgo13xDD } from './matAlgo13xDD.js';
4
+ import { createMatAlgo14xDs } from './matAlgo14xDs.js';
5
+ var name = 'matrixAlgorithmSuite';
6
+ var dependencies = ['typed', 'matrix'];
7
+ export var createMatrixAlgorithmSuite = /* #__PURE__ */factory(name, dependencies, _ref => {
8
+ var {
9
+ typed,
10
+ matrix
11
+ } = _ref;
12
+ var matAlgo13xDD = createMatAlgo13xDD({
13
+ typed
14
+ });
15
+ var matAlgo14xDs = createMatAlgo14xDs({
16
+ typed
17
+ });
18
+ /**
19
+ * Return a signatures object with the usual boilerplate of
20
+ * matrix algorithms, based on a plain options object with the
21
+ * following properties:
22
+ * elop: function -- the elementwise operation to use, defaults to self
23
+ * SS: function -- the algorithm to apply for two sparse matrices
24
+ * DS: function -- the algorithm to apply for a dense and a sparse matrix
25
+ * SD: function -- algo for a sparse and a dense; defaults to SD flipped
26
+ * Ss: function -- the algorithm to apply for a sparse matrix and scalar
27
+ * sS: function -- algo for scalar and sparse; defaults to Ss flipped
28
+ * scalar: string -- typed-function type for scalars, defaults to 'any'
29
+ *
30
+ * If Ss is not specified, no matrix-scalar signatures are generated.
31
+ *
32
+ * @param {object} options
33
+ * @return {Object<string, function>} signatures
34
+ */
35
+
36
+ return function matrixAlgorithmSuite(options) {
37
+ var elop = options.elop;
38
+ var SD = options.SD || options.DS;
39
+ var matrixSignatures;
40
+
41
+ if (elop) {
42
+ // First the dense ones
43
+ matrixSignatures = {
44
+ 'DenseMatrix, DenseMatrix': (x, y) => matAlgo13xDD(x, y, elop),
45
+ 'Array, Array': (x, y) => matAlgo13xDD(matrix(x), matrix(y), elop).valueOf(),
46
+ 'Array, DenseMatrix': (x, y) => matAlgo13xDD(matrix(x), y, elop),
47
+ 'DenseMatrix, Array': (x, y) => matAlgo13xDD(x, matrix(y), elop)
48
+ }; // Now incorporate sparse matrices
49
+
50
+ if (options.SS) {
51
+ matrixSignatures['SparseMatrix, SparseMatrix'] = (x, y) => options.SS(x, y, elop, false);
52
+ }
53
+
54
+ if (options.DS) {
55
+ matrixSignatures['DenseMatrix, SparseMatrix'] = (x, y) => options.DS(x, y, elop, false);
56
+
57
+ matrixSignatures['Array, SparseMatrix'] = (x, y) => options.DS(matrix(x), y, elop, false);
58
+ }
59
+
60
+ if (SD) {
61
+ matrixSignatures['SparseMatrix, DenseMatrix'] = (x, y) => SD(y, x, elop, true);
62
+
63
+ matrixSignatures['SparseMatrix, Array'] = (x, y) => SD(matrix(y), x, elop, true);
64
+ }
65
+ } else {
66
+ // No elop, use this
67
+ // First the dense ones
68
+ matrixSignatures = {
69
+ 'DenseMatrix, DenseMatrix': typed.referToSelf(self => (x, y) => {
70
+ return matAlgo13xDD(x, y, self);
71
+ }),
72
+ 'Array, Array': typed.referToSelf(self => (x, y) => {
73
+ return matAlgo13xDD(matrix(x), matrix(y), self).valueOf();
74
+ }),
75
+ 'Array, DenseMatrix': typed.referToSelf(self => (x, y) => {
76
+ return matAlgo13xDD(matrix(x), y, self);
77
+ }),
78
+ 'DenseMatrix, Array': typed.referToSelf(self => (x, y) => {
79
+ return matAlgo13xDD(x, matrix(y), self);
80
+ })
81
+ }; // Now incorporate sparse matrices
82
+
83
+ if (options.SS) {
84
+ matrixSignatures['SparseMatrix, SparseMatrix'] = typed.referToSelf(self => (x, y) => {
85
+ return options.SS(x, y, self, false);
86
+ });
87
+ }
88
+
89
+ if (options.DS) {
90
+ matrixSignatures['DenseMatrix, SparseMatrix'] = typed.referToSelf(self => (x, y) => {
91
+ return options.DS(x, y, self, false);
92
+ });
93
+ matrixSignatures['Array, SparseMatrix'] = typed.referToSelf(self => (x, y) => {
94
+ return options.DS(matrix(x), y, self, false);
95
+ });
96
+ }
97
+
98
+ if (SD) {
99
+ matrixSignatures['SparseMatrix, DenseMatrix'] = typed.referToSelf(self => (x, y) => {
100
+ return SD(y, x, self, true);
101
+ });
102
+ matrixSignatures['SparseMatrix, Array'] = typed.referToSelf(self => (x, y) => {
103
+ return SD(matrix(y), x, self, true);
104
+ });
105
+ }
106
+ } // Now add the scalars
107
+
108
+
109
+ var scalar = options.scalar || 'any';
110
+ var Ds = options.Ds || options.Ss;
111
+
112
+ if (Ds) {
113
+ if (elop) {
114
+ matrixSignatures['DenseMatrix,' + scalar] = (x, y) => matAlgo14xDs(x, y, elop, false);
115
+
116
+ matrixSignatures[scalar + ', DenseMatrix'] = (x, y) => matAlgo14xDs(y, x, elop, true);
117
+
118
+ matrixSignatures['Array,' + scalar] = (x, y) => matAlgo14xDs(matrix(x), y, elop, false).valueOf();
119
+
120
+ matrixSignatures[scalar + ', Array'] = (x, y) => matAlgo14xDs(matrix(y), x, elop, true).valueOf();
121
+ } else {
122
+ matrixSignatures['DenseMatrix,' + scalar] = typed.referToSelf(self => (x, y) => {
123
+ return matAlgo14xDs(x, y, self, false);
124
+ });
125
+ matrixSignatures[scalar + ', DenseMatrix'] = typed.referToSelf(self => (x, y) => {
126
+ return matAlgo14xDs(y, x, self, true);
127
+ });
128
+ matrixSignatures['Array,' + scalar] = typed.referToSelf(self => (x, y) => {
129
+ return matAlgo14xDs(matrix(x), y, self, false).valueOf();
130
+ });
131
+ matrixSignatures[scalar + ', Array'] = typed.referToSelf(self => (x, y) => {
132
+ return matAlgo14xDs(matrix(y), x, self, true).valueOf();
133
+ });
134
+ }
135
+ }
136
+
137
+ var sS = options.sS !== undefined ? options.sS : options.Ss;
138
+
139
+ if (elop) {
140
+ if (options.Ss) {
141
+ matrixSignatures['SparseMatrix,' + scalar] = (x, y) => options.Ss(x, y, elop, false);
142
+ }
143
+
144
+ if (sS) {
145
+ matrixSignatures[scalar + ', SparseMatrix'] = (x, y) => sS(y, x, elop, true);
146
+ }
147
+ } else {
148
+ if (options.Ss) {
149
+ matrixSignatures['SparseMatrix,' + scalar] = typed.referToSelf(self => (x, y) => {
150
+ return options.Ss(x, y, self, false);
151
+ });
152
+ }
153
+
154
+ if (sS) {
155
+ matrixSignatures[scalar + ', SparseMatrix'] = typed.referToSelf(self => (x, y) => {
156
+ return sS(y, x, self, true);
157
+ });
158
+ }
159
+ } // Also pull in the scalar signatures if the operator is a typed function
160
+
161
+
162
+ if (elop && elop.signatures) {
163
+ extend(matrixSignatures, elop.signatures);
164
+ }
165
+
166
+ return matrixSignatures;
167
+ };
168
+ });
@@ -146,9 +146,7 @@ export var createNumber = /* #__PURE__ */factory(name, dependencies, _ref => {
146
146
  'Unit, string | Unit': function UnitStringUnit(unit, valuelessUnit) {
147
147
  return unit.toNumber(valuelessUnit);
148
148
  },
149
- 'Array | Matrix': function ArrayMatrix(x) {
150
- return deepMap(x, this);
151
- }
149
+ 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))
152
150
  }); // reviver function to parse a JSON object like:
153
151
  //
154
152
  // {"mathjs":"number","value":"2.3"}
@@ -47,9 +47,7 @@ export var createString = /* #__PURE__ */factory(name, dependencies, _ref => {
47
47
  string: function string(x) {
48
48
  return x;
49
49
  },
50
- 'Array | Matrix': function ArrayMatrix(x) {
51
- return deepMap(x, this);
52
- },
50
+ 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self)),
53
51
  any: function any(x) {
54
52
  return String(x);
55
53
  }