188 SUBROUTINE sgemm(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC)
197 INTEGER K,LDA,LDB,LDC,M,N
198 CHARACTER TRANSA,TRANSB
201 REAL A(lda,*),B(ldb,*),C(ldc,*)
218 INTEGER I,INFO,J,L,NCOLA,NROWA,NROWB
223 parameter(one=1.0e+0,zero=0.0e+0)
230 nota = lsame(transa,
'N')
231 notb = lsame(transb,
'N')
248 IF ((.NOT.nota) .AND. (.NOT.lsame(transa,
'C')) .AND.
249 + (.NOT.lsame(transa,
'T')))
THEN
251 ELSE IF ((.NOT.notb) .AND. (.NOT.lsame(transb,
'C')) .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(
'SGEMM ',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 + a(l,i)*b(l,j)
330 IF (beta.EQ.zero)
THEN
333 c(i,j) = alpha*temp + beta*c(i,j)
344 IF (beta.EQ.zero)
THEN
348 ELSE IF (beta.NE.one)
THEN
356 c(i,j) = c(i,j) + temp*a(i,l)
368 temp = temp + a(l,i)*b(j,l)
370 IF (beta.EQ.zero)
THEN
373 c(i,j) = alpha*temp + beta*c(i,j)
subroutine sgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
SGEMM
subroutine xerbla(SRNAME, INFO)
XERBLA