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