code 34427;
procedure SOLTRIPIV(SUB, DIAG, SUPER, N, AID, PIV, B);
value N; integer N; array SUB, DIAG, SUPER, AID, B;
boolean array PIV;
begin integer I, N1;
real BI, BI1, R, S, T;
N1:= N - 1;
for I:= 1 step 1 until N1 do
begin if PIV[I] then
begin BI:= B[I+1]; BI1:= B[I] end
else
begin BI:= B[I]; BI1:= B[I+1] end;
R:= B[I]:= BI / DIAG[I];
B[I+1]:= BI1 - SUB[I] * R
end;
R:= B[N]:= B[N] / DIAG[N];
T:= B[N1]:= B[N1] - SUPER[N1] * R;
for I:= N - 2 step -1 until 1 do
begin S:= R; R:= T; T:= B[I]:= B[I] - SUPER[I] * R -
(if PIV[I] then AID[I] * S else 0)
end
end SOLTRIPIV
eop