From 0985ddbdfc6964448066daf274272cb41cd5abaa Mon Sep 17 00:00:00 2001 From: enge Date: Sat, 30 Jun 2012 16:09:08 +0000 Subject: 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 --- src/log.c | 4 ++++ 1 file changed, 4 insertions(+) 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, -- cgit v1.2.1