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,9 @@
1
- import { createAlgorithm02 } from '../../type/matrix/utils/algorithm02.js';
2
- import { createAlgorithm11 } from '../../type/matrix/utils/algorithm11.js';
3
- import { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';
4
- import { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';
5
- import { createAlgorithm06 } from '../../type/matrix/utils/algorithm06.js';
1
+ import { createMatAlgo02xDS0 } from '../../type/matrix/utils/matAlgo02xDS0.js';
2
+ import { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';
3
+ import { createMatAlgo14xDs } from '../../type/matrix/utils/matAlgo14xDs.js';
4
+ import { createMatAlgo06xS0S0 } from '../../type/matrix/utils/matAlgo06xS0S0.js';
6
5
  import { factory } from '../../utils/factory.js';
6
+ import { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';
7
7
  import { andNumber } from '../../plain/number/index.js';
8
8
  var name = 'and';
9
9
  var dependencies = ['typed', 'matrix', 'equalScalar', 'zeros', 'not'];
@@ -15,23 +15,24 @@ export var createAnd = /* #__PURE__ */factory(name, dependencies, _ref => {
15
15
  zeros,
16
16
  not
17
17
  } = _ref;
18
- var algorithm02 = createAlgorithm02({
18
+ var matAlgo02xDS0 = createMatAlgo02xDS0({
19
19
  typed,
20
20
  equalScalar
21
21
  });
22
- var algorithm06 = createAlgorithm06({
22
+ var matAlgo06xS0S0 = createMatAlgo06xS0S0({
23
23
  typed,
24
24
  equalScalar
25
25
  });
26
- var algorithm11 = createAlgorithm11({
26
+ var matAlgo11xS0s = createMatAlgo11xS0s({
27
27
  typed,
28
28
  equalScalar
29
29
  });
30
- var algorithm13 = createAlgorithm13({
30
+ var matAlgo14xDs = createMatAlgo14xDs({
31
31
  typed
32
32
  });
33
- var algorithm14 = createAlgorithm14({
34
- typed
33
+ var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
34
+ typed,
35
+ matrix
35
36
  });
36
37
  /**
37
38
  * Logical `and`. Test whether two values are both defined with a nonzero/nonempty value.
@@ -70,76 +71,53 @@ export var createAnd = /* #__PURE__ */factory(name, dependencies, _ref => {
70
71
  'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {
71
72
  return !x.isZero() && !y.isZero() && !x.isNaN() && !y.isNaN();
72
73
  },
73
- 'Unit, Unit': function UnitUnit(x, y) {
74
- return this(x.value || 0, y.value || 0);
75
- },
76
- 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {
77
- return algorithm06(x, y, this, false);
78
- },
79
- 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {
80
- return algorithm02(y, x, this, true);
81
- },
82
- 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {
83
- return algorithm02(x, y, this, false);
84
- },
85
- 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {
86
- return algorithm13(x, y, this);
87
- },
88
- 'Array, Array': function ArrayArray(x, y) {
89
- // use matrix implementation
90
- return this(matrix(x), matrix(y)).valueOf();
91
- },
92
- 'Array, Matrix': function ArrayMatrix(x, y) {
93
- // use matrix implementation
94
- return this(matrix(x), y);
95
- },
96
- 'Matrix, Array': function MatrixArray(x, y) {
97
- // use matrix implementation
98
- return this(x, matrix(y));
99
- },
100
- 'SparseMatrix, any': function SparseMatrixAny(x, y) {
74
+ 'Unit, Unit': typed.referToSelf(self => (x, y) => self(x.value || 0, y.value || 0)),
75
+ 'SparseMatrix, any': typed.referToSelf(self => (x, y) => {
101
76
  // check scalar
102
77
  if (not(y)) {
103
78
  // return zero matrix
104
79
  return zeros(x.size(), x.storage());
105
80
  }
106
81
 
107
- return algorithm11(x, y, this, false);
108
- },
109
- 'DenseMatrix, any': function DenseMatrixAny(x, y) {
82
+ return matAlgo11xS0s(x, y, self, false);
83
+ }),
84
+ 'DenseMatrix, any': typed.referToSelf(self => (x, y) => {
110
85
  // check scalar
111
86
  if (not(y)) {
112
87
  // return zero matrix
113
88
  return zeros(x.size(), x.storage());
114
89
  }
115
90
 
116
- return algorithm14(x, y, this, false);
117
- },
118
- 'any, SparseMatrix': function anySparseMatrix(x, y) {
91
+ return matAlgo14xDs(x, y, self, false);
92
+ }),
93
+ 'any, SparseMatrix': typed.referToSelf(self => (x, y) => {
119
94
  // check scalar
120
95
  if (not(x)) {
121
96
  // return zero matrix
122
97
  return zeros(x.size(), x.storage());
123
98
  }
124
99
 
125
- return algorithm11(y, x, this, true);
126
- },
127
- 'any, DenseMatrix': function anyDenseMatrix(x, y) {
100
+ return matAlgo11xS0s(y, x, self, true);
101
+ }),
102
+ 'any, DenseMatrix': typed.referToSelf(self => (x, y) => {
128
103
  // check scalar
129
104
  if (not(x)) {
130
105
  // return zero matrix
131
106
  return zeros(x.size(), x.storage());
132
107
  }
133
108
 
134
- return algorithm14(y, x, this, true);
135
- },
136
- 'Array, any': function ArrayAny(x, y) {
109
+ return matAlgo14xDs(y, x, self, true);
110
+ }),
111
+ 'Array, any': typed.referToSelf(self => (x, y) => {
137
112
  // use matrix implementation
138
- return this(matrix(x), y).valueOf();
139
- },
140
- 'any, Array': function anyArray(x, y) {
113
+ return self(matrix(x), y).valueOf();
114
+ }),
115
+ 'any, Array': typed.referToSelf(self => (x, y) => {
141
116
  // use matrix implementation
142
- return this(x, matrix(y)).valueOf();
143
- }
144
- });
117
+ return self(x, matrix(y)).valueOf();
118
+ })
119
+ }, matrixAlgorithmSuite({
120
+ SS: matAlgo06xS0S0,
121
+ DS: matAlgo02xDS0
122
+ }));
145
123
  });
@@ -34,6 +34,7 @@ export var createNot = /* #__PURE__ */factory(name, dependencies, _ref => {
34
34
  * Returns true when input is a zero or empty value.
35
35
  */
36
36
  return typed(name, {
37
+ 'null | undefined': () => true,
37
38
  number: notNumber,
38
39
  Complex: function Complex(x) {
39
40
  return x.re === 0 && x.im === 0;
@@ -41,11 +42,7 @@ export var createNot = /* #__PURE__ */factory(name, dependencies, _ref => {
41
42
  BigNumber: function BigNumber(x) {
42
43
  return x.isZero() || x.isNaN();
43
44
  },
44
- Unit: function Unit(x) {
45
- return x.value !== null ? this(x.value) : true;
46
- },
47
- 'Array | Matrix': function ArrayMatrix(x) {
48
- return deepMap(x, this);
49
- }
45
+ Unit: typed.referToSelf(self => x => typed.find(self, x.valueType())(x.value)),
46
+ 'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))
50
47
  });
51
48
  });
@@ -1,9 +1,8 @@
1
- import { createAlgorithm03 } from '../../type/matrix/utils/algorithm03.js';
2
- import { createAlgorithm12 } from '../../type/matrix/utils/algorithm12.js';
3
- import { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';
4
- import { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';
5
- import { createAlgorithm05 } from '../../type/matrix/utils/algorithm05.js';
1
+ import { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';
2
+ import { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';
3
+ import { createMatAlgo05xSfSf } from '../../type/matrix/utils/matAlgo05xSfSf.js';
6
4
  import { factory } from '../../utils/factory.js';
5
+ import { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';
7
6
  import { orNumber } from '../../plain/number/index.js';
8
7
  var name = 'or';
9
8
  var dependencies = ['typed', 'matrix', 'equalScalar', 'DenseMatrix'];
@@ -14,22 +13,20 @@ export var createOr = /* #__PURE__ */factory(name, dependencies, _ref => {
14
13
  equalScalar,
15
14
  DenseMatrix
16
15
  } = _ref;
17
- var algorithm03 = createAlgorithm03({
16
+ var matAlgo03xDSf = createMatAlgo03xDSf({
18
17
  typed
19
18
  });
20
- var algorithm05 = createAlgorithm05({
19
+ var matAlgo05xSfSf = createMatAlgo05xSfSf({
21
20
  typed,
22
21
  equalScalar
23
22
  });
24
- var algorithm12 = createAlgorithm12({
23
+ var matAlgo12xSfs = createMatAlgo12xSfs({
25
24
  typed,
26
25
  DenseMatrix
27
26
  });
28
- var algorithm13 = createAlgorithm13({
29
- typed
30
- });
31
- var algorithm14 = createAlgorithm14({
32
- typed
27
+ var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
28
+ typed,
29
+ matrix
33
30
  });
34
31
  /**
35
32
  * Logical `or`. Test if at least one value is defined with a nonzero/nonempty value.
@@ -68,52 +65,10 @@ export var createOr = /* #__PURE__ */factory(name, dependencies, _ref => {
68
65
  'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {
69
66
  return !x.isZero() && !x.isNaN() || !y.isZero() && !y.isNaN();
70
67
  },
71
- 'Unit, Unit': function UnitUnit(x, y) {
72
- return this(x.value || 0, y.value || 0);
73
- },
74
- 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {
75
- return algorithm05(x, y, this);
76
- },
77
- 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {
78
- return algorithm03(y, x, this, true);
79
- },
80
- 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {
81
- return algorithm03(x, y, this, false);
82
- },
83
- 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {
84
- return algorithm13(x, y, this);
85
- },
86
- 'Array, Array': function ArrayArray(x, y) {
87
- // use matrix implementation
88
- return this(matrix(x), matrix(y)).valueOf();
89
- },
90
- 'Array, Matrix': function ArrayMatrix(x, y) {
91
- // use matrix implementation
92
- return this(matrix(x), y);
93
- },
94
- 'Matrix, Array': function MatrixArray(x, y) {
95
- // use matrix implementation
96
- return this(x, matrix(y));
97
- },
98
- 'SparseMatrix, any': function SparseMatrixAny(x, y) {
99
- return algorithm12(x, y, this, false);
100
- },
101
- 'DenseMatrix, any': function DenseMatrixAny(x, y) {
102
- return algorithm14(x, y, this, false);
103
- },
104
- 'any, SparseMatrix': function anySparseMatrix(x, y) {
105
- return algorithm12(y, x, this, true);
106
- },
107
- 'any, DenseMatrix': function anyDenseMatrix(x, y) {
108
- return algorithm14(y, x, this, true);
109
- },
110
- 'Array, any': function ArrayAny(x, y) {
111
- // use matrix implementation
112
- return algorithm14(matrix(x), y, this, false).valueOf();
113
- },
114
- 'any, Array': function anyArray(x, y) {
115
- // use matrix implementation
116
- return algorithm14(matrix(y), x, this, true).valueOf();
117
- }
118
- });
68
+ 'Unit, Unit': typed.referToSelf(self => (x, y) => self(x.value || 0, y.value || 0))
69
+ }, matrixAlgorithmSuite({
70
+ SS: matAlgo05xSfSf,
71
+ DS: matAlgo03xDSf,
72
+ Ss: matAlgo12xSfs
73
+ }));
119
74
  });
@@ -1,9 +1,8 @@
1
- import { createAlgorithm03 } from '../../type/matrix/utils/algorithm03.js';
2
- import { createAlgorithm07 } from '../../type/matrix/utils/algorithm07.js';
3
- import { createAlgorithm12 } from '../../type/matrix/utils/algorithm12.js';
4
- import { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';
5
- import { createAlgorithm14 } from '../../type/matrix/utils/algorithm14.js';
1
+ import { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';
2
+ import { createMatAlgo07xSSf } from '../../type/matrix/utils/matAlgo07xSSf.js';
3
+ import { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';
6
4
  import { factory } from '../../utils/factory.js';
5
+ import { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';
7
6
  import { xorNumber } from '../../plain/number/index.js';
8
7
  var name = 'xor';
9
8
  var dependencies = ['typed', 'matrix', 'DenseMatrix'];
@@ -13,22 +12,20 @@ export var createXor = /* #__PURE__ */factory(name, dependencies, _ref => {
13
12
  matrix,
14
13
  DenseMatrix
15
14
  } = _ref;
16
- var algorithm03 = createAlgorithm03({
15
+ var matAlgo03xDSf = createMatAlgo03xDSf({
17
16
  typed
18
17
  });
19
- var algorithm07 = createAlgorithm07({
18
+ var matAlgo07xSSf = createMatAlgo07xSSf({
20
19
  typed,
21
20
  DenseMatrix
22
21
  });
23
- var algorithm12 = createAlgorithm12({
22
+ var matAlgo12xSfs = createMatAlgo12xSfs({
24
23
  typed,
25
24
  DenseMatrix
26
25
  });
27
- var algorithm13 = createAlgorithm13({
28
- typed
29
- });
30
- var algorithm14 = createAlgorithm14({
31
- typed
26
+ var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
27
+ typed,
28
+ matrix
32
29
  });
33
30
  /**
34
31
  * Logical `xor`. Test whether one and only one value is defined with a nonzero/nonempty value.
@@ -67,52 +64,10 @@ export var createXor = /* #__PURE__ */factory(name, dependencies, _ref => {
67
64
  'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {
68
65
  return (!x.isZero() && !x.isNaN()) !== (!y.isZero() && !y.isNaN());
69
66
  },
70
- 'Unit, Unit': function UnitUnit(x, y) {
71
- return this(x.value || 0, y.value || 0);
72
- },
73
- 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {
74
- return algorithm07(x, y, this);
75
- },
76
- 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {
77
- return algorithm03(y, x, this, true);
78
- },
79
- 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {
80
- return algorithm03(x, y, this, false);
81
- },
82
- 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {
83
- return algorithm13(x, y, this);
84
- },
85
- 'Array, Array': function ArrayArray(x, y) {
86
- // use matrix implementation
87
- return this(matrix(x), matrix(y)).valueOf();
88
- },
89
- 'Array, Matrix': function ArrayMatrix(x, y) {
90
- // use matrix implementation
91
- return this(matrix(x), y);
92
- },
93
- 'Matrix, Array': function MatrixArray(x, y) {
94
- // use matrix implementation
95
- return this(x, matrix(y));
96
- },
97
- 'SparseMatrix, any': function SparseMatrixAny(x, y) {
98
- return algorithm12(x, y, this, false);
99
- },
100
- 'DenseMatrix, any': function DenseMatrixAny(x, y) {
101
- return algorithm14(x, y, this, false);
102
- },
103
- 'any, SparseMatrix': function anySparseMatrix(x, y) {
104
- return algorithm12(y, x, this, true);
105
- },
106
- 'any, DenseMatrix': function anyDenseMatrix(x, y) {
107
- return algorithm14(y, x, this, true);
108
- },
109
- 'Array, any': function ArrayAny(x, y) {
110
- // use matrix implementation
111
- return algorithm14(matrix(x), y, this, false).valueOf();
112
- },
113
- 'any, Array': function anyArray(x, y) {
114
- // use matrix implementation
115
- return algorithm14(matrix(y), x, this, true).valueOf();
116
- }
117
- });
67
+ 'Unit, Unit': typed.referToSelf(self => (x, y) => self(x.value || 0, y.value || 0))
68
+ }, matrixAlgorithmSuite({
69
+ SS: matAlgo07xSSf,
70
+ DS: matAlgo03xDSf,
71
+ Ss: matAlgo12xSfs
72
+ }));
118
73
  });
@@ -75,9 +75,8 @@ export var createDiff = /* #__PURE__ */factory(name, dependencies, _ref => {
75
75
  return _recursive(arr, dim);
76
76
  }
77
77
  },
78
- 'Array | Matrix, BigNumber': function ArrayMatrixBigNumber(arr, dim) {
79
- return this(arr, number(dim));
80
- }
78
+ 'Array, BigNumber': typed.referTo('Array,number', selfAn => (arr, dim) => selfAn(arr, number(dim))),
79
+ 'Matrix, BigNumber': typed.referTo('Matrix,number', selfMn => (arr, dim) => selfMn(arr, number(dim)))
81
80
  });
82
81
  /**
83
82
  * Recursively find the correct dimension in the array/matrix
@@ -121,10 +120,6 @@ export var createDiff = /* #__PURE__ */factory(name, dependencies, _ref => {
121
120
  var result = [];
122
121
  var size = arr.length;
123
122
 
124
- if (size < 2) {
125
- return arr;
126
- }
127
-
128
123
  for (var i = 1; i < size; i++) {
129
124
  result.push(_ElementDiff(arr[i - 1], arr[i]));
130
125
  }
@@ -29,6 +29,7 @@ export var createOnes = /* #__PURE__ */factory(name, dependencies, _ref => {
29
29
  *
30
30
  * Examples:
31
31
  *
32
+ * math.ones() // returns []
32
33
  * math.ones(3) // returns [1, 1, 1]
33
34
  * math.ones(3, 2) // returns [[1, 1], [1, 1], [1, 1]]
34
35
  * math.ones(3, 2, 'dense') // returns Dense Matrix [[1, 1], [1, 1], [1, 1]]
@@ -40,7 +41,7 @@ export var createOnes = /* #__PURE__ */factory(name, dependencies, _ref => {
40
41
  *
41
42
  * zeros, identity, size, range
42
43
  *
43
- * @param {...number | Array} size The size of each dimension of the matrix
44
+ * @param {...(number|BigNumber) | Array} size The size of each dimension of the matrix
44
45
  * @param {string} [format] The Matrix storage format
45
46
  *
46
47
  * @return {Array | Matrix | number} A matrix filled with ones
@@ -3,13 +3,14 @@ import { format } from '../../utils/string.js';
3
3
  import { arraySize } from '../../utils/array.js';
4
4
  import { factory } from '../../utils/factory.js';
5
5
  var name = 'sqrtm';
6
- var dependencies = ['typed', 'abs', 'add', 'multiply', 'sqrt', 'subtract', 'inv', 'size', 'max', 'identity'];
6
+ var dependencies = ['typed', 'abs', 'add', 'multiply', 'map', 'sqrt', 'subtract', 'inv', 'size', 'max', 'identity'];
7
7
  export var createSqrtm = /* #__PURE__ */factory(name, dependencies, _ref => {
8
8
  var {
9
9
  typed,
10
10
  abs,
11
11
  add,
12
12
  multiply,
13
+ map,
13
14
  sqrt,
14
15
  subtract,
15
16
  inv,
@@ -79,7 +80,7 @@ export var createSqrtm = /* #__PURE__ */factory(name, dependencies, _ref => {
79
80
  case 1:
80
81
  // Single element Array | Matrix
81
82
  if (size[0] === 1) {
82
- return sqrt(A);
83
+ return map(A, sqrt);
83
84
  } else {
84
85
  throw new RangeError('Matrix must be square ' + '(size: ' + format(size) + ')');
85
86
  }
@@ -31,59 +31,56 @@ export var createTranspose = /* #__PURE__ */factory(name, dependencies, _ref =>
31
31
  * @param {Array | Matrix} x Matrix to be transposed
32
32
  * @return {Array | Matrix} The transposed matrix
33
33
  */
34
- return typed('transpose', {
35
- Array: function Array(x) {
36
- // use dense matrix implementation
37
- return this(matrix(x)).valueOf();
38
- },
39
- Matrix: function Matrix(x) {
40
- // matrix size
41
- var size = x.size(); // result
42
-
43
- var c; // process dimensions
44
-
45
- switch (size.length) {
46
- case 1:
47
- // vector
48
- c = x.clone();
49
- break;
50
-
51
- case 2:
52
- {
53
- // rows and columns
54
- var rows = size[0];
55
- var columns = size[1]; // check columns
56
-
57
- if (columns === 0) {
58
- // throw exception
59
- throw new RangeError('Cannot transpose a 2D matrix with no columns (size: ' + format(size) + ')');
60
- } // process storage format
61
-
62
-
63
- switch (x.storage()) {
64
- case 'dense':
65
- c = _denseTranspose(x, rows, columns);
66
- break;
67
-
68
- case 'sparse':
69
- c = _sparseTranspose(x, rows, columns);
70
- break;
71
- }
72
- }
73
- break;
34
+ return typed(name, {
35
+ Array: x => transposeMatrix(matrix(x)).valueOf(),
36
+ Matrix: transposeMatrix,
37
+ any: clone // scalars
74
38
 
75
- default:
76
- // multi dimensional
77
- throw new RangeError('Matrix must be a vector or two dimensional (size: ' + format(this._size) + ')');
78
- }
39
+ });
40
+
41
+ function transposeMatrix(x) {
42
+ // matrix size
43
+ var size = x.size(); // result
44
+
45
+ var c; // process dimensions
46
+
47
+ switch (size.length) {
48
+ case 1:
49
+ // vector
50
+ c = x.clone();
51
+ break;
52
+
53
+ case 2:
54
+ {
55
+ // rows and columns
56
+ var rows = size[0];
57
+ var columns = size[1]; // check columns
58
+
59
+ if (columns === 0) {
60
+ // throw exception
61
+ throw new RangeError('Cannot transpose a 2D matrix with no columns (size: ' + format(size) + ')');
62
+ } // process storage format
79
63
 
80
- return c;
81
- },
82
- // scalars
83
- any: function any(x) {
84
- return clone(x);
64
+
65
+ switch (x.storage()) {
66
+ case 'dense':
67
+ c = _denseTranspose(x, rows, columns);
68
+ break;
69
+
70
+ case 'sparse':
71
+ c = _sparseTranspose(x, rows, columns);
72
+ break;
73
+ }
74
+ }
75
+ break;
76
+
77
+ default:
78
+ // multi dimensional
79
+ throw new RangeError('Matrix must be a vector or two dimensional (size: ' + format(size) + ')');
85
80
  }
86
- });
81
+
82
+ return c;
83
+ }
87
84
 
88
85
  function _denseTranspose(m, rows, columns) {
89
86
  // matrix array
@@ -27,6 +27,7 @@ export var createZeros = /* #__PURE__ */factory(name, dependencies, _ref => {
27
27
  *
28
28
  * Examples:
29
29
  *
30
+ * math.zeros() // returns []
30
31
  * math.zeros(3) // returns [0, 0, 0]
31
32
  * math.zeros(3, 2) // returns [[0, 0], [0, 0], [0, 0]]
32
33
  * math.zeros(3, 'dense') // returns [0, 0, 0]
@@ -38,7 +39,7 @@ export var createZeros = /* #__PURE__ */factory(name, dependencies, _ref => {
38
39
  *
39
40
  * ones, identity, size, range
40
41
  *
41
- * @param {...number | Array} size The size of each dimension of the matrix
42
+ * @param {...(number|BigNumber) | Array} size The size of each dimension of the matrix
42
43
  * @param {string} [format] The Matrix storage format
43
44
  *
44
45
  * @return {Array | Matrix} A matrix filled with zeros
@@ -45,8 +45,6 @@ export var createFactorial = /* #__PURE__ */factory(name, dependencies, _ref =>
45
45
 
46
46
  return gamma(n.plus(1));
47
47
  },
48
- 'Array | Matrix': function ArrayMatrix(n) {
49
- return deepMap(n, this);
50
- }
48
+ 'Array | Matrix': typed.referToSelf(self => n => deepMap(n, self))
51
49
  });
52
50
  });