mathjs 10.1.1 → 10.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (325) hide show
  1. package/HISTORY.md +17 -0
  2. package/docs/expressions/algebra.md +27 -0
  3. package/docs/reference/functions/abs.md +6 -0
  4. package/docs/reference/functions/acos.md +6 -0
  5. package/docs/reference/functions/acosh.md +6 -0
  6. package/docs/reference/functions/acot.md +6 -0
  7. package/docs/reference/functions/acoth.md +6 -0
  8. package/docs/reference/functions/acsc.md +6 -0
  9. package/docs/reference/functions/acsch.md +6 -0
  10. package/docs/reference/functions/add.md +6 -0
  11. package/docs/reference/functions/and.md +6 -0
  12. package/docs/reference/functions/apply.md +6 -0
  13. package/docs/reference/functions/arg.md +6 -0
  14. package/docs/reference/functions/asec.md +6 -0
  15. package/docs/reference/functions/asech.md +6 -0
  16. package/docs/reference/functions/asin.md +6 -0
  17. package/docs/reference/functions/asinh.md +6 -0
  18. package/docs/reference/functions/atan.md +6 -0
  19. package/docs/reference/functions/atan2.md +6 -0
  20. package/docs/reference/functions/atanh.md +6 -0
  21. package/docs/reference/functions/bellNumbers.md +6 -0
  22. package/docs/reference/functions/bin.md +6 -0
  23. package/docs/reference/functions/bitAnd.md +6 -0
  24. package/docs/reference/functions/bitNot.md +6 -0
  25. package/docs/reference/functions/bitOr.md +6 -0
  26. package/docs/reference/functions/bitXor.md +6 -0
  27. package/docs/reference/functions/catalan.md +6 -0
  28. package/docs/reference/functions/cbrt.md +6 -0
  29. package/docs/reference/functions/ceil.md +6 -0
  30. package/docs/reference/functions/clone.md +6 -0
  31. package/docs/reference/functions/column.md +6 -0
  32. package/docs/reference/functions/combinations.md +6 -0
  33. package/docs/reference/functions/combinationsWithRep.md +6 -0
  34. package/docs/reference/functions/compare.md +6 -0
  35. package/docs/reference/functions/compareNatural.md +6 -0
  36. package/docs/reference/functions/compareText.md +6 -0
  37. package/docs/reference/functions/compile.md +6 -0
  38. package/docs/reference/functions/composition.md +6 -0
  39. package/docs/reference/functions/concat.md +6 -0
  40. package/docs/reference/functions/conj.md +6 -0
  41. package/docs/reference/functions/cos.md +6 -0
  42. package/docs/reference/functions/cosh.md +6 -0
  43. package/docs/reference/functions/cot.md +6 -0
  44. package/docs/reference/functions/coth.md +6 -0
  45. package/docs/reference/functions/count.md +6 -0
  46. package/docs/reference/functions/cross.md +6 -0
  47. package/docs/reference/functions/csc.md +6 -0
  48. package/docs/reference/functions/csch.md +6 -0
  49. package/docs/reference/functions/ctranspose.md +6 -0
  50. package/docs/reference/functions/cube.md +6 -0
  51. package/docs/reference/functions/deepEqual.md +6 -0
  52. package/docs/reference/functions/derivative.md +6 -0
  53. package/docs/reference/functions/det.md +6 -0
  54. package/docs/reference/functions/diag.md +6 -0
  55. package/docs/reference/functions/diff.md +6 -0
  56. package/docs/reference/functions/distance.md +6 -0
  57. package/docs/reference/functions/divide.md +6 -0
  58. package/docs/reference/functions/dot.md +6 -0
  59. package/docs/reference/functions/dotDivide.md +6 -0
  60. package/docs/reference/functions/dotMultiply.md +6 -0
  61. package/docs/reference/functions/dotPow.md +6 -0
  62. package/docs/reference/functions/eigs.md +6 -0
  63. package/docs/reference/functions/equal.md +6 -0
  64. package/docs/reference/functions/equalText.md +6 -0
  65. package/docs/reference/functions/erf.md +6 -0
  66. package/docs/reference/functions/evaluate.md +6 -0
  67. package/docs/reference/functions/exp.md +6 -0
  68. package/docs/reference/functions/expm.md +6 -0
  69. package/docs/reference/functions/expm1.md +6 -0
  70. package/docs/reference/functions/factorial.md +6 -0
  71. package/docs/reference/functions/filter.md +6 -0
  72. package/docs/reference/functions/fix.md +6 -0
  73. package/docs/reference/functions/flatten.md +6 -0
  74. package/docs/reference/functions/floor.md +6 -0
  75. package/docs/reference/functions/forEach.md +6 -0
  76. package/docs/reference/functions/format.md +6 -0
  77. package/docs/reference/functions/gamma.md +6 -0
  78. package/docs/reference/functions/gcd.md +6 -0
  79. package/docs/reference/functions/getMatrixDataType.md +6 -0
  80. package/docs/reference/functions/hasNumericValue.md +6 -0
  81. package/docs/reference/functions/help.md +6 -0
  82. package/docs/reference/functions/hex.md +6 -0
  83. package/docs/reference/functions/hypot.md +6 -0
  84. package/docs/reference/functions/identity.md +6 -0
  85. package/docs/reference/functions/im.md +6 -0
  86. package/docs/reference/functions/intersect.md +6 -0
  87. package/docs/reference/functions/inv.md +6 -0
  88. package/docs/reference/functions/invmod.md +6 -0
  89. package/docs/reference/functions/isInteger.md +6 -0
  90. package/docs/reference/functions/isNaN.md +6 -0
  91. package/docs/reference/functions/isNegative.md +6 -0
  92. package/docs/reference/functions/isNumeric.md +6 -0
  93. package/docs/reference/functions/isPositive.md +6 -0
  94. package/docs/reference/functions/isPrime.md +6 -0
  95. package/docs/reference/functions/isZero.md +6 -0
  96. package/docs/reference/functions/kldivergence.md +6 -0
  97. package/docs/reference/functions/kron.md +6 -0
  98. package/docs/reference/functions/larger.md +6 -0
  99. package/docs/reference/functions/largerEq.md +6 -0
  100. package/docs/reference/functions/lcm.md +6 -0
  101. package/docs/reference/functions/leafCount.md +52 -0
  102. package/docs/reference/functions/leftShift.md +6 -0
  103. package/docs/reference/functions/log.md +6 -0
  104. package/docs/reference/functions/log10.md +6 -0
  105. package/docs/reference/functions/log1p.md +6 -0
  106. package/docs/reference/functions/log2.md +6 -0
  107. package/docs/reference/functions/lsolve.md +6 -0
  108. package/docs/reference/functions/lsolveAll.md +6 -0
  109. package/docs/reference/functions/lup.md +6 -0
  110. package/docs/reference/functions/lusolve.md +6 -0
  111. package/docs/reference/functions/mad.md +6 -0
  112. package/docs/reference/functions/map.md +6 -0
  113. package/docs/reference/functions/matrixFromColumns.md +6 -0
  114. package/docs/reference/functions/matrixFromFunction.md +6 -0
  115. package/docs/reference/functions/matrixFromRows.md +6 -0
  116. package/docs/reference/functions/max.md +6 -0
  117. package/docs/reference/functions/mean.md +6 -0
  118. package/docs/reference/functions/median.md +6 -0
  119. package/docs/reference/functions/min.md +6 -0
  120. package/docs/reference/functions/mod.md +6 -0
  121. package/docs/reference/functions/mode.md +6 -0
  122. package/docs/reference/functions/multinomial.md +6 -0
  123. package/docs/reference/functions/multiply.md +6 -0
  124. package/docs/reference/functions/norm.md +6 -0
  125. package/docs/reference/functions/not.md +6 -0
  126. package/docs/reference/functions/nthRoot.md +6 -0
  127. package/docs/reference/functions/nthRoots.md +6 -0
  128. package/docs/reference/functions/numeric.md +6 -0
  129. package/docs/reference/functions/oct.md +6 -0
  130. package/docs/reference/functions/ones.md +6 -0
  131. package/docs/reference/functions/or.md +6 -0
  132. package/docs/reference/functions/parser.md +6 -0
  133. package/docs/reference/functions/partitionSelect.md +6 -0
  134. package/docs/reference/functions/permutations.md +6 -0
  135. package/docs/reference/functions/pickRandom.md +6 -0
  136. package/docs/reference/functions/pow.md +6 -0
  137. package/docs/reference/functions/print.md +6 -0
  138. package/docs/reference/functions/prod.md +6 -0
  139. package/docs/reference/functions/qr.md +6 -0
  140. package/docs/reference/functions/quantileSeq.md +6 -0
  141. package/docs/reference/functions/random.md +6 -0
  142. package/docs/reference/functions/randomInt.md +6 -0
  143. package/docs/reference/functions/range.md +6 -0
  144. package/docs/reference/functions/rationalize.md +7 -1
  145. package/docs/reference/functions/re.md +6 -0
  146. package/docs/reference/functions/reshape.md +7 -0
  147. package/docs/reference/functions/resize.md +6 -0
  148. package/docs/reference/functions/resolve.md +46 -0
  149. package/docs/reference/functions/rightArithShift.md +6 -0
  150. package/docs/reference/functions/rightLogShift.md +6 -0
  151. package/docs/reference/functions/rotate.md +6 -0
  152. package/docs/reference/functions/rotationMatrix.md +6 -0
  153. package/docs/reference/functions/round.md +6 -0
  154. package/docs/reference/functions/row.md +6 -0
  155. package/docs/reference/functions/sec.md +6 -0
  156. package/docs/reference/functions/sech.md +6 -0
  157. package/docs/reference/functions/setCartesian.md +6 -0
  158. package/docs/reference/functions/setDifference.md +6 -0
  159. package/docs/reference/functions/setDistinct.md +6 -0
  160. package/docs/reference/functions/setIntersect.md +6 -0
  161. package/docs/reference/functions/setIsSubset.md +6 -0
  162. package/docs/reference/functions/setMultiplicity.md +6 -0
  163. package/docs/reference/functions/setPowerset.md +6 -0
  164. package/docs/reference/functions/setSize.md +6 -0
  165. package/docs/reference/functions/setSymDifference.md +6 -0
  166. package/docs/reference/functions/setUnion.md +6 -0
  167. package/docs/reference/functions/sign.md +6 -0
  168. package/docs/reference/functions/simplify.md +43 -6
  169. package/docs/reference/functions/simplifyCore.md +50 -0
  170. package/docs/reference/functions/sin.md +6 -0
  171. package/docs/reference/functions/sinh.md +6 -0
  172. package/docs/reference/functions/size.md +6 -0
  173. package/docs/reference/functions/slu.md +6 -0
  174. package/docs/reference/functions/smaller.md +6 -0
  175. package/docs/reference/functions/smallerEq.md +6 -0
  176. package/docs/reference/functions/sort.md +6 -0
  177. package/docs/reference/functions/sqrt.md +6 -0
  178. package/docs/reference/functions/sqrtm.md +6 -0
  179. package/docs/reference/functions/square.md +6 -0
  180. package/docs/reference/functions/squeeze.md +6 -0
  181. package/docs/reference/functions/std.md +6 -0
  182. package/docs/reference/functions/stirlingS2.md +6 -0
  183. package/docs/reference/functions/subset.md +6 -0
  184. package/docs/reference/functions/subtract.md +6 -0
  185. package/docs/reference/functions/sum.md +6 -0
  186. package/docs/reference/functions/tan.md +6 -0
  187. package/docs/reference/functions/tanh.md +6 -0
  188. package/docs/reference/functions/to.md +6 -0
  189. package/docs/reference/functions/trace.md +6 -0
  190. package/docs/reference/functions/transpose.md +6 -0
  191. package/docs/reference/functions/typeOf.md +6 -0
  192. package/docs/reference/functions/unaryMinus.md +6 -0
  193. package/docs/reference/functions/unaryPlus.md +6 -0
  194. package/docs/reference/functions/unequal.md +6 -0
  195. package/docs/reference/functions/usolve.md +6 -0
  196. package/docs/reference/functions/usolveAll.md +6 -0
  197. package/docs/reference/functions/variance.md +6 -0
  198. package/docs/reference/functions/xgcd.md +6 -0
  199. package/docs/reference/functions/xor.md +6 -0
  200. package/docs/reference/functions/zeros.md +6 -0
  201. package/docs/reference/functions.md +3 -0
  202. package/lib/browser/math.js +6 -6
  203. package/lib/browser/math.js.map +1 -1
  204. package/lib/cjs/core/create.js +4 -4
  205. package/lib/cjs/core/function/import.js +3 -3
  206. package/lib/cjs/core/function/typed.js +2 -2
  207. package/lib/cjs/defaultInstance.js +3 -3
  208. package/lib/cjs/entry/allFactoriesAny.js +1 -1
  209. package/lib/cjs/entry/allFactoriesNumber.js +1 -1
  210. package/lib/cjs/entry/configReadonly.js +1 -1
  211. package/lib/cjs/entry/dependenciesAny/dependenciesLeafCount.generated.js +23 -0
  212. package/lib/cjs/entry/dependenciesAny/dependenciesRationalize.generated.js +3 -0
  213. package/lib/cjs/entry/dependenciesAny/dependenciesResolve.generated.js +32 -0
  214. package/lib/cjs/entry/dependenciesAny/dependenciesSimplify.generated.js +6 -0
  215. package/lib/cjs/entry/dependenciesAny/dependenciesSimplifyCore.generated.js +65 -0
  216. package/lib/cjs/entry/dependenciesAny.generated.js +24 -0
  217. package/lib/cjs/entry/dependenciesNumber/dependenciesRationalize.generated.js +3 -0
  218. package/lib/cjs/entry/dependenciesNumber/dependenciesResolve.generated.js +32 -0
  219. package/lib/cjs/entry/dependenciesNumber/dependenciesSimplify.generated.js +6 -0
  220. package/lib/cjs/entry/dependenciesNumber/dependenciesSimplifyCore.generated.js +65 -0
  221. package/lib/cjs/entry/dependenciesNumber.generated.js +16 -0
  222. package/lib/cjs/entry/impureFunctionsAny.generated.js +67 -29
  223. package/lib/cjs/entry/impureFunctionsNumber.generated.js +96 -64
  224. package/lib/cjs/entry/pureFunctionsAny.generated.js +53 -55
  225. package/lib/cjs/entry/pureFunctionsNumber.generated.js +46 -48
  226. package/lib/cjs/expression/Help.js +4 -0
  227. package/lib/cjs/expression/Parser.js +1 -1
  228. package/lib/cjs/expression/embeddedDocs/core/typed.js +1 -1
  229. package/lib/cjs/expression/embeddedDocs/embeddedDocs.js +14 -5
  230. package/lib/cjs/expression/embeddedDocs/function/algebra/leafCount.js +15 -0
  231. package/lib/cjs/expression/embeddedDocs/function/algebra/resolve.js +16 -0
  232. package/lib/cjs/expression/embeddedDocs/function/algebra/simplify.js +1 -1
  233. package/lib/cjs/expression/embeddedDocs/function/algebra/simplifyCore.js +15 -0
  234. package/lib/cjs/expression/node/FunctionNode.js +7 -7
  235. package/lib/cjs/expression/node/IndexNode.js +1 -1
  236. package/lib/cjs/expression/node/Node.js +3 -3
  237. package/lib/cjs/expression/node/ObjectNode.js +1 -1
  238. package/lib/cjs/expression/node/utils/access.js +1 -1
  239. package/lib/cjs/expression/node/utils/assign.js +1 -1
  240. package/lib/cjs/expression/parse.js +13 -13
  241. package/lib/cjs/factoriesAny.js +24 -0
  242. package/lib/cjs/factoriesNumber.js +16 -0
  243. package/lib/cjs/function/algebra/decomposition/qr.js +1 -1
  244. package/lib/cjs/function/algebra/leafCount.js +66 -0
  245. package/lib/cjs/function/algebra/rationalize.js +24 -41
  246. package/lib/cjs/function/algebra/resolve.js +106 -0
  247. package/lib/cjs/function/algebra/simplify/simplifyConstant.js +5 -5
  248. package/lib/cjs/function/algebra/simplify/util.js +171 -33
  249. package/lib/cjs/function/algebra/simplify.js +554 -207
  250. package/lib/cjs/function/algebra/{simplify/simplifyCore.js → simplifyCore.js} +67 -43
  251. package/lib/cjs/function/algebra/solver/lsolveAll.js +2 -2
  252. package/lib/cjs/function/algebra/solver/usolveAll.js +2 -2
  253. package/lib/cjs/function/arithmetic/ceil.js +3 -3
  254. package/lib/cjs/function/arithmetic/floor.js +3 -3
  255. package/lib/cjs/function/arithmetic/invmod.js +1 -1
  256. package/lib/cjs/function/arithmetic/norm.js +1 -1
  257. package/lib/cjs/function/arithmetic/round.js +1 -1
  258. package/lib/cjs/function/matrix/eigs/complexEigs.js +5 -5
  259. package/lib/cjs/function/matrix/matrixFromColumns.js +1 -1
  260. package/lib/cjs/function/matrix/matrixFromRows.js +1 -1
  261. package/lib/cjs/function/probability/util/seededRNG.js +2 -2
  262. package/lib/cjs/function/relational/compareNatural.js +6 -6
  263. package/lib/cjs/header.js +2 -2
  264. package/lib/cjs/plain/bignumber/index.js +1 -1
  265. package/lib/cjs/plain/number/combinations.js +18 -6
  266. package/lib/cjs/type/bignumber/BigNumber.js +2 -2
  267. package/lib/cjs/type/bignumber/function/bignumber.js +1 -1
  268. package/lib/cjs/type/boolean.js +2 -2
  269. package/lib/cjs/type/complex/Complex.js +14 -14
  270. package/lib/cjs/type/complex/function/complex.js +1 -1
  271. package/lib/cjs/type/fraction/Fraction.js +6 -6
  272. package/lib/cjs/type/fraction/function/fraction.js +1 -1
  273. package/lib/cjs/type/matrix/DenseMatrix.js +5 -5
  274. package/lib/cjs/type/matrix/SparseMatrix.js +2 -2
  275. package/lib/cjs/type/number.js +1 -1
  276. package/lib/cjs/type/string.js +2 -2
  277. package/lib/cjs/type/unit/Unit.js +8 -8
  278. package/lib/cjs/utils/customs.js +2 -2
  279. package/lib/cjs/utils/emitter.js +1 -1
  280. package/lib/cjs/utils/function.js +2 -2
  281. package/lib/cjs/utils/is.js +6 -6
  282. package/lib/cjs/utils/latex.js +3 -3
  283. package/lib/cjs/utils/lruQueue.js +1 -1
  284. package/lib/cjs/utils/map.js +3 -3
  285. package/lib/cjs/utils/object.js +2 -2
  286. package/lib/cjs/utils/snapshot.js +7 -7
  287. package/lib/cjs/utils/string.js +2 -2
  288. package/lib/cjs/version.js +1 -1
  289. package/lib/esm/entry/dependenciesAny/dependenciesLeafCount.generated.js +12 -0
  290. package/lib/esm/entry/dependenciesAny/dependenciesRationalize.generated.js +2 -0
  291. package/lib/esm/entry/dependenciesAny/dependenciesResolve.generated.js +18 -0
  292. package/lib/esm/entry/dependenciesAny/dependenciesSimplify.generated.js +4 -0
  293. package/lib/esm/entry/dependenciesAny/dependenciesSimplifyCore.generated.js +40 -0
  294. package/lib/esm/entry/dependenciesAny.generated.js +3 -0
  295. package/lib/esm/entry/dependenciesNumber/dependenciesRationalize.generated.js +2 -0
  296. package/lib/esm/entry/dependenciesNumber/dependenciesResolve.generated.js +18 -0
  297. package/lib/esm/entry/dependenciesNumber/dependenciesSimplify.generated.js +4 -0
  298. package/lib/esm/entry/dependenciesNumber/dependenciesSimplifyCore.generated.js +40 -0
  299. package/lib/esm/entry/dependenciesNumber.generated.js +2 -0
  300. package/lib/esm/entry/impureFunctionsAny.generated.js +57 -22
  301. package/lib/esm/entry/impureFunctionsNumber.generated.js +83 -53
  302. package/lib/esm/entry/pureFunctionsAny.generated.js +42 -42
  303. package/lib/esm/entry/pureFunctionsNumber.generated.js +32 -32
  304. package/lib/esm/expression/Help.js +4 -0
  305. package/lib/esm/expression/embeddedDocs/core/typed.js +1 -1
  306. package/lib/esm/expression/embeddedDocs/embeddedDocs.js +6 -0
  307. package/lib/esm/expression/embeddedDocs/function/algebra/leafCount.js +8 -0
  308. package/lib/esm/expression/embeddedDocs/function/algebra/resolve.js +9 -0
  309. package/lib/esm/expression/embeddedDocs/function/algebra/simplify.js +1 -1
  310. package/lib/esm/expression/embeddedDocs/function/algebra/simplifyCore.js +8 -0
  311. package/lib/esm/factoriesAny.js +3 -0
  312. package/lib/esm/factoriesNumber.js +2 -0
  313. package/lib/esm/function/algebra/leafCount.js +59 -0
  314. package/lib/esm/function/algebra/rationalize.js +24 -40
  315. package/lib/esm/function/algebra/resolve.js +95 -0
  316. package/lib/esm/function/algebra/simplify/simplifyConstant.js +3 -3
  317. package/lib/esm/function/algebra/simplify/util.js +170 -34
  318. package/lib/esm/function/algebra/simplify.js +549 -202
  319. package/lib/esm/function/algebra/{simplify/simplifyCore.js → simplifyCore.js} +60 -44
  320. package/lib/esm/plain/number/combinations.js +18 -6
  321. package/lib/esm/version.js +1 -1
  322. package/package.json +15 -10
  323. package/types/index.d.ts +44 -2
  324. package/lib/cjs/function/algebra/simplify/resolve.js +0 -76
  325. package/lib/esm/function/algebra/simplify/resolve.js +0 -67
package/HISTORY.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # History
2
2
 
3
+ # 2022-03-01, version 10.2.0
4
+
5
+ - Implemented context options to control simplifications allowed in `simplify`,
6
+ see #2399, #2391. Thanks @gwhitney.
7
+ - Implemented function `leafCount` as a first simple measure of the complexity
8
+ of an expression, see #2411, #2389. Thanks @gwhitney.
9
+ - Fix #2413: improve `combinations` to return an integer result without rounding
10
+ errors for larger values, see #2414. Thanks @gwhitney.
11
+ - Fix #2385: function `rotate` missing in TypeScript definitions.
12
+ Thanks @DIVYA-19.
13
+ - Fix #2450: Add BigNumber to parameter type in `math.unit` and add TypeScript
14
+ types for `Unit.simplify` and `Unit.units` (#2353). Thanks @joshhansen.
15
+ - Fix #2383: detect infinite loops in `simplify` (#2405). Thanks @gwhitney.
16
+ - Fix #1423: collect like factors and cancel like terms in sums (#2388).
17
+ Thanks @gwhitney.
18
+
19
+
3
20
  # 2022-02-02, version 10.1.1
4
21
 
5
22
  - Improvements and fixes in function `simplify`, thanks @gwhitney:
@@ -27,6 +27,33 @@ console.log(simplified.toString()) // '3 * x'
27
27
  console.log(simplified.evaluate({x: 4})) // 12
28
28
  ```
29
29
 
30
+ Note that `simplify` has an optional argument `scope` that allows the definitions of variables in the expression (as numeric values, or as further expressions) to be specified and used in the simplification, e.g. continuing the previous example,
31
+
32
+ ```js
33
+ console.log(math.simplify(f, {x: 4}).toString()) // 12
34
+ console.log(math.simplify(f, {x: math.parse('y+z')}).toString()) // '3*(y+z)'
35
+ ```
36
+
37
+ In general, simplification is an inherently dfficult problem; in fact, for certain classes of expressions and algebraic equivalences, it is undecidable whether a given expression is equivalent to zero. Moreover, simplification generally depends on the properties of the operations involved; since multiplication (for example) may have different properties (e.g., it might or might not be commutative) depending on the domain under consideration, different simplifications might be appropriate.
38
+
39
+ As a result, `simplify()` has an additional optional argument, `options`, which controls its behavior. This argument is an object specifying any of various properties concerning the simplification process. See the [detailed documentation](../reference/functions/simplify.md) for a complete list, but currently the two most important properties are as follows. Note that the `options` argument may only be specified if the `scope` is as well.
40
+
41
+ - `exactFractions` - a boolean which specifies whether non-integer numerical constants should be simplified to rational numbers when possible (true), or always converted to decimal notation (false).
42
+ - `context` - an object whose keys are the names of operations ('add', 'multiply', etc.) and whose values specify algebraic properties of the corresponding operation (currently any of 'total', 'trivial', 'commutative', and 'associative'). Simplifications will only be performed if the properties they rely on are true in the given context. For example,
43
+ ```js
44
+ const expr = math.parse('x*y-y*x')
45
+ console.log(math.simplify(expr).toString()) // 0; * is commutative by default
46
+ console.log(math.simplify(expr, {}, {context: {multiply: {commutative: false}}}))
47
+ // 'x*y-y*x'; the order of the right multiplication can't be reversed.
48
+ ```
49
+
50
+ Note that the default context is very permissive (allows a lot of simplifications) but that there is also a `math.simplify.realContext` that only allows simplifications that are guaranteed to preserve the value of the expression on all real numbers:
51
+ ```js
52
+ const rational = math.parse('(x-1)*x/(x-1)')
53
+ console.log(math.simplify(expr, {}, {context: math.simplify.realContext})
54
+ // '(x-1)*x/(x-1)'; canceling the 'x-1' makes the expression defined at 1
55
+ ```
56
+
30
57
  For more details on the theory of expression simplification, see:
31
58
 
32
59
  - [Strategies for simplifying math expressions (Stackoverflow)](https://stackoverflow.com/questions/7540227/strategies-for-simplifying-math-expressions)
@@ -25,6 +25,12 @@ Type | Description
25
25
  number | BigNumber | Fraction | Complex | Array | Matrix | Unit | Absolute value of `x`
26
26
 
27
27
 
28
+ ### Throws
29
+
30
+ Type | Description
31
+ ---- | -----------
32
+
33
+
28
34
  ## Examples
29
35
 
30
36
  ```js
@@ -26,6 +26,12 @@ Type | Description
26
26
  number | BigNumber | Complex | Array | Matrix | The arc cosine of x
27
27
 
28
28
 
29
+ ### Throws
30
+
31
+ Type | Description
32
+ ---- | -----------
33
+
34
+
29
35
  ## Examples
30
36
 
31
37
  ```js
@@ -27,6 +27,12 @@ Type | Description
27
27
  number | Complex | Array | Matrix | Hyperbolic arccosine of x
28
28
 
29
29
 
30
+ ### Throws
31
+
32
+ Type | Description
33
+ ---- | -----------
34
+
35
+
30
36
  ## Examples
31
37
 
32
38
  ```js
@@ -26,6 +26,12 @@ Type | Description
26
26
  number | Complex | Array | Matrix | The arc cotangent of x
27
27
 
28
28
 
29
+ ### Throws
30
+
31
+ Type | Description
32
+ ---- | -----------
33
+
34
+
29
35
  ## Examples
30
36
 
31
37
  ```js
@@ -27,6 +27,12 @@ Type | Description
27
27
  number | Complex | Array | Matrix | Hyperbolic arccotangent of x
28
28
 
29
29
 
30
+ ### Throws
31
+
32
+ Type | Description
33
+ ---- | -----------
34
+
35
+
30
36
  ## Examples
31
37
 
32
38
  ```js
@@ -26,6 +26,12 @@ Type | Description
26
26
  number | Complex | Array | Matrix | The arc cosecant of x
27
27
 
28
28
 
29
+ ### Throws
30
+
31
+ Type | Description
32
+ ---- | -----------
33
+
34
+
29
35
  ## Examples
30
36
 
31
37
  ```js
@@ -27,6 +27,12 @@ Type | Description
27
27
  number | Complex | Array | Matrix | Hyperbolic arccosecant of x
28
28
 
29
29
 
30
+ ### Throws
31
+
32
+ Type | Description
33
+ ---- | -----------
34
+
35
+
30
36
  ## Examples
31
37
 
32
38
  ```js
@@ -27,6 +27,12 @@ Type | Description
27
27
  number | BigNumber | Fraction | Complex | Unit | Array | Matrix | Sum of `x` and `y`
28
28
 
29
29
 
30
+ ### Throws
31
+
32
+ Type | Description
33
+ ---- | -----------
34
+
35
+
30
36
  ## Examples
31
37
 
32
38
  ```js
@@ -26,6 +26,12 @@ Type | Description
26
26
  boolean | Array | Matrix | Returns true when both inputs are defined with a nonzero/nonempty value.
27
27
 
28
28
 
29
+ ### Throws
30
+
31
+ Type | Description
32
+ ---- | -----------
33
+
34
+
29
35
  ## Examples
30
36
 
31
37
  ```js
@@ -32,6 +32,12 @@ Type | Description
32
32
  Array | Matrix | res The residual matrix with the function applied over some dimension.
33
33
 
34
34
 
35
+ ### Throws
36
+
37
+ Type | Description
38
+ ---- | -----------
39
+
40
+
35
41
  ## Examples
36
42
 
37
43
  ```js
@@ -27,6 +27,12 @@ Type | Description
27
27
  number | BigNumber | Array | Matrix | The argument of x
28
28
 
29
29
 
30
+ ### Throws
31
+
32
+ Type | Description
33
+ ---- | -----------
34
+
35
+
30
36
  ## Examples
31
37
 
32
38
  ```js
@@ -26,6 +26,12 @@ Type | Description
26
26
  number | Complex | Array | Matrix | The arc secant of x
27
27
 
28
28
 
29
+ ### Throws
30
+
31
+ Type | Description
32
+ ---- | -----------
33
+
34
+
29
35
  ## Examples
30
36
 
31
37
  ```js
@@ -27,6 +27,12 @@ Type | Description
27
27
  number | Complex | Array | Matrix | Hyperbolic arcsecant of x
28
28
 
29
29
 
30
+ ### Throws
31
+
32
+ Type | Description
33
+ ---- | -----------
34
+
35
+
30
36
  ## Examples
31
37
 
32
38
  ```js
@@ -26,6 +26,12 @@ Type | Description
26
26
  number | BigNumber | Complex | Array | Matrix | The arc sine of x
27
27
 
28
28
 
29
+ ### Throws
30
+
31
+ Type | Description
32
+ ---- | -----------
33
+
34
+
29
35
  ## Examples
30
36
 
31
37
  ```js
@@ -27,6 +27,12 @@ Type | Description
27
27
  number | Complex | Array | Matrix | Hyperbolic arcsine of x
28
28
 
29
29
 
30
+ ### Throws
31
+
32
+ Type | Description
33
+ ---- | -----------
34
+
35
+
30
36
  ## Examples
31
37
 
32
38
  ```js
@@ -26,6 +26,12 @@ Type | Description
26
26
  number | BigNumber | Complex | Array | Matrix | The arc tangent of x
27
27
 
28
28
 
29
+ ### Throws
30
+
31
+ Type | Description
32
+ ---- | -----------
33
+
34
+
29
35
  ## Examples
30
36
 
31
37
  ```js
@@ -29,6 +29,12 @@ Type | Description
29
29
  number | Array | Matrix | Four-quadrant inverse tangent
30
30
 
31
31
 
32
+ ### Throws
33
+
34
+ Type | Description
35
+ ---- | -----------
36
+
37
+
32
38
  ## Examples
33
39
 
34
40
  ```js
@@ -27,6 +27,12 @@ Type | Description
27
27
  number | Complex | Array | Matrix | Hyperbolic arctangent of x
28
28
 
29
29
 
30
+ ### Throws
31
+
32
+ Type | Description
33
+ ---- | -----------
34
+
35
+
30
36
  ## Examples
31
37
 
32
38
  ```js
@@ -26,6 +26,12 @@ Type | Description
26
26
  Number | BigNumber | B(n)
27
27
 
28
28
 
29
+ ### Throws
30
+
31
+ Type | Description
32
+ ---- | -----------
33
+
34
+
29
35
  ## Examples
30
36
 
31
37
  ```js
@@ -25,6 +25,12 @@ Type | Description
25
25
  string | The formatted value
26
26
 
27
27
 
28
+ ### Throws
29
+
30
+ Type | Description
31
+ ---- | -----------
32
+
33
+
28
34
  ## Examples
29
35
 
30
36
  ```js
@@ -26,6 +26,12 @@ Type | Description
26
26
  number | BigNumber | Array | Matrix | AND of `x` and `y`
27
27
 
28
28
 
29
+ ### Throws
30
+
31
+ Type | Description
32
+ ---- | -----------
33
+
34
+
29
35
  ## Examples
30
36
 
31
37
  ```js
@@ -26,6 +26,12 @@ Type | Description
26
26
  number | BigNumber | Array | Matrix | NOT of `x`
27
27
 
28
28
 
29
+ ### Throws
30
+
31
+ Type | Description
32
+ ---- | -----------
33
+
34
+
29
35
  ## Examples
30
36
 
31
37
  ```js
@@ -27,6 +27,12 @@ Type | Description
27
27
  number | BigNumber | Array | Matrix | OR of `x` and `y`
28
28
 
29
29
 
30
+ ### Throws
31
+
32
+ Type | Description
33
+ ---- | -----------
34
+
35
+
30
36
  ## Examples
31
37
 
32
38
  ```js
@@ -26,6 +26,12 @@ Type | Description
26
26
  number | BigNumber | Array | Matrix | XOR of `x` and `y`
27
27
 
28
28
 
29
+ ### Throws
30
+
31
+ Type | Description
32
+ ---- | -----------
33
+
34
+
29
35
  ## Examples
30
36
 
31
37
  ```js
@@ -26,6 +26,12 @@ Type | Description
26
26
  Number | BigNumber | Cn(n)
27
27
 
28
28
 
29
+ ### Throws
30
+
31
+ Type | Description
32
+ ---- | -----------
33
+
34
+
29
35
  ## Examples
30
36
 
31
37
  ```js
@@ -28,6 +28,12 @@ Type | Description
28
28
  number | BigNumber | Complex | Unit | Array | Matrix | Returns the cubic root of `x`
29
29
 
30
30
 
31
+ ### Throws
32
+
33
+ Type | Description
34
+ ---- | -----------
35
+
36
+
31
37
  ## Examples
32
38
 
33
39
  ```js
@@ -28,6 +28,12 @@ Type | Description
28
28
  number | BigNumber | Fraction | Complex | Array | Matrix | Rounded value
29
29
 
30
30
 
31
+ ### Throws
32
+
33
+ Type | Description
34
+ ---- | -----------
35
+
36
+
31
37
  ## Examples
32
38
 
33
39
  ```js
@@ -24,6 +24,12 @@ Type | Description
24
24
  * | A clone of object x
25
25
 
26
26
 
27
+ ### Throws
28
+
29
+ Type | Description
30
+ ---- | -----------
31
+
32
+
27
33
  ## Examples
28
34
 
29
35
  ```js
@@ -25,6 +25,12 @@ Type | Description
25
25
  Array | Matrix | The retrieved column
26
26
 
27
27
 
28
+ ### Throws
29
+
30
+ Type | Description
31
+ ---- | -----------
32
+
33
+
28
34
  ## Examples
29
35
 
30
36
  ```js
@@ -29,6 +29,12 @@ Type | Description
29
29
  number | BigNumber | Number of possible combinations.
30
30
 
31
31
 
32
+ ### Throws
33
+
34
+ Type | Description
35
+ ---- | -----------
36
+
37
+
32
38
  ## Examples
33
39
 
34
40
  ```js
@@ -29,6 +29,12 @@ Type | Description
29
29
  number | BigNumber | Number of possible combinations with replacement.
30
30
 
31
31
 
32
+ ### Throws
33
+
34
+ Type | Description
35
+ ---- | -----------
36
+
37
+
32
38
  ## Examples
33
39
 
34
40
  ```js
@@ -32,6 +32,12 @@ Type | Description
32
32
  number &#124; BigNumber &#124; Fraction &#124; Array &#124; Matrix | Returns the result of the comparison: 1 when x > y, -1 when x < y, and 0 when x == y.
33
33
 
34
34
 
35
+ ### Throws
36
+
37
+ Type | Description
38
+ ---- | -----------
39
+
40
+
35
41
  ## Examples
36
42
 
37
43
  ```js
@@ -47,6 +47,12 @@ Type | Description
47
47
  number | Returns the result of the comparison: 1 when x > y, -1 when x < y, and 0 when x == y.
48
48
 
49
49
 
50
+ ### Throws
51
+
52
+ Type | Description
53
+ ---- | -----------
54
+
55
+
50
56
  ## Examples
51
57
 
52
58
  ```js
@@ -28,6 +28,12 @@ Type | Description
28
28
  number &#124; Array &#124; DenseMatrix | Returns the result of the comparison: 1 when x > y, -1 when x < y, and 0 when x == y.
29
29
 
30
30
 
31
+ ### Throws
32
+
33
+ Type | Description
34
+ ---- | -----------
35
+
36
+
31
37
  ## Examples
32
38
 
33
39
  ```js
@@ -27,6 +27,12 @@ Type | Description
27
27
  {evaluate: Function} &#124; Array.&lt;{evaluate: Function}&gt; | code An object with the compiled expression
28
28
 
29
29
 
30
+ ### Throws
31
+
32
+ Type | Description
33
+ ---- | -----------
34
+ Error |
35
+
30
36
  ## Examples
31
37
 
32
38
  ```js
@@ -28,6 +28,12 @@ Type | Description
28
28
  Number &#124; BigNumber | Returns the composition counts of n into k parts.
29
29
 
30
30
 
31
+ ### Throws
32
+
33
+ Type | Description
34
+ ---- | -----------
35
+
36
+
31
37
  ## Examples
32
38
 
33
39
  ```js
@@ -30,6 +30,12 @@ Type | Description
30
30
  Array &#124; Matrix | Concatenated matrix
31
31
 
32
32
 
33
+ ### Throws
34
+
35
+ Type | Description
36
+ ---- | -----------
37
+
38
+
33
39
  ## Examples
34
40
 
35
41
  ```js
@@ -27,6 +27,12 @@ Type | Description
27
27
  number &#124; BigNumber &#124; Complex &#124; Array &#124; Matrix | The complex conjugate of x
28
28
 
29
29
 
30
+ ### Throws
31
+
32
+ Type | Description
33
+ ---- | -----------
34
+
35
+
30
36
  ## Examples
31
37
 
32
38
  ```js
@@ -26,6 +26,12 @@ Type | Description
26
26
  number &#124; BigNumber &#124; Complex &#124; Array &#124; Matrix | Cosine of x
27
27
 
28
28
 
29
+ ### Throws
30
+
31
+ Type | Description
32
+ ---- | -----------
33
+
34
+
29
35
  ## Examples
30
36
 
31
37
  ```js
@@ -27,6 +27,12 @@ Type | Description
27
27
  number &#124; BigNumber &#124; Complex &#124; Array &#124; Matrix | Hyperbolic cosine of x
28
28
 
29
29
 
30
+ ### Throws
31
+
32
+ Type | Description
33
+ ---- | -----------
34
+
35
+
30
36
  ## Examples
31
37
 
32
38
  ```js
@@ -26,6 +26,12 @@ Type | Description
26
26
  number &#124; Complex &#124; Array &#124; Matrix | Cotangent of x
27
27
 
28
28
 
29
+ ### Throws
30
+
31
+ Type | Description
32
+ ---- | -----------
33
+
34
+
29
35
  ## Examples
30
36
 
31
37
  ```js
@@ -27,6 +27,12 @@ Type | Description
27
27
  number &#124; Complex &#124; Array &#124; Matrix | Hyperbolic cotangent of x
28
28
 
29
29
 
30
+ ### Throws
31
+
32
+ Type | Description
33
+ ---- | -----------
34
+
35
+
30
36
  ## Examples
31
37
 
32
38
  ```js
@@ -24,6 +24,12 @@ Type | Description
24
24
  number | An integer with the elements in `x`.
25
25
 
26
26
 
27
+ ### Throws
28
+
29
+ Type | Description
30
+ ---- | -----------
31
+
32
+
27
33
  ## Examples
28
34
 
29
35
  ```js
@@ -36,6 +36,12 @@ Type | Description
36
36
  Array &#124; Matrix | Returns the cross product of `x` and `y`
37
37
 
38
38
 
39
+ ### Throws
40
+
41
+ Type | Description
42
+ ---- | -----------
43
+
44
+
39
45
  ## Examples
40
46
 
41
47
  ```js