HALFLONG
#define low(x) (x&((1L<<HALFLONG)-1))
#define high(x) (x>>HALFLONG)
sum += (long)t << (shift %= HALFLONG);