diff options
author | zimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4> | 2009-10-13 06:37:15 +0000 |
---|---|---|
committer | zimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4> | 2009-10-13 06:37:15 +0000 |
commit | 27b6d7edab02ec27ef3ccf36b7ba1c2b4920c85c (patch) | |
tree | 2875d2e730541ab836539d140a540c65421ae024 /li2.c | |
parent | c36b71dfaf2b70aa2c958657ee3746eb0bc49bd9 (diff) | |
download | mpfr-27b6d7edab02ec27ef3ccf36b7ba1c2b4920c85c.tar.gz |
[li2.c] fixed bug when x is near 0
[tli2.c] added new test
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@6512 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'li2.c')
-rw-r--r-- | li2.c | 3 |
1 files changed, 3 insertions, 0 deletions
@@ -276,6 +276,8 @@ mpfr_li2 (mpfr_ptr y, mpfr_srcptr x, mpfr_rnd_t rnd_mode) { mpfr_ui_sub (u, 1, x, MPFR_RNDN); mpfr_log (u, u, MPFR_RNDU); + if (MPFR_IS_ZERO(u)) + goto next_m; mpfr_neg (u, u, MPFR_RNDN); /* u = -log(1-x) */ expo_l = MPFR_GET_EXP (u); k = li2_series (s, u, MPFR_RNDU); @@ -292,6 +294,7 @@ mpfr_li2 (mpfr_ptr y, mpfr_srcptr x, mpfr_rnd_t rnd_mode) if (MPFR_CAN_ROUND (s, (mp_exp_t) m - err, yp, rnd_mode)) break; + next_m: MPFR_ZIV_NEXT (loop, m); mpfr_set_prec (u, m); mpfr_set_prec (s, m); |