pub trait TowerField: BinaryField{
type Canonical: TowerField + SerializeBytes + DeserializeBytes;
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§
sourceconst TOWER_LEVEL: usize = _
const TOWER_LEVEL: usize = _
The level $\iota$ in the tower, where this field is isomorphic to $T_{\iota}$.
Required Associated Types§
sourcetype Canonical: TowerField + SerializeBytes + DeserializeBytes
type Canonical: TowerField + SerializeBytes + DeserializeBytes
The canonical field isomorphic to this tower field. Currently for every tower field, the canonical field is Fan-Paar’s binary field of the same degree.
Provided Methods§
fn basis(iota: usize, i: usize) -> Result<Self, Error>
sourcefn mul_primitive(self, iota: usize) -> Result<Self, Error>
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
ifiota >= Self::TOWER_LEVEL