1 SUBROUTINE dtrmm ( SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA,
4 CHARACTER*1 SIDE, UPLO, TRANSA, DIAG
8 DOUBLE PRECISION A( LDA, * ), B( LDB, * )
135 LOGICAL LSIDE, NOUNIT, UPPER
136 INTEGER I, INFO, J, K, NROWA
137 DOUBLE PRECISION TEMP
139 DOUBLE PRECISION ONE , ZERO
140 parameter( one = 1.0d+0, zero = 0.0d+0 )
146 lside = lsame( side ,
'L' )
152 nounit = lsame( diag ,
'N' )
153 upper = lsame( uplo ,
'U' )
156 IF( ( .NOT.lside ).AND.
157 $ ( .NOT.lsame( side ,
'R' ) ) )
THEN
159 ELSE IF( ( .NOT.upper ).AND.
160 $ ( .NOT.lsame( uplo ,
'L' ) ) )
THEN
162 ELSE IF( ( .NOT.lsame( transa,
'N' ) ).AND.
163 $ ( .NOT.lsame( transa,
'T' ) ).AND.
164 $ ( .NOT.lsame( transa,
'C' ) ) )
THEN
166 ELSE IF( ( .NOT.lsame( diag ,
'U' ) ).AND.
167 $ ( .NOT.lsame( diag ,
'N' ) ) )
THEN
169 ELSE IF( m .LT.0 )
THEN
171 ELSE IF( n .LT.0 )
THEN
173 ELSE IF( lda.LT.max( 1, nrowa ) )
THEN
175 ELSE IF( ldb.LT.max( 1, m ) )
THEN
179 CALL xerbla(
'DTRMM ', info )
190 IF( alpha.EQ.zero )
THEN
202 IF( lsame( transa,
'N' ) )
THEN
209 IF( b( k, j ).NE.zero )
THEN
210 temp = alpha*b( k, j )
212 b( i, j ) = b( i, j ) + temp*a( i, k )
215 $ temp = temp*a( k, k )
223 IF( b( k, j ).NE.zero )
THEN
224 temp = alpha*b( k, j )
227 $ b( k, j ) = b( k, j )*a( k, k )
229 b( i, j ) = b( i, j ) + temp*a( i, k )
244 $ temp = temp*a( i, i )
246 temp = temp + a( k, i )*b( k, j )
248 b( i, j ) = alpha*temp
256 $ temp = temp*a( i, i )
258 temp = temp + a( k, i )*b( k, j )
260 b( i, j ) = alpha*temp
266 IF( lsame( transa,
'N' ) )
THEN
274 $ temp = temp*a( j, j )
276 b( i, j ) = temp*b( i, j )
279 IF( a( k, j ).NE.zero )
THEN
280 temp = alpha*a( k, j )
282 b( i, j ) = b( i, j ) + temp*b( i, k )
291 $ temp = temp*a( j, j )
293 b( i, j ) = temp*b( i, j )
296 IF( a( k, j ).NE.zero )
THEN
297 temp = alpha*a( k, j )
299 b( i, j ) = b( i, j ) + temp*b( i, k )
312 IF( a( j, k ).NE.zero )
THEN
313 temp = alpha*a( j, k )
315 b( i, j ) = b( i, j ) + temp*b( i, k )
321 $ temp = temp*a( k, k )
322 IF( temp.NE.one )
THEN
324 b( i, k ) = temp*b( i, k )
331 IF( a( j, k ).NE.zero )
THEN
332 temp = alpha*a( j, k )
334 b( i, j ) = b( i, j ) + temp*b( i, k )
340 $ temp = temp*a( k, k )
341 IF( temp.NE.one )
THEN
343 b( i, k ) = temp*b( i, k )
subroutine dtrmm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
subroutine xerbla(SRNAME, INFO)