pub trait PermutationMonomial<const N: u64>: InjectiveMonomial<N> {
// Required method
fn injective_exp_root_n(&self) -> Self;
}Expand description
A ring implements PermutationMonomial<N> if the algebraic function
f(x) = x^N is invertible and thus acts as a permutation on elements of the ring.
In all cases we care about, this means that we can find another integer K such
that x = x^{NK} for all elements of our ring.
Required Methods§
Sourcefn injective_exp_root_n(&self) -> Self
fn injective_exp_root_n(&self) -> Self
Compute x -> x^K for a given K > 1 such that
x^{NK} = x for all elements x.
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.
Implementations on Foreign Types§
Source§impl PermutationMonomial<7> for Goldilocks
impl PermutationMonomial<7> for Goldilocks
Source§fn injective_exp_root_n(&self) -> Goldilocks
fn injective_exp_root_n(&self) -> Goldilocks
In the field Goldilocks, a^{1/7} is equal to a^{10540996611094048183}.
This follows from the calculation 7*10540996611094048183 = 4*(2^64 - 2**32) + 1 = 1 mod (p - 1).