Skip to main content

ModMul

Trait ModMul 

Source
pub trait ModMul<RHS = Self, M = Self> {
    type Output;

    // Required method
    fn mod_mul(self, other: RHS, m: M) -> Self::Output;
}
Expand description

Multiplies two numbers modulo a third number $m$. The inputs must be already reduced modulo $m$.

Required Associated Types§

Required Methods§

Source

fn mod_mul(self, other: RHS, m: M) -> Self::Output

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl ModMul for u8

Source§

fn mod_mul(self, other: u8, m: u8) -> u8

Multiplies 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 $xy \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_mul from nmod.h, FLINT 2.7.1.

Source§

type Output = u8

Source§

impl ModMul for u16

Source§

fn mod_mul(self, other: u16, m: u16) -> u16

Multiplies 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 $xy \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_mul from nmod.h, FLINT 2.7.1.

Source§

type Output = u16

Source§

impl ModMul for u32

Source§

fn mod_mul(self, other: u32, m: u32) -> u32

Multiplies 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 $xy \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_mul from nmod.h, FLINT 2.7.1.

Source§

type Output = u32

Source§

impl ModMul for u64

Source§

fn mod_mul(self, other: u64, m: u64) -> u64

Multiplies 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 $xy \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_mul from nmod.h, FLINT 2.7.1.

Source§

type Output = u64

Source§

impl ModMul for u128

Source§

fn mod_mul(self, other: u128, m: u128) -> u128

Multiplies 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 $xy \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_mul from nmod.h, FLINT 2.7.1.

Source§

type Output = u128

Source§

impl ModMul for usize

Source§

fn mod_mul(self, other: usize, m: usize) -> usize

Multiplies 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 $xy \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_mul from nmod.h, FLINT 2.7.1.

Source§

type Output = usize

Implementors§