Skip to content
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

feat(fft): fft/fftInv now works on abitrary cosets #58

Merged
merged 1 commit into from
Feb 12, 2021

Conversation

ThomasPiellard
Copy link
Collaborator

@ThomasPiellard ThomasPiellard commented Feb 12, 2021

The FFT package now allows to execute the fft (and fft inv) on shifted subgroup/dual basis (ex if u is a primitive n-th root of 1, and v a primitive m-th root of 1 with n|m, then we can evaluate a polynomial of degree n-1 on (1,u,..,u^n-1), on (v,vu,..vu^n-1), etc, up to v^(m/n) ). It will come handy for fast polynomial division while avoiding vanishing set of the quotient polynomial, for polynomials of arbitrary degree.

Breaking changes

  • NewDomain(m uint64) --> NewDomain(m, nbCosets uint64) (the greater nbCosets, the more memory is needed)
  • FFT(a []fr.Element, decimation Decimation) --> FFT(a []fr.Element, decimation Decimation, coset uint64)
  • FFTInverse(a []fr.Element, decimation Decimation) --> FFTInverse(a []fr.Element, decimation Decimation, coset uint64)
  • Domain now has a field NbCosets, which affects the serialization (so several parts of the coded are impacted, notably the Groth&6 setup has been re run for solidity integration test and in gnarkd)

@ThomasPiellard ThomasPiellard changed the title feat(fft): fft/fftInv now works on abitrary cosets (bounded by maxOrder) feat(fft): fft/fftInv now works on abitrary cosets Feb 12, 2021
@ThomasPiellard ThomasPiellard merged commit 3355011 into develop Feb 12, 2021
@ThomasPiellard ThomasPiellard deleted the feat/fft_cosets branch February 12, 2021 19:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant