@@ -7,27 +7,27 @@ mod unchecked {
7
7
// in the bits above the low 8 bits.
8
8
9
9
// Adding c1 to val gives 10 in the top bits for val < 10, 11 for val >= 10
10
- let c1 = 0b11_00000000 - 10 ; // 758
10
+ const C1 : u32 = 0b11_00000000 - 10 ; // 758
11
11
// Adding c2 to val gives 01 in the top bits for val < 100, 10 for val >= 100
12
- let c2 = 0b10_00000000 - 100 ; // 412
12
+ const C2 : u32 = 0b10_00000000 - 100 ; // 412
13
13
14
14
// Value of top bits:
15
15
// +c1 +c2 1&2
16
16
// 0..=9 10 01 00 = 0
17
17
// 10..=99 11 01 01 = 1
18
18
// 100..=255 11 10 10 = 2
19
- ( ( val + c1 ) & ( val + c2 ) ) >> 8
19
+ ( ( val + C1 ) & ( val + C2 ) ) >> 8
20
20
}
21
21
22
22
// 0 < val < 100_000
23
23
const fn less_than_5 ( val : u32 ) -> u32 {
24
24
// Similar to u8, when adding one of these constants to val,
25
25
// we get two possible bit patterns above the low 17 bits,
26
26
// depending on whether val is below or above the threshold.
27
- let c1 = 0b011_00000000000000000 - 10 ; // 393206
28
- let c2 = 0b100_00000000000000000 - 100 ; // 524188
29
- let c3 = 0b111_00000000000000000 - 1000 ; // 916504
30
- let c4 = 0b100_00000000000000000 - 10000 ; // 514288
27
+ const C1 : u32 = 0b011_00000000000000000 - 10 ; // 393206
28
+ const C2 : u32 = 0b100_00000000000000000 - 100 ; // 524188
29
+ const C3 : u32 = 0b111_00000000000000000 - 1000 ; // 916504
30
+ const C4 : u32 = 0b100_00000000000000000 - 10000 ; // 514288
31
31
32
32
// Value of top bits:
33
33
// +c1 +c2 1&2 +c3 +c4 3&4 ^
@@ -36,7 +36,7 @@ mod unchecked {
36
36
// 100..=999 011 100 000 110 011 010 010 = 2
37
37
// 1000..=9999 011 100 000 111 011 011 011 = 3
38
38
// 10000..=99999 011 100 000 111 100 100 100 = 4
39
- ( ( ( val + c1 ) & ( val + c2 ) ) ^ ( ( val + c3 ) & ( val + c4 ) ) ) >> 17
39
+ ( ( ( val + C1 ) & ( val + C2 ) ) ^ ( ( val + C3 ) & ( val + C4 ) ) ) >> 17
40
40
}
41
41
42
42
// 0 < val <= u16::MAX
0 commit comments