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
@@ -3,9 +3,9 @@ import { factory } from '../../utils/factory.js';
3
3
  import { deepMap } from '../../utils/collection.js';
4
4
  import { nearlyEqual } from '../../utils/number.js';
5
5
  import { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';
6
- import { createAlgorithm11 } from '../../type/matrix/utils/algorithm11.js';
7
- import { createAlgorithm12 } from '../../type/matrix/utils/algorithm12.js';
8
- import { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';
6
+ import { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';
7
+ import { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';
8
+ import { createMatAlgo14xDs } from '../../type/matrix/utils/matAlgo14xDs.js';
9
9
  var name = 'ceil';
10
10
  var dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar', 'zeros', 'DenseMatrix'];
11
11
  export var createCeilNumber = /* #__PURE__ */factory(name, ['typed', 'config', 'round'], _ref => {
@@ -44,15 +44,15 @@ export var createCeil = /* #__PURE__ */factory(name, dependencies, _ref2 => {
44
44
  zeros,
45
45
  DenseMatrix
46
46
  } = _ref2;
47
- var algorithm11 = createAlgorithm11({
47
+ var matAlgo11xS0s = createMatAlgo11xS0s({
48
48
  typed,
49
49
  equalScalar
50
50
  });
51
- var algorithm12 = createAlgorithm12({
51
+ var matAlgo12xSfs = createMatAlgo12xSfs({
52
52
  typed,
53
53
  DenseMatrix
54
54
  });
55
- var algorithm14 = createAlgorithm14({
55
+ var matAlgo14xDs = createMatAlgo14xDs({
56
56
  typed
57
57
  });
58
58
  var ceilNumber = createCeilNumber({
@@ -133,32 +133,32 @@ export var createCeil = /* #__PURE__ */factory(name, dependencies, _ref2 => {
133
133
  'Fraction, BigNumber': function FractionBigNumber(x, n) {
134
134
  return x.ceil(n.toNumber());
135
135
  },
136
- 'Array | Matrix': function ArrayMatrix(x) {
136
+ 'Array | Matrix': typed.referToSelf(self => x => {
137
137
  // deep map collection, skip zeros since ceil(0) = 0
138
- return deepMap(x, this, true);
139
- },
140
- 'Array, number | BigNumber': function ArrayNumberBigNumber(x, n) {
138
+ return deepMap(x, self, true);
139
+ }),
140
+ 'Array, number | BigNumber': typed.referToSelf(self => (x, n) => {
141
141
  // deep map collection, skip zeros since ceil(0) = 0
142
- return deepMap(x, i => this(i, n), true);
143
- },
144
- 'SparseMatrix, number | BigNumber': function SparseMatrixNumberBigNumber(x, y) {
145
- return algorithm11(x, y, this, false);
146
- },
147
- 'DenseMatrix, number | BigNumber': function DenseMatrixNumberBigNumber(x, y) {
148
- return algorithm14(x, y, this, false);
149
- },
150
- 'number | Complex | Fraction | BigNumber, Array': function numberComplexFractionBigNumberArray(x, y) {
142
+ return deepMap(x, i => self(i, n), true);
143
+ }),
144
+ 'SparseMatrix, number | BigNumber': typed.referToSelf(self => (x, y) => {
145
+ return matAlgo11xS0s(x, y, self, false);
146
+ }),
147
+ 'DenseMatrix, number | BigNumber': typed.referToSelf(self => (x, y) => {
148
+ return matAlgo14xDs(x, y, self, false);
149
+ }),
150
+ 'number | Complex | Fraction | BigNumber, Array': typed.referToSelf(self => (x, y) => {
151
151
  // use matrix implementation
152
- return algorithm14(matrix(y), x, this, true).valueOf();
153
- },
154
- 'number | Complex | Fraction | BigNumber, Matrix': function numberComplexFractionBigNumberMatrix(x, y) {
152
+ return matAlgo14xDs(matrix(y), x, self, true).valueOf();
153
+ }),
154
+ 'number | Complex | Fraction | BigNumber, Matrix': typed.referToSelf(self => (x, y) => {
155
155
  if (equalScalar(x, 0)) return zeros(y.size(), y.storage());
156
156
 
157
157
  if (y.storage() === 'dense') {
158
- return algorithm14(y, x, this, true);
158
+ return matAlgo14xDs(y, x, self, true);
159
159
  }
160
160
 
161
- return algorithm12(y, x, this, true);
162
- }
161
+ return matAlgo12xSfs(y, x, self, true);
162
+ })
163
163
  });
164
164
  });
@@ -1,5 +1,4 @@
1
1
  import { factory } from '../../utils/factory.js';
2
- import { deepMap } from '../../utils/collection.js';
3
2
  import { cubeNumber } from '../../plain/number/index.js';
4
3
  var name = 'cube';
5
4
  var dependencies = ['typed'];
@@ -10,7 +9,8 @@ export var createCube = /* #__PURE__ */factory(name, dependencies, _ref => {
10
9
 
11
10
  /**
12
11
  * Compute the cube of a value, `x * x * x`.
13
- * For matrices, the function is evaluated element wise.
12
+ * To avoid confusion with `pow(M,3)`, this function does not apply to matrices.
13
+ * If you wish to cube every entry of a matrix, see the examples.
14
14
  *
15
15
  * Syntax:
16
16
  *
@@ -23,14 +23,14 @@ export var createCube = /* #__PURE__ */factory(name, dependencies, _ref => {
23
23
  * math.cube(4) // returns number 64
24
24
  * 4 * 4 * 4 // returns number 64
25
25
  *
26
- * math.cube([1, 2, 3, 4]) // returns Array [1, 8, 27, 64]
26
+ * math.map([1, 2, 3, 4], math.cube) // returns Array [1, 8, 27, 64]
27
27
  *
28
28
  * See also:
29
29
  *
30
30
  * multiply, square, pow, cbrt
31
31
  *
32
- * @param {number | BigNumber | Fraction | Complex | Array | Matrix | Unit} x Number for which to calculate the cube
33
- * @return {number | BigNumber | Fraction | Complex | Array | Matrix | Unit} Cube of x
32
+ * @param {number | BigNumber | Fraction | Complex | Unit} x Number for which to calculate the cube
33
+ * @return {number | BigNumber | Fraction | Complex | Unit} Cube of x
34
34
  */
35
35
  return typed(name, {
36
36
  number: cubeNumber,
@@ -43,10 +43,6 @@ export var createCube = /* #__PURE__ */factory(name, dependencies, _ref => {
43
43
  Fraction: function Fraction(x) {
44
44
  return x.pow(3); // Is faster than mul()mul()mul()
45
45
  },
46
- 'Array | Matrix': function ArrayMatrix(x) {
47
- // deep map collection, skip zeros since cube(0) = 0
48
- return deepMap(x, this, true);
49
- },
50
46
  Unit: function Unit(x) {
51
47
  return x.pow(3);
52
48
  }
@@ -1,7 +1,7 @@
1
1
  import { factory } from '../../utils/factory.js';
2
2
  import { extend } from '../../utils/object.js';
3
- import { createAlgorithm11 } from '../../type/matrix/utils/algorithm11.js';
4
- import { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';
3
+ import { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';
4
+ import { createMatAlgo14xDs } from '../../type/matrix/utils/matAlgo14xDs.js';
5
5
  var name = 'divide';
6
6
  var dependencies = ['typed', 'matrix', 'multiply', 'equalScalar', 'divideScalar', 'inv'];
7
7
  export var createDivide = /* #__PURE__ */factory(name, dependencies, _ref => {
@@ -13,11 +13,11 @@ export var createDivide = /* #__PURE__ */factory(name, dependencies, _ref => {
13
13
  divideScalar,
14
14
  inv
15
15
  } = _ref;
16
- var algorithm11 = createAlgorithm11({
16
+ var matAlgo11xS0s = createMatAlgo11xS0s({
17
17
  typed,
18
18
  equalScalar
19
19
  });
20
- var algorithm14 = createAlgorithm14({
20
+ var matAlgo14xDs = createMatAlgo14xDs({
21
21
  typed
22
22
  });
23
23
  /**
@@ -62,14 +62,14 @@ export var createDivide = /* #__PURE__ */factory(name, dependencies, _ref => {
62
62
  return multiply(x, inv(y));
63
63
  },
64
64
  'DenseMatrix, any': function DenseMatrixAny(x, y) {
65
- return algorithm14(x, y, divideScalar, false);
65
+ return matAlgo14xDs(x, y, divideScalar, false);
66
66
  },
67
67
  'SparseMatrix, any': function SparseMatrixAny(x, y) {
68
- return algorithm11(x, y, divideScalar, false);
68
+ return matAlgo11xS0s(x, y, divideScalar, false);
69
69
  },
70
70
  'Array, any': function ArrayAny(x, y) {
71
71
  // use matrix implementation
72
- return algorithm14(matrix(x), y, divideScalar, false).valueOf();
72
+ return matAlgo14xDs(matrix(x), y, divideScalar, false).valueOf();
73
73
  },
74
74
  'any, Array | Matrix': function anyArrayMatrix(x, y) {
75
75
  return multiply(x, inv(y));
@@ -1,5 +1,4 @@
1
1
  import { factory } from '../../utils/factory.js';
2
- import { typeOf } from '../../utils/is.js';
3
2
  var name = 'divideScalar';
4
3
  var dependencies = ['typed', 'numeric'];
5
4
  export var createDivideScalar = /* #__PURE__ */factory(name, dependencies, _ref => {
@@ -33,23 +32,7 @@ export var createDivideScalar = /* #__PURE__ */factory(name, dependencies, _ref
33
32
  'Fraction, Fraction': function FractionFraction(x, y) {
34
33
  return x.div(y);
35
34
  },
36
- 'Unit, number | Fraction | BigNumber': function UnitNumberFractionBigNumber(x, y) {
37
- var res = x.clone(); // TODO: move the divide function to Unit.js, it uses internals of Unit
38
-
39
- var one = numeric(1, typeOf(y));
40
- res.value = this(res.value === null ? res._normalize(one) : res.value, y);
41
- return res;
42
- },
43
- 'number | Fraction | BigNumber, Unit': function numberFractionBigNumberUnit(x, y) {
44
- var res = y.clone();
45
- res = res.pow(-1); // TODO: move the divide function to Unit.js, it uses internals of Unit
46
-
47
- var one = numeric(1, typeOf(x));
48
- res.value = this(x, y.value === null ? y._normalize(one) : y.value);
49
- return res;
50
- },
51
- 'Unit, Unit': function UnitUnit(x, y) {
52
- return x.divide(y);
53
- }
35
+ 'Unit, number | Complex | Fraction | BigNumber | Unit': (x, y) => x.divide(y),
36
+ 'number | Fraction | Complex | BigNumber, Unit': (x, y) => y.divideInto(x)
54
37
  });
55
38
  });
@@ -1,11 +1,10 @@
1
1
  import { factory } from '../../utils/factory.js';
2
- import { createAlgorithm02 } from '../../type/matrix/utils/algorithm02.js';
3
- import { createAlgorithm03 } from '../../type/matrix/utils/algorithm03.js';
4
- import { createAlgorithm07 } from '../../type/matrix/utils/algorithm07.js';
5
- import { createAlgorithm11 } from '../../type/matrix/utils/algorithm11.js';
6
- import { createAlgorithm12 } from '../../type/matrix/utils/algorithm12.js';
7
- import { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';
8
- import { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';
2
+ import { createMatAlgo02xDS0 } from '../../type/matrix/utils/matAlgo02xDS0.js';
3
+ import { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';
4
+ import { createMatAlgo07xSSf } from '../../type/matrix/utils/matAlgo07xSSf.js';
5
+ import { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';
6
+ import { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';
7
+ import { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';
9
8
  var name = 'dotDivide';
10
9
  var dependencies = ['typed', 'matrix', 'equalScalar', 'divideScalar', 'DenseMatrix'];
11
10
  export var createDotDivide = /* #__PURE__ */factory(name, dependencies, _ref => {
@@ -16,30 +15,28 @@ export var createDotDivide = /* #__PURE__ */factory(name, dependencies, _ref =>
16
15
  divideScalar,
17
16
  DenseMatrix
18
17
  } = _ref;
19
- var algorithm02 = createAlgorithm02({
18
+ var matAlgo02xDS0 = createMatAlgo02xDS0({
20
19
  typed,
21
20
  equalScalar
22
21
  });
23
- var algorithm03 = createAlgorithm03({
22
+ var matAlgo03xDSf = createMatAlgo03xDSf({
24
23
  typed
25
24
  });
26
- var algorithm07 = createAlgorithm07({
25
+ var matAlgo07xSSf = createMatAlgo07xSSf({
27
26
  typed,
28
27
  DenseMatrix
29
28
  });
30
- var algorithm11 = createAlgorithm11({
29
+ var matAlgo11xS0s = createMatAlgo11xS0s({
31
30
  typed,
32
31
  equalScalar
33
32
  });
34
- var algorithm12 = createAlgorithm12({
33
+ var matAlgo12xSfs = createMatAlgo12xSfs({
35
34
  typed,
36
35
  DenseMatrix
37
36
  });
38
- var algorithm13 = createAlgorithm13({
39
- typed
40
- });
41
- var algorithm14 = createAlgorithm14({
42
- typed
37
+ var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
38
+ typed,
39
+ matrix
43
40
  });
44
41
  /**
45
42
  * Divide two matrices element wise. The function accepts both matrices and
@@ -68,51 +65,12 @@ export var createDotDivide = /* #__PURE__ */factory(name, dependencies, _ref =>
68
65
  * @return {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} Quotient, `x ./ y`
69
66
  */
70
67
 
71
- return typed(name, {
72
- 'any, any': divideScalar,
73
- 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {
74
- return algorithm07(x, y, divideScalar, false);
75
- },
76
- 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {
77
- return algorithm02(y, x, divideScalar, true);
78
- },
79
- 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {
80
- return algorithm03(x, y, divideScalar, false);
81
- },
82
- 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {
83
- return algorithm13(x, y, divideScalar);
84
- },
85
- 'Array, Array': function ArrayArray(x, y) {
86
- // use matrix implementation
87
- return this(matrix(x), matrix(y)).valueOf();
88
- },
89
- 'Array, Matrix': function ArrayMatrix(x, y) {
90
- // use matrix implementation
91
- return this(matrix(x), y);
92
- },
93
- 'Matrix, Array': function MatrixArray(x, y) {
94
- // use matrix implementation
95
- return this(x, matrix(y));
96
- },
97
- 'SparseMatrix, any': function SparseMatrixAny(x, y) {
98
- return algorithm11(x, y, divideScalar, false);
99
- },
100
- 'DenseMatrix, any': function DenseMatrixAny(x, y) {
101
- return algorithm14(x, y, divideScalar, false);
102
- },
103
- 'any, SparseMatrix': function anySparseMatrix(x, y) {
104
- return algorithm12(y, x, divideScalar, true);
105
- },
106
- 'any, DenseMatrix': function anyDenseMatrix(x, y) {
107
- return algorithm14(y, x, divideScalar, true);
108
- },
109
- 'Array, any': function ArrayAny(x, y) {
110
- // use matrix implementation
111
- return algorithm14(matrix(x), y, divideScalar, false).valueOf();
112
- },
113
- 'any, Array': function anyArray(x, y) {
114
- // use matrix implementation
115
- return algorithm14(matrix(y), x, divideScalar, true).valueOf();
116
- }
117
- });
68
+ return typed(name, matrixAlgorithmSuite({
69
+ elop: divideScalar,
70
+ SS: matAlgo07xSSf,
71
+ DS: matAlgo03xDSf,
72
+ SD: matAlgo02xDS0,
73
+ Ss: matAlgo11xS0s,
74
+ sS: matAlgo12xSfs
75
+ }));
118
76
  });
@@ -1,9 +1,8 @@
1
1
  import { factory } from '../../utils/factory.js';
2
- import { createAlgorithm02 } from '../../type/matrix/utils/algorithm02.js';
3
- import { createAlgorithm09 } from '../../type/matrix/utils/algorithm09.js';
4
- import { createAlgorithm11 } from '../../type/matrix/utils/algorithm11.js';
5
- import { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';
6
- import { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';
2
+ import { createMatAlgo02xDS0 } from '../../type/matrix/utils/matAlgo02xDS0.js';
3
+ import { createMatAlgo09xS0Sf } from '../../type/matrix/utils/matAlgo09xS0Sf.js';
4
+ import { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';
5
+ import { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';
7
6
  var name = 'dotMultiply';
8
7
  var dependencies = ['typed', 'matrix', 'equalScalar', 'multiplyScalar'];
9
8
  export var createDotMultiply = /* #__PURE__ */factory(name, dependencies, _ref => {
@@ -13,23 +12,21 @@ export var createDotMultiply = /* #__PURE__ */factory(name, dependencies, _ref =
13
12
  equalScalar,
14
13
  multiplyScalar
15
14
  } = _ref;
16
- var algorithm02 = createAlgorithm02({
15
+ var matAlgo02xDS0 = createMatAlgo02xDS0({
17
16
  typed,
18
17
  equalScalar
19
18
  });
20
- var algorithm09 = createAlgorithm09({
19
+ var matAlgo09xS0Sf = createMatAlgo09xS0Sf({
21
20
  typed,
22
21
  equalScalar
23
22
  });
24
- var algorithm11 = createAlgorithm11({
23
+ var matAlgo11xS0s = createMatAlgo11xS0s({
25
24
  typed,
26
25
  equalScalar
27
26
  });
28
- var algorithm13 = createAlgorithm13({
29
- typed
30
- });
31
- var algorithm14 = createAlgorithm14({
32
- typed
27
+ var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
28
+ typed,
29
+ matrix
33
30
  });
34
31
  /**
35
32
  * Multiply two matrices element wise. The function accepts both matrices and
@@ -58,51 +55,10 @@ export var createDotMultiply = /* #__PURE__ */factory(name, dependencies, _ref =
58
55
  * @return {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} Multiplication of `x` and `y`
59
56
  */
60
57
 
61
- return typed(name, {
62
- 'any, any': multiplyScalar,
63
- 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {
64
- return algorithm09(x, y, multiplyScalar, false);
65
- },
66
- 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {
67
- return algorithm02(y, x, multiplyScalar, true);
68
- },
69
- 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {
70
- return algorithm02(x, y, multiplyScalar, false);
71
- },
72
- 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {
73
- return algorithm13(x, y, multiplyScalar);
74
- },
75
- 'Array, Array': function ArrayArray(x, y) {
76
- // use matrix implementation
77
- return this(matrix(x), matrix(y)).valueOf();
78
- },
79
- 'Array, Matrix': function ArrayMatrix(x, y) {
80
- // use matrix implementation
81
- return this(matrix(x), y);
82
- },
83
- 'Matrix, Array': function MatrixArray(x, y) {
84
- // use matrix implementation
85
- return this(x, matrix(y));
86
- },
87
- 'SparseMatrix, any': function SparseMatrixAny(x, y) {
88
- return algorithm11(x, y, multiplyScalar, false);
89
- },
90
- 'DenseMatrix, any': function DenseMatrixAny(x, y) {
91
- return algorithm14(x, y, multiplyScalar, false);
92
- },
93
- 'any, SparseMatrix': function anySparseMatrix(x, y) {
94
- return algorithm11(y, x, multiplyScalar, true);
95
- },
96
- 'any, DenseMatrix': function anyDenseMatrix(x, y) {
97
- return algorithm14(y, x, multiplyScalar, true);
98
- },
99
- 'Array, any': function ArrayAny(x, y) {
100
- // use matrix implementation
101
- return algorithm14(matrix(x), y, multiplyScalar, false).valueOf();
102
- },
103
- 'any, Array': function anyArray(x, y) {
104
- // use matrix implementation
105
- return algorithm14(matrix(y), x, multiplyScalar, true).valueOf();
106
- }
107
- });
58
+ return typed(name, matrixAlgorithmSuite({
59
+ elop: multiplyScalar,
60
+ SS: matAlgo09xS0Sf,
61
+ DS: matAlgo02xDS0,
62
+ Ss: matAlgo11xS0s
63
+ }));
108
64
  });
@@ -1,10 +1,9 @@
1
1
  import { factory } from '../../utils/factory.js';
2
- import { createAlgorithm03 } from '../../type/matrix/utils/algorithm03.js';
3
- import { createAlgorithm07 } from '../../type/matrix/utils/algorithm07.js';
4
- import { createAlgorithm11 } from '../../type/matrix/utils/algorithm11.js';
5
- import { createAlgorithm12 } from '../../type/matrix/utils/algorithm12.js';
6
- import { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';
7
- import { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';
2
+ import { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';
3
+ import { createMatAlgo07xSSf } from '../../type/matrix/utils/matAlgo07xSSf.js';
4
+ import { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';
5
+ import { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';
6
+ import { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';
8
7
  var name = 'dotPow';
9
8
  var dependencies = ['typed', 'equalScalar', 'matrix', 'pow', 'DenseMatrix'];
10
9
  export var createDotPow = /* #__PURE__ */factory(name, dependencies, _ref => {
@@ -15,27 +14,36 @@ export var createDotPow = /* #__PURE__ */factory(name, dependencies, _ref => {
15
14
  pow,
16
15
  DenseMatrix
17
16
  } = _ref;
18
- var algorithm03 = createAlgorithm03({
17
+ var matAlgo03xDSf = createMatAlgo03xDSf({
19
18
  typed
20
19
  });
21
- var algorithm07 = createAlgorithm07({
20
+ var matAlgo07xSSf = createMatAlgo07xSSf({
22
21
  typed,
23
22
  DenseMatrix
24
23
  });
25
- var algorithm11 = createAlgorithm11({
24
+ var matAlgo11xS0s = createMatAlgo11xS0s({
26
25
  typed,
27
26
  equalScalar
28
27
  });
29
- var algorithm12 = createAlgorithm12({
28
+ var matAlgo12xSfs = createMatAlgo12xSfs({
30
29
  typed,
31
30
  DenseMatrix
32
31
  });
33
- var algorithm13 = createAlgorithm13({
34
- typed
35
- });
36
- var algorithm14 = createAlgorithm14({
37
- typed
32
+ var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
33
+ typed,
34
+ matrix
38
35
  });
36
+ var powScalarSignatures = {};
37
+
38
+ for (var signature in pow.signatures) {
39
+ if (Object.prototype.hasOwnProperty.call(pow.signatures, signature)) {
40
+ if (!signature.includes('Matrix') && !signature.includes('Array')) {
41
+ powScalarSignatures[signature] = pow.signatures[signature];
42
+ }
43
+ }
44
+ }
45
+
46
+ var powScalar = typed(powScalarSignatures);
39
47
  /**
40
48
  * Calculates the power of x to y element wise.
41
49
  *
@@ -60,51 +68,11 @@ export var createDotPow = /* #__PURE__ */factory(name, dependencies, _ref => {
60
68
  * @return {number | BigNumber | Complex | Unit | Array | Matrix} The value of `x` to the power `y`
61
69
  */
62
70
 
63
- return typed(name, {
64
- 'any, any': pow,
65
- 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {
66
- return algorithm07(x, y, pow, false);
67
- },
68
- 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {
69
- return algorithm03(y, x, pow, true);
70
- },
71
- 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {
72
- return algorithm03(x, y, pow, false);
73
- },
74
- 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {
75
- return algorithm13(x, y, pow);
76
- },
77
- 'Array, Array': function ArrayArray(x, y) {
78
- // use matrix implementation
79
- return this(matrix(x), matrix(y)).valueOf();
80
- },
81
- 'Array, Matrix': function ArrayMatrix(x, y) {
82
- // use matrix implementation
83
- return this(matrix(x), y);
84
- },
85
- 'Matrix, Array': function MatrixArray(x, y) {
86
- // use matrix implementation
87
- return this(x, matrix(y));
88
- },
89
- 'SparseMatrix, any': function SparseMatrixAny(x, y) {
90
- return algorithm11(x, y, this, false);
91
- },
92
- 'DenseMatrix, any': function DenseMatrixAny(x, y) {
93
- return algorithm14(x, y, this, false);
94
- },
95
- 'any, SparseMatrix': function anySparseMatrix(x, y) {
96
- return algorithm12(y, x, this, true);
97
- },
98
- 'any, DenseMatrix': function anyDenseMatrix(x, y) {
99
- return algorithm14(y, x, this, true);
100
- },
101
- 'Array, any': function ArrayAny(x, y) {
102
- // use matrix implementation
103
- return algorithm14(matrix(x), y, this, false).valueOf();
104
- },
105
- 'any, Array': function anyArray(x, y) {
106
- // use matrix implementation
107
- return algorithm14(matrix(y), x, this, true).valueOf();
108
- }
109
- });
71
+ return typed(name, matrixAlgorithmSuite({
72
+ elop: powScalar,
73
+ SS: matAlgo07xSSf,
74
+ DS: matAlgo03xDSf,
75
+ Ss: matAlgo11xS0s,
76
+ sS: matAlgo12xSfs
77
+ }));
110
78
  });
@@ -1,5 +1,4 @@
1
1
  import { factory } from '../../utils/factory.js';
2
- import { deepMap } from '../../utils/collection.js';
3
2
  import { expNumber } from '../../plain/number/index.js';
4
3
  var name = 'exp';
5
4
  var dependencies = ['typed'];
@@ -9,8 +8,10 @@ export var createExp = /* #__PURE__ */factory(name, dependencies, _ref => {
9
8
  } = _ref;
10
9
 
11
10
  /**
12
- * Calculate the exponent of a value.
13
- * For matrices, the function is evaluated element wise.
11
+ * Calculate the exponential of a value.
12
+ * For matrices, if you want the matrix exponential of square matrix, use
13
+ * the `expm` function; if you want to take the exponential of each element,
14
+ * see the examples.
14
15
  *
15
16
  * Syntax:
16
17
  *
@@ -22,7 +23,7 @@ export var createExp = /* #__PURE__ */factory(name, dependencies, _ref => {
22
23
  * math.pow(math.e, 2) // returns number 7.3890560989306495
23
24
  * math.log(math.exp(2)) // returns number 2
24
25
  *
25
- * math.exp([1, 2, 3])
26
+ * math.map([1, 2, 3], math.exp)
26
27
  * // returns Array [
27
28
  * // 2.718281828459045,
28
29
  * // 7.3890560989306495,
@@ -31,10 +32,10 @@ export var createExp = /* #__PURE__ */factory(name, dependencies, _ref => {
31
32
  *
32
33
  * See also:
33
34
  *
34
- * expm1, log, pow
35
+ * expm1, expm, log, pow
35
36
  *
36
- * @param {number | BigNumber | Complex | Array | Matrix} x A number or matrix to exponentiate
37
- * @return {number | BigNumber | Complex | Array | Matrix} Exponent of `x`
37
+ * @param {number | BigNumber | Complex} x A number to exponentiate
38
+ * @return {number | BigNumber | Complex} Exponential of `x`
38
39
  */
39
40
  return typed(name, {
40
41
  number: expNumber,
@@ -43,10 +44,6 @@ export var createExp = /* #__PURE__ */factory(name, dependencies, _ref => {
43
44
  },
44
45
  BigNumber: function BigNumber(x) {
45
46
  return x.exp();
46
- },
47
- 'Array | Matrix': function ArrayMatrix(x) {
48
- // TODO: exp(sparse) should return a dense matrix since exp(0)==1
49
- return deepMap(x, this);
50
47
  }
51
48
  });
52
49
  });
@@ -1,5 +1,4 @@
1
1
  import { factory } from '../../utils/factory.js';
2
- import { deepMap } from '../../utils/collection.js';
3
2
  import { expm1Number } from '../../plain/number/index.js';
4
3
  var name = 'expm1';
5
4
  var dependencies = ['typed', 'Complex'];
@@ -11,7 +10,10 @@ export var createExpm1 = /* #__PURE__ */factory(name, dependencies, _ref => {
11
10
 
12
11
  /**
13
12
  * Calculate the value of subtracting 1 from the exponential value.
14
- * For matrices, the function is evaluated element wise.
13
+ * This function is more accurate than `math.exp(x)-1` when `x` is near 0
14
+ * To avoid ambiguity with the matrix exponential `expm`, this function
15
+ * does not operate on matrices; if you wish to apply it elementwise, see
16
+ * the examples.
15
17
  *
16
18
  * Syntax:
17
19
  *
@@ -21,9 +23,11 @@ export var createExpm1 = /* #__PURE__ */factory(name, dependencies, _ref => {
21
23
  *
22
24
  * math.expm1(2) // returns number 6.38905609893065
23
25
  * math.pow(math.e, 2) - 1 // returns number 6.3890560989306495
26
+ * math.expm1(1e-8) // returns number 1.0000000050000001e-8
27
+ * math.exp(1e-8) - 1 // returns number 9.9999999392253e-9
24
28
  * math.log(math.expm1(2) + 1) // returns number 2
25
29
  *
26
- * math.expm1([1, 2, 3])
30
+ * math.map([1, 2, 3], math.expm1)
27
31
  * // returns Array [
28
32
  * // 1.718281828459045,
29
33
  * // 6.3890560989306495,
@@ -32,10 +36,10 @@ export var createExpm1 = /* #__PURE__ */factory(name, dependencies, _ref => {
32
36
  *
33
37
  * See also:
34
38
  *
35
- * exp, log, pow
39
+ * exp, expm, log, pow
36
40
  *
37
- * @param {number | BigNumber | Complex | Array | Matrix} x A number or matrix to apply expm1
38
- * @return {number | BigNumber | Complex | Array | Matrix} Exponent of `x`
41
+ * @param {number | BigNumber | Complex} x A number or matrix to apply expm1
42
+ * @return {number | BigNumber | Complex} Exponential of `x`, minus one
39
43
  */
40
44
  return typed(name, {
41
45
  number: expm1Number,
@@ -45,9 +49,6 @@ export var createExpm1 = /* #__PURE__ */factory(name, dependencies, _ref => {
45
49
  },
46
50
  BigNumber: function BigNumber(x) {
47
51
  return x.exp().minus(1);
48
- },
49
- 'Array | Matrix': function ArrayMatrix(x) {
50
- return deepMap(x, this);
51
52
  }
52
53
  });
53
54
  });