Coverage Report

Created: 2025-07-18 06:46

/src/ryu/src/pretty/exponent.rs
Line
Count
Source (jump to first uncovered line)
1
use crate::digit_table::DIGIT_TABLE;
2
use core::ptr;
3
4
#[cfg_attr(feature = "no-panic", inline)]
5
1.16k
pub unsafe fn write_exponent3(mut k: isize, mut result: *mut u8) -> usize {
6
1.16k
    let sign = k < 0;
7
1.16k
    if sign {
8
970
        *result = b'-';
9
970
        result = result.offset(1);
10
970
        k = -k;
11
970
    }
12
13
1.16k
    debug_assert!(k < 1000);
14
1.16k
    if k >= 100 {
15
1.03k
        *result = b'0' + (k / 100) as u8;
16
1.03k
        k %= 100;
17
1.03k
        let d = DIGIT_TABLE.as_ptr().offset(k * 2);
18
1.03k
        ptr::copy_nonoverlapping(d, result.offset(1), 2);
19
1.03k
        sign as usize + 3
20
123
    } else if k >= 10 {
21
117
        let d = DIGIT_TABLE.as_ptr().offset(k * 2);
22
117
        ptr::copy_nonoverlapping(d, result, 2);
23
117
        sign as usize + 2
24
    } else {
25
6
        *result = b'0' + k as u8;
26
6
        sign as usize + 1
27
    }
28
1.16k
}
29
30
#[cfg_attr(feature = "no-panic", inline)]
31
222
pub unsafe fn write_exponent2(mut k: isize, mut result: *mut u8) -> usize {
32
222
    let sign = k < 0;
33
222
    if sign {
34
116
        *result = b'-';
35
116
        result = result.offset(1);
36
116
        k = -k;
37
116
    }
38
39
222
    debug_assert!(k < 100);
40
222
    if k >= 10 {
41
211
        let d = DIGIT_TABLE.as_ptr().offset(k * 2);
42
211
        ptr::copy_nonoverlapping(d, result, 2);
43
211
        sign as usize + 2
44
    } else {
45
11
        *result = b'0' + k as u8;
46
11
        sign as usize + 1
47
    }
48
222
}