summaryrefslogtreecommitdiff
path: root/cmp_ui.c
diff options
context:
space:
mode:
authorzimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4>2002-03-27 14:37:39 +0000
committerzimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4>2002-03-27 14:37:39 +0000
commitac4b29193891f7a5c5d6a93b751612b6585b45fb (patch)
tree0fcae6d0f7c72812c0042886ae2b4c97ce9b5fca /cmp_ui.c
parent29839d0970b4917854ef353dbb6ca2fcc50f4e5f (diff)
downloadmpfr-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.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/cmp_ui.c b/cmp_ui.c
index c678d2ed0..410d1de2f 100644
--- a/cmp_ui.c
+++ b/cmp_ui.c
@@ -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);