use vyre_std::arith::{
clamp_u32, div_ceil_u32, div_round_u32, lerp_f32, midpoint_u32, saturating_add_u32,
saturating_mul_i16, wrapping_add_u32, wrapping_mul_u32,
};
fn main() {
let max = u32::MAX;
println!("u32::MAX = {max}");
println!("saturating_add(MAX, 1) = {}", saturating_add_u32(max, 1));
println!("wrapping_add (MAX, 1) = {}", wrapping_add_u32(max, 1));
println!(
"saturating_mul_i16(MAX, 2) = {}",
saturating_mul_i16(i16::MAX, 2)
);
println!("wrapping_mul (MAX, 2) = {}", wrapping_mul_u32(max, 2));
println!();
println!(
"midpoint_u32(MAX-1, MAX) = {} (overflow-safe)",
midpoint_u32(max - 1, max)
);
println!("clamp_u32(15, 0, 10) = {}", clamp_u32(15, 0, 10));
println!("clamp_u32(5, 0, 10) = {}", clamp_u32(5, 0, 10));
println!();
println!("div_ceil_u32(10, 3) = {}", div_ceil_u32(10, 3));
println!("div_round_u32(7, 3) = {} (half-up)", div_round_u32(7, 3));
println!();
println!("lerp_f32(0, 10, 0.5) = {}", lerp_f32(0.0, 10.0, 0.5));
println!(
"lerp_f32(0, 10, 1.5) = {} (extrapolation)",
lerp_f32(0.0, 10.0, 1.5)
);
}