pub trait FftParameters:
'static
+ Send
+ Sync
+ Sized {
type BigInt: BigInteger;
const TWO_ADICITY: u32;
const TWO_ADIC_ROOT_OF_UNITY: Self::BigInt;
const SMALL_SUBGROUP_BASE: Option<u32> = None;
const SMALL_SUBGROUP_BASE_ADICITY: Option<u32> = None;
const LARGE_SUBGROUP_ROOT_OF_UNITY: Option<Self::BigInt> = None;
}
Expand description
A trait that defines parameters for a field that can be used for FFTs.
Required Associated Constants§
Sourceconst TWO_ADICITY: u32
const TWO_ADICITY: u32
Let N
be the size of the multiplicative group defined by the field.
Then TWO_ADICITY
is the two-adicity of N
, i.e. the integer s
such that N = 2^s * t
for some odd integer t
.
Sourceconst TWO_ADIC_ROOT_OF_UNITY: Self::BigInt
const TWO_ADIC_ROOT_OF_UNITY: Self::BigInt
2^s root of unity computed by GENERATOR^t
Provided Associated Constants§
Sourceconst SMALL_SUBGROUP_BASE: Option<u32> = None
const SMALL_SUBGROUP_BASE: Option<u32> = None
An integer b
such that there exists a multiplicative subgroup
of size b^k
for some integer k
.
Sourceconst SMALL_SUBGROUP_BASE_ADICITY: Option<u32> = None
const SMALL_SUBGROUP_BASE_ADICITY: Option<u32> = None
The integer k
such that there exists a multiplicative subgroup
of size Self::SMALL_SUBGROUP_BASE^k
.
Sourceconst LARGE_SUBGROUP_ROOT_OF_UNITY: Option<Self::BigInt> = None
const LARGE_SUBGROUP_ROOT_OF_UNITY: Option<Self::BigInt> = None
GENERATOR^((MODULUS-1) / (2^s * SMALL_SUBGROUP_BASE^SMALL_SUBGROUP_BASE_ADICITY)) Used for mixed-radix FFT.
Required Associated Types§
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.