summaryrefslogtreecommitdiff
path: root/libgfortran/runtime
diff options
context:
space:
mode:
authortkoenig <tkoenig@138bc75d-0d04-0410-961f-82ee72b054a4>2006-08-01 17:15:04 +0000
committertkoenig <tkoenig@138bc75d-0d04-0410-961f-82ee72b054a4>2006-08-01 17:15:04 +0000
commit0ee93d5770ac0a7cb6fc5fb51c9875f3929815d4 (patch)
tree2c5173e380e77a7fd222230cb14ad82228f9ce72 /libgfortran/runtime
parent10bd53a622ba639015a5d0e86ea8ad34f82e0dc2 (diff)
downloadgcc-0ee93d5770ac0a7cb6fc5fb51c9875f3929815d4.tar.gz
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@115858 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgfortran/runtime')
-rw-r--r--libgfortran/runtime/normalize.c120
1 files changed, 0 insertions, 120 deletions
diff --git a/libgfortran/runtime/normalize.c b/libgfortran/runtime/normalize.c
deleted file mode 100644
index 7bc90033ef3..00000000000
--- a/libgfortran/runtime/normalize.c
+++ /dev/null
@@ -1,120 +0,0 @@
-/* Nelper routines to convert from integer to real.
- Copyright 2004, 2005 Free Software Foundation, Inc.
- Contributed by Paul Brook.
-
-This file is part of the GNU Fortran 95 runtime library (libgfortran).
-
-Libgfortran is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either
-version 2 of the License, or (at your option) any later version.
-
-In addition to the permissions in the GNU General Public License, the
-Free Software Foundation gives you unlimited permission to link the
-compiled version of this file into combinations with other programs,
-and to distribute those combinations without any restriction coming
-from the use of this file. (The General Public License restrictions
-do apply in other respects; for example, they cover modification of
-the file, and distribution when not linked into a combine
-executable.)
-
-Ligbfortran is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public
-License along with libgfortran; see the file COPYING. If not,
-write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-Boston, MA 02110-1301, USA. */
-#include <math.h>
-#include "libgfortran.h"
-
-/* These routines can be sensitive to excess precision, so should really be
- compiled with -ffloat-store. */
-
-/* Return the largest value less than one representable in a REAL*4. */
-
-static inline GFC_REAL_4
-almostone_r4 (void)
-{
-#ifdef HAVE_NEXTAFTERF
- return nextafterf (1.0f, 0.0f);
-#else
- /* The volatile is a hack to prevent excess precision on x86. */
- static volatile GFC_REAL_4 val = 0.0f;
- GFC_REAL_4 x;
-
- if (val != 0.0f)
- return val;
-
- val = 0.9999f;
- do
- {
- x = val;
- val = (val + 1.0f) / 2.0f;
- }
- while (val > x && val < 1.0f);
- if (val == 1.0f)
- val = x;
- return val;
-#endif
-}
-
-
-/* Return the largest value less than one representable in a REAL*8. */
-
-static inline GFC_REAL_8
-almostone_r8 (void)
-{
-#ifdef HAVE_NEXTAFTER
- return nextafter (1.0, 0.0);
-#else
- static volatile GFC_REAL_8 val = 0.0;
- GFC_REAL_8 x;
-
- if (val != 0.0)
- return val;
-
- val = 0.9999;
- do
- {
- x = val;
- val = (val + 1.0) / 2.0;
- }
- while (val > x && val < 1.0);
- if (val == 1.0)
- val = x;
- return val;
-#endif
-}
-
-
-/* Convert an unsigned integer in the range [0..x] into a
- real the range [0..1). */
-
-GFC_REAL_4
-normalize_r4_i4 (GFC_UINTEGER_4 i, GFC_UINTEGER_4 x)
-{
- GFC_REAL_4 r;
-
- r = (GFC_REAL_4) i / (GFC_REAL_4) x;
- if (r == 1.0f)
- r = almostone_r4 ();
- return r;
-}
-
-
-/* Convert an unsigned integer in the range [0..x] into a
- real the range [0..1). */
-
-GFC_REAL_8
-normalize_r8_i8 (GFC_UINTEGER_8 i, GFC_UINTEGER_8 x)
-{
- GFC_REAL_8 r;
-
- r = (GFC_REAL_8) i / (GFC_REAL_8) x;
- if (r == 1.0)
- r = almostone_r8 ();
- return r;
-}