Luby series code taken from SATZ_rand 5.0 from Henry Kautz
http://www.cs.rochester.edu/u/kautz/satz-rand/satz-rand-v5.0.tgz
Luby's series
long luby_super(int i)
{
long power;
int k;
if (i<=0){
fprintf(stderr, "bad argument super(%d)\n", i);
exit(1);
}
/* let 2ˆk be the least power of 2 >= (i+1)
k = 1;
power = 2;
while (power < (i+1)){
k += 1;
power *= 2;
}
if (power == (i+1)) return (power/2);
return (luby_super(i - (power/2) + 1));
}