import sys; sys.path.insert(0,'.')
from fibres import *
from fractions import Fraction as Fr
def ev(p, q): return sum(c*q**k for k,c in p.items())
def volratio(nu, q):
    d1,d2,e = nu
    r = Fr(1)
    if e>0: r *= (q+1)*q**(e-1)
    for d in (d1,d2):
        if d>0: r *= Fr(q**(3*d))*(1-Fr(1,q*q))
    return r
def sp4_count(a,b,q):
    t=Fr(1,q); W=(1+t)**2*(1+t*t)
    if a==0 and b==0: return Fr(1)
    if a>b>0: Wl=Fr(1)
    else: Wl=1+t
    return Fr(q)**(4*a+2*b)*W/Wl
for lam in [((1,0),(0,0)),((1,1),(0,0)),((1,0),(1,0)),((2,1),(0,0)),((1,1),(1,0)),((2,0),(1,1)),((2,1),(1,0))]:
    for q in (3,5):
        (a1,b1),(a2,b2)=lam
        lhs=Fr(0)
        R=2*(a1+a2+b1+b2)+2
        for d1 in range(0,R+1):
            for d2 in range(0,R+1):
                for e in range(0,2*R+1):
                    if (e-(d1-d2))%2: continue
                    p=N(lam,(d1,d2,e))
                    if p: lhs += ev(p,q)*volratio((d1,d2,e),q)
        rhs=sp4_count(a1,b1,q)*sp4_count(a2,b2,q)
        print(lam,q,lhs==rhs, lhs, rhs)
