Add FastestHash to cheaders.v
parent
8bb8b7d76e
commit
6b706a0c99
|
@ -240,6 +240,10 @@ static inline uint64_t wyhash64(uint64_t A, uint64_t B) { return _wymum(_wymum(A
|
|||
static inline uint64_t wyrand(uint64_t *seed) { *seed+=_wyp0; return _wymum(*seed^_wyp1,*seed); }
|
||||
static inline double wy2u01(uint64_t r) { const double _wynorm=1.0/(1ull<<52); return (r>>11)*_wynorm; }
|
||||
static inline double wy2gau(uint64_t r) { const double _wynorm=1.0/(1ull<<20); return ((r&0x1fffff)+((r>>21)&0x1fffff)+((r>>42)&0x1fffff))*_wynorm-3.0; }
|
||||
static inline uint64_t fastest_hash(const void *key, size_t len, uint64_t seed) {
|
||||
const uint8_t *p = (const uint8_t *)key;
|
||||
return _like_(len >= 4) ? (_wyr4(p) + _wyr4(p + len - 4)) * (_wyr4(p + (len >> 1) - 2) ^ seed) : (_like_(len) ? _wyr3(p, len) * (_wyp0 ^ seed) : seed);
|
||||
}
|
||||
#endif
|
||||
|
||||
'
|
||||
|
|
Loading…
Reference in New Issue