code 34423;
  procedure DECTRI(SUB, DIAG, SUPER, N, AUX);
  value N; integer N; array SUB, DIAG, SUPER, AUX;
  begin integer I, N1;
     real D, R, S, U, NORM, NORM1, TOL;
     TOL:= AUX[2]; D:= DIAG[1]; R:= SUPER[1];
     NORM:= NORM1:= ABS(D) + ABS(R);
     if ABS(D) <= NORM1 * TOL then 
     begin AUX[3]:= 0; AUX[5]:= D; goto EXIT end;
     U:= SUPER[1]:= R / D; S:= SUB[1]; N1:= N - 1;
     for I:= 2 step 1 until N1 do 
     begin D:= DIAG[I]; R:= SUPER[I];
        NORM1:= ABS(S) + ABS(D) + ABS(R);
        D:= DIAG[I]:= D - U * S;
        if ABS(D) <= NORM1 * TOL then 
        begin AUX[3]:= I - 1; AUX[5]:= D; goto EXIT end;
        U:= SUPER[I]:= R / D; S:= SUB[I];
        if NORM1 > NORM then NORM:= NORM1
     end;
     D:= DIAG[N]; NORM1:= ABS(D) + ABS(S);
     D:= DIAG[N]:= D - U * S;
     if ABS(D) <= NORM1 * TOL then 
     begin AUX[3]:= N1; AUX[5]:= D; goto EXIT end;
     if NORM1 > NORM then NORM:= NORM1;
     AUX[3]:= N; AUX[5]:= NORM;
 EXIT:
 end DECTRI

        eop