982 parameter( zero = ( 0.0, 0.0 ), one = ( 1.0, 0.0 ) )
984 parameter( rzero = 0.0 )
987 INTEGER NALF, NIDIM, NMAX, NOUT, NTRA
988 LOGICAL FATAL, REWI, TRACE
991 COMPLEX A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
992 $ AS( NMAX*NMAX ), B( NMAX, NMAX ),
993 $ BB( NMAX*NMAX ), BS( NMAX*NMAX ),
994 $ C( NMAX, NMAX ), CT( NMAX )
996 INTEGER IDIM( NIDIM )
1000 INTEGER I, IA, ICD, ICS, ICT, ICU, IM, IN, J, LAA, LBB,
1001 $ LDA, LDAS, LDB, LDBS, M, MS, N, NA, NARGS, NC,
1003 LOGICAL LEFT, NULL, RESET, SAME
1004 CHARACTER*1 DIAG, DIAGS, SIDE, SIDES, TRANAS, TRANSA, UPLO,
1006 CHARACTER*2 ICHD, ICHS, ICHU
1018 INTEGER INFOT, NOUTC
1021 COMMON /infoc/infot, noutc, ok, lerr
1023 DATA ichu/
'UL'/, icht/
'NTC'/, ichd/
'UN'/, ichs/
'LR'/
1037 DO 140 im = 1, nidim
1040 DO 130 in = 1, nidim
1050 null = m.LE.0.OR.n.LE.0
1053 side = ichs( ics: ics )
1070 uplo = ichu( icu: icu )
1073 transa = icht( ict: ict )
1076 diag = ichd( icd: icd )
1083 CALL cmake(
'TR', uplo, diag, na, na, a,
1084 $ nmax, aa, lda, reset, zero )
1088 CALL cmake(
'GE',
' ',
' ', m, n, b, nmax,
1089 $ bb, ldb, reset, zero )
1114 IF( sname( 4: 5 ).EQ.
'MM' )
THEN
1116 $
WRITE( ntra, fmt = 9995 )nc, sname,
1117 $ side, uplo, transa, diag, m, n, alpha,
1121 CALL ctrmm( side, uplo, transa, diag, m,
1122 $ n, alpha, aa, lda, bb, ldb )
1123 ELSE IF( sname( 4: 5 ).EQ.
'SM' )
THEN
1125 $
WRITE( ntra, fmt = 9995 )nc, sname,
1126 $ side, uplo, transa, diag, m, n, alpha,
1130 CALL ctrsm( side, uplo, transa, diag, m,
1131 $ n, alpha, aa, lda, bb, ldb )
1137 WRITE( nout, fmt = 9994 )
1144 isame( 1 ) = sides.EQ.side
1145 isame( 2 ) = uplos.EQ.uplo
1146 isame( 3 ) = tranas.EQ.transa
1147 isame( 4 ) = diags.EQ.diag
1148 isame( 5 ) = ms.EQ.m
1149 isame( 6 ) = ns.EQ.n
1150 isame( 7 ) = als.EQ.alpha
1151 isame( 8 ) =
lce( as, aa, laa )
1152 isame( 9 ) = ldas.EQ.lda
1154 isame( 10 ) =
lce( bs, bb, lbb )
1156 isame( 10 ) =
lceres(
'GE',
' ', m, n, bs,
1159 isame( 11 ) = ldbs.EQ.ldb
1166 same = same.AND.isame( i )
1167 IF( .NOT.isame( i ) )
1168 $
WRITE( nout, fmt = 9998 )i
1176 IF( sname( 4: 5 ).EQ.
'MM' )
THEN
1181 CALL cmmch( transa,
'N', m, n, m,
1182 $ alpha, a, nmax, b, nmax,
1183 $ zero, c, nmax, ct, g,
1184 $ bb, ldb, eps, err,
1185 $ fatal, nout, .true. )
1187 CALL cmmch(
'N', transa, m, n, n,
1188 $ alpha, b, nmax, a, nmax,
1189 $ zero, c, nmax, ct, g,
1190 $ bb, ldb, eps, err,
1191 $ fatal, nout, .true. )
1193 ELSE IF( sname( 4: 5 ).EQ.
'SM' )
THEN
1200 c( i, j ) = bb( i + ( j - 1 )*
1202 bb( i + ( j - 1 )*ldb ) = alpha*
1208 CALL cmmch( transa,
'N', m, n, m,
1209 $ one, a, nmax, c, nmax,
1210 $ zero, b, nmax, ct, g,
1211 $ bb, ldb, eps, err,
1212 $ fatal, nout, .false. )
1214 CALL cmmch(
'N', transa, m, n, n,
1215 $ one, c, nmax, a, nmax,
1216 $ zero, b, nmax, ct, g,
1217 $ bb, ldb, eps, err,
1218 $ fatal, nout, .false. )
1221 errmax = max( errmax, err )
1244 IF( errmax.LT.thresh )
THEN
1245 WRITE( nout, fmt = 9999 )sname, nc
1247 WRITE( nout, fmt = 9997 )sname, nc, errmax
1252 WRITE( nout, fmt = 9996 )sname
1253 WRITE( nout, fmt = 9995 )nc, sname, side, uplo, transa, diag, m,
1254 $ n, alpha, lda, ldb
1259 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
1261 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
1262 $
'ANGED INCORRECTLY *******' )
1263 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
1264 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
1265 $
' - SUSPECT *******' )
1266 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
1267 9995
FORMAT( 1x, i6,
': ', a6,
'(', 4(
'''', a1,
''',' ), 2( i3,
',' ),
1268 $
'(', f4.1,
',', f4.1,
'), A,', i3,
', B,', i3,
') ',
1270 9994
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
subroutine cmake(TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL, KU, RESET, TRANSL)
logical function lce(RI, RJ, LR)
logical function lceres(TYPE, UPLO, M, N, AA, AS, LDA)
subroutine cmmch(TRANSA, TRANSB, M, N, KK, ALPHA, A, LDA, B, LDB, BETA, C, LDC, CT, G, CC, LDCC, EPS, ERR, FATAL, NOUT, MV)
subroutine ctrmm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
CTRMM
subroutine ctrsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
CTRSM