aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorThomas Koenig <Thomas.Koenig@online.de>2006-08-01 17:15:04 +0000
committerThomas Koenig <tkoenig@gcc.gnu.org>2006-08-01 17:15:04 +0000
commitcdc5524fc8255e6303ae90f3089e93998dc8a626 (patch)
tree2c5173e380e77a7fd222230cb14ad82228f9ce72 /gcc
parenta82f93ac13c4280fdf2b5d48648bfc3f7668406b (diff)
downloadgcc-cdc5524fc8255e6303ae90f3089e93998dc8a626.zip
gcc-cdc5524fc8255e6303ae90f3089e93998dc8a626.tar.gz
gcc-cdc5524fc8255e6303ae90f3089e93998dc8a626.tar.bz2
re PR libfortran/28452 (__gfortran_random_r10 not found)
2006-08-01 Thomas Koenig <Thomas.Koenig@online.de> PR libfortran/28542 * Makefile.am: Remove normalize.c. * aclocal.m4: Regenerate using aclocal 1.9.3. * Makefile.in: Regenerate using automake 1.9.3. * libgfortran.h: #include <float.h>. Define GFC_REAL_*_DIGITS and GFC_REAL_*_RADIX. Remove prototypes for normalize_r4_i4 and normalize_r8_i8. * intrinsics/random.c (top level): Add prototypes for random_r10, arandom_r10, random_r16 and arandom_r16. (rnumber_4): New static function. (rnumber_8): New static function. (rnumber_10): New static function. (rnumber_16): New static function. (top level): Set to kiss_size to 12 if we have REAL(KIND=16), to 8 otherwise. Define KISS_DEFAULT_SEED_1, KISS_DEFAULT_SEED_2 and KISS_DEFAULT_SEED_3. (kiss_random_kernel): Take argument to differentiate between different random number generators. (random_r4): Add argument to call to kiss_random_kernel, use rnumber_*. (random_r8): Likewise. (random_r10): New function. (random_r16): New function. (arandom_r4): Add argument to call to kiss_random_kernel, use_rnumber_*. (arandom_r8): Likewise. (arandom_r10): New function. (arandom_r16): New function. * intrinsics/rand.c (rand): Use shift and mask. * runtime/normalize.c: Remove. 2006-08-01 Thomas Koenig <Thomas.Koenig@online.de> PR libfortran/28542 * gfortran.dg/random_3.f90: New test. From-SVN: r115858
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/random_3.f9029
2 files changed, 34 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 097e784..29b8584 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2006-08-01 Thomas Koenig <Thomas.Koenig@online.de>
+
+ PR libfortran/28542
+ * gfortran.dg/random_3.f90: New test.
+
2006-08-01 Steve Ellcey <sje@cup.hp.com>
PR c++/28432
diff --git a/gcc/testsuite/gfortran.dg/random_3.f90 b/gcc/testsuite/gfortran.dg/random_3.f90
new file mode 100644
index 0000000..8e087c4
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/random_3.f90
@@ -0,0 +1,29 @@
+! { dg-do run }
+! { dg-require-effective-target fortran_large_real }
+! Check that the random_seed for real(10) or real(16) exists and that
+! real(8) and real(10) or real(16) random number generators
+! return the same sequence of values.
+! Mostly copied from random_2.f90
+program random_4
+ integer,parameter :: k = selected_real_kind (precision (0.0_8) + 1)
+
+ integer, dimension(:), allocatable :: seed
+ real(kind=8), dimension(10) :: r8
+ real(kind=k), dimension(10) :: r10
+ real, parameter :: delta = 1.d-10
+ integer n
+
+ call random_seed (size=n)
+ allocate (seed(n))
+ call random_seed (get=seed)
+ ! Test both array valued and scalar routines.
+ call random_number(r8)
+ call random_number (r8(10))
+
+ ! Reset the seed and get the real(8) values.
+ call random_seed (put=seed)
+ call random_number(r10)
+ call random_number (r10(10))
+
+ if (any ((r8 - r10) .gt. delta)) call abort
+end program random_4