pub trait XXXAddYYYToZZZ: Sized {
// Required method
fn xxx_add_yyy_to_zzz(
x_2: Self,
x_1: Self,
x_0: Self,
y_2: Self,
y_1: Self,
y_0: Self,
) -> (Self, Self, Self);
}
Expand description
Adds two numbers, each composed of three Self
values, returning the sum as a triple of Self
values.
The more significant number always comes first. Addition is wrapping, and overflow is not indicated.
Required Methods§
fn xxx_add_yyy_to_zzz( x_2: Self, x_1: Self, x_0: Self, y_2: Self, y_1: Self, y_0: Self, ) -> (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 XXXAddYYYToZZZ for u8
impl XXXAddYYYToZZZ for u8
Source§fn xxx_add_yyy_to_zzz(
x_2: u8,
x_1: u8,
x_0: u8,
y_2: u8,
y_1: u8,
y_0: u8,
) -> (u8, u8, u8)
fn xxx_add_yyy_to_zzz( x_2: u8, x_1: u8, x_0: u8, y_2: u8, y_1: u8, y_0: u8, ) -> (u8, u8, u8)
Adds two numbers, each composed of three Self
values, returning the sum as a
triple of Self
values.
The more significant value always comes first. Addition is wrapping, and overflow is not indicated.
$$
f(x_2, x_1, x_0, y_2, y_1, y_0) = (z_2, z_1, z_0),
$$
where $W$ is Self::WIDTH
,
$x_2, x_1, x_0, y_2, y_1, y_0, z_2, z_1, z_0 < 2^W$, and $$ (2^{2W}x_2 + 2^Wx_1 + x_0) + (2^{2W}y_2 + 2^Wy_1 + y_0) \equiv 2^{2W}z_2 + 2^Wz_1 + z_0 \mod 2^{3W}. $$
§Worst-case complexity
Constant time and additional memory.
§Examples
See here.
This is equivalent to add_sssaaaaaa
from longlong.h
, FLINT 2.7.1, where (sh, sm, sl)
is returned.
Source§impl XXXAddYYYToZZZ for u16
impl XXXAddYYYToZZZ for u16
Source§fn xxx_add_yyy_to_zzz(
x_2: u16,
x_1: u16,
x_0: u16,
y_2: u16,
y_1: u16,
y_0: u16,
) -> (u16, u16, u16)
fn xxx_add_yyy_to_zzz( x_2: u16, x_1: u16, x_0: u16, y_2: u16, y_1: u16, y_0: u16, ) -> (u16, u16, u16)
Adds two numbers, each composed of three Self
values, returning the sum as a
triple of Self
values.
The more significant value always comes first. Addition is wrapping, and overflow is not indicated.
$$
f(x_2, x_1, x_0, y_2, y_1, y_0) = (z_2, z_1, z_0),
$$
where $W$ is Self::WIDTH
,
$x_2, x_1, x_0, y_2, y_1, y_0, z_2, z_1, z_0 < 2^W$, and $$ (2^{2W}x_2 + 2^Wx_1 + x_0) + (2^{2W}y_2 + 2^Wy_1 + y_0) \equiv 2^{2W}z_2 + 2^Wz_1 + z_0 \mod 2^{3W}. $$
§Worst-case complexity
Constant time and additional memory.
§Examples
See here.
This is equivalent to add_sssaaaaaa
from longlong.h
, FLINT 2.7.1, where (sh, sm, sl)
is returned.
Source§impl XXXAddYYYToZZZ for u32
impl XXXAddYYYToZZZ for u32
Source§fn xxx_add_yyy_to_zzz(
x_2: u32,
x_1: u32,
x_0: u32,
y_2: u32,
y_1: u32,
y_0: u32,
) -> (u32, u32, u32)
fn xxx_add_yyy_to_zzz( x_2: u32, x_1: u32, x_0: u32, y_2: u32, y_1: u32, y_0: u32, ) -> (u32, u32, u32)
Adds two numbers, each composed of three Self
values, returning the sum as a
triple of Self
values.
The more significant value always comes first. Addition is wrapping, and overflow is not indicated.
$$
f(x_2, x_1, x_0, y_2, y_1, y_0) = (z_2, z_1, z_0),
$$
where $W$ is Self::WIDTH
,
$x_2, x_1, x_0, y_2, y_1, y_0, z_2, z_1, z_0 < 2^W$, and $$ (2^{2W}x_2 + 2^Wx_1 + x_0) + (2^{2W}y_2 + 2^Wy_1 + y_0) \equiv 2^{2W}z_2 + 2^Wz_1 + z_0 \mod 2^{3W}. $$
§Worst-case complexity
Constant time and additional memory.
§Examples
See here.
This is equivalent to add_sssaaaaaa
from longlong.h
, FLINT 2.7.1, where (sh, sm, sl)
is returned.
Source§impl XXXAddYYYToZZZ for u64
impl XXXAddYYYToZZZ for u64
Source§fn xxx_add_yyy_to_zzz(
x_2: u64,
x_1: u64,
x_0: u64,
y_2: u64,
y_1: u64,
y_0: u64,
) -> (u64, u64, u64)
fn xxx_add_yyy_to_zzz( x_2: u64, x_1: u64, x_0: u64, y_2: u64, y_1: u64, y_0: u64, ) -> (u64, u64, u64)
Adds two numbers, each composed of three Self
values, returning the sum as a
triple of Self
values.
The more significant value always comes first. Addition is wrapping, and overflow is not indicated.
$$
f(x_2, x_1, x_0, y_2, y_1, y_0) = (z_2, z_1, z_0),
$$
where $W$ is Self::WIDTH
,
$x_2, x_1, x_0, y_2, y_1, y_0, z_2, z_1, z_0 < 2^W$, and $$ (2^{2W}x_2 + 2^Wx_1 + x_0) + (2^{2W}y_2 + 2^Wy_1 + y_0) \equiv 2^{2W}z_2 + 2^Wz_1 + z_0 \mod 2^{3W}. $$
§Worst-case complexity
Constant time and additional memory.
§Examples
See here.
This is equivalent to add_sssaaaaaa
from longlong.h
, FLINT 2.7.1, where (sh, sm, sl)
is returned.
Source§impl XXXAddYYYToZZZ for u128
impl XXXAddYYYToZZZ for u128
Source§fn xxx_add_yyy_to_zzz(
x_2: u128,
x_1: u128,
x_0: u128,
y_2: u128,
y_1: u128,
y_0: u128,
) -> (u128, u128, u128)
fn xxx_add_yyy_to_zzz( x_2: u128, x_1: u128, x_0: u128, y_2: u128, y_1: u128, y_0: u128, ) -> (u128, u128, u128)
Adds two numbers, each composed of three Self
values, returning the sum as a
triple of Self
values.
The more significant value always comes first. Addition is wrapping, and overflow is not indicated.
$$
f(x_2, x_1, x_0, y_2, y_1, y_0) = (z_2, z_1, z_0),
$$
where $W$ is Self::WIDTH
,
$x_2, x_1, x_0, y_2, y_1, y_0, z_2, z_1, z_0 < 2^W$, and $$ (2^{2W}x_2 + 2^Wx_1 + x_0) + (2^{2W}y_2 + 2^Wy_1 + y_0) \equiv 2^{2W}z_2 + 2^Wz_1 + z_0 \mod 2^{3W}. $$
§Worst-case complexity
Constant time and additional memory.
§Examples
See here.
This is equivalent to add_sssaaaaaa
from longlong.h
, FLINT 2.7.1, where (sh, sm, sl)
is returned.
Source§impl XXXAddYYYToZZZ for usize
impl XXXAddYYYToZZZ for usize
Source§fn xxx_add_yyy_to_zzz(
x_2: usize,
x_1: usize,
x_0: usize,
y_2: usize,
y_1: usize,
y_0: usize,
) -> (usize, usize, usize)
fn xxx_add_yyy_to_zzz( x_2: usize, x_1: usize, x_0: usize, y_2: usize, y_1: usize, y_0: usize, ) -> (usize, usize, usize)
Adds two numbers, each composed of three usize
values, returning the sum as a triple of
usize
values.
The more significant value always comes first. Addition is wrapping, and overflow is not indicated.
$$
f(x_2, x_1, x_0, y_2, y_1, y_0) = (z_2, z_1, z_0),
$$
where $W$ is Self::WIDTH
,
$x_2, x_1, x_0, y_2, y_1, y_0, z_2, z_1, z_0 < 2^W$, and $$ (2^{2W}x_2 + 2^Wx_1 + x_0) + (2^{2W}y_2 + 2^Wy_1 + y_0) \equiv 2^{2W}z_2 + 2^Wz_1 + z_0 \mod 2^{3W}. $$
§Worst-case complexity
Constant time and additional memory.
§Examples
See here.
This is equivalent to add_sssaaaaaa
from longlong.h
, FLINT 2.7.1, where (sh, sm, sl)
is returned.