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 *',
subroutine zprcn3(NOUT, NC, SNAME, IORDER, SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, LDA, LDB)
logical function lzeres(TYPE, UPLO, M, N, AA, AS, LDA)
subroutine zmmch(TRANSA, TRANSB, M, N, KK, ALPHA, A, LDA, B, LDB, BETA, C, LDC, CT, G, CC, LDCC, EPS, ERR, FATAL, NOUT, MV)
subroutine zmake(TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL, KU, RESET, TRANSL)
logical function lze(RI, RJ, LR)