vyre-std 0.1.0

Vyre standard library: GPU DFA assembly pipeline, Aho-Corasick construction, and compositional arithmetic helpers
Documentation
//! vyre-std example: saturating vs wrapping arithmetic on overflow.
//!
//! Run with `cargo run -p vyre-std --example std_arith_overflow`.

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)
    );
}