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. (.NOT.lsame(diag,
'N')))
THEN 235 ELSE IF (m.LT.0)
THEN 237 ELSE IF (n.LT.0)
THEN 239 ELSE IF (lda.LT.max(1,nrowa))
THEN 241 ELSE IF (ldb.LT.max(1,m))
THEN 245 CALL xerbla(
'STRMM ',info)
251 IF (m.EQ.0 .OR. n.EQ.0)
RETURN 255 IF (alpha.EQ.zero)
THEN 267 IF (lsame(transa,
'N'))
THEN 274 IF (b(k,j).NE.zero)
THEN 277 b(i,j) = b(i,j) + temp*a(i,k)
279 IF (nounit) temp = temp*a(k,k)
287 IF (b(k,j).NE.zero)
THEN 290 IF (nounit) b(k,j) = b(k,j)*a(k,k)
292 b(i,j) = b(i,j) + temp*a(i,k)
306 IF (nounit) temp = temp*a(i,i)
308 temp = temp + a(k,i)*b(k,j)
317 IF (nounit) temp = temp*a(i,i)
319 temp = temp + a(k,i)*b(k,j)
327 IF (lsame(transa,
'N'))
THEN 334 IF (nounit) temp = temp*a(j,j)
339 IF (a(k,j).NE.zero)
THEN 342 b(i,j) = b(i,j) + temp*b(i,k)
350 IF (nounit) temp = temp*a(j,j)
355 IF (a(k,j).NE.zero)
THEN 358 b(i,j) = b(i,j) + temp*b(i,k)
371 IF (a(j,k).NE.zero)
THEN 374 b(i,j) = b(i,j) + temp*b(i,k)
379 IF (nounit) temp = temp*a(k,k)
380 IF (temp.NE.one)
THEN 389 IF (a(j,k).NE.zero)
THEN 392 b(i,j) = b(i,j) + temp*b(i,k)
397 IF (nounit) temp = temp*a(k,k)
398 IF (temp.NE.one)
THEN subroutine strmm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
STRMM
subroutine xerbla(SRNAME, INFO)
XERBLA