176 SUBROUTINE ztrmm(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB)
185 CHARACTER DIAG,SIDE,TRANSA,UPLO
188 COMPLEX*16 A(LDA,*),B(LDB,*)
205 INTEGER I,INFO,J,K,NROWA
206 LOGICAL LSIDE,NOCONJ,NOUNIT,UPPER
210 parameter(one= (1.0d+0,0.0d+0))
212 parameter(zero= (0.0d+0,0.0d+0))
217 lside = lsame(side,
'L')
223 noconj = lsame(transa,
'T')
224 nounit = lsame(diag,
'N')
225 upper = lsame(uplo,
'U')
228 IF ((.NOT.lside) .AND. (.NOT.lsame(side,
'R')))
THEN
230 ELSE IF ((.NOT.upper) .AND. (.NOT.lsame(uplo,
'L')))
THEN
232 ELSE IF ((.NOT.lsame(transa,
'N')) .AND.
233 + (.NOT.lsame(transa,
'T')) .AND.
234 + (.NOT.lsame(transa,
'C')))
THEN
236 ELSE IF ((.NOT.lsame(diag,
'U')) .AND. (.NOT.lsame(diag,
'N')))
THEN
238 ELSE IF (m.LT.0)
THEN
240 ELSE IF (n.LT.0)
THEN
242 ELSE IF (lda.LT.max(1,nrowa))
THEN
244 ELSE IF (ldb.LT.max(1,m))
THEN
248 CALL xerbla(
'ZTRMM ',info)
254 IF (m.EQ.0 .OR. n.EQ.0)
RETURN
258 IF (alpha.EQ.zero)
THEN
270 IF (lsame(transa,
'N'))
THEN
277 IF (b(k,j).NE.zero)
THEN
280 b(i,j) = b(i,j) + temp*a(i,k)
282 IF (nounit) temp = temp*a(k,k)
290 IF (b(k,j).NE.zero)
THEN
293 IF (nounit) b(k,j) = b(k,j)*a(k,k)
295 b(i,j) = b(i,j) + temp*a(i,k)
310 IF (nounit) temp = temp*a(i,i)
312 temp = temp + a(k,i)*b(k,j)
315 IF (nounit) temp = temp*dconjg(a(i,i))
317 temp = temp + dconjg(a(k,i))*b(k,j)
328 IF (nounit) temp = temp*a(i,i)
330 temp = temp + a(k,i)*b(k,j)
333 IF (nounit) temp = temp*dconjg(a(i,i))
335 temp = temp + dconjg(a(k,i))*b(k,j)
344 IF (lsame(transa,
'N'))
THEN
351 IF (nounit) temp = temp*a(j,j)
356 IF (a(k,j).NE.zero)
THEN
359 b(i,j) = b(i,j) + temp*b(i,k)
367 IF (nounit) temp = temp*a(j,j)
372 IF (a(k,j).NE.zero)
THEN
375 b(i,j) = b(i,j) + temp*b(i,k)
388 IF (a(j,k).NE.zero)
THEN
392 temp = alpha*dconjg(a(j,k))
395 b(i,j) = b(i,j) + temp*b(i,k)
404 temp = temp*dconjg(a(k,k))
407 IF (temp.NE.one)
THEN
416 IF (a(j,k).NE.zero)
THEN
420 temp = alpha*dconjg(a(j,k))
423 b(i,j) = b(i,j) + temp*b(i,k)
432 temp = temp*dconjg(a(k,k))
435 IF (temp.NE.one)
THEN
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine ztrmm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
ZTRMM