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.
This is a work in progress.
Add semi-hardcoded basecases for 10 <= n <= 13 using the n=9 basecase +
mpn_addmul_1
+ corrections.Add
_flint_mpn_mulhigh_n_recursive
which computes exactly the same result as_flint_mpn_mulhigh_basecase
but does so by breaking into smaller muls and mulhighs. With more improvements, I think this approach could obsoletebasecase
, but it is not currently strictly faster.Note to Albin: if the assembly
_flint_mpn_mulhigh_basecase
were to assume n >= 10, start by calling the 9x9 subroutine, and update from there, that might obsolete all the above.Change
_flint_mpn_mulhigh_n_mulders_recursive
to add the diagonal corrections so that we compute the more accurate high product. This means that_flint_mpn_mulhigh_n_mulders
can call_flint_mpn_mulhigh_n_mulders_recursive
directly with lengthn
; we no longer need to zero-pad the inputs and work withn + 1
.