summaryrefslogtreecommitdiff
path: root/mpz
diff options
context:
space:
mode:
authorMarco Bodrato <bodrato@mail.dm.unipi.it>2012-06-08 21:54:49 +0200
committerMarco Bodrato <bodrato@mail.dm.unipi.it>2012-06-08 21:54:49 +0200
commitd278771c99ea01862912a8bb2d074ed26798992e (patch)
treed283f61612e80d0bc072deb689192c57a367f1d7 /mpz
parent621a1088c537d37f9c4e252d598436da428d067d (diff)
downloadgmp-d278771c99ea01862912a8bb2d074ed26798992e.tar.gz
(MPZ_NEWALLOC): New macro. Use it in mpq and some mpz.
Diffstat (limited to 'mpz')
-rw-r--r--mpz/bin_uiui.c10
-rw-r--r--mpz/oddfac_1.c12
-rw-r--r--mpz/prodlimbs.c4
3 files changed, 14 insertions, 12 deletions
diff --git a/mpz/bin_uiui.c b/mpz/bin_uiui.c
index 65979c297..a0b988fd5 100644
--- a/mpz/bin_uiui.c
+++ b/mpz/bin_uiui.c
@@ -294,9 +294,9 @@ mpz_bdiv_bin_uiui (mpz_ptr r, unsigned long int n, unsigned long int k)
nn -= np[nn - 1] == 0; /* normalisation */
- MPZ_REALLOC (r, nn);
+ kp = MPZ_NEWALLOC (r, nn);
SIZ(r) = nn;
- MPN_COPY (PTR(r), np, nn);
+ MPN_COPY (kp, np, nn);
TMP_FREE;
}
@@ -312,7 +312,7 @@ mpz_smallk_bin_uiui (mpz_ptr r, unsigned long int n, unsigned long int k)
count_leading_zeros (cnt, (mp_limb_t) n);
cnt = GMP_LIMB_BITS - cnt;
alloc = cnt * k / GMP_NUMB_BITS + 3; /* FIXME: ensure rounding is enough. */
- rp = MPZ_REALLOC (r, alloc);
+ rp = MPZ_NEWALLOC (r, alloc);
MAXFACS (nmax, n);
nmax = MIN (nmax, M);
@@ -411,8 +411,8 @@ mpz_smallkdc_bin_uiui (mpz_ptr r, unsigned long int n, unsigned long int k)
mp_limb_t buffer[ODD_CENTRAL_BINOMIAL_TABLE_LIMIT + 3];
mpz_t t;
- t->_mp_alloc = ODD_CENTRAL_BINOMIAL_TABLE_LIMIT + 3;
- t->_mp_d = buffer;
+ ALLOC (t) = ODD_CENTRAL_BINOMIAL_TABLE_LIMIT + 3;
+ PTR (t) = buffer;
if ((! BIN_UIUI_RECURSIVE_SMALLDC) || k <= ODD_FACTORIAL_TABLE_LIMIT)
mpz_smallk_bin_uiui (t, n, k);
else
diff --git a/mpz/oddfac_1.c b/mpz/oddfac_1.c
index 298ad14ef..a6bc9d263 100644
--- a/mpz/oddfac_1.c
+++ b/mpz/oddfac_1.c
@@ -284,8 +284,10 @@ mpz_oddfac_1 (mpz_ptr x, mp_limb_t n, unsigned flag)
}
else if (n <= ODD_DOUBLEFACTORIAL_TABLE_LIMIT + 1)
{
- MPZ_REALLOC (x, 2);
- umul_ppmm (PTR (x)[1], PTR (x)[0], __gmp_odd2fac_table[(n - 1) >> 1], __gmp_oddfac_table[n >> 1]);
+ mp_ptr px;
+
+ px = MPZ_NEWALLOC (x, 2);
+ umul_ppmm (px[1], px[0], __gmp_odd2fac_table[(n - 1) >> 1], __gmp_oddfac_table[n >> 1]);
SIZ (x) = 2;
}
else
@@ -375,7 +377,7 @@ mpz_oddfac_1 (mpz_ptr x, mp_limb_t n, unsigned flag)
factors = TMP_ALLOC_LIMBS (size);
do {
- mp_ptr square;
+ mp_ptr square, px;
mp_size_t nx, ns;
mp_limb_t cy;
TMP_DECL;
@@ -398,9 +400,9 @@ mpz_oddfac_1 (mpz_ptr x, mp_limb_t n, unsigned flag)
}
ns = SIZ (mswing);
nx = size + ns;
- MPZ_REALLOC (x, nx);
+ px = MPZ_NEWALLOC (x, nx);
ASSERT (ns <= size);
- cy = mpn_mul (PTR(x), square, size, PTR(mswing), ns); /* n!= n$ * floor(n/2)!^2 */
+ cy = mpn_mul (px, square, size, PTR(mswing), ns); /* n!= n$ * floor(n/2)!^2 */
TMP_FREE;
SIZ(x) = nx - (cy == 0);
diff --git a/mpz/prodlimbs.c b/mpz/prodlimbs.c
index bf676419c..867688755 100644
--- a/mpz/prodlimbs.c
+++ b/mpz/prodlimbs.c
@@ -66,7 +66,7 @@ mpz_prodlimbs (mpz_ptr x, mp_ptr factors, mp_size_t j)
size += cy != 0;
};
- prod = MPZ_REALLOC (x, size + 1);
+ prod = MPZ_NEWALLOC (x, size + 1);
cy = mpn_mul_1 (prod, factors, size, factors[i]);
prod[size] = cy;
@@ -86,7 +86,7 @@ mpz_prodlimbs (mpz_ptr x, mp_ptr factors, mp_size_t j)
j = mpz_prodlimbs (x2, factors + i, j);
i = mpz_prodlimbs (x1, factors, i);
size = i + j;
- prod = MPZ_REALLOC (x, size);
+ prod = MPZ_NEWALLOC (x, size);
if (i >= j)
cy = mpn_mul (prod, PTR(x1), i, PTR(x2), j);
else