Expand description
Compositional arithmetic helpers (saturating, wrapping, clamp/lerp/etc.). Compositional arithmetic helpers built from core primitive semantics.
Every op in this module is a pure composition of vyre core IR primitives (arithmetic + compare + select). Conform-proven byte-identical against the CPU reference.
Functionsยง
- abs_
diff_ i8 - Absolute difference between two
i8values, returned asu8. - abs_
diff_ i16 - Absolute difference between two
i16values, returned asu16. - abs_
diff_ i32 - Absolute difference between two
i32values, returned asu32. - abs_
diff_ i64 - Absolute difference between two
i64values, returned asu64. - abs_
diff_ u8 - Absolute difference between two
u8values. - abs_
diff_ u16 - Absolute difference between two
u16values. - abs_
diff_ u32 - Absolute difference between two
u32values. - abs_
diff_ u64 - Absolute difference between two
u64values. - clamp_
i8 - Clamp
xto the inclusive range[lo, hi]fori8. - clamp_
i16 - Clamp
xto the inclusive range[lo, hi]fori16. - clamp_
i32 - Clamp
xto the inclusive range[lo, hi]fori32. - clamp_
i64 - Clamp
xto the inclusive range[lo, hi]fori64. - clamp_
u8 - Clamp
xto the inclusive range[lo, hi]foru8. - clamp_
u16 - Clamp
xto the inclusive range[lo, hi]foru16. - clamp_
u32 - Clamp
xto the inclusive range[lo, hi]foru32. - clamp_
u64 - Clamp
xto the inclusive range[lo, hi]foru64. - div_
ceil_ u32 - Ceiling division for unsigned
u32. - div_
ceil_ u64 - Ceiling division for unsigned
u64. - div_
floor_ u32 - Floor division for unsigned
u32. - div_
floor_ u64 - Floor division for unsigned
u64. - div_
round_ u8 - Round-to-nearest-half-up division for
u8. - div_
round_ u16 - Round-to-nearest-half-up division for
u16. - div_
round_ u32 - Round-to-nearest-half-up division for
u32. - div_
round_ u64 - Round-to-nearest-half-up division for
u64. - lerp_
f32 crate::arith::clamp_u32/ their own bound.- lerp_
f64 - Linear interpolation for
f64. - max_i8
- Maximum of two
i8values. - max_i16
- Maximum of two
i16values. - max_i32
- Maximum of two
i32values. - max_i64
- Maximum of two
i64values. - max_u8
- Maximum of two
u8values. - max_u16
- Maximum of two
u16values. - max_u32
- Maximum of two
u32values. - max_u64
- Maximum of two
u64values. - midpoint_
i8 - Overflow-safe midpoint for
i8(rounds toward negative infinity). - midpoint_
i16 - Overflow-safe midpoint for
i16. - midpoint_
i32 - Overflow-safe midpoint for
i32. - midpoint_
i64 - Overflow-safe midpoint for
i64. - midpoint_
u8 - Overflow-safe midpoint for
u8. - midpoint_
u16 - Overflow-safe midpoint for
u16. - midpoint_
u32 - Overflow-safe midpoint for
u32:a/2 + b/2 + (a & b & 1). - midpoint_
u64 - Overflow-safe midpoint for
u64. - min_i8
- min_i16
- Minimum of two
i16values. - min_i32
- Minimum of two
i32values. - min_i64
- Minimum of two
i64values. - min_u8
- Minimum of two
u8values. - min_u16
- Minimum of two
u16values. - min_u32
- Minimum of two
u32values. - min_u64
- Minimum of two
u64values. - saturating_
add_ i8 - Saturating addition for
i8. - saturating_
add_ i16 - Saturating addition for
i16. - saturating_
add_ i32 - Saturating addition for
i32. - saturating_
add_ i64 - Saturating addition for
i64. - saturating_
add_ u8 - Saturating addition for
u8. - saturating_
add_ u16 - Saturating addition for
u16. - saturating_
add_ u32 - Saturating addition for
u32. - saturating_
add_ u64 - Saturating addition for
u64. - saturating_
mul_ i8 - Saturating multiplication for
i8. - saturating_
mul_ i16 - Saturating multiplication for
i16. - saturating_
mul_ i32 - Saturating multiplication for
i32. - saturating_
mul_ i64 - Saturating multiplication for
i64. - saturating_
mul_ u8 - Saturating multiplication for
u8. - saturating_
mul_ u16 - Saturating multiplication for
u16. - saturating_
mul_ u32 - Saturating multiplication for
u32. - saturating_
mul_ u64 - Saturating multiplication for
u64. - saturating_
sub_ i8 - Saturating subtraction for
i8. - saturating_
sub_ i16 - Saturating subtraction for
i16. - saturating_
sub_ i32 - Saturating subtraction for
i32. - saturating_
sub_ i64 - Saturating subtraction for
i64. - saturating_
sub_ u8 - Saturating subtraction for
u8. - saturating_
sub_ u16 - Saturating subtraction for
u16. - saturating_
sub_ u32 - Saturating subtraction for
u32. - saturating_
sub_ u64 - Saturating subtraction for
u64. - wrapping_
add_ i8 - Wrapping addition for
i8. - wrapping_
add_ i16 - Wrapping addition for
i16. - wrapping_
add_ i32 - Wrapping addition for
i32. - wrapping_
add_ i64 - Wrapping addition for
i64. - wrapping_
add_ u8 - Wrapping addition for
u8(mod 2^8). - wrapping_
add_ u16 - Wrapping addition for
u16(mod 2^16). - wrapping_
add_ u32 - Wrapping addition for
u32(mod 2^32). - wrapping_
add_ u64 - Wrapping addition for
u64(mod 2^64). - wrapping_
mul_ i8 - Wrapping multiplication for
i8. - wrapping_
mul_ i16 - Wrapping multiplication for
i16. - wrapping_
mul_ i32 - Wrapping multiplication for
i32. - wrapping_
mul_ i64 - Wrapping multiplication for
i64. - wrapping_
mul_ u8 - Wrapping multiplication for
u8. - wrapping_
mul_ u16 - Wrapping multiplication for
u16. - wrapping_
mul_ u32 - Wrapping multiplication for
u32. - wrapping_
mul_ u64 - Wrapping multiplication for
u64. - wrapping_
sub_ i8 - Wrapping subtraction for
i8. - wrapping_
sub_ i16 - Wrapping subtraction for
i16. - wrapping_
sub_ i32 - Wrapping subtraction for
i32. - wrapping_
sub_ i64 - Wrapping subtraction for
i64. - wrapping_
sub_ u8 - Wrapping subtraction for
u8. - wrapping_
sub_ u16 - Wrapping subtraction for
u16. - wrapping_
sub_ u32 - Wrapping subtraction for
u32. - wrapping_
sub_ u64 - Wrapping subtraction for
u64.