Raised upper limit for Comba squaring #502
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.
This PR replaces the comba-squaring cut-off
MP_MAX_COMBA/2withMP_MAX_COMBA.Saw @tomstdenis taking part in the discussion over at #429 lately and remembered the curious results for the faster squaring algorithms (Karatsuba and Toom-Cook-3) where the cut-offs for both coincided with the upper limit of comba-squaring but not for comba-multiplying.
The upper limit for comba-multiplying is the size of
min(a.used,b.used)but for comba-squaring it isa.used/2. Neither the actual code nor tests with inputs of the form-1 + 2^(n*MP_DIGIT_BIT)(all bits set in every limb withMP_MASK) for allMP_16BIT,MP_32BIT, andMP_64BITshowed a reason for that difference.Also: running
tunegives reasonable cut-offs now for the Karatsuba and Toom-Cook-3 squaring algorithms.