inline uchar circ(uchar x,int n) {return (x << n) | (x >> (8 - n));}
-uint64_t xorshift64( const uint64_t state)
+inline static uint64_t xorshift64( const uint64_t state)
{
uint64_t x = state;
x^= x << 13;
}
-static inline uint64_t splitmix64(uint64_t index) {
+inline static uint64_t splitmix64(uint64_t index) {
uint64_t z = (index + UINT64_C(0x9E3779B97F4A7C15));
z = (z ^ (z >> 30)) * UINT64_C(0xBF58476D1CE4E5B9);
z = (z ^ (z >> 27)) * UINT64_C(0x94D049BB133111EB);
// Goal: Calculate the hash value
// Output: RM (hash value)
- uchar X[h];
+ //uchar X[h];
//uint64_t rm2[h>>8];
int ind1=0;
for(int it=0;it<len;it++) {
// Mix with dynamic RM
- rm[0]=rm[0]^ss[ind1];
+ rm[0]=rm[h-1]^ss[ind1];
rm[0]=xorshift64(rm[0] );
for(a=1;a<h;a++) {
- rm[a]=rm[a]^ss[ind1+a];
- rm[a]=xorshift64(rm[a] ^ rm[a-1]);
+ rm[a]=rm[a-1]^ss[ind1+a];
+ rm[a]=xorshift64(rm[a]);
}
// printf("argh %d\n",a);
- rm[0]=xorshift64(rm[a-1]);
+ //rm[0]=xorshift64(rm[a-1]);
ind1+=h;