1779 COMPLEX ZERO, HALF, ONE
1780 parameter( zero = ( 0.0, 0.0 ), half = ( 0.5, 0.0 ),
1781 $ one = ( 1.0, 0.0 ) )
1783 parameter( rzero = 0.0 )
1786 INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA
1787 LOGICAL FATAL, REWI, TRACE
1790 COMPLEX A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
1791 $ AS( NMAX*NMAX ), X( NMAX ), XS( NMAX*INCMAX ),
1792 $ XX( NMAX*INCMAX ), Y( NMAX ),
1793 $ YS( NMAX*INCMAX ), YT( NMAX ),
1794 $ YY( NMAX*INCMAX ), Z( NMAX )
1796 INTEGER IDIM( NIDIM ), INC( NINC )
1798 COMPLEX ALPHA, TRANSL
1799 REAL ERR, ERRMAX, RALPHA, RALS
1800 INTEGER I, IA, IC, IN, INCX, INCXS, IX, J, JA, JJ, LAA,
1801 $ LDA, LDAS, LJ, LX, N, NARGS, NC, NS
1802 LOGICAL FULL, NULL, PACKED, RESET, SAME, UPPER
1803 CHARACTER*1 UPLO, UPLOS
1814 INTRINSIC abs, cmplx, conjg, max, real
1816 INTEGER INFOT, NOUTC
1819 COMMON /infoc/infot, noutc, ok, lerr
1823 full = sname( 3: 3 ).EQ.
'E'
1824 packed = sname( 3: 3 ).EQ.
'P'
1828 ELSE IF( packed )
THEN
1836 DO 100 in = 1, nidim
1846 laa = ( n*( n + 1 ) )/2
1852 uplo = ich( ic: ic )
1862 CALL cmake(
'GE',
' ',
' ', 1, n, x, 1, xx, abs( incx ),
1863 $ 0, n - 1, reset, transl )
1866 xx( 1 + abs( incx )*( n/2 - 1 ) ) = zero
1870 ralpha = real( alf( ia ) )
1871 alpha = cmplx( ralpha, rzero )
1872 null = n.LE.0.OR.ralpha.EQ.rzero
1877 CALL cmake( sname( 2: 3 ), uplo,
' ', n, n, a, nmax,
1878 $ aa, lda, n - 1, n - 1, reset, transl )
1900 $
WRITE( ntra, fmt = 9993 )nc, sname, uplo, n,
1904 CALL cher( uplo, n, ralpha, xx, incx, aa, lda )
1905 ELSE IF( packed )
THEN
1907 $
WRITE( ntra, fmt = 9994 )nc, sname, uplo, n,
1911 CALL chpr( uplo, n, ralpha, xx, incx, aa )
1917 WRITE( nout, fmt = 9992 )
1924 isame( 1 ) = uplo.EQ.uplos
1925 isame( 2 ) = ns.EQ.n
1926 isame( 3 ) = rals.EQ.ralpha
1927 isame( 4 ) =
lce( xs, xx, lx )
1928 isame( 5 ) = incxs.EQ.incx
1930 isame( 6 ) =
lce( as, aa, laa )
1932 isame( 6 ) =
lceres( sname( 2: 3 ), uplo, n, n, as,
1935 IF( .NOT.packed )
THEN
1936 isame( 7 ) = ldas.EQ.lda
1943 same = same.AND.isame( i )
1944 IF( .NOT.isame( i ) )
1945 $
WRITE( nout, fmt = 9998 )i
1962 z( i ) = x( n - i + 1 )
1967 w( 1 ) = conjg( z( j ) )
1975 CALL cmvch(
'N', lj, 1, alpha, z( jj ), lj, w,
1976 $ 1, one, a( jj, j ), 1, yt, g,
1977 $ aa( ja ), eps, err, fatal, nout,
1988 errmax = max( errmax, err )
2009 IF( errmax.LT.thresh )
THEN
2010 WRITE( nout, fmt = 9999 )sname, nc
2012 WRITE( nout, fmt = 9997 )sname, nc, errmax
2017 WRITE( nout, fmt = 9995 )j
2020 WRITE( nout, fmt = 9996 )sname
2022 WRITE( nout, fmt = 9993 )nc, sname, uplo, n, ralpha, incx, lda
2023 ELSE IF( packed )
THEN
2024 WRITE( nout, fmt = 9994 )nc, sname, uplo, n, ralpha, incx
2030 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
2032 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
2033 $
'ANGED INCORRECTLY *******' )
2034 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
2035 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
2036 $
' - SUSPECT *******' )
2037 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
2038 9995
FORMAT(
' THESE ARE THE RESULTS FOR COLUMN ', i3 )
2039 9994
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', i3,
',', f4.1,
', X,',
2041 9993
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', i3,
',', f4.1,
', X,',
2042 $ i2,
', A,', i3,
') .' )
2043 9992
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
subroutine cmake(TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL, KU, RESET, TRANSL)
logical function lce(RI, RJ, LR)
logical function lceres(TYPE, UPLO, M, N, AA, AS, LDA)
subroutine cmvch(TRANS, M, N, ALPHA, A, NMAX, X, INCX, BETA, Y, INCY, YT, G, YY, EPS, ERR, FATAL, NOUT, MV)
subroutine chpr(UPLO, N, ALPHA, X, INCX, AP)
CHPR
subroutine cher(UPLO, N, ALPHA, X, INCX, A, LDA)
CHER