192 SUBROUTINE chemm(SIDE,UPLO,M,N,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
201 INTEGER LDA,LDB,LDC,M,N
205 COMPLEX A(lda,*),B(ldb,*),C(ldc,*)
218 INTRINSIC conjg,max,real
222 INTEGER I,INFO,J,K,NROWA
227 parameter(one= (1.0e+0,0.0e+0))
229 parameter(zero= (0.0e+0,0.0e+0))
234 IF (lsame(side,
'L'))
THEN 239 upper = lsame(uplo,
'U')
244 IF ((.NOT.lsame(side,
'L')) .AND. (.NOT.lsame(side,
'R')))
THEN 246 ELSE IF ((.NOT.upper) .AND. (.NOT.lsame(uplo,
'L')))
THEN 248 ELSE IF (m.LT.0)
THEN 250 ELSE IF (n.LT.0)
THEN 252 ELSE IF (lda.LT.max(1,nrowa))
THEN 254 ELSE IF (ldb.LT.max(1,m))
THEN 256 ELSE IF (ldc.LT.max(1,m))
THEN 260 CALL xerbla(
'CHEMM ',info)
266 IF ((m.EQ.0) .OR. (n.EQ.0) .OR.
267 + ((alpha.EQ.zero).AND. (beta.EQ.one)))
RETURN 271 IF (alpha.EQ.zero)
THEN 272 IF (beta.EQ.zero)
THEN 290 IF (lsame(side,
'L'))
THEN 300 c(k,j) = c(k,j) + temp1*a(k,i)
301 temp2 = temp2 + b(k,j)*conjg(a(k,i))
303 IF (beta.EQ.zero)
THEN 304 c(i,j) = temp1*
REAL(A(I,I)) + ALPHA*TEMP2
306 c(i,j) = beta*c(i,j) + temp1*
REAL(A(I,I)) +
317 c(k,j) = c(k,j) + temp1*a(k,i)
318 temp2 = temp2 + b(k,j)*conjg(a(k,i))
320 IF (beta.EQ.zero)
THEN 321 c(i,j) = temp1*
REAL(A(I,I)) + ALPHA*TEMP2
323 c(i,j) = beta*c(i,j) + temp1*
REAL(A(I,I)) +
334 temp1 = alpha*
REAL(a(j,j))
335 IF (beta.EQ.zero)
THEN 337 c(i,j) = temp1*b(i,j)
341 c(i,j) = beta*c(i,j) + temp1*b(i,j)
348 temp1 = alpha*conjg(a(j,k))
351 c(i,j) = c(i,j) + temp1*b(i,k)
356 temp1 = alpha*conjg(a(j,k))
361 c(i,j) = c(i,j) + temp1*b(i,k)
subroutine chemm(SIDE, UPLO, M, N, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
CHEMM
subroutine xerbla(SRNAME, INFO)
XERBLA