|
|
@ -62,15 +62,12 @@ |
|
|
|
#define DIST_TYPE 0 |
|
|
|
#define DIST_TYPE 0 |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
int bit1Count(int x) |
|
|
|
//http://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetParallel |
|
|
|
|
|
|
|
int bit1Count(int v) |
|
|
|
{ |
|
|
|
{ |
|
|
|
int c = 0; |
|
|
|
v = v - ((v >> 1) & 0x55555555); // reuse input as temporary |
|
|
|
for (int i = 0 ; i < 32 ; i++) |
|
|
|
v = (v & 0x33333333) + ((v >> 2) & 0x33333333); // temp |
|
|
|
{ |
|
|
|
return ((v + (v >> 4) & 0xF0F0F0F) * 0x1010101) >> 24; // count |
|
|
|
c += x & 1; |
|
|
|
|
|
|
|
x >>= 1; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return c; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// dirty fix for non-template support |
|
|
|
// dirty fix for non-template support |
|
|
|