mathjs 10.6.3 → 11.0.1

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 (451) 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 +25 -33
  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 +90 -115
  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 +14 -32
  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 +34 -28
  90. package/lib/cjs/function/arithmetic/floor.js +57 -47
  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 +2 -2
  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 +83 -95
  104. package/lib/cjs/function/arithmetic/nthRoots.js +2 -2
  105. package/lib/cjs/function/arithmetic/round.js +56 -42
  106. package/lib/cjs/function/arithmetic/sign.js +14 -10
  107. package/lib/cjs/function/arithmetic/sqrt.js +5 -9
  108. package/lib/cjs/function/arithmetic/square.js +6 -10
  109. package/lib/cjs/function/arithmetic/subtract.js +44 -100
  110. package/lib/cjs/function/arithmetic/unaryMinus.js +14 -16
  111. package/lib/cjs/function/arithmetic/unaryPlus.js +6 -4
  112. package/lib/cjs/function/bitwise/bitAnd.js +17 -61
  113. package/lib/cjs/function/bitwise/bitNot.js +6 -4
  114. package/lib/cjs/function/bitwise/bitOr.js +16 -60
  115. package/lib/cjs/function/bitwise/bitXor.js +17 -61
  116. package/lib/cjs/function/bitwise/leftShift.js +69 -82
  117. package/lib/cjs/function/bitwise/rightArithShift.js +69 -82
  118. package/lib/cjs/function/bitwise/rightLogShift.js +69 -82
  119. package/lib/cjs/function/bitwise/useMatrixForArrayScalar.js +36 -0
  120. package/lib/cjs/function/complex/arg.js +5 -3
  121. package/lib/cjs/function/complex/conj.js +6 -7
  122. package/lib/cjs/function/complex/im.js +7 -8
  123. package/lib/cjs/function/complex/re.js +6 -10
  124. package/lib/cjs/function/geometry/distance.js +2 -2
  125. package/lib/cjs/function/logical/and.js +74 -80
  126. package/lib/cjs/function/logical/not.js +13 -6
  127. package/lib/cjs/function/logical/or.js +21 -63
  128. package/lib/cjs/function/logical/xor.js +21 -63
  129. package/lib/cjs/function/matrix/diff.js +11 -8
  130. package/lib/cjs/function/matrix/eigs/complexEigs.js +5 -5
  131. package/lib/cjs/function/matrix/fft.js +2 -2
  132. package/lib/cjs/function/matrix/matrixFromColumns.js +1 -1
  133. package/lib/cjs/function/matrix/matrixFromRows.js +1 -1
  134. package/lib/cjs/function/matrix/ones.js +2 -1
  135. package/lib/cjs/function/matrix/rotate.js +5 -5
  136. package/lib/cjs/function/matrix/sqrtm.js +3 -2
  137. package/lib/cjs/function/matrix/transpose.js +47 -48
  138. package/lib/cjs/function/matrix/zeros.js +2 -1
  139. package/lib/cjs/function/probability/factorial.js +5 -3
  140. package/lib/cjs/function/probability/gamma.js +38 -40
  141. package/lib/cjs/function/probability/kldivergence.js +5 -2
  142. package/lib/cjs/function/probability/lgamma.js +30 -30
  143. package/lib/cjs/function/probability/util/seededRNG.js +2 -2
  144. package/lib/cjs/function/relational/compare.js +21 -67
  145. package/lib/cjs/function/relational/compareNatural.js +59 -54
  146. package/lib/cjs/function/relational/compareText.js +10 -43
  147. package/lib/cjs/function/relational/compareUnits.js +24 -0
  148. package/lib/cjs/function/relational/equal.js +19 -80
  149. package/lib/cjs/function/relational/equalScalar.js +7 -9
  150. package/lib/cjs/function/relational/larger.js +21 -67
  151. package/lib/cjs/function/relational/largerEq.js +21 -67
  152. package/lib/cjs/function/relational/smaller.js +21 -67
  153. package/lib/cjs/function/relational/smallerEq.js +21 -67
  154. package/lib/cjs/function/relational/unequal.js +19 -80
  155. package/lib/cjs/function/special/erf.js +5 -3
  156. package/lib/cjs/function/statistics/std.js +11 -2
  157. package/lib/cjs/function/string/format.js +2 -2
  158. package/lib/cjs/function/string/hex.js +1 -2
  159. package/lib/cjs/function/trigonometry/acos.js +4 -8
  160. package/lib/cjs/function/trigonometry/acosh.js +2 -7
  161. package/lib/cjs/function/trigonometry/acot.js +6 -11
  162. package/lib/cjs/function/trigonometry/acoth.js +4 -8
  163. package/lib/cjs/function/trigonometry/acsc.js +6 -11
  164. package/lib/cjs/function/trigonometry/acsch.js +4 -8
  165. package/lib/cjs/function/trigonometry/asec.js +6 -10
  166. package/lib/cjs/function/trigonometry/asech.js +4 -8
  167. package/lib/cjs/function/trigonometry/asin.js +5 -10
  168. package/lib/cjs/function/trigonometry/asinh.js +4 -9
  169. package/lib/cjs/function/trigonometry/atan.js +5 -11
  170. package/lib/cjs/function/trigonometry/atan2.js +25 -63
  171. package/lib/cjs/function/trigonometry/atanh.js +4 -9
  172. package/lib/cjs/function/trigonometry/cos.js +11 -20
  173. package/lib/cjs/function/trigonometry/cosh.js +5 -19
  174. package/lib/cjs/function/trigonometry/cot.js +9 -15
  175. package/lib/cjs/function/trigonometry/coth.js +4 -15
  176. package/lib/cjs/function/trigonometry/csc.js +11 -17
  177. package/lib/cjs/function/trigonometry/csch.js +4 -15
  178. package/lib/cjs/function/trigonometry/sec.js +11 -17
  179. package/lib/cjs/function/trigonometry/sech.js +4 -15
  180. package/lib/cjs/function/trigonometry/sin.js +11 -21
  181. package/lib/cjs/function/trigonometry/sinh.js +5 -20
  182. package/lib/cjs/function/trigonometry/tan.js +11 -21
  183. package/lib/cjs/function/trigonometry/tanh.js +5 -20
  184. package/lib/cjs/function/trigonometry/trigUnit.js +24 -0
  185. package/lib/cjs/function/unit/to.js +7 -41
  186. package/lib/cjs/function/utils/clone.js +1 -1
  187. package/lib/cjs/function/utils/hasNumericValue.js +5 -1
  188. package/lib/cjs/function/utils/isInteger.js +6 -4
  189. package/lib/cjs/function/utils/isNaN.js +1 -1
  190. package/lib/cjs/function/utils/isNegative.js +11 -7
  191. package/lib/cjs/function/utils/isNumeric.js +6 -4
  192. package/lib/cjs/function/utils/isPositive.js +11 -7
  193. package/lib/cjs/function/utils/isPrime.js +5 -3
  194. package/lib/cjs/function/utils/isZero.js +21 -17
  195. package/lib/cjs/function/utils/numeric.js +11 -4
  196. package/lib/cjs/function/utils/typeOf.js +38 -44
  197. package/lib/cjs/header.js +2 -2
  198. package/lib/cjs/plain/bignumber/index.js +1 -1
  199. package/lib/cjs/type/bignumber/BigNumber.js +2 -2
  200. package/lib/cjs/type/bignumber/function/bignumber.js +6 -4
  201. package/lib/cjs/type/boolean.js +7 -5
  202. package/lib/cjs/type/chain/Chain.js +23 -3
  203. package/lib/cjs/type/complex/Complex.js +18 -14
  204. package/lib/cjs/type/complex/function/complex.js +6 -4
  205. package/lib/cjs/type/fraction/Fraction.js +10 -6
  206. package/lib/cjs/type/fraction/function/fraction.js +6 -4
  207. package/lib/cjs/type/matrix/DenseMatrix.js +21 -6
  208. package/lib/cjs/type/matrix/SparseMatrix.js +12 -2
  209. package/lib/cjs/type/matrix/utils/{algorithm01.js → matAlgo01xDSid.js} +4 -4
  210. package/lib/cjs/type/matrix/utils/{algorithm02.js → matAlgo02xDS0.js} +5 -5
  211. package/lib/cjs/type/matrix/utils/{algorithm03.js → matAlgo03xDSf.js} +5 -5
  212. package/lib/cjs/type/matrix/utils/{algorithm04.js → matAlgo04xSidSid.js} +7 -7
  213. package/lib/cjs/type/matrix/utils/{algorithm05.js → matAlgo05xSfSf.js} +5 -5
  214. package/lib/cjs/type/matrix/utils/{algorithm06.js → matAlgo06xS0S0.js} +5 -5
  215. package/lib/cjs/type/matrix/utils/{algorithm07.js → matAlgo07xSSf.js} +5 -5
  216. package/lib/cjs/type/matrix/utils/{algorithm08.js → matAlgo08xS0Sid.js} +6 -6
  217. package/lib/cjs/type/matrix/utils/{algorithm09.js → matAlgo09xS0Sf.js} +5 -5
  218. package/lib/cjs/type/matrix/utils/{algorithm10.js → matAlgo10xSids.js} +5 -5
  219. package/lib/cjs/type/matrix/utils/{algorithm11.js → matAlgo11xS0s.js} +5 -5
  220. package/lib/cjs/type/matrix/utils/{algorithm12.js → matAlgo12xSfs.js} +5 -5
  221. package/lib/cjs/type/matrix/utils/{algorithm13.js → matAlgo13xDD.js} +5 -5
  222. package/lib/cjs/type/matrix/utils/{algorithm14.js → matAlgo14xDs.js} +5 -5
  223. package/lib/cjs/type/matrix/utils/matrixAlgorithmSuite.js +238 -0
  224. package/lib/cjs/type/number.js +6 -4
  225. package/lib/cjs/type/string.js +7 -5
  226. package/lib/cjs/type/unit/Unit.js +69 -21
  227. package/lib/cjs/type/unit/function/createUnit.js +2 -1
  228. package/lib/cjs/type/unit/function/unit.js +9 -3
  229. package/lib/cjs/utils/customs.js +2 -2
  230. package/lib/cjs/utils/emitter.js +1 -1
  231. package/lib/cjs/utils/function.js +2 -2
  232. package/lib/cjs/utils/is.js +27 -25
  233. package/lib/cjs/utils/latex.js +3 -3
  234. package/lib/cjs/utils/lruQueue.js +1 -1
  235. package/lib/cjs/utils/map.js +3 -3
  236. package/lib/cjs/utils/object.js +2 -2
  237. package/lib/cjs/utils/snapshot.js +30 -57
  238. package/lib/cjs/utils/string.js +3 -3
  239. package/lib/cjs/version.js +1 -1
  240. package/lib/esm/core/create.js +2 -1
  241. package/lib/esm/core/function/import.js +2 -12
  242. package/lib/esm/core/function/typed.js +47 -11
  243. package/lib/esm/entry/dependenciesAny/dependenciesChainClass.generated.js +2 -0
  244. package/lib/esm/entry/dependenciesAny/dependenciesKldivergence.generated.js +2 -0
  245. package/lib/esm/entry/dependenciesAny/dependenciesRationalize.generated.js +2 -0
  246. package/lib/esm/entry/dependenciesAny/dependenciesResolve.generated.js +2 -0
  247. package/lib/esm/entry/dependenciesAny/dependenciesSimplify.generated.js +2 -0
  248. package/lib/esm/entry/dependenciesAny/dependenciesSimplifyConstant.generated.js +34 -0
  249. package/lib/esm/entry/dependenciesAny/dependenciesSimplifyCore.generated.js +4 -0
  250. package/lib/esm/entry/dependenciesAny/dependenciesSqrtm.generated.js +2 -0
  251. package/lib/esm/entry/dependenciesAny/dependenciesStd.generated.js +2 -0
  252. package/lib/esm/entry/dependenciesAny/dependenciesStdTransform.generated.js +2 -0
  253. package/lib/esm/entry/dependenciesAny.generated.js +1 -0
  254. package/lib/esm/entry/dependenciesNumber/dependenciesChainClass.generated.js +2 -0
  255. package/lib/esm/entry/dependenciesNumber/dependenciesRationalize.generated.js +2 -0
  256. package/lib/esm/entry/dependenciesNumber/dependenciesResolve.generated.js +2 -0
  257. package/lib/esm/entry/dependenciesNumber/dependenciesSimplify.generated.js +2 -0
  258. package/lib/esm/entry/dependenciesNumber/dependenciesSimplifyConstant.generated.js +30 -0
  259. package/lib/esm/entry/dependenciesNumber/dependenciesSimplifyCore.generated.js +4 -0
  260. package/lib/esm/entry/dependenciesNumber/dependenciesStd.generated.js +2 -0
  261. package/lib/esm/entry/dependenciesNumber/dependenciesStdTransform.generated.js +2 -0
  262. package/lib/esm/entry/dependenciesNumber.generated.js +1 -0
  263. package/lib/esm/entry/impureFunctionsAny.generated.js +73 -48
  264. package/lib/esm/entry/impureFunctionsNumber.generated.js +81 -58
  265. package/lib/esm/entry/pureFunctionsAny.generated.js +39 -36
  266. package/lib/esm/entry/pureFunctionsNumber.generated.js +14 -13
  267. package/lib/esm/expression/embeddedDocs/embeddedDocs.js +2 -0
  268. package/lib/esm/expression/embeddedDocs/function/algebra/simplifyConstant.js +8 -0
  269. package/lib/esm/expression/embeddedDocs/function/algebra/simplifyCore.js +1 -1
  270. package/lib/esm/expression/node/AccessorNode.js +158 -153
  271. package/lib/esm/expression/node/ArrayNode.js +162 -154
  272. package/lib/esm/expression/node/AssignmentNode.js +257 -245
  273. package/lib/esm/expression/node/BlockNode.js +177 -163
  274. package/lib/esm/expression/node/ConditionalNode.js +197 -174
  275. package/lib/esm/expression/node/ConstantNode.js +171 -163
  276. package/lib/esm/expression/node/FunctionAssignmentNode.js +205 -180
  277. package/lib/esm/expression/node/FunctionNode.js +407 -407
  278. package/lib/esm/expression/node/IndexNode.js +206 -198
  279. package/lib/esm/expression/node/Node.js +325 -325
  280. package/lib/esm/expression/node/ObjectNode.js +166 -157
  281. package/lib/esm/expression/node/OperatorNode.js +414 -377
  282. package/lib/esm/expression/node/ParenthesisNode.js +146 -138
  283. package/lib/esm/expression/node/RangeNode.js +221 -212
  284. package/lib/esm/expression/node/RelationalNode.js +190 -176
  285. package/lib/esm/expression/node/SymbolNode.js +161 -152
  286. package/lib/esm/expression/operators.js +96 -4
  287. package/lib/esm/expression/parse.js +25 -7
  288. package/lib/esm/expression/transform/std.transform.js +3 -1
  289. package/lib/esm/factoriesAny.js +1 -0
  290. package/lib/esm/factoriesNumber.js +1 -0
  291. package/lib/esm/function/algebra/derivative.js +25 -33
  292. package/lib/esm/function/algebra/leafCount.js +0 -3
  293. package/lib/esm/function/algebra/rationalize.js +83 -114
  294. package/lib/esm/function/algebra/resolve.js +25 -16
  295. package/lib/esm/function/algebra/simplify.js +85 -113
  296. package/lib/esm/function/algebra/{simplify/simplifyConstant.js → simplifyConstant.js} +39 -9
  297. package/lib/esm/function/algebra/simplifyCore.js +192 -91
  298. package/lib/esm/function/algebra/symbolicEqual.js +14 -32
  299. package/lib/esm/function/arithmetic/abs.js +3 -16
  300. package/lib/esm/function/arithmetic/add.js +21 -65
  301. package/lib/esm/function/arithmetic/addScalar.js +11 -5
  302. package/lib/esm/function/arithmetic/cbrt.js +7 -10
  303. package/lib/esm/function/arithmetic/ceil.js +25 -25
  304. package/lib/esm/function/arithmetic/cube.js +5 -9
  305. package/lib/esm/function/arithmetic/divide.js +7 -7
  306. package/lib/esm/function/arithmetic/divideScalar.js +2 -19
  307. package/lib/esm/function/arithmetic/dotDivide.js +22 -64
  308. package/lib/esm/function/arithmetic/dotMultiply.js +16 -60
  309. package/lib/esm/function/arithmetic/dotPow.js +30 -62
  310. package/lib/esm/function/arithmetic/exp.js +8 -11
  311. package/lib/esm/function/arithmetic/expm1.js +10 -9
  312. package/lib/esm/function/arithmetic/fix.js +18 -18
  313. package/lib/esm/function/arithmetic/floor.js +26 -26
  314. package/lib/esm/function/arithmetic/gcd.js +26 -70
  315. package/lib/esm/function/arithmetic/hypot.js +7 -6
  316. package/lib/esm/function/arithmetic/invmod.js +1 -1
  317. package/lib/esm/function/arithmetic/lcm.js +26 -70
  318. package/lib/esm/function/arithmetic/log.js +7 -10
  319. package/lib/esm/function/arithmetic/log10.js +1 -3
  320. package/lib/esm/function/arithmetic/log1p.js +4 -6
  321. package/lib/esm/function/arithmetic/log2.js +1 -3
  322. package/lib/esm/function/arithmetic/mod.js +21 -62
  323. package/lib/esm/function/arithmetic/multiply.js +23 -27
  324. package/lib/esm/function/arithmetic/multiplyScalar.js +2 -13
  325. package/lib/esm/function/arithmetic/norm.js +0 -4
  326. package/lib/esm/function/arithmetic/nthRoot.js +41 -76
  327. package/lib/esm/function/arithmetic/nthRoots.js +2 -2
  328. package/lib/esm/function/arithmetic/round.js +26 -28
  329. package/lib/esm/function/arithmetic/sign.js +5 -7
  330. package/lib/esm/function/arithmetic/sqrt.js +5 -8
  331. package/lib/esm/function/arithmetic/square.js +6 -9
  332. package/lib/esm/function/arithmetic/subtract.js +31 -95
  333. package/lib/esm/function/arithmetic/unaryMinus.js +6 -16
  334. package/lib/esm/function/arithmetic/unaryPlus.js +2 -4
  335. package/lib/esm/function/bitwise/bitAnd.js +16 -59
  336. package/lib/esm/function/bitwise/bitNot.js +2 -4
  337. package/lib/esm/function/bitwise/bitOr.js +16 -59
  338. package/lib/esm/function/bitwise/bitXor.js +16 -59
  339. package/lib/esm/function/bitwise/leftShift.js +39 -61
  340. package/lib/esm/function/bitwise/rightArithShift.js +39 -61
  341. package/lib/esm/function/bitwise/rightLogShift.js +39 -61
  342. package/lib/esm/function/bitwise/useMatrixForArrayScalar.js +13 -0
  343. package/lib/esm/function/complex/arg.js +1 -3
  344. package/lib/esm/function/complex/conj.js +3 -12
  345. package/lib/esm/function/complex/im.js +4 -15
  346. package/lib/esm/function/complex/re.js +3 -15
  347. package/lib/esm/function/geometry/distance.js +2 -2
  348. package/lib/esm/function/logical/and.js +35 -57
  349. package/lib/esm/function/logical/not.js +3 -6
  350. package/lib/esm/function/logical/or.js +16 -61
  351. package/lib/esm/function/logical/xor.js +16 -61
  352. package/lib/esm/function/matrix/diff.js +3 -8
  353. package/lib/esm/function/matrix/ones.js +2 -1
  354. package/lib/esm/function/matrix/rotate.js +5 -5
  355. package/lib/esm/function/matrix/sqrtm.js +3 -2
  356. package/lib/esm/function/matrix/transpose.js +47 -50
  357. package/lib/esm/function/matrix/zeros.js +2 -1
  358. package/lib/esm/function/probability/factorial.js +1 -3
  359. package/lib/esm/function/probability/gamma.js +38 -39
  360. package/lib/esm/function/probability/kldivergence.js +3 -2
  361. package/lib/esm/function/probability/lgamma.js +29 -29
  362. package/lib/esm/function/relational/compare.js +21 -67
  363. package/lib/esm/function/relational/compareNatural.js +54 -49
  364. package/lib/esm/function/relational/compareText.js +10 -42
  365. package/lib/esm/function/relational/compareUnits.js +15 -0
  366. package/lib/esm/function/relational/equal.js +19 -79
  367. package/lib/esm/function/relational/equalScalar.js +6 -9
  368. package/lib/esm/function/relational/larger.js +23 -73
  369. package/lib/esm/function/relational/largerEq.js +23 -73
  370. package/lib/esm/function/relational/smaller.js +23 -73
  371. package/lib/esm/function/relational/smallerEq.js +23 -73
  372. package/lib/esm/function/relational/unequal.js +19 -79
  373. package/lib/esm/function/special/erf.js +1 -3
  374. package/lib/esm/function/statistics/std.js +10 -2
  375. package/lib/esm/function/string/format.js +2 -2
  376. package/lib/esm/function/string/hex.js +1 -2
  377. package/lib/esm/function/trigonometry/acos.js +4 -7
  378. package/lib/esm/function/trigonometry/acosh.js +2 -6
  379. package/lib/esm/function/trigonometry/acot.js +6 -10
  380. package/lib/esm/function/trigonometry/acoth.js +4 -7
  381. package/lib/esm/function/trigonometry/acsc.js +6 -10
  382. package/lib/esm/function/trigonometry/acsch.js +4 -7
  383. package/lib/esm/function/trigonometry/asec.js +6 -9
  384. package/lib/esm/function/trigonometry/asech.js +4 -7
  385. package/lib/esm/function/trigonometry/asin.js +5 -9
  386. package/lib/esm/function/trigonometry/asinh.js +4 -8
  387. package/lib/esm/function/trigonometry/atan.js +5 -10
  388. package/lib/esm/function/trigonometry/atan2.js +26 -65
  389. package/lib/esm/function/trigonometry/atanh.js +4 -8
  390. package/lib/esm/function/trigonometry/cos.js +11 -22
  391. package/lib/esm/function/trigonometry/cosh.js +5 -20
  392. package/lib/esm/function/trigonometry/cot.js +10 -20
  393. package/lib/esm/function/trigonometry/coth.js +6 -20
  394. package/lib/esm/function/trigonometry/csc.js +12 -22
  395. package/lib/esm/function/trigonometry/csch.js +6 -20
  396. package/lib/esm/function/trigonometry/sec.js +12 -22
  397. package/lib/esm/function/trigonometry/sech.js +6 -20
  398. package/lib/esm/function/trigonometry/sin.js +11 -23
  399. package/lib/esm/function/trigonometry/sinh.js +5 -21
  400. package/lib/esm/function/trigonometry/tan.js +11 -23
  401. package/lib/esm/function/trigonometry/tanh.js +5 -21
  402. package/lib/esm/function/trigonometry/trigUnit.js +15 -0
  403. package/lib/esm/function/unit/to.js +8 -43
  404. package/lib/esm/function/utils/clone.js +1 -1
  405. package/lib/esm/function/utils/hasNumericValue.js +3 -1
  406. package/lib/esm/function/utils/isInteger.js +2 -4
  407. package/lib/esm/function/utils/isNaN.js +1 -1
  408. package/lib/esm/function/utils/isNegative.js +3 -7
  409. package/lib/esm/function/utils/isNumeric.js +4 -10
  410. package/lib/esm/function/utils/isPositive.js +3 -7
  411. package/lib/esm/function/utils/isPrime.js +1 -3
  412. package/lib/esm/function/utils/isZero.js +13 -17
  413. package/lib/esm/function/utils/numeric.js +11 -4
  414. package/lib/esm/function/utils/typeOf.js +38 -44
  415. package/lib/esm/type/bignumber/function/bignumber.js +1 -3
  416. package/lib/esm/type/boolean.js +1 -3
  417. package/lib/esm/type/chain/Chain.js +23 -3
  418. package/lib/esm/type/complex/Complex.js +4 -0
  419. package/lib/esm/type/complex/function/complex.js +1 -3
  420. package/lib/esm/type/fraction/Fraction.js +4 -0
  421. package/lib/esm/type/fraction/function/fraction.js +1 -3
  422. package/lib/esm/type/matrix/DenseMatrix.js +15 -1
  423. package/lib/esm/type/matrix/SparseMatrix.js +9 -0
  424. package/lib/esm/type/matrix/utils/{algorithm01.js → matAlgo01xDSid.js} +2 -2
  425. package/lib/esm/type/matrix/utils/{algorithm02.js → matAlgo02xDS0.js} +3 -3
  426. package/lib/esm/type/matrix/utils/{algorithm03.js → matAlgo03xDSf.js} +3 -3
  427. package/lib/esm/type/matrix/utils/{algorithm04.js → matAlgo04xSidSid.js} +5 -5
  428. package/lib/esm/type/matrix/utils/{algorithm05.js → matAlgo05xSfSf.js} +3 -3
  429. package/lib/esm/type/matrix/utils/{algorithm06.js → matAlgo06xS0S0.js} +3 -3
  430. package/lib/esm/type/matrix/utils/{algorithm07.js → matAlgo07xSSf.js} +3 -3
  431. package/lib/esm/type/matrix/utils/{algorithm08.js → matAlgo08xS0Sid.js} +4 -4
  432. package/lib/esm/type/matrix/utils/{algorithm09.js → matAlgo09xS0Sf.js} +3 -3
  433. package/lib/esm/type/matrix/utils/{algorithm10.js → matAlgo10xSids.js} +3 -3
  434. package/lib/esm/type/matrix/utils/{algorithm11.js → matAlgo11xS0s.js} +3 -3
  435. package/lib/esm/type/matrix/utils/{algorithm12.js → matAlgo12xSfs.js} +3 -3
  436. package/lib/esm/type/matrix/utils/{algorithm13.js → matAlgo13xDD.js} +3 -3
  437. package/lib/esm/type/matrix/utils/{algorithm14.js → matAlgo14xDs.js} +3 -3
  438. package/lib/esm/type/matrix/utils/matrixAlgorithmSuite.js +168 -0
  439. package/lib/esm/type/number.js +1 -3
  440. package/lib/esm/type/string.js +1 -3
  441. package/lib/esm/type/unit/Unit.js +61 -13
  442. package/lib/esm/type/unit/function/createUnit.js +2 -1
  443. package/lib/esm/type/unit/function/unit.js +5 -3
  444. package/lib/esm/utils/is.js +18 -18
  445. package/lib/esm/utils/snapshot.js +22 -48
  446. package/lib/esm/version.js +1 -1
  447. package/package.json +21 -24
  448. package/types/index.d.ts +215 -183
  449. package/types/index.ts +358 -144
  450. package/lib/cjs/utils/polyfills.js +0 -14
  451. package/lib/esm/utils/polyfills.js +0 -12
@@ -11,7 +11,7 @@ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers
11
11
 
12
12
  var _object = require("../../../utils/object.js");
13
13
 
14
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
14
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
15
15
 
16
16
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
17
17
 
@@ -84,7 +84,7 @@ function createComplexEigs(_ref) {
84
84
 
85
85
  if (findVectors) {
86
86
  vectors = findEigenvectors(arr, N, C, R, values, prec, type);
87
- vectors = matrixFromColumns.apply(void 0, (0, _toConsumableArray2.default)(vectors));
87
+ vectors = matrixFromColumns.apply(void 0, (0, _toConsumableArray2["default"])(vectors));
88
88
  }
89
89
 
90
90
  return {
@@ -366,7 +366,7 @@ function createComplexEigs(_ref) {
366
366
  } else if (n === 2 || smaller(abs(arr[n - 2][n - 3]), prec)) {
367
367
  lastConvergenceBefore = 0;
368
368
  var ll = eigenvalues2x2(arr[n - 2][n - 2], arr[n - 2][n - 1], arr[n - 1][n - 2], arr[n - 1][n - 1]);
369
- lambdas.push.apply(lambdas, (0, _toConsumableArray2.default)(ll)); // keep track of transformations
369
+ lambdas.push.apply(lambdas, (0, _toConsumableArray2["default"])(ll)); // keep track of transformations
370
370
 
371
371
  if (findVectors) {
372
372
  Sdiag.unshift(jordanBase2x2(arr[n - 2][n - 2], arr[n - 2][n - 1], arr[n - 1][n - 2], arr[n - 1][n - 1], ll[0], ll[1], prec, type));
@@ -495,7 +495,7 @@ function createComplexEigs(_ref) {
495
495
  solutions = solutions.map(function (v) {
496
496
  return multiply(correction, v);
497
497
  });
498
- vectors.push.apply(vectors, (0, _toConsumableArray2.default)(solutions.map(function (v) {
498
+ vectors.push.apply(vectors, (0, _toConsumableArray2["default"])(solutions.map(function (v) {
499
499
  return flatten(v);
500
500
  })));
501
501
  };
@@ -579,7 +579,7 @@ function createComplexEigs(_ref) {
579
579
  for (var i = 0; i < arr.length; i++) {
580
580
  var _arr$i;
581
581
 
582
- (_arr$i = arr[i]).push.apply(_arr$i, (0, _toConsumableArray2.default)(Array(N - arr[i].length).fill(0)));
582
+ (_arr$i = arr[i]).push.apply(_arr$i, (0, _toConsumableArray2["default"])(Array(N - arr[i].length).fill(0)));
583
583
  } // add rows
584
584
 
585
585
 
@@ -106,9 +106,9 @@ var createFft = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functio
106
106
  if (len === 1) return [arr[0]];
107
107
 
108
108
  if (len % 2 === 0) {
109
- var ret = [].concat((0, _toConsumableArray2.default)(_fft(arr.filter(function (_, i) {
109
+ var ret = [].concat((0, _toConsumableArray2["default"])(_fft(arr.filter(function (_, i) {
110
110
  return i % 2 === 0;
111
- }), len / 2)), (0, _toConsumableArray2.default)(_fft(arr.filter(function (_, i) {
111
+ }), len / 2)), (0, _toConsumableArray2["default"])(_fft(arr.filter(function (_, i) {
112
112
  return i % 2 === 1;
113
113
  }), len / 2)));
114
114
 
@@ -7,7 +7,7 @@ exports.createMatrixFromColumns = void 0;
7
7
 
8
8
  var _factory = require("../../utils/factory.js");
9
9
 
10
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
10
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
11
11
 
12
12
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
13
13
 
@@ -7,7 +7,7 @@ exports.createMatrixFromRows = void 0;
7
7
 
8
8
  var _factory = require("../../utils/factory.js");
9
9
 
10
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
10
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
11
11
 
12
12
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
13
13
 
@@ -38,6 +38,7 @@ var createOnes = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
38
38
  *
39
39
  * Examples:
40
40
  *
41
+ * math.ones() // returns []
41
42
  * math.ones(3) // returns [1, 1, 1]
42
43
  * math.ones(3, 2) // returns [[1, 1], [1, 1], [1, 1]]
43
44
  * math.ones(3, 2, 'dense') // returns Dense Matrix [[1, 1], [1, 1], [1, 1]]
@@ -49,7 +50,7 @@ var createOnes = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
49
50
  *
50
51
  * zeros, identity, size, range
51
52
  *
52
- * @param {...number | Array} size The size of each dimension of the matrix
53
+ * @param {...(number|BigNumber) | Array} size The size of each dimension of the matrix
53
54
  * @param {string} [format] The Matrix storage format
54
55
  *
55
56
  * @return {Array | Matrix | number} A matrix filled with ones
@@ -27,13 +27,13 @@ var createRotate = /* #__PURE__ */(0, _factory.factory)(name, dependencies, func
27
27
  *
28
28
  * Examples:
29
29
  *
30
- * math.rotate([11, 12], math.pi / 2) // returns matrix([-12, 11])
31
- * math.rotate(matrix([11, 12]), math.pi / 2) // returns matrix([-12, 11])
30
+ * math.rotate([11, 12], math.pi / 2) // returns [-12, 11]
31
+ * math.rotate(matrix([11, 12]), math.pi / 2) // returns [-12, 11]
32
32
  *
33
- * math.rotate([1, 0, 0], unit('90deg'), [0, 0, 1]) // returns matrix([0, 1, 0])
34
- * math.rotate(matrix([1, 0, 0]), unit('90deg'), [0, 0, 1]) // returns matrix([0, 1, 0])
33
+ * math.rotate([1, 0, 0], unit('90deg'), [0, 0, 1]) // returns [0, 1, 0]
34
+ * math.rotate(matrix([1, 0, 0]), unit('90deg'), [0, 0, 1]) // returns Matrix [0, 1, 0]
35
35
  *
36
- * math.rotate([1, 0], math.complex(1 + i)) // returns matrix([cos(1 + i) - sin(1 + i), sin(1 + i) + cos(1 + i)])
36
+ * math.rotate([1, 0], math.complex(1 + i)) // returns [cos(1 + i) - sin(1 + i), sin(1 + i) + cos(1 + i)]
37
37
  *
38
38
  * See also:
39
39
  *
@@ -14,12 +14,13 @@ var _array = require("../../utils/array.js");
14
14
  var _factory = require("../../utils/factory.js");
15
15
 
16
16
  var name = 'sqrtm';
17
- var dependencies = ['typed', 'abs', 'add', 'multiply', 'sqrt', 'subtract', 'inv', 'size', 'max', 'identity'];
17
+ var dependencies = ['typed', 'abs', 'add', 'multiply', 'map', 'sqrt', 'subtract', 'inv', 'size', 'max', 'identity'];
18
18
  var createSqrtm = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
19
19
  var typed = _ref.typed,
20
20
  abs = _ref.abs,
21
21
  add = _ref.add,
22
22
  multiply = _ref.multiply,
23
+ map = _ref.map,
23
24
  sqrt = _ref.sqrt,
24
25
  subtract = _ref.subtract,
25
26
  inv = _ref.inv,
@@ -88,7 +89,7 @@ var createSqrtm = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
88
89
  case 1:
89
90
  // Single element Array | Matrix
90
91
  if (size[0] === 1) {
91
- return sqrt(A);
92
+ return map(A, sqrt);
92
93
  } else {
93
94
  throw new RangeError('Matrix must be square ' + '(size: ' + (0, _string.format)(size) + ')');
94
95
  }
@@ -39,59 +39,58 @@ var createTranspose = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
39
39
  * @param {Array | Matrix} x Matrix to be transposed
40
40
  * @return {Array | Matrix} The transposed matrix
41
41
  */
42
- return typed('transpose', {
42
+ return typed(name, {
43
43
  Array: function Array(x) {
44
- // use dense matrix implementation
45
- return this(matrix(x)).valueOf();
44
+ return transposeMatrix(matrix(x)).valueOf();
46
45
  },
47
- Matrix: function Matrix(x) {
48
- // matrix size
49
- var size = x.size(); // result
50
-
51
- var c; // process dimensions
52
-
53
- switch (size.length) {
54
- case 1:
55
- // vector
56
- c = x.clone();
57
- break;
58
-
59
- case 2:
60
- {
61
- // rows and columns
62
- var rows = size[0];
63
- var columns = size[1]; // check columns
64
-
65
- if (columns === 0) {
66
- // throw exception
67
- throw new RangeError('Cannot transpose a 2D matrix with no columns (size: ' + (0, _string.format)(size) + ')');
68
- } // process storage format
69
-
70
-
71
- switch (x.storage()) {
72
- case 'dense':
73
- c = _denseTranspose(x, rows, columns);
74
- break;
75
-
76
- case 'sparse':
77
- c = _sparseTranspose(x, rows, columns);
78
- break;
79
- }
80
- }
81
- break;
46
+ Matrix: transposeMatrix,
47
+ any: _object.clone // scalars
82
48
 
83
- default:
84
- // multi dimensional
85
- throw new RangeError('Matrix must be a vector or two dimensional (size: ' + (0, _string.format)(this._size) + ')');
86
- }
49
+ });
87
50
 
88
- return c;
89
- },
90
- // scalars
91
- any: function any(x) {
92
- return (0, _object.clone)(x);
51
+ function transposeMatrix(x) {
52
+ // matrix size
53
+ var size = x.size(); // result
54
+
55
+ var c; // process dimensions
56
+
57
+ switch (size.length) {
58
+ case 1:
59
+ // vector
60
+ c = x.clone();
61
+ break;
62
+
63
+ case 2:
64
+ {
65
+ // rows and columns
66
+ var rows = size[0];
67
+ var columns = size[1]; // check columns
68
+
69
+ if (columns === 0) {
70
+ // throw exception
71
+ throw new RangeError('Cannot transpose a 2D matrix with no columns (size: ' + (0, _string.format)(size) + ')');
72
+ } // process storage format
73
+
74
+
75
+ switch (x.storage()) {
76
+ case 'dense':
77
+ c = _denseTranspose(x, rows, columns);
78
+ break;
79
+
80
+ case 'sparse':
81
+ c = _sparseTranspose(x, rows, columns);
82
+ break;
83
+ }
84
+ }
85
+ break;
86
+
87
+ default:
88
+ // multi dimensional
89
+ throw new RangeError('Matrix must be a vector or two dimensional (size: ' + (0, _string.format)(size) + ')');
93
90
  }
94
- });
91
+
92
+ return c;
93
+ }
95
94
 
96
95
  function _denseTranspose(m, rows, columns) {
97
96
  // matrix array
@@ -36,6 +36,7 @@ var createZeros = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
36
36
  *
37
37
  * Examples:
38
38
  *
39
+ * math.zeros() // returns []
39
40
  * math.zeros(3) // returns [0, 0, 0]
40
41
  * math.zeros(3, 2) // returns [[0, 0], [0, 0], [0, 0]]
41
42
  * math.zeros(3, 'dense') // returns [0, 0, 0]
@@ -47,7 +48,7 @@ var createZeros = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
47
48
  *
48
49
  * ones, identity, size, range
49
50
  *
50
- * @param {...number | Array} size The size of each dimension of the matrix
51
+ * @param {...(number|BigNumber) | Array} size The size of each dimension of the matrix
51
52
  * @param {string} [format] The Matrix storage format
52
53
  *
53
54
  * @return {Array | Matrix} A matrix filled with zeros
@@ -52,9 +52,11 @@ var createFactorial = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
52
52
 
53
53
  return gamma(n.plus(1));
54
54
  },
55
- 'Array | Matrix': function ArrayMatrix(n) {
56
- return (0, _collection.deepMap)(n, this);
57
- }
55
+ 'Array | Matrix': typed.referToSelf(function (self) {
56
+ return function (n) {
57
+ return (0, _collection.deepMap)(n, self);
58
+ };
59
+ })
58
60
  });
59
61
  });
60
62
  exports.createFactorial = createFactorial;
@@ -5,8 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.createGamma = void 0;
7
7
 
8
- var _collection = require("../../utils/collection.js");
9
-
10
8
  var _factory = require("../../utils/factory.js");
11
9
 
12
10
  var _index = require("../../plain/number/index.js");
@@ -19,13 +17,14 @@ var createGamma = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
19
17
  multiplyScalar = _ref.multiplyScalar,
20
18
  pow = _ref.pow,
21
19
  _BigNumber = _ref.BigNumber,
22
- _Complex = _ref.Complex;
20
+ Complex = _ref.Complex;
23
21
 
24
22
  /**
25
23
  * Compute the gamma function of a value using Lanczos approximation for
26
24
  * small values, and an extended Stirling approximation for large values.
27
25
  *
28
- * For matrices, the function is evaluated element wise.
26
+ * To avoid confusion with the matrix Gamma function, this function does
27
+ * not apply to matrices.
29
28
  *
30
29
  * Syntax:
31
30
  *
@@ -41,51 +40,53 @@ var createGamma = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
41
40
  *
42
41
  * combinations, factorial, permutations
43
42
  *
44
- * @param {number | Array | Matrix} n A real or complex number
45
- * @return {number | Array | Matrix} The gamma of `n`
43
+ * @param {number | BigNumber | Complex} n A real or complex number
44
+ * @return {number | BigNumber | Complex} The gamma of `n`
46
45
  */
47
- return typed(name, {
48
- number: _index.gammaNumber,
49
- Complex: function Complex(n) {
50
- if (n.im === 0) {
51
- return this(n.re);
52
- } // Lanczos approximation doesn't work well with real part lower than 0.5
53
- // So reflection formula is required
46
+ function gammaComplex(n) {
47
+ if (n.im === 0) {
48
+ return (0, _index.gammaNumber)(n.re);
49
+ } // Lanczos approximation doesn't work well with real part lower than 0.5
50
+ // So reflection formula is required
54
51
 
55
52
 
56
- if (n.re < 0.5) {
57
- // Euler's reflection formula
58
- // gamma(1-z) * gamma(z) = PI / sin(PI * z)
59
- // real part of Z should not be integer [sin(PI) == 0 -> 1/0 - undefined]
60
- // thanks to imperfect sin implementation sin(PI * n) != 0
61
- // we can safely use it anyway
62
- var _t = new _Complex(1 - n.re, -n.im);
53
+ if (n.re < 0.5) {
54
+ // Euler's reflection formula
55
+ // gamma(1-z) * gamma(z) = PI / sin(PI * z)
56
+ // real part of Z should not be integer [sin(PI) == 0 -> 1/0 - undefined]
57
+ // thanks to imperfect sin implementation sin(PI * n) != 0
58
+ // we can safely use it anyway
59
+ var _t = new Complex(1 - n.re, -n.im);
63
60
 
64
- var r = new _Complex(Math.PI * n.re, Math.PI * n.im);
65
- return new _Complex(Math.PI).div(r.sin()).div(this(_t));
66
- } // Lanczos approximation
67
- // z -= 1
61
+ var r = new Complex(Math.PI * n.re, Math.PI * n.im);
62
+ return new Complex(Math.PI).div(r.sin()).div(gammaComplex(_t));
63
+ } // Lanczos approximation
64
+ // z -= 1
68
65
 
69
66
 
70
- n = new _Complex(n.re - 1, n.im); // x = gammaPval[0]
67
+ n = new Complex(n.re - 1, n.im); // x = gammaPval[0]
71
68
 
72
- var x = new _Complex(_index.gammaP[0], 0); // for (i, gammaPval) in enumerate(gammaP):
69
+ var x = new Complex(_index.gammaP[0], 0); // for (i, gammaPval) in enumerate(gammaP):
73
70
 
74
- for (var i = 1; i < _index.gammaP.length; ++i) {
75
- // x += gammaPval / (z + i)
76
- var gammaPval = new _Complex(_index.gammaP[i], 0);
77
- x = x.add(gammaPval.div(n.add(i)));
78
- } // t = z + gammaG + 0.5
71
+ for (var i = 1; i < _index.gammaP.length; ++i) {
72
+ // x += gammaPval / (z + i)
73
+ var gammaPval = new Complex(_index.gammaP[i], 0);
74
+ x = x.add(gammaPval.div(n.add(i)));
75
+ } // t = z + gammaG + 0.5
79
76
 
80
77
 
81
- var t = new _Complex(n.re + _index.gammaG + 0.5, n.im); // y = sqrt(2 * pi) * t ** (z + 0.5) * exp(-t) * x
78
+ var t = new Complex(n.re + _index.gammaG + 0.5, n.im); // y = sqrt(2 * pi) * t ** (z + 0.5) * exp(-t) * x
82
79
 
83
- var twoPiSqrt = Math.sqrt(2 * Math.PI);
84
- var tpow = t.pow(n.add(0.5));
85
- var expt = t.neg().exp(); // y = [x] * [sqrt(2 * pi)] * [t ** (z + 0.5)] * [exp(-t)]
80
+ var twoPiSqrt = Math.sqrt(2 * Math.PI);
81
+ var tpow = t.pow(n.add(0.5));
82
+ var expt = t.neg().exp(); // y = [x] * [sqrt(2 * pi)] * [t ** (z + 0.5)] * [exp(-t)]
86
83
 
87
- return x.mul(twoPiSqrt).mul(tpow).mul(expt);
88
- },
84
+ return x.mul(twoPiSqrt).mul(tpow).mul(expt);
85
+ }
86
+
87
+ return typed(name, {
88
+ number: _index.gammaNumber,
89
+ Complex: gammaComplex,
89
90
  BigNumber: function BigNumber(n) {
90
91
  if (n.isInteger()) {
91
92
  return n.isNegative() || n.isZero() ? new _BigNumber(Infinity) : bigFactorial(n.minus(1));
@@ -96,9 +97,6 @@ var createGamma = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
96
97
  }
97
98
 
98
99
  throw new Error('Integer BigNumber expected');
99
- },
100
- 'Array | Matrix': function ArrayMatrix(n) {
101
- return (0, _collection.deepMap)(n, this);
102
100
  }
103
101
  });
104
102
  /**
@@ -8,13 +8,14 @@ exports.createKldivergence = void 0;
8
8
  var _factory = require("../../utils/factory.js");
9
9
 
10
10
  var name = 'kldivergence';
11
- var dependencies = ['typed', 'matrix', 'divide', 'sum', 'multiply', 'dotDivide', 'log', 'isNumeric'];
11
+ var dependencies = ['typed', 'matrix', 'divide', 'sum', 'multiply', 'map', 'dotDivide', 'log', 'isNumeric'];
12
12
  var createKldivergence = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
13
13
  var typed = _ref.typed,
14
14
  matrix = _ref.matrix,
15
15
  divide = _ref.divide,
16
16
  sum = _ref.sum,
17
17
  multiply = _ref.multiply,
18
+ map = _ref.map,
18
19
  dotDivide = _ref.dotDivide,
19
20
  log = _ref.log,
20
21
  isNumeric = _ref.isNumeric;
@@ -81,7 +82,9 @@ var createKldivergence = /* #__PURE__ */(0, _factory.factory)(name, dependencies
81
82
 
82
83
  var qnorm = divide(q, sum(q));
83
84
  var pnorm = divide(p, sum(p));
84
- var result = sum(multiply(qnorm, log(dotDivide(qnorm, pnorm))));
85
+ var result = sum(multiply(qnorm, map(dotDivide(qnorm, pnorm), function (x) {
86
+ return log(x);
87
+ })));
85
88
 
86
89
  if (isNumeric(result)) {
87
90
  return result;
@@ -19,7 +19,7 @@ var _number = require("../../utils/number.js");
19
19
  var name = 'lgamma';
20
20
  var dependencies = ['Complex', 'typed'];
21
21
  var createLgamma = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
22
- var _Complex = _ref.Complex,
22
+ var Complex = _ref.Complex,
23
23
  typed = _ref.typed;
24
24
  // Stirling series is non-convergent, we need to use the recurrence `lgamma(z) = lgamma(z+1) - log z` to get
25
25
  // sufficient accuracy.
@@ -65,38 +65,38 @@ var createLgamma = /* #__PURE__ */(0, _factory.factory)(name, dependencies, func
65
65
 
66
66
  return typed(name, {
67
67
  number: _index.lgammaNumber,
68
- Complex: function Complex(n) {
69
- var TWOPI = 6.2831853071795864769252842; // 2*pi
70
-
71
- var LOGPI = 1.1447298858494001741434262; // log(pi)
72
-
73
- var REFLECTION = 0.1;
74
-
75
- if (n.isNaN()) {
76
- return new _Complex(NaN, NaN);
77
- } else if (n.im === 0) {
78
- return new _Complex((0, _index.lgammaNumber)(n.re), 0);
79
- } else if (n.re >= SMALL_RE || Math.abs(n.im) >= SMALL_IM) {
80
- return lgammaStirling(n);
81
- } else if (n.re <= REFLECTION) {
82
- // Reflection formula. see Proposition 3.1 in [1]
83
- var tmp = (0, _number.copysign)(TWOPI, n.im) * Math.floor(0.5 * n.re + 0.25); // TODO: `complex.js sin` doesn't have extremely high precision, so this value `a` may lose a little precision,
84
- // causing the computation results to be less accurate than the lgamma of real numbers
85
-
86
- var a = n.mul(Math.PI).sin().log();
87
- var b = this(new _Complex(1 - n.re, -n.im));
88
- return new _Complex(LOGPI, tmp).sub(a).sub(b);
89
- } else if (n.im >= 0) {
90
- return lgammaRecurrence(n);
91
- } else {
92
- return lgammaRecurrence(n.conjugate()).conjugate();
93
- }
94
- },
68
+ Complex: lgammaComplex,
95
69
  BigNumber: function BigNumber() {
96
70
  throw new Error("mathjs doesn't yet provide an implementation of the algorithm lgamma for BigNumber");
97
71
  }
98
72
  });
99
73
 
74
+ function lgammaComplex(n) {
75
+ var TWOPI = 6.2831853071795864769252842; // 2*pi
76
+
77
+ var LOGPI = 1.1447298858494001741434262; // log(pi)
78
+
79
+ var REFLECTION = 0.1;
80
+
81
+ if (n.isNaN()) {
82
+ return new Complex(NaN, NaN);
83
+ } else if (n.im === 0) {
84
+ return new Complex((0, _index.lgammaNumber)(n.re), 0);
85
+ } else if (n.re >= SMALL_RE || Math.abs(n.im) >= SMALL_IM) {
86
+ return lgammaStirling(n);
87
+ } else if (n.re <= REFLECTION) {
88
+ // Reflection formula. see Proposition 3.1 in [1]
89
+ var tmp = (0, _number.copysign)(TWOPI, n.im) * Math.floor(0.5 * n.re + 0.25);
90
+ var a = n.mul(Math.PI).sin().log();
91
+ var b = lgammaComplex(new Complex(1 - n.re, -n.im));
92
+ return new Complex(LOGPI, tmp).sub(a).sub(b);
93
+ } else if (n.im >= 0) {
94
+ return lgammaRecurrence(n);
95
+ } else {
96
+ return lgammaRecurrence(n.conjugate()).conjugate();
97
+ }
98
+ }
99
+
100
100
  function lgammaStirling(z) {
101
101
  // formula ref in [2]
102
102
  // computation ref:
@@ -106,7 +106,7 @@ var createLgamma = /* #__PURE__ */(0, _factory.factory)(name, dependencies, func
106
106
  // => (x - 0.5) * log(x) - x + log(2PI) / 2
107
107
  var leftPart = z.sub(0.5).mul(z.log()).sub(z).add(_index.lnSqrt2PI); // right part
108
108
 
109
- var rz = new _Complex(1, 0).div(z);
109
+ var rz = new Complex(1, 0).div(z);
110
110
  var rzz = rz.div(z);
111
111
  var a = coeffs[0];
112
112
  var b = coeffs[1];
@@ -140,7 +140,7 @@ var createLgamma = /* #__PURE__ */(0, _factory.factory)(name, dependencies, func
140
140
  z = z.add(1);
141
141
  }
142
142
 
143
- return lgammaStirling(z).sub(shiftprod.log()).sub(new _Complex(0, signflips * 2 * Math.PI * 1));
143
+ return lgammaStirling(z).sub(shiftprod.log()).sub(new Complex(0, signflips * 2 * Math.PI * 1));
144
144
  }
145
145
  });
146
146
  exports.createLgamma = createLgamma;
@@ -9,13 +9,13 @@ exports.createRng = createRng;
9
9
 
10
10
  var _seedrandom = _interopRequireDefault(require("seedrandom"));
11
11
 
12
- var singletonRandom = /* #__PURE__ */(0, _seedrandom.default)(Date.now());
12
+ var singletonRandom = /* #__PURE__ */(0, _seedrandom["default"])(Date.now());
13
13
 
14
14
  function createRng(randomSeed) {
15
15
  var random; // create a new random generator with given seed
16
16
 
17
17
  function setSeed(seed) {
18
- random = seed === null ? singletonRandom : (0, _seedrandom.default)(String(seed));
18
+ random = seed === null ? singletonRandom : (0, _seedrandom["default"])(String(seed));
19
19
  } // initialize a seeded pseudo random number generator with config's random seed
20
20
 
21
21