795 COMPLEX*16 ZERO, HALF
796 parameter( zero = ( 0.0d0, 0.0d0 ),
797 $ half = ( 0.5d0, 0.0d0 ) )
798 DOUBLE PRECISION RZERO
799 parameter( rzero = 0.0d0 )
801 DOUBLE PRECISION EPS, THRESH
802 INTEGER INCMAX, NALF, NBET, NIDIM, NINC, NKB, NMAX,
804 LOGICAL FATAL, REWI, TRACE
807 COMPLEX*16 A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
808 $ AS( NMAX*NMAX ), BET( NBET ), X( NMAX ),
809 $ XS( NMAX*INCMAX ), XX( NMAX*INCMAX ),
810 $ Y( NMAX ), YS( NMAX*INCMAX ), YT( NMAX ),
812 DOUBLE PRECISION G( NMAX )
813 INTEGER IDIM( NIDIM ), INC( NINC ), KB( NKB )
815 COMPLEX*16 ALPHA, ALS, BETA, BLS, TRANSL
816 DOUBLE PRECISION ERR, ERRMAX
817 INTEGER I, IA, IB, IC, IK, IN, INCX, INCXS, INCY,
818 $ INCYS, IX, IY, K, KS, LAA, LDA, LDAS, LX, LY,
819 $ N, NARGS, NC, NK, NS
820 LOGICAL BANDED, FULL, NULL, PACKED, RESET, SAME
821 CHARACTER*1 UPLO, UPLOS
836 COMMON /infoc/infot, noutc, ok, lerr
840 full = sname( 3: 3 ).EQ.
'E'
841 banded = sname( 3: 3 ).EQ.
'B'
842 packed = sname( 3: 3 ).EQ.
'P'
846 ELSE IF( banded )
THEN
848 ELSE IF( packed )
THEN
882 laa = ( n*( n + 1 ) )/2
894 CALL zmake( sname( 2: 3 ), uplo,
' ', n, n, a, nmax, aa,
895 $ lda, k, k, reset, transl )
904 CALL zmake(
'GE',
' ',
' ', 1, n, x, 1, xx,
905 $ abs( incx ), 0, n - 1, reset, transl )
908 xx( 1 + abs( incx )*( n/2 - 1 ) ) = zero
924 CALL zmake(
'GE',
' ',
' ', 1, n, y, 1, yy,
925 $ abs( incy ), 0, n - 1, reset,
955 $
WRITE( ntra, fmt = 9993 )nc, sname,
956 $ uplo, n, alpha, lda, incx, beta, incy
959 CALL zhemv( uplo, n, alpha, aa, lda, xx,
960 $ incx, beta, yy, incy )
961 ELSE IF( banded )
THEN
963 $
WRITE( ntra, fmt = 9994 )nc, sname,
964 $ uplo, n, k, alpha, lda, incx, beta,
968 CALL zhbmv( uplo, n, k, alpha, aa, lda,
969 $ xx, incx, beta, yy, incy )
970 ELSE IF( packed )
THEN
972 $
WRITE( ntra, fmt = 9995 )nc, sname,
973 $ uplo, n, alpha, incx, beta, incy
976 CALL zhpmv( uplo, n, alpha, aa, xx, incx,
983 WRITE( nout, fmt = 9992 )
990 isame( 1 ) = uplo.EQ.uplos
993 isame( 3 ) = als.EQ.alpha
994 isame( 4 ) =
lze( as, aa, laa )
995 isame( 5 ) = ldas.EQ.lda
996 isame( 6 ) =
lze( xs, xx, lx )
997 isame( 7 ) = incxs.EQ.incx
998 isame( 8 ) = bls.EQ.beta
1000 isame( 9 ) =
lze( ys, yy, ly )
1002 isame( 9 ) =
lzeres(
'GE',
' ', 1, n,
1003 $ ys, yy, abs( incy ) )
1005 isame( 10 ) = incys.EQ.incy
1006 ELSE IF( banded )
THEN
1007 isame( 3 ) = ks.EQ.k
1008 isame( 4 ) = als.EQ.alpha
1009 isame( 5 ) =
lze( as, aa, laa )
1010 isame( 6 ) = ldas.EQ.lda
1011 isame( 7 ) =
lze( xs, xx, lx )
1012 isame( 8 ) = incxs.EQ.incx
1013 isame( 9 ) = bls.EQ.beta
1015 isame( 10 ) =
lze( ys, yy, ly )
1017 isame( 10 ) =
lzeres(
'GE',
' ', 1, n,
1018 $ ys, yy, abs( incy ) )
1020 isame( 11 ) = incys.EQ.incy
1021 ELSE IF( packed )
THEN
1022 isame( 3 ) = als.EQ.alpha
1023 isame( 4 ) =
lze( as, aa, laa )
1024 isame( 5 ) =
lze( xs, xx, lx )
1025 isame( 6 ) = incxs.EQ.incx
1026 isame( 7 ) = bls.EQ.beta
1028 isame( 8 ) =
lze( ys, yy, ly )
1030 isame( 8 ) =
lzeres(
'GE',
' ', 1, n,
1031 $ ys, yy, abs( incy ) )
1033 isame( 9 ) = incys.EQ.incy
1041 same = same.AND.isame( i )
1042 IF( .NOT.isame( i ) )
1043 $
WRITE( nout, fmt = 9998 )i
1054 CALL zmvch(
'N', n, n, alpha, a, nmax, x,
1055 $ incx, beta, y, incy, yt, g,
1056 $ yy, eps, err, fatal, nout,
1058 errmax = max( errmax, err )
1084 IF( errmax.LT.thresh )
THEN
1085 WRITE( nout, fmt = 9999 )sname, nc
1087 WRITE( nout, fmt = 9997 )sname, nc, errmax
1092 WRITE( nout, fmt = 9996 )sname
1094 WRITE( nout, fmt = 9993 )nc, sname, uplo, n, alpha, lda, incx,
1096 ELSE IF( banded )
THEN
1097 WRITE( nout, fmt = 9994 )nc, sname, uplo, n, k, alpha, lda,
1099 ELSE IF( packed )
THEN
1100 WRITE( nout, fmt = 9995 )nc, sname, uplo, n, alpha, incx,
1107 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
1109 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
1110 $
'ANGED INCORRECTLY *******' )
1111 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
1112 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
1113 $
' - SUSPECT *******' )
1114 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
1115 9995
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', i3,
',(', f4.1,
',',
1116 $ f4.1,
'), AP, X,', i2,
',(', f4.1,
',', f4.1,
'), Y,', i2,
1118 9994
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', 2( i3,
',' ),
'(',
1119 $ f4.1,
',', f4.1,
'), A,', i3,
', X,', i2,
',(', f4.1,
',',
1120 $ f4.1,
'), Y,', i2,
') .' )
1121 9993
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', i3,
',(', f4.1,
',',
1122 $ f4.1,
'), A,', i3,
', X,', i2,
',(', f4.1,
',', f4.1,
'), ',
1124 9992
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
subroutine zhemv(UPLO, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
ZHEMV
subroutine zhbmv(UPLO, N, K, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
ZHBMV
subroutine zhpmv(UPLO, N, ALPHA, AP, X, INCX, BETA, Y, INCY)
ZHPMV
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)