159 SUBROUTINE zgemv(TRANS,M,N,ALPHA,A,LDA,X,INCX,BETA,Y,INCY)
167 COMPLEX*16 alpha,beta
168 INTEGER incx,incy,lda,m,n
172 COMPLEX*16 a(lda,*),x(*),y(*)
179 parameter(one= (1.0d+0,0.0d+0))
181 parameter(zero= (0.0d+0,0.0d+0))
185 INTEGER i,info,ix,iy,j,jx,jy,kx,ky,lenx,leny
202 IF (.NOT.
lsame(trans,
'N') .AND. .NOT.
lsame(trans,
'T') .AND.
203 + .NOT.
lsame(trans,
'C'))
THEN
205 ELSE IF (m.LT.0)
THEN
207 ELSE IF (n.LT.0)
THEN
209 ELSE IF (lda.LT.max(1,m))
THEN
211 ELSE IF (incx.EQ.0)
THEN
213 ELSE IF (incy.EQ.0)
THEN
217 CALL
xerbla(
'ZGEMV ',info)
223 IF ((m.EQ.0) .OR. (n.EQ.0) .OR.
224 + ((alpha.EQ.zero).AND. (beta.EQ.one))) return
226 noconj =
lsame(trans,
'T')
231 IF (
lsame(trans,
'N'))
THEN
241 kx = 1 - (lenx-1)*incx
246 ky = 1 - (leny-1)*incy
254 IF (beta.NE.one)
THEN
256 IF (beta.EQ.zero)
THEN
267 IF (beta.EQ.zero)
THEN
280 IF (alpha.EQ.zero) return
281 IF (
lsame(trans,
'N'))
THEN
288 IF (x(jx).NE.zero)
THEN
291 y(i) = y(i) + temp*a(i,j)
298 IF (x(jx).NE.zero)
THEN
302 y(iy) = y(iy) + temp*a(i,j)
319 temp = temp + a(i,j)*x(i)
323 temp = temp + dconjg(a(i,j))*x(i)
326 y(jy) = y(jy) + alpha*temp
335 temp = temp + a(i,j)*x(ix)
340 temp = temp + dconjg(a(i,j))*x(ix)
344 y(jy) = y(jy) + alpha*temp