if(a<(exp16_table[i]<<16)) continue;
int64_t b= exp16_table[i]; if(a<(b<<16)) continue;
static uint64_t log16(uint64_t a){    int i;    int out=0;        assert(a >= (1<<16));    a<<=16;        for(i=19;i>=0;i--){        if(a<(exp16_table[i]<<16)) continue;        out |= 1<<i;        a = ((a<<16) + exp16_table[i]/2)/exp16_table[i];    }    return out;}