-
Notifications
You must be signed in to change notification settings - Fork 288
math: in-repo Lehmer 3072-bit modular inverse + std ceil_log_2 #1051
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
Open
biryukovmaxim
wants to merge
13
commits into
kaspanet:master
Choose a base branch
from
biryukovmaxim:lehmer-modinv
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from 1 commit
Commits
Show all changes
13 commits
Select commit
Hold shift + click to select a range
fa9df23
refactor(math): add ceil_log_2, drop malachite CeilingLogBase2 in syn…
biryukovmaxim e73a448
chore: bump workspace MSRV to 1.95.0
biryukovmaxim eeff2ee
feat(math): in-repo Lehmer 3072-bit modular inverse
biryukovmaxim cd57641
bench(math): 3072-bit modular-inverse candidate benchmarks
biryukovmaxim a26a815
chore(math): lehmer per-inverse op-count example
biryukovmaxim 0d88a59
ci: bump CI and docker toolchains to 1.95.0
biryukovmaxim 74372d8
bench(math): trim modinv bench to lehmer vs malachite, drop candidate…
biryukovmaxim a4be7a5
math: drop malachite mod_inverse for in-repo lehmer; malachite -> dev…
biryukovmaxim dadfea2
math: generalize lehmer modinv over uint widths via traits
biryukovmaxim 56ec8f5
fuzz(math): recover mod_inv arms via lehmer_invert
biryukovmaxim c910b6a
math: ceil_log_2 returns 0 for x=0 via leading_zeros
biryukovmaxim 5160f8d
apply black box
biryukovmaxim 46b0e2c
math: strict-asserts feature; promote lehmer debug_asserts, add invar…
biryukovmaxim File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
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.
You mentioned branchless, note that this isn't actually branchless, as ilog2 panics if
x == 0see assembly: https://godbolt.org/z/E8GasceMx
This function is basically the same as:
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.
The original one also panicked, we can either panic, return Option, or make the function return
0on a0inputUh oh!
There was an error while loading. Please reload this page.
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.
we have only one caller of the function, which never passes zero. returning zero sounds fine to me