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".
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).