rendered paste body#include <assert.h>
#include <stdio.h>
long extend(long oldval, int newbits) {
int oldhighbits = oldval & 0x3000;
int newhighbits = newbits & 0x3000;
long newval = (oldval & ~0x3fff) | newbits;
if(oldhighbits == 0x3000 && newhighbits == 0)
newval += 0x4000;
else if(oldhighbits == 0 && newhighbits == 0x3000)
newval -= 0x4000;
return newval;
}
int main(int argc, char **argv) {
int i, v=0;
for(i=0; i<1638400; i++) {
int j = (v + lrand48() % 8191 - 4095);
v = extend(v, j & 0x3fff);
if(j != v)
printf("% 8ld (%08lx) % 8ld (%08lx)\n",
v, v, j, j);
assert(j == v);
}
return 0;
}