extern crate num_integer;
extern crate num_traits;
macro_rules! test_average {
($I:ident, $U:ident) => {
mod $I {
mod ceil {
use num_integer::Average;
#[ test]
fn same_sign() {
assert_eq!((14 as $I).average_ceil(&16 ), 15 as $I);
assert_eq!((14 as $I).average_ceil(&17 ), 16 as $I);
let max = $crate ::std::$I::MAX;
assert_eq!((max - 3 ).average_ceil(&(max - 1 )), max - 2 );
assert_eq!((max - 3 ).average_ceil(&(max - 2 )), max - 2 );
}
#[ test]
fn different_sign() {
assert_eq!((14 as $I).average_ceil(&-4 ), 5 as $I);
assert_eq!((14 as $I).average_ceil(&-5 ), 5 as $I);
let min = $crate ::std::$I::MIN;
let max = $crate ::std::$I::MAX;
assert_eq!(min.average_ceil(&max), 0 as $I);
}
}
mod floor {
use num_integer::Average;
#[ test]
fn same_sign() {
assert_eq!((14 as $I).average_floor(&16 ), 15 as $I);
assert_eq!((14 as $I).average_floor(&17 ), 15 as $I);
let max = $crate ::std::$I::MAX;
assert_eq!((max - 3 ).average_floor(&(max - 1 )), max - 2 );
assert_eq!((max - 3 ).average_floor(&(max - 2 )), max - 3 );
}
#[ test]
fn different_sign() {
assert_eq!((14 as $I).average_floor(&-4 ), 5 as $I);
assert_eq!((14 as $I).average_floor(&-5 ), 4 as $I);
let min = $crate ::std::$I::MIN;
let max = $crate ::std::$I::MAX;
assert_eq!(min.average_floor(&max), -1 as $I);
}
}
}
mod $U {
mod ceil {
use num_integer::Average;
#[ test]
fn bounded() {
assert_eq!((14 as $U).average_ceil(&16 ), 15 as $U);
assert_eq!((14 as $U).average_ceil(&17 ), 16 as $U);
}
#[ test]
fn overflow() {
let max = $crate ::std::$U::MAX;
assert_eq!((max - 3 ).average_ceil(&(max - 1 )), max - 2 );
assert_eq!((max - 3 ).average_ceil(&(max - 2 )), max - 2 );
}
}
mod floor {
use num_integer::Average;
#[ test]
fn bounded() {
assert_eq!((14 as $U).average_floor(&16 ), 15 as $U);
assert_eq!((14 as $U).average_floor(&17 ), 15 as $U);
}
#[ test]
fn overflow() {
let max = $crate ::std::$U::MAX;
assert_eq!((max - 3 ).average_floor(&(max - 1 )), max - 2 );
assert_eq!((max - 3 ).average_floor(&(max - 2 )), max - 3 );
}
}
}
};
}
test_average!(i8, u8);
test_average!(i16, u16);
test_average!(i32, u32);
test_average!(i64, u64);
#[ cfg(has_i128)]
test_average!(i128, u128);
test_average!(isize, usize);
Messung V0.5 in Prozent C=77 H=96 G=86
¤ Dauer der Verarbeitung: 0.9 Sekunden
(vorverarbeitet am 2026-06-18)
¤
*© Formatika GbR, Deutschland