pub trait ModAdd<RHS = Self, M = Self> {
type Output;
// Required method
fn mod_add(self, other: RHS, m: M) -> Self::Output;
}Expand description
Adds two numbers modulo a third number $m$. The inputs must be already reduced modulo $m$.
Required Associated Types§
Required Methods§
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".
Implementations on Foreign Types§
Source§impl ModAdd for u8
impl ModAdd for u8
Source§fn mod_add(self, other: u8, m: u8) -> u8
fn mod_add(self, other: u8, m: u8) -> u8
Adds two numbers modulo a third number $m$. The inputs must be already reduced modulo $m$.
$f(x, y, m) = z$, where $x, y, z < m$ and $x + y \equiv z \mod m$.
§Worst-case complexity
Constant time and additional memory.
§Panics
Panics if self or other are greater than or equal to m.
§Examples
See here.
This is equivalent to nmod_add from nmod.h, FLINT 2.7.1.
type Output = u8
Source§impl ModAdd for u16
impl ModAdd for u16
Source§fn mod_add(self, other: u16, m: u16) -> u16
fn mod_add(self, other: u16, m: u16) -> u16
Adds two numbers modulo a third number $m$. The inputs must be already reduced modulo $m$.
$f(x, y, m) = z$, where $x, y, z < m$ and $x + y \equiv z \mod m$.
§Worst-case complexity
Constant time and additional memory.
§Panics
Panics if self or other are greater than or equal to m.
§Examples
See here.
This is equivalent to nmod_add from nmod.h, FLINT 2.7.1.
type Output = u16
Source§impl ModAdd for u32
impl ModAdd for u32
Source§fn mod_add(self, other: u32, m: u32) -> u32
fn mod_add(self, other: u32, m: u32) -> u32
Adds two numbers modulo a third number $m$. The inputs must be already reduced modulo $m$.
$f(x, y, m) = z$, where $x, y, z < m$ and $x + y \equiv z \mod m$.
§Worst-case complexity
Constant time and additional memory.
§Panics
Panics if self or other are greater than or equal to m.
§Examples
See here.
This is equivalent to nmod_add from nmod.h, FLINT 2.7.1.
type Output = u32
Source§impl ModAdd for u64
impl ModAdd for u64
Source§fn mod_add(self, other: u64, m: u64) -> u64
fn mod_add(self, other: u64, m: u64) -> u64
Adds two numbers modulo a third number $m$. The inputs must be already reduced modulo $m$.
$f(x, y, m) = z$, where $x, y, z < m$ and $x + y \equiv z \mod m$.
§Worst-case complexity
Constant time and additional memory.
§Panics
Panics if self or other are greater than or equal to m.
§Examples
See here.
This is equivalent to nmod_add from nmod.h, FLINT 2.7.1.
type Output = u64
Source§impl ModAdd for u128
impl ModAdd for u128
Source§fn mod_add(self, other: u128, m: u128) -> u128
fn mod_add(self, other: u128, m: u128) -> u128
Adds two numbers modulo a third number $m$. The inputs must be already reduced modulo $m$.
$f(x, y, m) = z$, where $x, y, z < m$ and $x + y \equiv z \mod m$.
§Worst-case complexity
Constant time and additional memory.
§Panics
Panics if self or other are greater than or equal to m.
§Examples
See here.
This is equivalent to nmod_add from nmod.h, FLINT 2.7.1.
type Output = u128
Source§impl ModAdd for usize
impl ModAdd for usize
Source§fn mod_add(self, other: usize, m: usize) -> usize
fn mod_add(self, other: usize, m: usize) -> usize
Adds two numbers modulo a third number $m$. The inputs must be already reduced modulo $m$.
$f(x, y, m) = z$, where $x, y, z < m$ and $x + y \equiv z \mod m$.
§Worst-case complexity
Constant time and additional memory.
§Panics
Panics if self or other are greater than or equal to m.
§Examples
See here.
This is equivalent to nmod_add from nmod.h, FLINT 2.7.1.