vneg = v >> 63; /* -1 if v < 0. */
v = (v ^ vneg) - vneg; /* Absolute value of v. */
- if ((uint64_t)u1 >= (uint64_t)v)
+ if ((uint64_t)u1 >= (uint64_t)v) {
goto overflow;
+ }
q = divlu64(u1, u0, v);
ssize_t tally_mean(const struct tally *tally)
{
size_t count = tally_num(tally);
- if (!count)
+ if (!count) {
return 0;
+ }
if (sizeof(tally->total[0]) == sizeof(uint32_t)) {
/* Use standard 64-bit arithmetic. */
ssize_t min, max;
min = bucket_min(tally->min, tally->step_bits, b);
- if (b == tally->buckets - 1)
+ if (b == tally->buckets - 1) {
max = tally->max;
- else
+ } else {
max = bucket_min(tally->min, tally->step_bits, b+1) - 1;
+ }
/* FIXME: Think harder about cumulative error; is this enough?. */
*err = (max - min + 1) / 2;
for (i = 0; i < tally->buckets; i++) {
total += tally->counts[i];
- if (total * 2 >= count)
+ if (total * 2 >= count) {
break;
+ }
}
return bucket_range(tally, i, err);
}