Skip to main content

WrappingMulAddMul

Trait WrappingMulAddMul 

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

    // Required method
    fn wrapping_mul_add_mul(self, y: Y, z: Z, w: W) -> Self::Output;
}
Expand description

Adds the products of two pairs of numbers, wrapping around at the boundary of the type.

Required Associated Types§

Required Methods§

Source

fn wrapping_mul_add_mul(self, y: Y, z: Z, w: W) -> 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 WrappingMulAddMul for i8

Source§

fn wrapping_mul_add_mul(self, y: i8, z: i8, w: i8) -> i8

Adds the products of two pairs of numbers, wrapping around at the boundary of the type.

$f(x, y, z, w) = z$, where $z \equiv xy + zw \mod 2^W$ and $W$ is Self::WIDTH.

§Worst-case complexity

Constant time and additional memory.

§Examples

See here.

Source§

type Output = i8

Source§

impl WrappingMulAddMul for i16

Source§

fn wrapping_mul_add_mul(self, y: i16, z: i16, w: i16) -> i16

Adds the products of two pairs of numbers, wrapping around at the boundary of the type.

$f(x, y, z, w) = z$, where $z \equiv xy + zw \mod 2^W$ and $W$ is Self::WIDTH.

§Worst-case complexity

Constant time and additional memory.

§Examples

See here.

Source§

type Output = i16

Source§

impl WrappingMulAddMul for i32

Source§

fn wrapping_mul_add_mul(self, y: i32, z: i32, w: i32) -> i32

Adds the products of two pairs of numbers, wrapping around at the boundary of the type.

$f(x, y, z, w) = z$, where $z \equiv xy + zw \mod 2^W$ and $W$ is Self::WIDTH.

§Worst-case complexity

Constant time and additional memory.

§Examples

See here.

Source§

type Output = i32

Source§

impl WrappingMulAddMul for i64

Source§

fn wrapping_mul_add_mul(self, y: i64, z: i64, w: i64) -> i64

Adds the products of two pairs of numbers, wrapping around at the boundary of the type.

$f(x, y, z, w) = z$, where $z \equiv xy + zw \mod 2^W$ and $W$ is Self::WIDTH.

§Worst-case complexity

Constant time and additional memory.

§Examples

See here.

Source§

type Output = i64

Source§

impl WrappingMulAddMul for i128

Source§

fn wrapping_mul_add_mul(self, y: i128, z: i128, w: i128) -> i128

Adds the products of two pairs of numbers, wrapping around at the boundary of the type.

$f(x, y, z, w) = z$, where $z \equiv xy + zw \mod 2^W$ and $W$ is Self::WIDTH.

§Worst-case complexity

Constant time and additional memory.

§Examples

See here.

Source§

type Output = i128

Source§

impl WrappingMulAddMul for isize

Source§

fn wrapping_mul_add_mul(self, y: isize, z: isize, w: isize) -> isize

Adds the products of two pairs of numbers, wrapping around at the boundary of the type.

$f(x, y, z, w) = z$, where $z \equiv xy + zw \mod 2^W$ and $W$ is Self::WIDTH.

§Worst-case complexity

Constant time and additional memory.

§Examples

See here.

Source§

type Output = isize

Source§

impl WrappingMulAddMul for u8

Source§

fn wrapping_mul_add_mul(self, y: u8, z: u8, w: u8) -> u8

Adds the products of two pairs of numbers, wrapping around at the boundary of the type.

$f(x, y, z, w) = z$, where $z \equiv xy + zw \mod 2^W$ and $W$ is Self::WIDTH.

§Worst-case complexity

Constant time and additional memory.

§Examples

See here.

Source§

type Output = u8

Source§

impl WrappingMulAddMul for u16

Source§

fn wrapping_mul_add_mul(self, y: u16, z: u16, w: u16) -> u16

Adds the products of two pairs of numbers, wrapping around at the boundary of the type.

$f(x, y, z, w) = z$, where $z \equiv xy + zw \mod 2^W$ and $W$ is Self::WIDTH.

§Worst-case complexity

Constant time and additional memory.

§Examples

See here.

Source§

type Output = u16

Source§

impl WrappingMulAddMul for u32

Source§

fn wrapping_mul_add_mul(self, y: u32, z: u32, w: u32) -> u32

Adds the products of two pairs of numbers, wrapping around at the boundary of the type.

$f(x, y, z, w) = z$, where $z \equiv xy + zw \mod 2^W$ and $W$ is Self::WIDTH.

§Worst-case complexity

Constant time and additional memory.

§Examples

See here.

Source§

type Output = u32

Source§

impl WrappingMulAddMul for u64

Source§

fn wrapping_mul_add_mul(self, y: u64, z: u64, w: u64) -> u64

Adds the products of two pairs of numbers, wrapping around at the boundary of the type.

$f(x, y, z, w) = z$, where $z \equiv xy + zw \mod 2^W$ and $W$ is Self::WIDTH.

§Worst-case complexity

Constant time and additional memory.

§Examples

See here.

Source§

type Output = u64

Source§

impl WrappingMulAddMul for u128

Source§

fn wrapping_mul_add_mul(self, y: u128, z: u128, w: u128) -> u128

Adds the products of two pairs of numbers, wrapping around at the boundary of the type.

$f(x, y, z, w) = z$, where $z \equiv xy + zw \mod 2^W$ and $W$ is Self::WIDTH.

§Worst-case complexity

Constant time and additional memory.

§Examples

See here.

Source§

type Output = u128

Source§

impl WrappingMulAddMul for usize

Source§

fn wrapping_mul_add_mul(self, y: usize, z: usize, w: usize) -> usize

Adds the products of two pairs of numbers, wrapping around at the boundary of the type.

$f(x, y, z, w) = z$, where $z \equiv xy + zw \mod 2^W$ and $W$ is Self::WIDTH.

§Worst-case complexity

Constant time and additional memory.

§Examples

See here.

Source§

type Output = usize

Implementors§