148 SUBROUTINE strsv(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
156 CHARACTER DIAG,TRANS,UPLO
166 parameter(zero=0.0e+0)
170 INTEGER I,INFO,IX,J,JX,KX
187 IF (.NOT.
lsame(uplo,
'U') .AND. .NOT.
lsame(uplo,
'L'))
THEN
189 ELSE IF (.NOT.
lsame(trans,
'N') .AND. .NOT.
lsame(trans,
'T') .AND.
190 + .NOT.
lsame(trans,
'C'))
THEN
192 ELSE IF (.NOT.
lsame(diag,
'U') .AND. .NOT.
lsame(diag,
'N'))
THEN
194 ELSE IF (n.LT.0)
THEN
196 ELSE IF (lda.LT.
max(1,n))
THEN
202 CALL xerbla(
'STRSV ',info)
210 nounit =
lsame(diag,
'N')
217 ELSE IF (incx.NE.1)
THEN
224 IF (
lsame(trans,
'N'))
THEN
228 IF (
lsame(uplo,
'U'))
THEN
231 IF (x(j).NE.zero)
THEN
232 IF (nounit) x(j) = x(j)/a(j,j)
235 x(i) = x(i) - temp*a(i,j)
242 IF (x(jx).NE.zero)
THEN
243 IF (nounit) x(jx) = x(jx)/a(j,j)
248 x(ix) = x(ix) - temp*a(i,j)
257 IF (x(j).NE.zero)
THEN
258 IF (nounit) x(j) = x(j)/a(j,j)
261 x(i) = x(i) - temp*a(i,j)
268 IF (x(jx).NE.zero)
THEN
269 IF (nounit) x(jx) = x(jx)/a(j,j)
274 x(ix) = x(ix) - temp*a(i,j)
285 IF (
lsame(uplo,
'U'))
THEN
290 temp = temp - a(i,j)*x(i)
292 IF (nounit) temp = temp/a(j,j)
301 temp = temp - a(i,j)*x(ix)
304 IF (nounit) temp = temp/a(j,j)
313 DO 130 i = n,j + 1,-1
314 temp = temp - a(i,j)*x(i)
316 IF (nounit) temp = temp/a(j,j)
325 DO 150 i = n,j + 1,-1
326 temp = temp - a(i,j)*x(ix)
329 IF (nounit) temp = temp/a(j,j)
subroutine strsv(uplo, trans, diag, n, a, lda, x, incx)
STRSV