diff options
author | zimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4> | 2016-12-07 17:03:54 +0000 |
---|---|---|
committer | zimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4> | 2016-12-07 17:03:54 +0000 |
commit | 787c2401d7effb6368e986c7e0d0a53e5b7d5435 (patch) | |
tree | a9a412fd525693f943e75ec280fde4852f70a926 /src/add1sp.c | |
parent | 94b3e5693f2621cb236557641b05bdb17df39b61 (diff) | |
download | mpfr-787c2401d7effb6368e986c7e0d0a53e5b7d5435.tar.gz |
added rounding code for RNDF in special routines for 1 and 2 limbs
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/branches/faithful@10988 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'src/add1sp.c')
-rw-r--r-- | src/add1sp.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/add1sp.c b/src/add1sp.c index e2ca96c7c..058bf63e4 100644 --- a/src/add1sp.c +++ b/src/add1sp.c @@ -185,8 +185,9 @@ mpfr_add1sp1 (mpfr_ptr a, mpfr_srcptr b, mpfr_srcptr c, mpfr_rnd_t rnd_mode, return mpfr_overflow (a, rnd_mode, MPFR_SIGN(a)); MPFR_SET_EXP (a, bx); - if (rb == 0 && sb == 0) - return 0; /* idem than MPFR_RET(0) and faster */ + if ((rb == 0 && sb == 0) || (rnd_mode == MPFR_RNDF)) + return 0; /* idem than MPFR_RET(0) and faster, ternary value and inexact flag + are unspecified for MPFR_RNDF */ else if (rnd_mode == MPFR_RNDN) { if (rb == 0 || (rb && sb == 0 && @@ -308,8 +309,9 @@ mpfr_add1sp2 (mpfr_ptr a, mpfr_srcptr b, mpfr_srcptr c, mpfr_rnd_t rnd_mode, return mpfr_overflow (a, rnd_mode, MPFR_SIGN(a)); MPFR_SET_EXP (a, bx); - if (rb == 0 && sb == 0) - return 0; /* idem than MPFR_RET(0) and faster */ + if ((rb == 0 && sb == 0) || rnd_mode == MPFR_RNDF) + return 0; /* idem than MPFR_RET(0) and faster, ternary value and inexact flag + are unspecified for RNDF */ else if (rnd_mode == MPFR_RNDN) { if (rb == 0 || (rb && sb == 0 && |