summaryrefslogtreecommitdiff
path: root/mpz/fac_ui.c
diff options
context:
space:
mode:
authorMarco Bodrato <bodrato@mail.dm.unipi.it>2012-01-26 22:19:40 +0100
committerMarco Bodrato <bodrato@mail.dm.unipi.it>2012-01-26 22:19:40 +0100
commitc714a4ab05ae98478ceebd291ce503d3c827a015 (patch)
treeec130909f478b6762a2b94a6e4178a506967833e /mpz/fac_ui.c
parentc212d72f36b9980e9b18791de62e07a76f4b40e8 (diff)
downloadgmp-c714a4ab05ae98478ceebd291ce503d3c827a015.tar.gz
mpz_prodlimbs: removed from mpz/fac_ui.c, now in a new file.
Diffstat (limited to 'mpz/fac_ui.c')
-rw-r--r--mpz/fac_ui.c67
1 files changed, 0 insertions, 67 deletions
diff --git a/mpz/fac_ui.c b/mpz/fac_ui.c
index 58be91b82..b1801509a 100644
--- a/mpz/fac_ui.c
+++ b/mpz/fac_ui.c
@@ -294,73 +294,6 @@ bitwise_primesieve (mp_ptr bit_array, mp_limb_t n)
#undef BLOCK_SIZE
/*********************************************************/
-/* Section list-prod: product of a list -> mpz_t */
-/*********************************************************/
-
-/* FIXME: should be tuned */
-#ifndef RECURSIVE_PROD_THRESHOLD
-#define RECURSIVE_PROD_THRESHOLD (MUL_TOOM22_THRESHOLD|(MUL_TOOM22_THRESHOLD>>1))
-#endif
-
-/* Computes the product of the j>1 limbs pointed by factors, puts the
- result in x.
- The list in {factors, j} is overwritten.
-*/
-
-static void
-mpz_prodlimbs (mpz_ptr x, mp_limb_t *factors, mp_limb_t j)
-{
- mp_limb_t i;
- mp_size_t size;
- mp_ptr prod;
-
- ASSERT (j > 1);
- ASSERT (RECURSIVE_PROD_THRESHOLD > 3);
-
- if (BELOW_THRESHOLD (j, RECURSIVE_PROD_THRESHOLD)) {
- mp_limb_t cy;
-
- j--;
- size = 1;
-
- for (i = 1; i < j; i++)
- {
- cy = mpn_mul_1 (factors, factors, size, factors[i]);
- factors[size] = cy;
- size += cy != 0;
- };
-
- prod = MPZ_REALLOC (x, size + 1);
-
- cy = mpn_mul_1 (prod, factors, size, factors[i]);
- prod[size] = cy;
- SIZ (x) = size + (cy != 0);
- } else {
- mpz_t x1, x2;
- TMP_DECL;
-
- i = j >> 1;
- TMP_MARK;
-
- MPZ_TMP_INIT (x2, j - i);
-
- PTR (x1) = factors + i;
- ALLOC (x1) = j - i;
- mpz_prodlimbs (x2, factors + i, j - i);
- mpz_prodlimbs (x1, factors, i);
- size = SIZ (x1) + SIZ (x2);
- prod = MPZ_REALLOC (x, size);
- if (SIZ (x1) >= SIZ (x2))
- i = mpn_mul (prod, PTR(x1), SIZ(x1), PTR(x2), SIZ(x2));
- else
- i = mpn_mul (prod, PTR(x2), SIZ(x2), PTR(x1), SIZ(x1));
- SIZ (x) = size - (i == 0);
-
- TMP_FREE;
- }
-}
-
-/*********************************************************/
/* Section swing: swing factorial */
/*********************************************************/