passage-0.1: cbits/runtime/src/kiss.h
/*****************************************************************************/
/* Implementation of a 32-bit KISS generator which uses no multiply instructions */
extern unsigned int rx, ry, rz, rw, rc;
#pragma omp threadprivate (rx,ry,rz,rw,rc)
static inline
void init_genrand(unsigned long seed) {
rx = seed;
ry = seed + 1;
rz = seed + 2;
rw = seed + 3;
rc = seed & 1;
}
static inline
unsigned long genrand_int32(void) {
int t;
ry ^= ry << 5;
ry ^= ry >> 7;
ry ^= ry << 22;
t = rz + rw + rc;
rz = rw;
rc = t < 0;
rw = t & 2147483647;
rx += 1411392427;
return rx + ry + rw;
}