diff options
author | enge <enge@211d60ee-9f03-0410-a15a-8952a2c7a4e4> | 2012-06-30 16:09:08 +0000 |
---|---|---|
committer | enge <enge@211d60ee-9f03-0410-a15a-8952a2c7a4e4> | 2012-06-30 16:09:08 +0000 |
commit | 0985ddbdfc6964448066daf274272cb41cd5abaa (patch) | |
tree | f96b76dfdcf0dc6aea96b0ec0f43d57a275ac26d /src | |
parent | f58aa83f95b1228342310f3faf3bcebb7e614f17 (diff) | |
download | mpc-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.c | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -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, |