summaryrefslogtreecommitdiff
path: root/src/sqrt.c
diff options
context:
space:
mode:
authorzimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4>2010-09-29 16:03:04 +0000
committerzimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4>2010-09-29 16:03:04 +0000
commit185793f681db0cb4b8fb4c03a072a79daa64da00 (patch)
tree3542ce4dbe4d259cc64ea9ed5ae542edd38ee789 /src/sqrt.c
parent9cfe7f7883710e842da212956360ecd79ecc40a6 (diff)
downloadmpfr-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.c3
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);
}