summaryrefslogtreecommitdiff
path: root/libgfortran
diff options
context:
space:
mode:
authortobi <tobi@138bc75d-0d04-0410-961f-82ee72b054a4>2004-06-13 17:48:23 +0000
committertobi <tobi@138bc75d-0d04-0410-961f-82ee72b054a4>2004-06-13 17:48:23 +0000
commitb0fb613e02eb095d8c4b9655404c29e46f8bf495 (patch)
treefc484396bdda47521367fb8716d0ca9abbf92796 /libgfortran
parent3ed275a69c65d1f323feab80baf7f4f4e961783d (diff)
downloadgcc-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/ChangeLog7
-rw-r--r--libgfortran/intrinsics/random.c5
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);
}