add numerical recipes library
This commit is contained in:
17
lib/nr/cpp/recipes/igray.cpp
Normal file
17
lib/nr/cpp/recipes/igray.cpp
Normal file
@@ -0,0 +1,17 @@
|
||||
#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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user