pub trait TowerField: BinaryField + From<Self::Canonical>{
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 for any tower height . 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 in the tower, where this field is isomorphic to .
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 .
We represent the tower field as a vector space over with the basis . This operation multiplies the element by .
§Throws
Error::ExtensionDegreeTooHigh
ifiota >= Self::TOWER_LEVEL
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.