190 SUBROUTINE zhemm(SIDE,UPLO,M,N,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
197 COMPLEX*16 ALPHA,BETA
198 INTEGER LDA,LDB,LDC,M,N
202 COMPLEX*16 A(LDA,*),B(LDB,*),C(LDC,*)
215 INTRINSIC dble,dconjg,max
218 COMPLEX*16 TEMP1,TEMP2
219 INTEGER I,INFO,J,K,NROWA
224 parameter(one= (1.0d+0,0.0d+0))
226 parameter(zero= (0.0d+0,0.0d+0))
231 IF (lsame(side,
'L'))
THEN
236 upper = lsame(uplo,
'U')
241 IF ((.NOT.lsame(side,
'L')) .AND. (.NOT.lsame(side,
'R')))
THEN
243 ELSE IF ((.NOT.upper) .AND. (.NOT.lsame(uplo,
'L')))
THEN
245 ELSE IF (m.LT.0)
THEN
247 ELSE IF (n.LT.0)
THEN
249 ELSE IF (lda.LT.max(1,nrowa))
THEN
251 ELSE IF (ldb.LT.max(1,m))
THEN
253 ELSE IF (ldc.LT.max(1,m))
THEN
257 CALL xerbla(
'ZHEMM ',info)
263 IF ((m.EQ.0) .OR. (n.EQ.0) .OR.
264 + ((alpha.EQ.zero).AND. (beta.EQ.one)))
RETURN
268 IF (alpha.EQ.zero)
THEN
269 IF (beta.EQ.zero)
THEN
287 IF (lsame(side,
'L'))
THEN
297 c(k,j) = c(k,j) + temp1*a(k,i)
298 temp2 = temp2 + b(k,j)*dconjg(a(k,i))
300 IF (beta.EQ.zero)
THEN
301 c(i,j) = temp1*dble(a(i,i)) + alpha*temp2
303 c(i,j) = beta*c(i,j) + temp1*dble(a(i,i)) +
314 c(k,j) = c(k,j) + temp1*a(k,i)
315 temp2 = temp2 + b(k,j)*dconjg(a(k,i))
317 IF (beta.EQ.zero)
THEN
318 c(i,j) = temp1*dble(a(i,i)) + alpha*temp2
320 c(i,j) = beta*c(i,j) + temp1*dble(a(i,i)) +
331 temp1 = alpha*dble(a(j,j))
332 IF (beta.EQ.zero)
THEN
334 c(i,j) = temp1*b(i,j)
338 c(i,j) = beta*c(i,j) + temp1*b(i,j)
345 temp1 = alpha*dconjg(a(j,k))
348 c(i,j) = c(i,j) + temp1*b(i,k)
353 temp1 = alpha*dconjg(a(j,k))
358 c(i,j) = c(i,j) + temp1*b(i,k)
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine zhemm(SIDE, UPLO, M, N, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
ZHEMM