For BITF_NOIDX, sz_nbits() becomes trivial

parent d8e91ded
......@@ -134,6 +134,9 @@ sz_nbits(const size_t sz, const size_t index_thr)
assert(sz >= bitf_sz1(1));
assert(sz < (size_t)1 << 62); // otherwise overflow
if (index_thr == BITF_NOIDX)
return (((sz - sizeof(struct bitf)) / wsz) * wbits);
lo = sz_nbits_est(sz) / wbits;
trysz = bitf_sz(lo * wbits, index_thr);
......
......@@ -2258,22 +2258,37 @@ t_bitf(void)
free(mem);
}
#define ASSERT_NBITS_SZ_NOIDX(sz) do { \
size_t bits = sz_nbits(sz, BITF_NOIDX); \
assert(bitf_sz(bits, BITF_NOIDX) <= sz); \
\
bits += wbits; \
assert(bitf_sz(bits, BITF_NOIDX) > sz); \
} while(0)
static void
t_sz_nbits(void)
{
size_t u, v, sz;
for (u = 6; u < 32; u++)
for (u = 6; u < 32; u++) {
ASSERT_NBITS_SZ_NOIDX((size_t)1 << u);
(void) sz_nbits((size_t)1 << u, BITF_INDEX);
}
for (sz = 64; sz < 128; sz++)
for (sz = 64; sz < 128; sz++) {
ASSERT_NBITS_SZ_NOIDX(sz);
(void) sz_nbits(sz, BITF_INDEX);
}
for (u = 7; u < 61; u++)
for (u = 7; u < 61; u++) {
for (v = ((size_t)1 << u) - 32;
v < ((size_t)1 << u) + 128;
v += 8)
v += 8) {
ASSERT_NBITS_SZ_NOIDX(v);
(void) sz_nbits(v, BITF_INDEX);
}
}
}
static size_t
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment