| line |
true |
false |
branch |
|
159
|
85703 |
2387 |
for (i = 2, p = 3; p*p < start + (16*PREV_SIEVE_SIZE); p = primes[++i]) |
|
160
|
17894 |
67809 |
for (j = (start == 0) ? p*p/2 : (p-1) - ((start+(p-1))/2) % p; |
|
161
|
13073251 |
85703 |
j < (8*PREV_SIEVE_SIZE); j += p) |
|
169
|
0 |
1552313 |
if (n <= 3) return (n == 3) ? 2 : 0; |
|
|
0 |
0 |
if (n <= 3) return (n == 3) ? 2 : 0; |
|
170
|
0 |
1552313 |
if (n > sieve_max) croak("ps overflow\n"); |
|
179
|
2387 |
1551409 |
if (sieve_start != *segment_start) { /* Fill sieve if necessary */ |
|
184
|
1552313 |
5777203 |
if (sieve[bit_offset / 8] & (1u << (bit_offset % 8))) |
|
186
|
5775720 |
1483 |
} while (bit_offset-- > 0); |
|
217
|
668537 |
788 |
for (i = 1; i < tableSize; ++i) |
|
221
|
668537 |
788 |
for (i = 1; i < tableSize; ++i) { |
|
224
|
466476 |
202061 |
if (factor_table[i] != 65535) /* Already marked. */ |
|
226
|
202061 |
0 |
if (p < 65535) /* p is a small prime, so set the number. */ |
|
228
|
122743 |
79318 |
if (p >= max_prime) /* No multiples will be in the table */ |
|
233
|
1025779 |
79318 |
for (factor = 3; factor < max_factor; factor += 2) { |
|
235
|
466476 |
559303 |
if (factor_table[index] == 65535) /* p is smallest factor */ |
|
237
|
442181 |
117122 |
else if (factor_table[index] > 0) /* Change number of factors */ |
|
242
|
132794 |
79318 |
for (factor = p; factor < max_factor; factor += 2*p) |
|
276
|
37373704 |
90613 |
for (i = 0, bc = 0; i+7 < words; i += 8) { |
|
288
|
343234 |
90613 |
for (; i < words; i++) |
|
327
|
102592 |
90613 |
for ( ;index <= last_index; index++) { |
|
328
|
89924 |
12668 |
if (index >= s->first_prime && index <= s->last_prime) { |
|
|
89924 |
0 |
if (index >= s->first_prime && index <= s->last_prime) { |
|
332
|
73357 |
29235 |
if (index <= s->last_prime_to_remove) { |
|
334
|
73357 |
0 |
if (b < size) { |
|
339
|
14578 |
6181250 |
sieve_case_zero(0, 3, b, p, size, mult, sieve, word_count); |
|
340
|
9912 |
6181223 |
sieve_case_zero(1, 2, b, p, size, mult, sieve, word_count); |
|
341
|
4919 |
6185401 |
sieve_case_zero(2, 1, b, p, size, mult, sieve, word_count); |
|
342
|
9772 |
6185180 |
sieve_case_zero(3, 2, b, p, size, mult, sieve, word_count); |
|
343
|
4967 |
6189903 |
sieve_case_zero(4, 1, b, p, size, mult, sieve, word_count); |
|
344
|
9819 |
6188011 |
sieve_case_zero(5, 2, b, p, size, mult, sieve, word_count); |
|
345
|
14631 |
6183005 |
sieve_case_zero(6, 3, b, p, size, mult, sieve, word_count); |
|
346
|
4759 |
6187821 |
sieve_case_zero(7, 1, b, p, size, mult, sieve, word_count); |
|
358
|
8883 |
3224 |
while (from < to) { |
|
359
|
2967 |
5916 |
uint32 words = (2*from > to) ? to-from : from; |
|
374
|
788 |
18 |
if (segment_start == 0) { |
|
379
|
93864 |
806 |
while (s->last_prime < sieve_last) { |
|
381
|
0 |
93864 |
if (p >= segment_start + size) |
|
385
|
72655 |
0 |
while (s->last_prime_to_remove < sieve_last) { |
|
388
|
806 |
71849 |
if (p2 >= segment_start + size) |
|
396
|
806 |
0 |
if (start_prime_index >= 3) /* Remove multiples of 3. */ |
|
397
|
51584 |
806 |
for (i = 3/2; i < 3 * SWORD_BITS; i += 3) |
|
401
|
806 |
0 |
if (start_prime_index >= 3) /* Remove multiples of 5. */ |
|
402
|
154752 |
806 |
for (i = 5/2; i < 15 * SWORD_BITS; i += 5) |
|
406
|
806 |
0 |
if (start_prime_index >= 4) /* Remove multiples of 7. */ |
|
407
|
773760 |
806 |
for (i = 7/2; i < 105 * SWORD_BITS; i += 7) |
|
411
|
806 |
0 |
if (start_prime_index >= 5) /* Remove multiples of 11. */ |
|
412
|
5416320 |
806 |
for (i = 11/2; i < 1155 * SWORD_BITS; i += 11) |
|
419
|
774 |
32 |
if (size % SWORD_BITS) |
|
424
|
1815439 |
806 |
for (i = 0; i < words; i++) |
|
452
|
788 |
2553 |
if (n < _MPU_LMO_CROSSOVER || n < 10000) return segment_prime_count(2, n); |
|
|
0 |
788 |
if (n < _MPU_LMO_CROSSOVER || n < 10000) return segment_prime_count(2, n); |
|
473
|
458 |
330 |
M = (N3 > 500) ? M_FACTOR(N3) : N3+N3/2; |
|
474
|
0 |
788 |
if (M >= N2) M = N2 - 1; /* M must be smaller than N^1/2 */ |
|
475
|
0 |
788 |
if (M < N3) M = N3; /* M must be at least N^1/3 */ |
|
485
|
0 |
788 |
New(0, ss.totals, K3+2, UV); |
|
486
|
0 |
788 |
New(0, ss.prime_index, K3+2, uint32); |
|
487
|
0 |
788 |
New(0, ss.first_bit_index, K3+2, uint32); |
|
490
|
788 |
0 |
if (ss.sieve == 0 || ss.word_count == 0 || ss.word_count_sum == 0 || |
|
|
788 |
0 |
if (ss.sieve == 0 || ss.word_count == 0 || ss.word_count_sum == 0 || |
|
|
788 |
0 |
if (ss.sieve == 0 || ss.word_count == 0 || ss.word_count_sum == 0 || |
|
491
|
788 |
0 |
ss.totals == 0 || ss.prime_index == 0 || ss.first_bit_index == 0 || |
|
|
788 |
0 |
ss.totals == 0 || ss.prime_index == 0 || ss.first_bit_index == 0 || |
|
|
788 |
0 |
ss.totals == 0 || ss.prime_index == 0 || ss.first_bit_index == 0 || |
|
492
|
0 |
788 |
ss.multiplier == 0) |
|
503
|
884 |
788 |
for (j = (M+1)/2; factor_table[j] <= primes[c]; j++) /* */; |
|
509
|
0 |
788 |
if (piM < c) croak("N too small for LMO\n"); |
|
513
|
3537 |
788 |
for (KM = c; primes[KM+1] * primes[KM+2] <= M && KM < piM; KM++) /* */; |
|
|
3537 |
0 |
for (KM = c; primes[KM+1] * primes[KM+2] <= M && KM < piM; KM++) /* */; |
|
514
|
0 |
788 |
if (K3 < KM) K3 = KM; /* Ensure K3 >= KM */ |
|
522
|
788 |
0 |
prime = prev_sieve_prime( (N2 >= ps_start) ? ps_start : N2+1 ); |
|
528
|
537037 |
788 |
for (j = 0; j < end; j++) { |
|
530
|
200965 |
336072 |
if (lpf > primes[c]) { |
|
532
|
161541 |
39424 |
if (lpf & 0x01) sum2 += phi_value; else sum1 += phi_value; |
|
538
|
788 |
0 |
if (c < piM) { |
|
540
|
505466 |
788 |
for (j = (1+M/pc_1)/2; j < end; j++) { |
|
542
|
178019 |
327447 |
if (lpf > pc_1) { |
|
544
|
150068 |
27951 |
if (lpf & 0x01) sum1 += phi_value; else sum2 += phi_value; |
|
549
|
94652 |
788 |
for (k = 0; k <= K3; k++) ss.totals[k] = 0; |
|
550
|
8265 |
788 |
for (k = 0; k < KM; k++) ss.prime_index[k] = end; |
|
556
|
85599 |
788 |
for (k = KM; k < K3; k++) { |
|
558
|
156525 |
265 |
while (last_prime > k+1 && pk * pk * primes[last_prime] > n) |
|
|
71191 |
85334 |
while (last_prime > k+1 && pk * pk * primes[last_prime] > n) |
|
565
|
806 |
788 |
for (sieve_start = 0; sieve_start < last_phi_sieve; sieve_start = sieve_end) { |
|
576
|
3219 |
806 |
for (k = c+1; k < KM; k++) { |
|
578
|
3219 |
0 |
uint32 start = (least_divisor >= pk * U32_CONST(0xFFFFFFFE)) |
|
582
|
3840279 |
3219 |
for (j = ss.prime_index[k] - 1; j >= start; j--) { |
|
584
|
1099957 |
2740322 |
if (lpf > pk) { |
|
586
|
1016671 |
83286 |
if (lpf & 0x01) sum1 += phi_value; else sum2 += phi_value; |
|
589
|
3202 |
17 |
if (start < ss.prime_index[k]) |
|
594
|
85782 |
806 |
for (; k < step7_max; k++) { |
|
597
|
85517 |
265 |
if (j >= k+2) { |
|
600
|
2234064 |
0 |
while (endj > 7 && endj-7 >= k+2 && pk*primes[endj-7] > least_divisor) endj -= 8; |
|
|
2148705 |
85359 |
while (endj > 7 && endj-7 >= k+2 && pk*primes[endj-7] > least_divisor) endj -= 8; |
|
|
2148547 |
158 |
while (endj > 7 && endj-7 >= k+2 && pk*primes[endj-7] > least_divisor) endj -= 8; |
|
601
|
299427 |
85334 |
while ( endj >= k+2 && pk*primes[endj ] > least_divisor) endj--; |
|
|
299244 |
183 |
while ( endj >= k+2 && pk*primes[endj ] > least_divisor) endj--; |
|
603
|
17487620 |
85517 |
for ( ; j > endj; j--) |
|
609
|
85616 |
789 |
while (step7_max > KM && ss.prime_index[step7_max-1] < (step7_max-1)+2) |
|
|
85599 |
17 |
while (step7_max > KM && ss.prime_index[step7_max-1] < (step7_max-1)+2) |
|
615
|
1551525 |
806 |
while (prime > least_divisor && prime_index >= piM) { |
|
|
1551525 |
0 |
while (prime > least_divisor && prime_index >= piM) { |