summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/log10.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/log10.c b/src/log10.c
index a9f27e5..9786cca 100644
--- a/src/log10.c
+++ b/src/log10.c
@@ -1,6 +1,6 @@
/* mpc_log10 -- Take the base-10 logarithm of a complex number.
-Copyright (C) 2012 INRIA
+Copyright (C) 2012-2020 INRIA
This file is part of GNU MPC.
@@ -37,6 +37,12 @@ mpc_log10 (mpc_ptr rop, mpc_srcptr op, mpc_rnd_t rnd)
mpfr_prec_t prec;
mpfr_t log10;
mpc_t log;
+ mpfr_exp_t saved_emin, saved_emax;
+
+ saved_emin = mpfr_get_emin ();
+ saved_emax = mpfr_get_emax ();
+ mpfr_set_emin (mpfr_get_emin_min ());
+ mpfr_set_emax (mpfr_get_emax_max ());
mpfr_init2 (log10, 2);
mpc_init2 (log, 2);
@@ -143,5 +149,11 @@ mpc_log10 (mpc_ptr rop, mpc_srcptr op, mpc_rnd_t rnd)
mpfr_clear (log10);
mpc_clear (log);
+ /* restore the exponent range, and check the range of results */
+ mpfr_set_emin (saved_emin);
+ mpfr_set_emax (saved_emax);
+ inex_re = mpfr_check_range (mpc_realref (rop), inex_re, MPC_RND_RE (rnd));
+ inex_im = mpfr_check_range (mpc_imagref (rop), inex_im, MPC_RND_IM (rnd));
+
return MPC_INEX(inex_re, inex_im);
}