Files
2025-02-Numerical/lib/nr/cpp/recipes/igray.cpp
2025-09-12 18:55:25 +09:00

18 lines
269 B
C++

#include "nr.h"
unsigned long NR::igray(const unsigned long n, const 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;
}
}