aboutsummaryrefslogtreecommitdiff
path: root/coreutils
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2017-04-13 13:34:40 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2017-04-13 13:34:40 +0200
commit021d50405b5819df9e86a3f1354e45018885517e (patch)
tree1c47f569cd6bc2f165b183cde987d50907f1683b /coreutils
parenta3de0b3b86deb37c2adc993c6357c1a31b7ecb5b (diff)
downloadbusybox-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.c8
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),