mathjs 10.0.2 → 10.2.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 (337) hide show
  1. package/HISTORY.md +37 -0
  2. package/NOTICE +1 -1
  3. package/README.md +10 -2
  4. package/bin/cli.js +1 -1
  5. package/docs/expressions/algebra.md +27 -0
  6. package/docs/expressions/syntax.md +1 -1
  7. package/docs/reference/functions/abs.md +6 -0
  8. package/docs/reference/functions/acos.md +6 -0
  9. package/docs/reference/functions/acosh.md +6 -0
  10. package/docs/reference/functions/acot.md +6 -0
  11. package/docs/reference/functions/acoth.md +6 -0
  12. package/docs/reference/functions/acsc.md +6 -0
  13. package/docs/reference/functions/acsch.md +6 -0
  14. package/docs/reference/functions/add.md +6 -0
  15. package/docs/reference/functions/and.md +6 -0
  16. package/docs/reference/functions/apply.md +6 -0
  17. package/docs/reference/functions/arg.md +6 -0
  18. package/docs/reference/functions/asec.md +6 -0
  19. package/docs/reference/functions/asech.md +6 -0
  20. package/docs/reference/functions/asin.md +6 -0
  21. package/docs/reference/functions/asinh.md +6 -0
  22. package/docs/reference/functions/atan.md +6 -0
  23. package/docs/reference/functions/atan2.md +6 -0
  24. package/docs/reference/functions/atanh.md +6 -0
  25. package/docs/reference/functions/bellNumbers.md +6 -0
  26. package/docs/reference/functions/bin.md +6 -0
  27. package/docs/reference/functions/bitAnd.md +6 -0
  28. package/docs/reference/functions/bitNot.md +6 -0
  29. package/docs/reference/functions/bitOr.md +6 -0
  30. package/docs/reference/functions/bitXor.md +6 -0
  31. package/docs/reference/functions/catalan.md +6 -0
  32. package/docs/reference/functions/cbrt.md +6 -0
  33. package/docs/reference/functions/ceil.md +6 -0
  34. package/docs/reference/functions/clone.md +6 -0
  35. package/docs/reference/functions/column.md +6 -0
  36. package/docs/reference/functions/combinations.md +6 -0
  37. package/docs/reference/functions/combinationsWithRep.md +6 -0
  38. package/docs/reference/functions/compare.md +6 -0
  39. package/docs/reference/functions/compareNatural.md +6 -0
  40. package/docs/reference/functions/compareText.md +6 -0
  41. package/docs/reference/functions/compile.md +6 -0
  42. package/docs/reference/functions/composition.md +6 -0
  43. package/docs/reference/functions/concat.md +6 -0
  44. package/docs/reference/functions/conj.md +6 -0
  45. package/docs/reference/functions/cos.md +6 -0
  46. package/docs/reference/functions/cosh.md +6 -0
  47. package/docs/reference/functions/cot.md +6 -0
  48. package/docs/reference/functions/coth.md +6 -0
  49. package/docs/reference/functions/count.md +6 -0
  50. package/docs/reference/functions/cross.md +6 -0
  51. package/docs/reference/functions/csc.md +6 -0
  52. package/docs/reference/functions/csch.md +6 -0
  53. package/docs/reference/functions/ctranspose.md +6 -0
  54. package/docs/reference/functions/cube.md +6 -0
  55. package/docs/reference/functions/deepEqual.md +6 -0
  56. package/docs/reference/functions/derivative.md +6 -0
  57. package/docs/reference/functions/det.md +6 -0
  58. package/docs/reference/functions/diag.md +6 -0
  59. package/docs/reference/functions/diff.md +6 -0
  60. package/docs/reference/functions/distance.md +6 -0
  61. package/docs/reference/functions/divide.md +6 -0
  62. package/docs/reference/functions/dot.md +6 -0
  63. package/docs/reference/functions/dotDivide.md +6 -0
  64. package/docs/reference/functions/dotMultiply.md +6 -0
  65. package/docs/reference/functions/dotPow.md +6 -0
  66. package/docs/reference/functions/eigs.md +6 -0
  67. package/docs/reference/functions/equal.md +6 -0
  68. package/docs/reference/functions/equalText.md +6 -0
  69. package/docs/reference/functions/erf.md +6 -0
  70. package/docs/reference/functions/evaluate.md +6 -0
  71. package/docs/reference/functions/exp.md +6 -0
  72. package/docs/reference/functions/expm.md +6 -0
  73. package/docs/reference/functions/expm1.md +6 -0
  74. package/docs/reference/functions/factorial.md +6 -0
  75. package/docs/reference/functions/filter.md +6 -0
  76. package/docs/reference/functions/fix.md +6 -0
  77. package/docs/reference/functions/flatten.md +6 -0
  78. package/docs/reference/functions/floor.md +6 -0
  79. package/docs/reference/functions/forEach.md +6 -0
  80. package/docs/reference/functions/format.md +6 -0
  81. package/docs/reference/functions/gamma.md +6 -0
  82. package/docs/reference/functions/gcd.md +6 -0
  83. package/docs/reference/functions/getMatrixDataType.md +6 -0
  84. package/docs/reference/functions/hasNumericValue.md +6 -0
  85. package/docs/reference/functions/help.md +6 -0
  86. package/docs/reference/functions/hex.md +6 -0
  87. package/docs/reference/functions/hypot.md +6 -0
  88. package/docs/reference/functions/identity.md +6 -0
  89. package/docs/reference/functions/im.md +6 -0
  90. package/docs/reference/functions/intersect.md +6 -0
  91. package/docs/reference/functions/inv.md +6 -0
  92. package/docs/reference/functions/invmod.md +47 -0
  93. package/docs/reference/functions/isInteger.md +6 -0
  94. package/docs/reference/functions/isNaN.md +6 -0
  95. package/docs/reference/functions/isNegative.md +6 -0
  96. package/docs/reference/functions/isNumeric.md +6 -0
  97. package/docs/reference/functions/isPositive.md +6 -0
  98. package/docs/reference/functions/isPrime.md +6 -0
  99. package/docs/reference/functions/isZero.md +6 -0
  100. package/docs/reference/functions/kldivergence.md +6 -0
  101. package/docs/reference/functions/kron.md +6 -0
  102. package/docs/reference/functions/larger.md +6 -0
  103. package/docs/reference/functions/largerEq.md +6 -0
  104. package/docs/reference/functions/lcm.md +6 -0
  105. package/docs/reference/functions/leafCount.md +52 -0
  106. package/docs/reference/functions/leftShift.md +6 -0
  107. package/docs/reference/functions/log.md +6 -0
  108. package/docs/reference/functions/log10.md +6 -0
  109. package/docs/reference/functions/log1p.md +6 -0
  110. package/docs/reference/functions/log2.md +6 -0
  111. package/docs/reference/functions/lsolve.md +6 -0
  112. package/docs/reference/functions/lsolveAll.md +6 -0
  113. package/docs/reference/functions/lup.md +6 -0
  114. package/docs/reference/functions/lusolve.md +6 -0
  115. package/docs/reference/functions/mad.md +6 -0
  116. package/docs/reference/functions/map.md +6 -0
  117. package/docs/reference/functions/matrixFromColumns.md +6 -0
  118. package/docs/reference/functions/matrixFromFunction.md +6 -0
  119. package/docs/reference/functions/matrixFromRows.md +6 -0
  120. package/docs/reference/functions/max.md +6 -0
  121. package/docs/reference/functions/mean.md +6 -0
  122. package/docs/reference/functions/median.md +6 -0
  123. package/docs/reference/functions/min.md +6 -0
  124. package/docs/reference/functions/mod.md +6 -0
  125. package/docs/reference/functions/mode.md +6 -0
  126. package/docs/reference/functions/multinomial.md +6 -0
  127. package/docs/reference/functions/multiply.md +6 -0
  128. package/docs/reference/functions/norm.md +6 -0
  129. package/docs/reference/functions/not.md +6 -0
  130. package/docs/reference/functions/nthRoot.md +6 -0
  131. package/docs/reference/functions/nthRoots.md +6 -0
  132. package/docs/reference/functions/numeric.md +6 -0
  133. package/docs/reference/functions/oct.md +6 -0
  134. package/docs/reference/functions/ones.md +6 -0
  135. package/docs/reference/functions/or.md +6 -0
  136. package/docs/reference/functions/parser.md +6 -0
  137. package/docs/reference/functions/partitionSelect.md +6 -0
  138. package/docs/reference/functions/permutations.md +6 -0
  139. package/docs/reference/functions/pickRandom.md +6 -0
  140. package/docs/reference/functions/pow.md +6 -0
  141. package/docs/reference/functions/print.md +6 -0
  142. package/docs/reference/functions/prod.md +6 -0
  143. package/docs/reference/functions/qr.md +6 -0
  144. package/docs/reference/functions/quantileSeq.md +6 -0
  145. package/docs/reference/functions/random.md +6 -0
  146. package/docs/reference/functions/randomInt.md +6 -0
  147. package/docs/reference/functions/range.md +6 -0
  148. package/docs/reference/functions/rationalize.md +7 -1
  149. package/docs/reference/functions/re.md +6 -0
  150. package/docs/reference/functions/reshape.md +7 -0
  151. package/docs/reference/functions/resize.md +6 -0
  152. package/docs/reference/functions/resolve.md +46 -0
  153. package/docs/reference/functions/rightArithShift.md +6 -0
  154. package/docs/reference/functions/rightLogShift.md +6 -0
  155. package/docs/reference/functions/rotate.md +6 -0
  156. package/docs/reference/functions/rotationMatrix.md +6 -0
  157. package/docs/reference/functions/round.md +6 -0
  158. package/docs/reference/functions/row.md +6 -0
  159. package/docs/reference/functions/sec.md +6 -0
  160. package/docs/reference/functions/sech.md +6 -0
  161. package/docs/reference/functions/setCartesian.md +6 -0
  162. package/docs/reference/functions/setDifference.md +6 -0
  163. package/docs/reference/functions/setDistinct.md +6 -0
  164. package/docs/reference/functions/setIntersect.md +6 -0
  165. package/docs/reference/functions/setIsSubset.md +6 -0
  166. package/docs/reference/functions/setMultiplicity.md +6 -0
  167. package/docs/reference/functions/setPowerset.md +6 -0
  168. package/docs/reference/functions/setSize.md +6 -0
  169. package/docs/reference/functions/setSymDifference.md +6 -0
  170. package/docs/reference/functions/setUnion.md +6 -0
  171. package/docs/reference/functions/sign.md +6 -0
  172. package/docs/reference/functions/simplify.md +47 -7
  173. package/docs/reference/functions/simplifyCore.md +50 -0
  174. package/docs/reference/functions/sin.md +6 -0
  175. package/docs/reference/functions/sinh.md +6 -0
  176. package/docs/reference/functions/size.md +6 -0
  177. package/docs/reference/functions/slu.md +6 -0
  178. package/docs/reference/functions/smaller.md +6 -0
  179. package/docs/reference/functions/smallerEq.md +6 -0
  180. package/docs/reference/functions/sort.md +6 -0
  181. package/docs/reference/functions/sqrt.md +6 -0
  182. package/docs/reference/functions/sqrtm.md +6 -0
  183. package/docs/reference/functions/square.md +6 -0
  184. package/docs/reference/functions/squeeze.md +6 -0
  185. package/docs/reference/functions/std.md +6 -0
  186. package/docs/reference/functions/stirlingS2.md +6 -0
  187. package/docs/reference/functions/subset.md +6 -0
  188. package/docs/reference/functions/subtract.md +6 -0
  189. package/docs/reference/functions/sum.md +6 -0
  190. package/docs/reference/functions/tan.md +6 -0
  191. package/docs/reference/functions/tanh.md +6 -0
  192. package/docs/reference/functions/to.md +6 -0
  193. package/docs/reference/functions/trace.md +6 -0
  194. package/docs/reference/functions/transpose.md +6 -0
  195. package/docs/reference/functions/typeOf.md +6 -0
  196. package/docs/reference/functions/unaryMinus.md +6 -0
  197. package/docs/reference/functions/unaryPlus.md +6 -0
  198. package/docs/reference/functions/unequal.md +6 -0
  199. package/docs/reference/functions/usolve.md +6 -0
  200. package/docs/reference/functions/usolveAll.md +6 -0
  201. package/docs/reference/functions/variance.md +6 -0
  202. package/docs/reference/functions/xgcd.md +6 -0
  203. package/docs/reference/functions/xor.md +6 -0
  204. package/docs/reference/functions/zeros.md +6 -0
  205. package/docs/reference/functions.md +4 -0
  206. package/lib/browser/math.js +7 -7
  207. package/lib/browser/math.js.map +1 -1
  208. package/lib/cjs/core/create.js +4 -4
  209. package/lib/cjs/core/function/import.js +3 -3
  210. package/lib/cjs/core/function/typed.js +2 -2
  211. package/lib/cjs/defaultInstance.js +3 -3
  212. package/lib/cjs/entry/allFactoriesAny.js +1 -1
  213. package/lib/cjs/entry/allFactoriesNumber.js +1 -1
  214. package/lib/cjs/entry/configReadonly.js +1 -1
  215. package/lib/cjs/entry/dependenciesAny/dependenciesInvmod.generated.js +41 -0
  216. package/lib/cjs/entry/dependenciesAny/dependenciesLeafCount.generated.js +23 -0
  217. package/lib/cjs/entry/dependenciesAny/dependenciesRationalize.generated.js +18 -0
  218. package/lib/cjs/entry/dependenciesAny/dependenciesResolve.generated.js +32 -0
  219. package/lib/cjs/entry/dependenciesAny/dependenciesSimplify.generated.js +21 -0
  220. package/lib/cjs/entry/dependenciesAny/dependenciesSimplifyCore.generated.js +65 -0
  221. package/lib/cjs/entry/dependenciesAny.generated.js +32 -0
  222. package/lib/cjs/entry/dependenciesNumber/dependenciesRationalize.generated.js +18 -0
  223. package/lib/cjs/entry/dependenciesNumber/dependenciesResolve.generated.js +32 -0
  224. package/lib/cjs/entry/dependenciesNumber/dependenciesSimplify.generated.js +21 -0
  225. package/lib/cjs/entry/dependenciesNumber/dependenciesSimplifyCore.generated.js +65 -0
  226. package/lib/cjs/entry/dependenciesNumber.generated.js +16 -0
  227. package/lib/cjs/entry/impureFunctionsAny.generated.js +78 -29
  228. package/lib/cjs/entry/impureFunctionsNumber.generated.js +102 -60
  229. package/lib/cjs/entry/pureFunctionsAny.generated.js +65 -55
  230. package/lib/cjs/entry/pureFunctionsNumber.generated.js +46 -48
  231. package/lib/cjs/expression/Help.js +4 -0
  232. package/lib/cjs/expression/Parser.js +1 -1
  233. package/lib/cjs/expression/embeddedDocs/core/typed.js +1 -1
  234. package/lib/cjs/expression/embeddedDocs/embeddedDocs.js +20 -6
  235. package/lib/cjs/expression/embeddedDocs/function/algebra/leafCount.js +15 -0
  236. package/lib/cjs/expression/embeddedDocs/function/algebra/resolve.js +16 -0
  237. package/lib/cjs/expression/embeddedDocs/function/algebra/simplify.js +1 -1
  238. package/lib/cjs/expression/embeddedDocs/function/algebra/simplifyCore.js +15 -0
  239. package/lib/cjs/expression/embeddedDocs/function/arithmetic/invmod.js +15 -0
  240. package/lib/cjs/expression/embeddedDocs/function/matrix/forEach.js +1 -1
  241. package/lib/cjs/expression/node/FunctionNode.js +7 -7
  242. package/lib/cjs/expression/node/IndexNode.js +1 -1
  243. package/lib/cjs/expression/node/Node.js +3 -3
  244. package/lib/cjs/expression/node/ObjectNode.js +1 -1
  245. package/lib/cjs/expression/node/utils/access.js +1 -1
  246. package/lib/cjs/expression/node/utils/assign.js +1 -1
  247. package/lib/cjs/expression/parse.js +13 -13
  248. package/lib/cjs/factoriesAny.js +32 -0
  249. package/lib/cjs/factoriesNumber.js +16 -0
  250. package/lib/cjs/function/algebra/decomposition/qr.js +1 -1
  251. package/lib/cjs/function/algebra/leafCount.js +66 -0
  252. package/lib/cjs/function/algebra/rationalize.js +36 -39
  253. package/lib/cjs/function/algebra/resolve.js +106 -0
  254. package/lib/cjs/function/algebra/simplify/simplifyConstant.js +226 -32
  255. package/lib/cjs/function/algebra/simplify/util.js +171 -33
  256. package/lib/cjs/function/algebra/simplify.js +608 -191
  257. package/lib/cjs/function/algebra/{simplify/simplifyCore.js → simplifyCore.js} +83 -31
  258. package/lib/cjs/function/algebra/solver/lsolveAll.js +2 -2
  259. package/lib/cjs/function/algebra/solver/usolveAll.js +2 -2
  260. package/lib/cjs/function/arithmetic/ceil.js +3 -3
  261. package/lib/cjs/function/arithmetic/floor.js +3 -3
  262. package/lib/cjs/function/arithmetic/invmod.js +73 -0
  263. package/lib/cjs/function/arithmetic/norm.js +1 -1
  264. package/lib/cjs/function/arithmetic/round.js +1 -1
  265. package/lib/cjs/function/matrix/eigs/complexEigs.js +5 -5
  266. package/lib/cjs/function/matrix/matrixFromColumns.js +1 -1
  267. package/lib/cjs/function/matrix/matrixFromRows.js +1 -1
  268. package/lib/cjs/function/probability/util/seededRNG.js +2 -2
  269. package/lib/cjs/function/relational/compareNatural.js +6 -6
  270. package/lib/cjs/header.js +3 -3
  271. package/lib/cjs/plain/bignumber/index.js +1 -1
  272. package/lib/cjs/plain/number/combinations.js +18 -6
  273. package/lib/cjs/type/bignumber/BigNumber.js +2 -2
  274. package/lib/cjs/type/bignumber/function/bignumber.js +1 -1
  275. package/lib/cjs/type/boolean.js +2 -2
  276. package/lib/cjs/type/complex/Complex.js +14 -14
  277. package/lib/cjs/type/complex/function/complex.js +1 -1
  278. package/lib/cjs/type/fraction/Fraction.js +6 -6
  279. package/lib/cjs/type/fraction/function/fraction.js +1 -1
  280. package/lib/cjs/type/matrix/DenseMatrix.js +5 -5
  281. package/lib/cjs/type/matrix/SparseMatrix.js +2 -2
  282. package/lib/cjs/type/number.js +1 -1
  283. package/lib/cjs/type/string.js +2 -2
  284. package/lib/cjs/type/unit/Unit.js +8 -8
  285. package/lib/cjs/utils/customs.js +2 -2
  286. package/lib/cjs/utils/emitter.js +1 -1
  287. package/lib/cjs/utils/function.js +2 -2
  288. package/lib/cjs/utils/is.js +6 -6
  289. package/lib/cjs/utils/latex.js +3 -3
  290. package/lib/cjs/utils/lruQueue.js +1 -1
  291. package/lib/cjs/utils/map.js +3 -3
  292. package/lib/cjs/utils/object.js +2 -2
  293. package/lib/cjs/utils/snapshot.js +7 -7
  294. package/lib/cjs/utils/string.js +2 -2
  295. package/lib/cjs/version.js +1 -1
  296. package/lib/esm/entry/dependenciesAny/dependenciesInvmod.generated.js +24 -0
  297. package/lib/esm/entry/dependenciesAny/dependenciesLeafCount.generated.js +12 -0
  298. package/lib/esm/entry/dependenciesAny/dependenciesRationalize.generated.js +12 -0
  299. package/lib/esm/entry/dependenciesAny/dependenciesResolve.generated.js +18 -0
  300. package/lib/esm/entry/dependenciesAny/dependenciesSimplify.generated.js +14 -0
  301. package/lib/esm/entry/dependenciesAny/dependenciesSimplifyCore.generated.js +40 -0
  302. package/lib/esm/entry/dependenciesAny.generated.js +4 -0
  303. package/lib/esm/entry/dependenciesNumber/dependenciesRationalize.generated.js +12 -0
  304. package/lib/esm/entry/dependenciesNumber/dependenciesResolve.generated.js +18 -0
  305. package/lib/esm/entry/dependenciesNumber/dependenciesSimplify.generated.js +14 -0
  306. package/lib/esm/entry/dependenciesNumber/dependenciesSimplifyCore.generated.js +40 -0
  307. package/lib/esm/entry/dependenciesNumber.generated.js +2 -0
  308. package/lib/esm/entry/impureFunctionsAny.generated.js +68 -22
  309. package/lib/esm/entry/impureFunctionsNumber.generated.js +92 -52
  310. package/lib/esm/entry/pureFunctionsAny.generated.js +53 -42
  311. package/lib/esm/entry/pureFunctionsNumber.generated.js +32 -32
  312. package/lib/esm/expression/Help.js +4 -0
  313. package/lib/esm/expression/embeddedDocs/core/typed.js +1 -1
  314. package/lib/esm/expression/embeddedDocs/embeddedDocs.js +10 -1
  315. package/lib/esm/expression/embeddedDocs/function/algebra/leafCount.js +8 -0
  316. package/lib/esm/expression/embeddedDocs/function/algebra/resolve.js +9 -0
  317. package/lib/esm/expression/embeddedDocs/function/algebra/simplify.js +1 -1
  318. package/lib/esm/expression/embeddedDocs/function/algebra/simplifyCore.js +8 -0
  319. package/lib/esm/expression/embeddedDocs/function/arithmetic/invmod.js +8 -0
  320. package/lib/esm/expression/embeddedDocs/function/matrix/forEach.js +1 -1
  321. package/lib/esm/factoriesAny.js +4 -0
  322. package/lib/esm/factoriesNumber.js +2 -0
  323. package/lib/esm/function/algebra/leafCount.js +59 -0
  324. package/lib/esm/function/algebra/rationalize.js +36 -38
  325. package/lib/esm/function/algebra/resolve.js +95 -0
  326. package/lib/esm/function/algebra/simplify/simplifyConstant.js +200 -32
  327. package/lib/esm/function/algebra/simplify/util.js +170 -34
  328. package/lib/esm/function/algebra/simplify.js +603 -186
  329. package/lib/esm/function/algebra/{simplify/simplifyCore.js → simplifyCore.js} +75 -31
  330. package/lib/esm/function/arithmetic/invmod.js +57 -0
  331. package/lib/esm/header.js +1 -1
  332. package/lib/esm/plain/number/combinations.js +18 -6
  333. package/lib/esm/version.js +1 -1
  334. package/package.json +21 -15
  335. package/types/index.d.ts +48 -6
  336. package/lib/cjs/function/algebra/simplify/resolve.js +0 -76
  337. package/lib/esm/function/algebra/simplify/resolve.js +0 -67
@@ -879,6 +879,12 @@ Object.defineProperty(exports, "createInverseConductanceQuantum", {
879
879
  return _physicalConstants.createInverseConductanceQuantum;
880
880
  }
881
881
  });
882
+ Object.defineProperty(exports, "createInvmod", {
883
+ enumerable: true,
884
+ get: function get() {
885
+ return _invmod.createInvmod;
886
+ }
887
+ });
882
888
  Object.defineProperty(exports, "createIsInteger", {
883
889
  enumerable: true,
884
890
  get: function get() {
@@ -981,6 +987,12 @@ Object.defineProperty(exports, "createLcm", {
981
987
  return _lcm.createLcm;
982
988
  }
983
989
  });
990
+ Object.defineProperty(exports, "createLeafCount", {
991
+ enumerable: true,
992
+ get: function get() {
993
+ return _leafCount.createLeafCount;
994
+ }
995
+ });
984
996
  Object.defineProperty(exports, "createLeftShift", {
985
997
  enumerable: true,
986
998
  get: function get() {
@@ -1503,6 +1515,12 @@ Object.defineProperty(exports, "createResize", {
1503
1515
  return _resize.createResize;
1504
1516
  }
1505
1517
  });
1518
+ Object.defineProperty(exports, "createResolve", {
1519
+ enumerable: true,
1520
+ get: function get() {
1521
+ return _resolve.createResolve;
1522
+ }
1523
+ });
1506
1524
  Object.defineProperty(exports, "createResultSet", {
1507
1525
  enumerable: true,
1508
1526
  get: function get() {
@@ -1671,6 +1689,12 @@ Object.defineProperty(exports, "createSimplify", {
1671
1689
  return _simplify.createSimplify;
1672
1690
  }
1673
1691
  });
1692
+ Object.defineProperty(exports, "createSimplifyCore", {
1693
+ enumerable: true,
1694
+ get: function get() {
1695
+ return _simplifyCore.createSimplifyCore;
1696
+ }
1697
+ });
1674
1698
  Object.defineProperty(exports, "createSin", {
1675
1699
  enumerable: true,
1676
1700
  get: function get() {
@@ -2112,6 +2136,8 @@ var _subtract = require("./function/arithmetic/subtract.js");
2112
2136
 
2113
2137
  var _xgcd = require("./function/arithmetic/xgcd.js");
2114
2138
 
2139
+ var _invmod = require("./function/arithmetic/invmod.js");
2140
+
2115
2141
  var _dotMultiply = require("./function/arithmetic/dotMultiply.js");
2116
2142
 
2117
2143
  var _bitAnd = require("./function/bitwise/bitAnd.js");
@@ -2486,8 +2512,14 @@ var _catalan = require("./function/combinatorics/catalan.js");
2486
2512
 
2487
2513
  var _composition = require("./function/combinatorics/composition.js");
2488
2514
 
2515
+ var _leafCount = require("./function/algebra/leafCount.js");
2516
+
2489
2517
  var _simplify = require("./function/algebra/simplify.js");
2490
2518
 
2519
+ var _simplifyCore = require("./function/algebra/simplifyCore.js");
2520
+
2521
+ var _resolve = require("./function/algebra/resolve.js");
2522
+
2491
2523
  var _derivative = require("./function/algebra/derivative.js");
2492
2524
 
2493
2525
  var _rationalize = require("./function/algebra/rationalize.js");
@@ -579,6 +579,12 @@ Object.defineProperty(exports, "createReplacer", {
579
579
  return _replacer.createReplacer;
580
580
  }
581
581
  });
582
+ Object.defineProperty(exports, "createResolve", {
583
+ enumerable: true,
584
+ get: function get() {
585
+ return _resolve.createResolve;
586
+ }
587
+ });
582
588
  Object.defineProperty(exports, "createResultSet", {
583
589
  enumerable: true,
584
590
  get: function get() {
@@ -617,6 +623,12 @@ Object.defineProperty(exports, "createSimplify", {
617
623
  return _simplify.createSimplify;
618
624
  }
619
625
  });
626
+ Object.defineProperty(exports, "createSimplifyCore", {
627
+ enumerable: true,
628
+ get: function get() {
629
+ return _simplifyCore.createSimplifyCore;
630
+ }
631
+ });
620
632
  exports.createSinh = exports.createSin = void 0;
621
633
  Object.defineProperty(exports, "createSize", {
622
634
  enumerable: true,
@@ -764,8 +776,12 @@ var _help = require("./expression/function/help.js");
764
776
 
765
777
  var _chain = require("./type/chain/function/chain.js");
766
778
 
779
+ var _resolve = require("./function/algebra/resolve.js");
780
+
767
781
  var _simplify = require("./function/algebra/simplify.js");
768
782
 
783
+ var _simplifyCore = require("./function/algebra/simplifyCore.js");
784
+
769
785
  var _derivative = require("./function/algebra/derivative.js");
770
786
 
771
787
  var _rationalize = require("./function/algebra/rationalize.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', 'ConstantNode', 'OperatorNode', 'FunctionNode', '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,38 +24,36 @@ 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,
32
31
  mathWithTransform = _ref.mathWithTransform,
32
+ matrix = _ref.matrix,
33
+ AccessorNode = _ref.AccessorNode,
34
+ ArrayNode = _ref.ArrayNode,
33
35
  ConstantNode = _ref.ConstantNode,
34
- OperatorNode = _ref.OperatorNode,
35
36
  FunctionNode = _ref.FunctionNode,
37
+ IndexNode = _ref.IndexNode,
38
+ ObjectNode = _ref.ObjectNode,
39
+ OperatorNode = _ref.OperatorNode,
36
40
  SymbolNode = _ref.SymbolNode,
37
41
  ParenthesisNode = _ref.ParenthesisNode;
38
42
  var simplifyConstant = (0, _simplifyConstant.createSimplifyConstant)({
39
43
  typed: typed,
40
44
  config: config,
41
45
  mathWithTransform: mathWithTransform,
46
+ matrix: matrix,
42
47
  fraction: fraction,
43
48
  bignumber: bignumber,
49
+ AccessorNode: AccessorNode,
50
+ ArrayNode: ArrayNode,
44
51
  ConstantNode: ConstantNode,
45
- OperatorNode: OperatorNode,
46
52
  FunctionNode: FunctionNode,
47
- SymbolNode: SymbolNode
48
- });
49
- var simplifyCore = (0, _simplifyCore.createSimplifyCore)({
50
- equal: equal,
51
- isZero: isZero,
52
- add: add,
53
- subtract: subtract,
54
- multiply: multiply,
55
- divide: divide,
56
- pow: pow,
57
- ConstantNode: ConstantNode,
53
+ IndexNode: IndexNode,
54
+ ObjectNode: ObjectNode,
58
55
  OperatorNode: OperatorNode,
59
- FunctionNode: FunctionNode,
60
- ParenthesisNode: ParenthesisNode
56
+ SymbolNode: SymbolNode
61
57
  });
62
58
  /**
63
59
  * Transform a rationalizable expression in a rational fraction.
@@ -102,13 +98,13 @@ var createRationalize = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
102
98
  * @param {Object|boolean} optional scope of expression or true for already evaluated rational expression at input
103
99
  * @param {Boolean} detailed optional True if return an object, false if return expression node (default)
104
100
  *
105
- * @return {Object | Node} The rational polynomial of `expr` or na object
106
- * {Object}
107
- * {Expression Node} expression: node simplified expression
108
- * {Expression Node} numerator: simplified numerator of expression
109
- * {Expression Node | boolean} denominator: simplified denominator or false (if there is no denominator)
110
- * {Array} variables: variable names
111
- * {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
112
108
  * {Expression Node} node simplified expression
113
109
  *
114
110
  */
@@ -141,6 +137,12 @@ var createRationalize = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
141
137
  var polyRet = polynomial(expr, scope, true, setRules.firstRules); // Check if expression is a rationalizable polynomial
142
138
 
143
139
  var nVars = polyRet.variables.length;
140
+ var noExactFractions = {
141
+ exactFractions: false
142
+ };
143
+ var withExactFractions = {
144
+ exactFractions: true
145
+ };
144
146
  expr = polyRet.expression;
145
147
 
146
148
  if (nVars >= 1) {
@@ -151,18 +153,16 @@ var createRationalize = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
151
153
 
152
154
  var rules;
153
155
  var eDistrDiv = true;
154
- var redoInic = false;
155
- expr = simplify(expr, setRules.firstRules, {}, {
156
- exactFractions: false
157
- }); // Apply the initial rules, including succ div rules
156
+ var redoInic = false; // Apply the initial rules, including succ div rules:
158
157
 
158
+ expr = simplify(expr, setRules.firstRules, {}, noExactFractions);
159
159
  var s;
160
160
 
161
161
  while (true) {
162
- // 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:
163
164
  rules = eDistrDiv ? setRules.distrDivRules : setRules.sucDivRules;
164
- expr = simplify(expr, rules); // until no more changes
165
-
165
+ expr = simplify(expr, rules, {}, withExactFractions);
166
166
  eDistrDiv = !eDistrDiv; // Swap between Distr.Div and Succ. Div. Rules
167
167
 
168
168
  s = expr.toString();
@@ -177,14 +177,11 @@ var createRationalize = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
177
177
 
178
178
  if (redoInic) {
179
179
  // Apply first rules again without succ div rules (if there are changes)
180
- expr = simplify(expr, setRules.firstRulesAgain, {}, {
181
- exactFractions: false
182
- });
183
- }
180
+ expr = simplify(expr, setRules.firstRulesAgain, {}, noExactFractions);
181
+ } // Apply final rules:
182
+
184
183
 
185
- expr = simplify(expr, setRules.finalRules, {}, {
186
- exactFractions: false
187
- }); // Apply final rules
184
+ expr = simplify(expr, setRules.finalRules, {}, noExactFractions);
188
185
  } // NVars >= 1
189
186
 
190
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;