Branch Coverage

perfect_powers.c
Criterion Covered Total %
branch 83 104 79.8


line true false branch
18 109 4 return (n <= 1 || powerof(n) > 1);
16 93 return (n <= 1 || powerof(n) > 1);
23 99 1 return (n <= 1 || (k > 2 && (k & (k-1)) != 0));
6 93 return (n <= 1 || (k > 2 && (k & (k-1)) != 0));
4 2 return (n <= 1 || (k > 2 && (k & (k-1)) != 0));
26 0 0 if (n < -1) {
28 0 0 return (k > 2 && (k & (k-1)) != 0);
0 0 return (k > 2 && (k & (k-1)) != 0);
30 0 0 return (n <= 1 || powerof(n) > 1);
0 0 return (n <= 1 || powerof(n) > 1);
37 3 103 if (n == 0) return 1;
38 5 98 if (n == 1) return only_oddpowers ? 8 : 4;
2 3 if (n == 1) return only_oddpowers ? 8 : 4;
39 1 97 if (n >= MPU_MAX_PERFECT_POW) return 0; /* Overflow */
42 97 0 log2n = log2floor(n);
43 15 82 kinit = only_oddpowers ? 3 : 2;
44 15 82 kinc = only_oddpowers ? 2 : 1;
47 583 97 for (k = kinit+kinc; k <= 1+log2n; k += kinc) {
49 67 516 if (c < best && c > n) best = c;
23 44 if (c < best && c > n) best = c;
57 15 99 if (n <= 4) return (n > 1) - (n == 0); /* note possible -1 return */
58 15 84 if (n <= 8) return only_oddpowers ? 1 : 4;
5 10 if (n <= 8) return only_oddpowers ? 1 : 4;
60 84 0 log2n = log2floor(n);
61 7 77 kinit = only_oddpowers ? 3 : 2;
62 7 77 kinc = only_oddpowers ? 2 : 1;
65 1287 84 for (k = kinit; k <= log2n; k += kinc) {
68 68 1219 if (c >= n) c = ipow(r-1,k);
69 90 1197 if (c > best && c < n) best = c;
90 0 if (c > best && c < n) best = c;
95 58 1 if (hi < 1 || hi < lo) return 0;
0 58 if (hi < 1 || hi < lo) return 0;
96 4 54 return perfect_power_count(hi) - ((lo <= 1) ? 0 : perfect_power_count(lo-1));
106 15 225 if (n < 8) return 0+(n>=1)+(n>=4);
108 225 0 log2n = log2floor(n);
109 1990 225 for (sum = 1, k = 2; k <= log2n; k++)
110 1346 644 if (_moebius[k])
126 1 56 if (n <= 1) return n;
127 0 56 if (n >= MPU_MAX_PERFECT_POW_IDX) return MPU_MAX_PERFECT_POW;
133 0 56 if (pp >= UV_MAX) return UV_MAX;
138 1 56 if (n <= 1) return n;
139 0 56 if (n >= MPU_MAX_PERFECT_POW_IDX) return MPU_MAX_PERFECT_POW;
145 0 56 if (pp >= UV_MAX) return UV_MAX;
150 0 64 if (n <= 1) return n;
151 0 64 if (n >= MPU_MAX_PERFECT_POW_IDX) return MPU_MAX_PERFECT_POW;
168 2 62 if (pp >= UV_MAX) return UV_MAX;
175 1 62 if (n <= 1) return n; /* 1,4,8,9,16,25,... */
176 1 61 if (n >= MPU_MAX_PERFECT_POW_IDX) return MPU_MAX_PERFECT_POW;
181 2 59 if (g > MPU_MAX_PERFECT_POW)
184 34 27 if (count >= n) {
185 18 34 for (g = prev_perfect_power(g+1); count > n; count--)
188 40 27 for (; count < n; count++)