diff options
author | vlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4> | 2020-03-23 15:38:06 +0000 |
---|---|---|
committer | vlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4> | 2020-03-23 15:38:06 +0000 |
commit | e4adaf82533039109881b3db5823ce0daf810a96 (patch) | |
tree | f05d30286cbcc72381e9aa812016e5346caded06 | |
parent | fd5d3140011f0503c614b411a2e90c28c169092d (diff) | |
download | mpfr-e4adaf82533039109881b3db5823ce0daf810a96.tar.gz |
[src]
* mpfr-impl.h: define MPFR_UBF_GET_EXP macro.
* add1.c, sub1.c: use this macro.
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@13799 280ebfd0-de03-0410-8827-d642c229c3f4
-rw-r--r-- | src/add1.c | 2 | ||||
-rw-r--r-- | src/mpfr-impl.h | 6 | ||||
-rw-r--r-- | src/sub1.c | 3 |
3 files changed, 8 insertions, 3 deletions
diff --git a/src/add1.c b/src/add1.c index b3811cfa9..6e0a33fc3 100644 --- a/src/add1.c +++ b/src/add1.c @@ -41,7 +41,7 @@ mpfr_add1 (mpfr_ptr a, mpfr_srcptr b, mpfr_srcptr c, mpfr_rnd_t rnd_mode) if (MPFR_UNLIKELY (MPFR_IS_UBF (b))) { - exp = mpfr_ubf_zexp2exp (MPFR_ZEXP (b)); + exp = MPFR_UBF_GET_EXP (b); if (exp > __gmpfr_emax) return mpfr_overflow (a, rnd_mode, MPFR_SIGN (b));; } diff --git a/src/mpfr-impl.h b/src/mpfr-impl.h index dcc586487..c98f6ab38 100644 --- a/src/mpfr-impl.h +++ b/src/mpfr-impl.h @@ -2594,6 +2594,12 @@ __MPFR_DECLSPEC mpfr_exp_t mpfr_ubf_diff_exp (mpfr_srcptr, mpfr_srcptr); ((void) (x)->_mpfr_exp, \ ((mpfr_ubf_ptr) (x))->_mpfr_zexp) +/* Like MPFR_GET_EXP, but accepts UBF (with exponent saturated to + the interval [MPFR_EXP_MIN,MPFR_EXP_MAX]). */ +#define MPFR_UBF_GET_EXP(x) \ + (MPFR_IS_UBF (x) ? mpfr_ubf_zexp2exp (MPFR_ZEXP (x)) : \ + MPFR_GET_EXP ((mpfr_ptr) (x))) + /* If x is a UBF, clear its mpz_t exponent. */ #define MPFR_UBF_CLEAR_EXP(x) \ ((void) (MPFR_IS_UBF (x) && (mpz_clear (MPFR_ZEXP (x)), 0))) diff --git a/src/sub1.c b/src/sub1.c index 41deef381..78458a0db 100644 --- a/src/sub1.c +++ b/src/sub1.c @@ -95,8 +95,7 @@ mpfr_sub1 (mpfr_ptr a, mpfr_srcptr b, mpfr_srcptr c, mpfr_rnd_t rnd_mode) if (MPFR_UNLIKELY (MPFR_IS_UBF (b) || MPFR_IS_UBF (c))) { - exp_b = MPFR_IS_UBF (b) ? - mpfr_ubf_zexp2exp (MPFR_ZEXP (b)) : MPFR_GET_EXP (b); + exp_b = MPFR_UBF_GET_EXP (b); diff_exp = mpfr_ubf_diff_exp (b, c); MPFR_LOG_MSG (("UBF: exp_b=%" MPFR_EXP_FSPEC "d%s " "diff_exp=%" MPFR_EXP_FSPEC "d%s\n", |