mirror of https://gerrit.osmocom.org/libusrp
49 lines
1.1 KiB
Python
Executable File
49 lines
1.1 KiB
Python
Executable File
#!/usr/bin/env python
|
|
# -*- python -*-
|
|
|
|
def how_good (x):
|
|
pof2 = [1,2,4,8,16]
|
|
if x in pof2:
|
|
return 0
|
|
if x in map (lambda x: x+1, pof2):
|
|
return -10
|
|
if x in map (lambda x: x-1, pof2):
|
|
return -5
|
|
return -2
|
|
|
|
|
|
def better (v1, v2):
|
|
return abs ((v1 & 0xf) - ((v1 >> 4) & 0xf)) < abs ((v2 & 0xf) - ((v2 >> 4) & 0xf))
|
|
|
|
|
|
def foo ():
|
|
result = {}
|
|
for i in range (1,17):
|
|
for j in range (1,17):
|
|
i_goodness = how_good (i)
|
|
j_goodness = how_good (j)
|
|
goodness = i_goodness + j_goodness
|
|
v = ((i - 1) << 4) | (j - 1)
|
|
|
|
key = i * j
|
|
prev = result.get (key, None)
|
|
# print "i=%3d j=%3d key=%3d good=%3d v=0x%02x prev=%s" % (i, j, key, goodness, v, prev)
|
|
|
|
if not prev:
|
|
result[key] = (goodness, v)
|
|
elif goodness > prev[0]:
|
|
result[key] = (goodness, v)
|
|
elif goodness == prev[0] and better(v, prev[1]):
|
|
result[key] = (goodness, v)
|
|
|
|
r = result.items ()
|
|
r.sort ()
|
|
for k, d in r:
|
|
print "(%3d, 0x%02x)" % (k, d[1])
|
|
|
|
|
|
|
|
foo ()
|
|
|
|
|