aboutsummaryrefslogtreecommitdiff
path: root/std/math.zig
blob: b44a4d5defe59dd4069389d16ba02f67ccaa057d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
pub enum Cmp {
    Equal,
    Greater,
    Less,
}

pub fn min(x: var, y: var) -> @typeOf(x + y) {
    if (x < y) x else y
}

pub fn max(x: var, y: var) -> @typeOf(x + y) {
    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
}
pub fn shlOverflow(inline T: type, a: T, b: T) -> %T {
    var answer: T = undefined;
    if (@shlWithOverflow(T, a, b, &answer)) error.Overflow else answer
}