BITS = 11
POLY = 0xa00
v = 0x7ff
for i in range((1 << 11) - 1):
    if v & 1:
        v ^= POLY
    v >>= 1
    inv_lfsr[v] = (-i-1) & ((1 << BITS) - 1)

freqs = []

with open("nco.log") as fd:
    for line in fd:
        a, b = line.strip().split()
        freqs.append((int(a, 0), float(b)))

_, last = freqs[0]

l2 = last

ref = 900000000

for reg, freq in freqs:
    lsb = reg & 3
    lfval = reg >> 2
    if lfval == 0:
        div = 0
    else:
        div = inv_lfsr[lfval]

    div = div * 2 + lsb / 2 + 4.25

    delta = freq / last
    d2 = ref / freq
    print(f"{reg:016b} {freq:12.2f} {delta:10.5f} {d2:10.2f} {div}")
    last = freq
    if reg & 0xf == 0:
        l2 = freq