186 SUBROUTINE sgemm(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 REAL A(lda,*),B(ldb,*),C(ldc,*)
215 INTEGER I,INFO,J,L,NROWA,NROWB
220 parameter(one=1.0e+0,zero=0.0e+0)
227 nota = lsame(transa,
'N')
228 notb = lsame(transb,
'N')
243 IF ((.NOT.nota) .AND. (.NOT.lsame(transa,
'C')) .AND.
244 + (.NOT.lsame(transa,
'T')))
THEN 246 ELSE IF ((.NOT.notb) .AND. (.NOT.lsame(transb,
'C')) .AND.
247 + (.NOT.lsame(transb,
'T')))
THEN 249 ELSE IF (m.LT.0)
THEN 251 ELSE IF (n.LT.0)
THEN 253 ELSE IF (k.LT.0)
THEN 255 ELSE IF (lda.LT.max(1,nrowa))
THEN 257 ELSE IF (ldb.LT.max(1,nrowb))
THEN 259 ELSE IF (ldc.LT.max(1,m))
THEN 263 CALL xerbla(
'SGEMM ',info)
269 IF ((m.EQ.0) .OR. (n.EQ.0) .OR.
270 + (((alpha.EQ.zero).OR. (k.EQ.0)).AND. (beta.EQ.one)))
RETURN 274 IF (alpha.EQ.zero)
THEN 275 IF (beta.EQ.zero)
THEN 299 IF (beta.EQ.zero)
THEN 303 ELSE IF (beta.NE.one)
THEN 311 c(i,j) = c(i,j) + temp*a(i,l)
323 temp = temp + a(l,i)*b(l,j)
325 IF (beta.EQ.zero)
THEN 328 c(i,j) = alpha*temp + beta*c(i,j)
339 IF (beta.EQ.zero)
THEN 343 ELSE IF (beta.NE.one)
THEN 351 c(i,j) = c(i,j) + temp*a(i,l)
363 temp = temp + a(l,i)*b(j,l)
365 IF (beta.EQ.zero)
THEN 368 c(i,j) = alpha*temp + beta*c(i,j)
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine sgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
SGEMM