146 SUBROUTINE dtrmv(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
154 CHARACTER DIAG,TRANS,UPLO
157 DOUBLE PRECISION A(LDA,*),X(*)
163 DOUBLE PRECISION ZERO
164 parameter(zero=0.0d+0)
167 DOUBLE PRECISION TEMP
168 INTEGER I,INFO,IX,J,JX,KX
185 IF (.NOT.lsame(uplo,
'U') .AND. .NOT.lsame(uplo,
'L'))
THEN
187 ELSE IF (.NOT.lsame(trans,
'N') .AND. .NOT.lsame(trans,
'T') .AND.
188 + .NOT.lsame(trans,
'C'))
THEN
190 ELSE IF (.NOT.lsame(diag,
'U') .AND. .NOT.lsame(diag,
'N'))
THEN
192 ELSE IF (n.LT.0)
THEN
194 ELSE IF (lda.LT.max(1,n))
THEN
196 ELSE IF (incx.EQ.0)
THEN
200 CALL xerbla(
'DTRMV ',info)
208 nounit = lsame(diag,
'N')
215 ELSE IF (incx.NE.1)
THEN
222 IF (lsame(trans,
'N'))
THEN
226 IF (lsame(uplo,
'U'))
THEN
229 IF (x(j).NE.zero)
THEN
232 x(i) = x(i) + temp*a(i,j)
234 IF (nounit) x(j) = x(j)*a(j,j)
240 IF (x(jx).NE.zero)
THEN
244 x(ix) = x(ix) + temp*a(i,j)
247 IF (nounit) x(jx) = x(jx)*a(j,j)
255 IF (x(j).NE.zero)
THEN
258 x(i) = x(i) + temp*a(i,j)
260 IF (nounit) x(j) = x(j)*a(j,j)
267 IF (x(jx).NE.zero)
THEN
271 x(ix) = x(ix) + temp*a(i,j)
274 IF (nounit) x(jx) = x(jx)*a(j,j)
284 IF (lsame(uplo,
'U'))
THEN
288 IF (nounit) temp = temp*a(j,j)
290 temp = temp + a(i,j)*x(i)
299 IF (nounit) temp = temp*a(j,j)
300 DO 110 i = j - 1,1,-1
302 temp = temp + a(i,j)*x(ix)
312 IF (nounit) temp = temp*a(j,j)
314 temp = temp + a(i,j)*x(i)
323 IF (nounit) temp = temp*a(j,j)
326 temp = temp + a(i,j)*x(ix)
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dtrmv(UPLO, TRANS, DIAG, N, A, LDA, X, INCX)
DTRMV