Files
2025-09-12 18:55:25 +09:00

17 lines
237 B
C

unsigned long igray(unsigned long n, int is)
{
int ish;
unsigned long ans,idiv;
if (is >= 0)
return n ^ (n >> 1);
ish=1;
ans=n;
for (;;) {
ans ^= (idiv=ans >> ish);
if (idiv <= 1 || ish == 16) return ans;
ish <<= 1;
}
}