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