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
@@ -7,15 +7,13 @@ exports.createDotMultiply = void 0;
7
7
 
8
8
  var _factory = require("../../utils/factory.js");
9
9
 
10
- var _algorithm = require("../../type/matrix/utils/algorithm02.js");
10
+ var _matAlgo02xDS = require("../../type/matrix/utils/matAlgo02xDS0.js");
11
11
 
12
- var _algorithm2 = require("../../type/matrix/utils/algorithm09.js");
12
+ var _matAlgo09xS0Sf = require("../../type/matrix/utils/matAlgo09xS0Sf.js");
13
13
 
14
- var _algorithm3 = require("../../type/matrix/utils/algorithm11.js");
14
+ var _matAlgo11xS0s = require("../../type/matrix/utils/matAlgo11xS0s.js");
15
15
 
16
- var _algorithm4 = require("../../type/matrix/utils/algorithm13.js");
17
-
18
- var _algorithm5 = require("../../type/matrix/utils/algorithm14.js");
16
+ var _matrixAlgorithmSuite = require("../../type/matrix/utils/matrixAlgorithmSuite.js");
19
17
 
20
18
  var name = 'dotMultiply';
21
19
  var dependencies = ['typed', 'matrix', 'equalScalar', 'multiplyScalar'];
@@ -24,23 +22,21 @@ var createDotMultiply = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
24
22
  matrix = _ref.matrix,
25
23
  equalScalar = _ref.equalScalar,
26
24
  multiplyScalar = _ref.multiplyScalar;
27
- var algorithm02 = (0, _algorithm.createAlgorithm02)({
25
+ var matAlgo02xDS0 = (0, _matAlgo02xDS.createMatAlgo02xDS0)({
28
26
  typed: typed,
29
27
  equalScalar: equalScalar
30
28
  });
31
- var algorithm09 = (0, _algorithm2.createAlgorithm09)({
29
+ var matAlgo09xS0Sf = (0, _matAlgo09xS0Sf.createMatAlgo09xS0Sf)({
32
30
  typed: typed,
33
31
  equalScalar: equalScalar
34
32
  });
35
- var algorithm11 = (0, _algorithm3.createAlgorithm11)({
33
+ var matAlgo11xS0s = (0, _matAlgo11xS0s.createMatAlgo11xS0s)({
36
34
  typed: typed,
37
35
  equalScalar: equalScalar
38
36
  });
39
- var algorithm13 = (0, _algorithm4.createAlgorithm13)({
40
- typed: typed
41
- });
42
- var algorithm14 = (0, _algorithm5.createAlgorithm14)({
43
- typed: typed
37
+ var matrixAlgorithmSuite = (0, _matrixAlgorithmSuite.createMatrixAlgorithmSuite)({
38
+ typed: typed,
39
+ matrix: matrix
44
40
  });
45
41
  /**
46
42
  * Multiply two matrices element wise. The function accepts both matrices and
@@ -69,52 +65,11 @@ var createDotMultiply = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
69
65
  * @return {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} Multiplication of `x` and `y`
70
66
  */
71
67
 
72
- return typed(name, {
73
- 'any, any': multiplyScalar,
74
- 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {
75
- return algorithm09(x, y, multiplyScalar, false);
76
- },
77
- 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {
78
- return algorithm02(y, x, multiplyScalar, true);
79
- },
80
- 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {
81
- return algorithm02(x, y, multiplyScalar, false);
82
- },
83
- 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {
84
- return algorithm13(x, y, multiplyScalar);
85
- },
86
- 'Array, Array': function ArrayArray(x, y) {
87
- // use matrix implementation
88
- return this(matrix(x), matrix(y)).valueOf();
89
- },
90
- 'Array, Matrix': function ArrayMatrix(x, y) {
91
- // use matrix implementation
92
- return this(matrix(x), y);
93
- },
94
- 'Matrix, Array': function MatrixArray(x, y) {
95
- // use matrix implementation
96
- return this(x, matrix(y));
97
- },
98
- 'SparseMatrix, any': function SparseMatrixAny(x, y) {
99
- return algorithm11(x, y, multiplyScalar, false);
100
- },
101
- 'DenseMatrix, any': function DenseMatrixAny(x, y) {
102
- return algorithm14(x, y, multiplyScalar, false);
103
- },
104
- 'any, SparseMatrix': function anySparseMatrix(x, y) {
105
- return algorithm11(y, x, multiplyScalar, true);
106
- },
107
- 'any, DenseMatrix': function anyDenseMatrix(x, y) {
108
- return algorithm14(y, x, multiplyScalar, true);
109
- },
110
- 'Array, any': function ArrayAny(x, y) {
111
- // use matrix implementation
112
- return algorithm14(matrix(x), y, multiplyScalar, false).valueOf();
113
- },
114
- 'any, Array': function anyArray(x, y) {
115
- // use matrix implementation
116
- return algorithm14(matrix(y), x, multiplyScalar, true).valueOf();
117
- }
118
- });
68
+ return typed(name, matrixAlgorithmSuite({
69
+ elop: multiplyScalar,
70
+ SS: matAlgo09xS0Sf,
71
+ DS: matAlgo02xDS0,
72
+ Ss: matAlgo11xS0s
73
+ }));
119
74
  });
120
75
  exports.createDotMultiply = createDotMultiply;
@@ -7,17 +7,15 @@ exports.createDotPow = void 0;
7
7
 
8
8
  var _factory = require("../../utils/factory.js");
9
9
 
10
- var _algorithm = require("../../type/matrix/utils/algorithm03.js");
10
+ var _matAlgo03xDSf = require("../../type/matrix/utils/matAlgo03xDSf.js");
11
11
 
12
- var _algorithm2 = require("../../type/matrix/utils/algorithm07.js");
12
+ var _matAlgo07xSSf = require("../../type/matrix/utils/matAlgo07xSSf.js");
13
13
 
14
- var _algorithm3 = require("../../type/matrix/utils/algorithm11.js");
14
+ var _matAlgo11xS0s = require("../../type/matrix/utils/matAlgo11xS0s.js");
15
15
 
16
- var _algorithm4 = require("../../type/matrix/utils/algorithm12.js");
16
+ var _matAlgo12xSfs = require("../../type/matrix/utils/matAlgo12xSfs.js");
17
17
 
18
- var _algorithm5 = require("../../type/matrix/utils/algorithm13.js");
19
-
20
- var _algorithm6 = require("../../type/matrix/utils/algorithm14.js");
18
+ var _matrixAlgorithmSuite = require("../../type/matrix/utils/matrixAlgorithmSuite.js");
21
19
 
22
20
  var name = 'dotPow';
23
21
  var dependencies = ['typed', 'equalScalar', 'matrix', 'pow', 'DenseMatrix'];
@@ -27,27 +25,36 @@ var createDotPow = /* #__PURE__ */(0, _factory.factory)(name, dependencies, func
27
25
  matrix = _ref.matrix,
28
26
  pow = _ref.pow,
29
27
  DenseMatrix = _ref.DenseMatrix;
30
- var algorithm03 = (0, _algorithm.createAlgorithm03)({
28
+ var matAlgo03xDSf = (0, _matAlgo03xDSf.createMatAlgo03xDSf)({
31
29
  typed: typed
32
30
  });
33
- var algorithm07 = (0, _algorithm2.createAlgorithm07)({
31
+ var matAlgo07xSSf = (0, _matAlgo07xSSf.createMatAlgo07xSSf)({
34
32
  typed: typed,
35
33
  DenseMatrix: DenseMatrix
36
34
  });
37
- var algorithm11 = (0, _algorithm3.createAlgorithm11)({
35
+ var matAlgo11xS0s = (0, _matAlgo11xS0s.createMatAlgo11xS0s)({
38
36
  typed: typed,
39
37
  equalScalar: equalScalar
40
38
  });
41
- var algorithm12 = (0, _algorithm4.createAlgorithm12)({
39
+ var matAlgo12xSfs = (0, _matAlgo12xSfs.createMatAlgo12xSfs)({
42
40
  typed: typed,
43
41
  DenseMatrix: DenseMatrix
44
42
  });
45
- var algorithm13 = (0, _algorithm5.createAlgorithm13)({
46
- typed: typed
47
- });
48
- var algorithm14 = (0, _algorithm6.createAlgorithm14)({
49
- typed: typed
43
+ var matrixAlgorithmSuite = (0, _matrixAlgorithmSuite.createMatrixAlgorithmSuite)({
44
+ typed: typed,
45
+ matrix: matrix
50
46
  });
47
+ var powScalarSignatures = {};
48
+
49
+ for (var signature in pow.signatures) {
50
+ if (Object.prototype.hasOwnProperty.call(pow.signatures, signature)) {
51
+ if (!signature.includes('Matrix') && !signature.includes('Array')) {
52
+ powScalarSignatures[signature] = pow.signatures[signature];
53
+ }
54
+ }
55
+ }
56
+
57
+ var powScalar = typed(powScalarSignatures);
51
58
  /**
52
59
  * Calculates the power of x to y element wise.
53
60
  *
@@ -72,52 +79,12 @@ var createDotPow = /* #__PURE__ */(0, _factory.factory)(name, dependencies, func
72
79
  * @return {number | BigNumber | Complex | Unit | Array | Matrix} The value of `x` to the power `y`
73
80
  */
74
81
 
75
- return typed(name, {
76
- 'any, any': pow,
77
- 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {
78
- return algorithm07(x, y, pow, false);
79
- },
80
- 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {
81
- return algorithm03(y, x, pow, true);
82
- },
83
- 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {
84
- return algorithm03(x, y, pow, false);
85
- },
86
- 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {
87
- return algorithm13(x, y, pow);
88
- },
89
- 'Array, Array': function ArrayArray(x, y) {
90
- // use matrix implementation
91
- return this(matrix(x), matrix(y)).valueOf();
92
- },
93
- 'Array, Matrix': function ArrayMatrix(x, y) {
94
- // use matrix implementation
95
- return this(matrix(x), y);
96
- },
97
- 'Matrix, Array': function MatrixArray(x, y) {
98
- // use matrix implementation
99
- return this(x, matrix(y));
100
- },
101
- 'SparseMatrix, any': function SparseMatrixAny(x, y) {
102
- return algorithm11(x, y, this, false);
103
- },
104
- 'DenseMatrix, any': function DenseMatrixAny(x, y) {
105
- return algorithm14(x, y, this, false);
106
- },
107
- 'any, SparseMatrix': function anySparseMatrix(x, y) {
108
- return algorithm12(y, x, this, true);
109
- },
110
- 'any, DenseMatrix': function anyDenseMatrix(x, y) {
111
- return algorithm14(y, x, this, true);
112
- },
113
- 'Array, any': function ArrayAny(x, y) {
114
- // use matrix implementation
115
- return algorithm14(matrix(x), y, this, false).valueOf();
116
- },
117
- 'any, Array': function anyArray(x, y) {
118
- // use matrix implementation
119
- return algorithm14(matrix(y), x, this, true).valueOf();
120
- }
121
- });
82
+ return typed(name, matrixAlgorithmSuite({
83
+ elop: powScalar,
84
+ SS: matAlgo07xSSf,
85
+ DS: matAlgo03xDSf,
86
+ Ss: matAlgo11xS0s,
87
+ sS: matAlgo12xSfs
88
+ }));
122
89
  });
123
90
  exports.createDotPow = createDotPow;
@@ -7,8 +7,6 @@ exports.createExp = void 0;
7
7
 
8
8
  var _factory = require("../../utils/factory.js");
9
9
 
10
- var _collection = require("../../utils/collection.js");
11
-
12
10
  var _index = require("../../plain/number/index.js");
13
11
 
14
12
  var name = 'exp';
@@ -17,8 +15,10 @@ var createExp = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functio
17
15
  var typed = _ref.typed;
18
16
 
19
17
  /**
20
- * Calculate the exponent of a value.
21
- * For matrices, the function is evaluated element wise.
18
+ * Calculate the exponential of a value.
19
+ * For matrices, if you want the matrix exponential of square matrix, use
20
+ * the `expm` function; if you want to take the exponential of each element,
21
+ * see the examples.
22
22
  *
23
23
  * Syntax:
24
24
  *
@@ -30,7 +30,7 @@ var createExp = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functio
30
30
  * math.pow(math.e, 2) // returns number 7.3890560989306495
31
31
  * math.log(math.exp(2)) // returns number 2
32
32
  *
33
- * math.exp([1, 2, 3])
33
+ * math.map([1, 2, 3], math.exp)
34
34
  * // returns Array [
35
35
  * // 2.718281828459045,
36
36
  * // 7.3890560989306495,
@@ -39,10 +39,10 @@ var createExp = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functio
39
39
  *
40
40
  * See also:
41
41
  *
42
- * expm1, log, pow
42
+ * expm1, expm, log, pow
43
43
  *
44
- * @param {number | BigNumber | Complex | Array | Matrix} x A number or matrix to exponentiate
45
- * @return {number | BigNumber | Complex | Array | Matrix} Exponent of `x`
44
+ * @param {number | BigNumber | Complex} x A number to exponentiate
45
+ * @return {number | BigNumber | Complex} Exponential of `x`
46
46
  */
47
47
  return typed(name, {
48
48
  number: _index.expNumber,
@@ -51,10 +51,6 @@ var createExp = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functio
51
51
  },
52
52
  BigNumber: function BigNumber(x) {
53
53
  return x.exp();
54
- },
55
- 'Array | Matrix': function ArrayMatrix(x) {
56
- // TODO: exp(sparse) should return a dense matrix since exp(0)==1
57
- return (0, _collection.deepMap)(x, this);
58
54
  }
59
55
  });
60
56
  });
@@ -7,8 +7,6 @@ exports.createExpm1 = void 0;
7
7
 
8
8
  var _factory = require("../../utils/factory.js");
9
9
 
10
- var _collection = require("../../utils/collection.js");
11
-
12
10
  var _index = require("../../plain/number/index.js");
13
11
 
14
12
  var name = 'expm1';
@@ -19,7 +17,10 @@ var createExpm1 = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
19
17
 
20
18
  /**
21
19
  * Calculate the value of subtracting 1 from the exponential value.
22
- * For matrices, the function is evaluated element wise.
20
+ * This function is more accurate than `math.exp(x)-1` when `x` is near 0
21
+ * To avoid ambiguity with the matrix exponential `expm`, this function
22
+ * does not operate on matrices; if you wish to apply it elementwise, see
23
+ * the examples.
23
24
  *
24
25
  * Syntax:
25
26
  *
@@ -29,9 +30,11 @@ var createExpm1 = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
29
30
  *
30
31
  * math.expm1(2) // returns number 6.38905609893065
31
32
  * math.pow(math.e, 2) - 1 // returns number 6.3890560989306495
33
+ * math.expm1(1e-8) // returns number 1.0000000050000001e-8
34
+ * math.exp(1e-8) - 1 // returns number 9.9999999392253e-9
32
35
  * math.log(math.expm1(2) + 1) // returns number 2
33
36
  *
34
- * math.expm1([1, 2, 3])
37
+ * math.map([1, 2, 3], math.expm1)
35
38
  * // returns Array [
36
39
  * // 1.718281828459045,
37
40
  * // 6.3890560989306495,
@@ -40,10 +43,10 @@ var createExpm1 = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
40
43
  *
41
44
  * See also:
42
45
  *
43
- * exp, log, pow
46
+ * exp, expm, log, pow
44
47
  *
45
- * @param {number | BigNumber | Complex | Array | Matrix} x A number or matrix to apply expm1
46
- * @return {number | BigNumber | Complex | Array | Matrix} Exponent of `x`
48
+ * @param {number | BigNumber | Complex} x A number or matrix to apply expm1
49
+ * @return {number | BigNumber | Complex} Exponential of `x`, minus one
47
50
  */
48
51
  return typed(name, {
49
52
  number: _index.expm1Number,
@@ -53,9 +56,6 @@ var createExpm1 = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
53
56
  },
54
57
  BigNumber: function BigNumber(x) {
55
58
  return x.exp().minus(1);
56
- },
57
- 'Array | Matrix': function ArrayMatrix(x) {
58
- return (0, _collection.deepMap)(x, this);
59
59
  }
60
60
  });
61
61
  });
@@ -9,9 +9,9 @@ var _factory = require("../../utils/factory.js");
9
9
 
10
10
  var _collection = require("../../utils/collection.js");
11
11
 
12
- var _algorithm = require("../../type/matrix/utils/algorithm12.js");
12
+ var _matAlgo12xSfs = require("../../type/matrix/utils/matAlgo12xSfs.js");
13
13
 
14
- var _algorithm2 = require("../../type/matrix/utils/algorithm14.js");
14
+ var _matAlgo14xDs = require("../../type/matrix/utils/matAlgo14xDs.js");
15
15
 
16
16
  var name = 'fix';
17
17
  var dependencies = ['typed', 'Complex', 'matrix', 'ceil', 'floor', 'equalScalar', 'zeros', 'DenseMatrix'];
@@ -38,11 +38,11 @@ var createFix = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functio
38
38
  equalScalar = _ref2.equalScalar,
39
39
  zeros = _ref2.zeros,
40
40
  DenseMatrix = _ref2.DenseMatrix;
41
- var algorithm12 = (0, _algorithm.createAlgorithm12)({
41
+ var matAlgo12xSfs = (0, _matAlgo12xSfs.createMatAlgo12xSfs)({
42
42
  typed: typed,
43
43
  DenseMatrix: DenseMatrix
44
44
  });
45
- var algorithm14 = (0, _algorithm2.createAlgorithm14)({
45
+ var matAlgo14xDs = (0, _matAlgo14xDs.createMatAlgo14xDs)({
46
46
  typed: typed
47
47
  });
48
48
  var fixNumber = createFixNumber({
@@ -112,31 +112,37 @@ var createFix = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functio
112
112
  'Fraction, number | BigNumber': function FractionNumberBigNumber(x, n) {
113
113
  return x.s < 0 ? ceil(x, n) : floor(x, n);
114
114
  },
115
- 'Array | Matrix': function ArrayMatrix(x) {
116
- // deep map collection, skip zeros since fix(0) = 0
117
- return (0, _collection.deepMap)(x, this, true);
118
- },
119
- 'Array | Matrix, number | BigNumber': function ArrayMatrixNumberBigNumber(x, n) {
120
- var _this = this;
115
+ 'Array | Matrix': typed.referToSelf(function (self) {
116
+ return function (x) {
117
+ // deep map collection, skip zeros since fix(0) = 0
118
+ return (0, _collection.deepMap)(x, self, true);
119
+ };
120
+ }),
121
+ 'Array | Matrix, number | BigNumber': typed.referToSelf(function (self) {
122
+ return function (x, n) {
123
+ // deep map collection, skip zeros since fix(0) = 0
124
+ return (0, _collection.deepMap)(x, function (i) {
125
+ return self(i, n);
126
+ }, true);
127
+ };
128
+ }),
129
+ 'number | Complex | Fraction | BigNumber, Array': typed.referToSelf(function (self) {
130
+ return function (x, y) {
131
+ // use matrix implementation
132
+ return matAlgo14xDs(matrix(y), x, self, true).valueOf();
133
+ };
134
+ }),
135
+ 'number | Complex | Fraction | BigNumber, Matrix': typed.referToSelf(function (self) {
136
+ return function (x, y) {
137
+ if (equalScalar(x, 0)) return zeros(y.size(), y.storage());
121
138
 
122
- // deep map collection, skip zeros since fix(0) = 0
123
- return (0, _collection.deepMap)(x, function (i) {
124
- return _this(i, n);
125
- }, true);
126
- },
127
- 'number | Complex | Fraction | BigNumber, Array': function numberComplexFractionBigNumberArray(x, y) {
128
- // use matrix implementation
129
- return algorithm14(matrix(y), x, this, true).valueOf();
130
- },
131
- 'number | Complex | Fraction | BigNumber, Matrix': function numberComplexFractionBigNumberMatrix(x, y) {
132
- if (equalScalar(x, 0)) return zeros(y.size(), y.storage());
139
+ if (y.storage() === 'dense') {
140
+ return matAlgo14xDs(y, x, self, true);
141
+ }
133
142
 
134
- if (y.storage() === 'dense') {
135
- return algorithm14(y, x, this, true);
136
- }
137
-
138
- return algorithm12(y, x, this, true);
139
- }
143
+ return matAlgo12xSfs(y, x, self, true);
144
+ };
145
+ })
140
146
  });
141
147
  });
142
148
  exports.createFix = createFix;
@@ -19,11 +19,11 @@ var _number = require("../../utils/number.js");
19
19
 
20
20
  var _nearlyEqual = require("../../utils/bignumber/nearlyEqual.js");
21
21
 
22
- var _algorithm = require("../../type/matrix/utils/algorithm11.js");
22
+ var _matAlgo11xS0s = require("../../type/matrix/utils/matAlgo11xS0s.js");
23
23
 
24
- var _algorithm2 = require("../../type/matrix/utils/algorithm12.js");
24
+ var _matAlgo12xSfs = require("../../type/matrix/utils/matAlgo12xSfs.js");
25
25
 
26
- var _algorithm3 = require("../../type/matrix/utils/algorithm14.js");
26
+ var _matAlgo14xDs = require("../../type/matrix/utils/matAlgo14xDs.js");
27
27
 
28
28
  var name = 'floor';
29
29
  var dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar', 'zeros', 'DenseMatrix'];
@@ -43,19 +43,19 @@ var createFloorNumber = /* #__PURE__ */(0, _factory.factory)(name, ['typed', 'co
43
43
  if ((0, _number.nearlyEqual)(x, round(x, n), config.epsilon)) {
44
44
  return round(x, n);
45
45
  } else {
46
- var _$split = "".concat(x, "e").split('e'),
47
- _$split2 = (0, _slicedToArray2.default)(_$split, 2),
48
- number = _$split2[0],
49
- exponent = _$split2[1];
46
+ var _split = "".concat(x, "e").split('e'),
47
+ _split2 = (0, _slicedToArray2["default"])(_split, 2),
48
+ number = _split2[0],
49
+ exponent = _split2[1];
50
50
 
51
51
  var result = Math.floor(Number("".concat(number, "e").concat(Number(exponent) + n)));
52
52
 
53
- var _$split3 = "".concat(result, "e").split('e');
53
+ var _split3 = "".concat(result, "e").split('e');
54
54
 
55
- var _$split4 = (0, _slicedToArray2.default)(_$split3, 2);
55
+ var _split4 = (0, _slicedToArray2["default"])(_split3, 2);
56
56
 
57
- number = _$split4[0];
58
- exponent = _$split4[1];
57
+ number = _split4[0];
58
+ exponent = _split4[1];
59
59
  return Number("".concat(number, "e").concat(Number(exponent) - n));
60
60
  }
61
61
  }
@@ -70,15 +70,15 @@ var createFloor = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
70
70
  equalScalar = _ref2.equalScalar,
71
71
  zeros = _ref2.zeros,
72
72
  DenseMatrix = _ref2.DenseMatrix;
73
- var algorithm11 = (0, _algorithm.createAlgorithm11)({
73
+ var matAlgo11xS0s = (0, _matAlgo11xS0s.createMatAlgo11xS0s)({
74
74
  typed: typed,
75
75
  equalScalar: equalScalar
76
76
  });
77
- var algorithm12 = (0, _algorithm2.createAlgorithm12)({
77
+ var matAlgo12xSfs = (0, _matAlgo12xSfs.createMatAlgo12xSfs)({
78
78
  typed: typed,
79
79
  DenseMatrix: DenseMatrix
80
80
  });
81
- var algorithm14 = (0, _algorithm3.createAlgorithm14)({
81
+ var matAlgo14xDs = (0, _matAlgo14xDs.createMatAlgo14xDs)({
82
82
  typed: typed
83
83
  });
84
84
  var floorNumber = createFloorNumber({
@@ -150,7 +150,7 @@ var createFloor = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
150
150
  if ((0, _nearlyEqual.nearlyEqual)(x, round(x, n), config.epsilon)) {
151
151
  return round(x, n);
152
152
  } else {
153
- return x.toDecimalPlaces(n.toNumber(), _decimal.default.ROUND_FLOOR);
153
+ return x.toDecimalPlaces(n.toNumber(), _decimal["default"].ROUND_FLOOR);
154
154
  }
155
155
  },
156
156
  Fraction: function Fraction(x) {
@@ -162,37 +162,47 @@ var createFloor = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
162
162
  'Fraction, BigNumber': function FractionBigNumber(x, n) {
163
163
  return x.floor(n.toNumber());
164
164
  },
165
- 'Array | Matrix': function ArrayMatrix(x) {
166
- // deep map collection, skip zeros since floor(0) = 0
167
- return (0, _collection.deepMap)(x, this, true);
168
- },
169
- 'Array, number | BigNumber': function ArrayNumberBigNumber(x, n) {
170
- var _this = this;
171
-
172
- // deep map collection, skip zeros since ceil(0) = 0
173
- return (0, _collection.deepMap)(x, function (i) {
174
- return _this(i, n);
175
- }, true);
176
- },
177
- 'SparseMatrix, number | BigNumber': function SparseMatrixNumberBigNumber(x, y) {
178
- return algorithm11(x, y, this, false);
179
- },
180
- 'DenseMatrix, number | BigNumber': function DenseMatrixNumberBigNumber(x, y) {
181
- return algorithm14(x, y, this, false);
182
- },
183
- 'number | Complex | Fraction | BigNumber, Array': function numberComplexFractionBigNumberArray(x, y) {
184
- // use matrix implementation
185
- return algorithm14(matrix(y), x, this, true).valueOf();
186
- },
187
- 'number | Complex | Fraction | BigNumber, Matrix': function numberComplexFractionBigNumberMatrix(x, y) {
188
- if (equalScalar(x, 0)) return zeros(y.size(), y.storage());
189
-
190
- if (y.storage() === 'dense') {
191
- return algorithm14(y, x, this, true);
192
- }
193
-
194
- return algorithm12(y, x, this, true);
195
- }
165
+ 'Array | Matrix': typed.referToSelf(function (self) {
166
+ return function (x) {
167
+ // deep map collection, skip zeros since floor(0) = 0
168
+ return (0, _collection.deepMap)(x, self, true);
169
+ };
170
+ }),
171
+ 'Array, number | BigNumber': typed.referToSelf(function (self) {
172
+ return function (x, n) {
173
+ // deep map collection, skip zeros since ceil(0) = 0
174
+ return (0, _collection.deepMap)(x, function (i) {
175
+ return self(i, n);
176
+ }, true);
177
+ };
178
+ }),
179
+ 'SparseMatrix, number | BigNumber': typed.referToSelf(function (self) {
180
+ return function (x, y) {
181
+ return matAlgo11xS0s(x, y, self, false);
182
+ };
183
+ }),
184
+ 'DenseMatrix, number | BigNumber': typed.referToSelf(function (self) {
185
+ return function (x, y) {
186
+ return matAlgo14xDs(x, y, self, false);
187
+ };
188
+ }),
189
+ 'number | Complex | Fraction | BigNumber, Array': typed.referToSelf(function (self) {
190
+ return function (x, y) {
191
+ // use matrix implementation
192
+ return matAlgo14xDs(matrix(y), x, self, true).valueOf();
193
+ };
194
+ }),
195
+ 'number | Complex | Fraction | BigNumber, Matrix': typed.referToSelf(function (self) {
196
+ return function (x, y) {
197
+ if (equalScalar(x, 0)) return zeros(y.size(), y.storage());
198
+
199
+ if (y.storage() === 'dense') {
200
+ return matAlgo14xDs(y, x, self, true);
201
+ }
202
+
203
+ return matAlgo12xSfs(y, x, self, true);
204
+ };
205
+ })
196
206
  });
197
207
  });
198
208
  exports.createFloor = createFloor;