diff options
author | Paul Zimmermann <Paul.Zimmermann@inria.fr> | 2020-02-12 16:45:11 +0100 |
---|---|---|
committer | Paul Zimmermann <Paul.Zimmermann@inria.fr> | 2020-02-12 16:45:11 +0100 |
commit | 5aac5329c83e2845d2955e0b1ad219d8b21c6942 (patch) | |
tree | c36172f236e9c5d4e3b7c08e73fc22381a2985cd | |
parent | 130bc9cbd9ee5fc84ace771002607e741508907d (diff) | |
download | mpc-git-5aac5329c83e2845d2955e0b1ad219d8b21c6942.tar.gz |
use extended exponent range in mpc_log10
-rw-r--r-- | src/log10.c | 14 |
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); } |