-
Notifications
You must be signed in to change notification settings - Fork 71
Add bloq for constant polynomial multiplication modulu in GF(2) #1516
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
|
||
@cached_property | ||
def signature(self) -> 'Signature': | ||
return Signature([Register('g', QBit(), shape=(self.n,))]) |
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.
@tanujkhattar I want to have an
Ops, Me and @NoureldinYosri had a discussion offline on how to modify the PR to have the right signature for galois field arithmetic. Guess I should have left a review and blocked the PR. @NoureldinYosri Can you please open a follow-up PR to accommodate the changes that we discussed offline ? |
@tanujkhattar will do, it is worth mentioning that the disagreement is about the form of the input ... here I use polynomials (array of booleans) ... but the convention that qualtran adopted in the QGF dtype is of representing them as instanstances of |
…tumlib#1516) * Fix bug in KaliskiStep3 and add tests for all steps * cost * Add bloq for constant polynomial multiplication modulu in GF(2) * add notebook test * nit * mypy * typo * mypy * typing * fix all mypy * fix typo
This is the final PR in the series #1554, #1533, and #1516. These PRs implemented the GF($2^n$) multiplication construction from https://arxiv.org/abs/1910.02849v2 which has a toffoli complexity of $n^{\log_2{3}}$
This PR is the first PR implementing https://arxiv.org/abs/1910.02849v2. specifically this PR implements Algorithm 1:$MULT_{f(x)}$ Which I renamed to MultiplyPolyByConstantMod.
The final construction implements polyomial multiplication in GF(2) with exactly$n^{log_2(3)}$ Toffolis as opposed to the $n^2$ construction we currently have.