1093 COMPLEX*16 ZERO, ONE
1094 parameter( zero = ( 0.0d0, 0.0d0 ), one = ( 1.0d0, 0.0d0 ) )
1095 DOUBLE PRECISION RZERO
1096 parameter( rzero = 0.0d0 )
1098 DOUBLE PRECISION EPS, THRESH
1099 INTEGER NALF, NIDIM, NMAX, NOUT, NTRA, IORDER
1100 LOGICAL FATAL, REWI, TRACE
1103 COMPLEX*16 A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
1104 $ AS( NMAX*NMAX ), B( NMAX, NMAX ),
1105 $ BB( NMAX*NMAX ), BS( NMAX*NMAX ),
1106 $ C( NMAX, NMAX ), CT( NMAX )
1107 DOUBLE PRECISION G( NMAX )
1108 INTEGER IDIM( NIDIM )
1110 COMPLEX*16 ALPHA, ALS
1111 DOUBLE PRECISION ERR, ERRMAX
1112 INTEGER I, IA, ICD, ICS, ICT, ICU, IM, IN, J, LAA, LBB,
1113 $ LDA, LDAS, LDB, LDBS, M, MS, N, NA, NARGS, NC,
1115 LOGICAL LEFT, NULL, RESET, SAME
1116 CHARACTER*1 DIAG, DIAGS, SIDE, SIDES, TRANAS, TRANSA, UPLO,
1118 CHARACTER*2 ICHD, ICHS, ICHU
1130 INTEGER INFOT, NOUTC
1133 COMMON /infoc/infot, noutc, ok, lerr
1135 DATA ichu/
'UL'/, icht/
'NTC'/, ichd/
'UN'/, ichs/
'LR'/
1149 DO 140 im = 1, nidim
1152 DO 130 in = 1, nidim
1162 null = m.LE.0.OR.n.LE.0
1165 side = ichs( ics: ics )
1182 uplo = ichu( icu: icu )
1185 transa = icht( ict: ict )
1188 diag = ichd( icd: icd )
1195 CALL zmake(
'tr', uplo, diag, na, na, a,
1196 $ nmax, aa, lda, reset, zero )
1200 CALL zmake(
'ge',
' ',
' ', m, n, b, nmax,
1201 $ bb, ldb, reset, zero )
1226 IF( sname( 10: 11 ).EQ.
'mm' )
THEN
1228 $
CALL zprcn3( ntra, nc, sname, iorder,
1229 $ side, uplo, transa, diag, m, n, alpha,
1233 CALL cztrmm(iorder, side, uplo, transa,
1234 $ diag, m, n, alpha, aa, lda,
1236 ELSE IF( sname( 10: 11 ).EQ.
'sm' )
THEN
1238 $
CALL zprcn3( ntra, nc, sname, iorder,
1239 $ side, uplo, transa, diag, m, n, alpha,
1243 CALL cztrsm(iorder, side, uplo, transa,
1244 $ diag, m, n, alpha, aa, lda,
1251 WRITE( nout, fmt = 9994 )
1258 isame( 1 ) = sides.EQ.side
1259 isame( 2 ) = uplos.EQ.uplo
1260 isame( 3 ) = tranas.EQ.transa
1261 isame( 4 ) = diags.EQ.diag
1262 isame( 5 ) = ms.EQ.m
1263 isame( 6 ) = ns.EQ.n
1264 isame( 7 ) = als.EQ.alpha
1265 isame( 8 ) =
lze( as, aa, laa )
1266 isame( 9 ) = ldas.EQ.lda
1268 isame( 10 ) =
lze( bs, bb, lbb )
1270 isame( 10 ) =
lzeres(
'ge',
' ', m, n, bs,
1273 isame( 11 ) = ldbs.EQ.ldb
1280 same = same.AND.isame( i )
1281 IF( .NOT.isame( i ) )
1282 $
WRITE( nout, fmt = 9998 )i
1290 IF( sname( 10: 11 ).EQ.
'mm' )
THEN
1295 CALL zmmch( transa,
'N', m, n, m,
1296 $ alpha, a, nmax, b, nmax,
1297 $ zero, c, nmax, ct, g,
1298 $ bb, ldb, eps, err,
1299 $ fatal, nout, .true. )
1301 CALL zmmch(
'N', transa, m, n, n,
1302 $ alpha, b, nmax, a, nmax,
1303 $ zero, c, nmax, ct, g,
1304 $ bb, ldb, eps, err,
1305 $ fatal, nout, .true. )
1307 ELSE IF( sname( 10: 11 ).EQ.
'sm' )
THEN
1314 c( i, j ) = bb( i + ( j - 1 )*
1316 bb( i + ( j - 1 )*ldb ) = alpha*
1322 CALL zmmch( transa,
'N', m, n, m,
1323 $ one, a, nmax, c, nmax,
1324 $ zero, b, nmax, ct, g,
1325 $ bb, ldb, eps, err,
1326 $ fatal, nout, .false. )
1328 CALL zmmch(
'N', transa, m, n, n,
1329 $ one, c, nmax, a, nmax,
1330 $ zero, b, nmax, ct, g,
1331 $ bb, ldb, eps, err,
1332 $ fatal, nout, .false. )
1335 errmax = max( errmax, err )
1358 IF( errmax.LT.thresh )
THEN
1359 IF ( iorder.EQ.0)
WRITE( nout, fmt = 10000 )sname, nc
1360 IF ( iorder.EQ.1)
WRITE( nout, fmt = 10001 )sname, nc
1362 IF ( iorder.EQ.0)
WRITE( nout, fmt = 10002 )sname, nc, errmax
1363 IF ( iorder.EQ.1)
WRITE( nout, fmt = 10003 )sname, nc, errmax
1368 WRITE( nout, fmt = 9996 )sname
1370 $
CALL zprcn3( ntra, nc, sname, iorder, side, uplo, transa, diag,
1371 $ m, n, alpha, lda, ldb)
1376 10003
FORMAT(
' ', a12,
' COMPLETED THE ROW-MAJOR COMPUTATIONAL ',
1377 $
'TESTS (', i6,
' CALLS)', /
' ******* BUT WITH MAXIMUM TEST ',
1378 $
'RATIO ', f8.2,
' - SUSPECT *******' )
1379 10002
FORMAT(
' ', a12,
' COMPLETED THE COLUMN-MAJOR COMPUTATIONAL ',
1380 $
'TESTS (', i6,
' CALLS)', /
' ******* BUT WITH MAXIMUM TEST ',
1381 $
'RATIO ', f8.2,
' - SUSPECT *******' )
1382 10001
FORMAT(
' ', a12,
' PASSED THE ROW-MAJOR COMPUTATIONAL TESTS',
1383 $
' (', i6,
' CALL',
'S)' )
1384 10000
FORMAT(
' ', a12,
' PASSED THE COLUMN-MAJOR COMPUTATIONAL TESTS',
1385 $
' (', i6,
' CALL',
'S)' )
1386 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
1387 $
'ANGED INCORRECTLY *******' )
1388 9996
FORMAT(
' ******* ', a12,
' FAILED ON CALL NUMBER:' )
1389 9995
FORMAT(1x, i6,
': ', a12,
'(', 4(
'''', a1,
''',' ), 2( i3,
',' ),
1390 $
'(', f4.1,
',', f4.1,
'), A,', i3,
', B,', i3,
') ',
1392 9994
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',