MODE R = REAL; PROC na = (INT n, PROC (INT)R p)[]R: ([n]R t; FOR j TO n DO t[j]:= p(j) OD; t); PROC u = (INT n, R v)[]R: na(n, (INT j)R: v); PROC sv = ([]R x)R: (R s := 0; FOR j TO UPB x DO s +:= x[j] OD; s); PROC ip = ([]R x)[]R: (INT n = UPB x; R s = sv(x); [n]R y; R f = (0=1 | R c = 1/s, d = 1-c, e = 1/d; e/s | 1/(s-1)); FOR j TO n DO y[j] := x[j]*f OD; y); PROC t = ([]R x)VOID: (print((x, newline)); []R y = ip(x); print((y, newline)); print(("tot", 1/sv(x)+ 1/sv(y), newline))); t((1, 1)); t(u(3, 2/3)); t(u(4, 1/2)); t((2, 1.5, 3.1)) # 1/((1-1/s)*s));#