crate::ix!();
#[instrument(level = "trace")]
pub fn count_bits(x: u64) -> u64 {
info!("count_bits invoked with x={}", x);
let count = if x == 0 {
0
} else {
64 - x.leading_zeros() as u64
};
debug!("count_bits returning {}", count);
count
}
#[cfg(test)]
mod test_count_bits {
use super::*;
#[traced_test]
fn test_various_counts() {
assert_eq!(count_bits(0), 0);
assert_eq!(count_bits(1), 1);
assert_eq!(count_bits(2), 2);
assert_eq!(count_bits(7), 3);
assert_eq!(count_bits(8), 4);
assert_eq!(count_bits(u64::MAX), 64);
}
}