code 36403;
procedure ROWPERM(PERM,LOW,UPP,I,MAT);value LOW,UPP,I;
integer LOW,UPP,I;integer array PERM;real array MAT;
begin integer T,J,K;real A;boolean array TODO[LOW:UPP];
for T:=LOW step 1 until UPP do TODO[T]:=true;
for T:=LOW step 1 until UPP do
begin if TODO[T] then
begin K:=T;A:=MAT[I,K];
for J:=PERM[K] while J^=T do
begin MAT[I,K]:=MAT[I,J];TODO[K]:=false;K:=J
end;MAT[I,K]:=A;TODO[K]:=false
end CYCLE;
end FOR T;
end ROWPERM;
eop