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