From c45abcaf8fe7c588468d6c2c9fb0b2fec24e3cf7 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Tobias=20Schl=C3=BCter?= Date: Thu, 7 Oct 2004 01:16:43 +0200 Subject: [PATCH] * simplify.c (gfc_simplify_abs): Use mpfr_hypot for CABS. From-SVN: r88647 --- gcc/fortran/ChangeLog | 2 ++ gcc/fortran/simplify.c | 13 ++----------- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index d52914f..276e586 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -4,6 +4,8 @@ * simplify.c (twos_complement): New function. (gfc_simplify_ishft, gfc_simplify_ishftc): Revise. + * simplify.c (gfc_simplify_abs): Use mpfr_hypot for CABS. + 2004-10-06 Paul Brook * trans-stmt.c (gfc_trans_simple_do): New function. diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c index 0ac9d61..253f686 100644 --- a/gcc/fortran/simplify.c +++ b/gcc/fortran/simplify.c @@ -176,7 +176,6 @@ gfc_expr * gfc_simplify_abs (gfc_expr * e) { gfc_expr *result; - mpfr_t a, b; if (e->expr_type != EXPR_CONSTANT) return NULL; @@ -203,17 +202,9 @@ gfc_simplify_abs (gfc_expr * e) result = gfc_constant_result (BT_REAL, e->ts.kind, &e->where); gfc_set_model_kind (e->ts.kind); - mpfr_init (a); - mpfr_init (b); - /* FIXME: Possible numerical problems. */ - mpfr_mul (a, e->value.complex.r, e->value.complex.r, GFC_RND_MODE); - mpfr_mul (b, e->value.complex.i, e->value.complex.i, GFC_RND_MODE); - mpfr_add (a, a, b, GFC_RND_MODE); - mpfr_sqrt (result->value.real, a, GFC_RND_MODE); - - mpfr_clear (a); - mpfr_clear (b); + mpfr_hypot (result->value.real, e->value.complex.r, + e->value.complex.i, GFC_RND_MODE); result = range_check (result, "CABS"); break; -- 2.7.4