pub(crate) trait AmmMultiplier<'a>: MontyMultiplier<'a> {
// Required methods
fn mul_amm_assign(
&mut self,
a: &mut <Self::Monty as MontyForm>::Integer,
b: &<Self::Monty as MontyForm>::Integer,
);
fn square_amm_assign(&mut self, a: &mut <Self::Monty as MontyForm>::Integer);
}Expand description
Prepared Montgomery multiplier for tight loops, performing “Almost Montgomery Multiplication”.
NOTE: the resulting output of any of these functions will be reduced to the bit length of the modulus, but not fully reduced and may exceed the modulus. A final reduction is required to ensure AMM results are fully reduced, and should not be exposed outside the internals of this crate.
Required Methods§
Sourcefn mul_amm_assign(
&mut self,
a: &mut <Self::Monty as MontyForm>::Integer,
b: &<Self::Monty as MontyForm>::Integer,
)
fn mul_amm_assign( &mut self, a: &mut <Self::Monty as MontyForm>::Integer, b: &<Self::Monty as MontyForm>::Integer, )
Perform an “Almost Montgomery Multiplication”, assigning the product to a.
Sourcefn square_amm_assign(&mut self, a: &mut <Self::Monty as MontyForm>::Integer)
fn square_amm_assign(&mut self, a: &mut <Self::Monty as MontyForm>::Integer)
Perform a squaring using “Almost Montgomery Multiplication”, assigning the result to a.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".