diff options
author | Marco Bodrato <bodrato@mail.dm.unipi.it> | 2016-01-09 22:36:14 +0100 |
---|---|---|
committer | Marco Bodrato <bodrato@mail.dm.unipi.it> | 2016-01-09 22:36:14 +0100 |
commit | b2b895075376e3ab081fa11a986414b063a468e0 (patch) | |
tree | 39acba17a5c9ab42572022b253771da9b17bd502 /primesieve.c | |
parent | 3c17bc62b11117ad22c01143faf8ef97810f225b (diff) | |
download | gmp-b2b895075376e3ab081fa11a986414b063a468e0.tar.gz |
Equivalent but maybe cleaner code.
Diffstat (limited to 'primesieve.c')
-rw-r--r-- | primesieve.c | 16 |
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 |