diff options
Diffstat (limited to 'gcell/lib/runtime/spu/gc_random.c')
-rw-r--r-- | gcell/lib/runtime/spu/gc_random.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/gcell/lib/runtime/spu/gc_random.c b/gcell/lib/runtime/spu/gc_random.c index 214309b539..ae2fde875b 100644 --- a/gcell/lib/runtime/spu/gc_random.c +++ b/gcell/lib/runtime/spu/gc_random.c @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2008 Free Software Foundation, Inc. + * Copyright 2008,2009 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -22,9 +22,9 @@ static int last_val = 0; -#define M 714025 // values from Numerical Recipes in C, 1988 -#define A 4096 -#define C 150889 +# define M 259200 // values from Numerical Recipes in C, 1988 +# define A 7141 +# define C 54773 void gc_set_seed(int seed) @@ -32,9 +32,13 @@ gc_set_seed(int seed) last_val = ((unsigned int) seed) % M; } +/* + * Return a uniformly distributed value in the range [0, 1.0) + * (Linear congruential generator. YMMV. Caveat emptor.) + */ float gc_uniform_deviate(void) { last_val = (last_val * A + C) % M; - return (float) last_val / (float) M; + return (float) last_val * (1.0f / (float) M); } |