use num_traits::{FromPrimitive, PrimInt};
#[inline(always)]
pub fn round_halfup(x: f64) -> f64 {
if x < 0.0_f64 {
(x + 0.5).floor()
} else {
(x + 0.499_999_999_999_999_94).floor()
}
}
#[inline(always)]
pub fn ceil_n<T: PrimInt + FromPrimitive>(x: T, n: usize) -> T {
let n_minus_1 = T::from_usize(n - 1).unwrap();
(x + n_minus_1) & !n_minus_1
}