150 SUBROUTINE strsv(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
159 CHARACTER diag,trans,uplo
169 parameter(zero=0.0e+0)
173 INTEGER i,info,ix,j,jx,kx
190 IF (.NOT.
lsame(uplo,
'U') .AND. .NOT.
lsame(uplo,
'L'))
THEN
192 ELSE IF (.NOT.
lsame(trans,
'N') .AND. .NOT.
lsame(trans,
'T') .AND.
193 + .NOT.
lsame(trans,
'C'))
THEN
195 ELSE IF (.NOT.
lsame(diag,
'U') .AND. .NOT.
lsame(diag,
'N'))
THEN
197 ELSE IF (n.LT.0)
THEN
199 ELSE IF (lda.LT.max(1,n))
THEN
201 ELSE IF (incx.EQ.0)
THEN
205 CALL
xerbla(
'STRSV ',info)
213 nounit =
lsame(diag,
'N')
220 ELSE IF (incx.NE.1)
THEN
227 IF (
lsame(trans,
'N'))
THEN
231 IF (
lsame(uplo,
'U'))
THEN
234 IF (x(j).NE.zero)
THEN
235 IF (nounit) x(j) = x(j)/a(j,j)
238 x(i) = x(i) - temp*a(i,j)
245 IF (x(jx).NE.zero)
THEN
246 IF (nounit) x(jx) = x(jx)/a(j,j)
251 x(ix) = x(ix) - temp*a(i,j)
260 IF (x(j).NE.zero)
THEN
261 IF (nounit) x(j) = x(j)/a(j,j)
264 x(i) = x(i) - temp*a(i,j)
271 IF (x(jx).NE.zero)
THEN
272 IF (nounit) x(jx) = x(jx)/a(j,j)
277 x(ix) = x(ix) - temp*a(i,j)
288 IF (
lsame(uplo,
'U'))
THEN
293 temp = temp - a(i,j)*x(i)
295 IF (nounit) temp = temp/a(j,j)
304 temp = temp - a(i,j)*x(ix)
307 IF (nounit) temp = temp/a(j,j)
316 DO 130 i = n,j + 1,-1
317 temp = temp - a(i,j)*x(i)
319 IF (nounit) temp = temp/a(j,j)
328 DO 150 i = n,j + 1,-1
329 temp = temp - a(i,j)*x(ix)
332 IF (nounit) temp = temp/a(j,j)