From 10e075b830286e772482fbeedd649d346475c661 Mon Sep 17 00:00:00 2001 From: enge Date: Thu, 18 Nov 2010 19:05:55 +0000 Subject: sqrt.c: reimplement mpfr_min_prec for mpfr<3 sqrt (1+epsilon*i) is computed correctly when rounding to nearest, close to infinite loop is still present with directed rounding git-svn-id: svn://scm.gforge.inria.fr/svn/mpc/trunk@853 211d60ee-9f03-0410-a15a-8952a2c7a4e4 --- NEWS | 1 + src/sqrt.c | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/NEWS b/NEWS index 6cc46c0..0436bbd 100644 --- a/NEWS +++ b/NEWS @@ -8,6 +8,7 @@ Changes in version 0.8.3: - Bug fixes: - trigonometric functions: infinite loop due to overflow for large arguments - exp: close to infinite loop for argument close to 0 + - sqrt: close to infinite loop for argument close to 1 - Minimally required library versions: gmp 4.3.2, mpfr 2.4.2 Changes in version 0.8.2: diff --git a/src/sqrt.c b/src/sqrt.c index a44c4c8..f30b64d 100644 --- a/src/sqrt.c +++ b/src/sqrt.c @@ -21,6 +21,13 @@ MA 02111-1307, USA. */ #include "mpc-impl.h" +#if MPFR_VERSION_MAJOR < 3 +#define mpfr_min_prec(x) \ + ( ((prec + BITS_PER_MP_LIMB - 1) / BITS_PER_MP_LIMB) * BITS_PER_MP_LIMB \ + - mpn_scan1 (x->_mpfr_d, 0)) +#endif + + int mpc_sqrt (mpc_ptr a, mpc_srcptr b, mpc_rnd_t rnd) { -- cgit v1.2.1