pub trait ModPowPrecomputedAssign<RHS: Two = Self, M = Self>: ModPowPrecomputed<RHS, M> {
// Required method
fn mod_pow_precomputed_assign(&mut self, exp: RHS, m: M, data: &Self::Data);
}
Expand description
Raises a number to a power modulo another number $m$, in place. The base must be already reduced modulo $m$.
If multiple modular exponentiations with the same modulus are necessary, it can be quicker to
precompute some piece of data and reuse it in the exponentiation calls. This trait provides a
function for using precomputed data during exponentiation. For precomputing the data, use the
precompute_mod_pow_data
function in
ModPowPrecomputed
.
Required Methods§
fn mod_pow_precomputed_assign(&mut self, exp: RHS, m: M, data: &Self::Data)
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 ModPowPrecomputedAssign for u64
impl ModPowPrecomputedAssign for u64
Source§fn mod_pow_precomputed_assign(&mut self, exp: u64, m: u64, data: &Self::Data)
fn mod_pow_precomputed_assign(&mut self, exp: u64, m: u64, data: &Self::Data)
Raises a number to a power modulo another number $m$, in place. The base must be already reduced modulo $m$.
Some precomputed data is provided; this speeds up computations involving several
modular exponentiations with the same modulus. The precomputed data should be
obtained using
precompute_mod_pow_data
.
§Worst-case complexity
$T(n) = O(n)$
$M(n) = O(1)$
where $T$ is time, $M$ is additional memory, and $n$ is exp.significant_bits()
.
§Examples
See here.
Source§impl ModPowPrecomputedAssign<u64> for u8
impl ModPowPrecomputedAssign<u64> for u8
Source§fn mod_pow_precomputed_assign(&mut self, exp: u64, m: u8, data: &Self::Data)
fn mod_pow_precomputed_assign(&mut self, exp: u64, m: u8, data: &Self::Data)
Raises a number to a power modulo another number $m$, in place. The base must be already reduced modulo $m$.
Some precomputed data is provided; this speeds up computations involving several
modular exponentiations with the same modulus. The precomputed data should be
obtained using
precompute_mod_pow_data
.
§Worst-case complexity
$T(n) = O(n)$
$M(n) = O(1)$
where $T$ is time, $M$ is additional memory, and $n$ is exp.significant_bits()
.
§Examples
See here.
Source§impl ModPowPrecomputedAssign<u64> for u16
impl ModPowPrecomputedAssign<u64> for u16
Source§fn mod_pow_precomputed_assign(&mut self, exp: u64, m: u16, data: &Self::Data)
fn mod_pow_precomputed_assign(&mut self, exp: u64, m: u16, data: &Self::Data)
Raises a number to a power modulo another number $m$, in place. The base must be already reduced modulo $m$.
Some precomputed data is provided; this speeds up computations involving several
modular exponentiations with the same modulus. The precomputed data should be
obtained using
precompute_mod_pow_data
.
§Worst-case complexity
$T(n) = O(n)$
$M(n) = O(1)$
where $T$ is time, $M$ is additional memory, and $n$ is exp.significant_bits()
.
§Examples
See here.
Source§impl ModPowPrecomputedAssign<u64> for u32
impl ModPowPrecomputedAssign<u64> for u32
Source§fn mod_pow_precomputed_assign(&mut self, exp: u64, m: u32, data: &Self::Data)
fn mod_pow_precomputed_assign(&mut self, exp: u64, m: u32, data: &Self::Data)
Raises a number to a power modulo another number $m$, in place. The base must be already reduced modulo $m$.
Some precomputed data is provided; this speeds up computations involving several
modular exponentiations with the same modulus. The precomputed data should be
obtained using
precompute_mod_pow_data
.
§Worst-case complexity
$T(n) = O(n)$
$M(n) = O(1)$
where $T$ is time, $M$ is additional memory, and $n$ is exp.significant_bits()
.
§Examples
See here.
Source§impl ModPowPrecomputedAssign<u64> for u128
impl ModPowPrecomputedAssign<u64> for u128
Source§fn mod_pow_precomputed_assign(&mut self, exp: u64, m: u128, data: &Self::Data)
fn mod_pow_precomputed_assign(&mut self, exp: u64, m: u128, data: &Self::Data)
Raises a number to a power modulo another number $m$, in place. The base must be already reduced modulo $m$.
Some precomputed data is provided; this speeds up computations involving several
modular exponentiations with the same modulus. The precomputed data should be
obtained using
precompute_mod_pow_data
.
§Worst-case complexity
$T(n) = O(n)$
$M(n) = O(1)$
where $T$ is time, $M$ is additional memory, and $n$ is exp.significant_bits()
.
§Examples
See here.
Source§impl ModPowPrecomputedAssign<u64> for usize
impl ModPowPrecomputedAssign<u64> for usize
Source§fn mod_pow_precomputed_assign(&mut self, exp: u64, m: usize, data: &Self::Data)
fn mod_pow_precomputed_assign(&mut self, exp: u64, m: usize, data: &Self::Data)
Raises a number to a power modulo another number $m$, in place. The base must be already reduced modulo $m$.
Some precomputed data is provided; this speeds up computations involving several
modular exponentiations with the same modulus. The precomputed data should be
obtained using
precompute_mod_pow_data
.
§Worst-case complexity
$T(n) = O(n)$
$M(n) = O(1)$
where $T$ is time, $M$ is additional memory, and $n$ is exp.significant_bits()
.
§Examples
See here.