143 SUBROUTINE dtpsv(UPLO,TRANS,DIAG,N,AP,X,INCX)
151 CHARACTER DIAG,TRANS,UPLO
154 DOUBLE PRECISION AP(*),X(*)
160 DOUBLE PRECISION ZERO
161 parameter(zero=0.0d+0)
164 DOUBLE PRECISION TEMP
165 INTEGER I,INFO,IX,J,JX,K,KK,KX
179 IF (.NOT.lsame(uplo,
'U') .AND. .NOT.lsame(uplo,
'L'))
THEN
181 ELSE IF (.NOT.lsame(trans,
'N') .AND. .NOT.lsame(trans,
'T') .AND.
182 + .NOT.lsame(trans,
'C'))
THEN
184 ELSE IF (.NOT.lsame(diag,
'U') .AND. .NOT.lsame(diag,
'N'))
THEN
186 ELSE IF (n.LT.0)
THEN
188 ELSE IF (incx.EQ.0)
THEN
192 CALL xerbla(
'DTPSV ',info)
200 nounit = lsame(diag,
'N')
207 ELSE IF (incx.NE.1)
THEN
214 IF (lsame(trans,
'N'))
THEN
218 IF (lsame(uplo,
'U'))
THEN
222 IF (x(j).NE.zero)
THEN
223 IF (nounit) x(j) = x(j)/ap(kk)
227 x(i) = x(i) - temp*ap(k)
236 IF (x(jx).NE.zero)
THEN
237 IF (nounit) x(jx) = x(jx)/ap(kk)
240 DO 30 k = kk - 1,kk - j + 1,-1
242 x(ix) = x(ix) - temp*ap(k)
253 IF (x(j).NE.zero)
THEN
254 IF (nounit) x(j) = x(j)/ap(kk)
258 x(i) = x(i) - temp*ap(k)
267 IF (x(jx).NE.zero)
THEN
268 IF (nounit) x(jx) = x(jx)/ap(kk)
271 DO 70 k = kk + 1,kk + n - j
273 x(ix) = x(ix) - temp*ap(k)
285 IF (lsame(uplo,
'U'))
THEN
292 temp = temp - ap(k)*x(i)
295 IF (nounit) temp = temp/ap(kk+j-1)
304 DO 110 k = kk,kk + j - 2
305 temp = temp - ap(k)*x(ix)
308 IF (nounit) temp = temp/ap(kk+j-1)
320 DO 130 i = n,j + 1,-1
321 temp = temp - ap(k)*x(i)
324 IF (nounit) temp = temp/ap(kk-n+j)
334 DO 150 k = kk,kk - (n- (j+1)),-1
335 temp = temp - ap(k)*x(ix)
338 IF (nounit) temp = temp/ap(kk-n+j)
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dtpsv(UPLO, TRANS, DIAG, N, AP, X, INCX)
DTPSV