15 lines
940 B
Diff
15 lines
940 B
Diff
# must fail: abr_extreme_bola_like_past_128_bits
|
|
# the utility-over-buffer cross-multiplication in 128 bits, wrapping (abr::BolaLike::choose)
|
|
diff --git a/wai/wai-rs/src/http_binding/abr.rs b/wai/wai-rs/src/http_binding/abr.rs
|
|
index 6fb8973c..0f72e915 100644
|
|
--- a/wai/wai-rs/src/http_binding/abr.rs
|
|
+++ b/wai/wai-rs/src/http_binding/abr.rs
|
|
@@ -302,7 +302,7 @@ impl Policy for BolaLike {
|
|
for i in (0..k).filter(|&i| score[i] > 0) {
|
|
// score[i]/size(i) > score[b]/size(b), by cross-multiplication widened
|
|
// past 128 bits: a score times a size reaches 2^141.
|
|
- if best.is_none_or(|b| product_greater(score[i] as u128, size(b), score[b] as u128, size(i))) {
|
|
+ if best.is_none_or(|b| (score[i] as u128).wrapping_mul(u128::from(size(b))) > (score[b] as u128).wrapping_mul(u128::from(size(i)))) {
|
|
best = Some(i);
|
|
}
|
|
}
|