From 5aac5329c83e2845d2955e0b1ad219d8b21c6942 Mon Sep 17 00:00:00 2001 From: Paul Zimmermann Date: Wed, 12 Feb 2020 16:45:11 +0100 Subject: use extended exponent range in mpc_log10 --- src/log10.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) 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); } -- cgit v1.2.1