diff options
author | Thomas Koenig <Thomas.Koenig@online.de> | 2006-08-01 17:15:04 +0000 |
---|---|---|
committer | Thomas Koenig <tkoenig@gcc.gnu.org> | 2006-08-01 17:15:04 +0000 |
commit | cdc5524fc8255e6303ae90f3089e93998dc8a626 (patch) | |
tree | 2c5173e380e77a7fd222230cb14ad82228f9ce72 /gcc | |
parent | a82f93ac13c4280fdf2b5d48648bfc3f7668406b (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/random_3.f90 | 29 |
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 |