aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe-php-shim/src/math.rs
blob: ee9a76d481737daebf49594c9d26fad81f8eee92 (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
pub fn max(a: i64, b: i64) -> i64 {
    a.max(b)
}

pub fn min(a: i64, b: i64) -> i64 {
    a.min(b)
}

pub fn abs(v: i64) -> i64 {
    v.abs()
}

pub fn floor(v: f64) -> f64 {
    v.floor()
}

pub fn ceil(v: f64) -> f64 {
    v.ceil()
}

pub fn round(v: f64, precision: i64) -> f64 {
    // PHP's default mode is PHP_ROUND_HALF_UP (round half away from zero),
    // which matches Rust's f64::round.
    let factor = 10f64.powi(precision as i32);
    (v * factor).round() / factor
}

pub fn intdiv(a: i64, b: i64) -> i64 {
    a / b
}