1626 COMPLEX*16 ZERO, ONE
1627 parameter( zero = ( 0.0d0, 0.0d0 ),
1628 $ one = ( 1.0d0, 0.0d0 ) )
1629 DOUBLE PRECISION RONE, RZERO
1630 parameter( rone = 1.0d0, rzero = 0.0d0 )
1632 DOUBLE PRECISION EPS, THRESH
1633 INTEGER NALF, NBET, NIDIM, NMAX, NOUT, NTRA
1634 LOGICAL FATAL, REWI, TRACE
1637 COMPLEX*16 AA( NMAX*NMAX ), AB( 2*NMAX*NMAX ),
1638 $ ALF( NALF ), AS( NMAX*NMAX ), BB( NMAX*NMAX ),
1639 $ BET( NBET ), BS( NMAX*NMAX ), C( NMAX, NMAX ),
1640 $ CC( NMAX*NMAX ), CS( NMAX*NMAX ), CT( NMAX ),
1642 DOUBLE PRECISION G( NMAX )
1643 INTEGER IDIM( NIDIM )
1645 COMPLEX*16 ALPHA, ALS, BETA, BETS
1646 DOUBLE PRECISION ERR, ERRMAX, RBETA, RBETS
1647 INTEGER I, IA, IB, ICT, ICU, IK, IN, J, JC, JJ, JJAB,
1648 $ K, KS, LAA, LBB, LCC, LDA, LDAS, LDB, LDBS,
1649 $ LDC, LDCS, LJ, MA, N, NA, NARGS, NC, NS
1650 LOGICAL CONJ, NULL, RESET, SAME, TRAN, UPPER
1651 CHARACTER*1 TRANS, TRANSS, TRANST, UPLO, UPLOS
1652 CHARACTER*2 ICHT, ICHU
1661 INTRINSIC dcmplx, dconjg, max, dble
1663 INTEGER INFOT, NOUTC
1666 COMMON /infoc/infot, noutc, ok, lerr
1668 DATA icht/
'NC'/, ichu/
'UL'/
1670 conj = sname( 2: 3 ).EQ.
'HE'
1677 DO 130 in = 1, nidim
1688 DO 120 ik = 1, nidim
1692 trans = icht( ict: ict )
1694 IF( tran.AND..NOT.conj )
1715 CALL zmake(
'GE',
' ',
' ', ma, na, ab, 2*nmax, aa,
1716 $ lda, reset, zero )
1718 CALL zmake(
'GE',
' ',
' ', ma, na, ab, nmax, aa, lda,
1727 CALL zmake(
'GE',
' ',
' ', ma, na, ab( k + 1 ),
1728 $ 2*nmax, bb, ldb, reset, zero )
1730 CALL zmake(
'GE',
' ',
' ', ma, na, ab( k*nmax + 1 ),
1731 $ nmax, bb, ldb, reset, zero )
1735 uplo = ichu( icu: icu )
1744 rbeta = dble( beta )
1745 beta = dcmplx( rbeta, rzero )
1749 $ null = null.OR.( ( k.LE.0.OR.alpha.EQ.
1750 $ zero ).AND.rbeta.EQ.rone )
1754 CALL zmake( sname( 2: 3 ), uplo,
' ', n, n, c,
1755 $ nmax, cc, ldc, reset, zero )
1788 $
WRITE( ntra, fmt = 9994 )nc, sname, uplo,
1789 $ trans, n, k, alpha, lda, ldb, rbeta, ldc
1792 CALL zher2k( uplo, trans, n, k, alpha, aa,
1793 $ lda, bb, ldb, rbeta, cc, ldc )
1796 $
WRITE( ntra, fmt = 9993 )nc, sname, uplo,
1797 $ trans, n, k, alpha, lda, ldb, beta, ldc
1800 CALL zsyr2k( uplo, trans, n, k, alpha, aa,
1801 $ lda, bb, ldb, beta, cc, ldc )
1807 WRITE( nout, fmt = 9992 )
1814 isame( 1 ) = uplos.EQ.uplo
1815 isame( 2 ) = transs.EQ.trans
1816 isame( 3 ) = ns.EQ.n
1817 isame( 4 ) = ks.EQ.k
1818 isame( 5 ) = als.EQ.alpha
1819 isame( 6 ) =
lze( as, aa, laa )
1820 isame( 7 ) = ldas.EQ.lda
1821 isame( 8 ) =
lze( bs, bb, lbb )
1822 isame( 9 ) = ldbs.EQ.ldb
1824 isame( 10 ) = rbets.EQ.rbeta
1826 isame( 10 ) = bets.EQ.beta
1829 isame( 11 ) =
lze( cs, cc, lcc )
1831 isame( 11 ) =
lzeres(
'HE', uplo, n, n, cs,
1834 isame( 12 ) = ldcs.EQ.ldc
1841 same = same.AND.isame( i )
1842 IF( .NOT.isame( i ) )
1843 $
WRITE( nout, fmt = 9998 )i
1871 w( i ) = alpha*ab( ( j - 1 )*2*
1874 w( k + i ) = dconjg( alpha )*
1883 CALL zmmch( transt,
'N', lj, 1, 2*k,
1884 $ one, ab( jjab ), 2*nmax, w,
1885 $ 2*nmax, beta, c( jj, j ),
1886 $ nmax, ct, g, cc( jc ), ldc,
1887 $ eps, err, fatal, nout,
1892 w( i ) = alpha*dconjg( ab( ( k +
1893 $ i - 1 )*nmax + j ) )
1894 w( k + i ) = dconjg( alpha*
1895 $ ab( ( i - 1 )*nmax +
1898 w( i ) = alpha*ab( ( k + i - 1 )*
1901 $ ab( ( i - 1 )*nmax +
1905 CALL zmmch(
'N',
'N', lj, 1, 2*k, one,
1906 $ ab( jj ), nmax, w, 2*nmax,
1907 $ beta, c( jj, j ), nmax, ct,
1908 $ g, cc( jc ), ldc, eps, err,
1909 $ fatal, nout, .true. )
1916 $ jjab = jjab + 2*nmax
1918 errmax = max( errmax, err )
1940 IF( errmax.LT.thresh )
THEN
1941 WRITE( nout, fmt = 9999 )sname, nc
1943 WRITE( nout, fmt = 9997 )sname, nc, errmax
1949 $
WRITE( nout, fmt = 9995 )j
1952 WRITE( nout, fmt = 9996 )sname
1954 WRITE( nout, fmt = 9994 )nc, sname, uplo, trans, n, k, alpha,
1955 $ lda, ldb, rbeta, ldc
1957 WRITE( nout, fmt = 9993 )nc, sname, uplo, trans, n, k, alpha,
1958 $ lda, ldb, beta, ldc
1964 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
1966 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
1967 $
'ANGED INCORRECTLY *******' )
1968 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
1969 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
1970 $
' - SUSPECT *******' )
1971 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
1972 9995
FORMAT(
' THESE ARE THE RESULTS FOR COLUMN ', i3 )
1973 9994
FORMAT( 1x, i6,
': ', a6,
'(', 2(
'''', a1,
''',' ), 2( i3,
',' ),
1974 $
'(', f4.1,
',', f4.1,
'), A,', i3,
', B,', i3,
',', f4.1,
1975 $
', C,', i3,
') .' )
1976 9993
FORMAT( 1x, i6,
': ', a6,
'(', 2(
'''', a1,
''',' ), 2( i3,
',' ),
1977 $
'(', f4.1,
',', f4.1,
'), A,', i3,
', B,', i3,
',(', f4.1,
1978 $
',', f4.1,
'), C,', i3,
') .' )
1979 9992
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
subroutine zher2k(UPLO, TRANS, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
ZHER2K
subroutine zsyr2k(UPLO, TRANS, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
ZSYR2K
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)