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
@@ -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
@@ -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
 
@@ -11,15 +11,15 @@ var _number = require("../../utils/number.js");
11
11
 
12
12
  var _factory = require("../../utils/factory.js");
13
13
 
14
- var _algorithm = require("../../type/matrix/utils/algorithm03.js");
14
+ var _matAlgo03xDSf = require("../../type/matrix/utils/matAlgo03xDSf.js");
15
15
 
16
- var _algorithm2 = require("../../type/matrix/utils/algorithm12.js");
16
+ var _matAlgo12xSfs = require("../../type/matrix/utils/matAlgo12xSfs.js");
17
17
 
18
- var _algorithm3 = require("../../type/matrix/utils/algorithm14.js");
18
+ var _matAlgo05xSfSf = require("../../type/matrix/utils/matAlgo05xSfSf.js");
19
19
 
20
- var _algorithm4 = require("../../type/matrix/utils/algorithm13.js");
20
+ var _matrixAlgorithmSuite = require("../../type/matrix/utils/matrixAlgorithmSuite.js");
21
21
 
22
- var _algorithm5 = require("../../type/matrix/utils/algorithm05.js");
22
+ var _compareUnits = require("./compareUnits.js");
23
23
 
24
24
  var name = 'compare';
25
25
  var dependencies = ['typed', 'config', 'matrix', 'equalScalar', 'BigNumber', 'Fraction', 'DenseMatrix'];
@@ -31,21 +31,22 @@ var createCompare = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
31
31
  BigNumber = _ref.BigNumber,
32
32
  Fraction = _ref.Fraction,
33
33
  DenseMatrix = _ref.DenseMatrix;
34
- var algorithm03 = (0, _algorithm.createAlgorithm03)({
34
+ var matAlgo03xDSf = (0, _matAlgo03xDSf.createMatAlgo03xDSf)({
35
35
  typed: typed
36
36
  });
37
- var algorithm05 = (0, _algorithm5.createAlgorithm05)({
37
+ var matAlgo05xSfSf = (0, _matAlgo05xSfSf.createMatAlgo05xSfSf)({
38
38
  typed: typed,
39
39
  equalScalar: equalScalar
40
40
  });
41
- var algorithm12 = (0, _algorithm2.createAlgorithm12)({
41
+ var matAlgo12xSfs = (0, _matAlgo12xSfs.createMatAlgo12xSfs)({
42
42
  typed: typed,
43
43
  DenseMatrix: DenseMatrix
44
44
  });
45
- var algorithm13 = (0, _algorithm4.createAlgorithm13)({
46
- typed: typed
45
+ var matrixAlgorithmSuite = (0, _matrixAlgorithmSuite.createMatrixAlgorithmSuite)({
46
+ typed: typed,
47
+ matrix: matrix
47
48
  });
48
- var algorithm14 = (0, _algorithm3.createAlgorithm14)({
49
+ var compareUnits = (0, _compareUnits.createCompareUnits)({
49
50
  typed: typed
50
51
  });
51
52
  /**
@@ -86,13 +87,13 @@ var createCompare = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
86
87
  * 1 when x > y, -1 when x < y, and 0 when x == y.
87
88
  */
88
89
 
89
- return typed(name, {
90
+ return typed(name, createCompareNumber({
91
+ typed: typed,
92
+ config: config
93
+ }), {
90
94
  'boolean, boolean': function booleanBoolean(x, y) {
91
95
  return x === y ? 0 : x > y ? 1 : -1;
92
96
  },
93
- 'number, number': function numberNumber(x, y) {
94
- return (0, _number.nearlyEqual)(x, y, config.epsilon) ? 0 : x > y ? 1 : -1;
95
- },
96
97
  'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {
97
98
  return (0, _nearlyEqual.nearlyEqual)(x, y, config.epsilon) ? new BigNumber(0) : new BigNumber(x.cmp(y));
98
99
  },
@@ -101,59 +102,12 @@ var createCompare = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
101
102
  },
102
103
  'Complex, Complex': function ComplexComplex() {
103
104
  throw new TypeError('No ordering relation is defined for complex numbers');
104
- },
105
- 'Unit, Unit': function UnitUnit(x, y) {
106
- if (!x.equalBase(y)) {
107
- throw new Error('Cannot compare units with different base');
108
- }
109
-
110
- return this(x.value, y.value);
111
- },
112
- 'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {
113
- return algorithm05(x, y, this);
114
- },
115
- 'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {
116
- return algorithm03(y, x, this, true);
117
- },
118
- 'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {
119
- return algorithm03(x, y, this, false);
120
- },
121
- 'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {
122
- return algorithm13(x, y, this);
123
- },
124
- 'Array, Array': function ArrayArray(x, y) {
125
- // use matrix implementation
126
- return this(matrix(x), matrix(y)).valueOf();
127
- },
128
- 'Array, Matrix': function ArrayMatrix(x, y) {
129
- // use matrix implementation
130
- return this(matrix(x), y);
131
- },
132
- 'Matrix, Array': function MatrixArray(x, y) {
133
- // use matrix implementation
134
- return this(x, matrix(y));
135
- },
136
- 'SparseMatrix, any': function SparseMatrixAny(x, y) {
137
- return algorithm12(x, y, this, false);
138
- },
139
- 'DenseMatrix, any': function DenseMatrixAny(x, y) {
140
- return algorithm14(x, y, this, false);
141
- },
142
- 'any, SparseMatrix': function anySparseMatrix(x, y) {
143
- return algorithm12(y, x, this, true);
144
- },
145
- 'any, DenseMatrix': function anyDenseMatrix(x, y) {
146
- return algorithm14(y, x, this, true);
147
- },
148
- 'Array, any': function ArrayAny(x, y) {
149
- // use matrix implementation
150
- return algorithm14(matrix(x), y, this, false).valueOf();
151
- },
152
- 'any, Array': function anyArray(x, y) {
153
- // use matrix implementation
154
- return algorithm14(matrix(y), x, this, true).valueOf();
155
105
  }
156
- });
106
+ }, compareUnits, matrixAlgorithmSuite({
107
+ SS: matAlgo05xSfSf,
108
+ DS: matAlgo03xDSf,
109
+ Ss: matAlgo12xSfs
110
+ }));
157
111
  });
158
112
  exports.createCompare = createCompare;
159
113
  var createCompareNumber = /* #__PURE__ */(0, _factory.factory)(name, ['typed', 'config'], function (_ref2) {