1787 COMPLEX*16 zero, half, one
1788 parameter ( zero = ( 0.0d0, 0.0d0 ),
1789 $ half = ( 0.5d0, 0.0d0 ),
1790 $ one = ( 1.0d0, 0.0d0 ) )
1791 DOUBLE PRECISION rzero
1792 parameter ( rzero = 0.0d0 )
1794 DOUBLE PRECISION eps, thresh
1795 INTEGER incmax, nalf, nidim, ninc, nmax, nout, ntra
1796 LOGICAL fatal, rewi, trace
1799 COMPLEX*16 a( nmax, nmax ), aa( nmax*nmax ), alf( nalf ),
1800 $ as( nmax*nmax ), x( nmax ), xs( nmax*incmax ),
1801 $ xx( nmax*incmax ), y( nmax ),
1802 $ ys( nmax*incmax ), yt( nmax ),
1803 $ yy( nmax*incmax ), z( nmax )
1804 DOUBLE PRECISION g( nmax )
1805 INTEGER idim( nidim ), inc( ninc )
1807 COMPLEX*16 alpha, transl
1808 DOUBLE PRECISION err, errmax, ralpha, rals
1809 INTEGER i, ia, ic, in, incx, incxs, ix, j, ja, jj, laa,
1810 $ lda, ldas, lj, lx, n, nargs, nc, ns
1811 LOGICAL full, null, packed, reset, same, upper
1812 CHARACTER*1 uplo, uplos
1823 INTRINSIC abs, dble, dcmplx, dconjg, max
1825 INTEGER infot, noutc
1828 COMMON /infoc/infot, noutc, ok, lerr
1832 full = sname( 3: 3 ).EQ.
'E'
1833 packed = sname( 3: 3 ).EQ.
'P'
1837 ELSE IF( packed )
THEN
1845 DO 100 in = 1, nidim
1855 laa = ( n*( n + 1 ) )/2
1861 uplo = ich( ic: ic )
1871 CALL zmake(
'GE',
' ',
' ', 1, n, x, 1, xx, abs( incx ),
1872 $ 0, n - 1, reset, transl )
1875 xx( 1 + abs( incx )*( n/2 - 1 ) ) = zero
1879 ralpha = dble( alf( ia ) )
1880 alpha = dcmplx( ralpha, rzero )
1881 null = n.LE.0.OR.ralpha.EQ.rzero
1886 CALL zmake( sname( 2: 3 ), uplo,
' ', n, n, a, nmax,
1887 $ aa, lda, n - 1, n - 1, reset, transl )
1909 $
WRITE( ntra, fmt = 9993 )nc, sname, uplo, n,
1913 CALL zher( uplo, n, ralpha, xx, incx, aa, lda )
1914 ELSE IF( packed )
THEN
1916 $
WRITE( ntra, fmt = 9994 )nc, sname, uplo, n,
1920 CALL zhpr( uplo, n, ralpha, xx, incx, aa )
1926 WRITE( nout, fmt = 9992 )
1933 isame( 1 ) = uplo.EQ.uplos
1934 isame( 2 ) = ns.EQ.n
1935 isame( 3 ) = rals.EQ.ralpha
1936 isame( 4 ) =
lze( xs, xx, lx )
1937 isame( 5 ) = incxs.EQ.incx
1939 isame( 6 ) =
lze( as, aa, laa )
1941 isame( 6 ) =
lzeres( sname( 2: 3 ), uplo, n, n, as,
1944 IF( .NOT.packed )
THEN
1945 isame( 7 ) = ldas.EQ.lda
1952 same = same.AND.isame( i )
1953 IF( .NOT.isame( i ) )
1954 $
WRITE( nout, fmt = 9998 )i
1971 z( i ) = x( n - i + 1 )
1976 w( 1 ) = dconjg( z( j ) )
1984 CALL zmvch(
'N', lj, 1, alpha, z( jj ), lj, w,
1985 $ 1, one, a( jj, j ), 1, yt, g,
1986 $ aa( ja ), eps, err, fatal, nout,
1997 errmax = max( errmax, err )
2018 IF( errmax.LT.thresh )
THEN
2019 WRITE( nout, fmt = 9999 )sname, nc
2021 WRITE( nout, fmt = 9997 )sname, nc, errmax
2026 WRITE( nout, fmt = 9995 )j
2029 WRITE( nout, fmt = 9996 )sname
2031 WRITE( nout, fmt = 9993 )nc, sname, uplo, n, ralpha, incx, lda
2032 ELSE IF( packed )
THEN
2033 WRITE( nout, fmt = 9994 )nc, sname, uplo, n, ralpha, incx
2039 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
2041 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
2042 $
'ANGED INCORRECTLY *******' )
2043 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
2044 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
2045 $
' - SUSPECT *******' )
2046 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
2047 9995
FORMAT(
' THESE ARE THE RESULTS FOR COLUMN ', i3 )
2048 9994
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', i3,
',', f4.1,
', X,',
2050 9993
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', i3,
',', f4.1,
', X,',
2051 $ i2,
', A,', i3,
') .' )
2052 9992
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
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)
subroutine zher(UPLO, N, ALPHA, X, INCX, A, LDA)
ZHER
subroutine zhpr(UPLO, N, ALPHA, X, INCX, AP)
ZHPR
logical function lze(RI, RJ, LR)
subroutine zmvch(TRANS, M, N, ALPHA, A, NMAX, X, INCX, BETA, Y, INCY, YT, G, YY, EPS, ERR, FATAL, NOUT, MV)