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 *',