summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Zimmermann <Paul.Zimmermann@inria.fr>2020-02-12 16:45:11 +0100
committerPaul Zimmermann <Paul.Zimmermann@inria.fr>2020-02-12 16:45:11 +0100
commit5aac5329c83e2845d2955e0b1ad219d8b21c6942 (patch)
treec36172f236e9c5d4e3b7c08e73fc22381a2985cd
parent130bc9cbd9ee5fc84ace771002607e741508907d (diff)
downloadmpc-git-5aac5329c83e2845d2955e0b1ad219d8b21c6942.tar.gz
use extended exponent range in mpc_log10
-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);
}