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 xerbla(SRNAME, INFO)
XERBLA
subroutine strmm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
STRMM