| line |
true |
false |
branch |
|
51
|
0 |
132797 |
if (n++ >= pop32) return 32; |
|
54
|
66261 |
66536 |
if (n > temp) { n -= temp; rank += 16; } |
|
56
|
66420 |
66377 |
if (n > temp) { n -= temp; rank += 8; } |
|
58
|
66385 |
66412 |
if (n > temp) { n -= temp; rank += 4; } |
|
60
|
66538 |
66259 |
if (n > temp) { n -= temp; rank += 2; } |
|
62
|
66516 |
66281 |
if (n > temp) rank += 1; |
|
92
|
0 |
3 |
Newz(0, bm->data, bm->nwords, uint32_t); |
|
96
|
0 |
3 |
Newz(0, bm->sbsize, nblocks, uint16_t); |
|
98
|
5 |
0 |
for (nlevels=0; nlevels < 12; nlevels++) { |
|
100
|
3 |
2 |
if (nblocks < 3) break; |
|
104
|
0 |
2 |
Newz(0, bm->tbsize[nlevels], nblocks, BMTYPE); |
|
118
|
2 |
3 |
for (i = 0; i < bm->nilevels; i++) |
|
143
|
199907 |
210597 |
ADDSIZE(bm, w, 1); |
|
149
|
0 |
0 |
New(0, arr, bm->nelems, BMTYPE); |
|
153
|
0 |
0 |
for (wi = 0; wi < nwords; wi++) { |
|
155
|
0 |
0 |
for (bit = 0; bit < 32; bit++, w >>= 1) |
|
156
|
0 |
0 |
if (w & 1) |
|
159
|
0 |
0 |
if (nelem != bm->nelems) croak("bitmask126: bad number of elements in array"); |
|
166
|
0 |
2 |
New(0, arr, bm->nelems, uint32_t); |
|
170
|
7614 |
2 |
for (wi = 0; wi < nwords; wi++) { |
|
172
|
243648 |
7614 |
for (bit = 0; bit < 32; bit++, w >>= 1) |
|
173
|
73001 |
170647 |
if (w & 1) |
|
176
|
0 |
2 |
if (nelem != bm->nelems) croak("bitmask126: bad number of elements in array"); |
|
188
|
0 |
132797 |
if (i > bm->nelems) croak("index higher than number of elements"); |
|
191
|
126908 |
132797 |
for (lev = bm->nilevels-1; lev >= 0; lev--) { |
|
193
|
199858 |
126908 |
for (j <<= TSHIFT; i >= tbsizei[j]; j++) |
|
196
|
428279 |
132797 |
for (j <<= TSHIFT; i >= bm->sbsize[j]; j++) /* Skip superblocks */ |
|
198
|
989530 |
132797 |
for (j <<= SSHIFT; i >= bm->bsize[j]; j++) /* Skip 8w blocks */ |
|
200
|
465082 |
132797 |
for (j <<= 3; i >= bm->size[j]; j++) /* Skip words */ |
|
225
|
0 |
132793 |
if (bm->size[wi] == 1) { /* Only 1 value, zero the word. */ |
|
232
|
126906 |
132793 |
ADDSIZE(bm, wi, -1); |
|
246
|
0 |
4 |
if (idx >= bm->nelems) croak("bitmask126: invalid iterator initial position\n"); |
|
259
|
401 |
7656 |
while (w == 0) { /* skip any empty words */ |
|
285
|
0 |
0 |
if (bit < 0) { |
|
286
|
0 |
0 |
if (wi == 0) croak("bitmask126: iterator underflow"); |
|
290
|
0 |
0 |
for ( ; bit >= 0; bit--) { /* Find prev set bit */ |
|
291
|
0 |
0 |
if (w & 1U << bit) |
|
294
|
0 |
0 |
} while (bit < 0); |