mathjs 10.1.1 → 10.4.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 (369) hide show
  1. package/HISTORY.md +43 -0
  2. package/docs/expressions/algebra.md +27 -0
  3. package/docs/expressions/syntax.md +31 -2
  4. package/docs/reference/functions/abs.md +6 -0
  5. package/docs/reference/functions/acos.md +6 -0
  6. package/docs/reference/functions/acosh.md +6 -0
  7. package/docs/reference/functions/acot.md +6 -0
  8. package/docs/reference/functions/acoth.md +6 -0
  9. package/docs/reference/functions/acsc.md +6 -0
  10. package/docs/reference/functions/acsch.md +6 -0
  11. package/docs/reference/functions/add.md +6 -0
  12. package/docs/reference/functions/and.md +6 -0
  13. package/docs/reference/functions/apply.md +6 -0
  14. package/docs/reference/functions/arg.md +6 -0
  15. package/docs/reference/functions/asec.md +6 -0
  16. package/docs/reference/functions/asech.md +6 -0
  17. package/docs/reference/functions/asin.md +6 -0
  18. package/docs/reference/functions/asinh.md +6 -0
  19. package/docs/reference/functions/atan.md +6 -0
  20. package/docs/reference/functions/atan2.md +6 -0
  21. package/docs/reference/functions/atanh.md +6 -0
  22. package/docs/reference/functions/bellNumbers.md +6 -0
  23. package/docs/reference/functions/bin.md +6 -0
  24. package/docs/reference/functions/bitAnd.md +6 -0
  25. package/docs/reference/functions/bitNot.md +6 -0
  26. package/docs/reference/functions/bitOr.md +6 -0
  27. package/docs/reference/functions/bitXor.md +6 -0
  28. package/docs/reference/functions/catalan.md +6 -0
  29. package/docs/reference/functions/cbrt.md +6 -0
  30. package/docs/reference/functions/ceil.md +6 -0
  31. package/docs/reference/functions/clone.md +6 -0
  32. package/docs/reference/functions/column.md +6 -0
  33. package/docs/reference/functions/combinations.md +6 -0
  34. package/docs/reference/functions/combinationsWithRep.md +6 -0
  35. package/docs/reference/functions/compare.md +6 -0
  36. package/docs/reference/functions/compareNatural.md +6 -0
  37. package/docs/reference/functions/compareText.md +6 -0
  38. package/docs/reference/functions/compile.md +6 -0
  39. package/docs/reference/functions/composition.md +6 -0
  40. package/docs/reference/functions/concat.md +6 -0
  41. package/docs/reference/functions/conj.md +6 -0
  42. package/docs/reference/functions/cos.md +6 -0
  43. package/docs/reference/functions/cosh.md +6 -0
  44. package/docs/reference/functions/cot.md +6 -0
  45. package/docs/reference/functions/coth.md +6 -0
  46. package/docs/reference/functions/count.md +6 -0
  47. package/docs/reference/functions/cross.md +6 -0
  48. package/docs/reference/functions/csc.md +6 -0
  49. package/docs/reference/functions/csch.md +6 -0
  50. package/docs/reference/functions/ctranspose.md +6 -0
  51. package/docs/reference/functions/cube.md +6 -0
  52. package/docs/reference/functions/cumsum.md +57 -0
  53. package/docs/reference/functions/deepEqual.md +6 -0
  54. package/docs/reference/functions/derivative.md +6 -0
  55. package/docs/reference/functions/det.md +6 -0
  56. package/docs/reference/functions/diag.md +6 -0
  57. package/docs/reference/functions/diff.md +6 -0
  58. package/docs/reference/functions/distance.md +6 -0
  59. package/docs/reference/functions/divide.md +6 -0
  60. package/docs/reference/functions/dot.md +6 -0
  61. package/docs/reference/functions/dotDivide.md +6 -0
  62. package/docs/reference/functions/dotMultiply.md +6 -0
  63. package/docs/reference/functions/dotPow.md +6 -0
  64. package/docs/reference/functions/eigs.md +6 -0
  65. package/docs/reference/functions/equal.md +6 -0
  66. package/docs/reference/functions/equalText.md +6 -0
  67. package/docs/reference/functions/erf.md +6 -0
  68. package/docs/reference/functions/evaluate.md +6 -0
  69. package/docs/reference/functions/exp.md +6 -0
  70. package/docs/reference/functions/expm.md +6 -0
  71. package/docs/reference/functions/expm1.md +6 -0
  72. package/docs/reference/functions/factorial.md +6 -0
  73. package/docs/reference/functions/filter.md +6 -0
  74. package/docs/reference/functions/fix.md +6 -0
  75. package/docs/reference/functions/flatten.md +6 -0
  76. package/docs/reference/functions/floor.md +6 -0
  77. package/docs/reference/functions/forEach.md +6 -0
  78. package/docs/reference/functions/format.md +7 -1
  79. package/docs/reference/functions/gamma.md +6 -0
  80. package/docs/reference/functions/gcd.md +6 -0
  81. package/docs/reference/functions/getMatrixDataType.md +6 -0
  82. package/docs/reference/functions/hasNumericValue.md +6 -0
  83. package/docs/reference/functions/help.md +6 -0
  84. package/docs/reference/functions/hex.md +6 -0
  85. package/docs/reference/functions/hypot.md +6 -0
  86. package/docs/reference/functions/identity.md +6 -0
  87. package/docs/reference/functions/im.md +6 -0
  88. package/docs/reference/functions/intersect.md +6 -0
  89. package/docs/reference/functions/inv.md +6 -0
  90. package/docs/reference/functions/invmod.md +6 -0
  91. package/docs/reference/functions/isInteger.md +6 -0
  92. package/docs/reference/functions/isNaN.md +6 -0
  93. package/docs/reference/functions/isNegative.md +6 -0
  94. package/docs/reference/functions/isNumeric.md +6 -0
  95. package/docs/reference/functions/isPositive.md +6 -0
  96. package/docs/reference/functions/isPrime.md +6 -0
  97. package/docs/reference/functions/isZero.md +6 -0
  98. package/docs/reference/functions/kldivergence.md +6 -0
  99. package/docs/reference/functions/kron.md +6 -0
  100. package/docs/reference/functions/larger.md +6 -0
  101. package/docs/reference/functions/largerEq.md +6 -0
  102. package/docs/reference/functions/lcm.md +6 -0
  103. package/docs/reference/functions/leafCount.md +52 -0
  104. package/docs/reference/functions/leftShift.md +6 -0
  105. package/docs/reference/functions/log.md +6 -0
  106. package/docs/reference/functions/log10.md +6 -0
  107. package/docs/reference/functions/log1p.md +6 -0
  108. package/docs/reference/functions/log2.md +6 -0
  109. package/docs/reference/functions/lsolve.md +6 -0
  110. package/docs/reference/functions/lsolveAll.md +6 -0
  111. package/docs/reference/functions/lup.md +6 -0
  112. package/docs/reference/functions/lusolve.md +6 -0
  113. package/docs/reference/functions/mad.md +6 -0
  114. package/docs/reference/functions/map.md +28 -5
  115. package/docs/reference/functions/matrixFromColumns.md +6 -0
  116. package/docs/reference/functions/matrixFromFunction.md +6 -0
  117. package/docs/reference/functions/matrixFromRows.md +6 -0
  118. package/docs/reference/functions/max.md +6 -0
  119. package/docs/reference/functions/mean.md +6 -0
  120. package/docs/reference/functions/median.md +6 -0
  121. package/docs/reference/functions/min.md +6 -0
  122. package/docs/reference/functions/mod.md +6 -0
  123. package/docs/reference/functions/mode.md +6 -0
  124. package/docs/reference/functions/multinomial.md +6 -0
  125. package/docs/reference/functions/multiply.md +6 -0
  126. package/docs/reference/functions/norm.md +6 -0
  127. package/docs/reference/functions/not.md +6 -0
  128. package/docs/reference/functions/nthRoot.md +6 -0
  129. package/docs/reference/functions/nthRoots.md +6 -0
  130. package/docs/reference/functions/numeric.md +6 -0
  131. package/docs/reference/functions/oct.md +6 -0
  132. package/docs/reference/functions/ones.md +6 -0
  133. package/docs/reference/functions/or.md +6 -0
  134. package/docs/reference/functions/parser.md +6 -0
  135. package/docs/reference/functions/partitionSelect.md +6 -0
  136. package/docs/reference/functions/permutations.md +6 -0
  137. package/docs/reference/functions/pickRandom.md +6 -0
  138. package/docs/reference/functions/pow.md +6 -0
  139. package/docs/reference/functions/print.md +6 -0
  140. package/docs/reference/functions/prod.md +6 -0
  141. package/docs/reference/functions/qr.md +6 -0
  142. package/docs/reference/functions/quantileSeq.md +6 -0
  143. package/docs/reference/functions/random.md +6 -0
  144. package/docs/reference/functions/randomInt.md +6 -0
  145. package/docs/reference/functions/range.md +6 -0
  146. package/docs/reference/functions/rationalize.md +7 -1
  147. package/docs/reference/functions/re.md +6 -0
  148. package/docs/reference/functions/reshape.md +7 -0
  149. package/docs/reference/functions/resize.md +6 -0
  150. package/docs/reference/functions/resolve.md +46 -0
  151. package/docs/reference/functions/rightArithShift.md +6 -0
  152. package/docs/reference/functions/rightLogShift.md +6 -0
  153. package/docs/reference/functions/rotate.md +6 -0
  154. package/docs/reference/functions/rotationMatrix.md +6 -0
  155. package/docs/reference/functions/round.md +6 -0
  156. package/docs/reference/functions/row.md +6 -0
  157. package/docs/reference/functions/sec.md +6 -0
  158. package/docs/reference/functions/sech.md +6 -0
  159. package/docs/reference/functions/setCartesian.md +6 -0
  160. package/docs/reference/functions/setDifference.md +6 -0
  161. package/docs/reference/functions/setDistinct.md +6 -0
  162. package/docs/reference/functions/setIntersect.md +6 -0
  163. package/docs/reference/functions/setIsSubset.md +6 -0
  164. package/docs/reference/functions/setMultiplicity.md +6 -0
  165. package/docs/reference/functions/setPowerset.md +6 -0
  166. package/docs/reference/functions/setSize.md +6 -0
  167. package/docs/reference/functions/setSymDifference.md +6 -0
  168. package/docs/reference/functions/setUnion.md +6 -0
  169. package/docs/reference/functions/sign.md +6 -0
  170. package/docs/reference/functions/simplify.md +43 -6
  171. package/docs/reference/functions/simplifyCore.md +50 -0
  172. package/docs/reference/functions/sin.md +6 -0
  173. package/docs/reference/functions/sinh.md +6 -0
  174. package/docs/reference/functions/size.md +6 -0
  175. package/docs/reference/functions/slu.md +6 -0
  176. package/docs/reference/functions/smaller.md +6 -0
  177. package/docs/reference/functions/smallerEq.md +6 -0
  178. package/docs/reference/functions/sort.md +6 -0
  179. package/docs/reference/functions/sqrt.md +6 -0
  180. package/docs/reference/functions/sqrtm.md +6 -0
  181. package/docs/reference/functions/square.md +6 -0
  182. package/docs/reference/functions/squeeze.md +6 -0
  183. package/docs/reference/functions/std.md +6 -0
  184. package/docs/reference/functions/stirlingS2.md +6 -0
  185. package/docs/reference/functions/subset.md +16 -2
  186. package/docs/reference/functions/subtract.md +6 -0
  187. package/docs/reference/functions/sum.md +8 -1
  188. package/docs/reference/functions/symbolicEqual.md +62 -0
  189. package/docs/reference/functions/tan.md +6 -0
  190. package/docs/reference/functions/tanh.md +6 -0
  191. package/docs/reference/functions/to.md +6 -0
  192. package/docs/reference/functions/trace.md +6 -0
  193. package/docs/reference/functions/transpose.md +6 -0
  194. package/docs/reference/functions/typeOf.md +6 -0
  195. package/docs/reference/functions/unaryMinus.md +6 -0
  196. package/docs/reference/functions/unaryPlus.md +6 -0
  197. package/docs/reference/functions/unequal.md +6 -0
  198. package/docs/reference/functions/usolve.md +6 -0
  199. package/docs/reference/functions/usolveAll.md +6 -0
  200. package/docs/reference/functions/variance.md +6 -0
  201. package/docs/reference/functions/xgcd.md +6 -0
  202. package/docs/reference/functions/xor.md +6 -0
  203. package/docs/reference/functions/zeros.md +6 -0
  204. package/docs/reference/functions.md +6 -1
  205. package/lib/browser/math.js +6 -6
  206. package/lib/browser/math.js.map +1 -1
  207. package/lib/cjs/core/create.js +4 -4
  208. package/lib/cjs/core/function/import.js +3 -3
  209. package/lib/cjs/core/function/typed.js +2 -2
  210. package/lib/cjs/defaultInstance.js +3 -3
  211. package/lib/cjs/entry/allFactoriesAny.js +1 -1
  212. package/lib/cjs/entry/allFactoriesNumber.js +1 -1
  213. package/lib/cjs/entry/configReadonly.js +1 -1
  214. package/lib/cjs/entry/dependenciesAny/dependenciesCumSum.generated.js +26 -0
  215. package/lib/cjs/entry/dependenciesAny/dependenciesCumSumTransform.generated.js +26 -0
  216. package/lib/cjs/entry/dependenciesAny/dependenciesLeafCount.generated.js +23 -0
  217. package/lib/cjs/entry/dependenciesAny/dependenciesRationalize.generated.js +3 -0
  218. package/lib/cjs/entry/dependenciesAny/dependenciesResolve.generated.js +32 -0
  219. package/lib/cjs/entry/dependenciesAny/dependenciesSimplify.generated.js +6 -0
  220. package/lib/cjs/entry/dependenciesAny/dependenciesSimplifyCore.generated.js +65 -0
  221. package/lib/cjs/entry/dependenciesAny/dependenciesSymbolicEqual.generated.js +29 -0
  222. package/lib/cjs/entry/dependenciesAny.generated.js +48 -0
  223. package/lib/cjs/entry/dependenciesNumber/dependenciesCumSum.generated.js +26 -0
  224. package/lib/cjs/entry/dependenciesNumber/dependenciesCumSumTransform.generated.js +26 -0
  225. package/lib/cjs/entry/dependenciesNumber/dependenciesRationalize.generated.js +3 -0
  226. package/lib/cjs/entry/dependenciesNumber/dependenciesResolve.generated.js +32 -0
  227. package/lib/cjs/entry/dependenciesNumber/dependenciesSimplify.generated.js +6 -0
  228. package/lib/cjs/entry/dependenciesNumber/dependenciesSimplifyCore.generated.js +65 -0
  229. package/lib/cjs/entry/dependenciesNumber.generated.js +32 -0
  230. package/lib/cjs/entry/impureFunctionsAny.generated.js +85 -33
  231. package/lib/cjs/entry/impureFunctionsNumber.generated.js +102 -64
  232. package/lib/cjs/entry/pureFunctionsAny.generated.js +68 -64
  233. package/lib/cjs/entry/pureFunctionsNumber.generated.js +51 -47
  234. package/lib/cjs/expression/Help.js +4 -0
  235. package/lib/cjs/expression/Parser.js +1 -1
  236. package/lib/cjs/expression/embeddedDocs/construction/fraction.js +3 -3
  237. package/lib/cjs/expression/embeddedDocs/core/typed.js +1 -1
  238. package/lib/cjs/expression/embeddedDocs/embeddedDocs.js +250 -235
  239. package/lib/cjs/expression/embeddedDocs/function/algebra/leafCount.js +15 -0
  240. package/lib/cjs/expression/embeddedDocs/function/algebra/resolve.js +16 -0
  241. package/lib/cjs/expression/embeddedDocs/function/algebra/simplify.js +1 -1
  242. package/lib/cjs/expression/embeddedDocs/function/algebra/simplifyCore.js +15 -0
  243. package/lib/cjs/expression/embeddedDocs/function/algebra/symbolicEqual.js +15 -0
  244. package/lib/cjs/expression/embeddedDocs/function/matrix/subset.js +2 -2
  245. package/lib/cjs/expression/embeddedDocs/function/statistics/cumsum.js +15 -0
  246. package/lib/cjs/expression/node/FunctionNode.js +80 -61
  247. package/lib/cjs/expression/node/IndexNode.js +1 -1
  248. package/lib/cjs/expression/node/Node.js +3 -3
  249. package/lib/cjs/expression/node/ObjectNode.js +1 -1
  250. package/lib/cjs/expression/node/utils/access.js +1 -1
  251. package/lib/cjs/expression/node/utils/assign.js +1 -1
  252. package/lib/cjs/expression/parse.js +13 -13
  253. package/lib/cjs/expression/transform/cumsum.transform.js +57 -0
  254. package/lib/cjs/expression/transform/sum.transform.js +1 -1
  255. package/lib/cjs/factoriesAny.js +48 -0
  256. package/lib/cjs/factoriesNumber.js +33 -1
  257. package/lib/cjs/function/algebra/decomposition/qr.js +1 -1
  258. package/lib/cjs/function/algebra/leafCount.js +66 -0
  259. package/lib/cjs/function/algebra/rationalize.js +24 -41
  260. package/lib/cjs/function/algebra/resolve.js +106 -0
  261. package/lib/cjs/function/algebra/simplify/simplifyConstant.js +5 -5
  262. package/lib/cjs/function/algebra/simplify/util.js +171 -33
  263. package/lib/cjs/function/algebra/simplify.js +562 -207
  264. package/lib/cjs/function/algebra/{simplify/simplifyCore.js → simplifyCore.js} +68 -44
  265. package/lib/cjs/function/algebra/solver/lsolveAll.js +2 -2
  266. package/lib/cjs/function/algebra/solver/usolveAll.js +2 -2
  267. package/lib/cjs/function/algebra/symbolicEqual.js +88 -0
  268. package/lib/cjs/function/arithmetic/ceil.js +3 -3
  269. package/lib/cjs/function/arithmetic/floor.js +3 -3
  270. package/lib/cjs/function/arithmetic/invmod.js +1 -1
  271. package/lib/cjs/function/arithmetic/norm.js +1 -1
  272. package/lib/cjs/function/arithmetic/round.js +1 -1
  273. package/lib/cjs/function/matrix/eigs/complexEigs.js +13 -11
  274. package/lib/cjs/function/matrix/map.js +53 -15
  275. package/lib/cjs/function/matrix/matrixFromColumns.js +1 -1
  276. package/lib/cjs/function/matrix/matrixFromRows.js +1 -1
  277. package/lib/cjs/function/matrix/subset.js +15 -5
  278. package/lib/cjs/function/probability/util/seededRNG.js +2 -2
  279. package/lib/cjs/function/relational/compareNatural.js +6 -6
  280. package/lib/cjs/function/statistics/cumsum.js +151 -0
  281. package/lib/cjs/function/statistics/sum.js +1 -1
  282. package/lib/cjs/function/string/format.js +1 -1
  283. package/lib/cjs/header.js +2 -2
  284. package/lib/cjs/plain/bignumber/index.js +1 -1
  285. package/lib/cjs/plain/number/combinations.js +18 -6
  286. package/lib/cjs/type/bignumber/BigNumber.js +2 -2
  287. package/lib/cjs/type/bignumber/function/bignumber.js +1 -1
  288. package/lib/cjs/type/boolean.js +2 -2
  289. package/lib/cjs/type/complex/Complex.js +14 -14
  290. package/lib/cjs/type/complex/function/complex.js +1 -1
  291. package/lib/cjs/type/fraction/Fraction.js +6 -6
  292. package/lib/cjs/type/fraction/function/fraction.js +21 -9
  293. package/lib/cjs/type/matrix/DenseMatrix.js +5 -5
  294. package/lib/cjs/type/matrix/SparseMatrix.js +2 -2
  295. package/lib/cjs/type/number.js +1 -1
  296. package/lib/cjs/type/string.js +2 -2
  297. package/lib/cjs/type/unit/Unit.js +8 -8
  298. package/lib/cjs/utils/collection.js +3 -27
  299. package/lib/cjs/utils/customs.js +2 -2
  300. package/lib/cjs/utils/emitter.js +1 -1
  301. package/lib/cjs/utils/function.js +2 -2
  302. package/lib/cjs/utils/is.js +6 -6
  303. package/lib/cjs/utils/latex.js +3 -3
  304. package/lib/cjs/utils/lruQueue.js +1 -1
  305. package/lib/cjs/utils/map.js +3 -3
  306. package/lib/cjs/utils/object.js +2 -2
  307. package/lib/cjs/utils/snapshot.js +7 -7
  308. package/lib/cjs/utils/string.js +2 -2
  309. package/lib/cjs/utils/switch.js +31 -0
  310. package/lib/cjs/version.js +1 -1
  311. package/lib/esm/entry/dependenciesAny/dependenciesCumSum.generated.js +14 -0
  312. package/lib/esm/entry/dependenciesAny/dependenciesCumSumTransform.generated.js +14 -0
  313. package/lib/esm/entry/dependenciesAny/dependenciesLeafCount.generated.js +12 -0
  314. package/lib/esm/entry/dependenciesAny/dependenciesRationalize.generated.js +2 -0
  315. package/lib/esm/entry/dependenciesAny/dependenciesResolve.generated.js +18 -0
  316. package/lib/esm/entry/dependenciesAny/dependenciesSimplify.generated.js +4 -0
  317. package/lib/esm/entry/dependenciesAny/dependenciesSimplifyCore.generated.js +40 -0
  318. package/lib/esm/entry/dependenciesAny/dependenciesSymbolicEqual.generated.js +16 -0
  319. package/lib/esm/entry/dependenciesAny.generated.js +6 -0
  320. package/lib/esm/entry/dependenciesNumber/dependenciesCumSum.generated.js +14 -0
  321. package/lib/esm/entry/dependenciesNumber/dependenciesCumSumTransform.generated.js +14 -0
  322. package/lib/esm/entry/dependenciesNumber/dependenciesRationalize.generated.js +2 -0
  323. package/lib/esm/entry/dependenciesNumber/dependenciesResolve.generated.js +18 -0
  324. package/lib/esm/entry/dependenciesNumber/dependenciesSimplify.generated.js +4 -0
  325. package/lib/esm/entry/dependenciesNumber/dependenciesSimplifyCore.generated.js +40 -0
  326. package/lib/esm/entry/dependenciesNumber.generated.js +4 -0
  327. package/lib/esm/entry/impureFunctionsAny.generated.js +74 -26
  328. package/lib/esm/entry/impureFunctionsNumber.generated.js +89 -53
  329. package/lib/esm/entry/pureFunctionsAny.generated.js +54 -49
  330. package/lib/esm/entry/pureFunctionsNumber.generated.js +36 -31
  331. package/lib/esm/expression/Help.js +4 -0
  332. package/lib/esm/expression/embeddedDocs/construction/fraction.js +3 -3
  333. package/lib/esm/expression/embeddedDocs/core/typed.js +1 -1
  334. package/lib/esm/expression/embeddedDocs/embeddedDocs.js +222 -212
  335. package/lib/esm/expression/embeddedDocs/function/algebra/leafCount.js +8 -0
  336. package/lib/esm/expression/embeddedDocs/function/algebra/resolve.js +9 -0
  337. package/lib/esm/expression/embeddedDocs/function/algebra/simplify.js +1 -1
  338. package/lib/esm/expression/embeddedDocs/function/algebra/simplifyCore.js +8 -0
  339. package/lib/esm/expression/embeddedDocs/function/algebra/symbolicEqual.js +8 -0
  340. package/lib/esm/expression/embeddedDocs/function/matrix/subset.js +2 -2
  341. package/lib/esm/expression/embeddedDocs/function/statistics/cumsum.js +8 -0
  342. package/lib/esm/expression/node/FunctionNode.js +70 -53
  343. package/lib/esm/expression/transform/cumsum.transform.js +48 -0
  344. package/lib/esm/expression/transform/sum.transform.js +1 -1
  345. package/lib/esm/factoriesAny.js +6 -0
  346. package/lib/esm/factoriesNumber.js +4 -0
  347. package/lib/esm/function/algebra/leafCount.js +59 -0
  348. package/lib/esm/function/algebra/rationalize.js +24 -40
  349. package/lib/esm/function/algebra/resolve.js +95 -0
  350. package/lib/esm/function/algebra/simplify/simplifyConstant.js +3 -3
  351. package/lib/esm/function/algebra/simplify/util.js +170 -34
  352. package/lib/esm/function/algebra/simplify.js +557 -202
  353. package/lib/esm/function/algebra/{simplify/simplifyCore.js → simplifyCore.js} +61 -45
  354. package/lib/esm/function/algebra/symbolicEqual.js +80 -0
  355. package/lib/esm/function/matrix/eigs/complexEigs.js +8 -6
  356. package/lib/esm/function/matrix/map.js +53 -15
  357. package/lib/esm/function/matrix/subset.js +15 -5
  358. package/lib/esm/function/statistics/cumsum.js +139 -0
  359. package/lib/esm/function/statistics/sum.js +1 -1
  360. package/lib/esm/function/string/format.js +1 -1
  361. package/lib/esm/plain/number/combinations.js +18 -6
  362. package/lib/esm/type/fraction/function/fraction.js +20 -8
  363. package/lib/esm/utils/collection.js +1 -26
  364. package/lib/esm/utils/switch.js +24 -0
  365. package/lib/esm/version.js +1 -1
  366. package/package.json +15 -10
  367. package/types/index.d.ts +155 -13
  368. package/lib/cjs/function/algebra/simplify/resolve.js +0 -76
  369. package/lib/esm/function/algebra/simplify/resolve.js +0 -67
@@ -131,6 +131,18 @@ Object.defineProperty(exports, "createConstantNode", {
131
131
  }
132
132
  });
133
133
  exports.createCube = exports.createCsch = exports.createCsc = exports.createCoth = exports.createCot = exports.createCosh = exports.createCos = void 0;
134
+ Object.defineProperty(exports, "createCumSum", {
135
+ enumerable: true,
136
+ get: function get() {
137
+ return _cumsum.createCumSum;
138
+ }
139
+ });
140
+ Object.defineProperty(exports, "createCumSumTransform", {
141
+ enumerable: true,
142
+ get: function get() {
143
+ return _cumsumTransform.createCumSumTransform;
144
+ }
145
+ });
134
146
  Object.defineProperty(exports, "createDeepEqual", {
135
147
  enumerable: true,
136
148
  get: function get() {
@@ -325,7 +337,7 @@ Object.defineProperty(exports, "createLargerEq", {
325
337
  return _largerEq.createLargerEqNumber;
326
338
  }
327
339
  });
328
- exports.createLog10 = exports.createLog = exports.createLeftShift = exports.createLcm = void 0;
340
+ exports.createLeftShift = exports.createLcm = void 0;
329
341
  exports.createLog2 = exports.createLog1p = exports.createLog10 = exports.createLog = exports.createLeftShift = exports.createLcm = void 0;
330
342
  Object.defineProperty(exports, "createMad", {
331
343
  enumerable: true,
@@ -579,6 +591,12 @@ Object.defineProperty(exports, "createReplacer", {
579
591
  return _replacer.createReplacer;
580
592
  }
581
593
  });
594
+ Object.defineProperty(exports, "createResolve", {
595
+ enumerable: true,
596
+ get: function get() {
597
+ return _resolve.createResolve;
598
+ }
599
+ });
582
600
  Object.defineProperty(exports, "createResultSet", {
583
601
  enumerable: true,
584
602
  get: function get() {
@@ -617,6 +635,12 @@ Object.defineProperty(exports, "createSimplify", {
617
635
  return _simplify.createSimplify;
618
636
  }
619
637
  });
638
+ Object.defineProperty(exports, "createSimplifyCore", {
639
+ enumerable: true,
640
+ get: function get() {
641
+ return _simplifyCore.createSimplifyCore;
642
+ }
643
+ });
620
644
  exports.createSinh = exports.createSin = void 0;
621
645
  Object.defineProperty(exports, "createSize", {
622
646
  enumerable: true,
@@ -764,8 +788,12 @@ var _help = require("./expression/function/help.js");
764
788
 
765
789
  var _chain = require("./type/chain/function/chain.js");
766
790
 
791
+ var _resolve = require("./function/algebra/resolve.js");
792
+
767
793
  var _simplify = require("./function/algebra/simplify.js");
768
794
 
795
+ var _simplifyCore = require("./function/algebra/simplifyCore.js");
796
+
769
797
  var _derivative = require("./function/algebra/derivative.js");
770
798
 
771
799
  var _rationalize = require("./function/algebra/rationalize.js");
@@ -898,6 +926,8 @@ var _min = require("./function/statistics/min.js");
898
926
 
899
927
  var _sum = require("./function/statistics/sum.js");
900
928
 
929
+ var _cumsum = require("./function/statistics/cumsum.js");
930
+
901
931
  var _mean = require("./function/statistics/mean.js");
902
932
 
903
933
  var _median = require("./function/statistics/median.js");
@@ -934,6 +964,8 @@ var _stdTransform = require("./expression/transform/std.transform.js");
934
964
 
935
965
  var _sumTransform = require("./expression/transform/sum.transform.js");
936
966
 
967
+ var _cumsumTransform = require("./expression/transform/cumsum.transform.js");
968
+
937
969
  var _varianceTransform = require("./expression/transform/variance.transform.js");
938
970
 
939
971
  var _clone = require("./function/utils/clone.js");
@@ -73,7 +73,7 @@ var createQr = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function
73
73
  * @return {{Q: Array | Matrix, R: Array | Matrix}} Q: the orthogonal
74
74
  * matrix and R: the upper triangular matrix
75
75
  */
76
- return (0, _extends2["default"])(typed(name, {
76
+ return (0, _extends2.default)(typed(name, {
77
77
  DenseMatrix: function DenseMatrix(m) {
78
78
  return _denseQR(m);
79
79
  },
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createLeafCount = void 0;
7
+
8
+ var _factory = require("../../utils/factory.js");
9
+
10
+ var name = 'leafCount';
11
+ var dependencies = ['parse', 'typed'];
12
+ var createLeafCount = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
13
+ var parse = _ref.parse,
14
+ typed = _ref.typed;
15
+
16
+ // This does the real work, but we don't have to recurse through
17
+ // a typed call if we separate it out
18
+ function countLeaves(node) {
19
+ var count = 0;
20
+ node.forEach(function (n) {
21
+ count += countLeaves(n);
22
+ });
23
+ return count || 1;
24
+ }
25
+ /**
26
+ * Gives the number of "leaf nodes" in the parse tree of the given expression
27
+ * A leaf node is one that has no subexpressions, essentially either a
28
+ * symbol or a constant. Note that `5!` has just one leaf, the '5'; the
29
+ * unary factorial operator does not add a leaf. On the other hand,
30
+ * function symbols do add leaves, so `sin(x)/cos(x)` has four leaves.
31
+ *
32
+ * The `simplify()` function should generally not increase the `leafCount()`
33
+ * of an expression, although currently there is no guarantee that it never
34
+ * does so. In many cases, `simplify()` reduces the leaf count.
35
+ *
36
+ * Syntax:
37
+ *
38
+ * leafCount(expr)
39
+ *
40
+ * Examples:
41
+ *
42
+ * math.leafCount('x') // 1
43
+ * math.leafCount(math.parse('a*d-b*c')) // 4
44
+ * math.leafCount('[a,b;c,d][0,1]') // 6
45
+ *
46
+ * See also:
47
+ *
48
+ * simplify
49
+ *
50
+ * @param {Node|string} expr The expression to count the leaves of
51
+ *
52
+ * @return {number} The number of leaves of `expr`
53
+ *
54
+ */
55
+
56
+
57
+ return typed(name, {
58
+ string: function string(expr) {
59
+ return this(parse(expr));
60
+ },
61
+ Node: function Node(expr) {
62
+ return countLeaves(expr);
63
+ }
64
+ });
65
+ });
66
+ exports.createLeafCount = createLeafCount;
@@ -11,10 +11,8 @@ var _factory = require("../../utils/factory.js");
11
11
 
12
12
  var _simplifyConstant = require("./simplify/simplifyConstant.js");
13
13
 
14
- var _simplifyCore = require("./simplify/simplifyCore.js");
15
-
16
14
  var name = 'rationalize';
17
- var dependencies = ['config', 'typed', 'equal', 'isZero', 'add', 'subtract', 'multiply', 'divide', 'pow', 'parse', 'simplify', '?bignumber', '?fraction', 'mathWithTransform', 'matrix', 'AccessorNode', 'ArrayNode', 'ConstantNode', 'FunctionNode', 'IndexNode', 'ObjectNode', 'OperatorNode', 'SymbolNode', 'ParenthesisNode'];
15
+ var dependencies = ['config', 'typed', 'equal', 'isZero', 'add', 'subtract', 'multiply', 'divide', 'pow', 'parse', 'simplifyCore', 'simplify', '?bignumber', '?fraction', 'mathWithTransform', 'matrix', 'AccessorNode', 'ArrayNode', 'ConstantNode', 'FunctionNode', 'IndexNode', 'ObjectNode', 'OperatorNode', 'SymbolNode', 'ParenthesisNode'];
18
16
  var createRationalize = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
19
17
  var config = _ref.config,
20
18
  typed = _ref.typed,
@@ -26,6 +24,7 @@ var createRationalize = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
26
24
  divide = _ref.divide,
27
25
  pow = _ref.pow,
28
26
  parse = _ref.parse,
27
+ simplifyCore = _ref.simplifyCore,
29
28
  simplify = _ref.simplify,
30
29
  fraction = _ref.fraction,
31
30
  bignumber = _ref.bignumber,
@@ -56,23 +55,6 @@ var createRationalize = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
56
55
  OperatorNode: OperatorNode,
57
56
  SymbolNode: SymbolNode
58
57
  });
59
- var simplifyCore = (0, _simplifyCore.createSimplifyCore)({
60
- equal: equal,
61
- isZero: isZero,
62
- add: add,
63
- subtract: subtract,
64
- multiply: multiply,
65
- divide: divide,
66
- pow: pow,
67
- AccessorNode: AccessorNode,
68
- ArrayNode: ArrayNode,
69
- ConstantNode: ConstantNode,
70
- FunctionNode: FunctionNode,
71
- IndexNode: IndexNode,
72
- ObjectNode: ObjectNode,
73
- OperatorNode: OperatorNode,
74
- ParenthesisNode: ParenthesisNode
75
- });
76
58
  /**
77
59
  * Transform a rationalizable expression in a rational fraction.
78
60
  * If rational fraction is one variable polynomial then converts
@@ -116,13 +98,13 @@ var createRationalize = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
116
98
  * @param {Object|boolean} optional scope of expression or true for already evaluated rational expression at input
117
99
  * @param {Boolean} detailed optional True if return an object, false if return expression node (default)
118
100
  *
119
- * @return {Object | Node} The rational polynomial of `expr` or na object
120
- * {Object}
121
- * {Expression Node} expression: node simplified expression
122
- * {Expression Node} numerator: simplified numerator of expression
123
- * {Expression Node | boolean} denominator: simplified denominator or false (if there is no denominator)
124
- * {Array} variables: variable names
125
- * {Array} coefficients: coefficients of numerator sorted by increased exponent
101
+ * @return {Object | Node} The rational polynomial of `expr` or an object
102
+ * `{expression, numerator, denominator, variables, coefficients}`, where
103
+ * `expression` is a `Node` with the node simplified expression,
104
+ * `numerator` is a `Node` with the simplified numerator of expression,
105
+ * `denominator` is a `Node` or `boolean` with the simplified denominator or `false` (if there is no denominator),
106
+ * `variables` is an array with variable names,
107
+ * and `coefficients` is an array with coefficients of numerator sorted by increased exponent
126
108
  * {Expression Node} node simplified expression
127
109
  *
128
110
  */
@@ -155,6 +137,12 @@ var createRationalize = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
155
137
  var polyRet = polynomial(expr, scope, true, setRules.firstRules); // Check if expression is a rationalizable polynomial
156
138
 
157
139
  var nVars = polyRet.variables.length;
140
+ var noExactFractions = {
141
+ exactFractions: false
142
+ };
143
+ var withExactFractions = {
144
+ exactFractions: true
145
+ };
158
146
  expr = polyRet.expression;
159
147
 
160
148
  if (nVars >= 1) {
@@ -165,18 +153,16 @@ var createRationalize = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
165
153
 
166
154
  var rules;
167
155
  var eDistrDiv = true;
168
- var redoInic = false;
169
- expr = simplify(expr, setRules.firstRules, {}, {
170
- exactFractions: false
171
- }); // Apply the initial rules, including succ div rules
156
+ var redoInic = false; // Apply the initial rules, including succ div rules:
172
157
 
158
+ expr = simplify(expr, setRules.firstRules, {}, noExactFractions);
173
159
  var s;
174
160
 
175
161
  while (true) {
176
- // Apply alternately successive division rules and distr.div.rules
162
+ // Alternate applying successive division rules and distr.div.rules
163
+ // until there are no more changes:
177
164
  rules = eDistrDiv ? setRules.distrDivRules : setRules.sucDivRules;
178
- expr = simplify(expr, rules); // until no more changes
179
-
165
+ expr = simplify(expr, rules, {}, withExactFractions);
180
166
  eDistrDiv = !eDistrDiv; // Swap between Distr.Div and Succ. Div. Rules
181
167
 
182
168
  s = expr.toString();
@@ -191,14 +177,11 @@ var createRationalize = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
191
177
 
192
178
  if (redoInic) {
193
179
  // Apply first rules again without succ div rules (if there are changes)
194
- expr = simplify(expr, setRules.firstRulesAgain, {}, {
195
- exactFractions: false
196
- });
197
- }
180
+ expr = simplify(expr, setRules.firstRulesAgain, {}, noExactFractions);
181
+ } // Apply final rules:
182
+
198
183
 
199
- expr = simplify(expr, setRules.finalRules, {}, {
200
- exactFractions: false
201
- }); // Apply final rules
184
+ expr = simplify(expr, setRules.finalRules, {}, noExactFractions);
202
185
  } // NVars >= 1
203
186
 
204
187
 
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createResolve = void 0;
7
+
8
+ var _map = require("../../utils/map.js");
9
+
10
+ var _is = require("../../utils/is.js");
11
+
12
+ var _factory = require("../../utils/factory.js");
13
+
14
+ var name = 'resolve';
15
+ var dependencies = ['parse', 'ConstantNode', 'FunctionNode', 'OperatorNode', 'ParenthesisNode'];
16
+ var createResolve = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
17
+ var parse = _ref.parse,
18
+ ConstantNode = _ref.ConstantNode,
19
+ FunctionNode = _ref.FunctionNode,
20
+ OperatorNode = _ref.OperatorNode,
21
+ ParenthesisNode = _ref.ParenthesisNode;
22
+
23
+ /**
24
+ * resolve(expr, scope) replaces variable nodes with their scoped values
25
+ *
26
+ * Syntax:
27
+ *
28
+ * resolve(expr, scope)
29
+ *
30
+ * Examples:
31
+ *
32
+ * math.resolve('x + y', {x:1, y:2}) // Node {1 + 2}
33
+ * math.resolve(math.parse('x+y'), {x:1, y:2}) // Node {1 + 2}
34
+ * math.simplify('x+y', {x:2, y:'x+x'}).toString() // "6"
35
+ *
36
+ * See also:
37
+ *
38
+ * simplify, evaluate
39
+ *
40
+ * @param {Node} node
41
+ * The expression tree to be simplified
42
+ * @param {Object} scope
43
+ * Scope specifying variables to be resolved
44
+ * @return {Node} Returns `node` with variables recursively substituted.
45
+ * @throws {ReferenceError}
46
+ * If there is a cyclic dependency among the variables in `scope`,
47
+ * resolution is impossible and a ReferenceError is thrown.
48
+ */
49
+ function resolve(node, scope) {
50
+ var within = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new Set();
51
+
52
+ // note `within`:
53
+ // `within` is not documented, since it is for internal cycle
54
+ // detection only
55
+ if (!scope) {
56
+ return node;
57
+ }
58
+
59
+ if (!(0, _map.isMap)(scope)) {
60
+ scope = (0, _map.createMap)(scope);
61
+ }
62
+
63
+ if ((0, _is.isSymbolNode)(node)) {
64
+ if (within.has(node.name)) {
65
+ var variables = Array.from(within).join(', ');
66
+ throw new ReferenceError("recursive loop of variable definitions among {".concat(variables, "}"));
67
+ }
68
+
69
+ var value = scope.get(node.name);
70
+
71
+ if ((0, _is.isNode)(value)) {
72
+ var nextWithin = new Set(within);
73
+ nextWithin.add(node.name);
74
+ return resolve(value, scope, nextWithin);
75
+ } else if (typeof value === 'number') {
76
+ return parse(String(value));
77
+ } else if (value !== undefined) {
78
+ return new ConstantNode(value);
79
+ } else {
80
+ return node;
81
+ }
82
+ } else if ((0, _is.isOperatorNode)(node)) {
83
+ var args = node.args.map(function (arg) {
84
+ return resolve(arg, scope, within);
85
+ });
86
+ return new OperatorNode(node.op, node.fn, args, node.implicit);
87
+ } else if ((0, _is.isParenthesisNode)(node)) {
88
+ return new ParenthesisNode(resolve(node.content, scope, within));
89
+ } else if ((0, _is.isFunctionNode)(node)) {
90
+ var _args = node.args.map(function (arg) {
91
+ return resolve(arg, scope, within);
92
+ });
93
+
94
+ return new FunctionNode(node.name, _args);
95
+ } // Otherwise just recursively resolve any children (might also work
96
+ // for some of the above special cases)
97
+
98
+
99
+ return node.map(function (child) {
100
+ return resolve(child, scope, within);
101
+ });
102
+ }
103
+
104
+ return resolve;
105
+ });
106
+ exports.createResolve = createResolve;
@@ -17,7 +17,7 @@ var _util = require("./util.js");
17
17
 
18
18
  var _noop = require("../../../utils/noop.js");
19
19
 
20
- 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; } } }; }
20
+ 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; } } }; }
21
21
 
22
22
  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); }
23
23
 
@@ -348,7 +348,7 @@ var createSimplifyConstant = /* #__PURE__ */(0, _factory.factory)(name, dependen
348
348
  return node;
349
349
 
350
350
  case 'ConstantNode':
351
- switch ((0, _typeof2["default"])(node.value)) {
351
+ switch ((0, _typeof2.default)(node.value)) {
352
352
  case 'number':
353
353
  return _toNumber(node.value, options);
354
354
 
@@ -419,13 +419,13 @@ var createSimplifyConstant = /* #__PURE__ */(0, _factory.factory)(name, dependen
419
419
  } else {
420
420
  res = makeNode(_args);
421
421
  }
422
- } else if (isAssociative(node)) {
423
- _args = allChildren(node);
422
+ } else if (isAssociative(node, options.context)) {
423
+ _args = allChildren(node, options.context);
424
424
  _args = _args.map(function (arg) {
425
425
  return foldFraction(arg, options);
426
426
  });
427
427
 
428
- if (isCommutative(fn)) {
428
+ if (isCommutative(fn, options.context)) {
429
429
  // commutative binary operator
430
430
  var consts = [];
431
431
  var vars = [];