-
-
Notifications
You must be signed in to change notification settings - Fork 654
Avoid hermite_form in solve_right if possible #40276
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
Conversation
Documentation preview for this PR (built with commit c71f7c9; changes) is ready! 🎉 |
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.
LGTM.
Thanks for the reviews 🙂 |
Well, once the code is implemented, we can revisit the comparison. ;) |
sagemathgh-40276: Avoid hermite_form in solve_right if possible Currently, hermite_form can be randomly very slow (sagemath#33418, flintlib/flint#389) When `rank()==ncols()`, the solution is uniquely determined, so that an alternative algorithm is to solve the system over the fraction field, then convert it back to the ring. And computing rank is much faster — the current default algorithm for ℤ picks a random prime p and compute rank modulo p. This PR detects the full-rank case and implement the alternative algorithm. ### 📝 Checklist <!-- Put an `x` in all the boxes that apply. --> - [x] The title is concise and informative. - [x] The description explains in detail what this PR is about. - [x] I have linked a relevant issue or discussion. - [x] I have created tests covering the changes. - [ ] I have updated the documentation and checked the documentation preview. ### ⌛ Dependencies <!-- List all open PRs that this PR logically depends on. For example, --> <!-- - sagemath#12345: short description why this is a dependency --> <!-- - sagemath#34567: ... --> URL: sagemath#40276 Reported by: user202729 Reviewer(s): Travis Scrimshaw
sagemathgh-40497: Actually avoid hermite_form in solve_right if possible I tried to speed this up in sagemath#40276 , but there was some error in logic which makes it fail. ### 📝 Checklist <!-- Put an `x` in all the boxes that apply. --> - [ ] The title is concise and informative. - [ ] The description explains in detail what this PR is about. - [ ] I have linked a relevant issue or discussion. - [ ] I have created tests covering the changes. - [ ] I have updated the documentation and checked the documentation preview. ### ⌛ Dependencies <!-- List all open PRs that this PR logically depends on. For example, --> <!-- - sagemath#12345: short description why this is a dependency --> <!-- - sagemath#34567: ... --> URL: sagemath#40497 Reported by: user202729 Reviewer(s): user202729
Currently, hermite_form can be randomly very slow (#33418, flintlib/flint#389)
When
rank()==ncols()
, the solution is uniquely determined, so that an alternative algorithm is to solve the system over the fraction field, then convert it back to the ring. And computing rank is much faster — the current default algorithm for ℤ picks a random prime p and compute rank modulo p.This PR detects the full-rank case and implement the alternative algorithm.
📝 Checklist
⌛ Dependencies