Coverage Report

Created: 2025-06-23 13:53

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/build/cargo-vendor-dir/libm-0.2.15/src/math/modff.rs
Line
Count
Source
1
#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
2
0
pub fn modff(x: f32) -> (f32, f32) {
3
0
    let rv2: f32;
4
0
    let mut u: u32 = x.to_bits();
5
0
    let mask: u32;
6
0
    let e = (((u >> 23) & 0xff) as i32) - 0x7f;
7
0
8
0
    /* no fractional part */
9
0
    if e >= 23 {
10
0
        rv2 = x;
11
0
        if e == 0x80 && (u << 9) != 0 {
12
            /* nan */
13
0
            return (x, rv2);
14
0
        }
15
0
        u &= 0x80000000;
16
0
        return (f32::from_bits(u), rv2);
17
0
    }
18
0
    /* no integral part */
19
0
    if e < 0 {
20
0
        u &= 0x80000000;
21
0
        rv2 = f32::from_bits(u);
22
0
        return (x, rv2);
23
0
    }
24
0
25
0
    mask = 0x007fffff >> e;
26
0
    if (u & mask) == 0 {
27
0
        rv2 = x;
28
0
        u &= 0x80000000;
29
0
        return (f32::from_bits(u), rv2);
30
0
    }
31
0
    u &= !mask;
32
0
    rv2 = f32::from_bits(u);
33
0
    return (x - rv2, rv2);
34
0
}