186 SUBROUTINE cgemm(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
194 INTEGER K,LDA,LDB,LDC,M,N
195 CHARACTER TRANSA,TRANSB
198 COMPLEX A(lda,*),B(ldb,*),C(ldc,*)
215 INTEGER I,INFO,J,L,NROWA,NROWB
216 LOGICAL CONJA,CONJB,NOTA,NOTB
220 parameter(one= (1.0e+0,0.0e+0))
222 parameter(zero= (0.0e+0,0.0e+0))
230 nota = lsame(transa,
'N')
231 notb = lsame(transb,
'N')
232 conja = lsame(transa,
'C')
233 conjb = lsame(transb,
'C')
248 IF ((.NOT.nota) .AND. (.NOT.conja) .AND.
249 + (.NOT.lsame(transa,
'T')))
THEN 251 ELSE IF ((.NOT.notb) .AND. (.NOT.conjb) .AND.
252 + (.NOT.lsame(transb,
'T')))
THEN 254 ELSE IF (m.LT.0)
THEN 256 ELSE IF (n.LT.0)
THEN 258 ELSE IF (k.LT.0)
THEN 260 ELSE IF (lda.LT.max(1,nrowa))
THEN 262 ELSE IF (ldb.LT.max(1,nrowb))
THEN 264 ELSE IF (ldc.LT.max(1,m))
THEN 268 CALL xerbla(
'CGEMM ',info)
274 IF ((m.EQ.0) .OR. (n.EQ.0) .OR.
275 + (((alpha.EQ.zero).OR. (k.EQ.0)).AND. (beta.EQ.one)))
RETURN 279 IF (alpha.EQ.zero)
THEN 280 IF (beta.EQ.zero)
THEN 304 IF (beta.EQ.zero)
THEN 308 ELSE IF (beta.NE.one)
THEN 316 c(i,j) = c(i,j) + temp*a(i,l)
328 temp = temp + conjg(a(l,i))*b(l,j)
330 IF (beta.EQ.zero)
THEN 333 c(i,j) = alpha*temp + beta*c(i,j)
345 temp = temp + a(l,i)*b(l,j)
347 IF (beta.EQ.zero)
THEN 350 c(i,j) = alpha*temp + beta*c(i,j)
361 IF (beta.EQ.zero)
THEN 365 ELSE IF (beta.NE.one)
THEN 371 temp = alpha*conjg(b(j,l))
373 c(i,j) = c(i,j) + temp*a(i,l)
382 IF (beta.EQ.zero)
THEN 386 ELSE IF (beta.NE.one)
THEN 394 c(i,j) = c(i,j) + temp*a(i,l)
408 temp = temp + conjg(a(l,i))*conjg(b(j,l))
410 IF (beta.EQ.zero)
THEN 413 c(i,j) = alpha*temp + beta*c(i,j)
425 temp = temp + conjg(a(l,i))*b(j,l)
427 IF (beta.EQ.zero)
THEN 430 c(i,j) = alpha*temp + beta*c(i,j)
444 temp = temp + a(l,i)*conjg(b(j,l))
446 IF (beta.EQ.zero)
THEN 449 c(i,j) = alpha*temp + beta*c(i,j)
461 temp = temp + a(l,i)*b(j,l)
463 IF (beta.EQ.zero)
THEN 466 c(i,j) = alpha*temp + beta*c(i,j)
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine cgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
CGEMM