blob: 2f299cd9c70330dd0f603813d418e48ecc65ce9d [file] [log] [blame]
! { dg-do compile }
! { dg-options "-O -floop-nest-optimize" }
SUBROUTINE ZTRMM ( SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, &
B, LDB )
CHARACTER*1 SIDE, UPLO, TRANSA, DIAG
INTEGER M, N, LDA, LDB
complex(kind((1.0d0,1.0d0))) ALPHA
complex(kind((1.0d0,1.0d0))) A( LDA, * ), B( LDB, * )
EXTERNAL XERBLA
INTRINSIC CONJG, MAX
LOGICAL LSIDE, NOCONJ, NOUNIT, UPPER
INTEGER I, INFO, J, K, NROWA
complex(kind((1.0d0,1.0d0))) TEMP
complex(kind((1.0d0,1.0d0))) ONE
PARAMETER ( ONE = ( 1.0D+0, 0.0D+0 ) )
complex(kind((1.0d0,1.0d0))) ZERO
PARAMETER ( ZERO = ( 0.0D+0, 0.0D+0 ) )
LSIDE = scan( SIDE , 'Ll' )>0
IF( LSIDE )THEN
NROWA = M
ELSE
NROWA = N
END IF
NOCONJ = scan( TRANSA, 'Tt' )>0
NOUNIT = scan( DIAG , 'Nn' )>0
UPPER = scan( UPLO , 'Uu' )>0
INFO = 0
IF( N.EQ.0 ) &
RETURN
IF( ALPHA.EQ.ZERO )THEN
DO 20, J = 1, N
DO 10, I = 1, M
B( I, J ) = ZERO
10 CONTINUE
20 CONTINUE
RETURN
END IF
DO 160, J = 1, N
DO 150, I = 1, M
TEMP = B( I, J )
IF( NOCONJ )THEN
IF( NOUNIT ) &
TEMP = TEMP*A( I, I )
DO 130, K = I + 1, M
TEMP = TEMP + A( K, I )*B( K, J )
130 CONTINUE
ELSE
IF( NOUNIT ) &
TEMP = TEMP*CONJG( A( I, I ) )
DO 140, K = I + 1, M
TEMP = TEMP + CONJG( A( K, I ) )*B( K, J )
140 CONTINUE
END IF
B( I, J ) = ALPHA*TEMP
150 CONTINUE
160 CONTINUE
RETURN
END