python3 <<'PY' import math,random a=0.25; b=1.0/12 def cval(y1,y2,q,r): mu1=a+b-y1 nu1=a+b alpha=2*a+2*b-y1-y2 den=r*(alpha-q)/q-(mu1-r) if abs(den)<1e-13: return None c=(a*(alpha-q)-(mu1-r)*nu1)/den return c def Aval(y1,y2,q,r,c): alpha=2*a+2*b-y1-y2; mu1=a+b-y1; nu1=a+b; q2=alpha-q; r2=mu1-r; c2=nu1-c t1=math.sqrt(a*r*c)+math.sqrt(b*r*(q-c))+math.sqrt(b*(q-r)*c)+math.sqrt(a*(q-r)*(q-c)) t2=math.sqrt(a*r2*c2)+math.sqrt(b*r2*(q2-c2))+math.sqrt(b*(q2-r2)*c2)+math.sqrt(a*(q2-r2)*(q2-c2)) return t1/math.sqrt(q)+t2/math.sqrt(q2) def G(y1,y2,q,r): c=cval(y1,y2,q,r) if c is None: return -1 alpha=2*a+2*b-y1-y2; mu1=a+b-y1; nu1=a+b; q2=alpha-q if q<=0 or q2<=0 or r<-1e-9 or r>q+1e-9 or r>mu1+1e-9 or (q-r)>(alpha-mu1)+1e-9 or c<-1e-9 or c>q+1e-9 or c>nu1+1e-9 or (nu1-c)>q2+1e-9: return -1 y3=a gam=y1+y2+y3 C=math.sqrt(gam)*(math.sqrt(b*y1)+math.sqrt(a*y2)+math.sqrt(a*y3)) B=b**1.5 return Aval(y1,y2,q,r,c)+B+C print("noC",G(0,0,0.375,0.125)) print("full",G(b,a,1/3,a)) best=-1; arg=None for it in range(200000): y1=random.random()*b; y2=random.random()*a alpha=2*a+2*b-y1-y2; mu1=a+b-y1; mu2=alpha-mu1 q=random.uniform(1e-4,alpha-1e-4) lo=max(0.0,q-mu2); hi=min(q,mu1) if hibest: best=g; arg=(y1,y2,q,r) print("rand",best,arg,"1-best",1-best) PY