diff options
author | Marco Bodrato <bodrato@mail.dm.unipi.it> | 2012-06-08 21:54:49 +0200 |
---|---|---|
committer | Marco Bodrato <bodrato@mail.dm.unipi.it> | 2012-06-08 21:54:49 +0200 |
commit | d278771c99ea01862912a8bb2d074ed26798992e (patch) | |
tree | d283f61612e80d0bc072deb689192c57a367f1d7 /mpz | |
parent | 621a1088c537d37f9c4e252d598436da428d067d (diff) | |
download | gmp-d278771c99ea01862912a8bb2d074ed26798992e.tar.gz |
(MPZ_NEWALLOC): New macro. Use it in mpq and some mpz.
Diffstat (limited to 'mpz')
-rw-r--r-- | mpz/bin_uiui.c | 10 | ||||
-rw-r--r-- | mpz/oddfac_1.c | 12 | ||||
-rw-r--r-- | mpz/prodlimbs.c | 4 |
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 |