All pastes #368480 Raw Edit

Something

public text v1 · immutable
#368480 ·published 2007-02-23 02:58 UTC
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;
}