aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/simplify.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/fortran/simplify.cc')
-rw-r--r--gcc/fortran/simplify.cc18
1 files changed, 10 insertions, 8 deletions
diff --git a/gcc/fortran/simplify.cc b/gcc/fortran/simplify.cc
index 2ceb479..b25cd2c 100644
--- a/gcc/fortran/simplify.cc
+++ b/gcc/fortran/simplify.cc
@@ -2288,10 +2288,10 @@ gfc_simplify_cospi (gfc_expr *x)
#if MPFR_VERSION >= MPFR_VERSION_NUM(4, 2, 0)
mpfr_cospi (result->value.real, x->value.real, GFC_RND_MODE);
#else
- mpfr_t cs, n, r;
+ mpfr_t cs, n, r, two;
int s;
- mpfr_inits2 (2 * mpfr_get_prec (x->value.real), cs, n, r, NULL);
+ mpfr_inits2 (2 * mpfr_get_prec (x->value.real), cs, n, r, two, NULL);
mpfr_abs (r, x->value.real, GFC_RND_MODE);
mpfr_modf (n, r, r, GFC_RND_MODE);
@@ -2302,7 +2302,8 @@ gfc_simplify_cospi (gfc_expr *x)
return result;
}
- mpfr_fmod_ui (cs, n, 2, GFC_RND_MODE);
+ mpfr_set_ui (two, 2, GFC_RND_MODE);
+ mpfr_fmod (cs, n, two, GFC_RND_MODE);
s = mpfr_cmp_ui (cs, 0) == 0 ? 1 : -1;
mpfr_const_pi (cs, GFC_RND_MODE);
@@ -2310,7 +2311,7 @@ gfc_simplify_cospi (gfc_expr *x)
mpfr_cos (cs, cs, GFC_RND_MODE);
mpfr_mul_si (result->value.real, cs, s, GFC_RND_MODE);
- mpfr_clears (cs, n, r, NULL);
+ mpfr_clears (cs, n, r, two, NULL);
#endif
return range_check (result, "COSPI");
@@ -2329,10 +2330,10 @@ gfc_simplify_sinpi (gfc_expr *x)
#if MPFR_VERSION >= MPFR_VERSION_NUM(4, 2, 0)
mpfr_sinpi (result->value.real, x->value.real, GFC_RND_MODE);
#else
- mpfr_t sn, n, r;
+ mpfr_t sn, n, r, two;
int s;
- mpfr_inits2 (2 * mpfr_get_prec (x->value.real), sn, n, r, NULL);
+ mpfr_inits2 (2 * mpfr_get_prec (x->value.real), sn, n, r, two, NULL);
mpfr_abs (r, x->value.real, GFC_RND_MODE);
mpfr_modf (n, r, r, GFC_RND_MODE);
@@ -2343,7 +2344,8 @@ gfc_simplify_sinpi (gfc_expr *x)
return result;
}
- mpfr_fmod_ui (sn, n, 2, GFC_RND_MODE);
+ mpfr_set_ui (two, 2, GFC_RND_MODE);
+ mpfr_fmod (sn, n, two, GFC_RND_MODE);
s = mpfr_cmp_si (x->value.real, 0) < 0 ? -1 : 1;
s *= mpfr_cmp_ui (sn, 0) == 0 ? 1 : -1;
@@ -2352,7 +2354,7 @@ gfc_simplify_sinpi (gfc_expr *x)
mpfr_sin (sn, sn, GFC_RND_MODE);
mpfr_mul_si (result->value.real, sn, s, GFC_RND_MODE);
- mpfr_clears (sn, n, r, NULL);
+ mpfr_clears (sn, n, r, two, NULL);
#endif
return range_check (result, "SINPI");