176 SUBROUTINE strmm(SIDE,UPLO,TRANSA,DIAG,M,N,ALPHA,A,LDA,B,LDB)
185 CHARACTER DIAG,SIDE,TRANSA,UPLO
188 REAL A(LDA,*),B(LDB,*)
205 INTEGER I,INFO,J,K,NROWA
206 LOGICAL LSIDE,NOUNIT,UPPER
210 parameter(one=1.0e+0,zero=0.0e+0)
215 lside = lsame(side,
'L')
221 nounit = lsame(diag,
'N')
222 upper = lsame(uplo,
'U')
225 IF ((.NOT.lside) .AND. (.NOT.lsame(side,
'R')))
THEN
227 ELSE IF ((.NOT.upper) .AND. (.NOT.lsame(uplo,
'L')))
THEN
229 ELSE IF ((.NOT.lsame(transa,
'N')) .AND.
230 + (.NOT.lsame(transa,
'T')) .AND.
231 + (.NOT.lsame(transa,
'C')))
THEN
233 ELSE IF ((.NOT.lsame(diag,
'U')) .AND.
234 + (.NOT.lsame(diag,
'N')))
THEN
236 ELSE IF (m.LT.0)
THEN
238 ELSE IF (n.LT.0)
THEN
240 ELSE IF (lda.LT.max(1,nrowa))
THEN
242 ELSE IF (ldb.LT.max(1,m))
THEN
246 CALL xerbla(
'STRMM ',info)
252 IF (m.EQ.0 .OR. n.EQ.0)
RETURN
256 IF (alpha.EQ.zero)
THEN
268 IF (lsame(transa,
'N'))
THEN
275 IF (b(k,j).NE.zero)
THEN
278 b(i,j) = b(i,j) + temp*a(i,k)
280 IF (nounit) temp = temp*a(k,k)
288 IF (b(k,j).NE.zero)
THEN
291 IF (nounit) b(k,j) = b(k,j)*a(k,k)
293 b(i,j) = b(i,j) + temp*a(i,k)
307 IF (nounit) temp = temp*a(i,i)
309 temp = temp + a(k,i)*b(k,j)
318 IF (nounit) temp = temp*a(i,i)
320 temp = temp + a(k,i)*b(k,j)
328 IF (lsame(transa,
'N'))
THEN
335 IF (nounit) temp = temp*a(j,j)
340 IF (a(k,j).NE.zero)
THEN
343 b(i,j) = b(i,j) + temp*b(i,k)
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)
372 IF (a(j,k).NE.zero)
THEN
375 b(i,j) = b(i,j) + temp*b(i,k)
380 IF (nounit) temp = temp*a(k,k)
381 IF (temp.NE.one)
THEN
390 IF (a(j,k).NE.zero)
THEN
393 b(i,j) = b(i,j) + temp*b(i,k)
398 IF (nounit) temp = temp*a(k,k)
399 IF (temp.NE.one)
THEN
subroutine xerbla(srname, info)
subroutine strmm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
STRMM