Skip to main content

vyre_std/arith/
mod.rs

1//! Compositional arithmetic helpers built from core primitive semantics.
2//!
3//! Every op in this module is a pure composition of vyre core IR primitives
4//! (arithmetic + compare + select). Conform-proven byte-identical against
5//! the CPU reference.
6
7mod float;
8mod saturating;
9mod signed;
10mod unsigned;
11mod wrapping;
12
13pub use float::{lerp_f32, lerp_f64};
14pub use saturating::{
15    saturating_add_i16, saturating_add_i32, saturating_add_i64, saturating_add_i8,
16    saturating_add_u16, saturating_add_u32, saturating_add_u64, saturating_add_u8,
17    saturating_mul_i16, saturating_mul_i32, saturating_mul_i64, saturating_mul_i8,
18    saturating_mul_u16, saturating_mul_u32, saturating_mul_u64, saturating_mul_u8,
19    saturating_sub_i16, saturating_sub_i32, saturating_sub_i64, saturating_sub_i8,
20    saturating_sub_u16, saturating_sub_u32, saturating_sub_u64, saturating_sub_u8,
21};
22pub use signed::{
23    abs_diff_i16, abs_diff_i32, abs_diff_i64, abs_diff_i8, clamp_i16, clamp_i32, clamp_i64,
24    clamp_i8, max_i16, max_i32, max_i64, max_i8, midpoint_i16, midpoint_i32, midpoint_i64,
25    midpoint_i8, min_i16, min_i32, min_i64, min_i8,
26};
27pub use unsigned::{
28    abs_diff_u16, abs_diff_u32, abs_diff_u64, abs_diff_u8, clamp_u16, clamp_u32, clamp_u64,
29    clamp_u8, div_ceil_u32, div_ceil_u64, div_floor_u32, div_floor_u64, div_round_u16,
30    div_round_u32, div_round_u64, div_round_u8, max_u16, max_u32, max_u64, max_u8, midpoint_u16,
31    midpoint_u32, midpoint_u64, midpoint_u8, min_u16, min_u32, min_u64, min_u8,
32};
33pub use wrapping::{
34    wrapping_add_i16, wrapping_add_i32, wrapping_add_i64, wrapping_add_i8, wrapping_add_u16,
35    wrapping_add_u32, wrapping_add_u64, wrapping_add_u8, wrapping_mul_i16, wrapping_mul_i32,
36    wrapping_mul_i64, wrapping_mul_i8, wrapping_mul_u16, wrapping_mul_u32, wrapping_mul_u64,
37    wrapping_mul_u8, wrapping_sub_i16, wrapping_sub_i32, wrapping_sub_i64, wrapping_sub_i8,
38    wrapping_sub_u16, wrapping_sub_u32, wrapping_sub_u64, wrapping_sub_u8,
39};
40
41#[cfg(test)]
42mod tests;