24 #define DO1(buf,i) {s1 += buf[i]; s2 += s1;} 25 #define DO2(buf,i) DO1(buf,i); DO1(buf,i+1); 26 #define DO4(buf,i) DO2(buf,i); DO2(buf,i+2); 27 #define DO8(buf,i) DO4(buf,i); DO4(buf,i+4); 28 #define DO16(buf) DO8(buf,0); DO8(buf,8); 30 void RollsumUpdate(Rollsum *sum,
const unsigned char *buf,
size_t len)
35 uint_fast16_t s1 = sum->s1;
36 uint_fast16_t s2 = sum->s2;
49 s1 += len * ROLLSUM_CHAR_OFFSET;
50 s2 += ((len * (len + 1)) / 2) * ROLLSUM_CHAR_OFFSET;