1784 COMPLEX*16 ZERO, HALF, ONE
1785 parameter( zero = ( 0.0d0, 0.0d0 ),
1786 $ half = ( 0.5d0, 0.0d0 ),
1787 $ one = ( 1.0d0, 0.0d0 ) )
1788 DOUBLE PRECISION RZERO
1789 parameter( rzero = 0.0d0 )
1791 DOUBLE PRECISION EPS, THRESH
1792 INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA
1793 LOGICAL FATAL, REWI, TRACE
1796 COMPLEX*16 A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
1797 $ AS( NMAX*NMAX ), X( NMAX ), XS( NMAX*INCMAX ),
1798 $ XX( NMAX*INCMAX ), Y( NMAX ),
1799 $ YS( NMAX*INCMAX ), YT( NMAX ),
1800 $ YY( NMAX*INCMAX ), Z( NMAX )
1801 DOUBLE PRECISION G( NMAX )
1802 INTEGER IDIM( NIDIM ), INC( NINC )
1804 COMPLEX*16 ALPHA, TRANSL
1805 DOUBLE PRECISION ERR, ERRMAX, RALPHA, RALS
1806 INTEGER I, IA, IC, IN, INCX, INCXS, IX, J, JA, JJ, LAA,
1807 $ LDA, LDAS, LJ, LX, N, NARGS, NC, NS
1808 LOGICAL FULL, NULL, PACKED, RESET, SAME, UPPER
1809 CHARACTER*1 UPLO, UPLOS
1820 INTRINSIC abs, dble, dcmplx, dconjg, max
1822 INTEGER INFOT, NOUTC
1825 COMMON /infoc/infot, noutc, ok, lerr
1829 full = sname( 3: 3 ).EQ.
'E'
1830 packed = sname( 3: 3 ).EQ.
'P'
1834 ELSE IF( packed )
THEN
1842 DO 100 in = 1, nidim
1852 laa = ( n*( n + 1 ) )/2
1858 uplo = ich( ic: ic )
1868 CALL zmake(
'GE',
' ',
' ', 1, n, x, 1, xx, abs( incx ),
1869 $ 0, n - 1, reset, transl )
1872 xx( 1 + abs( incx )*( n/2 - 1 ) ) = zero
1876 ralpha = dble( alf( ia ) )
1877 alpha = dcmplx( ralpha, rzero )
1878 null = n.LE.0.OR.ralpha.EQ.rzero
1883 CALL zmake( sname( 2: 3 ), uplo,
' ', n, n, a, nmax,
1884 $ aa, lda, n - 1, n - 1, reset, transl )
1906 $
WRITE( ntra, fmt = 9993 )nc, sname, uplo, n,
1910 CALL zher( uplo, n, ralpha, xx, incx, aa, lda )
1911 ELSE IF( packed )
THEN
1913 $
WRITE( ntra, fmt = 9994 )nc, sname, uplo, n,
1917 CALL zhpr( uplo, n, ralpha, xx, incx, aa )
1923 WRITE( nout, fmt = 9992 )
1930 isame( 1 ) = uplo.EQ.uplos
1931 isame( 2 ) = ns.EQ.n
1932 isame( 3 ) = rals.EQ.ralpha
1933 isame( 4 ) =
lze( xs, xx, lx )
1934 isame( 5 ) = incxs.EQ.incx
1936 isame( 6 ) =
lze( as, aa, laa )
1938 isame( 6 ) =
lzeres( sname( 2: 3 ), uplo, n, n, as,
1941 IF( .NOT.packed )
THEN
1942 isame( 7 ) = ldas.EQ.lda
1949 same = same.AND.isame( i )
1950 IF( .NOT.isame( i ) )
1951 $
WRITE( nout, fmt = 9998 )i
1968 z( i ) = x( n - i + 1 )
1973 w( 1 ) = dconjg( z( j ) )
1981 CALL zmvch(
'N', lj, 1, alpha, z( jj ), lj, w,
1982 $ 1, one, a( jj, j ), 1, yt, g,
1983 $ aa( ja ), eps, err, fatal, nout,
1994 errmax = max( errmax, err )
2015 IF( errmax.LT.thresh )
THEN
2016 WRITE( nout, fmt = 9999 )sname, nc
2018 WRITE( nout, fmt = 9997 )sname, nc, errmax
2023 WRITE( nout, fmt = 9995 )j
2026 WRITE( nout, fmt = 9996 )sname
2028 WRITE( nout, fmt = 9993 )nc, sname, uplo, n, ralpha, incx, lda
2029 ELSE IF( packed )
THEN
2030 WRITE( nout, fmt = 9994 )nc, sname, uplo, n, ralpha, incx
2036 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
2038 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
2039 $
'ANGED INCORRECTLY *******' )
2040 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
2041 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
2042 $
' - SUSPECT *******' )
2043 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
2044 9995
FORMAT(
' THESE ARE THE RESULTS FOR COLUMN ', i3 )
2045 9994
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', i3,
',', f4.1,
', X,',
2047 9993
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', i3,
',', f4.1,
', X,',
2048 $ i2,
', A,', i3,
') .' )
2049 9992
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
subroutine zhpr(UPLO, N, ALPHA, X, INCX, AP)
ZHPR
subroutine zher(UPLO, N, ALPHA, X, INCX, A, LDA)
ZHER
subroutine zmvch(TRANS, M, N, ALPHA, A, NMAX, X, INCX, BETA, Y, INCY, YT, G, YY, EPS, ERR, FATAL, NOUT, MV)
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)