180 SUBROUTINE dtrsm(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB)
187 DOUBLE PRECISION ALPHA
189 CHARACTER DIAG,SIDE,TRANSA,UPLO
192 DOUBLE PRECISION (LDA,*),B(LDB,*)
208 DOUBLE PRECISION TEMP
209 INTEGER I,INFO,J,K,NROWA
210 LOGICAL LSIDE,NOUNIT,UPPER
213 DOUBLE PRECISION ONE,ZERO
214 parameter(one=1.0d+0,zero=0.0d+0)
219 lside = lsame(side,
'L')
225 nounit = lsame(diag,
'N')
226 upper = lsame(uplo,
'U')
229 IF ((.NOT.lside) .AND. (.NOT.lsame(side,
'R')))
THEN
231 ELSE IF ((.NOT.upper) .AND. (.NOT.lsame(uplo,
'L')))
THEN
233 ELSE IF ((.NOT.lsame(transa,
'N')) .AND.
234 + (.NOT.lsame(transa,
'T')) .AND.
235 + (.NOT.lsame(transa,
'C')))
THEN
237 ELSE IF ((.NOT.lsame(diag,
'U')) .AND. (.NOT.lsame(diag,
'N')))
THEN
239 ELSE IF (m.LT.0)
THEN
241 ELSE IF (n.LT.0)
THEN
243 ELSE IF (lda.LT.
max(1,nrowa))
THEN
245 ELSE IF (ldb.LT.
max(1,m))
THEN
255.EQ..OR..EQ.
IF (M0 N0) RETURN
259.EQ.
IF (ALPHAZERO) THEN
271 IF (LSAME(TRANSA,'n
')) THEN
277.NE.
IF (ALPHAONE) THEN
279 B(I,J) = ALPHA*B(I,J)
283.NE.
IF (B(K,J)ZERO) THEN
284 IF (NOUNIT) B(K,J) = B(K,J)/A(K,K)
286 B(I,J) = B(I,J) - B(K,J)*A(I,K)
293.NE.
IF (ALPHAONE) THEN
295 B(I,J) = ALPHA*B(I,J)
299.NE.
IF (B(K,J)ZERO) THEN
300 IF (NOUNIT) B(K,J) = B(K,J)/A(K,K)
302 B(I,J) = B(I,J) - B(K,J)*A(I,K)
317 TEMP = TEMP - A(K,I)*B(K,J)
319 IF (NOUNIT) TEMP = TEMP/A(I,I)
328 TEMP = TEMP - A(K,I)*B(K,J)
330 IF (NOUNIT) TEMP = TEMP/A(I,I)
337 IF (LSAME(TRANSA,'n
')) THEN
343.NE.
IF (ALPHAONE) THEN
345 B(I,J) = ALPHA*B(I,J)
349.NE.
IF (A(K,J)ZERO) THEN
351 B(I,J) = B(I,J) - A(K,J)*B(I,K)
364.NE.
IF (ALPHAONE) THEN
366 B(I,J) = ALPHA*B(I,J)
370.NE.
IF (A(K,J)ZERO) THEN
372 B(I,J) = B(I,J) - A(K,J)*B(I,K)
397.NE.
IF (A(J,K)ZERO) THEN
400 B(I,J) = B(I,J) - TEMP*B(I,K)
404.NE.
IF (ALPHAONE) THEN
406 B(I,K) = ALPHA*B(I,K)
419.NE.
IF (A(J,K)ZERO) THEN
422 B(I,J) = B(I,J) - TEMP*B(I,K)
426.NE.
IF (ALPHAONE) THEN
428 B(I,K) = ALPHA*B(I,K)
subroutine dtrsm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
DTRSM