199 SUBROUTINE zher2k(UPLO,TRANS,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
208 DOUBLE PRECISION beta
209 INTEGER k,lda,ldb,ldc,n
213 COMPLEX*16 a(lda,*),b(ldb,*),c(ldc,*)
226 INTRINSIC dble,dconjg,max
229 COMPLEX*16 temp1,temp2
230 INTEGER i,info,j,l,nrowa
235 parameter(one=1.0d+0)
237 parameter(zero= (0.0d+0,0.0d+0))
242 IF (
lsame(trans,
'N'))
THEN
247 upper =
lsame(uplo,
'U')
250 IF ((.NOT.upper) .AND. (.NOT.
lsame(uplo,
'L')))
THEN
252 ELSE IF ((.NOT.
lsame(trans,
'N')) .AND.
253 + (.NOT.
lsame(trans,
'C')))
THEN
255 ELSE IF (n.LT.0)
THEN
257 ELSE IF (k.LT.0)
THEN
259 ELSE IF (lda.LT.max(1,nrowa))
THEN
261 ELSE IF (ldb.LT.max(1,nrowa))
THEN
263 ELSE IF (ldc.LT.max(1,n))
THEN
267 CALL
xerbla(
'ZHER2K',info)
273 IF ((n.EQ.0) .OR. (((alpha.EQ.zero).OR.
274 + (k.EQ.0)).AND. (beta.EQ.one))) return
278 IF (alpha.EQ.zero)
THEN
280 IF (beta.EQ.dble(zero))
THEN
291 c(j,j) = beta*dble(c(j,j))
295 IF (beta.EQ.dble(zero))
THEN
303 c(j,j) = beta*dble(c(j,j))
315 IF (
lsame(trans,
'N'))
THEN
322 IF (beta.EQ.dble(zero))
THEN
326 ELSE IF (beta.NE.one)
THEN
330 c(j,j) = beta*dble(c(j,j))
332 c(j,j) = dble(c(j,j))
335 IF ((a(j,l).NE.zero) .OR. (b(j,l).NE.zero))
THEN
336 temp1 = alpha*dconjg(b(j,l))
337 temp2 = dconjg(alpha*a(j,l))
339 c(i,j) = c(i,j) + a(i,l)*temp1 +
342 c(j,j) = dble(c(j,j)) +
343 + dble(a(j,l)*temp1+b(j,l)*temp2)
349 IF (beta.EQ.dble(zero))
THEN
353 ELSE IF (beta.NE.one)
THEN
357 c(j,j) = beta*dble(c(j,j))
359 c(j,j) = dble(c(j,j))
362 IF ((a(j,l).NE.zero) .OR. (b(j,l).NE.zero))
THEN
363 temp1 = alpha*dconjg(b(j,l))
364 temp2 = dconjg(alpha*a(j,l))
366 c(i,j) = c(i,j) + a(i,l)*temp1 +
369 c(j,j) = dble(c(j,j)) +
370 + dble(a(j,l)*temp1+b(j,l)*temp2)
386 temp1 = temp1 + dconjg(a(l,i))*b(l,j)
387 temp2 = temp2 + dconjg(b(l,i))*a(l,j)
390 IF (beta.EQ.dble(zero))
THEN
391 c(j,j) = dble(alpha*temp1+
392 + dconjg(alpha)*temp2)
394 c(j,j) = beta*dble(c(j,j)) +
396 + dconjg(alpha)*temp2)
399 IF (beta.EQ.dble(zero))
THEN
400 c(i,j) = alpha*temp1 + dconjg(alpha)*temp2
402 c(i,j) = beta*c(i,j) + alpha*temp1 +
403 + dconjg(alpha)*temp2
414 temp1 = temp1 + dconjg(a(l,i))*b(l,j)
415 temp2 = temp2 + dconjg(b(l,i))*a(l,j)
418 IF (beta.EQ.dble(zero))
THEN
419 c(j,j) = dble(alpha*temp1+
420 + dconjg(alpha)*temp2)
422 c(j,j) = beta*dble(c(j,j)) +
424 + dconjg(alpha)*temp2)
427 IF (beta.EQ.dble(zero))
THEN
428 c(i,j) = alpha*temp1 + dconjg(alpha)*temp2
430 c(i,j) = beta*c(i,j) + alpha*temp1 +
431 + dconjg(alpha)*temp2