• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 use crate::digit_table::*;
2 use core::ptr;
3 
4 #[cfg_attr(feature = "no-panic", inline)]
write_exponent3(mut k: isize, mut result: *mut u8) -> usize5 pub unsafe fn write_exponent3(mut k: isize, mut result: *mut u8) -> usize {
6     let sign = k < 0;
7     if sign {
8         *result = b'-';
9         result = result.offset(1);
10         k = -k;
11     }
12 
13     debug_assert!(k < 1000);
14     if k >= 100 {
15         *result = b'0' + (k / 100) as u8;
16         k %= 100;
17         let d = DIGIT_TABLE.get_unchecked(k as usize * 2);
18         ptr::copy_nonoverlapping(d, result.offset(1), 2);
19         sign as usize + 3
20     } else if k >= 10 {
21         let d = DIGIT_TABLE.get_unchecked(k as usize * 2);
22         ptr::copy_nonoverlapping(d, result, 2);
23         sign as usize + 2
24     } else {
25         *result = b'0' + k as u8;
26         sign as usize + 1
27     }
28 }
29 
30 #[cfg_attr(feature = "no-panic", inline)]
write_exponent2(mut k: isize, mut result: *mut u8) -> usize31 pub unsafe fn write_exponent2(mut k: isize, mut result: *mut u8) -> usize {
32     let sign = k < 0;
33     if sign {
34         *result = b'-';
35         result = result.offset(1);
36         k = -k;
37     }
38 
39     debug_assert!(k < 100);
40     if k >= 10 {
41         let d = DIGIT_TABLE.get_unchecked(k as usize * 2);
42         ptr::copy_nonoverlapping(d, result, 2);
43         sign as usize + 2
44     } else {
45         *result = b'0' + k as u8;
46         sign as usize + 1
47     }
48 }
49