188 SUBROUTINE stbsv(UPLO,TRANS,DIAG,N,K,A,LDA,X,INCX)
196 CHARACTER DIAG,TRANS,UPLO
206 parameter(zero=0.0e+0)
210 INTEGER I,INFO,IX,J,JX,KPLUS1,KX,L
227 IF (.NOT.lsame(uplo,
'U') .AND. .NOT.lsame(uplo,
'L'))
THEN
229 ELSE IF (.NOT.lsame(trans,
'N') .AND. .NOT.lsame(trans,
'T') .AND.
230 + .NOT.lsame(trans,
'C'))
THEN
232 ELSE IF (.NOT.lsame(diag,
'U') .AND. .NOT.lsame(diag,
'N'))
THEN
234 ELSE IF (n.LT.0)
THEN
236 ELSE IF (k.LT.0)
THEN
238 ELSE IF (lda.LT. (k+1))
THEN
240 ELSE IF (incx.EQ.0)
THEN
244 CALL xerbla(
'STBSV ',info)
252 nounit = lsame(diag,
'N')
259 ELSE IF (incx.NE.1)
THEN
266 IF (lsame(trans,
'N'))
THEN
270 IF (lsame(uplo,
'U'))
THEN
274 IF (x(j).NE.zero)
THEN
276 IF (nounit) x(j) = x(j)/a(kplus1,j)
278 DO 10 i = j - 1,max(1,j-k),-1
279 x(i) = x(i) - temp*a(l+i,j)
288 IF (x(jx).NE.zero)
THEN
291 IF (nounit) x(jx) = x(jx)/a(kplus1,j)
293 DO 30 i = j - 1,max(1,j-k),-1
294 x(ix) = x(ix) - temp*a(l+i,j)
304 IF (x(j).NE.zero)
THEN
306 IF (nounit) x(j) = x(j)/a(1,j)
308 DO 50 i = j + 1,min(n,j+k)
309 x(i) = x(i) - temp*a(l+i,j)
317 IF (x(jx).NE.zero)
THEN
320 IF (nounit) x(jx) = x(jx)/a(1,j)
322 DO 70 i = j + 1,min(n,j+k)
323 x(ix) = x(ix) - temp*a(l+i,j)
335 IF (lsame(uplo,
'U'))
THEN
341 DO 90 i = max(1,j-k),j - 1
342 temp = temp - a(l+i,j)*x(i)
344 IF (nounit) temp = temp/a(kplus1,j)
353 DO 110 i = max(1,j-k),j - 1
354 temp = temp - a(l+i,j)*x(ix)
357 IF (nounit) temp = temp/a(kplus1,j)
360 IF (j.GT.k) kx = kx + incx
368 DO 130 i = min(n,j+k),j + 1,-1
369 temp = temp - a(l+i,j)*x(i)
371 IF (nounit) temp = temp/a(1,j)
381 DO 150 i = min(n,j+k),j + 1,-1
382 temp = temp - a(l+i,j)*x(ix)
385 IF (nounit) temp = temp/a(1,j)
388 IF ((n-j).GE.k) kx = kx - incx
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine stbsv(UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX)
STBSV