mathjs 10.1.1 → 10.4.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -9,27 +9,39 @@ export var createFraction = /* #__PURE__ */factory(name, dependencies, _ref => {
9
9
  } = _ref;
10
10
 
11
11
  /**
12
- * Create a fraction convert a value to a fraction.
12
+ * Create a fraction or convert a value to a fraction.
13
+ *
14
+ * With one numeric argument, produces the closest rational approximation to the
15
+ * input.
16
+ * With two arguments, the first is the numerator and the second is the denominator,
17
+ * and creates the corresponding fraction. Both numerator and denominator must be
18
+ * integers.
19
+ * With one object argument, looks for the integer numerator as the value of property
20
+ * 'n' and the integer denominator as the value of property 'd'.
21
+ * With a matrix argument, creates a matrix of the same shape with entries
22
+ * converted into fractions.
13
23
  *
14
24
  * Syntax:
25
+ * math.fraction(value)
15
26
  * math.fraction(numerator, denominator)
16
27
  * math.fraction({n: numerator, d: denominator})
17
- * math.fraction(matrix: Array | Matrix) Turn all matrix entries
18
- * into fractions
28
+ * math.fraction(matrix: Array | Matrix)
19
29
  *
20
30
  * Examples:
21
31
  *
22
- * math.fraction(1, 3)
23
- * math.fraction('2/3')
24
- * math.fraction({n: 2, d: 3})
25
- * math.fraction([0.2, 0.25, 1.25])
32
+ * math.fraction(6.283) // returns Fraction 6283/1000
33
+ * math.fraction(1, 3) // returns Fraction 1/3
34
+ * math.fraction('2/3') // returns Fraction 2/3
35
+ * math.fraction({n: 2, d: 3}) // returns Fraction 2/3
36
+ * math.fraction([0.2, 0.25, 1.25]) // returns Array [1/5, 1/4, 5/4]
37
+ * math.fraction(4, 5.1) // throws Error: Parameters must be integer
26
38
  *
27
39
  * See also:
28
40
  *
29
41
  * bignumber, number, string, unit
30
42
  *
31
43
  * @param {number | string | Fraction | BigNumber | Array | Matrix} [args]
32
- * Arguments specifying the numerator and denominator of
44
+ * Arguments specifying the value, or numerator and denominator of
33
45
  * the fraction
34
46
  * @return {Fraction | Array | Matrix} Returns a fraction
35
47
  */
@@ -1,6 +1,7 @@
1
1
  import { isCollection, isMatrix } from './is.js';
2
2
  import { IndexError } from '../error/IndexError.js';
3
3
  import { arraySize } from './array.js';
4
+ import { _switch } from './switch.js';
4
5
  /**
5
6
  * Test whether an array contains collections
6
7
  * @param {Array} array
@@ -127,32 +128,6 @@ function _reduce(mat, dim, callback) {
127
128
 
128
129
  return ret;
129
130
  }
130
- }
131
- /**
132
- * Transpose a matrix
133
- * @param {Array} mat
134
- * @returns {Array} ret
135
- * @private
136
- */
137
-
138
-
139
- function _switch(mat) {
140
- var I = mat.length;
141
- var J = mat[0].length;
142
- var i, j;
143
- var ret = [];
144
-
145
- for (j = 0; j < J; j++) {
146
- var tmp = [];
147
-
148
- for (i = 0; i < I; i++) {
149
- tmp.push(mat[i][j]);
150
- }
151
-
152
- ret.push(tmp);
153
- }
154
-
155
- return ret;
156
131
  } // TODO: document function scatter
157
132
 
158
133
 
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Transpose a matrix
3
+ * @param {Array} mat
4
+ * @returns {Array} ret
5
+ * @private
6
+ */
7
+ export function _switch(mat) {
8
+ var I = mat.length;
9
+ var J = mat[0].length;
10
+ var i, j;
11
+ var ret = [];
12
+
13
+ for (j = 0; j < J; j++) {
14
+ var tmp = [];
15
+
16
+ for (i = 0; i < I; i++) {
17
+ tmp.push(mat[i][j]);
18
+ }
19
+
20
+ ret.push(tmp);
21
+ }
22
+
23
+ return ret;
24
+ }
@@ -1,2 +1,2 @@
1
- export var version = '10.1.1'; // Note: This file is automatically generated when building math.js.
1
+ export var version = '10.4.0'; // Note: This file is automatically generated when building math.js.
2
2
  // Changes made in this file will be overwritten.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mathjs",
3
- "version": "10.1.1",
3
+ "version": "10.4.0",
4
4
  "description": "Math.js is an extensive math library for JavaScript and Node.js. It features a flexible expression parser with support for symbolic computation, comes with a large set of built-in functions and constants, and offers an integrated solution to work with different data types like numbers, big numbers, complex numbers, fractions, units, and matrices.",
5
5
  "author": "Jos de Jong <wjosdejong@gmail.com> (https://github.com/josdejong)",
6
6
  "homepage": "https://mathjs.org",
@@ -25,26 +25,27 @@
25
25
  "unit"
26
26
  ],
27
27
  "dependencies": {
28
- "@babel/runtime": "^7.16.7",
28
+ "@babel/runtime": "^7.17.2",
29
29
  "complex.js": "^2.0.15",
30
30
  "decimal.js": "^10.3.1",
31
31
  "escape-latex": "^1.2.0",
32
- "fraction.js": "^4.1.2",
32
+ "fraction.js": "^4.2.0",
33
33
  "javascript-natural-sort": "^0.7.1",
34
34
  "seedrandom": "^3.0.5",
35
35
  "tiny-emitter": "^2.1.0",
36
36
  "typed-function": "^2.0.0"
37
37
  },
38
38
  "devDependencies": {
39
- "@babel/core": "7.16.12",
39
+ "@babel/core": "7.17.5",
40
40
  "@babel/plugin-transform-object-assign": "7.16.7",
41
- "@babel/plugin-transform-runtime": "7.16.10",
41
+ "@babel/plugin-transform-runtime": "7.17.0",
42
42
  "@babel/preset-env": "7.16.11",
43
- "@babel/register": "7.16.9",
43
+ "@babel/register": "7.17.0",
44
+ "assert": "2.0.0",
44
45
  "babel-loader": "8.2.3",
45
46
  "benchmark": "2.1.4",
46
47
  "codecov": "3.8.3",
47
- "core-js": "3.21.0",
48
+ "core-js": "3.21.1",
48
49
  "del": "6.0.0",
49
50
  "dtslint": "4.2.1",
50
51
  "expr-eval": "2.0.2",
@@ -54,8 +55,8 @@
54
55
  "gulp-babel": "8.0.0",
55
56
  "handlebars": "4.7.7",
56
57
  "istanbul": "0.4.5",
57
- "jsep": "1.2.0",
58
- "karma": "6.3.13",
58
+ "jsep": "1.3.0",
59
+ "karma": "6.3.16",
59
60
  "karma-browserstack-launcher": "1.6.0",
60
61
  "karma-firefox-launcher": "2.1.2",
61
62
  "karma-mocha": "2.0.1",
@@ -72,6 +73,7 @@
72
73
  "numericjs": "1.2.6",
73
74
  "nyc": "15.1.0",
74
75
  "pad-right": "0.2.2",
76
+ "process": "0.11.10",
75
77
  "standard": "16.0.4",
76
78
  "sylvester": "0.0.21",
77
79
  "typescript": "4.5.5",
@@ -124,7 +126,7 @@
124
126
  "CONTRIBUTING.md"
125
127
  ],
126
128
  "scripts": {
127
- "build": "gulp --gulpfile gulpfile.cjs",
129
+ "build": "gulp --gulpfile gulpfile.cjs && npm run update-authors",
128
130
  "build-and-test": "npm run build && npm run test:all && npm run lint",
129
131
  "build:clean": "gulp --gulpfile gulpfile.cjs clean",
130
132
  "build:docs": "gulp --gulpfile gulpfile.cjs docs",
@@ -161,5 +163,8 @@
161
163
  "src": "./src",
162
164
  "test": "./test"
163
165
  },
166
+ "browserslist": [
167
+ "IE 11"
168
+ ],
164
169
  "sideEffects": false
165
170
  }
package/types/index.d.ts CHANGED
@@ -575,7 +575,7 @@ declare namespace math {
575
575
  * @param unit The unit to be created
576
576
  * @returns The created unit
577
577
  */
578
- unit(value: number | MathArray | Matrix, unit: string): Unit;
578
+ unit(value: number | MathArray | Matrix | BigNumber, unit: string): Unit;
579
579
 
580
580
  /*************************************************************************
581
581
  * Expression functions
@@ -1674,6 +1674,19 @@ declare namespace math {
1674
1674
  column: number
1675
1675
  ): T;
1676
1676
 
1677
+ /**
1678
+ * Return a rotated matrix.
1679
+ * @param {Array | Matrix} w Vector to rotate
1680
+ * @param {number | BigNumber | Complex | Unit} theta Rotation angle
1681
+ * @param {Array | Matrix} [v] Rotation axis
1682
+ * @return {Array | Matrix} Multiplication of the rotation matrix and w
1683
+ */
1684
+ rotate<T extends MathArray | Matrix>(
1685
+ w: T,
1686
+ theta: number | BigNumber | Complex | Unit,
1687
+ v?: T
1688
+ ): T;
1689
+
1677
1690
  /**
1678
1691
  * Calculate the size of a matrix or scalar.
1679
1692
  * @param A matrix
@@ -1710,7 +1723,7 @@ declare namespace math {
1710
1723
  /**
1711
1724
  * Get or set a subset of a matrix or string.
1712
1725
  * @param value An array, matrix, or string
1713
- * @param index An index containing ranges for each dimension
1726
+ * @param index For each dimension, an index or list of indices to get or set.
1714
1727
  * @param replacement An array, matrix, or scalar. If provided, the
1715
1728
  * subset is replaced with replacement. If not provided, the subset is
1716
1729
  * returned
@@ -1783,7 +1796,7 @@ declare namespace math {
1783
1796
  * @param n A real or complex number
1784
1797
  * @returns The gamma of n
1785
1798
  */
1786
- gamma(n: number | MathArray | Matrix): number | MathArray | Matrix;
1799
+ gamma<T extends number | BigNumber | Complex | MathArray | Matrix>(n: T): NoLiteralType<T>;
1787
1800
 
1788
1801
  /**
1789
1802
  * Calculate the Kullback-Leibler (KL) divergence between two
@@ -2210,6 +2223,38 @@ declare namespace math {
2210
2223
  */
2211
2224
  quantileSeq(A: MathArray | Matrix, prob: number | BigNumber | MathArray, sorted?: boolean): number | BigNumber | Unit | MathArray;
2212
2225
 
2226
+ /**
2227
+ * Compute the standard deviation of a matrix or a list with values. The
2228
+ * standard deviations is defined as the square root of the variance:
2229
+ * std(A) = sqrt(variance(A)). In case of a (multi dimensional) array or
2230
+ * matrix, the standard deviation over all elements will be calculated.
2231
+ * Optionally, the type of normalization can be specified as second
2232
+ * parameter. The parameter normalization can be one of the following
2233
+ * values: 'unbiased' (default) The sum of squared errors is divided by
2234
+ * (n - 1) 'uncorrected' The sum of squared errors is divided by n
2235
+ * 'biased' The sum of squared errors is divided by (n + 1)
2236
+ * @param a variadic argument of number to calculate standard deviation
2237
+ * @returns The standard deviation array
2238
+ */
2239
+ std(...values: number[]): number
2240
+ /**
2241
+ * Compute the standard deviation of a matrix or a list with values. The
2242
+ * standard deviations is defined as the square root of the variance:
2243
+ * std(A) = sqrt(variance(A)). In case of a (multi dimensional) array or
2244
+ * matrix, the standard deviation over all elements will be calculated.
2245
+ * Optionally, the type of normalization can be specified as second
2246
+ * parameter. The parameter normalization can be one of the following
2247
+ * values: 'unbiased' (default) The sum of squared errors is divided by
2248
+ * (n - 1) 'uncorrected' The sum of squared errors is divided by n
2249
+ * 'biased' The sum of squared errors is divided by (n + 1)
2250
+ * @param array A single matrix to compute standard deviation.
2251
+ * @param dimension A dimension to calculate standard deviation
2252
+ * @param normalization Determines how to normalize the variance. Choose
2253
+ * ‘unbiased’ (default), ‘uncorrected’, or ‘biased’. Default value:
2254
+ * ‘unbiased’.
2255
+ * @returns The standard deviation array
2256
+ */
2257
+ std(array: MathArray | Matrix, dimension: number, normalization?: 'unbiased' | 'uncorrected' | 'biased'): number[]
2213
2258
  /**
2214
2259
  * Compute the standard deviation of a matrix or a list with values. The
2215
2260
  * standard deviations is defined as the square root of the variance:
@@ -2226,7 +2271,7 @@ declare namespace math {
2226
2271
  * ‘unbiased’.
2227
2272
  * @returns The standard deviation
2228
2273
  */
2229
- std(array: MathArray | Matrix, normalization?: 'unbiased' | 'uncorrected' | 'biased' | 'unbiased'): number;
2274
+ std(array: MathArray | Matrix, normalization: 'unbiased' | 'uncorrected' | 'biased'): number
2230
2275
 
2231
2276
  /**
2232
2277
  * Compute the sum of a matrix or a list with values. In case of a
@@ -2242,6 +2287,21 @@ declare namespace math {
2242
2287
  */
2243
2288
  sum(array: MathArray | Matrix): any;
2244
2289
 
2290
+ /**
2291
+ * Compute the cumulative sum of a matrix or a list with values.
2292
+ * In case of a (multi dimensional) array or matrix, the cumulative sums
2293
+ * along a specified dimension (defaulting to the first) will be calculated.
2294
+ * @param args A single matrix or multiple scalar values
2295
+ * @returns The cumulative sums of the the values.
2296
+ */
2297
+ cumsum(...args: MathType[]): MathType[];
2298
+ /**
2299
+ * @param array A single matrix
2300
+ * @param dim The dimension along which to sum (defaults to 0)
2301
+ * @returns The cumulative sums along the given dimension
2302
+ */
2303
+ cumsum(array: MathArray | Matrix, dim?: number): MathArray | Matrix;
2304
+
2245
2305
  /**
2246
2306
  * Compute the variance of a matrix or a list with values. In case of a
2247
2307
  * (multi dimensional) array or matrix, the variance over all elements
@@ -2256,7 +2316,26 @@ declare namespace math {
2256
2316
  * @param args A single matrix or multiple scalar values
2257
2317
  * @returns The variance
2258
2318
  */
2259
- variance(...args: Array<number | BigNumber | Fraction>): any;
2319
+ variance(...args: Array<number | BigNumber | Fraction>): number;
2320
+ /**
2321
+ * Compute the variance of a matrix or a list with values. In case of a
2322
+ * (multi dimensional) array or matrix, the variance over all elements
2323
+ * will be calculated. Optionally, the type of normalization can be
2324
+ * specified as second parameter. The parameter normalization can be one
2325
+ * of the following values: 'unbiased' (default) The sum of squared
2326
+ * errors is divided by (n - 1) 'uncorrected' The sum of squared errors
2327
+ * is divided by n 'biased' The sum of squared errors is divided by (n +
2328
+ * 1) Note that older browser may not like the variable name var. In
2329
+ * that case, the function can be called as math['var'](...) instead of
2330
+ * math.variance(...).
2331
+ * @param array A matrix to compute variance.
2332
+ * @param dimension A dimension to compute variance on
2333
+ * @param normalization normalization Determines how to normalize the
2334
+ * variance. Choose ‘unbiased’ (default), ‘uncorrected’, or ‘biased’.
2335
+ * Default value: ‘unbiased’.
2336
+ * @returns variance matrix.
2337
+ */
2338
+ variance(array: MathArray | Matrix, dimension: number, normalization?: 'unbiased' | 'uncorrected' | 'biased'): number[];
2260
2339
  /**
2261
2340
  * @param array A single matrix
2262
2341
  * @param normalization normalization Determines how to normalize the
@@ -2264,7 +2343,7 @@ declare namespace math {
2264
2343
  * Default value: ‘unbiased’.
2265
2344
  * @returns The variance
2266
2345
  */
2267
- variance(array: MathArray | Matrix, normalization?: 'unbiased' | 'uncorrected' | 'biased' | 'unbiased'): any;
2346
+ variance(array: MathArray | Matrix, normalization?: 'unbiased' | 'uncorrected' | 'biased'): number;
2268
2347
 
2269
2348
  /*************************************************************************
2270
2349
  * String functions
@@ -3121,6 +3200,28 @@ declare namespace math {
3121
3200
  fixPrefix?: boolean;
3122
3201
  }
3123
3202
 
3203
+ interface UnitComponent {
3204
+ power: number;
3205
+ prefix: string;
3206
+ unit: {
3207
+ name: string;
3208
+ base: {
3209
+ dimensions: number[];
3210
+ key: string;
3211
+ };
3212
+ prefixes: Record<string, UnitPrefix>;
3213
+ value: number;
3214
+ offset: number;
3215
+ dimensions: number[];
3216
+ };
3217
+ }
3218
+
3219
+ interface UnitPrefix {
3220
+ name: string;
3221
+ value: number;
3222
+ scientific: boolean;
3223
+ }
3224
+
3124
3225
  interface Unit {
3125
3226
  valueOf(): string;
3126
3227
  clone(): Unit;
@@ -3139,7 +3240,14 @@ declare namespace math {
3139
3240
  toJSON(): MathJSON;
3140
3241
  formatUnits(): string;
3141
3242
  format(options: FormatOptions): string;
3243
+ simplify(): Unit;
3142
3244
  splitUnit(parts: ReadonlyArray<string | Unit>): Unit[];
3245
+
3246
+ units: UnitComponent[];
3247
+ dimensions: number[];
3248
+ value: number;
3249
+ fixPrefix: boolean;
3250
+ skipAutomaticSimplification: true;
3143
3251
  }
3144
3252
 
3145
3253
  interface CreateUnitOptions {
@@ -3176,8 +3284,6 @@ declare namespace math {
3176
3284
  ): MathNode;
3177
3285
 
3178
3286
  rules: SimplifyRule[];
3179
-
3180
- simplifyCore(expr: MathNode): MathNode;
3181
3287
  }
3182
3288
 
3183
3289
  interface UnitDefinition {
@@ -3640,6 +3746,8 @@ declare namespace math {
3640
3746
  */
3641
3747
  simplify(rules?: SimplifyRule[], scope?: object): MathJsChain;
3642
3748
 
3749
+ simplifyCore(expr: MathNode): MathNode;
3750
+
3643
3751
  /**
3644
3752
  * Calculate the Sparse Matrix LU decomposition with full pivoting.
3645
3753
  * Sparse Matrix A is decomposed in two matrices (L, U) and two
@@ -4277,7 +4385,7 @@ declare namespace math {
4277
4385
 
4278
4386
  /**
4279
4387
  * Get or set a subset of a matrix or string.
4280
- * @param index An index containing ranges for each dimension
4388
+ * @param index For each dimension, an index or list of indices to get or set
4281
4389
  * @param replacement An array, matrix, or scalar. If provided, the
4282
4390
  * subset is replaced with replacement. If not provided, the subset is
4283
4391
  * returned
@@ -4664,7 +4772,24 @@ declare namespace math {
4664
4772
  * @param sorted =false is data sorted in ascending order
4665
4773
  */
4666
4774
  quantileSeq(prob: number | BigNumber | MathArray, sorted?: boolean): MathJsChain;
4667
-
4775
+ /**
4776
+ * Compute the standard deviation of a matrix or a list with values. The
4777
+ * standard deviations is defined as the square root of the variance:
4778
+ * std(A) = sqrt(variance(A)). In case of a (multi dimensional) array or
4779
+ * matrix, the standard deviation over all elements will be calculated.
4780
+ * Optionally, the type of normalization can be specified as second
4781
+ * parameter. The parameter normalization can be one of the following
4782
+ * values: 'unbiased' (default) The sum of squared errors is divided by
4783
+ * (n - 1) 'uncorrected' The sum of squared errors is divided by n
4784
+ * 'biased' The sum of squared errors is divided by (n + 1)
4785
+ * @param array A single matrix or multiple scalar values
4786
+ * @param dim A dimension to compute standard deviation.
4787
+ * @param normalization Determines how to normalize the variance. Choose
4788
+ * ‘unbiased’ (default), ‘uncorrected’, or ‘biased’. Default value:
4789
+ * ‘unbiased’.
4790
+ * @returns The standard deviation
4791
+ */
4792
+ std(dim: number, normalization?: 'unbiased' | 'uncorrected' | 'biased'): MathJsChain;
4668
4793
  /**
4669
4794
  * Compute the standard deviation of a matrix or a list with values. The
4670
4795
  * standard deviations is defined as the square root of the variance:
@@ -4681,7 +4806,7 @@ declare namespace math {
4681
4806
  * ‘unbiased’.
4682
4807
  * @returns The standard deviation
4683
4808
  */
4684
- std(normalization?: 'unbiased' | 'uncorrected' | 'biased' | 'unbiased'): MathJsChain;
4809
+ std(normalization?: 'unbiased' | 'uncorrected' | 'biased'): MathJsChain;
4685
4810
 
4686
4811
  /**
4687
4812
  * Compute the sum of a matrix or a list with values. In case of a
@@ -4689,7 +4814,24 @@ declare namespace math {
4689
4814
  * calculated.
4690
4815
  */
4691
4816
  sum(): MathJsChain;
4692
-
4817
+ /**
4818
+ * Compute the variance of a matrix or a list with values. In case of a
4819
+ * (multi dimensional) array or matrix, the variance over all elements
4820
+ * will be calculated. Optionally, the type of normalization can be
4821
+ * specified as second parameter. The parameter normalization can be one
4822
+ * of the following values: 'unbiased' (default) The sum of squared
4823
+ * errors is divided by (n - 1) 'uncorrected' The sum of squared errors
4824
+ * is divided by n 'biased' The sum of squared errors is divided by (n +
4825
+ * 1) Note that older browser may not like the variable name var. In
4826
+ * that case, the function can be called as math['var'](...) instead of
4827
+ * math.variance(...).
4828
+ * @param dim a dimension to compute variance.
4829
+ * @param normalization normalization Determines how to normalize the
4830
+ * variance. Choose ‘unbiased’ (default), ‘uncorrected’, or ‘biased’.
4831
+ * Default value: ‘unbiased’.
4832
+ * @returns The variance
4833
+ */
4834
+ variance(dim: number, normalization?: 'unbiased' | 'uncorrected' | 'biased'): MathJsChain;
4693
4835
  /**
4694
4836
  * Compute the variance of a matrix or a list with values. In case of a
4695
4837
  * (multi dimensional) array or matrix, the variance over all elements
@@ -4706,7 +4848,7 @@ declare namespace math {
4706
4848
  * Default value: ‘unbiased’.
4707
4849
  * @returns The variance
4708
4850
  */
4709
- variance(normalization?: 'unbiased' | 'uncorrected' | 'biased' | 'unbiased'): MathJsChain;
4851
+ variance(normalization?: 'unbiased' | 'uncorrected' | 'biased'): MathJsChain;
4710
4852
 
4711
4853
  /*************************************************************************
4712
4854
  * String functions
@@ -1,76 +0,0 @@
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', 'FunctionNode', 'OperatorNode', 'ParenthesisNode'];
16
- var createResolve = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
17
- var parse = _ref.parse,
18
- FunctionNode = _ref.FunctionNode,
19
- OperatorNode = _ref.OperatorNode,
20
- ParenthesisNode = _ref.ParenthesisNode;
21
-
22
- /**
23
- * resolve(expr, scope) replaces variable nodes with their scoped values
24
- *
25
- * Syntax:
26
- *
27
- * simplify.resolve(expr, scope)
28
- *
29
- * Examples:
30
- *
31
- * math.simplify.resolve('x + y', {x:1, y:2}) // Node {1 + 2}
32
- * math.simplify.resolve(math.parse('x+y'), {x:1, y:2}) // Node {1 + 2}
33
- * math.simplify('x+y', {x:2, y:'x+x'}).toString() // "6"
34
- *
35
- * @param {Node} node
36
- * The expression tree to be simplified
37
- * @param {Object} scope with variables to be resolved
38
- */
39
- function resolve(node, scope) {
40
- if (!scope) {
41
- return node;
42
- }
43
-
44
- if (!(0, _map.isMap)(scope)) {
45
- scope = (0, _map.createMap)(scope);
46
- }
47
-
48
- if ((0, _is.isSymbolNode)(node)) {
49
- var value = scope.get(node.name);
50
-
51
- if ((0, _is.isNode)(value)) {
52
- return resolve(value, scope);
53
- } else if (typeof value === 'number') {
54
- return parse(String(value));
55
- }
56
- } else if ((0, _is.isOperatorNode)(node)) {
57
- var args = node.args.map(function (arg) {
58
- return resolve(arg, scope);
59
- });
60
- return new OperatorNode(node.op, node.fn, args, node.implicit);
61
- } else if ((0, _is.isParenthesisNode)(node)) {
62
- return new ParenthesisNode(resolve(node.content, scope));
63
- } else if ((0, _is.isFunctionNode)(node)) {
64
- var _args = node.args.map(function (arg) {
65
- return resolve(arg, scope);
66
- });
67
-
68
- return new FunctionNode(node.name, _args);
69
- }
70
-
71
- return node;
72
- }
73
-
74
- return resolve;
75
- });
76
- exports.createResolve = createResolve;
@@ -1,67 +0,0 @@
1
- import { createMap, isMap } from '../../../utils/map.js';
2
- import { isFunctionNode, isNode, isOperatorNode, isParenthesisNode, isSymbolNode } from '../../../utils/is.js';
3
- import { factory } from '../../../utils/factory.js';
4
- var name = 'resolve';
5
- var dependencies = ['parse', 'FunctionNode', 'OperatorNode', 'ParenthesisNode'];
6
- export var createResolve = /* #__PURE__ */factory(name, dependencies, _ref => {
7
- var {
8
- parse,
9
- FunctionNode,
10
- OperatorNode,
11
- ParenthesisNode
12
- } = _ref;
13
-
14
- /**
15
- * resolve(expr, scope) replaces variable nodes with their scoped values
16
- *
17
- * Syntax:
18
- *
19
- * simplify.resolve(expr, scope)
20
- *
21
- * Examples:
22
- *
23
- * math.simplify.resolve('x + y', {x:1, y:2}) // Node {1 + 2}
24
- * math.simplify.resolve(math.parse('x+y'), {x:1, y:2}) // Node {1 + 2}
25
- * math.simplify('x+y', {x:2, y:'x+x'}).toString() // "6"
26
- *
27
- * @param {Node} node
28
- * The expression tree to be simplified
29
- * @param {Object} scope with variables to be resolved
30
- */
31
- function resolve(node, scope) {
32
- if (!scope) {
33
- return node;
34
- }
35
-
36
- if (!isMap(scope)) {
37
- scope = createMap(scope);
38
- }
39
-
40
- if (isSymbolNode(node)) {
41
- var value = scope.get(node.name);
42
-
43
- if (isNode(value)) {
44
- return resolve(value, scope);
45
- } else if (typeof value === 'number') {
46
- return parse(String(value));
47
- }
48
- } else if (isOperatorNode(node)) {
49
- var args = node.args.map(function (arg) {
50
- return resolve(arg, scope);
51
- });
52
- return new OperatorNode(node.op, node.fn, args, node.implicit);
53
- } else if (isParenthesisNode(node)) {
54
- return new ParenthesisNode(resolve(node.content, scope));
55
- } else if (isFunctionNode(node)) {
56
- var _args = node.args.map(function (arg) {
57
- return resolve(arg, scope);
58
- });
59
-
60
- return new FunctionNode(node.name, _args);
61
- }
62
-
63
- return node;
64
- }
65
-
66
- return resolve;
67
- });