Trait XXSubYYToZZ

Source
pub trait XXSubYYToZZ: Sized {
    // Required method
    fn xx_sub_yy_to_zz(
        x_1: Self,
        x_0: Self,
        y_1: Self,
        y_0: Self,
    ) -> (Self, Self);
}
Expand description

Subtracts two numbers, each composed of two Self values, returing the difference as a pair of Self values.

The more significant number always comes first. Subtraction is wrapping, and overflow is not indicated.

Required Methods§

Source

fn xx_sub_yy_to_zz(x_1: Self, x_0: Self, y_1: Self, y_0: Self) -> (Self, Self)

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl XXSubYYToZZ for u8

Source§

fn xx_sub_yy_to_zz(x_1: u8, x_0: u8, y_1: u8, y_0: u8) -> (u8, u8)

Subtracts two numbers, each composed of two Self values, returning the difference as a pair of Self values.

The more significant value always comes first. Subtraction is wrapping, and overflow is not indicated.

$$ f(x_1, x_0, y_1, y_0) = (z_1, z_0), $$ where $W$ is Self::WIDTH,

$x_1, x_0, y_1, y_0, z_1, z_0 < 2^W$, and $$ (2^Wx_1 + x_0) - (2^Wy_1 + y_0) \equiv 2^Wz_1 + z_0 \mod 2^{2W}. $$

§Worst-case complexity

Constant time and additional memory.

§Examples

See here.

This is equivalent to sub_ddmmss from longlong.h, GMP 6.2.1, where (sh, sl) is returned.

Source§

impl XXSubYYToZZ for u16

Source§

fn xx_sub_yy_to_zz(x_1: u16, x_0: u16, y_1: u16, y_0: u16) -> (u16, u16)

Subtracts two numbers, each composed of two Self values, returning the difference as a pair of Self values.

The more significant value always comes first. Subtraction is wrapping, and overflow is not indicated.

$$ f(x_1, x_0, y_1, y_0) = (z_1, z_0), $$ where $W$ is Self::WIDTH,

$x_1, x_0, y_1, y_0, z_1, z_0 < 2^W$, and $$ (2^Wx_1 + x_0) - (2^Wy_1 + y_0) \equiv 2^Wz_1 + z_0 \mod 2^{2W}. $$

§Worst-case complexity

Constant time and additional memory.

§Examples

See here.

This is equivalent to sub_ddmmss from longlong.h, GMP 6.2.1, where (sh, sl) is returned.

Source§

impl XXSubYYToZZ for u32

Source§

fn xx_sub_yy_to_zz(x_1: u32, x_0: u32, y_1: u32, y_0: u32) -> (u32, u32)

Subtracts two numbers, each composed of two Self values, returning the difference as a pair of Self values.

The more significant value always comes first. Subtraction is wrapping, and overflow is not indicated.

$$ f(x_1, x_0, y_1, y_0) = (z_1, z_0), $$ where $W$ is Self::WIDTH,

$x_1, x_0, y_1, y_0, z_1, z_0 < 2^W$, and $$ (2^Wx_1 + x_0) - (2^Wy_1 + y_0) \equiv 2^Wz_1 + z_0 \mod 2^{2W}. $$

§Worst-case complexity

Constant time and additional memory.

§Examples

See here.

This is equivalent to sub_ddmmss from longlong.h, GMP 6.2.1, where (sh, sl) is returned.

Source§

impl XXSubYYToZZ for u64

Source§

fn xx_sub_yy_to_zz(x_1: u64, x_0: u64, y_1: u64, y_0: u64) -> (u64, u64)

Subtracts two numbers, each composed of two Self values, returning the difference as a pair of Self values.

The more significant value always comes first. Subtraction is wrapping, and overflow is not indicated.

$$ f(x_1, x_0, y_1, y_0) = (z_1, z_0), $$ where $W$ is Self::WIDTH,

$x_1, x_0, y_1, y_0, z_1, z_0 < 2^W$, and $$ (2^Wx_1 + x_0) - (2^Wy_1 + y_0) \equiv 2^Wz_1 + z_0 \mod 2^{2W}. $$

§Worst-case complexity

Constant time and additional memory.

§Examples

See here.

This is equivalent to sub_ddmmss from longlong.h, GMP 6.2.1, where (sh, sl) is returned.

Source§

impl XXSubYYToZZ for u128

Source§

fn xx_sub_yy_to_zz(x_1: u128, x_0: u128, y_1: u128, y_0: u128) -> (u128, u128)

Subtracts two numbers, each composed of two u128 values, returning the difference as a pair of u128 values.

The more significant value always comes first. Subtraction is wrapping, and overflow is not indicated.

$$ f(x_1, x_0, y_1, y_0) = (z_1, z_0), $$ where $W$ is Self::WIDTH,

$x_1, x_0, y_1, y_0, z_1, z_0 < 2^W$, and $$ (2^Wx_1 + x_0) - (2^Wy_1 + y_0) \equiv 2^Wz_1 + z_0 \mod 2^{2W}. $$

§Examples

See here.

§Worst-case complexity

Constant time and additional memory.

This is equivalent to sub_ddmmss from longlong.h, GMP 6.2.1, where (sh, sl) is returned.

Source§

impl XXSubYYToZZ for usize

Source§

fn xx_sub_yy_to_zz( x_1: usize, x_0: usize, y_1: usize, y_0: usize, ) -> (usize, usize)

Subtracts two numbers, each composed of two usize values, returning the difference as a pair of usize values.

The more significant value always comes first. Subtraction is wrapping, and overflow is not indicated.

$$ f(x_1, x_0, y_1, y_0) = (z_1, z_0), $$ where $W$ is Self::WIDTH,

$x_1, x_0, y_1, y_0, z_1, z_0 < 2^W$, and $$ (2^Wx_1 + x_0) - (2^Wy_1 + y_0) \equiv 2^Wz_1 + z_0 \mod 2^{2W}. $$

§Worst-case complexity

Constant time and additional memory.

§Examples

See here.

This is equivalent to sub_ddmmss from longlong.h, GMP 6.2.1, where (sh, sl) is returned.

Implementors§