#[inline]
pub const fn decimal_length9(v: u32) -> u32 {
debug_assert!(v < 1000000000);
if v >= 100000000 {
9
} else if v >= 10000000 {
8
} else if v >= 1000000 {
7
} else if v >= 100000 {
6
} else if v >= 10000 {
5
} else if v >= 1000 {
4
} else if v >= 100 {
3
} else if v >= 10 {
2
} else {
1
}
}
#[inline]
#[allow(dead_code)]
pub const fn log2_pow5(e: i32) -> i32 {
debug_assert!(e >= 0);
debug_assert!(e <= 3528);
((e as u32 * 1217359) >> 19) as i32
}
#[inline]
pub const fn pow5bits(e: i32) -> i32 {
debug_assert!(e >= 0);
debug_assert!(e <= 3528);
(((e as u32 * 1217359) >> 19) + 1) as i32
}
#[inline]
#[allow(dead_code)]
pub const fn ceil_log2_pow5(e: i32) -> i32 {
log2_pow5(e) + 1
}
#[inline]
pub const fn log10_pow2(e: i32) -> u32 {
debug_assert!(e >= 0);
debug_assert!(e <= 1650);
(e as u32 * 78913) >> 18
}
#[inline]
pub const fn log10_pow5(e: i32) -> u32 {
debug_assert!(e >= 0);
debug_assert!(e <= 2620);
(e as u32 * 732923) >> 20
}
#[cfg(test)]
mod tests {
#![allow(
clippy::approx_constant,
clippy::cast_possible_wrap,
clippy::cast_sign_loss,
clippy::excessive_precision,
clippy::unreadable_literal,
clippy::wildcard_imports
)]
include!("../unittests/common_test.rs");
}