summaryrefslogtreecommitdiff
path: root/add.c
diff options
context:
space:
mode:
authorzimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4>2001-10-25 13:45:14 +0000
committerzimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4>2001-10-25 13:45:14 +0000
commit2d33f61130122d8618f0b900d8dfb3810399077f (patch)
tree1b01c62c175b9f9933453d8a665d84c2a8186f22 /add.c
parent94bd84c58126962bcbcd1a8613672dfb1d775476 (diff)
downloadmpfr-2d33f61130122d8618f0b900d8dfb3810399077f.tar.gz
check overflow
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@1356 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'add.c')
-rw-r--r--add.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/add.c b/add.c
index c4f91398e..c4b982d11 100644
--- a/add.c
+++ b/add.c
@@ -351,6 +351,10 @@ mpfr_add1 (a, b, c, rnd_mode, diff_exp)
/* shift one bit to the right */
+ /* first check overflow */
+ if (MPFR_EXP(a) == __mpfr_emax)
+ return mpfr_set_overflow (a, rnd_mode, MPFR_SIGN(a));
+
c3 = (ap[0]&1) && (MPFR_PREC(a)%BITS_PER_MP_LIMB==0);
mpn_rshift(ap, ap, an, 1);
ap[an-1] += MP_LIMB_T_HIGHBIT;