summaryrefslogtreecommitdiff
path: root/set_si.c
diff options
context:
space:
mode:
authorvlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4>2001-10-19 14:13:10 +0000
committervlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4>2001-10-19 14:13:10 +0000
commitd520385c5de29c6d303a54f63c8c377711e4f8ba (patch)
tree52449f4a82ba0cec056bee45440531a579ef8a1c /set_si.c
parent8a15c15a10ebc95c5918433137d522f49314e7c9 (diff)
downloadmpfr-d520385c5de29c6d303a54f63c8c377711e4f8ba.tar.gz
Underflow/overflow check.
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@1307 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'set_si.c')
-rw-r--r--set_si.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/set_si.c b/set_si.c
index 2dbe51bc1..e71a9e7a9 100644
--- a/set_si.c
+++ b/set_si.c
@@ -35,7 +35,7 @@ mpfr_set_si (x, i, rnd_mode)
mp_rnd_t rnd_mode;
#endif
{
- int inex = 0;
+ int inex;
mp_size_t xn;
unsigned int cnt, nbits;
mp_limb_t ai, *xp;
@@ -45,7 +45,7 @@ mpfr_set_si (x, i, rnd_mode)
{
MPFR_SET_ZERO(x);
if (MPFR_SIGN(x) < 0) MPFR_CHANGE_SIGN(x);
- return 0;
+ MPFR_RET(0);
}
xn = (MPFR_PREC(x)-1)/BITS_PER_MP_LIMB;
@@ -58,6 +58,9 @@ mpfr_set_si (x, i, rnd_mode)
MPN_ZERO(xp, xn);
MPFR_EXP(x) = nbits = BITS_PER_MP_LIMB - cnt;
+ inex = mpfr_check_range(x, rnd_mode);
+ if (inex)
+ return inex; /* underflow or overflow */
/* round if MPFR_PREC(x) smaller than length of i */
if (MPFR_PREC(x) < nbits)