zig/std/math.zig
2016-08-16 22:42:50 -07:00

28 lines
695 B
Zig

pub enum Cmp {
Equal,
Greater,
Less,
}
pub fn min(inline T: type, x: T, y: T) -> T {
if (x < y) x else y
}
pub fn max(inline T: type, x: T, y: T) -> T {
if (x > y) x else y
}
pub error Overflow;
pub fn mulOverflow(inline T: type, a: T, b: T) -> %T {
var answer: T = undefined;
if (@mulWithOverflow(T, a, b, &answer)) error.Overflow else answer
}
pub fn addOverflow(inline T: type, a: T, b: T) -> %T {
var answer: T = undefined;
if (@addWithOverflow(T, a, b, &answer)) error.Overflow else answer
}
pub fn subOverflow(inline T: type, a: T, b: T) -> %T {
var answer: T = undefined;
if (@subWithOverflow(T, a, b, &answer)) error.Overflow else answer
}