index2to1(a,b)= { a*(a-1)/2+b+1 } index2wn(n,a,b)= { if(a2*b, a-a^2/2+b^2-b, 2*a*b+a-a^2-b-b^2) } build_sv(n, i)= { local(m,v); m=buildm(n,create_g(n))^i; v=vector(tcount(n),x,1); normalize(v*m~) } average_weight(n,i)= { local(v,t,s,c,w); v=build_sv(n,i); t=tcount(n);s=0.0; for(u=1,t, h=index1to2(u); s+=v[u]*cost(h[1]/(n+0.0),h[2]/(n+0.0)); ); s }