Add bloq for constant polynomial multiplication modulu in GF(2) - #1516
Conversation
|
|
||
| @cached_property | ||
| def signature(self) -> 'Signature': | ||
| return Signature([Register('g', QBit(), shape=(self.n,))]) |
There was a problem hiding this comment.
@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.