aboutsummaryrefslogtreecommitdiff
path: root/gcc/real.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/real.c')
-rw-r--r--gcc/real.c24
1 files changed, 12 insertions, 12 deletions
diff --git a/gcc/real.c b/gcc/real.c
index 5180aec382a..827ac9dd449 100644
--- a/gcc/real.c
+++ b/gcc/real.c
@@ -2,7 +2,7 @@
Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999,
2000, 2002, 2003 Free Software Foundation, Inc.
Contributed by Stephen L. Moshier (moshier@world.std.com).
- Re-written by Richard Henderson <rth@redhat.com>
+ Re-written by Richard Henderson <rth@redhat.com>
This file is part of GCC.
@@ -31,7 +31,7 @@
#include "tm_p.h"
/* The floating point model used internally is not exactly IEEE 754
- compliant, and close to the description in the ISO C standard,
+ compliant, and close to the description in the ISO C99 standard,
section 5.2.4.2.2 Characteristics of floating types.
Specifically
@@ -49,21 +49,21 @@
significand is fractional. Normalized significands are in the
range [0.5, 1.0).
- A requirement of the model is that P be larger than than the
- largest supported target floating-point type by at least 2 bits.
- This gives us proper rounding when we truncate to the target type.
- In addition, E must be large enough to hold the smallest supported
- denormal number in a normalized form.
+ A requirement of the model is that P be larger than the largest
+ supported target floating-point type by at least 2 bits. This gives
+ us proper rounding when we truncate to the target type. In addition,
+ E must be large enough to hold the smallest supported denormal number
+ in a normalized form.
Both of these requirements are easily satisfied. The largest target
significand is 113 bits; we store at least 160. The smallest
denormal number fits in 17 exponent bits; we store 29.
Note that the decimal string conversion routines are sensitive to
- rounding error. Since the raw arithmetic routines do not themselves
+ rounding errors. Since the raw arithmetic routines do not themselves
have guard digits or rounding, the computation of 10**exp can
accumulate more than a few digits of error. The previous incarnation
- of real.c successfully used a 144 bit fraction; given the current
+ of real.c successfully used a 144-bit fraction; given the current
layout of REAL_VALUE_TYPE we're forced to expand to at least 160 bits.
Target floating point models that use base 16 instead of base 2
@@ -763,8 +763,8 @@ do_multiply (REAL_VALUE_TYPE *r, const REAL_VALUE_TYPE *a,
continue;
}
+ memset (&u, 0, sizeof (u));
u.class = rvc_normal;
- u.sign = 0;
u.exp = exp;
for (k = j; k < SIGSZ * 2; k += 2)
@@ -3623,7 +3623,7 @@ const struct real_format mips_quad_format =
/* Descriptions of VAX floating point formats can be found beginning at
- http://www.openvms.compaq.com:8000/73final/4515/4515pro_013.html#f_floating_point_format
+ http://h71000.www7.hp.com/doc/73FINAL/4515/4515pro_013.html#f_floating_point_format
The thing to remember is that they're almost IEEE, except for word
order, exponent bias, and the lack of infinities, nans, and denormals.
@@ -3768,7 +3768,7 @@ decode_vax_d (const struct real_format *fmt ATTRIBUTE_UNUSED,
image0 &= 0xffffffff;
image1 &= 0xffffffff;
- exp = (image0 >> 7) & 0x7f;
+ exp = (image0 >> 7) & 0xff;
memset (r, 0, sizeof (*r));