summaryrefslogtreecommitdiff
path: root/primesieve.c
diff options
context:
space:
mode:
authorMarco Bodrato <bodrato@mail.dm.unipi.it>2016-01-09 22:36:14 +0100
committerMarco Bodrato <bodrato@mail.dm.unipi.it>2016-01-09 22:36:14 +0100
commitb2b895075376e3ab081fa11a986414b063a468e0 (patch)
tree39acba17a5c9ab42572022b253771da9b17bd502 /primesieve.c
parent3c17bc62b11117ad22c01143faf8ef97810f225b (diff)
downloadgmp-b2b895075376e3ab081fa11a986414b063a468e0.tar.gz
Equivalent but maybe cleaner code.
Diffstat (limited to 'primesieve.c')
-rw-r--r--primesieve.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/primesieve.c b/primesieve.c
index 55b4282b9..6ccf571a2 100644
--- a/primesieve.c
+++ b/primesieve.c
@@ -199,15 +199,17 @@ fill_bitpattern (mp_ptr bit_array, mp_size_t limbs, mp_limb_t offset)
offset %= 182;
SET_OFF2 (m21, m22, m23, SIEVE_2MSK1, SIEVE_2MSK2, SIEVE_2MSKT, offset, 182);
}
+ /* THINK: Consider handling odd values of 'limbs' outside the loop,
+ to have a single exit condition. */
do {
- *bit_array = m11 | m21;
+ bit_array[0] = m11 | m21;
if (--limbs == 0)
break;
ROTATE1 (m11, m12, 110);
- *++bit_array = m11 | m22;
+ bit_array[1] = m11 | m22;
+ bit_array += 2;
ROTATE1 (m11, m12, 110);
ROTATE2 (m21, m22, m23, 182);
- bit_array++;
} while (--limbs != 0);
return 4;
#else
@@ -222,13 +224,15 @@ fill_bitpattern (mp_ptr bit_array, mp_size_t limbs, mp_limb_t offset)
offset %= 70;
SET_OFF2 (mask, mask2, tail, SIEVE_MASK1, SIEVE_MASK2, SIEVE_MASKT, offset, 70);
}
+ /* THINK: Consider handling odd values of 'limbs' outside the loop,
+ to have a single exit condition. */
do {
- *bit_array = mask;
+ bit_array[0] = mask;
if (--limbs == 0)
break;
- *++bit_array = mask2;
+ bit_array[1] = mask2;
+ bit_array += 2;
ROTATE2 (mask, mask2, tail, 70);
- bit_array++;
} while (--limbs != 0);
return 2;
#else