use std::num::NonZeroU64;
#[inline(always)]
pub const fn div_ceil(me: usize, rhs: usize) -> usize {
let d = me / rhs;
let r = me % rhs;
if r > 0 && rhs > 0 {
d + 1
} else {
d
}
}
#[inline(always)]
pub const fn ilog2_u64(me: u64) -> u32 {
if cfg!(debug_assertions) && me == 0 {
panic!("log2 on zero")
}
u64::BITS - 1 - me.leading_zeros()
}
#[inline(always)]
pub const fn ilog2_non_zero_u64(me: NonZeroU64) -> u32 {
u64::BITS - 1 - me.leading_zeros()
}
pub const fn min(a: usize, b: usize) -> usize {
if a < b {
a
} else {
b
}
}
pub const fn max(a: usize, b: usize) -> usize {
if a > b {
a
} else {
b
}
}