python3 -c 'import math,itertools s=math.sqrt(3);b=math.sqrt(2) w=[0,math.sqrt(2-s),1,math.sqrt(2),math.sqrt(3),math.sqrt(2+s)];a=[0,0,2,math.sqrt(3),2,0];lab={2:(1,0,0),3:(0,1,0),4:(0,0,1)} E=[[0]*6]+[[math.sqrt(1/3)*math.sin(j*m*math.pi/6) for j in range(6)] for m in range(1,6)] def can(k): if k[0]<0 or (k[0]==0 and k[1]<0) or (k[0]==0 and k[1]==0 and k[2]<0):return(-k[0],-k[1],-k[2]) return k def add(d,k,v): k=can(k);d[k]=d.get(k,0)+v def mul(f,g): h={} for k,v in f.items(): for l,u in g.items(): add(h,(k[0]+l[0],k[1]+l[1],k[2]+l[2]),0.5*v*u) add(h,(k[0]-l[0],k[1]-l[1],k[2]-l[2]),0.5*v*u) return h def scale(f,c):return{k:v*c for k,v in f.items()} def sub(f,g): h=dict(f) for k,v in g.items():h[k]=h.get(k,0)-v return {k:v for k,v in h.items() if abs(v)>1e-15} def ev(k):return k[0]+k[1]*b+k[2]*s u=[{} for _ in range(6)] for m in [2,3,4]: for j in range(1,6):add(u[j],lab[m],a[m]*E[m][j]) def diff(u): d=[] for j in range(6): f=u[j];g=u[j+1] if j<5 else {} d.append(sub(g,f)) return d def solve(F): v=[{} for _ in range(6)] labels=set() for j in range(1,6):labels.update(F[j].keys()) for k in labels: Fj=[F[j].get(k,0) for j in range(6)] vv=ev(k);Q=[] for m in range(1,6): c=sum(E[m][j]*Fj[j] for j in range(1,6)) Q.append(0 if k!=(0,0,0) and abs(vv-w[m])<1e-10 else c/(w[m]**2-vv**2)) for j in range(1,6):add(v[j],k,sum(Q[m-1]*E[m][j] for m in range(1,6))) return v du=diff(u) def cube(d):return mul(mul(d,d),d) def pow5(d):return mul(mul(d,d),mul(mul(d,d),d)) F3=[{} for _ in range(6)] for j in range(1,6):F3[j]=scale(sub(cube(du[j-1]),cube(du[j])),1/6) v=solve(F3) dv=diff(v) F5=[{} for _ in range(6)] for j in range(1,6): direct=scale(sub(pow5(du[j-1]),pow5(du[j])),-1/120) cross=scale(sub(mul(mul(du[j-1],du[j-1]),dv[j-1]),mul(mul(du[j],du[j]),dv[j])),1/2) F5[j]=sub(direct,scale(cross,-1)) z=solve(F5) K=(2,1,2) for m in [1,3,5]: print(m,sum(z[j].get(K,0)*E[m][j] for j in range(1,6)))'