In [1]:
from pygrfnn.resonances import threeFreqMonomials

f1 = f2 = np.logspace(-1,1,5,base=2)

m = threeFreqMonomials(f1, f2, N=5, tol=1e-10, allow_self_connect=True)


a) Elapsed: 0.000683069229126 secs
b) Elapsed: 0.000782012939453 secs
c) Elapsed: 0.000919103622437 secs
d) Elapsed: 0.000985145568848 secs
e) Elapsed: 0.00524401664734 secs
f) Elapsed: 0.00617909431458 secs
g) Elapsed: 0.00662302970886 secs

In [7]:
for s in m:
    I = s.indices.copy()
    E = s.exponents.copy()
    I[:,1:] -= len(f1)
    I[:,2:] -= len(f1)
    E[:,2] += 1
    for i in range(I.shape[0]):
        d = E[i,0]*f1[I[i,0]] + E[i,1]*f1[I[i,1]] - E[i,2]*f2[I[i,2]]
        print "{}*{} + {}*{} = {}*{} ({})".format(E[i,0], f1[I[i,0]], E[i,1], f1[I[i,1]], E[i,2], f2[I[i,2]], d)


-2*0.5 + 1*2.0 = 2*0.5 (0.0)
-3*0.5 + 1*2.0 = 1*0.5 (0.0)
-1*0.5 + 1*2.0 = 3*0.5 (0.0)
-1*0.5 + 1*1.0 = 1*0.5 (0.0)
-1*1.0 + 1*2.0 = 2*0.5 (0.0)
1*0.5 + 0*0.5 = 1*0.5 (0.0)
-1*0.707106781187 + 1*1.41421356237 = 1*0.707106781187 (0.0)
1*0.707106781187 + 0*0.707106781187 = 1*0.707106781187 (0.0)
-2*0.5 + 2*1.0 = 1*1.0 (0.0)
2*0.5 + 1*1.0 = 2*1.0 (0.0)
-1*1.0 + 1*2.0 = 1*1.0 (0.0)
-2*0.5 + 1*2.0 = 1*1.0 (0.0)
1*1.0 + 0*1.0 = 1*1.0 (0.0)
-2*0.707106781187 + 2*1.41421356237 = 1*1.41421356237 (0.0)
2*0.707106781187 + 1*1.41421356237 = 2*1.41421356237 (0.0)
1*1.41421356237 + 0*1.41421356237 = 1*1.41421356237 (0.0)
-2*1.0 + 2*2.0 = 1*2.0 (0.0)
2*1.0 + 1*2.0 = 2*2.0 (0.0)
4*0.5 + 1*2.0 = 2*2.0 (0.0)
2*0.5 + 1*1.0 = 1*2.0 (0.0)
1*2.0 + 0*2.0 = 1*2.0 (0.0)

In [ ]: