1459 parameter ( zero = ( 0.0d0, 0.0d0 ) )
1460 DOUBLE PRECISION rone, rzero
1461 parameter ( rone = 1.0d0, rzero = 0.0d0 )
1463 DOUBLE PRECISION eps, thresh
1464 INTEGER nalf, nbet, nidim, nmax, nout, ntra, iorder
1465 LOGICAL fatal, rewi, trace
1468 COMPLEX*16 a( nmax, nmax ), aa( nmax*nmax ), alf( nalf ),
1469 $ as( nmax*nmax ), b( nmax, nmax ),
1470 $ bb( nmax*nmax ), bet( nbet ), bs( nmax*nmax ),
1471 $ c( nmax, nmax ), cc( nmax*nmax ),
1472 $ cs( nmax*nmax ), ct( nmax )
1473 DOUBLE PRECISION g( nmax )
1474 INTEGER idim( nidim )
1476 COMPLEX*16 alpha, als, beta, bets
1477 DOUBLE PRECISION err, errmax, ralpha, rals, rbeta, rbets
1478 INTEGER i, ia, ib, ict, icu, ik, in, j, jc, jj, k, ks,
1479 $ laa, lcc, lda, ldas, ldc, ldcs, lj, ma, n, na,
1481 LOGICAL conj, null, reset, same, tran, upper
1482 CHARACTER*1 trans, transs, transt, uplo, uplos
1483 CHARACTER*2 icht, ichu
1492 INTRINSIC dcmplx, max, dble
1494 INTEGER infot, noutc
1497 COMMON /infoc/infot, noutc, ok, lerr
1499 DATA icht/
'NC'/, ichu/
'UL'/
1501 conj = sname( 8: 9 ).EQ.
'he'
1508 DO 100 in = 1, nidim
1523 trans = icht( ict: ict )
1525 IF( tran.AND..NOT.conj )
1545 CALL zmake(
'ge',
' ',
' ', ma, na, a, nmax, aa, lda,
1549 uplo = ichu( icu: icu )
1555 ralpha = dble( alpha )
1556 alpha = dcmplx( ralpha, rzero )
1562 rbeta = dble( beta )
1563 beta = dcmplx( rbeta, rzero )
1567 $ null = null.OR.( ( k.LE.0.OR.ralpha.EQ.
1568 $ rzero ).AND.rbeta.EQ.rone )
1572 CALL zmake( sname( 8: 9 ), uplo,
' ', n, n, c,
1573 $ nmax, cc, ldc, reset, zero )
1606 $
CALL zprcn6( ntra, nc, sname, iorder,
1607 $ uplo, trans, n, k, ralpha, lda, rbeta,
1611 CALL czherk( iorder, uplo, trans, n, k,
1612 $ ralpha, aa, lda, rbeta, cc,
1616 $
CALL zprcn4( ntra, nc, sname, iorder,
1617 $ uplo, trans, n, k, alpha, lda, beta, ldc)
1620 CALL czsyrk( iorder, uplo, trans, n, k,
1621 $ alpha, aa, lda, beta, cc, ldc )
1627 WRITE( nout, fmt = 9992 )
1634 isame( 1 ) = uplos.EQ.uplo
1635 isame( 2 ) = transs.EQ.trans
1636 isame( 3 ) = ns.EQ.n
1637 isame( 4 ) = ks.EQ.k
1639 isame( 5 ) = rals.EQ.ralpha
1641 isame( 5 ) = als.EQ.alpha
1643 isame( 6 ) =
lze( as, aa, laa )
1644 isame( 7 ) = ldas.EQ.lda
1646 isame( 8 ) = rbets.EQ.rbeta
1648 isame( 8 ) = bets.EQ.beta
1651 isame( 9 ) =
lze( cs, cc, lcc )
1653 isame( 9 ) =
lzeres( sname( 8: 9 ), uplo, n,
1656 isame( 10 ) = ldcs.EQ.ldc
1663 same = same.AND.isame( i )
1664 IF( .NOT.isame( i ) )
1665 $
WRITE( nout, fmt = 9998 )i
1691 CALL zmmch( transt,
'N', lj, 1, k,
1692 $ alpha, a( 1, jj ), nmax,
1693 $ a( 1, j ), nmax, beta,
1694 $ c( jj, j ), nmax, ct, g,
1695 $ cc( jc ), ldc, eps, err,
1696 $ fatal, nout, .true. )
1698 CALL zmmch(
'N', transt, lj, 1, k,
1699 $ alpha, a( jj, 1 ), nmax,
1700 $ a( j, 1 ), nmax, beta,
1701 $ c( jj, j ), nmax, ct, g,
1702 $ cc( jc ), ldc, eps, err,
1703 $ fatal, nout, .true. )
1710 errmax = max( errmax, err )
1732 IF( errmax.LT.thresh )
THEN
1733 IF ( iorder.EQ.0)
WRITE( nout, fmt = 10000 )sname, nc
1734 IF ( iorder.EQ.1)
WRITE( nout, fmt = 10001 )sname, nc
1736 IF ( iorder.EQ.0)
WRITE( nout, fmt = 10002 )sname, nc, errmax
1737 IF ( iorder.EQ.1)
WRITE( nout, fmt = 10003 )sname, nc, errmax
1743 $
WRITE( nout, fmt = 9995 )j
1746 WRITE( nout, fmt = 9996 )sname
1748 CALL zprcn6( nout, nc, sname, iorder, uplo, trans, n, k, ralpha,
1751 CALL zprcn4( nout, nc, sname, iorder, uplo, trans, n, k, alpha,
1758 10003
FORMAT(
' ', a12,
' COMPLETED THE ROW-MAJOR COMPUTATIONAL ',
1759 $
'TESTS (', i6,
' CALLS)', /
' ******* BUT WITH MAXIMUM TEST ',
1760 $
'RATIO ', f8.2,
' - SUSPECT *******' )
1761 10002
FORMAT(
' ', a12,
' COMPLETED THE COLUMN-MAJOR COMPUTATIONAL ',
1762 $
'TESTS (', i6,
' CALLS)', /
' ******* BUT WITH MAXIMUM TEST ',
1763 $
'RATIO ', f8.2,
' - SUSPECT *******' )
1764 10001
FORMAT(
' ', a12,
' PASSED THE ROW-MAJOR COMPUTATIONAL TESTS',
1765 $
' (', i6,
' CALL',
'S)' )
1766 10000
FORMAT(
' ', a12,
' PASSED THE COLUMN-MAJOR COMPUTATIONAL TESTS',
1767 $
' (', i6,
' CALL',
'S)' )
1768 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
1769 $
'ANGED INCORRECTLY *******' )
1770 9996
FORMAT(
' ******* ', a12,
' FAILED ON CALL NUMBER:' )
1771 9995
FORMAT(
' THESE ARE THE RESULTS FOR COLUMN ', i3 )
1772 9994
FORMAT(1x, i6,
': ', a12,
'(', 2(
'''', a1,
''',' ), 2( i3,
',' ),
1773 $ f4.1,
', A,', i3,
',', f4.1,
', C,', i3,
') ',
1775 9993
FORMAT(1x, i6,
': ', a12,
'(', 2(
'''', a1,
''',' ), 2( i3,
',' ),
1776 $
'(', f4.1,
',', f4.1,
') , A,', i3,
',(', f4.1,
',', f4.1,
1777 $
'), C,', i3,
') .' )
1778 9992
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
subroutine zprcn6(NOUT, NC, SNAME, IORDER, UPLO, TRANSA, N, K, ALPHA, LDA, BETA, LDC)
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)
subroutine zprcn4(NOUT, NC, SNAME, IORDER, UPLO, TRANSA, N, K, ALPHA, LDA, BETA, LDC)
logical function lze(RI, RJ, LR)