1093 parameter ( zero = ( 0.0, 0.0 ), one = ( 1.0, 0.0 ) )
1095 parameter ( rzero = 0.0 )
1098 INTEGER nalf, nidim, nmax, nout, ntra, iorder
1099 LOGICAL fatal, rewi, trace
1102 COMPLEX a( nmax, nmax ), aa( nmax*nmax ), alf( nalf ),
1103 $ as( nmax*nmax ), b( nmax, nmax ),
1104 $ bb( nmax*nmax ), bs( nmax*nmax ),
1105 $ c( nmax, nmax ), ct( nmax )
1107 INTEGER idim( nidim )
1111 INTEGER i, ia, icd, ics, ict, icu, im, in, j, laa, lbb,
1112 $ lda, ldas, ldb, ldbs, m, ms, n, na, nargs, nc,
1114 LOGICAL left, null, reset, same
1115 CHARACTER*1 diag, diags, side, sides, tranas, transa, uplo,
1117 CHARACTER*2 ichd, ichs, ichu
1129 INTEGER infot, noutc
1132 COMMON /infoc/infot, noutc, ok, lerr
1134 DATA ichu/
'UL'/, icht/
'NTC'/, ichd/
'UN'/, ichs/
'LR'/
1148 DO 140 im = 1, nidim
1151 DO 130 in = 1, nidim
1161 null = m.LE.0.OR.n.LE.0
1164 side = ichs( ics: ics )
1181 uplo = ichu( icu: icu )
1184 transa = icht( ict: ict )
1187 diag = ichd( icd: icd )
1194 CALL cmake(
'tr', uplo, diag, na, na, a,
1195 $ nmax, aa, lda, reset, zero )
1199 CALL cmake(
'ge',
' ',
' ', m, n, b, nmax,
1200 $ bb, ldb, reset, zero )
1225 IF( sname( 10: 11 ).EQ.
'mm' )
THEN
1227 $
CALL cprcn3( ntra, nc, sname, iorder,
1228 $ side, uplo, transa, diag, m, n, alpha,
1232 CALL cctrmm(iorder, side, uplo, transa,
1233 $ diag, m, n, alpha, aa, lda,
1235 ELSE IF( sname( 10: 11 ).EQ.
'sm' )
THEN
1237 $
CALL cprcn3( ntra, nc, sname, iorder,
1238 $ side, uplo, transa, diag, m, n, alpha,
1242 CALL cctrsm(iorder, side, uplo, transa,
1243 $ diag, m, n, alpha, aa, lda,
1250 WRITE( nout, fmt = 9994 )
1257 isame( 1 ) = sides.EQ.side
1258 isame( 2 ) = uplos.EQ.uplo
1259 isame( 3 ) = tranas.EQ.transa
1260 isame( 4 ) = diags.EQ.diag
1261 isame( 5 ) = ms.EQ.m
1262 isame( 6 ) = ns.EQ.n
1263 isame( 7 ) = als.EQ.alpha
1264 isame( 8 ) =
lce( as, aa, laa )
1265 isame( 9 ) = ldas.EQ.lda
1267 isame( 10 ) =
lce( bs, bb, lbb )
1269 isame( 10 ) =
lceres(
'ge',
' ', m, n, bs,
1272 isame( 11 ) = ldbs.EQ.ldb
1279 same = same.AND.isame( i )
1280 IF( .NOT.isame( i ) )
1281 $
WRITE( nout, fmt = 9998 )i
1289 IF( sname( 10: 11 ).EQ.
'mm' )
THEN
1294 CALL cmmch( transa,
'N', m, n, m,
1295 $ alpha, a, nmax, b, nmax,
1296 $ zero, c, nmax, ct, g,
1297 $ bb, ldb, eps, err,
1298 $ fatal, nout, .true. )
1300 CALL cmmch(
'N', transa, m, n, n,
1301 $ alpha, b, nmax, a, nmax,
1302 $ zero, c, nmax, ct, g,
1303 $ bb, ldb, eps, err,
1304 $ fatal, nout, .true. )
1306 ELSE IF( sname( 10: 11 ).EQ.
'sm' )
THEN
1313 c( i, j ) = bb( i + ( j - 1 )*
1315 bb( i + ( j - 1 )*ldb ) = alpha*
1321 CALL cmmch( transa,
'N', m, n, m,
1322 $ one, a, nmax, c, nmax,
1323 $ zero, b, nmax, ct, g,
1324 $ bb, ldb, eps, err,
1325 $ fatal, nout, .false. )
1327 CALL cmmch(
'N', transa, m, n, n,
1328 $ one, c, nmax, a, nmax,
1329 $ zero, b, nmax, ct, g,
1330 $ bb, ldb, eps, err,
1331 $ fatal, nout, .false. )
1334 errmax = max( errmax, err )
1357 IF( errmax.LT.thresh )
THEN
1358 IF ( iorder.EQ.0)
WRITE( nout, fmt = 10000 )sname, nc
1359 IF ( iorder.EQ.1)
WRITE( nout, fmt = 10001 )sname, nc
1361 IF ( iorder.EQ.0)
WRITE( nout, fmt = 10002 )sname, nc, errmax
1362 IF ( iorder.EQ.1)
WRITE( nout, fmt = 10003 )sname, nc, errmax
1367 WRITE( nout, fmt = 9996 )sname
1369 $
CALL cprcn3( ntra, nc, sname, iorder, side, uplo, transa, diag,
1370 $ m, n, alpha, lda, ldb)
1375 10003
FORMAT(
' ', a12,
' COMPLETED THE ROW-MAJOR COMPUTATIONAL ',
1376 $
'TESTS (', i6,
' CALLS)', /
' ******* BUT WITH MAXIMUM TEST ',
1377 $
'RATIO ', f8.2,
' - SUSPECT *******' )
1378 10002
FORMAT(
' ', a12,
' COMPLETED THE COLUMN-MAJOR COMPUTATIONAL ',
1379 $
'TESTS (', i6,
' CALLS)', /
' ******* BUT WITH MAXIMUM TEST ',
1380 $
'RATIO ', f8.2,
' - SUSPECT *******' )
1381 10001
FORMAT(
' ', a12,
' PASSED THE ROW-MAJOR COMPUTATIONAL TESTS',
1382 $
' (', i6,
' CALL',
'S)' )
1383 10000
FORMAT(
' ', a12,
' PASSED THE COLUMN-MAJOR COMPUTATIONAL TESTS',
1384 $
' (', i6,
' CALL',
'S)' )
1385 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
1386 $
'ANGED INCORRECTLY *******' )
1387 9996
FORMAT(
' ******* ', a12,
' FAILED ON CALL NUMBER:' )
1388 9995
FORMAT(1x, i6,
': ', a12,
'(', 4(
'''', a1,
''',' ), 2( i3,
',' ),
1389 $
'(', f4.1,
',', f4.1,
'), A,', i3,
', B,', i3,
') ',
1391 9994
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
subroutine cmmch(TRANSA, TRANSB, M, N, KK, ALPHA, A, LDA, B, LDB, BETA, C, LDC, CT, G, CC, LDCC, EPS, ERR, FATAL, NOUT, MV)
logical function lce(RI, RJ, LR)
subroutine cmake(TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL, KU, RESET, TRANSL)
subroutine cprcn3(NOUT, NC, SNAME, IORDER, SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, LDA, LDB)
logical function lceres(TYPE, UPLO, M, N, AA, AS, LDA)