diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2017-04-13 13:34:40 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2017-04-13 13:34:40 +0200 |
commit | 021d50405b5819df9e86a3f1354e45018885517e (patch) | |
tree | 1c47f569cd6bc2f165b183cde987d50907f1683b /coreutils | |
parent | a3de0b3b86deb37c2adc993c6357c1a31b7ecb5b (diff) | |
download | busybox-w32-021d50405b5819df9e86a3f1354e45018885517e.tar.gz busybox-w32-021d50405b5819df9e86a3f1354e45018885517e.tar.bz2 busybox-w32-021d50405b5819df9e86a3f1354e45018885517e.zip |
factor: improve comments for sieving logic
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'coreutils')
-rw-r--r-- | coreutils/factor.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/coreutils/factor.c b/coreutils/factor.c index 7adc2385a..5e23c6ca7 100644 --- a/coreutils/factor.c +++ b/coreutils/factor.c | |||
@@ -73,7 +73,7 @@ static NOINLINE void factorize(wide_t N) | |||
73 | MULTIPLE_OF_3 = 1 << 2, | 73 | MULTIPLE_OF_3 = 1 << 2, |
74 | MULTIPLE_OF_5 = 1 << 6, | 74 | MULTIPLE_OF_5 = 1 << 6, |
75 | MULTIPLE_OF_7 = 1 << 11, | 75 | MULTIPLE_OF_7 = 1 << 11, |
76 | MULTIPLE_3_5_7 = MULTIPLE_OF_3 | MULTIPLE_OF_5 | MULTIPLE_OF_7, | 76 | MULTIPLE_DETECTED = MULTIPLE_OF_3 | MULTIPLE_OF_5 | MULTIPLE_OF_7, |
77 | }; | 77 | }; |
78 | unsigned sieve_word; | 78 | unsigned sieve_word; |
79 | 79 | ||
@@ -102,9 +102,13 @@ static NOINLINE void factorize(wide_t N) | |||
102 | // count5 = 6; | 102 | // count5 = 6; |
103 | // count7 = 9; | 103 | // count7 = 9; |
104 | sieve_word = 0 | 104 | sieve_word = 0 |
105 | /* initial count for SHIFT_n is (n-1)/2*3: */ | ||
105 | + (MULTIPLE_OF_3 - 3 * SHIFT_3) | 106 | + (MULTIPLE_OF_3 - 3 * SHIFT_3) |
106 | + (MULTIPLE_OF_5 - 6 * SHIFT_5) | 107 | + (MULTIPLE_OF_5 - 6 * SHIFT_5) |
107 | + (MULTIPLE_OF_7 - 9 * SHIFT_7) | 108 | + (MULTIPLE_OF_7 - 9 * SHIFT_7) |
109 | //+ (MULTIPLE_OF_11 - 15 * SHIFT_11) | ||
110 | //+ (MULTIPLE_OF_11 - 18 * SHIFT_13) | ||
111 | //+ (MULTIPLE_OF_11 - 24 * SHIFT_17) | ||
108 | ; | 112 | ; |
109 | factor = 3; | 113 | factor = 3; |
110 | for (;;) { | 114 | for (;;) { |
@@ -133,7 +137,7 @@ static NOINLINE void factorize(wide_t N) | |||
133 | // if (count3 && count5 && count7) | 137 | // if (count3 && count5 && count7) |
134 | // continue; | 138 | // continue; |
135 | sieve_word += INCREMENT_EACH; | 139 | sieve_word += INCREMENT_EACH; |
136 | if (!(sieve_word & MULTIPLE_3_5_7)) | 140 | if (!(sieve_word & MULTIPLE_DETECTED)) |
137 | continue; | 141 | continue; |
138 | /* | 142 | /* |
139 | * "factor" is multiple of 3 33% of the time (count3 reached 0), | 143 | * "factor" is multiple of 3 33% of the time (count3 reached 0), |