"""First-order test of whether c > 1 can help: for small kap, report the best
b + d - d/c together with b and d.  Multivariate MLS helps at first order only
if b decreases faster in kap than d (1 - 2^-kap) grows, i.e. if
-db/dkap > d ln 2 at kap = 0.
"""
import math
import sys

from brf_model import full_weights
from optimise import solve_fixed_kap

opts = tuple(sys.argv[1:])
base = solve_fixed_kap(0.0, opts)
print(f"options={','.join(opts) or 'none'}  kap=0: {base[0]:.8f}")
for kap in (0.001, 0.003, 0.01):
    val, w = solve_fixed_kap(kap, opts)
    wF, wB, wX, wL, k, wY, wM = full_weights(w)
    b, d = 2 ** wF, 2 ** (k + wY)
    db = (b - base[0]) / kap
    print(f"  kap={kap}: total {val:.8f}  b={b:.8f}  d={d:.6f}  "
          f"db/dkap~{db:.4f}  needed < -{d * math.log(2):.4f}")
