summaryrefslogtreecommitdiff
path: root/expm1.c
diff options
context:
space:
mode:
authorvlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4>2007-06-20 10:03:03 +0000
committervlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4>2007-06-20 10:03:03 +0000
commit11583c1ff067f8d42d2cdfb03c59b24044537ceb (patch)
treea58bc953dab289d718d614c454c2b5cc82b5015e /expm1.c
parent0d64e3be5e22412ef59e19b086c35c5cce9b1052 (diff)
downloadmpfr-11583c1ff067f8d42d2cdfb03c59b24044537ceb.tar.gz
Added MPFR_SMALL_INPUT_AFTER_SAVE_EXPO macro; updated expm1.c to use
this variant (and moved MPFR_SAVE_EXPO_MARK after the test ex < 0). git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@4544 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'expm1.c')
-rw-r--r--expm1.c16
1 files changed, 6 insertions, 10 deletions
diff --git a/expm1.c b/expm1.c
index 3040481c1..64bcc64c7 100644
--- a/expm1.c
+++ b/expm1.c
@@ -64,21 +64,19 @@ mpfr_expm1 (mpfr_ptr y, mpfr_srcptr x , mp_rnd_t rnd_mode)
}
}
- MPFR_SAVE_EXPO_MARK (expo);
-
ex = MPFR_GET_EXP (x);
if (ex < 0)
{
/* For -1 < x < 0, abs(expm1(x)-x) < x^2/2.
For 0 < x < 1, abs(expm1(x)-x) < x^2. */
if (MPFR_IS_POS (x))
- MPFR_FAST_COMPUTE_IF_SMALL_INPUT (y, x, - ex, 0, 1, rnd_mode,
- { inexact = _inexact; goto end; });
+ MPFR_FAST_COMPUTE_IF_SMALL_INPUT (y, x, - ex, 0, 1, rnd_mode, {});
else
- MPFR_FAST_COMPUTE_IF_SMALL_INPUT (y, x, - ex, 1, 0, rnd_mode,
- { inexact = _inexact; goto end; });
+ MPFR_FAST_COMPUTE_IF_SMALL_INPUT (y, x, - ex, 1, 0, rnd_mode, {});
}
+ MPFR_SAVE_EXPO_MARK (expo);
+
if (MPFR_IS_NEG (x) && ex > 5) /* x <= -32 */
{
mpfr_t minus_one, t;
@@ -97,10 +95,8 @@ mpfr_expm1 (mpfr_ptr y, mpfr_srcptr x , mp_rnd_t rnd_mode)
<= 2^max(MPFR_EMIN_MIN,-LONG_MAX,ceil(x/ln(2)+epsilon))
with epsilon > 0 */
mpfr_clear (t);
- MPFR_FAST_COMPUTE_IF_SMALL_INPUT (y, minus_one, err, 0, 0, rnd_mode,
- { mpfr_clear (minus_one);
- inexact = _inexact;
- goto end; });
+ MPFR_SMALL_INPUT_AFTER_SAVE_EXPO (y, minus_one, err, 0, 0, rnd_mode,
+ expo, { mpfr_clear (minus_one); });
mpfr_clear (minus_one);
}