mathjs 10.6.4 → 11.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (454) hide show
  1. package/HISTORY.md +79 -1
  2. package/README.md +1 -1
  3. package/lib/browser/math.js +2 -41
  4. package/lib/browser/math.js.LICENSE.txt +43 -0
  5. package/lib/browser/math.js.map +1 -1
  6. package/lib/cjs/core/create.js +6 -5
  7. package/lib/cjs/core/function/import.js +4 -14
  8. package/lib/cjs/core/function/typed.js +54 -12
  9. package/lib/cjs/defaultInstance.js +3 -3
  10. package/lib/cjs/entry/allFactoriesAny.js +1 -1
  11. package/lib/cjs/entry/allFactoriesNumber.js +1 -1
  12. package/lib/cjs/entry/configReadonly.js +1 -1
  13. package/lib/cjs/entry/dependenciesAny/dependenciesChainClass.generated.js +3 -0
  14. package/lib/cjs/entry/dependenciesAny/dependenciesKldivergence.generated.js +3 -0
  15. package/lib/cjs/entry/dependenciesAny/dependenciesRationalize.generated.js +3 -0
  16. package/lib/cjs/entry/dependenciesAny/dependenciesResolve.generated.js +3 -0
  17. package/lib/cjs/entry/dependenciesAny/dependenciesSimplify.generated.js +3 -0
  18. package/lib/cjs/entry/dependenciesAny/dependenciesSimplifyConstant.generated.js +56 -0
  19. package/lib/cjs/entry/dependenciesAny/dependenciesSimplifyCore.generated.js +6 -0
  20. package/lib/cjs/entry/dependenciesAny/dependenciesSqrtm.generated.js +3 -0
  21. package/lib/cjs/entry/dependenciesAny/dependenciesStd.generated.js +3 -0
  22. package/lib/cjs/entry/dependenciesAny/dependenciesStdTransform.generated.js +3 -0
  23. package/lib/cjs/entry/dependenciesAny.generated.js +8 -0
  24. package/lib/cjs/entry/dependenciesNumber/dependenciesChainClass.generated.js +3 -0
  25. package/lib/cjs/entry/dependenciesNumber/dependenciesRationalize.generated.js +3 -0
  26. package/lib/cjs/entry/dependenciesNumber/dependenciesResolve.generated.js +3 -0
  27. package/lib/cjs/entry/dependenciesNumber/dependenciesSimplify.generated.js +3 -0
  28. package/lib/cjs/entry/dependenciesNumber/dependenciesSimplifyConstant.generated.js +50 -0
  29. package/lib/cjs/entry/dependenciesNumber/dependenciesSimplifyCore.generated.js +6 -0
  30. package/lib/cjs/entry/dependenciesNumber/dependenciesStd.generated.js +3 -0
  31. package/lib/cjs/entry/dependenciesNumber/dependenciesStdTransform.generated.js +3 -0
  32. package/lib/cjs/entry/dependenciesNumber.generated.js +8 -0
  33. package/lib/cjs/entry/impureFunctionsAny.generated.js +87 -61
  34. package/lib/cjs/entry/impureFunctionsNumber.generated.js +93 -69
  35. package/lib/cjs/entry/pureFunctionsAny.generated.js +50 -45
  36. package/lib/cjs/entry/pureFunctionsNumber.generated.js +22 -19
  37. package/lib/cjs/expression/Parser.js +1 -1
  38. package/lib/cjs/expression/embeddedDocs/construction/index.js +1 -1
  39. package/lib/cjs/expression/embeddedDocs/embeddedDocs.js +8 -5
  40. package/lib/cjs/expression/embeddedDocs/function/algebra/simplifyConstant.js +15 -0
  41. package/lib/cjs/expression/embeddedDocs/function/algebra/simplifyCore.js +1 -1
  42. package/lib/cjs/expression/node/AccessorNode.js +216 -173
  43. package/lib/cjs/expression/node/ArrayNode.js +206 -160
  44. package/lib/cjs/expression/node/AssignmentNode.js +321 -270
  45. package/lib/cjs/expression/node/BlockNode.js +223 -172
  46. package/lib/cjs/expression/node/ConditionalNode.js +253 -193
  47. package/lib/cjs/expression/node/ConstantNode.js +216 -171
  48. package/lib/cjs/expression/node/FunctionAssignmentNode.js +258 -196
  49. package/lib/cjs/expression/node/FunctionNode.js +456 -416
  50. package/lib/cjs/expression/node/IndexNode.js +256 -210
  51. package/lib/cjs/expression/node/Node.js +411 -378
  52. package/lib/cjs/expression/node/ObjectNode.js +223 -178
  53. package/lib/cjs/expression/node/OperatorNode.js +474 -397
  54. package/lib/cjs/expression/node/ParenthesisNode.js +189 -143
  55. package/lib/cjs/expression/node/RangeNode.js +272 -224
  56. package/lib/cjs/expression/node/RelationalNode.js +246 -195
  57. package/lib/cjs/expression/node/SymbolNode.js +219 -172
  58. package/lib/cjs/expression/node/utils/access.js +1 -1
  59. package/lib/cjs/expression/node/utils/assign.js +1 -1
  60. package/lib/cjs/expression/operators.js +117 -23
  61. package/lib/cjs/expression/parse.js +37 -19
  62. package/lib/cjs/expression/transform/std.transform.js +3 -1
  63. package/lib/cjs/factoriesAny.js +8 -0
  64. package/lib/cjs/factoriesNumber.js +10 -1
  65. package/lib/cjs/function/algebra/decomposition/qr.js +1 -1
  66. package/lib/cjs/function/algebra/derivative.js +25 -33
  67. package/lib/cjs/function/algebra/leafCount.js +0 -3
  68. package/lib/cjs/function/algebra/rationalize.js +78 -108
  69. package/lib/cjs/function/algebra/resolve.js +53 -16
  70. package/lib/cjs/function/algebra/simplify/util.js +1 -1
  71. package/lib/cjs/function/algebra/simplify.js +90 -115
  72. package/lib/cjs/function/algebra/{simplify/simplifyConstant.js → simplifyConstant.js} +44 -10
  73. package/lib/cjs/function/algebra/simplifyCore.js +196 -93
  74. package/lib/cjs/function/algebra/solver/lsolveAll.js +2 -2
  75. package/lib/cjs/function/algebra/solver/usolveAll.js +2 -2
  76. package/lib/cjs/function/algebra/symbolicEqual.js +14 -32
  77. package/lib/cjs/function/arithmetic/abs.js +7 -14
  78. package/lib/cjs/function/arithmetic/add.js +26 -70
  79. package/lib/cjs/function/arithmetic/addScalar.js +17 -9
  80. package/lib/cjs/function/arithmetic/cbrt.js +7 -11
  81. package/lib/cjs/function/arithmetic/ceil.js +50 -40
  82. package/lib/cjs/function/arithmetic/cube.js +5 -10
  83. package/lib/cjs/function/arithmetic/divide.js +7 -7
  84. package/lib/cjs/function/arithmetic/divideScalar.js +4 -18
  85. package/lib/cjs/function/arithmetic/dotDivide.js +22 -65
  86. package/lib/cjs/function/arithmetic/dotMultiply.js +16 -61
  87. package/lib/cjs/function/arithmetic/dotPow.js +30 -63
  88. package/lib/cjs/function/arithmetic/exp.js +8 -12
  89. package/lib/cjs/function/arithmetic/expm1.js +10 -10
  90. package/lib/cjs/function/arithmetic/fix.js +34 -28
  91. package/lib/cjs/function/arithmetic/floor.js +51 -41
  92. package/lib/cjs/function/arithmetic/gcd.js +27 -68
  93. package/lib/cjs/function/arithmetic/hypot.js +9 -5
  94. package/lib/cjs/function/arithmetic/invmod.js +2 -2
  95. package/lib/cjs/function/arithmetic/lcm.js +27 -68
  96. package/lib/cjs/function/arithmetic/log.js +10 -12
  97. package/lib/cjs/function/arithmetic/log10.js +5 -3
  98. package/lib/cjs/function/arithmetic/log1p.js +11 -7
  99. package/lib/cjs/function/arithmetic/log2.js +5 -3
  100. package/lib/cjs/function/arithmetic/mod.js +22 -64
  101. package/lib/cjs/function/arithmetic/multiply.js +40 -35
  102. package/lib/cjs/function/arithmetic/multiplyScalar.js +2 -9
  103. package/lib/cjs/function/arithmetic/norm.js +1 -5
  104. package/lib/cjs/function/arithmetic/nthRoot.js +83 -95
  105. package/lib/cjs/function/arithmetic/nthRoots.js +2 -2
  106. package/lib/cjs/function/arithmetic/round.js +56 -42
  107. package/lib/cjs/function/arithmetic/sign.js +14 -10
  108. package/lib/cjs/function/arithmetic/sqrt.js +5 -9
  109. package/lib/cjs/function/arithmetic/square.js +6 -10
  110. package/lib/cjs/function/arithmetic/subtract.js +44 -100
  111. package/lib/cjs/function/arithmetic/unaryMinus.js +14 -16
  112. package/lib/cjs/function/arithmetic/unaryPlus.js +6 -4
  113. package/lib/cjs/function/bitwise/bitAnd.js +17 -61
  114. package/lib/cjs/function/bitwise/bitNot.js +6 -4
  115. package/lib/cjs/function/bitwise/bitOr.js +16 -60
  116. package/lib/cjs/function/bitwise/bitXor.js +17 -61
  117. package/lib/cjs/function/bitwise/leftShift.js +69 -82
  118. package/lib/cjs/function/bitwise/rightArithShift.js +69 -82
  119. package/lib/cjs/function/bitwise/rightLogShift.js +69 -82
  120. package/lib/cjs/function/bitwise/useMatrixForArrayScalar.js +36 -0
  121. package/lib/cjs/function/complex/arg.js +5 -3
  122. package/lib/cjs/function/complex/conj.js +6 -7
  123. package/lib/cjs/function/complex/im.js +7 -8
  124. package/lib/cjs/function/complex/re.js +6 -10
  125. package/lib/cjs/function/geometry/distance.js +2 -2
  126. package/lib/cjs/function/logical/and.js +74 -80
  127. package/lib/cjs/function/logical/not.js +13 -6
  128. package/lib/cjs/function/logical/or.js +21 -63
  129. package/lib/cjs/function/logical/xor.js +21 -63
  130. package/lib/cjs/function/matrix/diff.js +11 -8
  131. package/lib/cjs/function/matrix/eigs/complexEigs.js +5 -5
  132. package/lib/cjs/function/matrix/fft.js +2 -2
  133. package/lib/cjs/function/matrix/matrixFromColumns.js +1 -1
  134. package/lib/cjs/function/matrix/matrixFromRows.js +1 -1
  135. package/lib/cjs/function/matrix/ones.js +2 -1
  136. package/lib/cjs/function/matrix/rotate.js +5 -5
  137. package/lib/cjs/function/matrix/sqrtm.js +3 -2
  138. package/lib/cjs/function/matrix/transpose.js +47 -48
  139. package/lib/cjs/function/matrix/zeros.js +2 -1
  140. package/lib/cjs/function/probability/factorial.js +5 -3
  141. package/lib/cjs/function/probability/gamma.js +38 -40
  142. package/lib/cjs/function/probability/kldivergence.js +5 -2
  143. package/lib/cjs/function/probability/lgamma.js +30 -30
  144. package/lib/cjs/function/probability/util/seededRNG.js +2 -2
  145. package/lib/cjs/function/relational/compare.js +21 -67
  146. package/lib/cjs/function/relational/compareNatural.js +59 -54
  147. package/lib/cjs/function/relational/compareText.js +10 -43
  148. package/lib/cjs/function/relational/compareUnits.js +24 -0
  149. package/lib/cjs/function/relational/equal.js +19 -80
  150. package/lib/cjs/function/relational/equalScalar.js +7 -9
  151. package/lib/cjs/function/relational/larger.js +21 -67
  152. package/lib/cjs/function/relational/largerEq.js +21 -67
  153. package/lib/cjs/function/relational/smaller.js +21 -67
  154. package/lib/cjs/function/relational/smallerEq.js +21 -67
  155. package/lib/cjs/function/relational/unequal.js +19 -80
  156. package/lib/cjs/function/special/erf.js +5 -3
  157. package/lib/cjs/function/statistics/std.js +11 -2
  158. package/lib/cjs/function/string/format.js +2 -2
  159. package/lib/cjs/function/string/hex.js +1 -2
  160. package/lib/cjs/function/trigonometry/acos.js +4 -8
  161. package/lib/cjs/function/trigonometry/acosh.js +2 -7
  162. package/lib/cjs/function/trigonometry/acot.js +6 -11
  163. package/lib/cjs/function/trigonometry/acoth.js +4 -8
  164. package/lib/cjs/function/trigonometry/acsc.js +6 -11
  165. package/lib/cjs/function/trigonometry/acsch.js +4 -8
  166. package/lib/cjs/function/trigonometry/asec.js +6 -10
  167. package/lib/cjs/function/trigonometry/asech.js +4 -8
  168. package/lib/cjs/function/trigonometry/asin.js +5 -10
  169. package/lib/cjs/function/trigonometry/asinh.js +4 -9
  170. package/lib/cjs/function/trigonometry/atan.js +5 -11
  171. package/lib/cjs/function/trigonometry/atan2.js +25 -63
  172. package/lib/cjs/function/trigonometry/atanh.js +4 -9
  173. package/lib/cjs/function/trigonometry/cos.js +11 -20
  174. package/lib/cjs/function/trigonometry/cosh.js +5 -19
  175. package/lib/cjs/function/trigonometry/cot.js +9 -15
  176. package/lib/cjs/function/trigonometry/coth.js +4 -15
  177. package/lib/cjs/function/trigonometry/csc.js +11 -17
  178. package/lib/cjs/function/trigonometry/csch.js +4 -15
  179. package/lib/cjs/function/trigonometry/sec.js +11 -17
  180. package/lib/cjs/function/trigonometry/sech.js +4 -15
  181. package/lib/cjs/function/trigonometry/sin.js +11 -21
  182. package/lib/cjs/function/trigonometry/sinh.js +5 -20
  183. package/lib/cjs/function/trigonometry/tan.js +11 -21
  184. package/lib/cjs/function/trigonometry/tanh.js +5 -20
  185. package/lib/cjs/function/trigonometry/trigUnit.js +24 -0
  186. package/lib/cjs/function/unit/to.js +7 -41
  187. package/lib/cjs/function/utils/clone.js +1 -1
  188. package/lib/cjs/function/utils/hasNumericValue.js +5 -1
  189. package/lib/cjs/function/utils/isInteger.js +6 -4
  190. package/lib/cjs/function/utils/isNaN.js +1 -1
  191. package/lib/cjs/function/utils/isNegative.js +11 -7
  192. package/lib/cjs/function/utils/isNumeric.js +6 -4
  193. package/lib/cjs/function/utils/isPositive.js +11 -7
  194. package/lib/cjs/function/utils/isPrime.js +5 -3
  195. package/lib/cjs/function/utils/isZero.js +21 -17
  196. package/lib/cjs/function/utils/numeric.js +11 -4
  197. package/lib/cjs/function/utils/typeOf.js +38 -44
  198. package/lib/cjs/header.js +2 -2
  199. package/lib/cjs/plain/bignumber/index.js +1 -1
  200. package/lib/cjs/type/bignumber/BigNumber.js +2 -2
  201. package/lib/cjs/type/bignumber/function/bignumber.js +6 -4
  202. package/lib/cjs/type/boolean.js +7 -5
  203. package/lib/cjs/type/chain/Chain.js +23 -3
  204. package/lib/cjs/type/complex/Complex.js +18 -14
  205. package/lib/cjs/type/complex/function/complex.js +6 -4
  206. package/lib/cjs/type/fraction/Fraction.js +10 -6
  207. package/lib/cjs/type/fraction/function/fraction.js +6 -4
  208. package/lib/cjs/type/matrix/DenseMatrix.js +21 -6
  209. package/lib/cjs/type/matrix/SparseMatrix.js +12 -2
  210. package/lib/cjs/type/matrix/utils/{algorithm01.js → matAlgo01xDSid.js} +4 -4
  211. package/lib/cjs/type/matrix/utils/{algorithm02.js → matAlgo02xDS0.js} +5 -5
  212. package/lib/cjs/type/matrix/utils/{algorithm03.js → matAlgo03xDSf.js} +5 -5
  213. package/lib/cjs/type/matrix/utils/{algorithm04.js → matAlgo04xSidSid.js} +7 -7
  214. package/lib/cjs/type/matrix/utils/{algorithm05.js → matAlgo05xSfSf.js} +5 -5
  215. package/lib/cjs/type/matrix/utils/{algorithm06.js → matAlgo06xS0S0.js} +5 -5
  216. package/lib/cjs/type/matrix/utils/{algorithm07.js → matAlgo07xSSf.js} +5 -5
  217. package/lib/cjs/type/matrix/utils/{algorithm08.js → matAlgo08xS0Sid.js} +6 -6
  218. package/lib/cjs/type/matrix/utils/{algorithm09.js → matAlgo09xS0Sf.js} +5 -5
  219. package/lib/cjs/type/matrix/utils/{algorithm10.js → matAlgo10xSids.js} +5 -5
  220. package/lib/cjs/type/matrix/utils/{algorithm11.js → matAlgo11xS0s.js} +5 -5
  221. package/lib/cjs/type/matrix/utils/{algorithm12.js → matAlgo12xSfs.js} +5 -5
  222. package/lib/cjs/type/matrix/utils/{algorithm13.js → matAlgo13xDD.js} +5 -5
  223. package/lib/cjs/type/matrix/utils/{algorithm14.js → matAlgo14xDs.js} +5 -5
  224. package/lib/cjs/type/matrix/utils/matrixAlgorithmSuite.js +238 -0
  225. package/lib/cjs/type/number.js +6 -4
  226. package/lib/cjs/type/string.js +7 -5
  227. package/lib/cjs/type/unit/Unit.js +98 -45
  228. package/lib/cjs/type/unit/function/createUnit.js +2 -1
  229. package/lib/cjs/type/unit/function/unit.js +14 -5
  230. package/lib/cjs/utils/customs.js +2 -2
  231. package/lib/cjs/utils/emitter.js +1 -1
  232. package/lib/cjs/utils/function.js +2 -2
  233. package/lib/cjs/utils/is.js +27 -25
  234. package/lib/cjs/utils/latex.js +3 -3
  235. package/lib/cjs/utils/lruQueue.js +1 -1
  236. package/lib/cjs/utils/map.js +3 -3
  237. package/lib/cjs/utils/object.js +2 -2
  238. package/lib/cjs/utils/snapshot.js +30 -57
  239. package/lib/cjs/utils/string.js +3 -3
  240. package/lib/cjs/version.js +1 -1
  241. package/lib/esm/core/create.js +2 -1
  242. package/lib/esm/core/function/import.js +2 -12
  243. package/lib/esm/core/function/typed.js +47 -11
  244. package/lib/esm/entry/dependenciesAny/dependenciesChainClass.generated.js +2 -0
  245. package/lib/esm/entry/dependenciesAny/dependenciesKldivergence.generated.js +2 -0
  246. package/lib/esm/entry/dependenciesAny/dependenciesRationalize.generated.js +2 -0
  247. package/lib/esm/entry/dependenciesAny/dependenciesResolve.generated.js +2 -0
  248. package/lib/esm/entry/dependenciesAny/dependenciesSimplify.generated.js +2 -0
  249. package/lib/esm/entry/dependenciesAny/dependenciesSimplifyConstant.generated.js +34 -0
  250. package/lib/esm/entry/dependenciesAny/dependenciesSimplifyCore.generated.js +4 -0
  251. package/lib/esm/entry/dependenciesAny/dependenciesSqrtm.generated.js +2 -0
  252. package/lib/esm/entry/dependenciesAny/dependenciesStd.generated.js +2 -0
  253. package/lib/esm/entry/dependenciesAny/dependenciesStdTransform.generated.js +2 -0
  254. package/lib/esm/entry/dependenciesAny.generated.js +1 -0
  255. package/lib/esm/entry/dependenciesNumber/dependenciesChainClass.generated.js +2 -0
  256. package/lib/esm/entry/dependenciesNumber/dependenciesRationalize.generated.js +2 -0
  257. package/lib/esm/entry/dependenciesNumber/dependenciesResolve.generated.js +2 -0
  258. package/lib/esm/entry/dependenciesNumber/dependenciesSimplify.generated.js +2 -0
  259. package/lib/esm/entry/dependenciesNumber/dependenciesSimplifyConstant.generated.js +30 -0
  260. package/lib/esm/entry/dependenciesNumber/dependenciesSimplifyCore.generated.js +4 -0
  261. package/lib/esm/entry/dependenciesNumber/dependenciesStd.generated.js +2 -0
  262. package/lib/esm/entry/dependenciesNumber/dependenciesStdTransform.generated.js +2 -0
  263. package/lib/esm/entry/dependenciesNumber.generated.js +1 -0
  264. package/lib/esm/entry/impureFunctionsAny.generated.js +73 -48
  265. package/lib/esm/entry/impureFunctionsNumber.generated.js +81 -58
  266. package/lib/esm/entry/pureFunctionsAny.generated.js +39 -36
  267. package/lib/esm/entry/pureFunctionsNumber.generated.js +14 -13
  268. package/lib/esm/expression/embeddedDocs/construction/index.js +1 -1
  269. package/lib/esm/expression/embeddedDocs/embeddedDocs.js +2 -0
  270. package/lib/esm/expression/embeddedDocs/function/algebra/simplifyConstant.js +8 -0
  271. package/lib/esm/expression/embeddedDocs/function/algebra/simplifyCore.js +1 -1
  272. package/lib/esm/expression/node/AccessorNode.js +158 -153
  273. package/lib/esm/expression/node/ArrayNode.js +162 -154
  274. package/lib/esm/expression/node/AssignmentNode.js +257 -245
  275. package/lib/esm/expression/node/BlockNode.js +177 -163
  276. package/lib/esm/expression/node/ConditionalNode.js +197 -174
  277. package/lib/esm/expression/node/ConstantNode.js +171 -163
  278. package/lib/esm/expression/node/FunctionAssignmentNode.js +205 -180
  279. package/lib/esm/expression/node/FunctionNode.js +407 -407
  280. package/lib/esm/expression/node/IndexNode.js +206 -198
  281. package/lib/esm/expression/node/Node.js +325 -325
  282. package/lib/esm/expression/node/ObjectNode.js +166 -157
  283. package/lib/esm/expression/node/OperatorNode.js +414 -377
  284. package/lib/esm/expression/node/ParenthesisNode.js +146 -138
  285. package/lib/esm/expression/node/RangeNode.js +221 -212
  286. package/lib/esm/expression/node/RelationalNode.js +190 -176
  287. package/lib/esm/expression/node/SymbolNode.js +161 -152
  288. package/lib/esm/expression/operators.js +96 -4
  289. package/lib/esm/expression/parse.js +25 -7
  290. package/lib/esm/expression/transform/std.transform.js +3 -1
  291. package/lib/esm/factoriesAny.js +1 -0
  292. package/lib/esm/factoriesNumber.js +1 -0
  293. package/lib/esm/function/algebra/derivative.js +25 -33
  294. package/lib/esm/function/algebra/leafCount.js +0 -3
  295. package/lib/esm/function/algebra/rationalize.js +83 -114
  296. package/lib/esm/function/algebra/resolve.js +25 -16
  297. package/lib/esm/function/algebra/simplify.js +85 -113
  298. package/lib/esm/function/algebra/{simplify/simplifyConstant.js → simplifyConstant.js} +39 -9
  299. package/lib/esm/function/algebra/simplifyCore.js +192 -91
  300. package/lib/esm/function/algebra/symbolicEqual.js +14 -32
  301. package/lib/esm/function/arithmetic/abs.js +3 -16
  302. package/lib/esm/function/arithmetic/add.js +21 -65
  303. package/lib/esm/function/arithmetic/addScalar.js +11 -5
  304. package/lib/esm/function/arithmetic/cbrt.js +7 -10
  305. package/lib/esm/function/arithmetic/ceil.js +25 -25
  306. package/lib/esm/function/arithmetic/cube.js +5 -9
  307. package/lib/esm/function/arithmetic/divide.js +7 -7
  308. package/lib/esm/function/arithmetic/divideScalar.js +2 -19
  309. package/lib/esm/function/arithmetic/dotDivide.js +22 -64
  310. package/lib/esm/function/arithmetic/dotMultiply.js +16 -60
  311. package/lib/esm/function/arithmetic/dotPow.js +30 -62
  312. package/lib/esm/function/arithmetic/exp.js +8 -11
  313. package/lib/esm/function/arithmetic/expm1.js +10 -9
  314. package/lib/esm/function/arithmetic/fix.js +18 -18
  315. package/lib/esm/function/arithmetic/floor.js +26 -26
  316. package/lib/esm/function/arithmetic/gcd.js +26 -70
  317. package/lib/esm/function/arithmetic/hypot.js +7 -6
  318. package/lib/esm/function/arithmetic/invmod.js +1 -1
  319. package/lib/esm/function/arithmetic/lcm.js +26 -70
  320. package/lib/esm/function/arithmetic/log.js +7 -10
  321. package/lib/esm/function/arithmetic/log10.js +1 -3
  322. package/lib/esm/function/arithmetic/log1p.js +4 -6
  323. package/lib/esm/function/arithmetic/log2.js +1 -3
  324. package/lib/esm/function/arithmetic/mod.js +21 -62
  325. package/lib/esm/function/arithmetic/multiply.js +23 -27
  326. package/lib/esm/function/arithmetic/multiplyScalar.js +2 -13
  327. package/lib/esm/function/arithmetic/norm.js +0 -4
  328. package/lib/esm/function/arithmetic/nthRoot.js +41 -76
  329. package/lib/esm/function/arithmetic/nthRoots.js +2 -2
  330. package/lib/esm/function/arithmetic/round.js +26 -28
  331. package/lib/esm/function/arithmetic/sign.js +5 -7
  332. package/lib/esm/function/arithmetic/sqrt.js +5 -8
  333. package/lib/esm/function/arithmetic/square.js +6 -9
  334. package/lib/esm/function/arithmetic/subtract.js +31 -95
  335. package/lib/esm/function/arithmetic/unaryMinus.js +6 -16
  336. package/lib/esm/function/arithmetic/unaryPlus.js +2 -4
  337. package/lib/esm/function/bitwise/bitAnd.js +16 -59
  338. package/lib/esm/function/bitwise/bitNot.js +2 -4
  339. package/lib/esm/function/bitwise/bitOr.js +16 -59
  340. package/lib/esm/function/bitwise/bitXor.js +16 -59
  341. package/lib/esm/function/bitwise/leftShift.js +39 -61
  342. package/lib/esm/function/bitwise/rightArithShift.js +39 -61
  343. package/lib/esm/function/bitwise/rightLogShift.js +39 -61
  344. package/lib/esm/function/bitwise/useMatrixForArrayScalar.js +13 -0
  345. package/lib/esm/function/complex/arg.js +1 -3
  346. package/lib/esm/function/complex/conj.js +3 -12
  347. package/lib/esm/function/complex/im.js +4 -15
  348. package/lib/esm/function/complex/re.js +3 -15
  349. package/lib/esm/function/geometry/distance.js +2 -2
  350. package/lib/esm/function/logical/and.js +35 -57
  351. package/lib/esm/function/logical/not.js +3 -6
  352. package/lib/esm/function/logical/or.js +16 -61
  353. package/lib/esm/function/logical/xor.js +16 -61
  354. package/lib/esm/function/matrix/diff.js +3 -8
  355. package/lib/esm/function/matrix/ones.js +2 -1
  356. package/lib/esm/function/matrix/rotate.js +5 -5
  357. package/lib/esm/function/matrix/sqrtm.js +3 -2
  358. package/lib/esm/function/matrix/transpose.js +47 -50
  359. package/lib/esm/function/matrix/zeros.js +2 -1
  360. package/lib/esm/function/probability/factorial.js +1 -3
  361. package/lib/esm/function/probability/gamma.js +38 -39
  362. package/lib/esm/function/probability/kldivergence.js +3 -2
  363. package/lib/esm/function/probability/lgamma.js +29 -29
  364. package/lib/esm/function/relational/compare.js +21 -67
  365. package/lib/esm/function/relational/compareNatural.js +54 -49
  366. package/lib/esm/function/relational/compareText.js +10 -42
  367. package/lib/esm/function/relational/compareUnits.js +15 -0
  368. package/lib/esm/function/relational/equal.js +19 -79
  369. package/lib/esm/function/relational/equalScalar.js +6 -9
  370. package/lib/esm/function/relational/larger.js +23 -73
  371. package/lib/esm/function/relational/largerEq.js +23 -73
  372. package/lib/esm/function/relational/smaller.js +23 -73
  373. package/lib/esm/function/relational/smallerEq.js +23 -73
  374. package/lib/esm/function/relational/unequal.js +19 -79
  375. package/lib/esm/function/special/erf.js +1 -3
  376. package/lib/esm/function/statistics/std.js +10 -2
  377. package/lib/esm/function/string/format.js +2 -2
  378. package/lib/esm/function/string/hex.js +1 -2
  379. package/lib/esm/function/trigonometry/acos.js +4 -7
  380. package/lib/esm/function/trigonometry/acosh.js +2 -6
  381. package/lib/esm/function/trigonometry/acot.js +6 -10
  382. package/lib/esm/function/trigonometry/acoth.js +4 -7
  383. package/lib/esm/function/trigonometry/acsc.js +6 -10
  384. package/lib/esm/function/trigonometry/acsch.js +4 -7
  385. package/lib/esm/function/trigonometry/asec.js +6 -9
  386. package/lib/esm/function/trigonometry/asech.js +4 -7
  387. package/lib/esm/function/trigonometry/asin.js +5 -9
  388. package/lib/esm/function/trigonometry/asinh.js +4 -8
  389. package/lib/esm/function/trigonometry/atan.js +5 -10
  390. package/lib/esm/function/trigonometry/atan2.js +26 -65
  391. package/lib/esm/function/trigonometry/atanh.js +4 -8
  392. package/lib/esm/function/trigonometry/cos.js +11 -22
  393. package/lib/esm/function/trigonometry/cosh.js +5 -20
  394. package/lib/esm/function/trigonometry/cot.js +10 -20
  395. package/lib/esm/function/trigonometry/coth.js +6 -20
  396. package/lib/esm/function/trigonometry/csc.js +12 -22
  397. package/lib/esm/function/trigonometry/csch.js +6 -20
  398. package/lib/esm/function/trigonometry/sec.js +12 -22
  399. package/lib/esm/function/trigonometry/sech.js +6 -20
  400. package/lib/esm/function/trigonometry/sin.js +11 -23
  401. package/lib/esm/function/trigonometry/sinh.js +5 -21
  402. package/lib/esm/function/trigonometry/tan.js +11 -23
  403. package/lib/esm/function/trigonometry/tanh.js +5 -21
  404. package/lib/esm/function/trigonometry/trigUnit.js +15 -0
  405. package/lib/esm/function/unit/to.js +8 -43
  406. package/lib/esm/function/utils/clone.js +1 -1
  407. package/lib/esm/function/utils/hasNumericValue.js +3 -1
  408. package/lib/esm/function/utils/isInteger.js +2 -4
  409. package/lib/esm/function/utils/isNaN.js +1 -1
  410. package/lib/esm/function/utils/isNegative.js +3 -7
  411. package/lib/esm/function/utils/isNumeric.js +4 -10
  412. package/lib/esm/function/utils/isPositive.js +3 -7
  413. package/lib/esm/function/utils/isPrime.js +1 -3
  414. package/lib/esm/function/utils/isZero.js +13 -17
  415. package/lib/esm/function/utils/numeric.js +11 -4
  416. package/lib/esm/function/utils/typeOf.js +38 -44
  417. package/lib/esm/type/bignumber/function/bignumber.js +1 -3
  418. package/lib/esm/type/boolean.js +1 -3
  419. package/lib/esm/type/chain/Chain.js +23 -3
  420. package/lib/esm/type/complex/Complex.js +4 -0
  421. package/lib/esm/type/complex/function/complex.js +1 -3
  422. package/lib/esm/type/fraction/Fraction.js +4 -0
  423. package/lib/esm/type/fraction/function/fraction.js +1 -3
  424. package/lib/esm/type/matrix/DenseMatrix.js +15 -1
  425. package/lib/esm/type/matrix/SparseMatrix.js +9 -0
  426. package/lib/esm/type/matrix/utils/{algorithm01.js → matAlgo01xDSid.js} +2 -2
  427. package/lib/esm/type/matrix/utils/{algorithm02.js → matAlgo02xDS0.js} +3 -3
  428. package/lib/esm/type/matrix/utils/{algorithm03.js → matAlgo03xDSf.js} +3 -3
  429. package/lib/esm/type/matrix/utils/{algorithm04.js → matAlgo04xSidSid.js} +5 -5
  430. package/lib/esm/type/matrix/utils/{algorithm05.js → matAlgo05xSfSf.js} +3 -3
  431. package/lib/esm/type/matrix/utils/{algorithm06.js → matAlgo06xS0S0.js} +3 -3
  432. package/lib/esm/type/matrix/utils/{algorithm07.js → matAlgo07xSSf.js} +3 -3
  433. package/lib/esm/type/matrix/utils/{algorithm08.js → matAlgo08xS0Sid.js} +4 -4
  434. package/lib/esm/type/matrix/utils/{algorithm09.js → matAlgo09xS0Sf.js} +3 -3
  435. package/lib/esm/type/matrix/utils/{algorithm10.js → matAlgo10xSids.js} +3 -3
  436. package/lib/esm/type/matrix/utils/{algorithm11.js → matAlgo11xS0s.js} +3 -3
  437. package/lib/esm/type/matrix/utils/{algorithm12.js → matAlgo12xSfs.js} +3 -3
  438. package/lib/esm/type/matrix/utils/{algorithm13.js → matAlgo13xDD.js} +3 -3
  439. package/lib/esm/type/matrix/utils/{algorithm14.js → matAlgo14xDs.js} +3 -3
  440. package/lib/esm/type/matrix/utils/matrixAlgorithmSuite.js +168 -0
  441. package/lib/esm/type/number.js +1 -3
  442. package/lib/esm/type/string.js +1 -3
  443. package/lib/esm/type/unit/Unit.js +85 -36
  444. package/lib/esm/type/unit/function/createUnit.js +2 -1
  445. package/lib/esm/type/unit/function/unit.js +10 -5
  446. package/lib/esm/utils/is.js +18 -18
  447. package/lib/esm/utils/snapshot.js +22 -48
  448. package/lib/esm/version.js +1 -1
  449. package/package.json +22 -25
  450. package/types/index.d.ts +211 -180
  451. package/types/index.ts +358 -144
  452. package/types/tsconfig.json +4 -1
  453. package/lib/cjs/utils/polyfills.js +0 -14
  454. package/lib/esm/utils/polyfills.js +0 -12
@@ -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
  });
@@ -1,7 +1,7 @@
1
1
  import { factory } from '../../utils/factory.js';
2
2
  import { deepMap } from '../../utils/collection.js';
3
- import { createAlgorithm12 } from '../../type/matrix/utils/algorithm12.js';
4
- import { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';
3
+ import { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';
4
+ import { createMatAlgo14xDs } from '../../type/matrix/utils/matAlgo14xDs.js';
5
5
  var name = 'fix';
6
6
  var dependencies = ['typed', 'Complex', 'matrix', 'ceil', 'floor', 'equalScalar', 'zeros', 'DenseMatrix'];
7
7
  export var createFixNumber = /* #__PURE__ */factory(name, ['typed', 'ceil', 'floor'], _ref => {
@@ -30,11 +30,11 @@ export var createFix = /* #__PURE__ */factory(name, dependencies, _ref2 => {
30
30
  zeros,
31
31
  DenseMatrix
32
32
  } = _ref2;
33
- var algorithm12 = createAlgorithm12({
33
+ var matAlgo12xSfs = createMatAlgo12xSfs({
34
34
  typed,
35
35
  DenseMatrix
36
36
  });
37
- var algorithm14 = createAlgorithm14({
37
+ var matAlgo14xDs = createMatAlgo14xDs({
38
38
  typed
39
39
  });
40
40
  var fixNumber = createFixNumber({
@@ -65,7 +65,7 @@ export var createFix = /* #__PURE__ */factory(name, dependencies, _ref2 => {
65
65
  *
66
66
  * const c = math.complex(3.22, -2.78)
67
67
  * math.fix(c) // returns Complex 3 - 2i
68
- * math.fix(c, 1) // returns Complex 3.2 - 2.7i
68
+ * math.fix(c, 1) // returns Complex 3.2 -2.7i
69
69
  *
70
70
  * math.fix([3.2, 3.8, -4.7]) // returns Array [3, 3, -4]
71
71
  * math.fix([3.2, 3.8, -4.7], 1) // returns Array [3.2, 3.8, -4.7]
@@ -104,26 +104,26 @@ export var createFix = /* #__PURE__ */factory(name, dependencies, _ref2 => {
104
104
  'Fraction, number | BigNumber': function FractionNumberBigNumber(x, n) {
105
105
  return x.s < 0 ? ceil(x, n) : floor(x, n);
106
106
  },
107
- 'Array | Matrix': function ArrayMatrix(x) {
107
+ 'Array | Matrix': typed.referToSelf(self => x => {
108
108
  // deep map collection, skip zeros since fix(0) = 0
109
- return deepMap(x, this, true);
110
- },
111
- 'Array | Matrix, number | BigNumber': function ArrayMatrixNumberBigNumber(x, n) {
109
+ return deepMap(x, self, true);
110
+ }),
111
+ 'Array | Matrix, number | BigNumber': typed.referToSelf(self => (x, n) => {
112
112
  // deep map collection, skip zeros since fix(0) = 0
113
- return deepMap(x, i => this(i, n), true);
114
- },
115
- 'number | Complex | Fraction | BigNumber, Array': function numberComplexFractionBigNumberArray(x, y) {
113
+ return deepMap(x, i => self(i, n), true);
114
+ }),
115
+ 'number | Complex | Fraction | BigNumber, Array': typed.referToSelf(self => (x, y) => {
116
116
  // use matrix implementation
117
- return algorithm14(matrix(y), x, this, true).valueOf();
118
- },
119
- 'number | Complex | Fraction | BigNumber, Matrix': function numberComplexFractionBigNumberMatrix(x, y) {
117
+ return matAlgo14xDs(matrix(y), x, self, true).valueOf();
118
+ }),
119
+ 'number | Complex | Fraction | BigNumber, Matrix': typed.referToSelf(self => (x, y) => {
120
120
  if (equalScalar(x, 0)) return zeros(y.size(), y.storage());
121
121
 
122
122
  if (y.storage() === 'dense') {
123
- return algorithm14(y, x, this, true);
123
+ return matAlgo14xDs(y, x, self, true);
124
124
  }
125
125
 
126
- return algorithm12(y, x, this, true);
127
- }
126
+ return matAlgo12xSfs(y, x, self, true);
127
+ })
128
128
  });
129
129
  });
@@ -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 = 'floor';
10
10
  var dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar', 'zeros', 'DenseMatrix'];
11
11
  export var createFloorNumber = /* #__PURE__ */factory(name, ['typed', 'config', 'round'], _ref => {
@@ -44,15 +44,15 @@ export var createFloor = /* #__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 floorNumber = createFloorNumber({
@@ -83,7 +83,7 @@ export var createFloor = /* #__PURE__ */factory(name, dependencies, _ref2 => {
83
83
  *
84
84
  * const c = math.complex(3.24, -2.71)
85
85
  * math.floor(c) // returns Complex 3 - 3i
86
- * math.floor(c, 1) // returns Complex 3.2 - 2.8i
86
+ * math.floor(c, 1) // returns Complex 3.2 -2.8i
87
87
  *
88
88
  * math.floor([3.2, 3.8, -4.7]) // returns Array [3, 3, -5]
89
89
  * math.floor([3.21, 3.82, -4.71], 1) // returns Array [3.2, 3.8, -4.8]
@@ -136,32 +136,32 @@ export var createFloor = /* #__PURE__ */factory(name, dependencies, _ref2 => {
136
136
  'Fraction, BigNumber': function FractionBigNumber(x, n) {
137
137
  return x.floor(n.toNumber());
138
138
  },
139
- 'Array | Matrix': function ArrayMatrix(x) {
139
+ 'Array | Matrix': typed.referToSelf(self => x => {
140
140
  // deep map collection, skip zeros since floor(0) = 0
141
- return deepMap(x, this, true);
142
- },
143
- 'Array, number | BigNumber': function ArrayNumberBigNumber(x, n) {
141
+ return deepMap(x, self, true);
142
+ }),
143
+ 'Array, number | BigNumber': typed.referToSelf(self => (x, n) => {
144
144
  // deep map collection, skip zeros since ceil(0) = 0
145
- return deepMap(x, i => this(i, n), true);
146
- },
147
- 'SparseMatrix, number | BigNumber': function SparseMatrixNumberBigNumber(x, y) {
148
- return algorithm11(x, y, this, false);
149
- },
150
- 'DenseMatrix, number | BigNumber': function DenseMatrixNumberBigNumber(x, y) {
151
- return algorithm14(x, y, this, false);
152
- },
153
- 'number | Complex | Fraction | BigNumber, Array': function numberComplexFractionBigNumberArray(x, y) {
145
+ return deepMap(x, i => self(i, n), true);
146
+ }),
147
+ 'SparseMatrix, number | BigNumber': typed.referToSelf(self => (x, y) => {
148
+ return matAlgo11xS0s(x, y, self, false);
149
+ }),
150
+ 'DenseMatrix, number | BigNumber': typed.referToSelf(self => (x, y) => {
151
+ return matAlgo14xDs(x, y, self, false);
152
+ }),
153
+ 'number | Complex | Fraction | BigNumber, Array': typed.referToSelf(self => (x, y) => {
154
154
  // use matrix implementation
155
- return algorithm14(matrix(y), x, this, true).valueOf();
156
- },
157
- 'number | Complex | Fraction | BigNumber, Matrix': function numberComplexFractionBigNumberMatrix(x, y) {
155
+ return matAlgo14xDs(matrix(y), x, self, true).valueOf();
156
+ }),
157
+ 'number | Complex | Fraction | BigNumber, Matrix': typed.referToSelf(self => (x, y) => {
158
158
  if (equalScalar(x, 0)) return zeros(y.size(), y.storage());
159
159
 
160
160
  if (y.storage() === 'dense') {
161
- return algorithm14(y, x, this, true);
161
+ return matAlgo14xDs(y, x, self, true);
162
162
  }
163
163
 
164
- return algorithm12(y, x, this, true);
165
- }
164
+ return matAlgo12xSfs(y, x, self, true);
165
+ })
166
166
  });
167
167
  });
@@ -1,9 +1,8 @@
1
1
  import { factory } from '../../utils/factory.js';
2
- import { createAlgorithm01 } from '../../type/matrix/utils/algorithm01.js';
3
- import { createAlgorithm04 } from '../../type/matrix/utils/algorithm04.js';
4
- import { createAlgorithm10 } from '../../type/matrix/utils/algorithm10.js';
5
- import { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';
6
- import { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';
2
+ import { createMatAlgo01xDSid } from '../../type/matrix/utils/matAlgo01xDSid.js';
3
+ import { createMatAlgo04xSidSid } from '../../type/matrix/utils/matAlgo04xSidSid.js';
4
+ import { createMatAlgo10xSids } from '../../type/matrix/utils/matAlgo10xSids.js';
5
+ import { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';
7
6
  import { gcdNumber } from '../../plain/number/index.js';
8
7
  var name = 'gcd';
9
8
  var dependencies = ['typed', 'matrix', 'equalScalar', 'BigNumber', 'DenseMatrix'];
@@ -15,22 +14,31 @@ export var createGcd = /* #__PURE__ */factory(name, dependencies, _ref => {
15
14
  BigNumber,
16
15
  DenseMatrix
17
16
  } = _ref;
18
- var algorithm01 = createAlgorithm01({
17
+ var matAlgo01xDSid = createMatAlgo01xDSid({
19
18
  typed
20
19
  });
21
- var algorithm04 = createAlgorithm04({
20
+ var matAlgo04xSidSid = createMatAlgo04xSidSid({
22
21
  typed,
23
22
  equalScalar
24
23
  });
25
- var algorithm10 = createAlgorithm10({
24
+ var matAlgo10xSids = createMatAlgo10xSids({
26
25
  typed,
27
26
  DenseMatrix
28
27
  });
29
- var algorithm13 = createAlgorithm13({
30
- typed
28
+ var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
29
+ typed,
30
+ matrix
31
31
  });
32
- var algorithm14 = createAlgorithm14({
33
- typed
32
+ var gcdTypes = 'number | BigNumber | Fraction | Matrix | Array';
33
+ var gcdManySignature = {};
34
+ gcdManySignature["".concat(gcdTypes, ", ").concat(gcdTypes, ", ...").concat(gcdTypes)] = typed.referToSelf(self => (a, b, args) => {
35
+ var res = self(a, b);
36
+
37
+ for (var i = 0; i < args.length; i++) {
38
+ res = self(res, args[i]);
39
+ }
40
+
41
+ return res;
34
42
  });
35
43
  /**
36
44
  * Calculate the greatest common divisor for two or more values or arrays.
@@ -61,64 +69,12 @@ export var createGcd = /* #__PURE__ */factory(name, dependencies, _ref => {
61
69
  return typed(name, {
62
70
  'number, number': gcdNumber,
63
71
  'BigNumber, BigNumber': _gcdBigNumber,
64
- 'Fraction, Fraction': function FractionFraction(x, y) {
65
- return x.gcd(y);
66
- },
67
- 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {
68
- return algorithm04(x, y, this);
69
- },
70
- 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {
71
- return algorithm01(y, x, this, true);
72
- },
73
- 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {
74
- return algorithm01(x, y, this, false);
75
- },
76
- 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {
77
- return algorithm13(x, y, this);
78
- },
79
- 'Array, Array': function ArrayArray(x, y) {
80
- // use matrix implementation
81
- return this(matrix(x), matrix(y)).valueOf();
82
- },
83
- 'Array, Matrix': function ArrayMatrix(x, y) {
84
- // use matrix implementation
85
- return this(matrix(x), y);
86
- },
87
- 'Matrix, Array': function MatrixArray(x, y) {
88
- // use matrix implementation
89
- return this(x, matrix(y));
90
- },
91
- 'SparseMatrix, number | BigNumber': function SparseMatrixNumberBigNumber(x, y) {
92
- return algorithm10(x, y, this, false);
93
- },
94
- 'DenseMatrix, number | BigNumber': function DenseMatrixNumberBigNumber(x, y) {
95
- return algorithm14(x, y, this, false);
96
- },
97
- 'number | BigNumber, SparseMatrix': function numberBigNumberSparseMatrix(x, y) {
98
- return algorithm10(y, x, this, true);
99
- },
100
- 'number | BigNumber, DenseMatrix': function numberBigNumberDenseMatrix(x, y) {
101
- return algorithm14(y, x, this, true);
102
- },
103
- 'Array, number | BigNumber': function ArrayNumberBigNumber(x, y) {
104
- // use matrix implementation
105
- return algorithm14(matrix(x), y, this, false).valueOf();
106
- },
107
- 'number | BigNumber, Array': function numberBigNumberArray(x, y) {
108
- // use matrix implementation
109
- return algorithm14(matrix(y), x, this, true).valueOf();
110
- },
111
- // TODO: need a smarter notation here
112
- 'Array | Matrix | number | BigNumber, Array | Matrix | number | BigNumber, ...Array | Matrix | number | BigNumber': function ArrayMatrixNumberBigNumberArrayMatrixNumberBigNumberArrayMatrixNumberBigNumber(a, b, args) {
113
- var res = this(a, b);
114
-
115
- for (var i = 0; i < args.length; i++) {
116
- res = this(res, args[i]);
117
- }
118
-
119
- return res;
120
- }
121
- });
72
+ 'Fraction, Fraction': (x, y) => x.gcd(y)
73
+ }, matrixAlgorithmSuite({
74
+ SS: matAlgo04xSidSid,
75
+ DS: matAlgo01xDSid,
76
+ Ss: matAlgo10xSids
77
+ }), gcdManySignature);
122
78
  /**
123
79
  * Calculate gcd for BigNumbers
124
80
  * @param {BigNumber} a
@@ -1,5 +1,6 @@
1
1
  import { factory } from '../../utils/factory.js';
2
2
  import { flatten } from '../../utils/array.js';
3
+ import { isComplex } from '../../utils/is.js';
3
4
  var name = 'hypot';
4
5
  var dependencies = ['typed', 'abs', 'addScalar', 'divideScalar', 'multiplyScalar', 'sqrt', 'smaller', 'isPositive'];
5
6
  export var createHypot = /* #__PURE__ */factory(name, dependencies, _ref => {
@@ -44,12 +45,8 @@ export var createHypot = /* #__PURE__ */factory(name, dependencies, _ref => {
44
45
  */
45
46
  return typed(name, {
46
47
  '... number | BigNumber': _hypot,
47
- Array: function Array(x) {
48
- return this.apply(this, flatten(x));
49
- },
50
- Matrix: function Matrix(x) {
51
- return this.apply(this, flatten(x.toArray()));
52
- }
48
+ Array: _hypot,
49
+ Matrix: M => _hypot(flatten(M.toArray()))
53
50
  });
54
51
  /**
55
52
  * Calculate the hypotenusa for an Array with values
@@ -65,6 +62,10 @@ export var createHypot = /* #__PURE__ */factory(name, dependencies, _ref => {
65
62
  var largest = 0;
66
63
 
67
64
  for (var i = 0; i < args.length; i++) {
65
+ if (isComplex(args[i])) {
66
+ throw new TypeError('Unexpected type of argument to hypot');
67
+ }
68
+
68
69
  var value = abs(args[i]);
69
70
 
70
71
  if (smaller(largest, value)) {
@@ -25,7 +25,7 @@ export var createInvmod = /* #__PURE__ */factory(name, dependencies, _ref => {
25
25
  * Examples:
26
26
  *
27
27
  * math.invmod(8, 12) // returns NaN
28
- * math.invmod(7, 13) // return 2
28
+ * math.invmod(7, 13) // returns 2
29
29
  * math.invmod(15151, 15122) // returns 10429
30
30
  *
31
31
  * See also:
@@ -1,9 +1,8 @@
1
1
  import { factory } from '../../utils/factory.js';
2
- import { createAlgorithm02 } from '../../type/matrix/utils/algorithm02.js';
3
- import { createAlgorithm06 } from '../../type/matrix/utils/algorithm06.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 { createMatAlgo06xS0S0 } from '../../type/matrix/utils/matAlgo06xS0S0.js';
4
+ import { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';
5
+ import { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';
7
6
  import { lcmNumber } from '../../plain/number/index.js';
8
7
  var name = 'lcm';
9
8
  var dependencies = ['typed', 'matrix', 'equalScalar'];
@@ -13,23 +12,32 @@ export var createLcm = /* #__PURE__ */factory(name, dependencies, _ref => {
13
12
  matrix,
14
13
  equalScalar
15
14
  } = _ref;
16
- var algorithm02 = createAlgorithm02({
15
+ var matAlgo02xDS0 = createMatAlgo02xDS0({
17
16
  typed,
18
17
  equalScalar
19
18
  });
20
- var algorithm06 = createAlgorithm06({
19
+ var matAlgo06xS0S0 = createMatAlgo06xS0S0({
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
27
+ var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
28
+ typed,
29
+ matrix
30
30
  });
31
- var algorithm14 = createAlgorithm14({
32
- typed
31
+ var lcmTypes = 'number | BigNumber | Fraction | Matrix | Array';
32
+ var lcmManySignature = {};
33
+ lcmManySignature["".concat(lcmTypes, ", ").concat(lcmTypes, ", ...").concat(lcmTypes)] = typed.referToSelf(self => (a, b, args) => {
34
+ var res = self(a, b);
35
+
36
+ for (var i = 0; i < args.length; i++) {
37
+ res = self(res, args[i]);
38
+ }
39
+
40
+ return res;
33
41
  });
34
42
  /**
35
43
  * Calculate the least common multiple for two or more values or arrays.
@@ -64,64 +72,12 @@ export var createLcm = /* #__PURE__ */factory(name, dependencies, _ref => {
64
72
  return typed(name, {
65
73
  'number, number': lcmNumber,
66
74
  'BigNumber, BigNumber': _lcmBigNumber,
67
- 'Fraction, Fraction': function FractionFraction(x, y) {
68
- return x.lcm(y);
69
- },
70
- 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {
71
- return algorithm06(x, y, this);
72
- },
73
- 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {
74
- return algorithm02(y, x, this, true);
75
- },
76
- 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {
77
- return algorithm02(x, y, this, false);
78
- },
79
- 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {
80
- return algorithm13(x, y, this);
81
- },
82
- 'Array, Array': function ArrayArray(x, y) {
83
- // use matrix implementation
84
- return this(matrix(x), matrix(y)).valueOf();
85
- },
86
- 'Array, Matrix': function ArrayMatrix(x, y) {
87
- // use matrix implementation
88
- return this(matrix(x), y);
89
- },
90
- 'Matrix, Array': function MatrixArray(x, y) {
91
- // use matrix implementation
92
- return this(x, matrix(y));
93
- },
94
- 'SparseMatrix, number | BigNumber': function SparseMatrixNumberBigNumber(x, y) {
95
- return algorithm11(x, y, this, false);
96
- },
97
- 'DenseMatrix, number | BigNumber': function DenseMatrixNumberBigNumber(x, y) {
98
- return algorithm14(x, y, this, false);
99
- },
100
- 'number | BigNumber, SparseMatrix': function numberBigNumberSparseMatrix(x, y) {
101
- return algorithm11(y, x, this, true);
102
- },
103
- 'number | BigNumber, DenseMatrix': function numberBigNumberDenseMatrix(x, y) {
104
- return algorithm14(y, x, this, true);
105
- },
106
- 'Array, number | BigNumber': function ArrayNumberBigNumber(x, y) {
107
- // use matrix implementation
108
- return algorithm14(matrix(x), y, this, false).valueOf();
109
- },
110
- 'number | BigNumber, Array': function numberBigNumberArray(x, y) {
111
- // use matrix implementation
112
- return algorithm14(matrix(y), x, this, true).valueOf();
113
- },
114
- // TODO: need a smarter notation here
115
- 'Array | Matrix | number | BigNumber, Array | Matrix | number | BigNumber, ...Array | Matrix | number | BigNumber': function ArrayMatrixNumberBigNumberArrayMatrixNumberBigNumberArrayMatrixNumberBigNumber(a, b, args) {
116
- var res = this(a, b);
117
-
118
- for (var i = 0; i < args.length; i++) {
119
- res = this(res, args[i]);
120
- }
121
-
122
- return res;
123
- }
124
- });
75
+ 'Fraction, Fraction': (x, y) => x.lcm(y)
76
+ }, matrixAlgorithmSuite({
77
+ SS: matAlgo06xS0S0,
78
+ DS: matAlgo02xDS0,
79
+ Ss: matAlgo11xS0s
80
+ }), lcmManySignature);
125
81
  /**
126
82
  * Calculate lcm for two BigNumbers
127
83
  * @param {BigNumber} a
@@ -1,5 +1,4 @@
1
1
  import { factory } from '../../utils/factory.js';
2
- import { deepMap } from '../../utils/collection.js';
3
2
  import { logNumber } from '../../plain/number/index.js';
4
3
  var name = 'log';
5
4
  var dependencies = ['config', 'typed', 'divideScalar', 'Complex'];
@@ -14,7 +13,8 @@ export var createLog = /* #__PURE__ */factory(name, dependencies, _ref => {
14
13
  /**
15
14
  * Calculate the logarithm of a value.
16
15
  *
17
- * For matrices, the function is evaluated element wise.
16
+ * To avoid confusion with the matrix logarithm, this function does not
17
+ * apply to matrices.
18
18
  *
19
19
  * Syntax:
20
20
  *
@@ -37,12 +37,12 @@ export var createLog = /* #__PURE__ */factory(name, dependencies, _ref => {
37
37
  *
38
38
  * exp, log2, log10, log1p
39
39
  *
40
- * @param {number | BigNumber | Complex | Array | Matrix} x
40
+ * @param {number | BigNumber | Complex} x
41
41
  * Value for which to calculate the logarithm.
42
42
  * @param {number | BigNumber | Complex} [base=e]
43
43
  * Optional base for the logarithm. If not provided, the natural
44
44
  * logarithm of `x` is calculated.
45
- * @return {number | BigNumber | Complex | Array | Matrix}
45
+ * @return {number | BigNumber | Complex}
46
46
  * Returns the logarithm of `x`
47
47
  */
48
48
  return typed(name, {
@@ -65,12 +65,9 @@ export var createLog = /* #__PURE__ */factory(name, dependencies, _ref => {
65
65
  return new Complex(x.toNumber(), 0).log();
66
66
  }
67
67
  },
68
- 'Array | Matrix': function ArrayMatrix(x) {
69
- return deepMap(x, this);
70
- },
71
- 'any, any': function anyAny(x, base) {
68
+ 'any, any': typed.referToSelf(self => (x, base) => {
72
69
  // calculate logarithm for a specified base, log(x, base)
73
- return divideScalar(this(x), this(base));
74
- }
70
+ return divideScalar(self(x), self(base));
71
+ })
75
72
  });
76
73
  });
@@ -55,8 +55,6 @@ export var createLog10 = /* #__PURE__ */factory(name, dependencies, _ref => {
55
55
  return new _Complex(x.toNumber(), 0).log().div(Math.LN10);
56
56
  }
57
57
  },
58
- 'Array | Matrix': function ArrayMatrix(x) {
59
- return deepMap(x, this);
60
- }
58
+ 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))
61
59
  });
62
60
  });
@@ -63,13 +63,11 @@ export var createLog1p = /* #__PURE__ */factory(name, dependencies, _ref => {
63
63
  return _log1pComplex(new Complex(x.toNumber(), 0));
64
64
  }
65
65
  },
66
- 'Array | Matrix': function ArrayMatrix(x) {
67
- return deepMap(x, this);
68
- },
69
- 'any, any': function anyAny(x, base) {
66
+ 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self)),
67
+ 'any, any': typed.referToSelf(self => (x, base) => {
70
68
  // calculate logarithm for a specified base, log1p(x, base)
71
- return divideScalar(this(x), log(base));
72
- }
69
+ return divideScalar(self(x), log(base));
70
+ })
73
71
  });
74
72
  /**
75
73
  * Calculate the natural logarithm of a complex number + 1
@@ -53,9 +53,7 @@ export var createLog2 = /* #__PURE__ */factory(name, dependencies, _ref => {
53
53
  return _log2Complex(new Complex(x.toNumber(), 0));
54
54
  }
55
55
  },
56
- 'Array | Matrix': function ArrayMatrix(x) {
57
- return deepMap(x, this);
58
- }
56
+ 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))
59
57
  });
60
58
  /**
61
59
  * Calculate log2 for a complex value