Expand description
This module contains an EvaluationDomain
abstraction for
performing various kinds of polynomial arithmetic on top of
fields that are friendly to fast-fourier-transforms (FFTs).
A field is FFT-friendly if it contains enough roots of unity to perform the FFT in O(n log n) time. These roots of unity comprise the domain over which polynomial arithmetic is performed.
Re-exports§
pub use general::GeneralEvaluationDomain;
pub use mixed_radix::MixedRadixEvaluationDomain;
pub use radix2::Radix2EvaluationDomain;
Modules§
- This module contains a
GeneralEvaluationDomain
for performing various kinds of polynomial arithmetic on top of a FFT-friendly finite field. - This module contains a
MixedRadixEvaluationDomain
for performing various kinds of polynomial arithmetic on top of fields that are FFT-friendly but do not have high-enough two-adicity to perform the FFT efficiently, i.e. the multiplicative subgroupG
generated byF::TWO_ADIC_ROOT_OF_UNITY
is not large enough.MixedRadixEvaluationDomain
resolves this issue by using a larger subgroup obtained by combiningG
with another subgroup of sizeF::SMALL_SUBGROUP_BASE^(F::SMALL_SUBGROUP_BASE_ADICITY)
, to obtain a subgroup generated byF::LARGE_SUBGROUP_ROOT_OF_UNITY
. - This module defines
Radix2EvaluationDomain
, anEvaluationDomain
for performing various kinds of polynomial arithmetic on top of fields that are FFT-friendly.Radix2EvaluationDomain
supports FFTs of size at most2^F::TWO_ADICITY
.
Traits§
- Types that can be FFT-ed must implement this trait.
- Defines a domain over which finite field (I)FFTs can be performed. The size of the supported FFT depends on the size of the multiplicative subgroup. For efficiency, we recommend that the field has at least one large subgroup generated by a root of unity.