From b614c6943cc13319cbdcc1da84cab4409a1b8cae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20M=C3=B6ller?= <nisse@lysator.liu.se> Date: Wed, 16 Jan 2002 21:12:44 +0100 Subject: [PATCH] Deleted ran_array code, use knuth-lfib.h instead. Rev: src/nettle/testsuite/yarrow-test.c:1.12 --- testsuite/yarrow-test.c | 108 ++-------------------------------------- 1 file changed, 5 insertions(+), 103 deletions(-) diff --git a/testsuite/yarrow-test.c b/testsuite/yarrow-test.c index 955fe2ef..54a176f0 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 <assert.h> #include <errno.h> @@ -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<KK; j++) - { - x[j] = ss; - ss <<= 1; if (ss >= 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<LL; j++) - ran_x[j+KK-LL] = x[j]; - for (; j<KK; j++) - ran_x[j-LL] = x[j]; - - ran_index = 0; -} - -static uint32_t -ran_get(void) -{ - uint32_t value; - assert(ran_index < KK); - - value = ran_x[ran_index]; - ran_x[ran_index] -= ran_x[(ran_index + KK - LL) % KK]; - ran_x[ran_index] &= (MM-1); - - ran_index = (ran_index + 1) % KK; - - return value; -} - -static void -ran_array(uint32_t *a, unsigned n) -{ - unsigned i; - - for (i = 0; i<n; i++) - a[i] = ran_get(); -} - -static void -ran_test(void) -{ - uint32_t a[2009]; - uint32_t x; - - unsigned m; - - ran_init(310952); - for (m = 0; m<2009; m++) - ran_array(a, 1009); - - x = ran_get(); - assert(x == 461390032); -} +struct knuth_lfib_ctx lfib; static int get_event(FILE *f, struct sha256_ctx *hash, @@ -126,7 +30,7 @@ get_event(FILE *f, struct sha256_ctx *hash, *key = c; - t += (ran_get() % 10000); + t += (knuth_lfib_get(&lfib) % 10000); *time = t; return 1; @@ -205,9 +109,7 @@ test_main(void) sha256_init(&input_hash); sha256_init(&output_hash); - ran_test(); - - ran_init(31416); + knuth_lfib_init(&lfib, 31416); /* Fake input to source 0 */ yarrow256_update(&yarrow, 0, 200, sizeof(zeroes), zeroes); -- GitLab