Function tune::math::i32_rem_u[][src]

pub fn i32_rem_u<D: U32Denom>(numer: i32, denom: D) -> D

Returns the euclidean remainder of a signed numer and an unsigned denom.

The result is an unsigned integer between 0 and denom-1. The function returns valid results for every (numer, denom) pair where denom != 0.

Panics

Panics if denom == 0.

Examples

assert_eq!(math::i32_rem_u(0, 5u32), 0);
assert_eq!(math::i32_rem_u(1, 5u32), 1);
assert_eq!(math::i32_rem_u(4, 5u32), 4);
assert_eq!(math::i32_rem_u(5, 5u32), 0);
assert_eq!(math::i32_rem_u(6, 5u32), 1);

// When numer is negative
assert_eq!(math::i32_rem_u(-1, 5u32), 4);
assert_eq!(math::i32_rem_u(-4, 5u32), 1);
assert_eq!(math::i32_rem_u(-5, 5u32), 0);
assert_eq!(math::i32_rem_u(-6, 5u32), 4);

// Integer limits
assert_eq!(math::i32_rem_u(i32::MIN, u32::MAX), i32::MAX as u32);
assert_eq!(math::i32_rem_u(-1, u32::MAX), u32::MAX - 1);
assert_eq!(math::i32_rem_u(1, u32::MAX), 1);
assert_eq!(math::i32_rem_u(i32::MAX, u32::MAX), i32::MAX as u32);