10
Operations on Regions
•program Jacobi;
•config var n : integer = 512;
•         eps : float = 0.00001;
•
•region     R = [1..n, 1..n];
•        BigR = [0..n+1,0..n+1];
•direction  N = [-1, 0];  S = [ 1, 0];
•           E = [ 0, 1];  W = [ 0,-1];
•var     Temp : [R] float;
•           A : [BigR] float;
•         err : float;
•
•procedure Jacobi();
•    [R] begin
• [BigR] A := 0.0;
•[S of R] A := 1.0;
• repeat
•   Temp := (A@N + A@E + A@S + A@W)/4.0;
•   err  := max<< abs(Temp - A);
•   A    := Temp;
• until err < eps;
•   end;
•end;
Transform regions using “prepositional” operators: of, in, at, by, etc.  e.g.
   [S of R]
specifies region south of R of extent given by len., i.e. single row