diff options
author | Marco Bodrato <bodrato@mail.dm.unipi.it> | 2019-12-05 07:44:46 +0100 |
---|---|---|
committer | Marco Bodrato <bodrato@mail.dm.unipi.it> | 2019-12-05 07:44:46 +0100 |
commit | c426c9df282370efe8c879cbb8cc80484dd7fec7 (patch) | |
tree | 29067b7c7ed7f9adcbb4d1d94562b6b0c090fec8 /mini-gmp | |
parent | 2eb2b1a6b8a18f85e9ae9b508a74578e1efac7e5 (diff) | |
download | gmp-c426c9df282370efe8c879cbb8cc80484dd7fec7.tar.gz |
mini-gmp/: remove some sizeof(mp_limb_t)
Diffstat (limited to 'mini-gmp')
-rw-r--r-- | mini-gmp/mini-gmp.c | 2 | ||||
-rw-r--r-- | mini-gmp/mini-mpq.c | 27 |
2 files changed, 18 insertions, 11 deletions
diff --git a/mini-gmp/mini-gmp.c b/mini-gmp/mini-gmp.c index 5225183c4..78cd10344 100644 --- a/mini-gmp/mini-gmp.c +++ b/mini-gmp/mini-gmp.c @@ -4499,7 +4499,7 @@ mpz_export (void *r, size_t *countp, int order, size_t size, int endian, limb = u->_mp_d[un-1]; assert (limb != 0); - k = (sizeof (mp_limb_t) == 1); + k = (GMP_LIMB_BITS <= CHAR_BIT); if (!k) { do { diff --git a/mini-gmp/mini-mpq.c b/mini-gmp/mini-mpq.c index 99dc5c2e8..1f1f5a8a7 100644 --- a/mini-gmp/mini-mpq.c +++ b/mini-gmp/mini-mpq.c @@ -253,9 +253,10 @@ mpq_cmp_ui (const mpq_t q, unsigned long n, unsigned long d) { mpq_t t; assert (d != 0); - if (sizeof (unsigned long) == sizeof (mp_limb_t)) - return mpq_cmp (q, mpq_roinit_normal_nn (t, (mp_srcptr) &n, n != 0, (mp_srcptr) &d, 1)); - else { + if (ULONG_MAX <= GMP_LIMB_MAX) { + mp_limb_t nl = n, dl = d; + return mpq_cmp (q, mpq_roinit_normal_nn (t, &nl, n != 0, &dl, 1)); + } else { int ret; mpq_init (t); @@ -277,14 +278,20 @@ mpq_cmp_si (const mpq_t q, signed long n, unsigned long d) else { mpq_t t; - unsigned long l_n = GMP_NEG_CAST (unsigned long, n); - - if (sizeof (unsigned long) == sizeof (mp_limb_t)) - return mpq_cmp (q, mpq_roinit_normal_nn (t, (mp_srcptr) &l_n, -1, (mp_srcptr) &d, 1)); - mpq_roinit_normal_nn (t, mpq_numref (q)->_mp_d, - mpq_numref (q)->_mp_size, - mpq_denref (q)->_mp_d, mpq_denref (q)->_mp_size); - return - mpq_cmp_ui (t, l_n, d); + if (ULONG_MAX <= GMP_LIMB_MAX) + { + mp_limb_t nl = GMP_NEG_CAST (unsigned long, n), dl = d; + return mpq_cmp (q, mpq_roinit_normal_nn (t, &nl, -1, &dl, 1)); + } + else + { + unsigned long l_n = GMP_NEG_CAST (unsigned long, n); + + mpq_roinit_normal_nn (t, mpq_numref (q)->_mp_d, - mpq_numref (q)->_mp_size, + mpq_denref (q)->_mp_d, mpq_denref (q)->_mp_size); + return - mpq_cmp_ui (t, l_n, d); + } } } |