150 SUBROUTINE ztrsv(UPLO,TRANS,DIAG,N,A,LDA,X,INCX)
159 CHARACTER diag,trans,uplo
162 COMPLEX*16 a(lda,*),x(*)
169 parameter(zero= (0.0d+0,0.0d+0))
173 INTEGER i,info,ix,j,jx,kx
174 LOGICAL noconj,nounit
190 IF (.NOT.
lsame(uplo,
'U') .AND. .NOT.
lsame(uplo,
'L'))
THEN
192 ELSE IF (.NOT.
lsame(trans,
'N') .AND. .NOT.
lsame(trans,
'T') .AND.
193 + .NOT.
lsame(trans,
'C'))
THEN
195 ELSE IF (.NOT.
lsame(diag,
'U') .AND. .NOT.
lsame(diag,
'N'))
THEN
197 ELSE IF (n.LT.0)
THEN
199 ELSE IF (lda.LT.max(1,n))
THEN
201 ELSE IF (incx.EQ.0)
THEN
205 CALL
xerbla(
'ZTRSV ',info)
213 noconj =
lsame(trans,
'T')
214 nounit =
lsame(diag,
'N')
221 ELSE IF (incx.NE.1)
THEN
228 IF (
lsame(trans,
'N'))
THEN
232 IF (
lsame(uplo,
'U'))
THEN
235 IF (x(j).NE.zero)
THEN
236 IF (nounit) x(j) = x(j)/a(j,j)
239 x(i) = x(i) - temp*a(i,j)
246 IF (x(jx).NE.zero)
THEN
247 IF (nounit) x(jx) = x(jx)/a(j,j)
252 x(ix) = x(ix) - temp*a(i,j)
261 IF (x(j).NE.zero)
THEN
262 IF (nounit) x(j) = x(j)/a(j,j)
265 x(i) = x(i) - temp*a(i,j)
272 IF (x(jx).NE.zero)
THEN
273 IF (nounit) x(jx) = x(jx)/a(j,j)
278 x(ix) = x(ix) - temp*a(i,j)
289 IF (
lsame(uplo,
'U'))
THEN
295 temp = temp - a(i,j)*x(i)
297 IF (nounit) temp = temp/a(j,j)
300 temp = temp - dconjg(a(i,j))*x(i)
302 IF (nounit) temp = temp/dconjg(a(j,j))
313 temp = temp - a(i,j)*x(ix)
316 IF (nounit) temp = temp/a(j,j)
319 temp = temp - dconjg(a(i,j))*x(ix)
322 IF (nounit) temp = temp/dconjg(a(j,j))
333 DO 150 i = n,j + 1,-1
334 temp = temp - a(i,j)*x(i)
336 IF (nounit) temp = temp/a(j,j)
338 DO 160 i = n,j + 1,-1
339 temp = temp - dconjg(a(i,j))*x(i)
341 IF (nounit) temp = temp/dconjg(a(j,j))
352 DO 180 i = n,j + 1,-1
353 temp = temp - a(i,j)*x(ix)
356 IF (nounit) temp = temp/a(j,j)
358 DO 190 i = n,j + 1,-1
359 temp = temp - dconjg(a(i,j))*x(ix)
362 IF (nounit) temp = temp/dconjg(a(j,j))