eca9cafa56ccd62826608a9f58c8870a63ce6e62
[c11tester.git] / hashfunction.cc
1 #include "hashfunction.h"
2
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;
12 }