ojhMp5English function hashes
- int f
Convert bitfiled into minimal perfect hash
Implementation
int ojhMp5English(int f) {
// make ranks contiguous
int b = f >> 8;
b = (b & 0x000000FFFFFFFFFF) | ((b & 0x00FFF00000000000) >> 8);
int h = ojBinomial(52, 5);
int mask = 0x0008000000000000;
int m = 1;
for (int j = 0; j < 52; j += 1) {
if (0 != (b & mask)) {
h -= ojBinomial(j, m);
m += 1;
if (m > 5) break;
}
mask >>= 1;
}
return h;
}