Hitmap 1.3
 All Data Structures Namespaces Files Functions Variables Typedefs Friends Macros Groups Pages
hit_randhash.h
Go to the documentation of this file.
1 #ifndef _HitRandHash_
2 #define _HitRandHash_
3 
4 #include<stdio.h>
5 #include<stdlib.h>
6 
15 inline unsigned long HitRandhash_uint64(const unsigned long u) {
16  unsigned long v = u * 3935559000370003845L + 2691343689449507681L;
17  v ^= v >> 21; v ^= v << 37; v ^= v >> 4;
18  v *= 4768777513237032717L;
19  v ^= v << 20; v ^= v >> 41; v ^= v << 5;
20  return v;
21  }
22 
23 inline unsigned int HitRandhash_uint32(const unsigned long u){
24  return (unsigned int)(HitRandhash_uint64(u) & 0xffffffffL);
25  }
26 
27 inline double HitRandhash_double(const unsigned long u){
28  double r = 5.42101086242752217E-20 * HitRandhash_uint64(u);
29  return r < 0 ? 1+r : r;
30  }
31 
32 inline int HitRandhash_int32(const unsigned long u) { return HitRandhash_uint32(u) & 0x7FFFFFFF; }
33 
34 inline long HitRandhash_int64(const unsigned long u) { return HitRandhash_uint64(u) & 0x7FFFFFFFFFFFFFFFL; }
35 
36 #endif
int HitRandhash_int32(const unsigned long u)
Definition: hit_randhash.h:32
unsigned int HitRandhash_uint32(const unsigned long u)
Definition: hit_randhash.h:23
#define r(a, b, c)
unsigned long HitRandhash_uint64(const unsigned long u)
Definition: hit_randhash.h:15
#define u(a, b, c)
#define L
Definition: spring_bitmap.c:67
long HitRandhash_int64(const unsigned long u)
Definition: hit_randhash.h:34
double HitRandhash_double(const unsigned long u)
Definition: hit_randhash.h:27
#define v(a, b, c)