typedef unsigned long ub4; typedef unsigned long long ub8; static void mix( ub4 *x) { ub4 a,b,c,d,e; a=x[0]; b=x[1]; c=x[2]; d=x[3]; e = a; a = b; b = ((c<<19)|(c>>13))+d; c = ((d<< 9)|(d>>23))+a; d = e+b; x[0]=a; x[1]=b; x[2]=c; x[3]=d; } main() { ub4 x[4]; ub8 i, j; for (i=0; i<0x100000000; ++i) { x[0]=42; x[1]=x[2]=x[3]=i; for (j=1; j<=1024; ++j) { mix(x); if (x[0]==42 && x[1]==i && x[2]==i && x[3]==i) { printf("seed=%.8x had short cycle %d\n", (ub4)i, j); } } } }