189 SUBROUTINE zgemmtr(UPLO,TRANSA,TRANSB,N,K,ALPHA,A,LDA,B,LDB,
198 COMPLEX*16 ALPHA,BETA
199 INTEGER K,LDA,LDB,LDC,N
200 CHARACTER TRANSA,TRANSB,UPLO
203 COMPLEX*16 A(LDA,*),B(LDB,*),C(LDC,*)
220 INTEGER I,INFO,J,L,NROWA,NROWB,ISTART, ISTOP
221 LOGICAL CONJA,CONJB,NOTA,NOTB,UPPER
225 parameter(one= (1.0d+0,0.0d+0))
227 parameter(zero= (0.0d+0,0.0d+0))
235 nota = lsame(transa,
'N')
236 notb = lsame(transb,
'N')
237 conja = lsame(transa,
'C')
238 conjb = lsame(transb,
'C')
249 upper = lsame(uplo,
'U')
255 IF ((.NOT. upper) .AND. (.NOT. lsame(uplo,
'L')))
THEN
257 ELSE IF ((.NOT.nota) .AND. (.NOT.conja) .AND.
258 + (.NOT.lsame(transa,
'T')))
THEN
260 ELSE IF ((.NOT.notb) .AND. (.NOT.conjb) .AND.
261 + (.NOT.lsame(transb,
'T')))
THEN
263 ELSE IF (n.LT.0)
THEN
265 ELSE IF (k.LT.0)
THEN
267 ELSE IF (lda.LT.max(1,nrowa))
THEN
269 ELSE IF (ldb.LT.max(1,nrowb))
THEN
271 ELSE IF (ldc.LT.max(1,n))
THEN
275 CALL xerbla(
'ZGEMMTR',info)
285 IF (alpha.EQ.zero)
THEN
286 IF (beta.EQ.zero)
THEN
296 DO 10 i = istart, istop
309 DO 30 i = istart, istop
332 IF (beta.EQ.zero)
THEN
333 DO 50 i = istart, istop
336 ELSE IF (beta.NE.one)
THEN
337 DO 60 i = istart, istop
343 DO 70 i = istart, istop
344 c(i,j) = c(i,j) + temp*a(i,l)
361 DO 110 i = istart, istop
364 temp = temp + conjg(a(l,i))*b(l,j)
366 IF (beta.EQ.zero)
THEN
369 c(i,j) = alpha*temp + beta*c(i,j)
386 DO 140 i = istart, istop
389 temp = temp + a(l,i)*b(l,j)
391 IF (beta.EQ.zero)
THEN
394 c(i,j) = alpha*temp + beta*c(i,j)
413 IF (beta.EQ.zero)
THEN
414 DO 160 i = istart,istop
417 ELSE IF (beta.NE.one)
THEN
418 DO 170 i = istart, istop
423 temp = alpha*conjg(b(j,l))
424 DO 180 i = istart, istop
425 c(i,j) = c(i,j) + temp*a(i,l)
442 IF (beta.EQ.zero)
THEN
443 DO 210 i = istart, istop
446 ELSE IF (beta.NE.one)
THEN
447 DO 220 i = istart, istop
453 DO 230 i = istart, istop
454 c(i,j) = c(i,j) + temp*a(i,l)
473 DO 270 i = istart, istop
476 temp = temp + conjg(a(l,i))*conjg(b(j,l))
478 IF (beta.EQ.zero)
THEN
481 c(i,j) = alpha*temp + beta*c(i,j)
498 DO 300 i = istart, istop
501 temp = temp + conjg(a(l,i))*b(j,l)
503 IF (beta.EQ.zero)
THEN
506 c(i,j) = alpha*temp + beta*c(i,j)
525 DO 330 i = istart, istop
528 temp = temp + a(l,i)*conjg(b(j,l))
530 IF (beta.EQ.zero)
THEN
533 c(i,j) = alpha*temp + beta*c(i,j)
550 DO 360 i = istart, istop
553 temp = temp + a(l,i)*b(j,l)
555 IF (beta.EQ.zero)
THEN
558 c(i,j) = alpha*temp + beta*c(i,j)
subroutine zgemmtr(uplo, transa, transb, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
ZGEMMTR