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
@@ -9,13 +9,11 @@ var _factory = require("../../utils/factory.js");
9
9
 
10
10
  var _is = require("../../utils/is.js");
11
11
 
12
- var _object = require("../../utils/object.js");
13
-
14
12
  var _array = require("../../utils/array.js");
15
13
 
16
- var _algorithm = require("../../type/matrix/utils/algorithm11.js");
14
+ var _matAlgo11xS0s = require("../../type/matrix/utils/matAlgo11xS0s.js");
17
15
 
18
- var _algorithm2 = require("../../type/matrix/utils/algorithm14.js");
16
+ var _matAlgo14xDs = require("../../type/matrix/utils/matAlgo14xDs.js");
19
17
 
20
18
  var name = 'multiply';
21
19
  var dependencies = ['typed', 'matrix', 'addScalar', 'multiplyScalar', 'equalScalar', 'dot'];
@@ -26,11 +24,11 @@ var createMultiply = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
26
24
  multiplyScalar = _ref.multiplyScalar,
27
25
  equalScalar = _ref.equalScalar,
28
26
  dot = _ref.dot;
29
- var algorithm11 = (0, _algorithm.createAlgorithm11)({
27
+ var matAlgo11xS0s = (0, _matAlgo11xS0s.createMatAlgo11xS0s)({
30
28
  typed: typed,
31
29
  equalScalar: equalScalar
32
30
  });
33
- var algorithm14 = (0, _algorithm2.createAlgorithm14)({
31
+ var matAlgo14xDs = (0, _matAlgo14xDs.createMatAlgo14xDs)({
34
32
  typed: typed
35
33
  });
36
34
 
@@ -830,17 +828,19 @@ var createMultiply = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
830
828
  */
831
829
 
832
830
 
833
- return typed(name, (0, _object.extend)({
831
+ return typed(name, multiplyScalar, {
834
832
  // we extend the signatures of multiplyScalar with signatures dealing with matrices
835
- 'Array, Array': function ArrayArray(x, y) {
836
- // check dimensions
837
- _validateMatrixDimensions((0, _array.arraySize)(x), (0, _array.arraySize)(y)); // use dense matrix implementation
833
+ 'Array, Array': typed.referTo('Matrix, Matrix', function (selfMM) {
834
+ return function (x, y) {
835
+ // check dimensions
836
+ _validateMatrixDimensions((0, _array.arraySize)(x), (0, _array.arraySize)(y)); // use dense matrix implementation
838
837
 
839
838
 
840
- var m = this(matrix(x), matrix(y)); // return array or scalar
839
+ var m = selfMM(matrix(x), matrix(y)); // return array or scalar
841
840
 
842
- return (0, _is.isMatrix)(m) ? m.valueOf() : m;
843
- },
841
+ return (0, _is.isMatrix)(m) ? m.valueOf() : m;
842
+ };
843
+ }),
844
844
  'Matrix, Matrix': function MatrixMatrix(x, y) {
845
845
  // dimensions
846
846
  var xsize = x.size();
@@ -869,44 +869,49 @@ var createMultiply = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
869
869
 
870
870
  return _multiplyMatrixMatrix(x, y);
871
871
  },
872
- 'Matrix, Array': function MatrixArray(x, y) {
873
- // use Matrix * Matrix implementation
874
- return this(x, matrix(y));
875
- },
876
- 'Array, Matrix': function ArrayMatrix(x, y) {
877
- // use Matrix * Matrix implementation
878
- return this(matrix(x, y.storage()), y);
879
- },
872
+ 'Matrix, Array': typed.referTo('Matrix,Matrix', function (selfMM) {
873
+ return function (x, y) {
874
+ return selfMM(x, matrix(y));
875
+ };
876
+ }),
877
+ 'Array, Matrix': typed.referToSelf(function (self) {
878
+ return function (x, y) {
879
+ // use Matrix * Matrix implementation
880
+ return self(matrix(x, y.storage()), y);
881
+ };
882
+ }),
880
883
  'SparseMatrix, any': function SparseMatrixAny(x, y) {
881
- return algorithm11(x, y, multiplyScalar, false);
884
+ return matAlgo11xS0s(x, y, multiplyScalar, false);
882
885
  },
883
886
  'DenseMatrix, any': function DenseMatrixAny(x, y) {
884
- return algorithm14(x, y, multiplyScalar, false);
887
+ return matAlgo14xDs(x, y, multiplyScalar, false);
885
888
  },
886
889
  'any, SparseMatrix': function anySparseMatrix(x, y) {
887
- return algorithm11(y, x, multiplyScalar, true);
890
+ return matAlgo11xS0s(y, x, multiplyScalar, true);
888
891
  },
889
892
  'any, DenseMatrix': function anyDenseMatrix(x, y) {
890
- return algorithm14(y, x, multiplyScalar, true);
893
+ return matAlgo14xDs(y, x, multiplyScalar, true);
891
894
  },
892
895
  'Array, any': function ArrayAny(x, y) {
893
896
  // use matrix implementation
894
- return algorithm14(matrix(x), y, multiplyScalar, false).valueOf();
897
+ return matAlgo14xDs(matrix(x), y, multiplyScalar, false).valueOf();
895
898
  },
896
899
  'any, Array': function anyArray(x, y) {
897
900
  // use matrix implementation
898
- return algorithm14(matrix(y), x, multiplyScalar, true).valueOf();
901
+ return matAlgo14xDs(matrix(y), x, multiplyScalar, true).valueOf();
899
902
  },
900
903
  'any, any': multiplyScalar,
901
- 'any, any, ...any': function anyAnyAny(x, y, rest) {
902
- var result = this(x, y);
904
+ 'any, any, ...any': typed.referToSelf(function (self) {
905
+ return function (x, y, rest) {
906
+ var result = self(x, y);
903
907
 
904
- for (var i = 0; i < rest.length; i++) {
905
- result = this(result, rest[i]);
906
- }
908
+ for (var i = 0; i < rest.length; i++) {
909
+ result = self(result, rest[i]);
910
+ }
907
911
 
908
- return result;
909
- }
910
- }, multiplyScalar.signatures));
912
+ return result;
913
+ };
914
+ })
915
+ });
911
916
  });
912
917
  exports.createMultiply = createMultiply;
@@ -38,16 +38,9 @@ var createMultiplyScalar = /* #__PURE__ */(0, _factory.factory)(name, dependenci
38
38
  return x.mul(y);
39
39
  },
40
40
  'number | Fraction | BigNumber | Complex, Unit': function numberFractionBigNumberComplexUnit(x, y) {
41
- var res = y.clone();
42
- res.value = res.value === null ? res._normalize(x) : this(res.value, x);
43
- return res;
41
+ return y.multiply(x);
44
42
  },
45
- 'Unit, number | Fraction | BigNumber | Complex': function UnitNumberFractionBigNumberComplex(x, y) {
46
- var res = x.clone();
47
- res.value = res.value === null ? res._normalize(y) : this(res.value, y);
48
- return res;
49
- },
50
- 'Unit, Unit': function UnitUnit(x, y) {
43
+ 'Unit, number | Fraction | BigNumber | Complex | Unit': function UnitNumberFractionBigNumberComplexUnit(x, y) {
51
44
  return x.multiply(y);
52
45
  }
53
46
  });
@@ -71,7 +71,7 @@ var createNorm = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
71
71
  // norm(x) = abs(x)
72
72
  return x.abs();
73
73
  },
74
- boolean: function boolean(x) {
74
+ "boolean": function boolean(x) {
75
75
  // norm(x) = abs(x)
76
76
  return Math.abs(x);
77
77
  },
@@ -81,10 +81,6 @@ var createNorm = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
81
81
  Matrix: function Matrix(x) {
82
82
  return _norm(x, 2);
83
83
  },
84
- 'number | Complex | BigNumber | boolean, number | BigNumber | string': function numberComplexBigNumberBooleanNumberBigNumberString(x) {
85
- // ignore second parameter, TODO: remove the option of second parameter for these types
86
- return this(x);
87
- },
88
84
  'Array, number | BigNumber | string': function ArrayNumberBigNumberString(x, p) {
89
85
  return _norm(matrix(x), p);
90
86
  },
@@ -7,17 +7,15 @@ exports.createNthRootNumber = exports.createNthRoot = void 0;
7
7
 
8
8
  var _factory = require("../../utils/factory.js");
9
9
 
10
- var _algorithm = require("../../type/matrix/utils/algorithm01.js");
10
+ var _matAlgo01xDSid = require("../../type/matrix/utils/matAlgo01xDSid.js");
11
11
 
12
- var _algorithm2 = require("../../type/matrix/utils/algorithm02.js");
12
+ var _matAlgo02xDS = require("../../type/matrix/utils/matAlgo02xDS0.js");
13
13
 
14
- var _algorithm3 = require("../../type/matrix/utils/algorithm06.js");
14
+ var _matAlgo06xS0S = require("../../type/matrix/utils/matAlgo06xS0S0.js");
15
15
 
16
- var _algorithm4 = require("../../type/matrix/utils/algorithm11.js");
16
+ var _matAlgo11xS0s = require("../../type/matrix/utils/matAlgo11xS0s.js");
17
17
 
18
- var _algorithm5 = require("../../type/matrix/utils/algorithm13.js");
19
-
20
- var _algorithm6 = require("../../type/matrix/utils/algorithm14.js");
18
+ var _matrixAlgorithmSuite = require("../../type/matrix/utils/matrixAlgorithmSuite.js");
21
19
 
22
20
  var _index = require("../../plain/number/index.js");
23
21
 
@@ -28,26 +26,24 @@ var createNthRoot = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
28
26
  matrix = _ref.matrix,
29
27
  equalScalar = _ref.equalScalar,
30
28
  _BigNumber = _ref.BigNumber;
31
- var algorithm01 = (0, _algorithm.createAlgorithm01)({
29
+ var matAlgo01xDSid = (0, _matAlgo01xDSid.createMatAlgo01xDSid)({
32
30
  typed: typed
33
31
  });
34
- var algorithm02 = (0, _algorithm2.createAlgorithm02)({
32
+ var matAlgo02xDS0 = (0, _matAlgo02xDS.createMatAlgo02xDS0)({
35
33
  typed: typed,
36
34
  equalScalar: equalScalar
37
35
  });
38
- var algorithm06 = (0, _algorithm3.createAlgorithm06)({
36
+ var matAlgo06xS0S0 = (0, _matAlgo06xS0S.createMatAlgo06xS0S0)({
39
37
  typed: typed,
40
38
  equalScalar: equalScalar
41
39
  });
42
- var algorithm11 = (0, _algorithm4.createAlgorithm11)({
40
+ var matAlgo11xS0s = (0, _matAlgo11xS0s.createMatAlgo11xS0s)({
43
41
  typed: typed,
44
42
  equalScalar: equalScalar
45
43
  });
46
- var algorithm13 = (0, _algorithm5.createAlgorithm13)({
47
- typed: typed
48
- });
49
- var algorithm14 = (0, _algorithm6.createAlgorithm14)({
50
- typed: typed
44
+ var matrixAlgorithmSuite = (0, _matrixAlgorithmSuite.createMatrixAlgorithmSuite)({
45
+ typed: typed,
46
+ matrix: matrix
51
47
  });
52
48
  /**
53
49
  * Calculate the nth root of a value.
@@ -79,89 +75,81 @@ var createNthRoot = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
79
75
  * @return {number | Complex | Array | Matrix} Returns the nth root of `a`
80
76
  */
81
77
 
82
- var complexErr = '' + 'Complex number not supported in function nthRoot. ' + 'Use nthRoots instead.';
78
+ function complexErr() {
79
+ throw new Error('Complex number not supported in function nthRoot. Use nthRoots instead.');
80
+ }
81
+
83
82
  return typed(name, {
84
83
  number: _index.nthRootNumber,
85
84
  'number, number': _index.nthRootNumber,
86
85
  BigNumber: function BigNumber(x) {
87
86
  return _bigNthRoot(x, new _BigNumber(2));
88
87
  },
89
- Complex: function Complex(x) {
90
- throw new Error(complexErr);
91
- },
92
- 'Complex, number': function ComplexNumber(x, y) {
93
- throw new Error(complexErr);
94
- },
95
88
  'BigNumber, BigNumber': _bigNthRoot,
96
- 'Array | Matrix': function ArrayMatrix(x) {
97
- return this(x, 2);
98
- },
99
- 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {
100
- // density must be one (no zeros in matrix)
101
- if (y.density() === 1) {
102
- // sparse + sparse
103
- return algorithm06(x, y, this);
104
- } else {
105
- // throw exception
106
- throw new Error('Root must be non-zero');
107
- }
108
- },
109
- 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {
110
- return algorithm02(y, x, this, true);
111
- },
112
- 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {
113
- // density must be one (no zeros in matrix)
114
- if (y.density() === 1) {
115
- // dense + sparse
116
- return algorithm01(x, y, this, false);
117
- } else {
118
- // throw exception
119
- throw new Error('Root must be non-zero');
120
- }
121
- },
122
- 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {
123
- return algorithm13(x, y, this);
124
- },
125
- 'Array, Array': function ArrayArray(x, y) {
126
- // use matrix implementation
127
- return this(matrix(x), matrix(y)).valueOf();
128
- },
129
- 'Array, Matrix': function ArrayMatrix(x, y) {
130
- // use matrix implementation
131
- return this(matrix(x), y);
132
- },
133
- 'Matrix, Array': function MatrixArray(x, y) {
134
- // use matrix implementation
135
- return this(x, matrix(y));
136
- },
137
- 'SparseMatrix, number | BigNumber': function SparseMatrixNumberBigNumber(x, y) {
138
- return algorithm11(x, y, this, false);
139
- },
140
- 'DenseMatrix, number | BigNumber': function DenseMatrixNumberBigNumber(x, y) {
141
- return algorithm14(x, y, this, false);
142
- },
143
- 'number | BigNumber, SparseMatrix': function numberBigNumberSparseMatrix(x, y) {
144
- // density must be one (no zeros in matrix)
145
- if (y.density() === 1) {
146
- // sparse - scalar
147
- return algorithm11(y, x, this, true);
148
- } else {
149
- // throw exception
150
- throw new Error('Root must be non-zero');
151
- }
152
- },
153
- 'number | BigNumber, DenseMatrix': function numberBigNumberDenseMatrix(x, y) {
154
- return algorithm14(y, x, this, true);
155
- },
156
- 'Array, number | BigNumber': function ArrayNumberBigNumber(x, y) {
157
- // use matrix implementation
158
- return this(matrix(x), y).valueOf();
159
- },
160
- 'number | BigNumber, Array': function numberBigNumberArray(x, y) {
161
- // use matrix implementation
162
- return this(x, matrix(y)).valueOf();
163
- }
164
- });
89
+ Complex: complexErr,
90
+ 'Complex, number': complexErr,
91
+ Array: typed.referTo('DenseMatrix,number', function (selfDn) {
92
+ return function (x) {
93
+ return selfDn(matrix(x), 2).valueOf();
94
+ };
95
+ }),
96
+ DenseMatrix: typed.referTo('DenseMatrix,number', function (selfDn) {
97
+ return function (x) {
98
+ return selfDn(x, 2);
99
+ };
100
+ }),
101
+ SparseMatrix: typed.referTo('SparseMatrix,number', function (selfSn) {
102
+ return function (x) {
103
+ return selfSn(x, 2);
104
+ };
105
+ }),
106
+ 'SparseMatrix, SparseMatrix': typed.referToSelf(function (self) {
107
+ return function (x, y) {
108
+ // density must be one (no zeros in matrix)
109
+ if (y.density() === 1) {
110
+ // sparse + sparse
111
+ return matAlgo06xS0S0(x, y, self);
112
+ } else {
113
+ // throw exception
114
+ throw new Error('Root must be non-zero');
115
+ }
116
+ };
117
+ }),
118
+ 'DenseMatrix, SparseMatrix': typed.referToSelf(function (self) {
119
+ return function (x, y) {
120
+ // density must be one (no zeros in matrix)
121
+ if (y.density() === 1) {
122
+ // dense + sparse
123
+ return matAlgo01xDSid(x, y, self, false);
124
+ } else {
125
+ // throw exception
126
+ throw new Error('Root must be non-zero');
127
+ }
128
+ };
129
+ }),
130
+ 'Array, SparseMatrix': typed.referTo('DenseMatrix,SparseMatrix', function (selfDS) {
131
+ return function (x, y) {
132
+ return selfDS(matrix(x), y);
133
+ };
134
+ }),
135
+ 'number | BigNumber, SparseMatrix': typed.referToSelf(function (self) {
136
+ return function (x, y) {
137
+ // density must be one (no zeros in matrix)
138
+ if (y.density() === 1) {
139
+ // sparse - scalar
140
+ return matAlgo11xS0s(y, x, self, true);
141
+ } else {
142
+ // throw exception
143
+ throw new Error('Root must be non-zero');
144
+ }
145
+ };
146
+ })
147
+ }, matrixAlgorithmSuite({
148
+ scalar: 'number | BigNumber',
149
+ SD: matAlgo02xDS0,
150
+ Ss: matAlgo11xS0s,
151
+ sS: false
152
+ }));
165
153
  /**
166
154
  * Calculate the nth root of a for BigNumbers, solve x^root == a
167
155
  * https://rosettacode.org/wiki/Nth_root#JavaScript
@@ -9,11 +9,11 @@ var _factory = require("../../utils/factory.js");
9
9
 
10
10
  var _collection = require("../../utils/collection.js");
11
11
 
12
- var _algorithm = require("../../type/matrix/utils/algorithm11.js");
12
+ var _matAlgo11xS0s = require("../../type/matrix/utils/matAlgo11xS0s.js");
13
13
 
14
- var _algorithm2 = require("../../type/matrix/utils/algorithm12.js");
14
+ var _matAlgo12xSfs = require("../../type/matrix/utils/matAlgo12xSfs.js");
15
15
 
16
- var _algorithm3 = require("../../type/matrix/utils/algorithm14.js");
16
+ var _matAlgo14xDs = require("../../type/matrix/utils/matAlgo14xDs.js");
17
17
 
18
18
  var _index = require("../../plain/number/index.js");
19
19
 
@@ -27,15 +27,15 @@ var createRound = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
27
27
  zeros = _ref.zeros,
28
28
  BigNumber = _ref.BigNumber,
29
29
  DenseMatrix = _ref.DenseMatrix;
30
- var algorithm11 = (0, _algorithm.createAlgorithm11)({
30
+ var matAlgo11xS0s = (0, _matAlgo11xS0s.createMatAlgo11xS0s)({
31
31
  typed: typed,
32
32
  equalScalar: equalScalar
33
33
  });
34
- var algorithm12 = (0, _algorithm2.createAlgorithm12)({
34
+ var matAlgo12xSfs = (0, _matAlgo12xSfs.createMatAlgo12xSfs)({
35
35
  typed: typed,
36
36
  DenseMatrix: DenseMatrix
37
37
  });
38
- var algorithm14 = (0, _algorithm3.createAlgorithm14)({
38
+ var matAlgo14xDs = (0, _matAlgo14xDs.createMatAlgo14xDs)({
39
39
  typed: typed
40
40
  });
41
41
  /**
@@ -130,42 +130,56 @@ var createRound = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
130
130
 
131
131
  return x.round(n.toNumber());
132
132
  },
133
- 'Array | Matrix': function ArrayMatrix(x) {
134
- // deep map collection, skip zeros since round(0) = 0
135
- return (0, _collection.deepMap)(x, this, true);
136
- },
137
- 'SparseMatrix, number | BigNumber': function SparseMatrixNumberBigNumber(x, y) {
138
- return algorithm11(x, y, this, false);
139
- },
140
- 'DenseMatrix, number | BigNumber': function DenseMatrixNumberBigNumber(x, y) {
141
- return algorithm14(x, y, this, false);
142
- },
143
- 'Array, number | BigNumber': function ArrayNumberBigNumber(x, y) {
144
- // use matrix implementation
145
- return algorithm14(matrix(x), y, this, false).valueOf();
146
- },
147
- 'number | Complex | BigNumber | Fraction, SparseMatrix': function numberComplexBigNumberFractionSparseMatrix(x, y) {
148
- // check scalar is zero
149
- if (equalScalar(x, 0)) {
150
- // do not execute algorithm, result will be a zero matrix
151
- return zeros(y.size(), y.storage());
152
- }
153
-
154
- return algorithm12(y, x, this, true);
155
- },
156
- 'number | Complex | BigNumber | Fraction, DenseMatrix': function numberComplexBigNumberFractionDenseMatrix(x, y) {
157
- // check scalar is zero
158
- if (equalScalar(x, 0)) {
159
- // do not execute algorithm, result will be a zero matrix
160
- return zeros(y.size(), y.storage());
161
- }
162
-
163
- return algorithm14(y, x, this, true);
164
- },
165
- 'number | Complex | BigNumber | Fraction, Array': function numberComplexBigNumberFractionArray(x, y) {
166
- // use matrix implementation
167
- return algorithm14(matrix(y), x, this, true).valueOf();
168
- }
133
+ // deep map collection, skip zeros since round(0) = 0
134
+ 'Array | Matrix': typed.referToSelf(function (self) {
135
+ return function (x) {
136
+ return (0, _collection.deepMap)(x, self, true);
137
+ };
138
+ }),
139
+ 'SparseMatrix, number | BigNumber': typed.referToSelf(function (self) {
140
+ return function (x, y) {
141
+ return matAlgo11xS0s(x, y, self, false);
142
+ };
143
+ }),
144
+ 'DenseMatrix, number | BigNumber': typed.referToSelf(function (self) {
145
+ return function (x, y) {
146
+ return matAlgo14xDs(x, y, self, false);
147
+ };
148
+ }),
149
+ 'Array, number | BigNumber': typed.referToSelf(function (self) {
150
+ return function (x, y) {
151
+ // use matrix implementation
152
+ return matAlgo14xDs(matrix(x), y, self, false).valueOf();
153
+ };
154
+ }),
155
+ 'number | Complex | BigNumber | Fraction, SparseMatrix': typed.referToSelf(function (self) {
156
+ return function (x, y) {
157
+ // check scalar is zero
158
+ if (equalScalar(x, 0)) {
159
+ // do not execute algorithm, result will be a zero matrix
160
+ return zeros(y.size(), y.storage());
161
+ }
162
+
163
+ return matAlgo12xSfs(y, x, self, true);
164
+ };
165
+ }),
166
+ 'number | Complex | BigNumber | Fraction, DenseMatrix': typed.referToSelf(function (self) {
167
+ return function (x, y) {
168
+ // check scalar is zero
169
+ if (equalScalar(x, 0)) {
170
+ // do not execute algorithm, result will be a zero matrix
171
+ return zeros(y.size(), y.storage());
172
+ }
173
+
174
+ return matAlgo14xDs(y, x, self, true);
175
+ };
176
+ }),
177
+ 'number | Complex | BigNumber | Fraction, Array': typed.referToSelf(function (self) {
178
+ return function (x, y) {
179
+ // use matrix implementation
180
+ return matAlgo14xDs(matrix(y), x, self, true).valueOf();
181
+ };
182
+ })
169
183
  });
170
184
  });
171
185
  exports.createRound = createRound;
@@ -60,17 +60,21 @@ var createSign = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
60
60
  Fraction: function Fraction(x) {
61
61
  return new _Fraction(x.s, 1);
62
62
  },
63
- 'Array | Matrix': function ArrayMatrix(x) {
64
- // deep map collection, skip zeros since sign(0) = 0
65
- return (0, _collection.deepMap)(x, this, true);
66
- },
67
- Unit: function Unit(x) {
68
- if (!x._isDerived() && x.units[0].unit.offset !== 0) {
69
- throw new TypeError('sign is ambiguous for units with offset');
70
- }
63
+ // deep map collection, skip zeros since sign(0) = 0
64
+ 'Array | Matrix': typed.referToSelf(function (self) {
65
+ return function (x) {
66
+ return (0, _collection.deepMap)(x, self, true);
67
+ };
68
+ }),
69
+ Unit: typed.referToSelf(function (self) {
70
+ return function (x) {
71
+ if (!x._isDerived() && x.units[0].unit.offset !== 0) {
72
+ throw new TypeError('sign is ambiguous for units with offset');
73
+ }
71
74
 
72
- return this(x.value);
73
- }
75
+ return typed.find(self, x.valueType())(x.value);
76
+ };
77
+ })
74
78
  });
75
79
  });
76
80
  exports.createSign = createSign;
@@ -7,8 +7,6 @@ exports.createSqrt = void 0;
7
7
 
8
8
  var _factory = require("../../utils/factory.js");
9
9
 
10
- var _collection = require("../../utils/collection.js");
11
-
12
10
  var name = 'sqrt';
13
11
  var dependencies = ['config', 'typed', 'Complex'];
14
12
  var createSqrt = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
@@ -19,7 +17,9 @@ var createSqrt = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
19
17
  /**
20
18
  * Calculate the square root of a value.
21
19
  *
22
- * For matrices, the function is evaluated element wise.
20
+ * For matrices, if you want the matrix square root of a square matrix,
21
+ * use the `sqrtm` function. If you wish to apply `sqrt` elementwise to
22
+ * a matrix M, use `math.map(M, math.sqrt)`.
23
23
  *
24
24
  * Syntax:
25
25
  *
@@ -35,9 +35,9 @@ var createSqrt = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
35
35
  *
36
36
  * square, multiply, cube, cbrt, sqrtm
37
37
  *
38
- * @param {number | BigNumber | Complex | Array | Matrix | Unit} x
38
+ * @param {number | BigNumber | Complex | Unit} x
39
39
  * Value for which to calculate the square root.
40
- * @return {number | BigNumber | Complex | Array | Matrix | Unit}
40
+ * @return {number | BigNumber | Complex | Unit}
41
41
  * Returns the square root of `x`
42
42
  */
43
43
  return typed('sqrt', {
@@ -53,10 +53,6 @@ var createSqrt = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
53
53
  return _sqrtNumber(x.toNumber());
54
54
  }
55
55
  },
56
- 'Array | Matrix': function ArrayMatrix(x) {
57
- // deep map collection, skip zeros since sqrt(0) = 0
58
- return (0, _collection.deepMap)(x, this, true);
59
- },
60
56
  Unit: function Unit(x) {
61
57
  // Someday will work for complex units when they are implemented
62
58
  return x.pow(0.5);
@@ -7,8 +7,6 @@ exports.createSquare = void 0;
7
7
 
8
8
  var _factory = require("../../utils/factory.js");
9
9
 
10
- var _collection = require("../../utils/collection.js");
11
-
12
10
  var _index = require("../../plain/number/index.js");
13
11
 
14
12
  var name = 'square';
@@ -18,7 +16,9 @@ var createSquare = /* #__PURE__ */(0, _factory.factory)(name, dependencies, func
18
16
 
19
17
  /**
20
18
  * Compute the square of a value, `x * x`.
21
- * For matrices, the function is evaluated element wise.
19
+ * To avoid confusion with multiplying a square matrix by itself,
20
+ * this function does not apply to matrices. If you wish to square
21
+ * every element of a matrix, see the examples.
22
22
  *
23
23
  * Syntax:
24
24
  *
@@ -31,15 +31,15 @@ var createSquare = /* #__PURE__ */(0, _factory.factory)(name, dependencies, func
31
31
  * math.pow(3, 2) // returns number 9
32
32
  * math.multiply(3, 3) // returns number 9
33
33
  *
34
- * math.square([1, 2, 3, 4]) // returns Array [1, 4, 9, 16]
34
+ * math.map([1, 2, 3, 4], math.square) // returns Array [1, 4, 9, 16]
35
35
  *
36
36
  * See also:
37
37
  *
38
38
  * multiply, cube, sqrt, pow
39
39
  *
40
- * @param {number | BigNumber | Fraction | Complex | Array | Matrix | Unit} x
40
+ * @param {number | BigNumber | Fraction | Complex | Unit} x
41
41
  * Number for which to calculate the square
42
- * @return {number | BigNumber | Fraction | Complex | Array | Matrix | Unit}
42
+ * @return {number | BigNumber | Fraction | Complex | Unit}
43
43
  * Squared value
44
44
  */
45
45
  return typed(name, {
@@ -53,10 +53,6 @@ var createSquare = /* #__PURE__ */(0, _factory.factory)(name, dependencies, func
53
53
  Fraction: function Fraction(x) {
54
54
  return x.mul(x);
55
55
  },
56
- 'Array | Matrix': function ArrayMatrix(x) {
57
- // deep map collection, skip zeros since square(0) = 0
58
- return (0, _collection.deepMap)(x, this, true);
59
- },
60
56
  Unit: function Unit(x) {
61
57
  return x.pow(2);
62
58
  }