mathjs 10.1.0 → 10.3.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 (341) hide show
  1. package/HISTORY.md +38 -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/deepEqual.md +6 -0
  53. package/docs/reference/functions/derivative.md +6 -0
  54. package/docs/reference/functions/det.md +6 -0
  55. package/docs/reference/functions/diag.md +6 -0
  56. package/docs/reference/functions/diff.md +6 -0
  57. package/docs/reference/functions/distance.md +6 -0
  58. package/docs/reference/functions/divide.md +6 -0
  59. package/docs/reference/functions/dot.md +6 -0
  60. package/docs/reference/functions/dotDivide.md +6 -0
  61. package/docs/reference/functions/dotMultiply.md +6 -0
  62. package/docs/reference/functions/dotPow.md +6 -0
  63. package/docs/reference/functions/eigs.md +6 -0
  64. package/docs/reference/functions/equal.md +6 -0
  65. package/docs/reference/functions/equalText.md +6 -0
  66. package/docs/reference/functions/erf.md +6 -0
  67. package/docs/reference/functions/evaluate.md +6 -0
  68. package/docs/reference/functions/exp.md +6 -0
  69. package/docs/reference/functions/expm.md +6 -0
  70. package/docs/reference/functions/expm1.md +6 -0
  71. package/docs/reference/functions/factorial.md +6 -0
  72. package/docs/reference/functions/filter.md +6 -0
  73. package/docs/reference/functions/fix.md +6 -0
  74. package/docs/reference/functions/flatten.md +6 -0
  75. package/docs/reference/functions/floor.md +6 -0
  76. package/docs/reference/functions/forEach.md +6 -0
  77. package/docs/reference/functions/format.md +6 -0
  78. package/docs/reference/functions/gamma.md +6 -0
  79. package/docs/reference/functions/gcd.md +6 -0
  80. package/docs/reference/functions/getMatrixDataType.md +6 -0
  81. package/docs/reference/functions/hasNumericValue.md +6 -0
  82. package/docs/reference/functions/help.md +6 -0
  83. package/docs/reference/functions/hex.md +6 -0
  84. package/docs/reference/functions/hypot.md +6 -0
  85. package/docs/reference/functions/identity.md +6 -0
  86. package/docs/reference/functions/im.md +6 -0
  87. package/docs/reference/functions/intersect.md +6 -0
  88. package/docs/reference/functions/inv.md +6 -0
  89. package/docs/reference/functions/invmod.md +6 -0
  90. package/docs/reference/functions/isInteger.md +6 -0
  91. package/docs/reference/functions/isNaN.md +6 -0
  92. package/docs/reference/functions/isNegative.md +6 -0
  93. package/docs/reference/functions/isNumeric.md +6 -0
  94. package/docs/reference/functions/isPositive.md +6 -0
  95. package/docs/reference/functions/isPrime.md +6 -0
  96. package/docs/reference/functions/isZero.md +6 -0
  97. package/docs/reference/functions/kldivergence.md +6 -0
  98. package/docs/reference/functions/kron.md +6 -0
  99. package/docs/reference/functions/larger.md +6 -0
  100. package/docs/reference/functions/largerEq.md +6 -0
  101. package/docs/reference/functions/lcm.md +6 -0
  102. package/docs/reference/functions/leafCount.md +52 -0
  103. package/docs/reference/functions/leftShift.md +6 -0
  104. package/docs/reference/functions/log.md +6 -0
  105. package/docs/reference/functions/log10.md +6 -0
  106. package/docs/reference/functions/log1p.md +6 -0
  107. package/docs/reference/functions/log2.md +6 -0
  108. package/docs/reference/functions/lsolve.md +6 -0
  109. package/docs/reference/functions/lsolveAll.md +6 -0
  110. package/docs/reference/functions/lup.md +6 -0
  111. package/docs/reference/functions/lusolve.md +6 -0
  112. package/docs/reference/functions/mad.md +6 -0
  113. package/docs/reference/functions/map.md +28 -5
  114. package/docs/reference/functions/matrixFromColumns.md +6 -0
  115. package/docs/reference/functions/matrixFromFunction.md +6 -0
  116. package/docs/reference/functions/matrixFromRows.md +6 -0
  117. package/docs/reference/functions/max.md +6 -0
  118. package/docs/reference/functions/mean.md +6 -0
  119. package/docs/reference/functions/median.md +6 -0
  120. package/docs/reference/functions/min.md +6 -0
  121. package/docs/reference/functions/mod.md +6 -0
  122. package/docs/reference/functions/mode.md +6 -0
  123. package/docs/reference/functions/multinomial.md +6 -0
  124. package/docs/reference/functions/multiply.md +6 -0
  125. package/docs/reference/functions/norm.md +6 -0
  126. package/docs/reference/functions/not.md +6 -0
  127. package/docs/reference/functions/nthRoot.md +6 -0
  128. package/docs/reference/functions/nthRoots.md +6 -0
  129. package/docs/reference/functions/numeric.md +6 -0
  130. package/docs/reference/functions/oct.md +6 -0
  131. package/docs/reference/functions/ones.md +6 -0
  132. package/docs/reference/functions/or.md +6 -0
  133. package/docs/reference/functions/parser.md +6 -0
  134. package/docs/reference/functions/partitionSelect.md +6 -0
  135. package/docs/reference/functions/permutations.md +6 -0
  136. package/docs/reference/functions/pickRandom.md +6 -0
  137. package/docs/reference/functions/pow.md +6 -0
  138. package/docs/reference/functions/print.md +6 -0
  139. package/docs/reference/functions/prod.md +6 -0
  140. package/docs/reference/functions/qr.md +6 -0
  141. package/docs/reference/functions/quantileSeq.md +6 -0
  142. package/docs/reference/functions/random.md +6 -0
  143. package/docs/reference/functions/randomInt.md +6 -0
  144. package/docs/reference/functions/range.md +6 -0
  145. package/docs/reference/functions/rationalize.md +7 -1
  146. package/docs/reference/functions/re.md +6 -0
  147. package/docs/reference/functions/reshape.md +7 -0
  148. package/docs/reference/functions/resize.md +6 -0
  149. package/docs/reference/functions/resolve.md +46 -0
  150. package/docs/reference/functions/rightArithShift.md +6 -0
  151. package/docs/reference/functions/rightLogShift.md +6 -0
  152. package/docs/reference/functions/rotate.md +6 -0
  153. package/docs/reference/functions/rotationMatrix.md +6 -0
  154. package/docs/reference/functions/round.md +6 -0
  155. package/docs/reference/functions/row.md +6 -0
  156. package/docs/reference/functions/sec.md +6 -0
  157. package/docs/reference/functions/sech.md +6 -0
  158. package/docs/reference/functions/setCartesian.md +6 -0
  159. package/docs/reference/functions/setDifference.md +6 -0
  160. package/docs/reference/functions/setDistinct.md +6 -0
  161. package/docs/reference/functions/setIntersect.md +6 -0
  162. package/docs/reference/functions/setIsSubset.md +6 -0
  163. package/docs/reference/functions/setMultiplicity.md +6 -0
  164. package/docs/reference/functions/setPowerset.md +6 -0
  165. package/docs/reference/functions/setSize.md +6 -0
  166. package/docs/reference/functions/setSymDifference.md +6 -0
  167. package/docs/reference/functions/setUnion.md +6 -0
  168. package/docs/reference/functions/sign.md +6 -0
  169. package/docs/reference/functions/simplify.md +47 -7
  170. package/docs/reference/functions/simplifyCore.md +50 -0
  171. package/docs/reference/functions/sin.md +6 -0
  172. package/docs/reference/functions/sinh.md +6 -0
  173. package/docs/reference/functions/size.md +6 -0
  174. package/docs/reference/functions/slu.md +6 -0
  175. package/docs/reference/functions/smaller.md +6 -0
  176. package/docs/reference/functions/smallerEq.md +6 -0
  177. package/docs/reference/functions/sort.md +6 -0
  178. package/docs/reference/functions/sqrt.md +6 -0
  179. package/docs/reference/functions/sqrtm.md +6 -0
  180. package/docs/reference/functions/square.md +6 -0
  181. package/docs/reference/functions/squeeze.md +6 -0
  182. package/docs/reference/functions/std.md +6 -0
  183. package/docs/reference/functions/stirlingS2.md +6 -0
  184. package/docs/reference/functions/subset.md +16 -2
  185. package/docs/reference/functions/subtract.md +6 -0
  186. package/docs/reference/functions/sum.md +6 -0
  187. package/docs/reference/functions/symbolicEqual.md +62 -0
  188. package/docs/reference/functions/tan.md +6 -0
  189. package/docs/reference/functions/tanh.md +6 -0
  190. package/docs/reference/functions/to.md +6 -0
  191. package/docs/reference/functions/trace.md +6 -0
  192. package/docs/reference/functions/transpose.md +6 -0
  193. package/docs/reference/functions/typeOf.md +6 -0
  194. package/docs/reference/functions/unaryMinus.md +6 -0
  195. package/docs/reference/functions/unaryPlus.md +6 -0
  196. package/docs/reference/functions/unequal.md +6 -0
  197. package/docs/reference/functions/usolve.md +6 -0
  198. package/docs/reference/functions/usolveAll.md +6 -0
  199. package/docs/reference/functions/variance.md +6 -0
  200. package/docs/reference/functions/xgcd.md +6 -0
  201. package/docs/reference/functions/xor.md +6 -0
  202. package/docs/reference/functions/zeros.md +6 -0
  203. package/docs/reference/functions.md +5 -1
  204. package/lib/browser/math.js +6 -6
  205. package/lib/browser/math.js.map +1 -1
  206. package/lib/cjs/core/create.js +4 -4
  207. package/lib/cjs/core/function/import.js +3 -3
  208. package/lib/cjs/core/function/typed.js +2 -2
  209. package/lib/cjs/defaultInstance.js +3 -3
  210. package/lib/cjs/entry/allFactoriesAny.js +1 -1
  211. package/lib/cjs/entry/allFactoriesNumber.js +1 -1
  212. package/lib/cjs/entry/configReadonly.js +1 -1
  213. package/lib/cjs/entry/dependenciesAny/dependenciesLeafCount.generated.js +23 -0
  214. package/lib/cjs/entry/dependenciesAny/dependenciesRationalize.generated.js +3 -0
  215. package/lib/cjs/entry/dependenciesAny/dependenciesResolve.generated.js +32 -0
  216. package/lib/cjs/entry/dependenciesAny/dependenciesSimplify.generated.js +6 -0
  217. package/lib/cjs/entry/dependenciesAny/dependenciesSimplifyCore.generated.js +65 -0
  218. package/lib/cjs/entry/dependenciesAny/dependenciesSymbolicEqual.generated.js +29 -0
  219. package/lib/cjs/entry/dependenciesAny.generated.js +32 -0
  220. package/lib/cjs/entry/dependenciesNumber/dependenciesRationalize.generated.js +3 -0
  221. package/lib/cjs/entry/dependenciesNumber/dependenciesResolve.generated.js +32 -0
  222. package/lib/cjs/entry/dependenciesNumber/dependenciesSimplify.generated.js +6 -0
  223. package/lib/cjs/entry/dependenciesNumber/dependenciesSimplifyCore.generated.js +65 -0
  224. package/lib/cjs/entry/dependenciesNumber.generated.js +16 -0
  225. package/lib/cjs/entry/impureFunctionsAny.generated.js +80 -34
  226. package/lib/cjs/entry/impureFunctionsNumber.generated.js +96 -64
  227. package/lib/cjs/entry/pureFunctionsAny.generated.js +62 -64
  228. package/lib/cjs/entry/pureFunctionsNumber.generated.js +46 -48
  229. package/lib/cjs/expression/Help.js +4 -0
  230. package/lib/cjs/expression/Parser.js +1 -1
  231. package/lib/cjs/expression/embeddedDocs/core/typed.js +1 -1
  232. package/lib/cjs/expression/embeddedDocs/embeddedDocs.js +247 -235
  233. package/lib/cjs/expression/embeddedDocs/function/algebra/leafCount.js +15 -0
  234. package/lib/cjs/expression/embeddedDocs/function/algebra/resolve.js +16 -0
  235. package/lib/cjs/expression/embeddedDocs/function/algebra/simplify.js +1 -1
  236. package/lib/cjs/expression/embeddedDocs/function/algebra/simplifyCore.js +15 -0
  237. package/lib/cjs/expression/embeddedDocs/function/algebra/symbolicEqual.js +15 -0
  238. package/lib/cjs/expression/embeddedDocs/function/matrix/subset.js +2 -2
  239. package/lib/cjs/expression/node/FunctionNode.js +80 -61
  240. package/lib/cjs/expression/node/IndexNode.js +1 -1
  241. package/lib/cjs/expression/node/Node.js +3 -3
  242. package/lib/cjs/expression/node/ObjectNode.js +1 -1
  243. package/lib/cjs/expression/node/utils/access.js +1 -1
  244. package/lib/cjs/expression/node/utils/assign.js +1 -1
  245. package/lib/cjs/expression/parse.js +13 -13
  246. package/lib/cjs/factoriesAny.js +32 -0
  247. package/lib/cjs/factoriesNumber.js +16 -0
  248. package/lib/cjs/function/algebra/decomposition/qr.js +1 -1
  249. package/lib/cjs/function/algebra/leafCount.js +66 -0
  250. package/lib/cjs/function/algebra/rationalize.js +24 -41
  251. package/lib/cjs/function/algebra/resolve.js +106 -0
  252. package/lib/cjs/function/algebra/simplify/simplifyConstant.js +5 -5
  253. package/lib/cjs/function/algebra/simplify/util.js +171 -33
  254. package/lib/cjs/function/algebra/simplify.js +588 -211
  255. package/lib/cjs/function/algebra/{simplify/simplifyCore.js → simplifyCore.js} +67 -43
  256. package/lib/cjs/function/algebra/solver/lsolveAll.js +2 -2
  257. package/lib/cjs/function/algebra/solver/usolveAll.js +2 -2
  258. package/lib/cjs/function/algebra/symbolicEqual.js +88 -0
  259. package/lib/cjs/function/arithmetic/ceil.js +3 -3
  260. package/lib/cjs/function/arithmetic/floor.js +3 -3
  261. package/lib/cjs/function/arithmetic/invmod.js +1 -1
  262. package/lib/cjs/function/arithmetic/norm.js +1 -1
  263. package/lib/cjs/function/arithmetic/round.js +1 -1
  264. package/lib/cjs/function/matrix/eigs/complexEigs.js +13 -11
  265. package/lib/cjs/function/matrix/map.js +53 -15
  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/matrix/subset.js +15 -5
  269. package/lib/cjs/function/probability/util/seededRNG.js +2 -2
  270. package/lib/cjs/function/relational/compareNatural.js +6 -6
  271. package/lib/cjs/header.js +2 -2
  272. package/lib/cjs/plain/bignumber/index.js +1 -1
  273. package/lib/cjs/plain/number/combinations.js +18 -6
  274. package/lib/cjs/type/bignumber/BigNumber.js +2 -2
  275. package/lib/cjs/type/bignumber/function/bignumber.js +1 -1
  276. package/lib/cjs/type/boolean.js +2 -2
  277. package/lib/cjs/type/complex/Complex.js +14 -14
  278. package/lib/cjs/type/complex/function/complex.js +1 -1
  279. package/lib/cjs/type/fraction/Fraction.js +6 -6
  280. package/lib/cjs/type/fraction/function/fraction.js +1 -1
  281. package/lib/cjs/type/matrix/DenseMatrix.js +5 -5
  282. package/lib/cjs/type/matrix/SparseMatrix.js +2 -2
  283. package/lib/cjs/type/number.js +1 -1
  284. package/lib/cjs/type/string.js +2 -2
  285. package/lib/cjs/type/unit/Unit.js +8 -8
  286. package/lib/cjs/utils/customs.js +2 -2
  287. package/lib/cjs/utils/emitter.js +1 -1
  288. package/lib/cjs/utils/function.js +2 -2
  289. package/lib/cjs/utils/is.js +6 -6
  290. package/lib/cjs/utils/latex.js +3 -3
  291. package/lib/cjs/utils/lruQueue.js +1 -1
  292. package/lib/cjs/utils/map.js +3 -3
  293. package/lib/cjs/utils/object.js +2 -2
  294. package/lib/cjs/utils/snapshot.js +7 -7
  295. package/lib/cjs/utils/string.js +2 -2
  296. package/lib/cjs/version.js +1 -1
  297. package/lib/esm/entry/dependenciesAny/dependenciesLeafCount.generated.js +12 -0
  298. package/lib/esm/entry/dependenciesAny/dependenciesRationalize.generated.js +2 -0
  299. package/lib/esm/entry/dependenciesAny/dependenciesResolve.generated.js +18 -0
  300. package/lib/esm/entry/dependenciesAny/dependenciesSimplify.generated.js +4 -0
  301. package/lib/esm/entry/dependenciesAny/dependenciesSimplifyCore.generated.js +40 -0
  302. package/lib/esm/entry/dependenciesAny/dependenciesSymbolicEqual.generated.js +16 -0
  303. package/lib/esm/entry/dependenciesAny.generated.js +4 -0
  304. package/lib/esm/entry/dependenciesNumber/dependenciesRationalize.generated.js +2 -0
  305. package/lib/esm/entry/dependenciesNumber/dependenciesResolve.generated.js +18 -0
  306. package/lib/esm/entry/dependenciesNumber/dependenciesSimplify.generated.js +4 -0
  307. package/lib/esm/entry/dependenciesNumber/dependenciesSimplifyCore.generated.js +40 -0
  308. package/lib/esm/entry/dependenciesNumber.generated.js +2 -0
  309. package/lib/esm/entry/impureFunctionsAny.generated.js +69 -27
  310. package/lib/esm/entry/impureFunctionsNumber.generated.js +83 -53
  311. package/lib/esm/entry/pureFunctionsAny.generated.js +49 -49
  312. package/lib/esm/entry/pureFunctionsNumber.generated.js +32 -32
  313. package/lib/esm/expression/Help.js +4 -0
  314. package/lib/esm/expression/embeddedDocs/core/typed.js +1 -1
  315. package/lib/esm/expression/embeddedDocs/embeddedDocs.js +220 -212
  316. package/lib/esm/expression/embeddedDocs/function/algebra/leafCount.js +8 -0
  317. package/lib/esm/expression/embeddedDocs/function/algebra/resolve.js +9 -0
  318. package/lib/esm/expression/embeddedDocs/function/algebra/simplify.js +1 -1
  319. package/lib/esm/expression/embeddedDocs/function/algebra/simplifyCore.js +8 -0
  320. package/lib/esm/expression/embeddedDocs/function/algebra/symbolicEqual.js +8 -0
  321. package/lib/esm/expression/embeddedDocs/function/matrix/subset.js +2 -2
  322. package/lib/esm/expression/node/FunctionNode.js +70 -53
  323. package/lib/esm/factoriesAny.js +4 -0
  324. package/lib/esm/factoriesNumber.js +2 -0
  325. package/lib/esm/function/algebra/leafCount.js +59 -0
  326. package/lib/esm/function/algebra/rationalize.js +24 -40
  327. package/lib/esm/function/algebra/resolve.js +95 -0
  328. package/lib/esm/function/algebra/simplify/simplifyConstant.js +3 -3
  329. package/lib/esm/function/algebra/simplify/util.js +170 -34
  330. package/lib/esm/function/algebra/simplify.js +583 -206
  331. package/lib/esm/function/algebra/{simplify/simplifyCore.js → simplifyCore.js} +60 -44
  332. package/lib/esm/function/algebra/symbolicEqual.js +80 -0
  333. package/lib/esm/function/matrix/eigs/complexEigs.js +8 -6
  334. package/lib/esm/function/matrix/map.js +53 -15
  335. package/lib/esm/function/matrix/subset.js +15 -5
  336. package/lib/esm/plain/number/combinations.js +18 -6
  337. package/lib/esm/version.js +1 -1
  338. package/package.json +20 -15
  339. package/types/index.d.ts +52 -10
  340. package/lib/cjs/function/algebra/simplify/resolve.js +0 -76
  341. package/lib/esm/function/algebra/simplify/resolve.js +0 -67
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.leafCountDocs = void 0;
7
+ var leafCountDocs = {
8
+ name: 'leafCount',
9
+ category: 'Algebra',
10
+ syntax: ['leafCount(expr)'],
11
+ description: 'Computes the number of leaves in the parse tree of the given expression',
12
+ examples: ['leafCount("e^(i*pi)-1")', 'leafCount(parse("{a: 22/7, b: 10^(1/2)}"))'],
13
+ seealso: ['simplify']
14
+ };
15
+ exports.leafCountDocs = leafCountDocs;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.resolveDocs = void 0;
7
+ var resolveDocs = {
8
+ name: 'resolve',
9
+ category: 'Algebra',
10
+ syntax: ['resolve(node, scope)'],
11
+ description: 'Recursively substitute variables in an expression tree.',
12
+ examples: ['resolve(parse("1 + x"), { x: 7 })', 'resolve(parse("size(text)"), { text: "Hello World" })', 'resolve(parse("x + y"), { x: parse("3z") })', 'resolve(parse("3x"), { x: parse("y+z"), z: parse("w^y") })'],
13
+ seealso: ['simplify', 'evaluate'],
14
+ mayThrow: ['ReferenceError']
15
+ };
16
+ exports.resolveDocs = resolveDocs;
@@ -10,6 +10,6 @@ var simplifyDocs = {
10
10
  syntax: ['simplify(expr)', 'simplify(expr, rules)'],
11
11
  description: 'Simplify an expression tree.',
12
12
  examples: ['simplify("3 + 2 / 4")', 'simplify("2x + x")', 'f = parse("x * (x + 2 + x)")', 'simplified = simplify(f)', 'simplified.evaluate({x: 2})'],
13
- seealso: ['derivative', 'parse', 'evaluate']
13
+ seealso: ['simplifyCore', 'derivative', 'evaluate', 'parse', 'rationalize', 'resolve']
14
14
  };
15
15
  exports.simplifyDocs = simplifyDocs;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.simplifyCoreDocs = void 0;
7
+ var simplifyCoreDocs = {
8
+ name: 'simplifyCore',
9
+ category: 'Algebra',
10
+ syntax: ['simplifyCore(node)'],
11
+ description: 'Perform simple one-pass simplifications on an expression tree.',
12
+ examples: ['simplifyCore(parse("0*x"))', 'simplifyCore(parse("(x+0)*2"))'],
13
+ seealso: ['simplify', 'evaluate']
14
+ };
15
+ exports.simplifyCoreDocs = simplifyCoreDocs;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.symbolicEqualDocs = void 0;
7
+ var symbolicEqualDocs = {
8
+ name: 'symbolicEqual',
9
+ category: 'Algebra',
10
+ syntax: ['symbolicEqual(expr1, expr2)', 'symbolicEqual(expr1, expr2, options)'],
11
+ description: 'Returns true if the difference of the expressions simplifies to 0',
12
+ examples: ['symbolicEqual("x*y","y*x")', 'symbolicEqual("abs(x^2)", "x^2")', 'symbolicEqual("abs(x)", "x", {context: {abs: {trivial: true}}})'],
13
+ seealso: ['simplify', 'evaluate']
14
+ };
15
+ exports.symbolicEqualDocs = symbolicEqualDocs;
@@ -8,8 +8,8 @@ var subsetDocs = {
8
8
  name: 'subset',
9
9
  category: 'Matrix',
10
10
  syntax: ['value(index)', 'value(index) = replacement', 'subset(value, [index])', 'subset(value, [index], replacement)'],
11
- description: 'Get or set a subset of a matrix or string. ' + 'Indexes are one-based. ' + 'Both the ranges lower-bound and upper-bound are included.',
12
- examples: ['d = [1, 2; 3, 4]', 'e = []', 'e[1, 1:2] = [5, 6]', 'e[2, :] = [7, 8]', 'f = d * e', 'f[2, 1]', 'f[:, 1]'],
11
+ description: 'Get or set a subset of the entries of a matrix or ' + 'characters of a string. ' + 'Indexes are one-based. There should be one index specification for ' + 'each dimension of the target. Each specification can be a single ' + 'index, a list of indices, or a range in colon notation `l:u`. ' + 'In a range, both the lower bound l and upper bound u are included; ' + 'and if a bound is omitted it defaults to the most extreme valid value. ' + 'The cartesian product of the indices specified in each dimension ' + 'determines the target of the operation.',
12
+ examples: ['d = [1, 2; 3, 4]', 'e = []', 'e[1, 1:2] = [5, 6]', 'e[2, :] = [7, 8]', 'f = d * e', 'f[2, 1]', 'f[:, 1]', 'f[[1,2], [1,3]] = [9, 10; 11, 12]', 'f'],
13
13
  seealso: ['concat', 'det', 'diag', 'identity', 'inv', 'ones', 'range', 'size', 'squeeze', 'trace', 'transpose', 'zeros']
14
14
  };
15
15
  exports.subsetDocs = subsetDocs;
@@ -97,78 +97,97 @@ var createFunctionNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies
97
97
  });
98
98
 
99
99
  if ((0, _is.isSymbolNode)(this.fn)) {
100
- // we can statically determine whether the function has an rawArgs property
101
100
  var _name = this.fn.name;
102
- var fn = _name in math ? (0, _customs.getSafeProperty)(math, _name) : undefined;
103
- var isRaw = typeof fn === 'function' && fn.rawArgs === true;
104
101
 
105
- var resolveFn = function resolveFn(scope) {
106
- if (scope.has(_name)) {
107
- return scope.get(_name);
108
- }
102
+ if (!argNames[_name]) {
103
+ // we can statically determine whether the function has an rawArgs property
104
+ var fn = _name in math ? (0, _customs.getSafeProperty)(math, _name) : undefined;
105
+ var isRaw = typeof fn === 'function' && fn.rawArgs === true;
109
106
 
110
- if (_name in math) {
111
- return (0, _customs.getSafeProperty)(math, _name);
112
- }
107
+ var resolveFn = function resolveFn(scope) {
108
+ if (scope.has(_name)) {
109
+ return scope.get(_name);
110
+ }
113
111
 
114
- return FunctionNode.onUndefinedFunction(_name);
115
- };
112
+ if (_name in math) {
113
+ return (0, _customs.getSafeProperty)(math, _name);
114
+ }
116
115
 
117
- if (isRaw) {
118
- // pass unevaluated parameters (nodes) to the function
119
- // "raw" evaluation
120
- var rawArgs = this.args;
121
- return function evalFunctionNode(scope, args, context) {
122
- var fn = resolveFn(scope);
123
- return fn(rawArgs, math, (0, _scope.createSubScope)(scope, args), scope);
116
+ return FunctionNode.onUndefinedFunction(_name);
124
117
  };
125
- } else {
126
- // "regular" evaluation
127
- switch (evalArgs.length) {
128
- case 0:
129
- return function evalFunctionNode(scope, args, context) {
130
- var fn = resolveFn(scope);
131
- return fn();
132
- };
133
-
134
- case 1:
135
- return function evalFunctionNode(scope, args, context) {
136
- var fn = resolveFn(scope);
137
- var evalArg0 = evalArgs[0];
138
- return fn(evalArg0(scope, args, context));
139
- };
140
-
141
- case 2:
142
- return function evalFunctionNode(scope, args, context) {
143
- var fn = resolveFn(scope);
144
- var evalArg0 = evalArgs[0];
145
- var evalArg1 = evalArgs[1];
146
- return fn(evalArg0(scope, args, context), evalArg1(scope, args, context));
147
- };
148
-
149
- default:
150
- return function evalFunctionNode(scope, args, context) {
151
- var fn = resolveFn(scope);
152
- var values = evalArgs.map(function (evalArg) {
153
- return evalArg(scope, args, context);
154
- });
155
- return fn.apply(void 0, (0, _toConsumableArray2["default"])(values));
156
- };
118
+
119
+ if (isRaw) {
120
+ // pass unevaluated parameters (nodes) to the function
121
+ // "raw" evaluation
122
+ var rawArgs = this.args;
123
+ return function evalFunctionNode(scope, args, context) {
124
+ var fn = resolveFn(scope);
125
+ return fn(rawArgs, math, (0, _scope.createSubScope)(scope, args), scope);
126
+ };
127
+ } else {
128
+ // "regular" evaluation
129
+ switch (evalArgs.length) {
130
+ case 0:
131
+ return function evalFunctionNode(scope, args, context) {
132
+ var fn = resolveFn(scope);
133
+ return fn();
134
+ };
135
+
136
+ case 1:
137
+ return function evalFunctionNode(scope, args, context) {
138
+ var fn = resolveFn(scope);
139
+ var evalArg0 = evalArgs[0];
140
+ return fn(evalArg0(scope, args, context));
141
+ };
142
+
143
+ case 2:
144
+ return function evalFunctionNode(scope, args, context) {
145
+ var fn = resolveFn(scope);
146
+ var evalArg0 = evalArgs[0];
147
+ var evalArg1 = evalArgs[1];
148
+ return fn(evalArg0(scope, args, context), evalArg1(scope, args, context));
149
+ };
150
+
151
+ default:
152
+ return function evalFunctionNode(scope, args, context) {
153
+ var fn = resolveFn(scope);
154
+ var values = evalArgs.map(function (evalArg) {
155
+ return evalArg(scope, args, context);
156
+ });
157
+ return fn.apply(void 0, (0, _toConsumableArray2.default)(values));
158
+ };
159
+ }
157
160
  }
161
+ } else {
162
+ // the function symbol is an argName
163
+ var _rawArgs = this.args;
164
+ return function evalFunctionNode(scope, args, context) {
165
+ var fn = args[_name];
166
+ var isRaw = fn && fn.rawArgs;
167
+
168
+ if (isRaw) {
169
+ return fn(_rawArgs, math, (0, _scope.createSubScope)(scope, args), scope); // "raw" evaluation
170
+ } else {
171
+ var values = evalArgs.map(function (evalArg) {
172
+ return evalArg(scope, args, context);
173
+ });
174
+ return fn.apply(fn, values);
175
+ }
176
+ };
158
177
  }
159
178
  } else if ((0, _is.isAccessorNode)(this.fn) && (0, _is.isIndexNode)(this.fn.index) && this.fn.index.isObjectProperty()) {
160
179
  // execute the function with the right context: the object of the AccessorNode
161
180
  var evalObject = this.fn.object._compile(math, argNames);
162
181
 
163
182
  var prop = this.fn.index.getObjectProperty();
164
- var _rawArgs = this.args;
183
+ var _rawArgs2 = this.args;
165
184
  return function evalFunctionNode(scope, args, context) {
166
185
  var object = evalObject(scope, args, context);
167
186
  (0, _customs.validateSafeMethod)(object, prop);
168
187
  var isRaw = object[prop] && object[prop].rawArgs;
169
188
 
170
189
  if (isRaw) {
171
- return object[prop](_rawArgs, math, (0, _scope.createSubScope)(scope, args), scope); // "raw" evaluation
190
+ return object[prop](_rawArgs2, math, (0, _scope.createSubScope)(scope, args), scope); // "raw" evaluation
172
191
  } else {
173
192
  // "regular" evaluation
174
193
  var values = evalArgs.map(function (evalArg) {
@@ -182,13 +201,13 @@ var createFunctionNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies
182
201
  // we have to dynamically determine whether the function has a rawArgs property
183
202
  var evalFn = this.fn._compile(math, argNames);
184
203
 
185
- var _rawArgs2 = this.args;
204
+ var _rawArgs3 = this.args;
186
205
  return function evalFunctionNode(scope, args, context) {
187
206
  var fn = evalFn(scope, args, context);
188
207
  var isRaw = fn && fn.rawArgs;
189
208
 
190
209
  if (isRaw) {
191
- return fn(_rawArgs2, math, (0, _scope.createSubScope)(scope, args), scope); // "raw" evaluation
210
+ return fn(_rawArgs3, math, (0, _scope.createSubScope)(scope, args), scope); // "raw" evaluation
192
211
  } else {
193
212
  // "regular" evaluation
194
213
  var values = evalArgs.map(function (evalArg) {
@@ -270,7 +289,7 @@ var createFunctionNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies
270
289
  var customString;
271
290
  var name = this.fn.toString(options);
272
291
 
273
- if (options && (0, _typeof2["default"])(options.handler) === 'object' && (0, _object.hasOwnProperty)(options.handler, name)) {
292
+ if (options && (0, _typeof2.default)(options.handler) === 'object' && (0, _object.hasOwnProperty)(options.handler, name)) {
274
293
  // callback is a map of callback functions
275
294
  customString = options.handler[name](this, options);
276
295
  }
@@ -376,7 +395,7 @@ var createFunctionNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies
376
395
 
377
396
  if (match[2] === undefined) {
378
397
  // no square brackets
379
- switch ((0, _typeof2["default"])(property)) {
398
+ switch ((0, _typeof2.default)(property)) {
380
399
  case 'string':
381
400
  latex += property;
382
401
  break;
@@ -436,7 +455,7 @@ var createFunctionNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies
436
455
  FunctionNode.prototype.toTex = function (options) {
437
456
  var customTex;
438
457
 
439
- if (options && (0, _typeof2["default"])(options.handler) === 'object' && (0, _object.hasOwnProperty)(options.handler, this.name)) {
458
+ if (options && (0, _typeof2.default)(options.handler) === 'object' && (0, _object.hasOwnProperty)(options.handler, this.name)) {
440
459
  // callback is a map of callback functions
441
460
  customTex = options.handler[this.name](this, options);
442
461
  }
@@ -467,14 +486,14 @@ var createFunctionNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies
467
486
  } // toTex property on the function itself
468
487
 
469
488
 
470
- if (math[this.name] && (typeof math[this.name].toTex === 'function' || (0, _typeof2["default"])(math[this.name].toTex) === 'object' || typeof math[this.name].toTex === 'string')) {
489
+ if (math[this.name] && (typeof math[this.name].toTex === 'function' || (0, _typeof2.default)(math[this.name].toTex) === 'object' || typeof math[this.name].toTex === 'string')) {
471
490
  // .toTex is a callback function
472
491
  latexConverter = math[this.name].toTex;
473
492
  }
474
493
 
475
494
  var customToTex;
476
495
 
477
- switch ((0, _typeof2["default"])(latexConverter)) {
496
+ switch ((0, _typeof2.default)(latexConverter)) {
478
497
  case 'function':
479
498
  // a callback function
480
499
  customToTex = latexConverter(this, options);
@@ -487,7 +506,7 @@ var createFunctionNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies
487
506
 
488
507
  case 'object':
489
508
  // an object with different "converters" for different numbers of arguments
490
- switch ((0, _typeof2["default"])(latexConverter[args.length])) {
509
+ switch ((0, _typeof2.default)(latexConverter[args.length])) {
491
510
  case 'function':
492
511
  customToTex = latexConverter[args.length](this, options);
493
512
  break;
@@ -143,7 +143,7 @@ var createIndexNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
143
143
  var dimensions = (0, _array.map)(evalDimensions, function (evalDimension) {
144
144
  return evalDimension(scope, args, context);
145
145
  });
146
- return index.apply(void 0, (0, _toConsumableArray2["default"])(dimensions));
146
+ return index.apply(void 0, (0, _toConsumableArray2.default)(dimensions));
147
147
  };
148
148
  };
149
149
  /**
@@ -367,8 +367,8 @@ var createNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
367
367
 
368
368
 
369
369
  Node.prototype._getCustomString = function (options) {
370
- if (options && (0, _typeof2["default"])(options) === 'object') {
371
- switch ((0, _typeof2["default"])(options.handler)) {
370
+ if (options && (0, _typeof2.default)(options) === 'object') {
371
+ switch ((0, _typeof2.default)(options.handler)) {
372
372
  case 'object':
373
373
  case 'undefined':
374
374
  return;
@@ -407,7 +407,7 @@ var createNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
407
407
 
408
408
 
409
409
  function _validateScope(scope) {
410
- for (var _i = 0, _arr = (0, _toConsumableArray2["default"])(_keywords.keywords); _i < _arr.length; _i++) {
410
+ for (var _i = 0, _arr = (0, _toConsumableArray2.default)(_keywords.keywords); _i < _arr.length; _i++) {
411
411
  var symbol = _arr[_i];
412
412
 
413
413
  if (scope.has(symbol)) {
@@ -38,7 +38,7 @@ var createObjectNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
38
38
  this.properties = properties || {}; // validate input
39
39
 
40
40
  if (properties) {
41
- if (!((0, _typeof2["default"])(properties) === 'object') || !Object.keys(properties).every(function (key) {
41
+ if (!((0, _typeof2.default)(properties) === 'object') || !Object.keys(properties).every(function (key) {
42
42
  return (0, _is.isNode)(properties[key]);
43
43
  })) {
44
44
  throw new TypeError('Object containing Nodes expected');
@@ -37,7 +37,7 @@ function accessFactory(_ref) {
37
37
  } else if (typeof object === 'string') {
38
38
  // TODO: move getStringSubset into a separate util file, use that
39
39
  return subset(object, index);
40
- } else if ((0, _typeof2["default"])(object) === 'object') {
40
+ } else if ((0, _typeof2.default)(object) === 'object') {
41
41
  if (!index.isObjectProperty()) {
42
42
  throw new TypeError('Cannot apply a numeric index as object property');
43
43
  }
@@ -42,7 +42,7 @@ function assignFactory(_ref) {
42
42
  } else if (typeof object === 'string') {
43
43
  // TODO: move setStringSubset into a separate util file, use that
44
44
  return subset(object, index, value);
45
- } else if ((0, _typeof2["default"])(object) === 'object') {
45
+ } else if ((0, _typeof2.default)(object) === 'object') {
46
46
  if (!index.isObjectProperty()) {
47
47
  throw TypeError('Cannot apply a numeric index as object property');
48
48
  }
@@ -153,16 +153,16 @@ var createParse = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
153
153
  var NAMED_DELIMITERS = {
154
154
  mod: true,
155
155
  to: true,
156
- "in": true,
156
+ in: true,
157
157
  and: true,
158
158
  xor: true,
159
159
  or: true,
160
160
  not: true
161
161
  };
162
162
  var CONSTANTS = {
163
- "true": true,
164
- "false": false,
165
- "null": null,
163
+ true: true,
164
+ false: false,
165
+ null: null,
166
166
  undefined: undefined
167
167
  };
168
168
  var NUMERIC_CONSTANTS = ['NaN', 'Infinity'];
@@ -584,7 +584,7 @@ var createParse = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
584
584
 
585
585
  function parseStart(expression, extraNodes) {
586
586
  var state = initialState();
587
- (0, _extends2["default"])(state, {
587
+ (0, _extends2.default)(state, {
588
588
  expression: expression,
589
589
  extraNodes: extraNodes
590
590
  });
@@ -930,7 +930,7 @@ var createParse = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
930
930
  node = parseRange(state);
931
931
  var operators = {
932
932
  to: 'to',
933
- "in": 'to' // alias of 'to'
933
+ in: 'to' // alias of 'to'
934
934
 
935
935
  };
936
936
 
@@ -1112,30 +1112,30 @@ var createParse = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
1112
1112
  // Match the "number /" part of the pattern "number / number symbol"
1113
1113
  if (state.token === '/' && (0, _is.isConstantNode)(last)) {
1114
1114
  // Look ahead to see if the next token is a number
1115
- tokenStates.push((0, _extends2["default"])({}, state));
1115
+ tokenStates.push((0, _extends2.default)({}, state));
1116
1116
  getTokenSkipNewline(state); // Match the "number / number" part of the pattern
1117
1117
 
1118
1118
  if (state.tokenType === TOKENTYPE.NUMBER) {
1119
1119
  // Look ahead again
1120
- tokenStates.push((0, _extends2["default"])({}, state));
1120
+ tokenStates.push((0, _extends2.default)({}, state));
1121
1121
  getTokenSkipNewline(state); // Match the "symbol" part of the pattern, or a left parenthesis
1122
1122
 
1123
1123
  if (state.tokenType === TOKENTYPE.SYMBOL || state.token === '(') {
1124
1124
  // We've matched the pattern "number / number symbol".
1125
1125
  // Rewind once and build the "number / number" node; the symbol will be consumed later
1126
- (0, _extends2["default"])(state, tokenStates.pop());
1126
+ (0, _extends2.default)(state, tokenStates.pop());
1127
1127
  tokenStates.pop();
1128
1128
  last = parsePercentage(state);
1129
1129
  node = new OperatorNode('/', 'divide', [node, last]);
1130
1130
  } else {
1131
1131
  // Not a match, so rewind
1132
1132
  tokenStates.pop();
1133
- (0, _extends2["default"])(state, tokenStates.pop());
1133
+ (0, _extends2.default)(state, tokenStates.pop());
1134
1134
  break;
1135
1135
  }
1136
1136
  } else {
1137
1137
  // Not a match, so rewind
1138
- (0, _extends2["default"])(state, tokenStates.pop());
1138
+ (0, _extends2.default)(state, tokenStates.pop());
1139
1139
  break;
1140
1140
  }
1141
1141
  } else {
@@ -1783,7 +1783,7 @@ var createParse = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
1783
1783
  function createSyntaxError(state, message) {
1784
1784
  var c = col(state);
1785
1785
  var error = new SyntaxError(message + ' (char ' + c + ')');
1786
- error["char"] = c;
1786
+ error.char = c;
1787
1787
  return error;
1788
1788
  }
1789
1789
  /**
@@ -1798,7 +1798,7 @@ var createParse = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
1798
1798
  function createError(state, message) {
1799
1799
  var c = col(state);
1800
1800
  var error = new SyntaxError(message + ' (char ' + c + ')');
1801
- error["char"] = c;
1801
+ error.char = c;
1802
1802
  return error;
1803
1803
  }
1804
1804
 
@@ -987,6 +987,12 @@ Object.defineProperty(exports, "createLcm", {
987
987
  return _lcm.createLcm;
988
988
  }
989
989
  });
990
+ Object.defineProperty(exports, "createLeafCount", {
991
+ enumerable: true,
992
+ get: function get() {
993
+ return _leafCount.createLeafCount;
994
+ }
995
+ });
990
996
  Object.defineProperty(exports, "createLeftShift", {
991
997
  enumerable: true,
992
998
  get: function get() {
@@ -1509,6 +1515,12 @@ Object.defineProperty(exports, "createResize", {
1509
1515
  return _resize.createResize;
1510
1516
  }
1511
1517
  });
1518
+ Object.defineProperty(exports, "createResolve", {
1519
+ enumerable: true,
1520
+ get: function get() {
1521
+ return _resolve.createResolve;
1522
+ }
1523
+ });
1512
1524
  Object.defineProperty(exports, "createResultSet", {
1513
1525
  enumerable: true,
1514
1526
  get: function get() {
@@ -1677,6 +1689,12 @@ Object.defineProperty(exports, "createSimplify", {
1677
1689
  return _simplify.createSimplify;
1678
1690
  }
1679
1691
  });
1692
+ Object.defineProperty(exports, "createSimplifyCore", {
1693
+ enumerable: true,
1694
+ get: function get() {
1695
+ return _simplifyCore.createSimplifyCore;
1696
+ }
1697
+ });
1680
1698
  Object.defineProperty(exports, "createSin", {
1681
1699
  enumerable: true,
1682
1700
  get: function get() {
@@ -1839,6 +1857,12 @@ Object.defineProperty(exports, "createSymbolNode", {
1839
1857
  return _SymbolNode.createSymbolNode;
1840
1858
  }
1841
1859
  });
1860
+ Object.defineProperty(exports, "createSymbolicEqual", {
1861
+ enumerable: true,
1862
+ get: function get() {
1863
+ return _symbolicEqual.createSymbolicEqual;
1864
+ }
1865
+ });
1842
1866
  Object.defineProperty(exports, "createTan", {
1843
1867
  enumerable: true,
1844
1868
  get: function get() {
@@ -2494,8 +2518,16 @@ var _catalan = require("./function/combinatorics/catalan.js");
2494
2518
 
2495
2519
  var _composition = require("./function/combinatorics/composition.js");
2496
2520
 
2521
+ var _leafCount = require("./function/algebra/leafCount.js");
2522
+
2497
2523
  var _simplify = require("./function/algebra/simplify.js");
2498
2524
 
2525
+ var _simplifyCore = require("./function/algebra/simplifyCore.js");
2526
+
2527
+ var _resolve = require("./function/algebra/resolve.js");
2528
+
2529
+ var _symbolicEqual = require("./function/algebra/symbolicEqual.js");
2530
+
2499
2531
  var _derivative = require("./function/algebra/derivative.js");
2500
2532
 
2501
2533
  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;