diff options
author | Tobias Schlüter <tobi@gcc.gnu.org> | 2004-06-13 19:48:23 +0200 |
---|---|---|
committer | Tobias Schlüter <tobi@gcc.gnu.org> | 2004-06-13 19:48:23 +0200 |
commit | 9d409075cb2e052ce66b91bdc791b8c6cf37dcbb (patch) | |
tree | fc484396bdda47521367fb8716d0ca9abbf92796 /libgfortran/intrinsics/random.c | |
parent | 132da1a5aa17e496019e1603ce3d59fe1e61d44d (diff) | |
download | gcc-9d409075cb2e052ce66b91bdc791b8c6cf37dcbb.zip gcc-9d409075cb2e052ce66b91bdc791b8c6cf37dcbb.tar.gz gcc-9d409075cb2e052ce66b91bdc791b8c6cf37dcbb.tar.bz2 |
random.c (random_r4): Burn a random number.
2004-06-13 Steven G. Kargl <kargls@comcast.net>
* random.c (random_r4): Burn a random number.
(random_r8): fix infinite loop.
From-SVN: r83062
Diffstat (limited to 'libgfortran/intrinsics/random.c')
-rw-r--r-- | libgfortran/intrinsics/random.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/libgfortran/intrinsics/random.c b/libgfortran/intrinsics/random.c index bfda343..73a6ced 100644 --- a/libgfortran/intrinsics/random.c +++ b/libgfortran/intrinsics/random.c @@ -462,6 +462,9 @@ prefix(random_r4) (GFC_REAL_4 *x) { kiss = kiss_random_kernel (); *x = (GFC_REAL_4)kiss / (GFC_REAL_4)(~(GFC_UINTEGER_4) 0); + /* Burn a random number, so the REAL*4 and REAL*8 functions + produce similar sequences of random numbers. */ + kiss = kiss_random_kernel (); } while (*x == 1.0); @@ -482,7 +485,7 @@ prefix(random_r8) (GFC_REAL_8 *x) + kiss_random_kernel (); *x = (GFC_REAL_8)kiss / (GFC_REAL_8)(~(GFC_UINTEGER_8) 0); } - while (*x != 0); + while (*x == 0); } |