diff options
author | zimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4> | 2002-03-27 14:37:39 +0000 |
---|---|---|
committer | zimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4> | 2002-03-27 14:37:39 +0000 |
commit | ac4b29193891f7a5c5d6a93b751612b6585b45fb (patch) | |
tree | 0fcae6d0f7c72812c0042886ae2b4c97ce9b5fca /cmp_ui.c | |
parent | 29839d0970b4917854ef353dbb6ca2fcc50f4e5f (diff) | |
download | mpfr-ac4b29193891f7a5c5d6a93b751612b6585b45fb.tar.gz |
fixed pb in cmp_si when i = -2^31 (then beware that -1 * i < 0 !!!)
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@1785 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'cmp_ui.c')
-rw-r--r-- | cmp_ui.c | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -78,10 +78,13 @@ mpfr_cmp_si_2exp (mpfr_srcptr b, long int i, int f ) { int e, k, bn, si; mp_limb_t c, *bp; - if (MPFR_IS_NAN(b)) return 1; + if (MPFR_IS_NAN(b)) + return 1; si = (i<0) ? -1 : 1; /* sign of i */ - if (MPFR_SIGN(b) * i < 0 || MPFR_IS_INF(b)) return MPFR_SIGN(b); + if ((MPFR_SIGN(b) * si < 0) || MPFR_IS_INF(b)) + return MPFR_SIGN(b); + /* both signs differ */ else if (!MPFR_NOTZERO(b) || (i==0)) { /* one is zero */ if (i==0) return ((MPFR_NOTZERO(b)) ? MPFR_SIGN(b) : 0); |