pub trait TowerField: BinaryField {
    const TOWER_LEVEL: usize = _;

    // Provided methods
    fn basis(iota: usize, i: usize) -> Result<Self, Error> { ... }
    fn mul_primitive(self, iota: usize) -> Result<Self, Error> { ... }
}
Expand description

A binary field isomorphic to a binary tower field.

The canonical binary field tower construction is specified in DP23, section 2.3. This is a family of binary fields with extension degree $2^{\iota}$ for any tower height $\iota$. This trait can be implemented on any binary field isomorphic to the canonical tower field.

Provided Associated Constants§

source

const TOWER_LEVEL: usize = _

The level $\iota$ in the tower, where this field is isomorphic to $T_{\iota}$.

Provided Methods§

source

fn basis(iota: usize, i: usize) -> Result<Self, Error>

source

fn mul_primitive(self, iota: usize) -> Result<Self, Error>

Multiplies a field element by the canonical primitive element of the extension $T_{\iota + 1} / T_{iota}$.

We represent the tower field $T_{\iota + 1}$ as a vector space over $T_{\iota}$ with the basis ${1, \beta^{(\iota)}_1}$. This operation multiplies the element by $\beta^{(\iota)}_1$.

§Throws
  • Error::ExtensionDegreeTooHigh if iota >= Self::TOWER_LEVEL

Object Safety§

This trait is not object safe.

Implementors§