1868 COMPLEX*16 zero, one
1869 parameter ( zero = ( 0.0d0, 0.0d0 ), one = ( 1.0d0, 0.0d0 ) )
1870 DOUBLE PRECISION rone, rzero
1871 parameter ( rone = 1.0d0, rzero = 0.0d0 )
1873 DOUBLE PRECISION eps, thresh
1874 INTEGER nalf, nbet, nidim, nmax, nout, ntra, iorder
1875 LOGICAL fatal, rewi, trace
1878 COMPLEX*16 aa( nmax*nmax ), ab( 2*nmax*nmax ),
1879 $ alf( nalf ), as( nmax*nmax ), bb( nmax*nmax ),
1880 $ bet( nbet ), bs( nmax*nmax ), c( nmax, nmax ),
1881 $ cc( nmax*nmax ), cs( nmax*nmax ), ct( nmax ),
1883 DOUBLE PRECISION g( nmax )
1884 INTEGER idim( nidim )
1886 COMPLEX*16 alpha, als, beta, bets
1887 DOUBLE PRECISION err, errmax, rbeta, rbets
1888 INTEGER i, ia, ib, ict, icu, ik, in, j, jc, jj, jjab,
1889 $ k, ks, laa, lbb, lcc, lda, ldas, ldb, ldbs,
1890 $ ldc, ldcs, lj, ma, n, na, nargs, nc, ns
1891 LOGICAL conj, null, reset, same, tran, upper
1892 CHARACTER*1 trans, transs, transt, uplo, uplos
1893 CHARACTER*2 icht, ichu
1902 INTRINSIC dcmplx, dconjg, max, dble
1904 INTEGER infot, noutc
1907 COMMON /infoc/infot, noutc, ok, lerr
1909 DATA icht/
'NC'/, ichu/
'UL'/
1911 conj = sname( 8: 9 ).EQ.
'he'
1918 DO 130 in = 1, nidim
1929 DO 120 ik = 1, nidim
1933 trans = icht( ict: ict )
1935 IF( tran.AND..NOT.conj )
1956 CALL zmake(
'ge',
' ',
' ', ma, na, ab, 2*nmax, aa,
1957 $ lda, reset, zero )
1959 CALL zmake(
'ge',
' ',
' ', ma, na, ab, nmax, aa, lda,
1968 CALL zmake(
'ge',
' ',
' ', ma, na, ab( k + 1 ),
1969 $ 2*nmax, bb, ldb, reset, zero )
1971 CALL zmake(
'ge',
' ',
' ', ma, na, ab( k*nmax + 1 ),
1972 $ nmax, bb, ldb, reset, zero )
1976 uplo = ichu( icu: icu )
1985 rbeta = dble( beta )
1986 beta = dcmplx( rbeta, rzero )
1990 $ null = null.OR.( ( k.LE.0.OR.alpha.EQ.
1991 $ zero ).AND.rbeta.EQ.rone )
1995 CALL zmake( sname( 8: 9 ), uplo,
' ', n, n, c,
1996 $ nmax, cc, ldc, reset, zero )
2029 $
CALL zprcn7( ntra, nc, sname, iorder,
2030 $ uplo, trans, n, k, alpha, lda, ldb,
2034 CALL czher2k( iorder, uplo, trans, n, k,
2035 $ alpha, aa, lda, bb, ldb, rbeta,
2039 $
CALL zprcn5( ntra, nc, sname, iorder,
2040 $ uplo, trans, n, k, alpha, lda, ldb,
2044 CALL czsyr2k( iorder, uplo, trans, n, k,
2045 $ alpha, aa, lda, bb, ldb, beta,
2052 WRITE( nout, fmt = 9992 )
2059 isame( 1 ) = uplos.EQ.uplo
2060 isame( 2 ) = transs.EQ.trans
2061 isame( 3 ) = ns.EQ.n
2062 isame( 4 ) = ks.EQ.k
2063 isame( 5 ) = als.EQ.alpha
2064 isame( 6 ) =
lze( as, aa, laa )
2065 isame( 7 ) = ldas.EQ.lda
2066 isame( 8 ) =
lze( bs, bb, lbb )
2067 isame( 9 ) = ldbs.EQ.ldb
2069 isame( 10 ) = rbets.EQ.rbeta
2071 isame( 10 ) = bets.EQ.beta
2074 isame( 11 ) =
lze( cs, cc, lcc )
2076 isame( 11 ) =
lzeres(
'he', uplo, n, n, cs,
2079 isame( 12 ) = ldcs.EQ.ldc
2086 same = same.AND.isame( i )
2087 IF( .NOT.isame( i ) )
2088 $
WRITE( nout, fmt = 9998 )i
2116 w( i ) = alpha*ab( ( j - 1 )*2*
2119 w( k + i ) = dconjg( alpha )*
2128 CALL zmmch( transt,
'N', lj, 1, 2*k,
2129 $ one, ab( jjab ), 2*nmax, w,
2130 $ 2*nmax, beta, c( jj, j ),
2131 $ nmax, ct, g, cc( jc ), ldc,
2132 $ eps, err, fatal, nout,
2137 w( i ) = alpha*dconjg( ab( ( k +
2138 $ i - 1 )*nmax + j ) )
2139 w( k + i ) = dconjg( alpha*
2140 $ ab( ( i - 1 )*nmax +
2143 w( i ) = alpha*ab( ( k + i - 1 )*
2146 $ ab( ( i - 1 )*nmax +
2150 CALL zmmch(
'N',
'N', lj, 1, 2*k, one,
2151 $ ab( jj ), nmax, w, 2*nmax,
2152 $ beta, c( jj, j ), nmax, ct,
2153 $ g, cc( jc ), ldc, eps, err,
2154 $ fatal, nout, .true. )
2161 $ jjab = jjab + 2*nmax
2163 errmax = max( errmax, err )
2185 IF( errmax.LT.thresh )
THEN
2186 IF ( iorder.EQ.0)
WRITE( nout, fmt = 10000 )sname, nc
2187 IF ( iorder.EQ.1)
WRITE( nout, fmt = 10001 )sname, nc
2189 IF ( iorder.EQ.0)
WRITE( nout, fmt = 10002 )sname, nc, errmax
2190 IF ( iorder.EQ.1)
WRITE( nout, fmt = 10003 )sname, nc, errmax
2196 $
WRITE( nout, fmt = 9995 )j
2199 WRITE( nout, fmt = 9996 )sname
2201 CALL zprcn7( nout, nc, sname, iorder, uplo, trans, n, k,
2202 $ alpha, lda, ldb, rbeta, ldc)
2204 CALL zprcn5( nout, nc, sname, iorder, uplo, trans, n, k,
2205 $ alpha, lda, ldb, beta, ldc)
2211 10003
FORMAT(
' ', a12,
' COMPLETED THE ROW-MAJOR COMPUTATIONAL ',
2212 $
'TESTS (', i6,
' CALLS)', /
' ******* BUT WITH MAXIMUM TEST ',
2213 $
'RATIO ', f8.2,
' - SUSPECT *******' )
2214 10002
FORMAT(
' ', a12,
' COMPLETED THE COLUMN-MAJOR COMPUTATIONAL ',
2215 $
'TESTS (', i6,
' CALLS)', /
' ******* BUT WITH MAXIMUM TEST ',
2216 $
'RATIO ', f8.2,
' - SUSPECT *******' )
2217 10001
FORMAT(
' ', a12,
' PASSED THE ROW-MAJOR COMPUTATIONAL TESTS',
2218 $
' (', i6,
' CALL',
'S)' )
2219 10000
FORMAT(
' ', a12,
' PASSED THE COLUMN-MAJOR COMPUTATIONAL TESTS',
2220 $
' (', i6,
' CALL',
'S)' )
2221 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
2222 $
'ANGED INCORRECTLY *******' )
2223 9996
FORMAT(
' ******* ', a12,
' FAILED ON CALL NUMBER:' )
2224 9995
FORMAT(
' THESE ARE THE RESULTS FOR COLUMN ', i3 )
2225 9994
FORMAT(1x, i6,
': ', a12,
'(', 2(
'''', a1,
''',' ), 2( i3,
',' ),
2226 $
'(', f4.1,
',', f4.1,
'), A,', i3,
', B,', i3,
',', f4.1,
2227 $
', C,', i3,
') .' )
2228 9993
FORMAT(1x, i6,
': ', a12,
'(', 2(
'''', a1,
''',' ), 2( i3,
',' ),
2229 $
'(', f4.1,
',', f4.1,
'), A,', i3,
', B,', i3,
',(', f4.1,
2230 $
',', f4.1,
'), C,', i3,
') .' )
2231 9992
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
logical function lzeres(TYPE, UPLO, M, N, AA, AS, LDA)
subroutine zmmch(TRANSA, TRANSB, M, N, KK, ALPHA, A, LDA, B, LDB, BETA, C, LDC, CT, G, CC, LDCC, EPS, ERR, FATAL, NOUT, MV)
subroutine zprcn5(NOUT, NC, SNAME, IORDER, UPLO, TRANSA, N, K, ALPHA, LDA, LDB, BETA, LDC)
subroutine zprcn7(NOUT, NC, SNAME, IORDER, UPLO, TRANSA, N, K, ALPHA, LDA, LDB, BETA, LDC)
subroutine zmake(TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL, KU, RESET, TRANSL)
logical function lze(RI, RJ, LR)