summaryrefslogtreecommitdiff
path: root/src/add1sp.c
diff options
context:
space:
mode:
authorzimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4>2016-12-07 17:03:54 +0000
committerzimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4>2016-12-07 17:03:54 +0000
commit787c2401d7effb6368e986c7e0d0a53e5b7d5435 (patch)
treea9a412fd525693f943e75ec280fde4852f70a926 /src/add1sp.c
parent94b3e5693f2621cb236557641b05bdb17df39b61 (diff)
downloadmpfr-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.c10
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 &&