diff --git a/testsuite/yarrow-test.c b/testsuite/yarrow-test.c index 955fe2ef2169c522382466dae4d9d90c709d2399..54a176f05ba5f0d733e3a43ccfa831f349345c89 100644 --- a/testsuite/yarrow-test.c +++ b/testsuite/yarrow-test.c @@ -1,7 +1,8 @@ +#include "testutils.h" #include "yarrow.h" +#include "knuth-lfib.h" #include "macros.h" -#include "testutils.h" #include #include @@ -11,104 +12,7 @@ /* Lagged fibonacci sequence as described in Knuth 3.6 */ -#define KK 100 -#define LL 37 -#define MM (1UL << 30) -#define TT 70 - -uint32_t ran_x[KK]; -unsigned ran_index; - -static void -ran_init(uint32_t seed) -{ - uint32_t t,j; - uint32_t x[2*KK - 1]; - uint32_t ss = (seed + 2) & (MM-2); - - for (j = 0; j= MM) ss -= (MM-2); - } - for (;j< 2*KK-1; j++) - x[j] = 0; - - x[1]++; - - ss = seed & (MM-1); - for (t = TT-1; t; ) - { - for (j = KK-1; j>0; j--) - x[j+j] = x[j]; - for (j = 2*KK-2; j > KK-LL; j-= 2) - x[2*KK-1-j] = x[j] & ~1; - for (j = 2*KK-2; j>=KK; j--) - if (x[j] & 1) - { - x[j-(KK-LL)] = (x[j - (KK-LL)] - x[j]) & (MM-1); - x[j-KK] = (x[j-KK] - x[j]) & (MM-1); - } - if (ss & 1) - { - for (j=KK; j>0; j--) - x[j] = x[j-1]; - x[0] = x[KK]; - if (x[KK] & 1) - x[LL] = (x[LL] - x[KK]) & (MM-1); - } - if (ss) - ss >>= 1; - else - t--; - } - for (j=0; j