832 COMPLEX*16 zero, half
833 parameter ( zero = ( 0.0d0, 0.0d0 ),
834 $ half = ( 0.5d0, 0.0d0 ) )
835 DOUBLE PRECISION rzero
836 parameter ( rzero = 0.0d0 )
838 DOUBLE PRECISION eps, thresh
839 INTEGER incmax, nalf, nbet, nidim, ninc, nkb, nmax,
841 LOGICAL fatal, rewi, trace
844 COMPLEX*16 a( nmax, nmax ), aa( nmax*nmax ), alf( nalf ),
845 $ as( nmax*nmax ), bet( nbet ), x( nmax ),
846 $ xs( nmax*incmax ), xx( nmax*incmax ),
847 $ y( nmax ), ys( nmax*incmax ), yt( nmax ),
849 DOUBLE PRECISION g( nmax )
850 INTEGER idim( nidim ), inc( ninc ), kb( nkb )
852 COMPLEX*16 alpha, als, beta, bls, transl
853 DOUBLE PRECISION err, errmax
854 INTEGER i, ia, ib, ic, ik, in, incx, incxs, incy,
855 $ incys, ix, iy, k, ks, laa, lda, ldas, lx, ly,
856 $ n, nargs, nc, nk, ns
857 LOGICAL banded, full, null, packed, reset, same
858 CHARACTER*1 uplo, uplos
874 COMMON /infoc/infot, noutc, ok
878 full = sname( 9: 9 ).EQ.
'e'
879 banded = sname( 9: 9 ).EQ.
'b'
880 packed = sname( 9: 9 ).EQ.
'p'
884 ELSE IF( banded )
THEN
886 ELSE IF( packed )
THEN
920 laa = ( n*( n + 1 ) )/2
929 cuplo =
' CblasUpper'
931 cuplo =
' CblasLower'
937 CALL zmake( sname( 8: 9 ), uplo,
' ', n, n, a, nmax, aa,
938 $ lda, k, k, reset, transl )
947 CALL zmake(
'ge',
' ',
' ', 1, n, x, 1, xx,
948 $ abs( incx ), 0, n - 1, reset, transl )
951 xx( 1 + abs( incx )*( n/2 - 1 ) ) = zero
967 CALL zmake(
'ge',
' ',
' ', 1, n, y, 1, yy,
968 $ abs( incy ), 0, n - 1, reset,
998 $
WRITE( ntra, fmt = 9993 )nc, sname,
999 $ cuplo, n, alpha, lda, incx, beta, incy
1002 CALL czhemv( iorder, uplo, n, alpha, aa,
1003 $ lda, xx, incx, beta, yy,
1005 ELSE IF( banded )
THEN
1007 $
WRITE( ntra, fmt = 9994 )nc, sname,
1008 $ cuplo, n, k, alpha, lda, incx, beta,
1012 CALL czhbmv( iorder, uplo, n, k, alpha,
1013 $ aa, lda, xx, incx, beta,
1015 ELSE IF( packed )
THEN
1017 $
WRITE( ntra, fmt = 9995 )nc, sname,
1018 $ cuplo, n, alpha, incx, beta, incy
1021 CALL czhpmv( iorder, uplo, n, alpha, aa,
1022 $ xx, incx, beta, yy, incy )
1028 WRITE( nout, fmt = 9992 )
1035 isame( 1 ) = uplo.EQ.uplos
1036 isame( 2 ) = ns.EQ.n
1038 isame( 3 ) = als.EQ.alpha
1039 isame( 4 ) =
lze( as, aa, laa )
1040 isame( 5 ) = ldas.EQ.lda
1041 isame( 6 ) =
lze( xs, xx, lx )
1042 isame( 7 ) = incxs.EQ.incx
1043 isame( 8 ) = bls.EQ.beta
1045 isame( 9 ) =
lze( ys, yy, ly )
1047 isame( 9 ) =
lzeres(
'ge',
' ', 1, n,
1048 $ ys, yy, abs( incy ) )
1050 isame( 10 ) = incys.EQ.incy
1051 ELSE IF( banded )
THEN
1052 isame( 3 ) = ks.EQ.k
1053 isame( 4 ) = als.EQ.alpha
1054 isame( 5 ) =
lze( as, aa, laa )
1055 isame( 6 ) = ldas.EQ.lda
1056 isame( 7 ) =
lze( xs, xx, lx )
1057 isame( 8 ) = incxs.EQ.incx
1058 isame( 9 ) = bls.EQ.beta
1060 isame( 10 ) =
lze( ys, yy, ly )
1062 isame( 10 ) =
lzeres(
'ge',
' ', 1, n,
1063 $ ys, yy, abs( incy ) )
1065 isame( 11 ) = incys.EQ.incy
1066 ELSE IF( packed )
THEN
1067 isame( 3 ) = als.EQ.alpha
1068 isame( 4 ) =
lze( as, aa, laa )
1069 isame( 5 ) =
lze( xs, xx, lx )
1070 isame( 6 ) = incxs.EQ.incx
1071 isame( 7 ) = bls.EQ.beta
1073 isame( 8 ) =
lze( ys, yy, ly )
1075 isame( 8 ) =
lzeres(
'ge',
' ', 1, n,
1076 $ ys, yy, abs( incy ) )
1078 isame( 9 ) = incys.EQ.incy
1086 same = same.AND.isame( i )
1087 IF( .NOT.isame( i ) )
1088 $
WRITE( nout, fmt = 9998 )i
1099 CALL zmvch(
'N', n, n, alpha, a, nmax, x,
1100 $ incx, beta, y, incy, yt, g,
1101 $ yy, eps, err, fatal, nout,
1103 errmax = max( errmax, err )
1129 IF( errmax.LT.thresh )
THEN
1130 WRITE( nout, fmt = 9999 )sname, nc
1132 WRITE( nout, fmt = 9997 )sname, nc, errmax
1137 WRITE( nout, fmt = 9996 )sname
1139 WRITE( nout, fmt = 9993 )nc, sname, cuplo, n, alpha, lda, incx,
1141 ELSE IF( banded )
THEN
1142 WRITE( nout, fmt = 9994 )nc, sname, cuplo, n, k, alpha, lda,
1144 ELSE IF( packed )
THEN
1145 WRITE( nout, fmt = 9995 )nc, sname, cuplo, n, alpha, incx,
1152 9999
FORMAT(
' ',a12,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
1154 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
1155 $
'ANGED INCORRECTLY *******' )
1156 9997
FORMAT(
' ',a12,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
1157 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
1158 $
' - SUSPECT *******' )
1159 9996
FORMAT(
' ******* ',a12,
' FAILED ON CALL NUMBER:' )
1160 9995
FORMAT( 1x, i6,
': ',a12,
'(', a14,
',', i3,
',(', f4.1,
',',
1161 $ f4.1,
'), AP, X,',/ 10x, i2,
',(', f4.1,
',', f4.1,
1162 $
'), Y,', i2,
') .' )
1163 9994
FORMAT( 1x, i6,
': ',a12,
'(', a14,
',', 2( i3,
',' ),
'(',
1164 $ f4.1,
',', f4.1,
'), A,', i3,
', X,',/ 10x, i2,
',(',
1165 $ f4.1,
',', f4.1,
'), Y,', i2,
') .' )
1166 9993
FORMAT( 1x, i6,
': ',a12,
'(', a14,
',', i3,
',(', f4.1,
',',
1167 $ f4.1,
'), A,', i3,
', X,',/ 10x, i2,
',(', f4.1,
',',
1168 $ f4.1,
'), ',
'Y,', i2,
') .' )
1169 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)
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)