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