-
-
Notifications
You must be signed in to change notification settings - Fork 543
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add a few more expression simplifications #2211
Conversation
Codecov ReportBase: 99.64% // Head: 99.64% // Increases project coverage by
Additional details and impacted files@@ Coverage Diff @@
## develop #2211 +/- ##
========================================
Coverage 99.64% 99.64%
========================================
Files 361 361
Lines 19918 19932 +14
========================================
+ Hits 19847 19861 +14
Misses 71 71
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here. ☔ View full report at Codecov. |
@@ -1257,6 +1253,16 @@ def simplified_division(left, right): | |||
r_left, r_right = right.orphans | |||
return (left * r_right) / r_left | |||
|
|||
# Cancelling out common terms |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Aren't there more simplifications here? I think this catches things like (a*b)/(a*c)
but wouldn't catch (b*a)/(c*a)
? Is it much overhead to check for these?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, just adding things as I see them come up in expression trees
# Or simplify A @ (B @ b +- C @ c) to (A @ B @ b) +- (A @ C @ c) if (A @ B) | ||
# and (A @ C) are constant | ||
# Don't do this if either b or c is a number as this will lead to matmul errors | ||
if ( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we need A to be constant here too? I.e. left.is_constant()
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yeah, good point
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thanks, looks good!
Description
A few more simplifications of the expression tree. Spotted these while debugging but I doubt they will be very common
Type of change
Please add a line in the relevant section of CHANGELOG.md to document the change (include PR #) - note reverse order of PR #s. If necessary, also add to the list of breaking changes.
Key checklist:
$ flake8
$ python run-tests.py --unit
$ cd docs
and then$ make clean; make html
You can run all three at once, using
$ python run-tests.py --quick
.Further checks: