pub struct ConstMontyFormInverter<MOD: ConstMontyParams<LIMBS>, const LIMBS: usize>{ /* private fields */ }
Expand description
Bernstein-Yang inverter which inverts ConstMontyForm
types.
Implementations§
Source§impl<MOD: ConstMontyParams<SAT_LIMBS>, const SAT_LIMBS: usize, const UNSAT_LIMBS: usize> ConstMontyFormInverter<MOD, SAT_LIMBS>where
Odd<Uint<SAT_LIMBS>>: PrecomputeInverter<Inverter = SafeGcdInverter<SAT_LIMBS, UNSAT_LIMBS>, Output = Uint<SAT_LIMBS>>,
impl<MOD: ConstMontyParams<SAT_LIMBS>, const SAT_LIMBS: usize, const UNSAT_LIMBS: usize> ConstMontyFormInverter<MOD, SAT_LIMBS>where
Odd<Uint<SAT_LIMBS>>: PrecomputeInverter<Inverter = SafeGcdInverter<SAT_LIMBS, UNSAT_LIMBS>, Output = Uint<SAT_LIMBS>>,
Sourcepub const fn new() -> Self
pub const fn new() -> Self
Create a new ConstMontyFormInverter
for the given ConstMontyParams
.
Sourcepub const fn inv(
&self,
value: &ConstMontyForm<MOD, SAT_LIMBS>,
) -> ConstCtOption<ConstMontyForm<MOD, SAT_LIMBS>>
pub const fn inv( &self, value: &ConstMontyForm<MOD, SAT_LIMBS>, ) -> ConstCtOption<ConstMontyForm<MOD, SAT_LIMBS>>
Returns either the adjusted modular multiplicative inverse for the argument or None depending on invertibility of the argument, i.e. its coprimality with the modulus.
Sourcepub const fn inv_vartime(
&self,
value: &ConstMontyForm<MOD, SAT_LIMBS>,
) -> ConstCtOption<ConstMontyForm<MOD, SAT_LIMBS>>
pub const fn inv_vartime( &self, value: &ConstMontyForm<MOD, SAT_LIMBS>, ) -> ConstCtOption<ConstMontyForm<MOD, SAT_LIMBS>>
Returns either the adjusted modular multiplicative inverse for the argument or None depending on invertibility of the argument, i.e. its coprimality with the modulus.
This version is variable-time with respect to the value of self
, but constant-time with
respect to MOD
.
Trait Implementations§
Source§impl<MOD: ConstMontyParams<SAT_LIMBS>, const SAT_LIMBS: usize, const UNSAT_LIMBS: usize> Debug for ConstMontyFormInverter<MOD, SAT_LIMBS>where
Odd<Uint<SAT_LIMBS>>: PrecomputeInverter<Inverter = SafeGcdInverter<SAT_LIMBS, UNSAT_LIMBS>, Output = Uint<SAT_LIMBS>>,
impl<MOD: ConstMontyParams<SAT_LIMBS>, const SAT_LIMBS: usize, const UNSAT_LIMBS: usize> Debug for ConstMontyFormInverter<MOD, SAT_LIMBS>where
Odd<Uint<SAT_LIMBS>>: PrecomputeInverter<Inverter = SafeGcdInverter<SAT_LIMBS, UNSAT_LIMBS>, Output = Uint<SAT_LIMBS>>,
Source§impl<MOD: ConstMontyParams<SAT_LIMBS>, const SAT_LIMBS: usize, const UNSAT_LIMBS: usize> Inverter for ConstMontyFormInverter<MOD, SAT_LIMBS>where
Odd<Uint<SAT_LIMBS>>: PrecomputeInverter<Inverter = SafeGcdInverter<SAT_LIMBS, UNSAT_LIMBS>, Output = Uint<SAT_LIMBS>>,
impl<MOD: ConstMontyParams<SAT_LIMBS>, const SAT_LIMBS: usize, const UNSAT_LIMBS: usize> Inverter for ConstMontyFormInverter<MOD, SAT_LIMBS>where
Odd<Uint<SAT_LIMBS>>: PrecomputeInverter<Inverter = SafeGcdInverter<SAT_LIMBS, UNSAT_LIMBS>, Output = Uint<SAT_LIMBS>>,
Source§type Output = ConstMontyForm<MOD, SAT_LIMBS>
type Output = ConstMontyForm<MOD, SAT_LIMBS>
Output of an inversion.
Source§fn invert(
&self,
value: &ConstMontyForm<MOD, SAT_LIMBS>,
) -> CtOption<Self::Output>
fn invert( &self, value: &ConstMontyForm<MOD, SAT_LIMBS>, ) -> CtOption<Self::Output>
Compute a modular inversion, returning
None
if the result is undefined (i.e. if value
is
zero or isn’t prime relative to the modulus).Source§fn invert_vartime(
&self,
value: &ConstMontyForm<MOD, SAT_LIMBS>,
) -> CtOption<Self::Output>
fn invert_vartime( &self, value: &ConstMontyForm<MOD, SAT_LIMBS>, ) -> CtOption<Self::Output>
Compute a modular inversion, returning
None
if the result is undefined (i.e. if value
is
zero or isn’t prime relative to the modulus). Read moreAuto Trait Implementations§
impl<MOD, const LIMBS: usize> !Freeze for ConstMontyFormInverter<MOD, LIMBS>
impl<MOD, const LIMBS: usize> !RefUnwindSafe for ConstMontyFormInverter<MOD, LIMBS>
impl<MOD, const LIMBS: usize> !Send for ConstMontyFormInverter<MOD, LIMBS>
impl<MOD, const LIMBS: usize> !Sync for ConstMontyFormInverter<MOD, LIMBS>
impl<MOD, const LIMBS: usize> !Unpin for ConstMontyFormInverter<MOD, LIMBS>
impl<MOD, const LIMBS: usize> !UnwindSafe for ConstMontyFormInverter<MOD, LIMBS>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more