Improve algorithm selection in fmpz_mat_rref #2144
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.
Should fix #2129.
Based on the following profiling data with
randtest
matrices. For each row, the initial number is the number of rowsr
. Forc = 1, 2, ...
columns we printf
whenfmpz_mat_fflu
is faster andM
whenfmpz_mat_rref_mul
if faster. The fraction on the right is the ratioc / r
of the largestc
whereM
wins.We see that
M
basically wins exactly whenc <= r
forr
up to about 20 and in an extended triangular region forr <= 100
. Presumablyfflu
still wins forr > 100
for ratios much larger than 2 but this doesn't seem particularly worth optimizing for (and the profiles take a long time to run).