185 SUBROUTINE dtbmv(UPLO,TRANS,DIAG,N,K,A,LDA,X,INCX)
193 CHARACTER DIAG,TRANS,UPLO
196 DOUBLE PRECISION A(LDA,*),X(*)
202 DOUBLE PRECISION ZERO
203 parameter(zero=0.0d+0)
206 DOUBLE PRECISION TEMP
207 INTEGER I,INFO,IX,J,JX,KPLUS1,KX,L
224 IF (.NOT.lsame(uplo,
'U') .AND. .NOT.lsame(uplo,
'L'))
THEN
226 ELSE IF (.NOT.lsame(trans,
'N') .AND. .NOT.lsame(trans,
'T') .AND.
227 + .NOT.lsame(trans,
'C'))
THEN
229 ELSE IF (.NOT.lsame(diag,
'U') .AND. .NOT.lsame(diag,
'N'))
THEN
231 ELSE IF (n.LT.0)
THEN
233 ELSE IF (k.LT.0)
THEN
235 ELSE IF (lda.LT. (k+1))
THEN
237 ELSE IF (incx.EQ.0)
THEN
241 CALL xerbla(
'DTBMV ',info)
249 nounit = lsame(diag,
'N')
256 ELSE IF (incx.NE.1)
THEN
263 IF (lsame(trans,
'N'))
THEN
267 IF (lsame(uplo,
'U'))
THEN
271 IF (x(j).NE.zero)
THEN
274 DO 10 i = max(1,j-k),j - 1
275 x(i) = x(i) + temp*a(l+i,j)
277 IF (nounit) x(j) = x(j)*a(kplus1,j)
283 IF (x(jx).NE.zero)
THEN
287 DO 30 i = max(1,j-k),j - 1
288 x(ix) = x(ix) + temp*a(l+i,j)
291 IF (nounit) x(jx) = x(jx)*a(kplus1,j)
294 IF (j.GT.k) kx = kx + incx
300 IF (x(j).NE.zero)
THEN
303 DO 50 i = min(n,j+k),j + 1,-1
304 x(i) = x(i) + temp*a(l+i,j)
306 IF (nounit) x(j) = x(j)*a(1,j)
313 IF (x(jx).NE.zero)
THEN
317 DO 70 i = min(n,j+k),j + 1,-1
318 x(ix) = x(ix) + temp*a(l+i,j)
321 IF (nounit) x(jx) = x(jx)*a(1,j)
324 IF ((n-j).GE.k) kx = kx - incx
332 IF (lsame(uplo,
'U'))
THEN
338 IF (nounit) temp = temp*a(kplus1,j)
339 DO 90 i = j - 1,max(1,j-k),-1
340 temp = temp + a(l+i,j)*x(i)
352 IF (nounit) temp = temp*a(kplus1,j)
353 DO 110 i = j - 1,max(1,j-k),-1
354 temp = temp + a(l+i,j)*x(ix)
366 IF (nounit) temp = temp*a(1,j)
367 DO 130 i = j + 1,min(n,j+k)
368 temp = temp + a(l+i,j)*x(i)
379 IF (nounit) temp = temp*a(1,j)
380 DO 150 i = j + 1,min(n,j+k)
381 temp = temp + a(l+i,j)*x(ix)
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dtbmv(UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX)
DTBMV