189 SUBROUTINE sgemmtr(UPLO,TRANSA,TRANSB,N,K,ALPHA,A,LDA,B,LDB,
199 INTEGER K,LDA,LDB,LDC,N
200 CHARACTER TRANSA,TRANSB,UPLO
203 REAL A(LDA,*),B(LDB,*),C(LDC,*)
220 INTEGER I,INFO,J,L,NROWA,NROWB, ISTART, ISTOP
221 LOGICAL NOTA,NOTB, UPPER
225 parameter(one=1.0d+0,zero=0.0d+0)
232 nota = lsame(transa,
'N')
233 notb = lsame(transb,
'N')
244 upper = lsame(uplo,
'U')
249 IF ((.NOT. upper) .AND. (.NOT. lsame(uplo,
'L')))
THEN
251 ELSE IF ((.NOT.nota) .AND. (.NOT.lsame(transa,
'C')) .AND.
252 + (.NOT.lsame(transa,
'T')))
THEN
254 ELSE IF ((.NOT.notb) .AND. (.NOT.lsame(transb,
'C')) .AND.
255 + (.NOT.lsame(transb,
'T')))
THEN
257 ELSE IF (n.LT.0)
THEN
259 ELSE IF (k.LT.0)
THEN
261 ELSE IF (lda.LT.max(1,nrowa))
THEN
263 ELSE IF (ldb.LT.max(1,nrowb))
THEN
265 ELSE IF (ldc.LT.max(1,n))
THEN
269 CALL xerbla(
'SGEMMTR',info)
279 IF (alpha.EQ.zero)
THEN
280 IF (beta.EQ.zero)
THEN
290 DO 10 i = istart, istop
304 DO 30 i = istart, istop
327 IF (beta.EQ.zero)
THEN
328 DO 50 i = istart, istop
331 ELSE IF (beta.NE.one)
THEN
332 DO 60 i = istart, istop
338 DO 70 i = istart, istop
339 c(i,j) = c(i,j) + temp*a(i,l)
356 DO 110 i = istart, istop
359 temp = temp + a(l,i)*b(l,j)
361 IF (beta.EQ.zero)
THEN
364 c(i,j) = alpha*temp + beta*c(i,j)
383 IF (beta.EQ.zero)
THEN
384 DO 130 i = istart,istop
387 ELSE IF (beta.NE.one)
THEN
388 DO 140 i = istart,istop
394 DO 150 i = istart,istop
395 c(i,j) = c(i,j) + temp*a(i,l)
412 DO 190 i = istart, istop
415 temp = temp + a(l,i)*b(j,l)
417 IF (beta.EQ.zero)
THEN
420 c(i,j) = alpha*temp + beta*c(i,j)
subroutine sgemmtr(uplo, transa, transb, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
SGEMMTR