protected static byte rho(long x, int k) {
        return (byte) (Long.numberOfLeadingZeros((x << k) | (1 << (k - 1))) + 1);
    }
@Test
    public void testRho() {
        assertEquals(17, LogLog.rho(0, 16));
        assertEquals(16, LogLog.rho(1, 16));
        assertEquals(15, LogLog.rho(2, 16));
        assertEquals(1, LogLog.rho(0x00008000, 16));

        assertEquals(23, LogLog.rho(0, 10));
        assertEquals(22, LogLog.rho(1, 10));
        assertEquals(21, LogLog.rho(2, 10));
        assertEquals(1, LogLog.rho(0x00200000, 10));
    }