Function tune::math::i32_div_u[][src]

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

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

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

Panics

Panics if denom == 0.

Examples

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

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

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