#[must_use]
#[inline]
pub fn min_i8(a: i8, b: i8) -> i8 {
if a < b {
a
} else {
b
}
}
#[must_use]
#[inline]
pub fn min_i16(a: i16, b: i16) -> i16 {
if a < b {
a
} else {
b
}
}
#[must_use]
#[inline]
pub fn min_i32(a: i32, b: i32) -> i32 {
if a < b {
a
} else {
b
}
}
#[must_use]
#[inline]
pub fn min_i64(a: i64, b: i64) -> i64 {
if a < b {
a
} else {
b
}
}
#[must_use]
#[inline]
pub fn max_i8(a: i8, b: i8) -> i8 {
if a > b {
a
} else {
b
}
}
#[must_use]
#[inline]
pub fn max_i16(a: i16, b: i16) -> i16 {
if a > b {
a
} else {
b
}
}
#[must_use]
#[inline]
pub fn max_i32(a: i32, b: i32) -> i32 {
if a > b {
a
} else {
b
}
}
#[must_use]
#[inline]
pub fn max_i64(a: i64, b: i64) -> i64 {
if a > b {
a
} else {
b
}
}
#[must_use]
#[inline]
pub fn clamp_i8(x: i8, lo: i8, hi: i8) -> i8 {
assert!(lo <= hi, "Fix: clamp_i8 called with lo > hi");
min_i8(max_i8(x, lo), hi)
}
#[must_use]
#[inline]
pub fn clamp_i16(x: i16, lo: i16, hi: i16) -> i16 {
assert!(lo <= hi, "Fix: clamp_i16 called with lo > hi");
min_i16(max_i16(x, lo), hi)
}
#[must_use]
#[inline]
pub fn clamp_i32(x: i32, lo: i32, hi: i32) -> i32 {
assert!(lo <= hi, "Fix: clamp_i32 called with lo > hi");
min_i32(max_i32(x, lo), hi)
}
#[must_use]
#[inline]
pub fn clamp_i64(x: i64, lo: i64, hi: i64) -> i64 {
assert!(lo <= hi, "Fix: clamp_i64 called with lo > hi");
min_i64(max_i64(x, lo), hi)
}
#[must_use]
#[inline]
pub fn midpoint_i8(a: i8, b: i8) -> i8 {
((i16::from(a) + i16::from(b)).div_euclid(2)) as i8
}
#[must_use]
#[inline]
pub fn midpoint_i16(a: i16, b: i16) -> i16 {
((i32::from(a) + i32::from(b)).div_euclid(2)) as i16
}
#[must_use]
#[inline]
pub fn midpoint_i32(a: i32, b: i32) -> i32 {
((i64::from(a) + i64::from(b)).div_euclid(2)) as i32
}
#[must_use]
#[inline]
pub fn midpoint_i64(a: i64, b: i64) -> i64 {
((i128::from(a) + i128::from(b)).div_euclid(2)) as i64
}
#[must_use]
#[inline]
pub fn abs_diff_i8(a: i8, b: i8) -> u8 {
(i16::from(a) - i16::from(b)).unsigned_abs() as u8
}
#[must_use]
#[inline]
pub fn abs_diff_i16(a: i16, b: i16) -> u16 {
(i32::from(a) - i32::from(b)).unsigned_abs() as u16
}
#[must_use]
#[inline]
pub fn abs_diff_i32(a: i32, b: i32) -> u32 {
(i64::from(a) - i64::from(b)).unsigned_abs() as u32
}
#[must_use]
#[inline]
pub fn abs_diff_i64(a: i64, b: i64) -> u64 {
(i128::from(a) - i128::from(b)).unsigned_abs() as u64
}