Branch Coverage

ramanujan_primes.c
Criterion Covered Total %
branch 170 264 64.3


line true false branch
46 37 381 FAST_SMALL_NTH(n);
37 0 FAST_SMALL_NTH(n);
48 359 22 if (n < 12581) {
49 349 10 if (n < 168) R = ramanujan_axler(n, -4.7691, -6.2682);
50 8 2 else if (n < 2290) R = ramanujan_axler(n, -0.9315, -0.5635);
51 1 1 else if (n < 5225) R = ramanujan_axler(n, -0.5318, -0.0710);
52 1 0 else if (n < 12581) R = ramanujan_axler(n, 0.1212, 0.7973);
55 0 22 if (n < 18175) D = 0.3548;
56 10 12 else if (n < 82883) D = -0.2450;
57 2 10 else if (n < 316314) D = -0.6384;
58 0 10 else if (n < 1000001) D = -0.9353;
59 2 8 else if (n < 4000001) D = -1.1271;
60 8 0 else if (n < 16000001) D = -1.4152;
61 0 0 else if (n < 64000001) D = -1.6671;
62 0 0 else if (n < 128000001) D = -1.8855;
63 0 0 else if (n < 256000001) D = -1.9325;
64 0 0 else if (n < 384000001) D = -2.0190;
65 0 0 else if (n < 512000001) D = -2.0310;
68 0 0 if (n > UVCONST( 3999654659)) D = -2.235;
70 0 0 if (n > UVCONST( 84086679236)) D = -2.435;
71 0 0 if (n > UVCONST( 514808375201)) D = -2.535;
72 0 0 if (n > UVCONST( 3594243587299)) D = -2.635;
73 0 0 if (n > UVCONST( 28330126673435)) D = -2.735;
74 0 0 if (n > UVCONST(117462814829787)) D = -2.8;
84 55 407 FAST_SMALL_NTH(n);
55 0 FAST_SMALL_NTH(n);
86 388 19 if (n < 34816) {
87 375 13 if (n < 189) R = ramanujan_axler(n, 4.2720, 0.340);
88 8 5 else if (n < 1245) R = ramanujan_axler(n, -0.2179, -6.179);
89 1 4 else if (n < 2984) R = ramanujan_axler(n, 0.1446, -4.8693);
90 1 3 else if (n < 14303) R = ramanujan_axler(n, -0.3570, -5.1154);
91 3 0 else if (n < 34816) R = ramanujan_axler(n, -1.5770, -7.5332);
95 7 12 if (n < 76400) D = 0.0126;
96 2 10 else if (n < 280816) D = 0.5132;
97 0 10 else if (n < 915887) D = 0.9967;
98 2 8 else if (n < 4000001) D = 1.5004;
99 8 0 else if (n < 16000001) D = 1.7184;
100 0 0 else if (n < 64000001) D = 1.9860;
101 0 0 else if (n < 128000001) D = 2.1352;
102 0 0 else if (n < 256000001) D = 2.1658;
103 0 0 else if (n < 384000001) D = 2.1999;
104 0 0 else if (n < 512000001) D = 2.2047;
105 0 0 else if (n < 640000001) D = 2.2324;
109 0 0 if (n > UVCONST( 14888378285)) D = 2.29;
110 0 0 if (n > UVCONST( 467037926604)) D = 2.31;
111 0 0 if (n > UVCONST( 2778491401197)) D = 2.315;
112 0 0 if (n > UVCONST( 10656144781918)) D = 2.317;
113 0 0 if (n > UVCONST( 63698770351741)) D = 2.319;
124 36 53 FAST_SMALL_COUNT(n);
35 312 FAST_SMALL_COUNT(n);
347 1 FAST_SMALL_COUNT(n);
132 35 54 FAST_SMALL_COUNT(n);
34 322 FAST_SMALL_COUNT(n);
356 1 FAST_SMALL_COUNT(n);
143 0 24 FAST_SMALL_COUNT(n);
0 0 FAST_SMALL_COUNT(n);
0 0 FAST_SMALL_COUNT(n);
151 0 2 FAST_SMALL_NTH(n);
0 0 FAST_SMALL_NTH(n);
165 6 23 if (n <= NSMALL_RAM) {
166 0 6 New(0, L, n, UV);
167 33 6 for (k = 0; k < n; k++)
173 0 23 MPUverbose(2, "sieving to %"UVuf" for first %"UVuf" Ramanujan primes\n", max, n);
174 0 23 Newz(0, L, n, UV);
177 5007 23 for (s = 0, k = 7; k <= max; k += 2) {
178 1887 3120 if (is_prime_in_sieve(sieve, k)) s++;
179 4640 367 if (s < n) L[s] = k+1;
180 2497 2510 if ((k & 3) == 1 && is_prime_in_sieve(sieve, (k+1)>>1)) s--;
1034 1463 if ((k & 3) == 1 && is_prime_in_sieve(sieve, (k+1)>>1)) s--;
181 4673 334 if (s < n) L[s] = k+2;
190 0 155 if (nlo == 0) nlo = 1;
191 0 155 if (nhi == 0) nhi = 1;
194 29 126 if (nlo == 1) return n_ramanujan_primes(nhi);
196 0 126 Newz(0, L, nhi-nlo+1, UV);
197 0 126 if (nlo <= 1 && nhi >= 1) L[1-nlo] = 2;
0 0 if (nlo <= 1 && nhi >= 1) L[1-nlo] = 2;
198 7 119 if (nlo <= 2 && nhi >= 2) L[2-nlo] = 11;
7 0 if (nlo <= 2 && nhi >= 2) L[2-nlo] = 11;
199 1 125 if (nhi < 3) return L;
204 6 119 if (mink < 15) mink = 15;
205 114 11 if (mink % 2 == 0) mink--;
206 0 125 MPUverbose(2, "Rn[%"UVuf"] to Rn[%"UVuf"] Noe's: %"UVuf" to %"UVuf"\n", nlo, nhi, mink, maxk);
213 125 125 while (next_segment_primes(ctx, &seg_base, &seg_low, &seg_high)) {
217 125 0 if (new_size > seg2size) {
218 0 125 if (seg2size > 0) Safefree(seg2);
223 87593 125 for (k = seg_low; k <= seg_high; k += 2) {
224 14157 73436 if (is_prime_in_sieve(segment, k-seg_base)) s++;
225 50553 37040 if (s >= nlo && s <= nhi) L[s-nlo] = k+1;
22005 28548 if (s >= nlo && s <= nhi) L[s-nlo] = k+1;
226 43802 43791 if ((k & 3) == 1 && is_prime_in_sieve(seg2, ((k+1)>>1)-seg2beg)) s--;
7463 36339 if ((k & 3) == 1 && is_prime_in_sieve(seg2, ((k+1)>>1)-seg2beg)) s--;
227 50477 37116 if (s >= nlo && s <= nhi) L[s-nlo] = k+2;
22072 28405 if (s >= nlo && s <= nhi) L[s-nlo] = k+2;
233 0 125 MPUverbose(2, "Generated %"UVuf" Ramanujan primes from %"UVuf" to %"UVuf"\n", nhi-nlo+1, L[0], L[nhi-nlo]);
242 15 0 if (high < 2 || high < low) return 0;
0 15 if (high < 2 || high < low) return 0;
243 0 15 if (low < 2) low = 2;
250 35 15 for (lo = 0, hi = nhi-nlo+1; lo < hi; ) {
252 10 25 if (L[mid] < low) lo = mid+1;
257 23 15 for (hi = nhi-nlo+1; lo < hi; ) {
259 19 4 if (L[mid] <= high) lo = mid+1;
270 15 0 if (L == 0 || first > last) { *list = 0; return 0; }
1 14 if (L == 0 || first > last) { *list = 0; return 0; }
271 8 6 if (first > 0)
281 0 88 MPUverbose(1, "ramanujan_prime_count calculating Pi(%"UVuf")\n",n);
285 0 88 if (n > 1000000000U) winmult = 16;
289 66 22 swin = (v <= window) ? 1 : v-window;
293 88 0 if (L[0] < n && L[wlen-1] > n) {
88 0 if (L[0] < n && L[wlen-1] > n) {
295 1645 0 for (i = 1; i < wlen; i++)
296 88 1557 if (L[i] > n && L[i-1] <= n)
88 0 if (L[i] > n && L[i-1] <= n)
298 88 0 if (i < wlen) break;
301 0 0 MPUverbose(1, " %s increasing window\n", "ramanujan_prime_count");
312 23 52 FAST_SMALL_NTH(n);
23 0 FAST_SMALL_NTH(n);
323 818 166 if (!is_prime(n)) return 0;
324 6 160 if (n < 17) return (n == 2 || n == 11);
5 1 if (n < 17) return (n == 2 || n == 11);
1 4 if (n < 17) return (n == 2 || n == 11);
327 17 143 if (is_prime(n/2+1)) return 0;
329 201 79 for (i = 2; i <= d; i++)
330 64 137 if (is_prime(n/2+i)) return 0;
370 12 0 UV swin, rn, *L, log2 = log2floor(n);
372 1 11 if ((n & (n-1)) == 0 && log2 <= RAMPC2) /* Powers of two from table */
1 0 if ((n & (n-1)) == 0 && log2 <= RAMPC2) /* Powers of two from table */
374 2 9 FAST_SMALL_COUNT(n);
2 6 FAST_SMALL_COUNT(n);
8 0 FAST_SMALL_COUNT(n);
383 10 0 if (hi < 2 || hi < lo) return 0;
0 10 if (hi < 2 || hi < lo) return 0;
384 2 8 return ramanujan_prime_count(hi) - ((lo <= 2) ? 0 : ramanujan_prime_count(lo-1));