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