Skip to main content

ModPowerOf2SubMul

Trait ModPowerOf2SubMul 

Source
pub trait ModPowerOf2SubMul<Y = Self, Z = Self> {
    type Output;

    // Required method
    fn mod_power_of_2_sub_mul(self, y: Y, z: Z, pow: u64) -> Self::Output;
}
Expand description

Subtracts the product of two numbers from a number, modulo $2^k$. All three inputs must be already reduced modulo $2^k$.

Required Associated Types§

Required Methods§

Source

fn mod_power_of_2_sub_mul(self, y: Y, z: Z, pow: u64) -> 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 ModPowerOf2SubMul for u8

Source§

fn mod_power_of_2_sub_mul(self, y: u8, z: u8, pow: u64) -> u8

Subtracts the product of two numbers from a third number, modulo a fourth number $2^k$. All three inputs must be already reduced modulo $2^k$.

$f(x, y, z, k) = w$, where $x, y, z, w < 2^k$ and $x - yz \equiv w \mod 2^k$.

§Worst-case complexity

Constant time and additional memory.

§Panics

Panics if pow is greater than Self::WIDTH or if self, y, or z are greater than or equal to $2^k$.

§Examples

See here.

Source§

type Output = u8

Source§

impl ModPowerOf2SubMul for u16

Source§

fn mod_power_of_2_sub_mul(self, y: u16, z: u16, pow: u64) -> u16

Subtracts the product of two numbers from a third number, modulo a fourth number $2^k$. All three inputs must be already reduced modulo $2^k$.

$f(x, y, z, k) = w$, where $x, y, z, w < 2^k$ and $x - yz \equiv w \mod 2^k$.

§Worst-case complexity

Constant time and additional memory.

§Panics

Panics if pow is greater than Self::WIDTH or if self, y, or z are greater than or equal to $2^k$.

§Examples

See here.

Source§

type Output = u16

Source§

impl ModPowerOf2SubMul for u32

Source§

fn mod_power_of_2_sub_mul(self, y: u32, z: u32, pow: u64) -> u32

Subtracts the product of two numbers from a third number, modulo a fourth number $2^k$. All three inputs must be already reduced modulo $2^k$.

$f(x, y, z, k) = w$, where $x, y, z, w < 2^k$ and $x - yz \equiv w \mod 2^k$.

§Worst-case complexity

Constant time and additional memory.

§Panics

Panics if pow is greater than Self::WIDTH or if self, y, or z are greater than or equal to $2^k$.

§Examples

See here.

Source§

type Output = u32

Source§

impl ModPowerOf2SubMul for u64

Source§

fn mod_power_of_2_sub_mul(self, y: u64, z: u64, pow: u64) -> u64

Subtracts the product of two numbers from a third number, modulo a fourth number $2^k$. All three inputs must be already reduced modulo $2^k$.

$f(x, y, z, k) = w$, where $x, y, z, w < 2^k$ and $x - yz \equiv w \mod 2^k$.

§Worst-case complexity

Constant time and additional memory.

§Panics

Panics if pow is greater than Self::WIDTH or if self, y, or z are greater than or equal to $2^k$.

§Examples

See here.

Source§

type Output = u64

Source§

impl ModPowerOf2SubMul for u128

Source§

fn mod_power_of_2_sub_mul(self, y: u128, z: u128, pow: u64) -> u128

Subtracts the product of two numbers from a third number, modulo a fourth number $2^k$. All three inputs must be already reduced modulo $2^k$.

$f(x, y, z, k) = w$, where $x, y, z, w < 2^k$ and $x - yz \equiv w \mod 2^k$.

§Worst-case complexity

Constant time and additional memory.

§Panics

Panics if pow is greater than Self::WIDTH or if self, y, or z are greater than or equal to $2^k$.

§Examples

See here.

Source§

type Output = u128

Source§

impl ModPowerOf2SubMul for usize

Source§

fn mod_power_of_2_sub_mul(self, y: usize, z: usize, pow: u64) -> usize

Subtracts the product of two numbers from a third number, modulo a fourth number $2^k$. All three inputs must be already reduced modulo $2^k$.

$f(x, y, z, k) = w$, where $x, y, z, w < 2^k$ and $x - yz \equiv w \mod 2^k$.

§Worst-case complexity

Constant time and additional memory.

§Panics

Panics if pow is greater than Self::WIDTH or if self, y, or z are greater than or equal to $2^k$.

§Examples

See here.

Source§

type Output = usize

Implementors§