summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorenge <enge@211d60ee-9f03-0410-a15a-8952a2c7a4e4>2012-06-30 16:09:08 +0000
committerenge <enge@211d60ee-9f03-0410-a15a-8952a2c7a4e4>2012-06-30 16:09:08 +0000
commit0985ddbdfc6964448066daf274272cb41cd5abaa (patch)
treef96b76dfdcf0dc6aea96b0ec0f43d57a275ac26d /src
parentf58aa83f95b1228342310f3faf3bcebb7e614f17 (diff)
downloadmpc-0985ddbdfc6964448066daf274272cb41cd5abaa.tar.gz
log.c: avoid mpfr_get_exp and mpfr_can_round on 0
git-svn-id: svn://scm.gforge.inria.fr/svn/mpc/trunk@1219 211d60ee-9f03-0410-a15a-8952a2c7a4e4
Diffstat (limited to 'src')
-rw-r--r--src/log.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/log.c b/src/log.c
index f60fee1..822dea5 100644
--- a/src/log.c
+++ b/src/log.c
@@ -135,6 +135,10 @@ mpc_log (mpc_ptr rop, mpc_srcptr op, mpc_rnd_t rnd){
mpfr_log (w, w, GMP_RNDN);
/* generic error of log: (2^(- exp(w)) + 0.5) ulp */
+ if (mpfr_zero_p (w))
+ /* impossible to round, switch to second algorithm */
+ break;
+
err = MPC_MAX (-mpfr_get_exp (w), 0) + 1;
/* number of lost digits */
ok = mpfr_can_round (w, prec - err, GMP_RNDN, GMP_RNDZ,