capacity_bps = 100_000_000
capacity_bytes_s = capacity_bps / 8
base_rtt_s = 0.040
buffer_bytes = 500_000
bdp_bytes = capacity_bytes_s * base_rtt_s

def model(offered_bytes):
    admitted = min(offered_bytes, bdp_bytes + buffer_bytes)
    excess = offered_bytes - admitted
    queued = max(admitted - bdp_bytes, 0.0)
    rtt = base_rtt_s + queued / capacity_bytes_s
    delivery = min(capacity_bytes_s, admitted / base_rtt_s)
    assert abs(admitted / rtt - delivery) < 1e-6
    assert queued <= buffer_bytes and excess >= 0
    return delivery * 8 / 1e6, rtt * 1000, queued, excess

print(f"BDP={bdp_bytes:.0f} bytes; buffer={buffer_bytes} bytes")
observations = []
for offered in [125_000, 500_000, 750_000, 1_500_000]:
    rate, rtt, queue, excess = model(offered)
    observations.append((rate, rtt))
    print(f"offered={offered:7d} rate={rate:6.1f}Mbps RTT={rtt:5.1f}ms "
          f"queue={queue:.0f} excess={excess:.0f} bytes")

assert max(rate for rate, _ in observations) == 100.0
assert min(rtt for _, rtt in observations) == 40.0
print("Static fluid-model consistency checks: passed")
