]> gcc.gnu.org Git - gcc.git/commitdiff
arith.c (gfc_check_real_range): Use correct exponent range for subnormal numbers.
authorSteven G. Kargl <kargl@gcc.gnu.org>
Tue, 3 Oct 2006 21:28:05 +0000 (21:28 +0000)
committerSteven G. Kargl <kargl@gcc.gnu.org>
Tue, 3 Oct 2006 21:28:05 +0000 (21:28 +0000)
2006-10-03  Steven G. Kargl  <kargl@gcc.gnu.org>

* arith.c (gfc_check_real_range):  Use correct exponent range for
subnormal numbers.

From-SVN: r117414

gcc/fortran/ChangeLog
gcc/fortran/arith.c

index 6e5584a01a40fdf0d1c9366a88a9dd0e9ffdf1c6..f04551162367870579995d37896e5e70d7c8bdfc 100644 (file)
@@ -1,3 +1,8 @@
+2006-10-03  Steven G. Kargl  <kargl@gcc.gnu.org>
+
+       * arith.c (gfc_check_real_range):  Use correct exponent range for
+       subnormal numbers.
+
 2006-10-03  Paul Thomas  <pault@gcc.gnu.org>
 
        PR fortran/29284
index b473fdb15eeee4f95e6819fd397d9ee8a645793d..3541adc49a638ccee42b53b78f821e5428a49055 100644 (file)
@@ -438,14 +438,16 @@ gfc_check_real_range (mpfr_t p, int kind)
       gfc_free (bin);
 #else
       mp_exp_t emin, emax;
+      int en;
 
       /* Save current values of emin and emax.  */
       emin = mpfr_get_emin ();
       emax = mpfr_get_emax ();
 
       /* Set emin and emax for the current model number.  */
-      mpfr_set_emin ((mp_exp_t) gfc_real_kinds[i].min_exponent - 1);
-      mpfr_set_emax ((mp_exp_t) gfc_real_kinds[i].max_exponent - 1);
+      en = gfc_real_kinds[i].min_exponent - gfc_real_kinds[i].digits + 1;
+      mpfr_set_emin ((mp_exp_t) en);
+      mpfr_set_emax ((mp_exp_t) gfc_real_kinds[i].max_exponent);
       mpfr_subnormalize (q, 0, GFC_RND_MODE);
 
       /* Reset emin and emax.  */
This page took 0.069953 seconds and 5 git commands to generate.