Houston, we have a trunk.
[debian/gnuradio] / usrp / host / lib / gen-ratios
1 #!/usr/bin/env python
2 # -*- python -*-
3
4 def how_good (x):
5     pof2 = [1,2,4,8,16]
6     if x in pof2:
7         return 0
8     if x in map (lambda x: x+1, pof2):
9         return -10
10     if x in map (lambda x: x-1, pof2):
11         return -5
12     return -2
13
14     
15 def better (v1, v2):
16     return abs ((v1 & 0xf) - ((v1 >> 4) & 0xf)) < abs ((v2 & 0xf) - ((v2 >> 4) & 0xf))
17
18
19 def foo ():
20     result = {}
21     for i in range (1,17):
22         for j in range (1,17):
23             i_goodness = how_good (i)
24             j_goodness = how_good (j)
25             goodness = i_goodness + j_goodness
26             v = ((i - 1) << 4) | (j - 1)
27
28             key = i * j
29             prev = result.get (key, None)
30             # print "i=%3d j=%3d key=%3d good=%3d v=0x%02x prev=%s" % (i, j, key, goodness, v, prev)
31
32             if not prev:
33                 result[key] = (goodness, v)
34             elif goodness > prev[0]:
35                 result[key] = (goodness, v)
36             elif goodness == prev[0] and better(v, prev[1]):
37                 result[key] = (goodness, v)
38
39     r = result.items ()
40     r.sort ()
41     for k, d in r:
42         print "(%3d, 0x%02x)" % (k, d[1])
43
44     
45             
46 foo ()
47
48