1295 parameter( zero = ( 0.0d0, 0.0d0 ) )
1296 DOUBLE PRECISION RONE, RZERO
1297 parameter( rone = 1.0d0, rzero = 0.0d0 )
1299 DOUBLE PRECISION EPS, THRESH
1300 INTEGER NALF, NBET, NIDIM, NMAX, NOUT, NTRA
1301 LOGICAL FATAL, REWI, TRACE
1304 COMPLEX*16 A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
1305 $ AS( NMAX*NMAX ), B( NMAX, NMAX ),
1306 $ BB( NMAX*NMAX ), BET( NBET ), BS( NMAX*NMAX ),
1307 $ C( NMAX, NMAX ), CC( NMAX*NMAX ),
1308 $ CS( NMAX*NMAX ), CT( NMAX )
1309 DOUBLE PRECISION G( NMAX )
1310 INTEGER IDIM( NIDIM )
1312 COMPLEX*16 ALPHA, ALS, BETA, BETS
1313 DOUBLE PRECISION ERR, ERRMAX, RALPHA, RALS, RBETA, RBETS
1314 INTEGER I, IA, IB, ICT, ICU, IK, IN, J, JC, JJ, K, KS,
1315 $ LAA, LCC, LDA, LDAS, LDC, LDCS, LJ, MA, N, NA,
1317 LOGICAL CONJ, NULL, RESET, SAME, TRAN, UPPER
1318 CHARACTER*1 TRANS, TRANSS, TRANST, UPLO, UPLOS
1319 CHARACTER*2 ICHT, ICHU
1328 INTRINSIC dcmplx, max, dble
1330 INTEGER INFOT, NOUTC
1333 COMMON /infoc/infot, noutc, ok, lerr
1335 DATA icht/
'NC'/, ichu/
'UL'/
1337 conj = sname( 2: 3 ).EQ.
'HE'
1344 DO 100 in = 1, nidim
1359 trans = icht( ict: ict )
1361 IF( tran.AND..NOT.conj )
1381 CALL zmake(
'GE',
' ',
' ', ma, na, a, nmax, aa, lda,
1385 uplo = ichu( icu: icu )
1391 ralpha = dble( alpha )
1392 alpha = dcmplx( ralpha, rzero )
1398 rbeta = dble( beta )
1399 beta = dcmplx( rbeta, rzero )
1403 $ null = null.OR.( ( k.LE.0.OR.ralpha.EQ.
1404 $ rzero ).AND.rbeta.EQ.rone )
1408 CALL zmake( sname( 2: 3 ), uplo,
' ', n, n, c,
1409 $ nmax, cc, ldc, reset, zero )
1442 $
WRITE( ntra, fmt = 9994 )nc, sname, uplo,
1443 $ trans, n, k, ralpha, lda, rbeta, ldc
1446 CALL zherk( uplo, trans, n, k, ralpha, aa,
1447 $ lda, rbeta, cc, ldc )
1450 $
WRITE( ntra, fmt = 9993 )nc, sname, uplo,
1451 $ trans, n, k, alpha, lda, beta, ldc
1454 CALL zsyrk( uplo, trans, n, k, alpha, aa,
1455 $ lda, beta, cc, ldc )
1461 WRITE( nout, fmt = 9992 )
1468 isame( 1 ) = uplos.EQ.uplo
1469 isame( 2 ) = transs.EQ.trans
1470 isame( 3 ) = ns.EQ.n
1471 isame( 4 ) = ks.EQ.k
1473 isame( 5 ) = rals.EQ.ralpha
1475 isame( 5 ) = als.EQ.alpha
1477 isame( 6 ) =
lze( as, aa, laa )
1478 isame( 7 ) = ldas.EQ.lda
1480 isame( 8 ) = rbets.EQ.rbeta
1482 isame( 8 ) = bets.EQ.beta
1485 isame( 9 ) =
lze( cs, cc, lcc )
1487 isame( 9 ) =
lzeres( sname( 2: 3 ), uplo, n,
1490 isame( 10 ) = ldcs.EQ.ldc
1497 same = same.AND.isame( i )
1498 IF( .NOT.isame( i ) )
1499 $
WRITE( nout, fmt = 9998 )i
1525 CALL zmmch( transt,
'N', lj, 1, k,
1526 $ alpha, a( 1, jj ), nmax,
1527 $ a( 1, j ), nmax, beta,
1528 $ c( jj, j ), nmax, ct, g,
1529 $ cc( jc ), ldc, eps, err,
1530 $ fatal, nout, .true. )
1532 CALL zmmch(
'N', transt, lj, 1, k,
1533 $ alpha, a( jj, 1 ), nmax,
1534 $ a( j, 1 ), nmax, beta,
1535 $ c( jj, j ), nmax, ct, g,
1536 $ cc( jc ), ldc, eps, err,
1537 $ fatal, nout, .true. )
1544 errmax = max( errmax, err )
1566 IF( errmax.LT.thresh )
THEN
1567 WRITE( nout, fmt = 9999 )sname, nc
1569 WRITE( nout, fmt = 9997 )sname, nc, errmax
1575 $
WRITE( nout, fmt = 9995 )j
1578 WRITE( nout, fmt = 9996 )sname
1580 WRITE( nout, fmt = 9994 )nc, sname, uplo, trans, n, k, ralpha,
1583 WRITE( nout, fmt = 9993 )nc, sname, uplo, trans, n, k, alpha,
1590 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
1592 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
1593 $
'ANGED INCORRECTLY *******' )
1594 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
1595 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
1596 $
' - SUSPECT *******' )
1597 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
1598 9995
FORMAT(
' THESE ARE THE RESULTS FOR COLUMN ', i3 )
1599 9994
FORMAT( 1x, i6,
': ', a6,
'(', 2(
'''', a1,
''',' ), 2( i3,
',' ),
1600 $ f4.1,
', A,', i3,
',', f4.1,
', C,', i3,
') ',
1602 9993
FORMAT( 1x, i6,
': ', a6,
'(', 2(
'''', a1,
''',' ), 2( i3,
',' ),
1603 $
'(', f4.1,
',', f4.1,
') , A,', i3,
',(', f4.1,
',', f4.1,
1604 $
'), C,', i3,
') .' )
1605 9992
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
subroutine zsyrk(UPLO, TRANS, N, K, ALPHA, A, LDA, BETA, C, LDC)
ZSYRK
subroutine zherk(UPLO, TRANS, N, K, ALPHA, A, LDA, BETA, C, LDC)
ZHERK
logical function lzeres(TYPE, UPLO, M, N, AA, AS, LDA)
subroutine zmake(TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL, KU, RESET, TRANSL)
logical function lze(RI, RJ, LR)
subroutine zmmch(TRANSA, TRANSB, M, N, KK, ALPHA, A, LDA, B, LDB, BETA, C, LDC, CT, G, CC, LDCC, EPS, ERR, FATAL, NOUT, MV)