1071 parameter ( zero = 0.0, one = 1.0 )
1074 INTEGER nalf, nidim, nmax, nout, ntra, iorder
1075 LOGICAL fatal, rewi, trace
1078 REAL a( nmax, nmax ), aa( nmax*nmax ), alf( nalf ),
1079 $ as( nmax*nmax ), b( nmax, nmax ),
1080 $ bb( nmax*nmax ), bs( nmax*nmax ),
1081 $ c( nmax, nmax ), ct( nmax ), g( nmax )
1082 INTEGER idim( nidim )
1084 REAL alpha, als, err, errmax
1085 INTEGER i, ia, icd, ics, ict, icu, im, in, j, laa, lbb,
1086 $ lda, ldas, ldb, ldbs, m, ms, n, na, nargs, nc,
1088 LOGICAL left, null, reset, same
1089 CHARACTER*1 diag, diags, side, sides, tranas, transa, uplo,
1091 CHARACTER*2 ichd, ichs, ichu
1103 INTEGER infot, noutc
1106 COMMON /infoc/infot, noutc, ok
1108 DATA ichu/
'UL'/, icht/
'NTC'/, ichd/
'UN'/, ichs/
'LR'/
1122 DO 140 im = 1, nidim
1125 DO 130 in = 1, nidim
1135 null = m.LE.0.OR.n.LE.0
1138 side = ichs( ics: ics )
1155 uplo = ichu( icu: icu )
1158 transa = icht( ict: ict )
1161 diag = ichd( icd: icd )
1168 CALL smake(
'TR', uplo, diag, na, na, a,
1169 $ nmax, aa, lda, reset, zero )
1173 CALL smake(
'GE',
' ',
' ', m, n, b, nmax,
1174 $ bb, ldb, reset, zero )
1199 IF( sname( 10: 11 ).EQ.
'mm' )
THEN
1201 $
CALL sprcn3( ntra, nc, sname, iorder,
1202 $ side, uplo, transa, diag, m, n, alpha,
1206 CALL cstrmm( iorder, side, uplo, transa,
1207 $ diag, m, n, alpha, aa, lda,
1209 ELSE IF( sname( 10: 11 ).EQ.
'sm' )
THEN
1211 $
CALL sprcn3( ntra, nc, sname, iorder,
1212 $ side, uplo, transa, diag, m, n, alpha,
1216 CALL cstrsm( iorder, side, uplo, transa,
1217 $ diag, m, n, alpha, aa, lda,
1224 WRITE( nout, fmt = 9994 )
1231 isame( 1 ) = sides.EQ.side
1232 isame( 2 ) = uplos.EQ.uplo
1233 isame( 3 ) = tranas.EQ.transa
1234 isame( 4 ) = diags.EQ.diag
1235 isame( 5 ) = ms.EQ.m
1236 isame( 6 ) = ns.EQ.n
1237 isame( 7 ) = als.EQ.alpha
1238 isame( 8 ) =
lse( as, aa, laa )
1239 isame( 9 ) = ldas.EQ.lda
1241 isame( 10 ) =
lse( bs, bb, lbb )
1243 isame( 10 ) =
lseres(
'GE',
' ', m, n, bs,
1246 isame( 11 ) = ldbs.EQ.ldb
1253 same = same.AND.isame( i )
1254 IF( .NOT.isame( i ) )
1255 $
WRITE( nout, fmt = 9998 )i+1
1263 IF( sname( 10: 11 ).EQ.
'mm' )
THEN
1268 CALL smmch( transa,
'N', m, n, m,
1269 $ alpha, a, nmax, b, nmax,
1270 $ zero, c, nmax, ct, g,
1271 $ bb, ldb, eps, err,
1272 $ fatal, nout, .true. )
1274 CALL smmch(
'N', transa, m, n, n,
1275 $ alpha, b, nmax, a, nmax,
1276 $ zero, c, nmax, ct, g,
1277 $ bb, ldb, eps, err,
1278 $ fatal, nout, .true. )
1280 ELSE IF( sname( 10: 11 ).EQ.
'sm' )
THEN
1287 c( i, j ) = bb( i + ( j - 1 )*
1289 bb( i + ( j - 1 )*ldb ) = alpha*
1295 CALL smmch( transa,
'N', m, n, m,
1296 $ one, a, nmax, c, nmax,
1297 $ zero, b, nmax, ct, g,
1298 $ bb, ldb, eps, err,
1299 $ fatal, nout, .false. )
1301 CALL smmch(
'N', transa, m, n, n,
1302 $ one, c, nmax, a, nmax,
1303 $ zero, b, nmax, ct, g,
1304 $ bb, ldb, eps, err,
1305 $ fatal, nout, .false. )
1308 errmax = max( errmax, err )
1331 IF( errmax.LT.thresh )
THEN
1332 IF ( iorder.EQ.0)
WRITE( nout, fmt = 10000 )sname, nc
1333 IF ( iorder.EQ.1)
WRITE( nout, fmt = 10001 )sname, nc
1335 IF ( iorder.EQ.0)
WRITE( nout, fmt = 10002 )sname, nc, errmax
1336 IF ( iorder.EQ.1)
WRITE( nout, fmt = 10003 )sname, nc, errmax
1341 WRITE( nout, fmt = 9996 )sname
1343 $
CALL sprcn3( ntra, nc, sname, iorder, side, uplo, transa, diag,
1344 $ m, n, alpha, lda, ldb)
1349 10003
FORMAT(
' ', a12,
' COMPLETED THE ROW-MAJOR COMPUTATIONAL ',
1350 $
'TESTS (', i6,
' CALLS)', /
' ******* BUT WITH MAXIMUM TEST ',
1351 $
'RATIO ', f8.2,
' - SUSPECT *******' )
1352 10002
FORMAT(
' ', a12,
' COMPLETED THE COLUMN-MAJOR COMPUTATIONAL ',
1353 $
'TESTS (', i6,
' CALLS)', /
' ******* BUT WITH MAXIMUM TEST ',
1354 $
'RATIO ', f8.2,
' - SUSPECT *******' )
1355 10001
FORMAT(
' ', a12,
' PASSED THE ROW-MAJOR COMPUTATIONAL TESTS',
1356 $
' (', i6,
' CALL',
'S)' )
1357 10000
FORMAT(
' ', a12,
' PASSED THE COLUMN-MAJOR COMPUTATIONAL TESTS',
1358 $
' (', i6,
' CALL',
'S)' )
1359 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
1360 $
'ANGED INCORRECTLY *******' )
1361 9996
FORMAT(
' ******* ', a12,
' FAILED ON CALL NUMBER:' )
1362 9995
FORMAT( 1x, i6,
': ', a12,
'(', 4(
'''', a1,
''',' ), 2( i3,
',' ),
1363 $ f4.1,
', A,', i3,
', B,', i3,
') .' )
1364 9994
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
subroutine smake(TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL, KU, RESET, TRANSL)
logical function lse(RI, RJ, LR)
subroutine sprcn3(NOUT, NC, SNAME, IORDER, SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, LDA, LDB)
logical function lseres(TYPE, UPLO, M, N, AA, AS, LDA)
subroutine smmch(TRANSA, TRANSB, M, N, KK, ALPHA, A, LDA, B, LDB, BETA, C, LDC, CT, G, CC, LDCC, EPS, ERR, FATAL, NOUT, MV)