diff options
author | tobi <tobi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-06-13 17:48:23 +0000 |
---|---|---|
committer | tobi <tobi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-06-13 17:48:23 +0000 |
commit | b0fb613e02eb095d8c4b9655404c29e46f8bf495 (patch) | |
tree | fc484396bdda47521367fb8716d0ca9abbf92796 /libgfortran | |
parent | 3ed275a69c65d1f323feab80baf7f4f4e961783d (diff) | |
download | gcc-b0fb613e02eb095d8c4b9655404c29e46f8bf495.tar.gz |
2004-06-13 Steven G. Kargl <kargls@comcast.net>
* random.c (random_r4): Burn a random number.
(random_r8): fix infinite loop.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@83062 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgfortran')
-rw-r--r-- | libgfortran/ChangeLog | 7 | ||||
-rw-r--r-- | libgfortran/intrinsics/random.c | 5 |
2 files changed, 10 insertions, 2 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index d665c973e04..1d4b42365cc 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,4 +1,9 @@ -2004-6-12 Bud Davis <bdavis9659@comcast.net> +2004-06-13 Steven G. Kargl <kargls@comcast.net> + + * random.c (random_r4): Burn a random number. + (random_r8): fix infinite loop. + +2004-06-12 Bud Davis <bdavis9659@comcast.net> Steve Kargl <sgk@troutmask.apl.washington.edu> PR gfortran/15292 diff --git a/libgfortran/intrinsics/random.c b/libgfortran/intrinsics/random.c index bfda3437f91..73a6cede0f0 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); } |