summaryrefslogtreecommitdiff
path: root/mpz/com.c
diff options
context:
space:
mode:
authorMarc Glisse <marc.glisse@inria.fr>2012-02-23 21:17:47 +0100
committerMarc Glisse <marc.glisse@inria.fr>2012-02-23 21:17:47 +0100
commit2b06ef413348321424141880c23fea600940e25b (patch)
treed2f66feff6187bda4f7440776914199d7eb0d5b1 /mpz/com.c
parent8e1827335d45a049e434a2b095558f14dd4bf36f (diff)
downloadgmp-2b06ef413348321424141880c23fea600940e25b.tar.gz
Use the macros ALLOC etc to access the fields of mpz_t in mpz/*.
Test mpz_abs when it requires a reallocation.
Diffstat (limited to 'mpz/com.c')
-rw-r--r--mpz/com.c22
1 files changed, 10 insertions, 12 deletions
diff --git a/mpz/com.c b/mpz/com.c
index c403b8ce6..9407134fe 100644
--- a/mpz/com.c
+++ b/mpz/com.c
@@ -24,7 +24,7 @@ along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
void
mpz_com (mpz_ptr dst, mpz_srcptr src)
{
- mp_size_t size = src->_mp_size;
+ mp_size_t size = SIZ (src);
mp_srcptr src_ptr;
mp_ptr dst_ptr;
@@ -34,17 +34,16 @@ mpz_com (mpz_ptr dst, mpz_srcptr src)
But this can be simplified using the identity -x = ~x + 1.
So we're going to compute (~~x) + 1 = x + 1! */
- if (dst->_mp_alloc < size + 1)
- _mpz_realloc (dst, size + 1);
+ MPZ_REALLOC (dst, size + 1);
- src_ptr = src->_mp_d;
- dst_ptr = dst->_mp_d;
+ src_ptr = PTR (src);
+ dst_ptr = PTR (dst);
if (UNLIKELY (size == 0))
{
/* special case, as mpn_add_1 wants size!=0 */
dst_ptr[0] = 1;
- dst->_mp_size = -1;
+ SIZ (dst) = -1;
return;
}
@@ -60,7 +59,7 @@ mpz_com (mpz_ptr dst, mpz_srcptr src)
}
/* Store a negative size, to indicate ones-extension. */
- dst->_mp_size = -size;
+ SIZ (dst) = -size;
}
else
{
@@ -69,16 +68,15 @@ mpz_com (mpz_ptr dst, mpz_srcptr src)
So we're going to compute ~~(x - 1) = x - 1! */
size = -size;
- if (dst->_mp_alloc < size)
- _mpz_realloc (dst, size);
+ MPZ_REALLOC (dst, size);
- src_ptr = src->_mp_d;
- dst_ptr = dst->_mp_d;
+ src_ptr = PTR (src);
+ dst_ptr = PTR (dst);
mpn_sub_1 (dst_ptr, src_ptr, size, (mp_limb_t) 1);
size -= dst_ptr[size - 1] == 0;
/* Store a positive size, to indicate zero-extension. */
- dst->_mp_size = size;
+ SIZ (dst) = size;
}
}