simplify.c (radians_f): Fix mpdr_mod.
authorJerry DeLisle <jvdelisle@gcc.gnu.org>
Tue, 11 Oct 2016 18:31:50 +0000 (18:31 +0000)
committerJerry DeLisle <jvdelisle@gcc.gnu.org>
Tue, 11 Oct 2016 18:31:50 +0000 (18:31 +0000)
2016-10-11  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

* simplify.c (radians_f): Fix mpdr_mod.
* ireolce.c (get_degrees): Declare tmp.

From-SVN: r241000

gcc/fortran/ChangeLog
gcc/fortran/iresolve.c
gcc/fortran/simplify.c

index 907a8ef41e9d3edad31f4ce12eb2ad3602458e13..025bfabb4aae40b822c8bc40e50569eb11483e49 100644 (file)
@@ -1,3 +1,8 @@
+2016-10-11  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+       * simplify.c (radians_f): Fix mpdr_mod.
+       * ireolce.c (get_degrees): Declare tmp.
+
 2016-10-11  Fritz Reese  <fritzoreese@gmail.com>
 
        * lang.opt: New flag -fdec-math.
index f4f81b2e58918e7727c682ec2810742004ac9a7d..4334522c5e6344a24b1a024d3a6c993cc173e8ca 100644 (file)
@@ -2702,6 +2702,7 @@ get_degrees (gfc_expr *rad)
 {
   gfc_expr *result, *factor;
   gfc_actual_arglist *mod_args;
+  mpfr_t tmp;
 
   gcc_assert (rad->ts.type == BT_REAL);
 
index bf60f7475d61fa3c2752244f96f0161fced44efa..18135d2f4a2c7e80b6ef01f7289e1dbe21629b7c 100644 (file)
@@ -1768,11 +1768,13 @@ degrees_f (mpfr_t x, mp_rnd_t rnd_mode)
 static void
 radians_f (mpfr_t x, mp_rnd_t rnd_mode)
 {
-    mpfr_t tmp;
+    mpfr_t tmp, modtmp;
     mpfr_init (tmp);
+    mpfr_init (modtmp);
 
     /* Set x = x % 360 to avoid offsets with large angles.  */
-    mpfr_fmod_d (tmp, x, 360.0, rnd_mode);
+    mpfr_set_d (modtmp, 360.0, GFC_RND_MODE);
+    mpfr_fmod (tmp, x, modtmp, rnd_mode);
 
     /* Set x = x * pi.  */
     mpfr_const_pi (tmp, rnd_mode);
@@ -1782,6 +1784,7 @@ radians_f (mpfr_t x, mp_rnd_t rnd_mode)
     mpfr_div_d (x, x, 180.0, rnd_mode);
 
     mpfr_clear (tmp);
+    mpfr_clear (modtmp);
 }