pub trait BinaryField: ExtensionField<BinaryField1b> + WithUnderlier<Underlier: UnderlierType> {
const TRACE_ONE_ELEMENT: Self;
const N_BITS: usize = Self::ORDER_EXPONENT;
}Expand description
A finite field with characteristic 2.
Required Associated Constants§
Sourceconst TRACE_ONE_ELEMENT: Self
const TRACE_ONE_ELEMENT: Self
An element whose absolute trace is 1.
The absolute trace is the $\mathbb{F}_2$-linear map
$$\operatorname{Tr}(x) = \sum_{i=0}^{n-1} x^{2^i},$$
which lands in $\mathbb{F}_2$ and is surjective, so such an element always exists and exactly half the field has trace 1. Which one is named here is arbitrary; each field picks a single-bit element, the lowest one that qualifies.
The NTT’s Gao-Mateer domain context seeds its basis with this: the descent $\beta_i = \beta_{i+1}^2 + \beta_{i+1}$ reaches $\beta_0 = 1$ exactly when it starts from an element of trace 1.
Provided Associated Constants§
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.