143 SUBROUTINE dtpmv(UPLO,TRANS,DIAG,N,AP,X,INCX)
152 CHARACTER diag,trans,uplo
155 DOUBLE PRECISION ap(*),x(*)
161 DOUBLE PRECISION zero
162 parameter(zero=0.0d+0)
165 DOUBLE PRECISION temp
166 INTEGER i,info,ix,j,jx,k,kk,kx
180 IF (.NOT.
lsame(uplo,
'U') .AND. .NOT.
lsame(uplo,
'L'))
THEN
182 ELSE IF (.NOT.
lsame(trans,
'N') .AND. .NOT.
lsame(trans,
'T') .AND.
183 + .NOT.
lsame(trans,
'C'))
THEN
185 ELSE IF (.NOT.
lsame(diag,
'U') .AND. .NOT.
lsame(diag,
'N'))
THEN
187 ELSE IF (n.LT.0)
THEN
189 ELSE IF (incx.EQ.0)
THEN
193 CALL
xerbla(
'DTPMV ',info)
201 nounit =
lsame(diag,
'N')
208 ELSE IF (incx.NE.1)
THEN
215 IF (
lsame(trans,
'N'))
THEN
219 IF (
lsame(uplo,
'U'))
THEN
223 IF (x(j).NE.zero)
THEN
227 x(i) = x(i) + temp*ap(k)
230 IF (nounit) x(j) = x(j)*ap(kk+j-1)
237 IF (x(jx).NE.zero)
THEN
240 DO 30 k = kk,kk + j - 2
241 x(ix) = x(ix) + temp*ap(k)
244 IF (nounit) x(jx) = x(jx)*ap(kk+j-1)
254 IF (x(j).NE.zero)
THEN
258 x(i) = x(i) + temp*ap(k)
261 IF (nounit) x(j) = x(j)*ap(kk-n+j)
269 IF (x(jx).NE.zero)
THEN
272 DO 70 k = kk,kk - (n- (j+1)),-1
273 x(ix) = x(ix) + temp*ap(k)
276 IF (nounit) x(jx) = x(jx)*ap(kk-n+j)
287 IF (
lsame(uplo,
'U'))
THEN
292 IF (nounit) temp = temp*ap(kk)
295 temp = temp + ap(k)*x(i)
306 IF (nounit) temp = temp*ap(kk)
307 DO 110 k = kk - 1,kk - j + 1,-1
309 temp = temp + ap(k)*x(ix)
321 IF (nounit) temp = temp*ap(kk)
324 temp = temp + ap(k)*x(i)
335 IF (nounit) temp = temp*ap(kk)
336 DO 150 k = kk + 1,kk + n - j
338 temp = temp + ap(k)*x(ix)