148 SUBROUTINE dtrmv(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
157 CHARACTER diag,trans,uplo
160 DOUBLE PRECISION a(lda,*),x(*)
166 DOUBLE PRECISION zero
167 parameter(zero=0.0d+0)
170 DOUBLE PRECISION temp
171 INTEGER i,info,ix,j,jx,kx
188 IF (.NOT.
lsame(uplo,
'U') .AND. .NOT.
lsame(uplo,
'L'))
THEN
190 ELSE IF (.NOT.
lsame(trans,
'N') .AND. .NOT.
lsame(trans,
'T') .AND.
191 + .NOT.
lsame(trans,
'C'))
THEN
193 ELSE IF (.NOT.
lsame(diag,
'U') .AND. .NOT.
lsame(diag,
'N'))
THEN
195 ELSE IF (n.LT.0)
THEN
197 ELSE IF (lda.LT.max(1,n))
THEN
199 ELSE IF (incx.EQ.0)
THEN
203 CALL
xerbla(
'DTRMV ',info)
211 nounit =
lsame(diag,
'N')
218 ELSE IF (incx.NE.1)
THEN
225 IF (
lsame(trans,
'N'))
THEN
229 IF (
lsame(uplo,
'U'))
THEN
232 IF (x(j).NE.zero)
THEN
235 x(i) = x(i) + temp*a(i,j)
237 IF (nounit) x(j) = x(j)*a(j,j)
243 IF (x(jx).NE.zero)
THEN
247 x(ix) = x(ix) + temp*a(i,j)
250 IF (nounit) x(jx) = x(jx)*a(j,j)
258 IF (x(j).NE.zero)
THEN
261 x(i) = x(i) + temp*a(i,j)
263 IF (nounit) x(j) = x(j)*a(j,j)
270 IF (x(jx).NE.zero)
THEN
274 x(ix) = x(ix) + temp*a(i,j)
277 IF (nounit) x(jx) = x(jx)*a(j,j)
287 IF (
lsame(uplo,
'U'))
THEN
291 IF (nounit) temp = temp*a(j,j)
293 temp = temp + a(i,j)*x(i)
302 IF (nounit) temp = temp*a(j,j)
303 DO 110 i = j - 1,1,-1
305 temp = temp + a(i,j)*x(ix)
315 IF (nounit) temp = temp*a(j,j)
317 temp = temp + a(i,j)*x(i)
326 IF (nounit) temp = temp*a(j,j)
329 temp = temp + a(i,j)*x(ix)