HasFrobenius

Trait HasFrobenius 

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

Source

fn frobenius(&self) -> Self

Apply the Frobenius automorphism once.

Equivalent to raising the element to the nth power.

Source

fn repeated_frobenius(&self, count: usize) -> Self

Apply the Frobenius automorphism count times.

Equivalent to raising to the n^count power.

Source

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§

Source

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.

Implementors§