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 /mpz | |
parent | 742c01ed5a51098862b9515c373022e71c80a412 (diff) | |
download | gmp-a4cdc3d613b1571b7b6e6229dc79fedb0dbfa99d.tar.gz |
(ABS_CAST): New macro.
Diffstat (limited to 'mpz')
-rw-r--r-- | mpz/cmp_si.c | 7 | ||||
-rw-r--r-- | mpz/get_si.c | 4 | ||||
-rw-r--r-- | mpz/iset_si.c | 2 | ||||
-rw-r--r-- | mpz/mul_i.h | 2 | ||||
-rw-r--r-- | mpz/set_si.c | 2 |
5 files changed, 9 insertions, 8 deletions
diff --git a/mpz/cmp_si.c b/mpz/cmp_si.c index a8acdeffe..1919bd33e 100644 --- a/mpz/cmp_si.c +++ b/mpz/cmp_si.c @@ -28,6 +28,7 @@ _mpz_cmp_si (mpz_srcptr u, signed long int v_digit) __GMP_NOTHROW mp_size_t usize = u->_mp_size; mp_size_t vsize; mp_limb_t u_digit; + unsigned long int absv_digit = (unsigned long int) v_digit; #if GMP_NAIL_BITS != 0 /* FIXME. This isn't very pretty. */ @@ -45,7 +46,7 @@ _mpz_cmp_si (mpz_srcptr u, signed long int v_digit) __GMP_NOTHROW else if (v_digit < 0) { vsize = -1; - v_digit = -v_digit; + absv_digit = -absv_digit; } if (usize != vsize) @@ -56,10 +57,10 @@ _mpz_cmp_si (mpz_srcptr u, signed long int v_digit) __GMP_NOTHROW u_digit = u->_mp_d[0]; - if (u_digit == (mp_limb_t) (unsigned long) v_digit) + if (u_digit == (mp_limb_t) absv_digit) return 0; - if (u_digit > (mp_limb_t) (unsigned long) v_digit) + if (u_digit > (mp_limb_t) absv_digit) return usize; else return -usize; diff --git a/mpz/get_si.c b/mpz/get_si.c index d24a4e47d..2f8a4738c 100644 --- a/mpz/get_si.c +++ b/mpz/get_si.c @@ -34,10 +34,10 @@ mpz_get_si (mpz_srcptr z) __GMP_NOTHROW #endif if (size > 0) - return (long) zl & LONG_MAX; + return zl & LONG_MAX; else if (size < 0) /* This expression is necessary to properly handle 0x80000000 */ - return ~(((long) zl - 1L) & LONG_MAX); + return -1 - (long) ((zl - 1) & LONG_MAX); else return 0; } diff --git a/mpz/iset_si.c b/mpz/iset_si.c index 0eb3881f4..64e51b386 100644 --- a/mpz/iset_si.c +++ b/mpz/iset_si.c @@ -31,7 +31,7 @@ mpz_init_set_si (mpz_ptr dest, signed long int val) dest->_mp_alloc = 1; dest->_mp_d = (mp_ptr) (*__gmp_allocate_func) (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); dest->_mp_d[0] = vl & GMP_NUMB_MASK; size = vl != 0; diff --git a/mpz/mul_i.h b/mpz/mul_i.h index d86196049..2de3fe0b5 100644 --- a/mpz/mul_i.h +++ b/mpz/mul_i.h @@ -26,7 +26,7 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */ #ifdef OPERATION_mul_si #define FUNCTION mpz_mul_si #define MULTIPLICAND_UNSIGNED -#define MULTIPLICAND_ABS(x) ((unsigned long) ABS(x)) +#define MULTIPLICAND_ABS(x) ABS_CAST(unsigned long, (x)) #endif #ifdef OPERATION_mul_ui diff --git a/mpz/set_si.c b/mpz/set_si.c index 7c73047e3..bffb2ee33 100644 --- a/mpz/set_si.c +++ b/mpz/set_si.c @@ -27,7 +27,7 @@ mpz_set_si (mpz_ptr dest, signed long int 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; |