2069 COMPLEX*16 ZERO, HALF, ONE
2070 parameter( zero = ( 0.0d0, 0.0d0 ),
2071 $ half = ( 0.5d0, 0.0d0 ),
2072 $ one = ( 1.0d0, 0.0d0 ) )
2073 DOUBLE PRECISION RZERO
2074 parameter( rzero = 0.0d0 )
2076 DOUBLE PRECISION EPS, THRESH
2077 INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA
2078 LOGICAL FATAL, REWI, TRACE
2081 COMPLEX*16 A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
2082 $ AS( NMAX*NMAX ), X( NMAX ), XS( NMAX*INCMAX ),
2083 $ XX( NMAX*INCMAX ), Y( NMAX ),
2084 $ YS( NMAX*INCMAX ), YT( NMAX ),
2085 $ YY( NMAX*INCMAX ), Z( NMAX, 2 )
2086 DOUBLE PRECISION G( NMAX )
2087 INTEGER IDIM( NIDIM ), INC( NINC )
2089 COMPLEX*16 ALPHA, ALS, TRANSL
2090 DOUBLE PRECISION ERR, ERRMAX
2091 INTEGER I, IA, IC, IN, INCX, INCXS, INCY, INCYS, IX,
2092 $ IY, J, JA, JJ, LAA, LDA, LDAS, LJ, LX, LY, N,
2094 LOGICAL FULL, NULL, PACKED, RESET, SAME, UPPER
2095 CHARACTER*1 UPLO, UPLOS
2106 INTRINSIC abs, dconjg, max
2108 INTEGER INFOT, NOUTC
2111 COMMON /infoc/infot, noutc, ok, lerr
2115 full = sname( 3: 3 ).EQ.
'E'
2116 packed = sname( 3: 3 ).EQ.
'P'
2120 ELSE IF( packed )
THEN
2128 DO 140 in = 1, nidim
2138 laa = ( n*( n + 1 ) )/2
2144 uplo = ich( ic: ic )
2154 CALL zmake(
'GE',
' ',
' ', 1, n, x, 1, xx, abs( incx ),
2155 $ 0, n - 1, reset, transl )
2158 xx( 1 + abs( incx )*( n/2 - 1 ) ) = zero
2168 CALL zmake(
'GE',
' ',
' ', 1, n, y, 1, yy,
2169 $ abs( incy ), 0, n - 1, reset, transl )
2172 yy( 1 + abs( incy )*( n/2 - 1 ) ) = zero
2177 null = n.LE.0.OR.alpha.EQ.zero
2182 CALL zmake( sname( 2: 3 ), uplo,
' ', n, n, a,
2183 $ nmax, aa, lda, n - 1, n - 1, reset,
2210 $
WRITE( ntra, fmt = 9993 )nc, sname, uplo, n,
2211 $ alpha, incx, incy, lda
2214 CALL zher2( uplo, n, alpha, xx, incx, yy, incy,
2216 ELSE IF( packed )
THEN
2218 $
WRITE( ntra, fmt = 9994 )nc, sname, uplo, n,
2222 CALL zhpr2( uplo, n, alpha, xx, incx, yy, incy,
2229 WRITE( nout, fmt = 9992 )
2236 isame( 1 ) = uplo.EQ.uplos
2237 isame( 2 ) = ns.EQ.n
2238 isame( 3 ) = als.EQ.alpha
2239 isame( 4 ) =
lze( xs, xx, lx )
2240 isame( 5 ) = incxs.EQ.incx
2241 isame( 6 ) =
lze( ys, yy, ly )
2242 isame( 7 ) = incys.EQ.incy
2244 isame( 8 ) =
lze( as, aa, laa )
2246 isame( 8 ) =
lzeres( sname( 2: 3 ), uplo, n, n,
2249 IF( .NOT.packed )
THEN
2250 isame( 9 ) = ldas.EQ.lda
2257 same = same.AND.isame( i )
2258 IF( .NOT.isame( i ) )
2259 $
WRITE( nout, fmt = 9998 )i
2276 z( i, 1 ) = x( n - i + 1 )
2285 z( i, 2 ) = y( n - i + 1 )
2290 w( 1 ) = alpha*dconjg( z( j, 2 ) )
2291 w( 2 ) = dconjg( alpha )*dconjg( z( j, 1 ) )
2299 CALL zmvch(
'N', lj, 2, one, z( jj, 1 ),
2300 $ nmax, w, 1, one, a( jj, j ), 1,
2301 $ yt, g, aa( ja ), eps, err, fatal,
2312 errmax = max( errmax, err )
2335 IF( errmax.LT.thresh )
THEN
2336 WRITE( nout, fmt = 9999 )sname, nc
2338 WRITE( nout, fmt = 9997 )sname, nc, errmax
2343 WRITE( nout, fmt = 9995 )j
2346 WRITE( nout, fmt = 9996 )sname
2348 WRITE( nout, fmt = 9993 )nc, sname, uplo, n, alpha, incx,
2350 ELSE IF( packed )
THEN
2351 WRITE( nout, fmt = 9994 )nc, sname, uplo, n, alpha, incx, incy
2357 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
2359 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
2360 $
'ANGED INCORRECTLY *******' )
2361 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
2362 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
2363 $
' - SUSPECT *******' )
2364 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
2365 9995
FORMAT(
' THESE ARE THE RESULTS FOR COLUMN ', i3 )
2366 9994
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', i3,
',(', f4.1,
',',
2367 $ f4.1,
'), X,', i2,
', Y,', i2,
', AP) ',
2369 9993
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', i3,
',(', f4.1,
',',
2370 $ f4.1,
'), X,', i2,
', Y,', i2,
', A,', i3,
') ',
2372 9992
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
subroutine zhpr2(UPLO, N, ALPHA, X, INCX, Y, INCY, AP)
ZHPR2
subroutine zher2(UPLO, N, ALPHA, X, INCX, Y, INCY, A, LDA)
ZHER2
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)