diff options
author | Torbjorn Granlund <tege@gmplib.org> | 2012-02-11 12:51:21 +0100 |
---|---|---|
committer | Torbjorn Granlund <tege@gmplib.org> | 2012-02-11 12:51:21 +0100 |
commit | a4cdc3d613b1571b7b6e6229dc79fedb0dbfa99d (patch) | |
tree | 490ceb211d0417d0c0db3237e16a143e8e1d9809 /mpf | |
parent | 742c01ed5a51098862b9515c373022e71c80a412 (diff) | |
download | gmp-a4cdc3d613b1571b7b6e6229dc79fedb0dbfa99d.tar.gz |
(ABS_CAST): New macro.
Diffstat (limited to 'mpf')
-rw-r--r-- | mpf/cmp_si.c | 11 | ||||
-rw-r--r-- | mpf/get_si.c | 2 | ||||
-rw-r--r-- | mpf/iset_si.c | 2 | ||||
-rw-r--r-- | mpf/set_si.c | 2 |
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; |