diff options
author | vlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4> | 2001-10-19 14:13:10 +0000 |
---|---|---|
committer | vlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4> | 2001-10-19 14:13:10 +0000 |
commit | d520385c5de29c6d303a54f63c8c377711e4f8ba (patch) | |
tree | 52449f4a82ba0cec056bee45440531a579ef8a1c /set_si.c | |
parent | 8a15c15a10ebc95c5918433137d522f49314e7c9 (diff) | |
download | mpfr-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.c | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -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) |