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.
190 + .NOT.lsame(trans,
'T') .AND.
191 + .NOT.lsame(trans,
'C'))
THEN
193 ELSE IF (.NOT.lsame(diag,
'U') .AND.
194 + .NOT.lsame(diag,
'N'))
THEN
196 ELSE IF (n.LT.0)
THEN
198 ELSE IF (lda.LT.max(1,n))
THEN
200 ELSE IF (incx.EQ.0)
THEN
204 CALL xerbla(
'STRSV ',info)
212 nounit = lsame(diag,
'N')
219 ELSE IF (incx.NE.1)
THEN
226 IF (lsame(trans,
'N'))
THEN
230 IF (lsame(uplo,
'U'))
THEN
233 IF (x(j).NE.zero)
THEN
234 IF (nounit) x(j) = x(j)/a(j,j)
237 x(i) = x(i) - temp*a(i,j)
244 IF (x(jx).NE.zero)
THEN
245 IF (nounit) x(jx) = x(jx)/a(j,j)
250 x(ix) = x(ix) - temp*a(i,j)
259 IF (x(j).NE.zero)
THEN
260 IF (nounit) x(j) = x(j)/a(j,j)
263 x(i) = x(i) - temp*a(i,j)
270 IF (x(jx).NE.zero)
THEN
271 IF (nounit) x(jx) = x(jx)/a(j,j)
276 x(ix) = x(ix) - temp*a(i,j)
287 IF (lsame(uplo,
'U'))
THEN
292 temp = temp - a(i,j)*x(i)
294 IF (nounit) temp = temp/a(j,j)
303 temp = temp - a(i,j)*x(ix)
306 IF (nounit) temp = temp/a(j,j)
315 DO 130 i = n,j + 1,-1
316 temp = temp - a(i,j)*x(i)
318 IF (nounit) temp = temp/a(j,j)
327 DO 150 i = n,j + 1,-1
328 temp = temp - a(i,j)*x(ix)
331 IF (nounit) temp = temp/a(j,j)
subroutine xerbla(srname, info)
subroutine strsv(uplo, trans, diag, n, a, lda, x, incx)
STRSV