pert[pa_, s_] := Module[{p1, p2, p3, x, y, z}, {p1, p2, p3} = pa; Label[o0]; x = R[]; y = CA[]; x = x - 1/2; z = s*x; Label[o1]; If[y > 1, Goto[o2]]; p1 = p1 + z; p2 = p2 - z; Label[o2]; If[y > 2, Goto[o3]]; p1 = p1 + z; p3 = p3 - z; Label[o3]; p2 = p2 + z; p3 = p3 - z; If[Max[p1, p2, p3] > 1, Goto[o0]]; If[Min[p1, p2, p3] < 0, Goto[o0]]; x = {(1 + 2*p1 - p2 - p3)/3, (1 - p1 + 2*p2 - p3)/3, (1 - p1 - p2 + 2*p3)/3}; Return[x]; ] R[] := Module[{s1, s2, s3}, s1 = Ra[]; s2 = Ra[]; s3 = Ra[]; s1 = 100000*s1 + s2; s3 = 100000*s1 + s3; s2 = s3/10^15; s1 = N[s2, 17]; Return[s1]; ] Ra[] := Random[Integer, 100000] CA[] := Module[{x, y, z}, x = R[]; y = 3*x; z = 1 + Rationalize[y, 1]; Return[z]; ] p = {p1, p2, p3} vv = {v1, v2, v3, v12, v13, v23, v123} xb[pb_, vvb_] := Sort[xa[pb, vvb], Greater] xa[pa_, vva_] := Module[{r, w1, w2, w3, w12, w13, w23, w123, q1, q2, q3}, {q1, q2, q3} = pa; {w1, w2, w3, w12, w13, w23, w123} = vva; r = {w1 - q1, w2 - q2, w3 - q3, w12 - q1 - q2, w13 - q1 - q3, w23 - q2 - q3, w123 - q1 - q2 - q3}; Return[r]; ] firpos[kka_] := Module[{k1, k2, k3, k4, k5, k6, k7}, {k1, k2, k3, k4, k5, k6, k7} = kka; If[k1 < 0, Goto[o1]]; If[k1 > 0, Goto[o2]]; If[k2 < 0, Goto[o1]]; If[k2 > 0, Goto[o2]]; If[k3 < 0, Goto[o1]]; If[k3 > 0, Goto[o2]]; If[k4 < 0, Goto[o1]]; If[k4 > 0, Goto[o2]]; If[k5 < 0, Goto[o1]]; If[k5 > 0, Goto[o2]]; If[k6 < 0, Goto[o1]]; If[k6 > 0, Goto[o2]]; If[k7 < 0, Goto[o1]]; If[k7 > 0, Goto[o2]]; Label[o1]; Return[False]; Label[o2]; Return[True]; Null ] xsf[px_] := xb[px, vv1] fp[s_] := firpos[s] bet[pa_, pb_] := fp[xsf[pb] - xsf[pa]]