179 SUBROUTINE ctrsm(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB)
188 CHARACTER DIAG,SIDE,TRANSA,UPLO
191 COMPLEX A(lda,*),B(ldb,*)
208 INTEGER I,INFO,J,K,NROWA
209 LOGICAL LSIDE,NOCONJ,NOUNIT,UPPER
213 parameter(one= (1.0e+0,0.0e+0))
215 parameter(zero= (0.0e+0,0.0e+0))
220 lside = lsame(side,
'L')
226 noconj = lsame(transa,
'T')
227 nounit = lsame(diag,
'N')
228 upper = lsame(uplo,
'U')
231 IF ((.NOT.lside) .AND. (.NOT.lsame(side,
'R')))
THEN 233 ELSE IF ((.NOT.upper) .AND. (.NOT.lsame(uplo,
'L')))
THEN 235 ELSE IF ((.NOT.lsame(transa,
'N')) .AND.
236 + (.NOT.lsame(transa,
'T')) .AND.
237 + (.NOT.lsame(transa,
'C')))
THEN 239 ELSE IF ((.NOT.lsame(diag,
'U')) .AND. (.NOT.lsame(diag,
'N')))
THEN 241 ELSE IF (m.LT.0)
THEN 243 ELSE IF (n.LT.0)
THEN 245 ELSE IF (lda.LT.max(1,nrowa))
THEN 247 ELSE IF (ldb.LT.max(1,m))
THEN 251 CALL xerbla(
'CTRSM ',info)
257 IF (m.EQ.0 .OR. n.EQ.0)
RETURN 261 IF (alpha.EQ.zero)
THEN 273 IF (lsame(transa,
'N'))
THEN 279 IF (alpha.NE.one)
THEN 281 b(i,j) = alpha*b(i,j)
285 IF (b(k,j).NE.zero)
THEN 286 IF (nounit) b(k,j) = b(k,j)/a(k,k)
288 b(i,j) = b(i,j) - b(k,j)*a(i,k)
295 IF (alpha.NE.one)
THEN 297 b(i,j) = alpha*b(i,j)
301 IF (b(k,j).NE.zero)
THEN 302 IF (nounit) b(k,j) = b(k,j)/a(k,k)
304 b(i,j) = b(i,j) - b(k,j)*a(i,k)
321 temp = temp - a(k,i)*b(k,j)
323 IF (nounit) temp = temp/a(i,i)
326 temp = temp - conjg(a(k,i))*b(k,j)
328 IF (nounit) temp = temp/conjg(a(i,i))
339 temp = temp - a(k,i)*b(k,j)
341 IF (nounit) temp = temp/a(i,i)
344 temp = temp - conjg(a(k,i))*b(k,j)
346 IF (nounit) temp = temp/conjg(a(i,i))
354 IF (lsame(transa,
'N'))
THEN 360 IF (alpha.NE.one)
THEN 362 b(i,j) = alpha*b(i,j)
366 IF (a(k,j).NE.zero)
THEN 368 b(i,j) = b(i,j) - a(k,j)*b(i,k)
381 IF (alpha.NE.one)
THEN 383 b(i,j) = alpha*b(i,j)
387 IF (a(k,j).NE.zero)
THEN 389 b(i,j) = b(i,j) - a(k,j)*b(i,k)
412 temp = one/conjg(a(k,k))
419 IF (a(j,k).NE.zero)
THEN 426 b(i,j) = b(i,j) - temp*b(i,k)
430 IF (alpha.NE.one)
THEN 432 b(i,k) = alpha*b(i,k)
442 temp = one/conjg(a(k,k))
449 IF (a(j,k).NE.zero)
THEN 456 b(i,j) = b(i,j) - temp*b(i,k)
460 IF (alpha.NE.one)
THEN 462 b(i,k) = alpha*b(i,k)
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine ctrsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
CTRSM