Coverage Report

Created: 2025-11-16 07:04

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/rust/registry/src/index.crates.io-1949cf8c6b5b557f/libm-0.2.15/src/math/modf.rs
Line
Count
Source
1
#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
2
0
pub fn modf(x: f64) -> (f64, f64) {
3
    let rv2: f64;
4
0
    let mut u = x.to_bits();
5
    let mask: u64;
6
0
    let e = (((u >> 52) & 0x7ff) as i32) - 0x3ff;
7
8
    /* no fractional part */
9
0
    if e >= 52 {
10
0
        rv2 = x;
11
0
        if e == 0x400 && (u << 12) != 0 {
12
            /* nan */
13
0
            return (x, rv2);
14
0
        }
15
0
        u &= 1 << 63;
16
0
        return (f64::from_bits(u), rv2);
17
0
    }
18
19
    /* no integral part*/
20
0
    if e < 0 {
21
0
        u &= 1 << 63;
22
0
        rv2 = f64::from_bits(u);
23
0
        return (x, rv2);
24
0
    }
25
26
0
    mask = ((!0) >> 12) >> e;
27
0
    if (u & mask) == 0 {
28
0
        rv2 = x;
29
0
        u &= 1 << 63;
30
0
        return (f64::from_bits(u), rv2);
31
0
    }
32
0
    u &= !mask;
33
0
    rv2 = f64::from_bits(u);
34
0
    return (x - rv2, rv2);
35
0
}