aboutsummaryrefslogtreecommitdiff
path: root/src/hash/murmur.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/hash/murmur.c')
-rw-r--r--src/hash/murmur.c116
1 files changed, 58 insertions, 58 deletions
diff --git a/src/hash/murmur.c b/src/hash/murmur.c
index d191d75..c7ad143 100644
--- a/src/hash/murmur.c
+++ b/src/hash/murmur.c
@@ -3,70 +3,70 @@
#include <stdint.h>
uint32_t murmur1_32(uint8_t* in, size_t len, uint32_t seed){
- uint32_t m = 0xc6a4a793;
- uint32_t hash = seed ^ (len * m);
-
- for(;len >= 4; len-=4){
- hash+=*(uint32_t*)in;
- hash*=m;
- hash^=hash >> 16;
-
- in+=4;
- }
-
- switch(len){
- case 3:
- hash+=in[2]<<16;
- case 2:
- hash+=in[1]<<8;
- case 1:
- hash+=in[0];
- hash*=m;
- hash^=hash>>16;
- break;
- }
+ uint32_t m = 0xc6a4a793;
+ uint32_t hash = seed ^ (len * m);
+ for(;len >= 4; len-=4){
+ hash+=*(uint32_t*)in;
hash*=m;
- hash^=hash>>10;
- hash*=m;
- hash^=hash>>17;
-
- return hash;
+ hash^=hash >> 16;
+
+ in+=4;
+ }
+
+ switch(len){
+ case 3:
+ hash+=in[2]<<16;
+ case 2:
+ hash+=in[1]<<8;
+ case 1:
+ hash+=in[0];
+ hash*=m;
+ hash^=hash>>16;
+ break;
+ }
+
+ hash*=m;
+ hash^=hash>>10;
+ hash*=m;
+ hash^=hash>>17;
+
+ return hash;
}
uint32_t murmur2_32(uint8_t* in, size_t len, uint32_t seed){
- uint32_t m = 0x5bd1e995;
- uint32_t hash = seed ^ len;
-
- for(;len >= 4; len-=4){
- uint32_t k = *(uint32_t*)in;
-
- k*=m;
- k^=k>>24;
- k*=m;
-
- hash*=m;
- hash^=k;
-
- in+=4;
- }
-
- switch(len){
- case 3:
- hash+=in[2]<<16;
- case 2:
- hash+=in[1]<<8;
- case 1:
- hash+=in[0];
- hash*=m;
- break;
- }
-
- hash^=hash>>13;
- hash*=m;
- hash^=hash>>15;
+ uint32_t m = 0x5bd1e995;
+ uint32_t hash = seed ^ len;
- return hash;
+ for(;len >= 4; len-=4){
+ uint32_t k = *(uint32_t*)in;
+
+ k*=m;
+ k^=k>>24;
+ k*=m;
+
+ hash*=m;
+ hash^=k;
+
+ in+=4;
+ }
+
+ switch(len){
+ case 3:
+ hash+=in[2]<<16;
+ case 2:
+ hash+=in[1]<<8;
+ case 1:
+ hash+=in[0];
+ hash*=m;
+ break;
+ }
+
+ hash^=hash>>13;
+ hash*=m;
+ hash^=hash>>15;
+
+ return hash;
}
int l_murmur1_32(lua_State* L){