pub trait HasFrobenius<F: Field>: ExtensionField<F> {
// Required methods
fn frobenius(&self) -> Self;
fn repeated_frobenius(&self, count: usize) -> Self;
fn pseudo_inv(&self) -> Self;
// Provided method
fn galois_orbit(self) -> Vec<Self> { ... }
}Expand description
Trait for extension fields that support Frobenius automorphisms.
The Frobenius automorphism is a field map x ↦ x^n,
where n is the order of the base field.
This map is an automorphism of the field that fixes the base field.
Required Methods§
Sourcefn frobenius(&self) -> Self
fn frobenius(&self) -> Self
Apply the Frobenius automorphism once.
Equivalent to raising the element to the nth power.
Sourcefn repeated_frobenius(&self, count: usize) -> Self
fn repeated_frobenius(&self, count: usize) -> Self
Apply the Frobenius automorphism count times.
Equivalent to raising to the n^count power.
Sourcefn pseudo_inv(&self) -> Self
fn pseudo_inv(&self) -> Self
Computes the pseudo inverse of the given field element.
Returns 0 if self == 0, and 1/self otherwise.
In other words, returns self^(n^D - 2) where D is the extension degree.
Provided Methods§
Sourcefn galois_orbit(self) -> Vec<Self>
fn galois_orbit(self) -> Vec<Self>
Returns the full Galois orbit of the element under Frobenius.
This is the sequence [x, x^n, x^{n^2}, ..., x^{n^{D-1}}],
where D is the extension degree.
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.