2063 COMPLEX ZERO, HALF, ONE
2064 parameter( zero = ( 0.0, 0.0 ), half = ( 0.5, 0.0 ),
2065 $ one = ( 1.0, 0.0 ) )
2067 parameter( rzero = 0.0 )
2070 INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA
2071 LOGICAL FATAL, REWI, TRACE
2074 COMPLEX A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
2075 $ AS( NMAX*NMAX ), X( NMAX ), XS( NMAX*INCMAX ),
2076 $ XX( NMAX*INCMAX ), Y( NMAX ),
2077 $ YS( NMAX*INCMAX ), YT( NMAX ),
2078 $ YY( NMAX*INCMAX ), Z( NMAX, 2 )
2080 INTEGER IDIM( NIDIM ), INC( NINC )
2082 COMPLEX ALPHA, ALS, TRANSL
2084 INTEGER I, IA, IC, IN, INCX, INCXS, INCY, INCYS, IX,
2085 $ IY, J, JA, JJ, LAA, LDA, LDAS, LJ, LX, LY, N,
2087 LOGICAL FULL, NULL, PACKED, RESET, SAME, UPPER
2088 CHARACTER*1 UPLO, UPLOS
2099 INTRINSIC abs, conjg, max
2101 INTEGER INFOT, NOUTC
2104 COMMON /infoc/infot, noutc, ok, lerr
2108 full = sname( 3: 3 ).EQ.
'E'
2109 packed = sname( 3: 3 ).EQ.
'P'
2113 ELSE IF( packed )
THEN
2121 DO 140 in = 1, nidim
2131 laa = ( n*( n + 1 ) )/2
2137 uplo = ich( ic: ic )
2147 CALL cmake(
'GE',
' ',
' ', 1, n, x, 1, xx, abs( incx ),
2148 $ 0, n - 1, reset, transl )
2151 xx( 1 + abs( incx )*( n/2 - 1 ) ) = zero
2161 CALL cmake(
'GE',
' ',
' ', 1, n, y, 1, yy,
2162 $ abs( incy ), 0, n - 1, reset, transl )
2165 yy( 1 + abs( incy )*( n/2 - 1 ) ) = zero
2170 null = n.LE.0.OR.alpha.EQ.zero
2175 CALL cmake( sname( 2: 3 ), uplo,
' ', n, n, a,
2176 $ nmax, aa, lda, n - 1, n - 1, reset,
2203 $
WRITE( ntra, fmt = 9993 )nc, sname, uplo, n,
2204 $ alpha, incx, incy, lda
2207 CALL cher2( uplo, n, alpha, xx, incx, yy, incy,
2209 ELSE IF( packed )
THEN
2211 $
WRITE( ntra, fmt = 9994 )nc, sname, uplo, n,
2215 CALL chpr2( uplo, n, alpha, xx, incx, yy, incy,
2222 WRITE( nout, fmt = 9992 )
2229 isame( 1 ) = uplo.EQ.uplos
2230 isame( 2 ) = ns.EQ.n
2231 isame( 3 ) = als.EQ.alpha
2232 isame( 4 ) =
lce( xs, xx, lx )
2233 isame( 5 ) = incxs.EQ.incx
2234 isame( 6 ) =
lce( ys, yy, ly )
2235 isame( 7 ) = incys.EQ.incy
2237 isame( 8 ) =
lce( as, aa, laa )
2239 isame( 8 ) =
lceres( sname( 2: 3 ), uplo, n, n,
2242 IF( .NOT.packed )
THEN
2243 isame( 9 ) = ldas.EQ.lda
2250 same = same.AND.isame( i )
2251 IF( .NOT.isame( i ) )
2252 $
WRITE( nout, fmt = 9998 )i
2269 z( i, 1 ) = x( n - i + 1 )
2278 z( i, 2 ) = y( n - i + 1 )
2283 w( 1 ) = alpha*conjg( z( j, 2 ) )
2284 w( 2 ) = conjg( alpha )*conjg( z( j, 1 ) )
2292 CALL cmvch(
'N', lj, 2, one, z( jj, 1 ),
2293 $ nmax, w, 1, one, a( jj, j ), 1,
2294 $ yt, g, aa( ja ), eps, err, fatal,
2305 errmax = max( errmax, err )
2328 IF( errmax.LT.thresh )
THEN
2329 WRITE( nout, fmt = 9999 )sname, nc
2331 WRITE( nout, fmt = 9997 )sname, nc, errmax
2336 WRITE( nout, fmt = 9995 )j
2339 WRITE( nout, fmt = 9996 )sname
2341 WRITE( nout, fmt = 9993 )nc, sname, uplo, n, alpha, incx,
2343 ELSE IF( packed )
THEN
2344 WRITE( nout, fmt = 9994 )nc, sname, uplo, n, alpha, incx, incy
2350 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
2352 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
2353 $
'ANGED INCORRECTLY *******' )
2354 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
2355 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
2356 $
' - SUSPECT *******' )
2357 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
2358 9995
FORMAT(
' THESE ARE THE RESULTS FOR COLUMN ', i3 )
2359 9994
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', i3,
',(', f4.1,
',',
2360 $ f4.1,
'), X,', i2,
', Y,', i2,
', AP) ',
2362 9993
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', i3,
',(', f4.1,
',',
2363 $ f4.1,
'), X,', i2,
', Y,', i2,
', A,', i3,
') ',
2365 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 chpr2(UPLO, N, ALPHA, X, INCX, Y, INCY, AP)
CHPR2
subroutine cher2(UPLO, N, ALPHA, X, INCX, Y, INCY, A, LDA)
CHER2