48 lines
No EOL
909 B
C++
48 lines
No EOL
909 B
C++
|
|
#include "Common.hpp"
|
|
|
|
namespace tp {
|
|
ualni next2pow(ualni v) {
|
|
v |= v >> 1;
|
|
v |= v >> 2;
|
|
v |= v >> 4;
|
|
v |= v >> 8;
|
|
v |= v >> 16;
|
|
v |= v >> 32;
|
|
return v + 1;
|
|
}
|
|
|
|
uhalni next2pow(uhalni v) {
|
|
v |= v >> 1;
|
|
v |= v >> 2;
|
|
v |= v >> 4;
|
|
v |= v >> 8;
|
|
v |= v >> 16;
|
|
return v + 1;
|
|
}
|
|
|
|
ufalni next2pow(ufalni v) {
|
|
v |= v >> 1;
|
|
v |= v >> 2;
|
|
v |= v >> 4;
|
|
v |= v >> 8;
|
|
return v + 1;
|
|
}
|
|
|
|
ualni hash(const void* bytes) { return hash((const char*) bytes); }
|
|
|
|
ualni hash(const char* bytes) {
|
|
unsigned long hash = 5381;
|
|
int c;
|
|
while ((c = *bytes++)) {
|
|
hash = ((hash << 5) + hash) + c;
|
|
}
|
|
return hash;
|
|
}
|
|
|
|
ualni hash(alni bytes) { return abs(bytes); }
|
|
ualni hash(alnf bytes) { return (alni) (abs(bytes)); }
|
|
ualni hash(halni bytes) { return hash(alni(bytes)); }
|
|
ualni hash(uhalni bytes) { return hash(alni(bytes)); }
|
|
ualni hash(ualni bytes) { return hash(alni(bytes)); }
|
|
} |