diff options
author | zimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4> | 2010-09-29 16:03:04 +0000 |
---|---|---|
committer | zimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4> | 2010-09-29 16:03:04 +0000 |
commit | 185793f681db0cb4b8fb4c03a072a79daa64da00 (patch) | |
tree | 3542ce4dbe4d259cc64ea9ed5ae542edd38ee789 /src/sqrt.c | |
parent | 9cfe7f7883710e842da212956360ecd79ecc40a6 (diff) | |
download | mpfr-185793f681db0cb4b8fb4c03a072a79daa64da00.tar.gz |
[src/mulders.c] added new function mpfr_divhigh_n() for short division
(not used yet), fixed comments and added error analysis
in mpfr_mulhigh_n() and mpfr_sqrhigh_n()
[src/sqrt.c] fixed ill-placed MPFR_TMP_MARK
[src/mparam_h.in] added default MPFR_DIVHIGH_TAB for mpfr_divhigh_n()
[src/round_p.c] typo
[src/mpfr-impl.h] added prototype for mpfr_divhigh_n
[src/mul.c] added comment, simplified code
[tune/tuneup.c] added tuning for mpfr_divhigh_n(), increased MAX_STEPS to get
a better tuning (will take longer), set tolerance to 1.0
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@7183 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'src/sqrt.c')
-rw-r--r-- | src/sqrt.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/sqrt.c b/src/sqrt.c index 8641e522e..2e890c7f3 100644 --- a/src/sqrt.c +++ b/src/sqrt.c @@ -81,6 +81,7 @@ mpfr_sqrt (mpfr_ptr r, mpfr_srcptr u, mpfr_rnd_t rnd_mode) } MPFR_SET_POS(r); + MPFR_TMP_MARK (marker); MPFR_UNSIGNED_MINUS_MODULO(sh,MPFR_PREC(r)); if (sh == 0 && rnd_mode == MPFR_RNDN) sh = GMP_NUMB_BITS; /* ugly case */ @@ -98,7 +99,6 @@ mpfr_sqrt (mpfr_ptr r, mpfr_srcptr u, mpfr_rnd_t rnd_mode) odd_exp = (unsigned int) MPFR_GET_EXP (u) & 1; inexact = -1; /* return ternary flag */ - MPFR_TMP_MARK (marker); sp = (mp_limb_t *) MPFR_TMP_ALLOC (rrsize * sizeof (mp_limb_t)); /* copy the most significant limbs of u to {sp, rrsize} */ @@ -225,5 +225,6 @@ mpfr_sqrt (mpfr_ptr r, mpfr_srcptr u, mpfr_rnd_t rnd_mode) MPFR_ASSERTN (expr >= MPFR_EMIN_MIN && expr <= MPFR_EMAX_MAX); MPFR_EXP (r) = expr; MPFR_TMP_FREE(marker); + return mpfr_check_range (r, inexact, rnd_mode); } |