Trait rug::ops::DivRounding
[−]
[src]
pub trait DivRounding<Rhs = Self> { type Output; fn div_trunc(self, rhs: Rhs) -> Self::Output; fn div_ceil(self, rhs: Rhs) -> Self::Output; fn div_floor(self, rhs: Rhs) -> Self::Output; fn div_euc(self, rhs: Rhs) -> Self::Output; }
Rounding variants of division.
Examples
use rug::ops::DivRounding; struct I(i32); impl DivRounding<i32> for I { type Output = i32; fn div_trunc(self, rhs: i32) -> i32 { self.0 / rhs } fn div_ceil(self, rhs: i32) -> i32 { let (q, r) = (self.0 / rhs, self.0 % rhs); let change = if rhs > 0 { r > 0 } else { r < 0 }; if change { q + 1 } else { q } } fn div_floor(self, rhs: i32) -> i32 { let (q, r) = (self.0 / rhs, self.0 % rhs); let change = if rhs > 0 { r < 0 } else { r > 0 }; if change { q - 1 } else { q } } fn div_euc(self, rhs: i32) -> i32 { let (q, r) = (self.0 / rhs, self.0 % rhs); if r < 0 { if rhs < 0 { q + 1 } else { q - 1 } } else { q } } } assert_eq!(I(-10).div_trunc(-3), 3); assert_eq!(I(-10).div_ceil(-3), 4); assert_eq!(I(-10).div_floor(-3), 3); assert_eq!(I(-10).div_euc(-3), 4);
Associated Types
type Output
The resulting type from the division operation.
Required Methods
fn div_trunc(self, rhs: Rhs) -> Self::Output
Performs division, rounding the quotient towards zero.
fn div_ceil(self, rhs: Rhs) -> Self::Output
Performs division, rounding the quotient up.
fn div_floor(self, rhs: Rhs) -> Self::Output
Performs division, rounding the quotient down.
fn div_euc(self, rhs: Rhs) -> Self::Output
Performs Euclidean division, rounding the quotient so that the remainder cannot be negative.
Implementations on Foreign Types
impl DivRounding for i8
[src]
impl<'a> DivRounding<&'a i8> for i8
[src]
impl<'a> DivRounding<i8> for &'a i8
[src]
impl<'a, 'b> DivRounding<&'a i8> for &'b i8
[src]
impl DivRounding for i16
[src]
impl<'a> DivRounding<&'a i16> for i16
[src]
impl<'a> DivRounding<i16> for &'a i16
[src]
impl<'a, 'b> DivRounding<&'a i16> for &'b i16
[src]
impl DivRounding for i32
[src]
impl<'a> DivRounding<&'a i32> for i32
[src]
impl<'a> DivRounding<i32> for &'a i32
[src]
impl<'a, 'b> DivRounding<&'a i32> for &'b i32
[src]
impl DivRounding for i64
[src]
impl<'a> DivRounding<&'a i64> for i64
[src]
impl<'a> DivRounding<i64> for &'a i64
[src]
impl<'a, 'b> DivRounding<&'a i64> for &'b i64
[src]
impl DivRounding for isize
[src]
impl<'a> DivRounding<&'a isize> for isize
[src]
impl<'a> DivRounding<isize> for &'a isize
[src]
impl<'a, 'b> DivRounding<&'a isize> for &'b isize
[src]
impl DivRounding for i128
[src]
impl<'a> DivRounding<&'a i128> for i128
[src]
impl<'a> DivRounding<i128> for &'a i128
[src]
impl<'a, 'b> DivRounding<&'a i128> for &'b i128
[src]
impl DivRounding for u8
[src]
impl<'a> DivRounding<&'a u8> for u8
[src]
impl<'a> DivRounding<u8> for &'a u8
[src]
impl<'a, 'b> DivRounding<&'a u8> for &'b u8
[src]
impl DivRounding for u16
[src]
impl<'a> DivRounding<&'a u16> for u16
[src]
impl<'a> DivRounding<u16> for &'a u16
[src]
impl<'a, 'b> DivRounding<&'a u16> for &'b u16
[src]
impl DivRounding for u32
[src]
impl<'a> DivRounding<&'a u32> for u32
[src]
impl<'a> DivRounding<u32> for &'a u32
[src]
impl<'a, 'b> DivRounding<&'a u32> for &'b u32
[src]
impl DivRounding for u64
[src]
impl<'a> DivRounding<&'a u64> for u64
[src]
impl<'a> DivRounding<u64> for &'a u64
[src]
impl<'a, 'b> DivRounding<&'a u64> for &'b u64
[src]
impl DivRounding for usize
[src]
impl<'a> DivRounding<&'a usize> for usize
[src]
impl<'a> DivRounding<usize> for &'a usize
[src]
impl<'a, 'b> DivRounding<&'a usize> for &'b usize
[src]
impl DivRounding for u128
[src]
impl<'a> DivRounding<&'a u128> for u128
[src]
impl<'a> DivRounding<u128> for &'a u128
[src]
impl<'a, 'b> DivRounding<&'a u128> for &'b u128
[src]
impl DivRounding for f32
[src]
impl<'a> DivRounding<&'a f32> for f32
[src]
impl<'a> DivRounding<f32> for &'a f32
[src]
impl<'a, 'b> DivRounding<&'a f32> for &'b f32
[src]
impl DivRounding for f64
[src]
impl<'a> DivRounding<&'a f64> for f64
[src]
impl<'a> DivRounding<f64> for &'a f64
[src]
impl<'a, 'b> DivRounding<&'a f64> for &'b f64
[src]
impl DivRounding<Integer> for i32
[src]
impl<'i> DivRounding<&'i Integer> for i32
[src]
type Output = DivRoundingFromI32Incomplete<'i>
fn div_trunc(self, rhs: &Integer) -> DivRoundingFromI32Incomplete
[src]
fn div_ceil(self, rhs: &Integer) -> DivRoundingFromI32Incomplete
[src]
fn div_floor(self, rhs: &Integer) -> DivRoundingFromI32Incomplete
[src]
fn div_euc(self, rhs: &Integer) -> DivRoundingFromI32Incomplete
[src]
impl<'t> DivRounding<Integer> for &'t i32
[src]
impl<'i, 't> DivRounding<&'i Integer> for &'t i32
[src]
type Output = DivRoundingFromI32Incomplete<'i>
fn div_trunc(self, rhs: &'i Integer) -> DivRoundingFromI32Incomplete<'i>
[src]
fn div_ceil(self, rhs: &'i Integer) -> DivRoundingFromI32Incomplete<'i>
[src]
fn div_floor(self, rhs: &'i Integer) -> DivRoundingFromI32Incomplete<'i>
[src]
fn div_euc(self, rhs: &'i Integer) -> DivRoundingFromI32Incomplete<'i>
[src]
impl DivRounding<Integer> for u32
[src]
impl<'i> DivRounding<&'i Integer> for u32
[src]
type Output = DivRoundingFromU32Incomplete<'i>
fn div_trunc(self, rhs: &Integer) -> DivRoundingFromU32Incomplete
[src]
fn div_ceil(self, rhs: &Integer) -> DivRoundingFromU32Incomplete
[src]
fn div_floor(self, rhs: &Integer) -> DivRoundingFromU32Incomplete
[src]
fn div_euc(self, rhs: &Integer) -> DivRoundingFromU32Incomplete
[src]
impl<'t> DivRounding<Integer> for &'t u32
[src]
impl<'i, 't> DivRounding<&'i Integer> for &'t u32
[src]
type Output = DivRoundingFromU32Incomplete<'i>
fn div_trunc(self, rhs: &'i Integer) -> DivRoundingFromU32Incomplete<'i>
[src]
fn div_ceil(self, rhs: &'i Integer) -> DivRoundingFromU32Incomplete<'i>
[src]
fn div_floor(self, rhs: &'i Integer) -> DivRoundingFromU32Incomplete<'i>
[src]
fn div_euc(self, rhs: &'i Integer) -> DivRoundingFromU32Incomplete<'i>
[src]
Implementors
impl DivRounding for Integer type Output = Integer;
impl<'i> DivRounding<&'i Integer> for Integer type Output = Integer;
impl<'i> DivRounding<Integer> for &'i Integer type Output = Integer;
impl<'i> DivRounding for &'i Integer type Output = DivRoundingIncomplete<'i>;
impl DivRounding<i32> for Integer type Output = Integer;
impl<'t> DivRounding<&'t i32> for Integer type Output = Integer;
impl<'i> DivRounding<i32> for &'i Integer type Output = DivRoundingI32Incomplete<'i>;
impl<'t, 'i> DivRounding<&'t i32> for &'i Integer type Output = DivRoundingI32Incomplete<'i>;
impl DivRounding<u32> for Integer type Output = Integer;
impl<'t> DivRounding<&'t u32> for Integer type Output = Integer;
impl<'i> DivRounding<u32> for &'i Integer type Output = DivRoundingU32Incomplete<'i>;
impl<'t, 'i> DivRounding<&'t u32> for &'i Integer type Output = DivRoundingU32Incomplete<'i>;