Expand description
RoundToMultipleOfPowerOf2
and
RoundToMultipleOfPowerOf2Assign
, traits for
rounding a number to a multiple of a power of 2.
§round_to_multiple_of_power_of_2
use malachite_base::num::arithmetic::traits::RoundToMultipleOfPowerOf2;
use malachite_base::rounding_modes::RoundingMode;
use std::cmp::Ordering;
assert_eq!(10u8.round_to_multiple_of_power_of_2(2, RoundingMode::Floor), (8, Ordering::Less));
assert_eq!(
10u8.round_to_multiple_of_power_of_2(2, RoundingMode::Ceiling),
(12, Ordering::Greater)
);
assert_eq!(10u8.round_to_multiple_of_power_of_2(2, RoundingMode::Down), (8, Ordering::Less));
assert_eq!(10u8.round_to_multiple_of_power_of_2(2, RoundingMode::Up), (12, Ordering::Greater));
assert_eq!(
10u8.round_to_multiple_of_power_of_2(2, RoundingMode::Nearest),
(8, Ordering::Less)
);
assert_eq!(
12u8.round_to_multiple_of_power_of_2(2, RoundingMode::Exact),
(12, Ordering::Equal)
);
assert_eq!(
(-10i8).round_to_multiple_of_power_of_2(2, RoundingMode::Floor),
(-12, Ordering::Less)
);
assert_eq!(
(-10i8).round_to_multiple_of_power_of_2(2, RoundingMode::Ceiling),
(-8, Ordering::Greater)
);
assert_eq!(
(-10i8).round_to_multiple_of_power_of_2(2, RoundingMode::Down),
(-8, Ordering::Greater)
);
assert_eq!(
(-10i8).round_to_multiple_of_power_of_2(2, RoundingMode::Up),
(-12, Ordering::Less)
);
assert_eq!(
(-10i8).round_to_multiple_of_power_of_2(2, RoundingMode::Nearest),
(-8, Ordering::Greater)
);
assert_eq!(
(-12i8).round_to_multiple_of_power_of_2(2, RoundingMode::Exact),
(-12, Ordering::Equal)
);
§round_to_multiple_of_power_of_2_assign
use malachite_base::num::arithmetic::traits::RoundToMultipleOfPowerOf2Assign;
use malachite_base::rounding_modes::RoundingMode;
use std::cmp::Ordering;
let mut x = 10u8;
assert_eq!(x.round_to_multiple_of_power_of_2_assign(2, RoundingMode::Floor), Ordering::Less);
assert_eq!(x, 8);
let mut x = 10u8;
assert_eq!(
x.round_to_multiple_of_power_of_2_assign(2, RoundingMode::Ceiling),
Ordering::Greater
);
assert_eq!(x, 12);
let mut x = 10u8;
assert_eq!(x.round_to_multiple_of_power_of_2_assign(2, RoundingMode::Down), Ordering::Less);
assert_eq!(x, 8);
let mut x = 10u8;
assert_eq!(x.round_to_multiple_of_power_of_2_assign(2, RoundingMode::Up), Ordering::Greater);
assert_eq!(x, 12);
let mut x = 10u8;
assert_eq!(x.round_to_multiple_of_power_of_2_assign(2, RoundingMode::Nearest), Ordering::Less);
assert_eq!(x, 8);
let mut x = 12u8;
assert_eq!(x.round_to_multiple_of_power_of_2_assign(2, RoundingMode::Exact), Ordering::Equal);
assert_eq!(x, 12);
let mut x = -10i8;
assert_eq!(x.round_to_multiple_of_power_of_2_assign(2, RoundingMode::Floor), Ordering::Less);
assert_eq!(x, -12);
let mut x = -10i8;
assert_eq!(
x.round_to_multiple_of_power_of_2_assign(2, RoundingMode::Ceiling),
Ordering::Greater
);
assert_eq!(x, -8);
let mut x = -10i8;
assert_eq!(x.round_to_multiple_of_power_of_2_assign(2, RoundingMode::Down), Ordering::Greater);
assert_eq!(x, -8);
let mut x = -10i8;
assert_eq!(x.round_to_multiple_of_power_of_2_assign(2, RoundingMode::Up), Ordering::Less);
assert_eq!(x, -12);
let mut x = -10i8;
assert_eq!(
x.round_to_multiple_of_power_of_2_assign(2, RoundingMode::Nearest),
Ordering::Greater
);
assert_eq!(x, -8);
let mut x = -12i8;
assert_eq!(x.round_to_multiple_of_power_of_2_assign(2, RoundingMode::Exact), Ordering::Equal);
assert_eq!(x, -12);