aboutsummaryrefslogtreecommitdiff
path: root/libgfortran/intrinsics/random.c
diff options
context:
space:
mode:
authorTobias Schlüter <tobi@gcc.gnu.org>2004-06-13 19:48:23 +0200
committerTobias Schlüter <tobi@gcc.gnu.org>2004-06-13 19:48:23 +0200
commit9d409075cb2e052ce66b91bdc791b8c6cf37dcbb (patch)
treefc484396bdda47521367fb8716d0ca9abbf92796 /libgfortran/intrinsics/random.c
parent132da1a5aa17e496019e1603ce3d59fe1e61d44d (diff)
downloadgcc-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.c5
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);
}