from math import log, exp
lengths = [1,2,4,8,16]
valid = [0.4*(0.98**m)+0.5 for m in lengths]
def fit_fixed_model(values):
    xs, ys = lengths, [log((s-.5)/.4) for s in values]
    slope = sum(x*y for x,y in zip(xs,ys))/sum(x*x for x in xs)
    p = exp(slope)
    residuals = [s-(.4*(p**m)+.5) for m,s in zip(xs,values)]
    return p, residuals
p, residuals = fit_fixed_model(valid)
assert abs(p-.98) < 1e-12 and max(map(abs,residuals)) < 1e-12
violated = valid[:]; violated[-1] += .03
_, bad_residuals = fit_fixed_model(violated)
assert max(map(abs,bad_residuals)) > 1e-3
print(f"PASS: 42 benchmark fitted_decay={p:.6f} valid_max_residual={max(map(abs,residuals)):.3g} mutant_max_residual={max(map(abs,bad_residuals)):.6f}")
