summaryrefslogtreecommitdiff
path: root/mpf
diff options
context:
space:
mode:
authorTorbjorn Granlund <tege@gmplib.org>2012-02-11 12:51:21 +0100
committerTorbjorn Granlund <tege@gmplib.org>2012-02-11 12:51:21 +0100
commita4cdc3d613b1571b7b6e6229dc79fedb0dbfa99d (patch)
tree490ceb211d0417d0c0db3237e16a143e8e1d9809 /mpf
parent742c01ed5a51098862b9515c373022e71c80a412 (diff)
downloadgmp-a4cdc3d613b1571b7b6e6229dc79fedb0dbfa99d.tar.gz
(ABS_CAST): New macro.
Diffstat (limited to 'mpf')
-rw-r--r--mpf/cmp_si.c11
-rw-r--r--mpf/get_si.c2
-rw-r--r--mpf/iset_si.c2
-rw-r--r--mpf/set_si.c2
4 files changed, 9 insertions, 8 deletions
diff --git a/mpf/cmp_si.c b/mpf/cmp_si.c
index 7e4009c22..9b364a387 100644
--- a/mpf/cmp_si.c
+++ b/mpf/cmp_si.c
@@ -29,6 +29,7 @@ mpf_cmp_si (mpf_srcptr u, long int vval) __GMP_NOTHROW
mp_exp_t uexp;
mp_limb_t ulimb;
int usign;
+ unsigned long abs_vval;
uexp = u->_mp_exp;
usize = u->_mp_size;
@@ -55,13 +56,13 @@ mpf_cmp_si (mpf_srcptr u, long int vval) __GMP_NOTHROW
usign = usize >= 0 ? 1 : -1;
usize = ABS (usize);
- vval = ABS (vval);
+ abs_vval = ABS_CAST (unsigned long, vval);
/* 2. Are the exponents different (V's exponent == 1)? */
#if GMP_NAIL_BITS != 0
- if (uexp > 1 + ((unsigned long) vval > GMP_NUMB_MAX))
+ if (uexp > 1 + (abs_vval > GMP_NUMB_MAX))
return usign;
- if (uexp < 1 + ((unsigned long) vval > GMP_NUMB_MAX))
+ if (uexp < 1 + (abs_vval > GMP_NUMB_MAX))
return -usign;
#else
if (uexp > 1)
@@ -85,9 +86,9 @@ mpf_cmp_si (mpf_srcptr u, long int vval) __GMP_NOTHROW
usize--;
/* 3. Compare the most significant mantissa limb with V. */
- if (ulimb > (unsigned long) vval)
+ if (ulimb > abs_vval)
return usign;
- else if (ulimb < (unsigned long) vval)
+ else if (ulimb < abs_vval)
return -usign;
/* Ignore zeroes at the low end of U. */
diff --git a/mpf/get_si.c b/mpf/get_si.c
index 5c6fd5e19..e3d18e89f 100644
--- a/mpf/get_si.c
+++ b/mpf/get_si.c
@@ -72,5 +72,5 @@ mpf_get_si (mpf_srcptr f) __GMP_NOTHROW
return fl & LONG_MAX;
else
/* this form necessary to correctly handle -0x80..00 */
- return ~ ((fl - 1) & LONG_MAX);
+ return -1 - (long) ((fl - 1) & LONG_MAX);
}
diff --git a/mpf/iset_si.c b/mpf/iset_si.c
index be5490807..a689d0d05 100644
--- a/mpf/iset_si.c
+++ b/mpf/iset_si.c
@@ -31,7 +31,7 @@ mpf_init_set_si (mpf_ptr r, long int val)
r->_mp_prec = prec;
r->_mp_d = (mp_ptr) (*__gmp_allocate_func) ((prec + 1) * BYTES_PER_MP_LIMB);
- vl = (mp_limb_t) (unsigned long int) (val >= 0 ? val : -val);
+ vl = (mp_limb_t) ABS_CAST (unsigned long int, val);
r->_mp_d[0] = vl & GMP_NUMB_MASK;
size = vl != 0;
diff --git a/mpf/set_si.c b/mpf/set_si.c
index 9c5605b5e..aa7b4ee84 100644
--- a/mpf/set_si.c
+++ b/mpf/set_si.c
@@ -27,7 +27,7 @@ mpf_set_si (mpf_ptr dest, long val)
mp_size_t size;
mp_limb_t vl;
- vl = (mp_limb_t) (unsigned long int) (val >= 0 ? val : -val);
+ vl = (mp_limb_t) ABS_CAST (unsigned long int, val);
dest->_mp_d[0] = vl & GMP_NUMB_MASK;
size = vl != 0;