1 #include "hashfunction.h"
3 /* Hash function for 64-bit integers */
4 unsigned int int64_hash(uint64_t key) {
5 key = (~key) + (key << 18); // key = (key << 18) - key - 1;
6 key = key ^ (key >> 31);
7 key = key * 21; // key = (key + (key << 2)) + (key << 4);
8 key = key ^ (key >> 11);
9 key = key + (key << 6);
10 key = key ^ (key >> 22);
11 return (unsigned int) key;