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
@@ -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({
@@ -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({
@@ -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)) {
@@ -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
@@ -1,12 +1,11 @@
1
1
  import { factory } from '../../utils/factory.js';
2
- import { createAlgorithm02 } from '../../type/matrix/utils/algorithm02.js';
3
- import { createAlgorithm03 } from '../../type/matrix/utils/algorithm03.js';
4
- import { createAlgorithm05 } from '../../type/matrix/utils/algorithm05.js';
5
- import { createAlgorithm11 } from '../../type/matrix/utils/algorithm11.js';
6
- import { createAlgorithm12 } from '../../type/matrix/utils/algorithm12.js';
7
- import { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';
8
- import { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';
2
+ import { createMatAlgo02xDS0 } from '../../type/matrix/utils/matAlgo02xDS0.js';
3
+ import { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';
4
+ import { createMatAlgo05xSfSf } from '../../type/matrix/utils/matAlgo05xSfSf.js';
5
+ import { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';
6
+ import { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';
9
7
  import { modNumber } from '../../plain/number/index.js';
8
+ import { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';
10
9
  var name = 'mod';
11
10
  var dependencies = ['typed', 'matrix', 'equalScalar', 'DenseMatrix'];
12
11
  export var createMod = /* #__PURE__ */factory(name, dependencies, _ref => {
@@ -16,30 +15,28 @@ export var createMod = /* #__PURE__ */factory(name, dependencies, _ref => {
16
15
  equalScalar,
17
16
  DenseMatrix
18
17
  } = _ref;
19
- var algorithm02 = createAlgorithm02({
18
+ var matAlgo02xDS0 = createMatAlgo02xDS0({
20
19
  typed,
21
20
  equalScalar
22
21
  });
23
- var algorithm03 = createAlgorithm03({
22
+ var matAlgo03xDSf = createMatAlgo03xDSf({
24
23
  typed
25
24
  });
26
- var algorithm05 = createAlgorithm05({
25
+ var matAlgo05xSfSf = createMatAlgo05xSfSf({
27
26
  typed,
28
27
  equalScalar
29
28
  });
30
- var algorithm11 = createAlgorithm11({
29
+ var matAlgo11xS0s = createMatAlgo11xS0s({
31
30
  typed,
32
31
  equalScalar
33
32
  });
34
- var algorithm12 = createAlgorithm12({
33
+ var matAlgo12xSfs = createMatAlgo12xSfs({
35
34
  typed,
36
35
  DenseMatrix
37
36
  });
38
- var algorithm13 = createAlgorithm13({
39
- typed
40
- });
41
- var algorithm14 = createAlgorithm14({
42
- typed
37
+ var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
38
+ typed,
39
+ matrix
43
40
  });
44
41
  /**
45
42
  * Calculates the modulus, the remainder of an integer division.
@@ -93,50 +90,12 @@ export var createMod = /* #__PURE__ */factory(name, dependencies, _ref => {
93
90
 
94
91
 
95
92
  return x.compare(0) >= 0 ? x.mod(y) : x.mod(y).add(y).mod(y);
96
- },
97
- 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {
98
- return algorithm05(x, y, this, false);
99
- },
100
- 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {
101
- return algorithm02(y, x, this, true);
102
- },
103
- 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {
104
- return algorithm03(x, y, this, false);
105
- },
106
- 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {
107
- return algorithm13(x, y, this);
108
- },
109
- 'Array, Array': function ArrayArray(x, y) {
110
- // use matrix implementation
111
- return this(matrix(x), matrix(y)).valueOf();
112
- },
113
- 'Array, Matrix': function ArrayMatrix(x, y) {
114
- // use matrix implementation
115
- return this(matrix(x), y);
116
- },
117
- 'Matrix, Array': function MatrixArray(x, y) {
118
- // use matrix implementation
119
- return this(x, matrix(y));
120
- },
121
- 'SparseMatrix, any': function SparseMatrixAny(x, y) {
122
- return algorithm11(x, y, this, false);
123
- },
124
- 'DenseMatrix, any': function DenseMatrixAny(x, y) {
125
- return algorithm14(x, y, this, false);
126
- },
127
- 'any, SparseMatrix': function anySparseMatrix(x, y) {
128
- return algorithm12(y, x, this, true);
129
- },
130
- 'any, DenseMatrix': function anyDenseMatrix(x, y) {
131
- return algorithm14(y, x, this, true);
132
- },
133
- 'Array, any': function ArrayAny(x, y) {
134
- // use matrix implementation
135
- return algorithm14(matrix(x), y, this, false).valueOf();
136
- },
137
- 'any, Array': function anyArray(x, y) {
138
- // use matrix implementation
139
- return algorithm14(matrix(y), x, this, true).valueOf();
140
93
  }
141
- });
94
+ }, matrixAlgorithmSuite({
95
+ SS: matAlgo05xSfSf,
96
+ DS: matAlgo03xDSf,
97
+ SD: matAlgo02xDS0,
98
+ Ss: matAlgo11xS0s,
99
+ sS: matAlgo12xSfs
100
+ }));
142
101
  });