Make Expression.simplify optionally use sympy #35236
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
📚 Description
Expression.simplify
currently uses maxima to simplify an expression. Sympy also has a methodsimplify
that often works better. For this reason I propose to add an 'algorithm' parameter to the Expression.simplify method, to make it easy to use sympy's simplification method.To illustrate why this is beneficial, consider the expression
x = (-1/5*(2*sqrt(6)*(sqrt(5) - 5) + 11*sqrt(5) - 11)/(2*sqrt(6)*sqrt(5) - 11))
. Bothx.simplify_full()
andx.simplify()
are not able to simplify this expression. However,x.simplify(algorithm='sympy')
would return1/5*sqrt(5) - 1/5
.📝 Checklist
⌛ Dependencies