re PR fortran/37803 (Call mpfr_check_range after setting emin/emax)
2008-11-24 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR fortran/37803 * arith.c (gfc_check_real_range): Add mpfr_check_range. * simplify.c (gfc_simplify_nearest): Add mpfr_check_range. From-SVN: r142187
This commit is contained in:
parent
58e99d9a79
commit
ca4300857f
@ -1,3 +1,9 @@
|
|||||||
|
2008-11-24 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
||||||
|
|
||||||
|
PR fortran/37803
|
||||||
|
* arith.c (gfc_check_real_range): Add mpfr_check_range.
|
||||||
|
* simplify.c (gfc_simplify_nearest): Add mpfr_check_range.
|
||||||
|
|
||||||
2008-11-24 Mikael Morin <mikael.morin@tele2.fr>
|
2008-11-24 Mikael Morin <mikael.morin@tele2.fr>
|
||||||
|
|
||||||
PR fortran/38184
|
PR fortran/38184
|
||||||
|
@ -379,6 +379,7 @@ gfc_check_real_range (mpfr_t p, int kind)
|
|||||||
en = gfc_real_kinds[i].min_exponent - gfc_real_kinds[i].digits + 1;
|
en = gfc_real_kinds[i].min_exponent - gfc_real_kinds[i].digits + 1;
|
||||||
mpfr_set_emin ((mp_exp_t) en);
|
mpfr_set_emin ((mp_exp_t) en);
|
||||||
mpfr_set_emax ((mp_exp_t) gfc_real_kinds[i].max_exponent);
|
mpfr_set_emax ((mp_exp_t) gfc_real_kinds[i].max_exponent);
|
||||||
|
mpfr_check_range (q, 0, GFC_RND_MODE);
|
||||||
mpfr_subnormalize (q, 0, GFC_RND_MODE);
|
mpfr_subnormalize (q, 0, GFC_RND_MODE);
|
||||||
|
|
||||||
/* Reset emin and emax. */
|
/* Reset emin and emax. */
|
||||||
|
@ -2993,6 +2993,7 @@ gfc_simplify_nearest (gfc_expr *x, gfc_expr *s)
|
|||||||
mpfr_set_emin ((mp_exp_t) gfc_real_kinds[kind].min_exponent -
|
mpfr_set_emin ((mp_exp_t) gfc_real_kinds[kind].min_exponent -
|
||||||
mpfr_get_prec(result->value.real) + 1);
|
mpfr_get_prec(result->value.real) + 1);
|
||||||
mpfr_set_emax ((mp_exp_t) gfc_real_kinds[kind].max_exponent - 1);
|
mpfr_set_emax ((mp_exp_t) gfc_real_kinds[kind].max_exponent - 1);
|
||||||
|
mpfr_check_range (result->value.real, 0, GMP_RNDU);
|
||||||
|
|
||||||
if (mpfr_sgn (s->value.real) > 0)
|
if (mpfr_sgn (s->value.real) > 0)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user