959 parameter( zero = 0.0, one = 1.0 )
962 INTEGER NALF, NIDIM, NMAX, NOUT, NTRA
963 LOGICAL FATAL, REWI, TRACE
966 REAL A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
967 $ AS( NMAX*NMAX ), B( NMAX, NMAX ),
968 $ BB( NMAX*NMAX ), BS( NMAX*NMAX ),
969 $ C( NMAX, NMAX ), CT( NMAX ), G( NMAX )
970 INTEGER IDIM( NIDIM )
972 REAL ALPHA, ALS, ERR, ERRMAX
973 INTEGER I, IA, ICD, ICS, ICT, ICU, IM, IN, J, LAA, LBB,
974 $ LDA, LDAS, LDB, LDBS, M, MS, N, NA, NARGS, NC,
976 LOGICAL LEFT, NULL, RESET, SAME
977 CHARACTER*1 DIAG, DIAGS, SIDE, SIDES, TRANAS, TRANSA, UPLO,
979 CHARACTER*2 ICHD, ICHS, ICHU
994 COMMON /infoc/infot, noutc, ok, lerr
996 DATA ichu/
'UL'/, icht/
'NTC'/, ichd/
'UN'/, ichs/
'LR'/
1010 DO 140 im = 1, nidim
1013 DO 130 in = 1, nidim
1023 null = m.LE.0.OR.n.LE.0
1026 side = ichs( ics: ics )
1043 uplo = ichu( icu: icu )
1046 transa = icht( ict: ict )
1049 diag = ichd( icd: icd )
1056 CALL smake(
'TR', uplo, diag, na, na, a,
1057 $ nmax, aa, lda, reset, zero )
1061 CALL smake(
'GE',
' ',
' ', m, n, b, nmax,
1062 $ bb, ldb, reset, zero )
1087 IF( sname( 4: 5 ).EQ.
'MM' )
THEN
1089 $
WRITE( ntra, fmt = 9995 )nc, sname,
1090 $ side, uplo, transa, diag, m, n, alpha,
1094 CALL strmm( side, uplo, transa, diag, m,
1095 $ n, alpha, aa, lda, bb, ldb )
1096 ELSE IF( sname( 4: 5 ).EQ.
'SM' )
THEN
1098 $
WRITE( ntra, fmt = 9995 )nc, sname,
1099 $ side, uplo, transa, diag, m, n, alpha,
1103 CALL strsm( side, uplo, transa, diag, m,
1104 $ n, alpha, aa, lda, bb, ldb )
1110 WRITE( nout, fmt = 9994 )
1117 isame( 1 ) = sides.EQ.side
1118 isame( 2 ) = uplos.EQ.uplo
1119 isame( 3 ) = tranas.EQ.transa
1120 isame( 4 ) = diags.EQ.diag
1121 isame( 5 ) = ms.EQ.m
1122 isame( 6 ) = ns.EQ.n
1123 isame( 7 ) = als.EQ.alpha
1124 isame( 8 ) =
lse( as, aa, laa )
1125 isame( 9 ) = ldas.EQ.lda
1127 isame( 10 ) =
lse( bs, bb, lbb )
1129 isame( 10 ) =
lseres(
'GE',
' ', m, n, bs,
1132 isame( 11 ) = ldbs.EQ.ldb
1139 same = same.AND.isame( i )
1140 IF( .NOT.isame( i ) )
1141 $
WRITE( nout, fmt = 9998 )i
1149 IF( sname( 4: 5 ).EQ.
'MM' )
THEN
1154 CALL smmch( transa,
'N', m, n, m,
1155 $ alpha, a, nmax, b, nmax,
1156 $ zero, c, nmax, ct, g,
1157 $ bb, ldb, eps, err,
1158 $ fatal, nout, .true. )
1160 CALL smmch(
'N', transa, m, n, n,
1161 $ alpha, b, nmax, a, nmax,
1162 $ zero, c, nmax, ct, g,
1163 $ bb, ldb, eps, err,
1164 $ fatal, nout, .true. )
1166 ELSE IF( sname( 4: 5 ).EQ.
'SM' )
THEN
1173 c( i, j ) = bb( i + ( j - 1 )*
1175 bb( i + ( j - 1 )*ldb ) = alpha*
1181 CALL smmch( transa,
'N', m, n, m,
1182 $ one, a, nmax, c, nmax,
1183 $ zero, b, nmax, ct, g,
1184 $ bb, ldb, eps, err,
1185 $ fatal, nout, .false. )
1187 CALL smmch(
'N', transa, m, n, n,
1188 $ one, c, nmax, a, nmax,
1189 $ zero, b, nmax, ct, g,
1190 $ bb, ldb, eps, err,
1191 $ fatal, nout, .false. )
1194 errmax = max( errmax, err )
1217 IF( errmax.LT.thresh )
THEN
1218 WRITE( nout, fmt = 9999 )sname, nc
1220 WRITE( nout, fmt = 9997 )sname, nc, errmax
1225 WRITE( nout, fmt = 9996 )sname
1226 WRITE( nout, fmt = 9995 )nc, sname, side, uplo, transa, diag, m,
1227 $ n, alpha, lda, ldb
1232 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
1234 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
1235 $
'ANGED INCORRECTLY *******' )
1236 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
1237 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
1238 $
' - SUSPECT *******' )
1239 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
1240 9995
FORMAT( 1x, i6,
': ', a6,
'(', 4(
'''', a1,
''',' ), 2( i3,
',' ),
1241 $ f4.1,
', A,', i3,
', B,', i3,
') .' )
1242 9994
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
subroutine strmm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
STRMM
subroutine strsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
STRSM
logical function lse(RI, RJ, LR)
logical function lseres(TYPE, UPLO, M, N, AA, AS, LDA)
subroutine smake(TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL, KU, RESET, TRANSL)
subroutine smmch(TRANSA, TRANSB, M, N, KK, ALPHA, A, LDA, B, LDB, BETA, C, LDC, CT, G, CC, LDCC, EPS, ERR, FATAL, NOUT, MV)