File tree Expand file tree Collapse file tree 1 file changed +8
-7
lines changed Expand file tree Collapse file tree 1 file changed +8
-7
lines changed Original file line number Diff line number Diff line change @@ -11,12 +11,13 @@ static MARKER_TABLES: Lazy<HashMap<u8, Vec<u128>>> = Lazy::new(|| {
11
11
let mut m = HashMap :: new ( ) ;
12
12
for k in 1 ..10u8 {
13
13
let mut table = vec ! [ 0u128 ; MARKER_TABLE_SIZE ] ;
14
- let mut table_size = table. len ( ) ;
15
- if k == 1 {
16
- table_size = 128 ;
14
+ let table_size = if k == 1 {
15
+ 128
17
16
} else if k == 2 {
18
- table_size = 8128 ;
19
- }
17
+ 8128
18
+ } else {
19
+ table. len ( )
20
+ } ;
20
21
21
22
table[ 0 ] = ( ( 1 << k) - 1 ) as u128 ;
22
23
for i in 1 ..table_size {
@@ -34,7 +35,7 @@ pub fn rank(value: usize, k: u8) -> u128 {
34
35
// a bad value (0) if value > (128 choose k) and k == 1 or 2
35
36
if value as usize >= MARKER_TABLE_SIZE {
36
37
let mut marker = MARKER_TABLES [ & k] [ MARKER_TABLE_SIZE - 1 ] ;
37
- for _ in 0 ..( value - MARKER_TABLE_SIZE ) {
38
+ for _ in 1 ..( value - MARKER_TABLE_SIZE ) {
38
39
marker = next_rank ( marker) ;
39
40
}
40
41
marker
@@ -105,7 +106,7 @@ pub fn choose(n: u64, k: u8) -> u64 {
105
106
#[ inline]
106
107
fn next_rank ( marker : u128 ) -> u128 {
107
108
if marker == 0 {
108
- unreachable ! ( "WOOPS " ) ;
109
+ unreachable ! ( "Got next_rank called with marker == 0 " ) ;
109
110
}
110
111
let t = marker | ( marker - 1 ) ;
111
112
( t + 1 ) | ( ( ( !t & ( t + 1 ) ) - 1 ) >> ( marker. trailing_zeros ( ) + 1 ) )
You can’t perform that action at this time.
0 commit comments