python3 <<'PY' import math a=0.25; b=1.0/12 t=0.23045484489188828; y3=0.22112258195818024 y1=3*t-2.0/3; y2=t alpha=2*a+2*b-y1-y2; mu1=a+b-y1; mu2=b+a-y2; nu1=a+b r1=mu1/alpha; r2=mu2/alpha; s1=nu1/alpha; s3=1-s1 beta=a+b-y3; sB2=b/beta; sB3=(a-y3)/beta gam=y1+y2+y3; c=[y1/gam,y2/gam,y3/gam] comps=[(alpha,[r1,r2,0],[s1,0,s3]),(beta,[0,0,1],[0,sB2,sB3]),(gam,c,[0,0,1])] P=[[a,0,b],[b,0,a],[0,b,a]] Pgen=[[0.0]*3 for _ in range(3)] for w,rr,ss in comps: for i in range(3): for j in range(3): Pgen[i][j]+=w*rr[i]*ss[j] print("maxerr",max(abs(Pgen[i][j]-P[i][j]) for i in range(3) for j in range(3))) aff=0 for w,rr,ss in comps: term=0 for i in range(3): for j in range(3): term+=math.sqrt(max(0,P[i][j]*rr[i]*ss[j])) aff+=w*term print("w",w,"r",rr,"s",ss,"contrib",w*term) print("aff",repr(aff),"H2",repr(1-aff),"floor",math.floor(100*(1-aff))) PY