Skip to main content

BinaryField

Trait BinaryField 

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

Source

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§

Source

const N_BITS: usize = Self::ORDER_EXPONENT

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.

Implementors§