142 SUBROUTINE dtrsv(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
150 CHARACTER DIAG,TRANS,UPLO
153 DOUBLE PRECISION A(lda,*),X(*)
159 DOUBLE PRECISION ZERO
160 parameter(zero=0.0d+0)
163 DOUBLE PRECISION TEMP
164 INTEGER I,INFO,IX,J,JX,KX
181 IF (.NOT.lsame(uplo,
'U') .AND. .NOT.lsame(uplo,
'L'))
THEN 183 ELSE IF (.NOT.lsame(trans,
'N') .AND. .NOT.lsame(trans,
'T') .AND.
184 + .NOT.lsame(trans,
'C'))
THEN 186 ELSE IF (.NOT.lsame(diag,
'U') .AND. .NOT.lsame(diag,
'N'))
THEN 188 ELSE IF (n.LT.0)
THEN 190 ELSE IF (lda.LT.max(1,n))
THEN 192 ELSE IF (incx.EQ.0)
THEN 196 CALL xerbla(
'DTRSV ',info)
204 nounit = lsame(diag,
'N')
211 ELSE IF (incx.NE.1)
THEN 218 IF (lsame(trans,
'N'))
THEN 222 IF (lsame(uplo,
'U'))
THEN 225 IF (x(j).NE.zero)
THEN 226 IF (nounit) x(j) = x(j)/a(j,j)
229 x(i) = x(i) - temp*a(i,j)
236 IF (x(jx).NE.zero)
THEN 237 IF (nounit) x(jx) = x(jx)/a(j,j)
242 x(ix) = x(ix) - temp*a(i,j)
251 IF (x(j).NE.zero)
THEN 252 IF (nounit) x(j) = x(j)/a(j,j)
255 x(i) = x(i) - temp*a(i,j)
262 IF (x(jx).NE.zero)
THEN 263 IF (nounit) x(jx) = x(jx)/a(j,j)
268 x(ix) = x(ix) - temp*a(i,j)
279 IF (lsame(uplo,
'U'))
THEN 284 temp = temp - a(i,j)*x(i)
286 IF (nounit) temp = temp/a(j,j)
295 temp = temp - a(i,j)*x(ix)
298 IF (nounit) temp = temp/a(j,j)
307 DO 130 i = n,j + 1,-1
308 temp = temp - a(i,j)*x(i)
310 IF (nounit) temp = temp/a(j,j)
319 DO 150 i = n,j + 1,-1
320 temp = temp - a(i,j)*x(ix)
323 IF (nounit) temp = temp/a(j,j)
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dtrsv(UPLO, TRANS, DIAG, N, A, LDA, X, INCX)
DTRSV