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 Types§

source

type BigInt: BigInteger

Required Associated Constants§

source

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.

source

const TWO_ADIC_ROOT_OF_UNITY: Self::BigInt

2^s root of unity computed by GENERATOR^t

Provided Associated Constants§

source

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.

source

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.

source

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.

Implementors§

source§

impl FftParameters for FpParameters

§

type BigInt = BigInt<4>

source§

const TWO_ADICITY: u32 = 32u32

source§

const TWO_ADIC_ROOT_OF_UNITY: BigInteger = _

source§

impl FftParameters for FqParameters

§

type BigInt = BigInt<4>

source§

const TWO_ADICITY: u32 = 32u32

source§

const TWO_ADIC_ROOT_OF_UNITY: BigInteger = _