@@ -31,60 +31,62 @@ public class BitPackingTest {
3131
3232 @ Test
3333 public void packUnpackBits () {
34- for ( int bits = 1 ; bits <= 63 ; bits ++) {
35- final long mask = ( 1 << bits ) - 1 ;
36- long [] input = new long [ 8 ];
37- final long golden64 = Util . INVERSE_GOLDEN_U64 ;
38- long value = 0xaa55aa55aa55aa55L ; // arbitrary starting value
39- for (int i = 0 ; i < 8 ; ++i ) {
40- input [i ] = value & mask ;
41- value += golden64 ;
42- }
43- byte [] bytes = new byte [8 * Long .BYTES ];
44- int bitOffset = 0 ;
45- int bufOffset = 0 ;
46- for (int i = 0 ; i < 8 ; ++i ) {
47- BitPacking .packBits (input [i ], bits , bytes , bufOffset , bitOffset );
48- bufOffset += (bitOffset + bits ) >>> 3 ;
49- bitOffset = (bitOffset + bits ) & 7 ;
50- }
34+ long value = 0xaa55aa55aa55aa55L ; // arbitrary starting value
35+ for ( int n = 0 ; n < 100 ; n ++) {
36+ for ( int bits = 1 ; bits <= 63 ; bits ++) {
37+ final long mask = ( 1 << bits ) - 1 ;
38+ long [] input = new long [ 8 ];
39+ for (int i = 0 ; i < 8 ; ++i ) {
40+ input [i ] = value & mask ;
41+ value += Util . INVERSE_GOLDEN_U64 ;
42+ }
43+ byte [] bytes = new byte [8 * Long .BYTES ];
44+ int bitOffset = 0 ;
45+ int bufOffset = 0 ;
46+ for (int i = 0 ; i < 8 ; ++i ) {
47+ BitPacking .packBits (input [i ], bits , bytes , bufOffset , bitOffset );
48+ bufOffset += (bitOffset + bits ) >>> 3 ;
49+ bitOffset = (bitOffset + bits ) & 7 ;
50+ }
5151
52- long [] output = new long [8 ];
53- bitOffset = 0 ;
54- bufOffset = 0 ;
55- for (int i = 0 ; i < 8 ; ++i ) {
56- BitPacking .unpackBits (output , i , bits , bytes , bufOffset , bitOffset );
57- bufOffset += (bitOffset + bits ) >>> 3 ;
58- bitOffset = (bitOffset + bits ) & 7 ;
59- }
60- for (int i = 0 ; i < 8 ; ++i ) {
61- assertEquals (output [i ], input [i ]);
52+ long [] output = new long [8 ];
53+ bitOffset = 0 ;
54+ bufOffset = 0 ;
55+ for (int i = 0 ; i < 8 ; ++i ) {
56+ BitPacking .unpackBits (output , i , bits , bytes , bufOffset , bitOffset );
57+ bufOffset += (bitOffset + bits ) >>> 3 ;
58+ bitOffset = (bitOffset + bits ) & 7 ;
59+ }
60+ for (int i = 0 ; i < 8 ; ++i ) {
61+ assertEquals (output [i ], input [i ]);
62+ }
6263 }
6364 }
6465 }
6566
6667 @ Test
6768 public void packUnpackBlocks () {
68- for ( int bits = 1 ; bits <= 63 ; bits ++) {
69- if ( enablePrinting ) { System . out . println ( "bits " + bits ); }
70- final long mask = ( 1L << bits ) - 1 ;
71- long [] input = new long [ 8 ];
72- final long golden64 = Util . INVERSE_GOLDEN_U64 ;
73- long value = 0xaa55aa55aa55aa55L ; // arbitrary starting value
74- for (int i = 0 ; i < 8 ; ++i ) {
75- input [i ] = value & mask ;
76- value += golden64 ;
77- }
78- byte [] bytes = new byte [8 * Long .BYTES ];
79- BitPacking .packBitsBlock8 (input , 0 , bytes , 0 , bits );
80- if (enablePrinting ) { hexDump (bytes ); }
69+ long value = 0xaa55aa55aa55aa55L ; // arbitrary starting value
70+ for ( int n = 0 ; n < 100 ; n ++) {
71+ for ( int bits = 1 ; bits <= 63 ; bits ++) {
72+ if ( enablePrinting ) { System . out . println ( "bits " + bits ); }
73+ final long mask = ( 1L << bits ) - 1 ;
74+ long [] input = new long [ 8 ];
75+ for (int i = 0 ; i < 8 ; ++i ) {
76+ input [i ] = value & mask ;
77+ value += Util . INVERSE_GOLDEN_U64 ;
78+ }
79+ byte [] bytes = new byte [8 * Long .BYTES ];
80+ BitPacking .packBitsBlock8 (input , 0 , bytes , 0 , bits );
81+ if (enablePrinting ) { hexDump (bytes ); }
8182
82- long [] output = new long [8 ];
83- BitPacking .unpackBitsBlock8 (output , 0 , bytes , 0 , bits );
83+ long [] output = new long [8 ];
84+ BitPacking .unpackBitsBlock8 (output , 0 , bytes , 0 , bits );
8485
85- for (int i = 0 ; i < 8 ; ++i ) {
86- if (enablePrinting ) { System .out .println ("checking value " + i ); }
87- assertEquals (output [i ], input [i ]);
86+ for (int i = 0 ; i < 8 ; ++i ) {
87+ if (enablePrinting ) { System .out .println ("checking value " + i ); }
88+ assertEquals (output [i ], input [i ]);
89+ }
8890 }
8991 }
9092 }
0 commit comments