1868 parameter ( zero = ( 0.0, 0.0 ), one = ( 1.0, 0.0 ) )
1870 parameter ( rone = 1.0, rzero = 0.0 )
1873 INTEGER nalf, nbet, nidim, nmax, nout, ntra, iorder
1874 LOGICAL fatal, rewi, trace
1877 COMPLEX aa( nmax*nmax ), ab( 2*nmax*nmax ),
1878 $ alf( nalf ), as( nmax*nmax ), bb( nmax*nmax ),
1879 $ bet( nbet ), bs( nmax*nmax ), c( nmax, nmax ),
1880 $ cc( nmax*nmax ), cs( nmax*nmax ), ct( nmax ),
1883 INTEGER idim( nidim )
1885 COMPLEX alpha, als, beta, bets
1886 REAL err, errmax, rbeta, rbets
1887 INTEGER i, ia, ib, ict, icu, ik, in, j, jc, jj, jjab,
1888 $ k, ks, laa, lbb, lcc, lda, ldas, ldb, ldbs,
1889 $ ldc, ldcs, lj, ma, n, na, nargs, nc, ns
1890 LOGICAL conj, null, reset, same, tran, upper
1891 CHARACTER*1 trans, transs, transt, uplo, uplos
1892 CHARACTER*2 icht, ichu
1901 INTRINSIC cmplx, conjg, max, real
1903 INTEGER infot, noutc
1906 COMMON /infoc/infot, noutc, ok, lerr
1908 DATA icht/
'NC'/, ichu/
'UL'/
1910 conj = sname( 8: 9 ).EQ.
'he'
1917 DO 130 in = 1, nidim
1928 DO 120 ik = 1, nidim
1932 trans = icht( ict: ict )
1934 IF( tran.AND..NOT.conj )
1955 CALL cmake(
'ge',
' ',
' ', ma, na, ab, 2*nmax, aa,
1956 $ lda, reset, zero )
1958 CALL cmake(
'ge',
' ',
' ', ma, na, ab, nmax, aa, lda,
1967 CALL cmake(
'ge',
' ',
' ', ma, na, ab( k + 1 ),
1968 $ 2*nmax, bb, ldb, reset, zero )
1970 CALL cmake(
'ge',
' ',
' ', ma, na, ab( k*nmax + 1 ),
1971 $ nmax, bb, ldb, reset, zero )
1975 uplo = ichu( icu: icu )
1984 rbeta =
REAL( beta )
1985 beta = cmplx( rbeta, rzero )
1989 $ null = null.OR.( ( k.LE.0.OR.alpha.EQ.
1990 $ zero ).AND.rbeta.EQ.rone )
1994 CALL cmake( sname( 8: 9 ), uplo,
' ', n, n, c,
1995 $ nmax, cc, ldc, reset, zero )
2028 $
CALL cprcn7( ntra, nc, sname, iorder,
2029 $ uplo, trans, n, k, alpha, lda, ldb,
2033 CALL ccher2k( iorder, uplo, trans, n, k,
2034 $ alpha, aa, lda, bb, ldb, rbeta,
2038 $
CALL cprcn5( ntra, nc, sname, iorder,
2039 $ uplo, trans, n, k, alpha, lda, ldb,
2043 CALL ccsyr2k( iorder, uplo, trans, n, k,
2044 $ alpha, aa, lda, bb, ldb, beta,
2051 WRITE( nout, fmt = 9992 )
2058 isame( 1 ) = uplos.EQ.uplo
2059 isame( 2 ) = transs.EQ.trans
2060 isame( 3 ) = ns.EQ.n
2061 isame( 4 ) = ks.EQ.k
2062 isame( 5 ) = als.EQ.alpha
2063 isame( 6 ) =
lce( as, aa, laa )
2064 isame( 7 ) = ldas.EQ.lda
2065 isame( 8 ) =
lce( bs, bb, lbb )
2066 isame( 9 ) = ldbs.EQ.ldb
2068 isame( 10 ) = rbets.EQ.rbeta
2070 isame( 10 ) = bets.EQ.beta
2073 isame( 11 ) =
lce( cs, cc, lcc )
2075 isame( 11 ) =
lceres(
'he', uplo, n, n, cs,
2078 isame( 12 ) = ldcs.EQ.ldc
2085 same = same.AND.isame( i )
2086 IF( .NOT.isame( i ) )
2087 $
WRITE( nout, fmt = 9998 )i
2115 w( i ) = alpha*ab( ( j - 1 )*2*
2118 w( k + i ) = conjg( alpha )*
2127 CALL cmmch( transt,
'N', lj, 1, 2*k,
2128 $ one, ab( jjab ), 2*nmax, w,
2129 $ 2*nmax, beta, c( jj, j ),
2130 $ nmax, ct, g, cc( jc ), ldc,
2131 $ eps, err, fatal, nout,
2136 w( i ) = alpha*conjg( ab( ( k +
2137 $ i - 1 )*nmax + j ) )
2138 w( k + i ) = conjg( alpha*
2139 $ ab( ( i - 1 )*nmax +
2142 w( i ) = alpha*ab( ( k + i - 1 )*
2145 $ ab( ( i - 1 )*nmax +
2149 CALL cmmch(
'N',
'N', lj, 1, 2*k, one,
2150 $ ab( jj ), nmax, w, 2*nmax,
2151 $ beta, c( jj, j ), nmax, ct,
2152 $ g, cc( jc ), ldc, eps, err,
2153 $ fatal, nout, .true. )
2160 $ jjab = jjab + 2*nmax
2162 errmax = max( errmax, err )
2184 IF( errmax.LT.thresh )
THEN
2185 IF ( iorder.EQ.0)
WRITE( nout, fmt = 10000 )sname, nc
2186 IF ( iorder.EQ.1)
WRITE( nout, fmt = 10001 )sname, nc
2188 IF ( iorder.EQ.0)
WRITE( nout, fmt = 10002 )sname, nc, errmax
2189 IF ( iorder.EQ.1)
WRITE( nout, fmt = 10003 )sname, nc, errmax
2195 $
WRITE( nout, fmt = 9995 )j
2198 WRITE( nout, fmt = 9996 )sname
2200 CALL cprcn7( nout, nc, sname, iorder, uplo, trans, n, k,
2201 $ alpha, lda, ldb, rbeta, ldc)
2203 CALL cprcn5( nout, nc, sname, iorder, uplo, trans, n, k,
2204 $ alpha, lda, ldb, beta, ldc)
2210 10003
FORMAT(
' ', a12,
' COMPLETED THE ROW-MAJOR COMPUTATIONAL ',
2211 $
'TESTS (', i6,
' CALLS)', /
' ******* BUT WITH MAXIMUM TEST ',
2212 $
'RATIO ', f8.2,
' - SUSPECT *******' )
2213 10002
FORMAT(
' ', a12,
' COMPLETED THE COLUMN-MAJOR COMPUTATIONAL ',
2214 $
'TESTS (', i6,
' CALLS)', /
' ******* BUT WITH MAXIMUM TEST ',
2215 $
'RATIO ', f8.2,
' - SUSPECT *******' )
2216 10001
FORMAT(
' ', a12,
' PASSED THE ROW-MAJOR COMPUTATIONAL TESTS',
2217 $
' (', i6,
' CALL',
'S)' )
2218 10000
FORMAT(
' ', a12,
' PASSED THE COLUMN-MAJOR COMPUTATIONAL TESTS',
2219 $
' (', i6,
' CALL',
'S)' )
2220 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
2221 $
'ANGED INCORRECTLY *******' )
2222 9996
FORMAT(
' ******* ', a12,
' FAILED ON CALL NUMBER:' )
2223 9995
FORMAT(
' THESE ARE THE RESULTS FOR COLUMN ', i3 )
2224 9994
FORMAT(1x, i6,
': ', a12,
'(', 2(
'''', a1,
''',' ), 2( i3,
',' ),
2225 $
'(', f4.1,
',', f4.1,
'), A,', i3,
', B,', i3,
',', f4.1,
2226 $
', C,', i3,
') .' )
2227 9993
FORMAT(1x, i6,
': ', a12,
'(', 2(
'''', a1,
''',' ), 2( i3,
',' ),
2228 $
'(', f4.1,
',', f4.1,
'), A,', i3,
', B,', i3,
',(', f4.1,
2229 $
',', f4.1,
'), C,', i3,
') .' )
2230 9992
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
subroutine cprcn5(NOUT, NC, SNAME, IORDER, UPLO, TRANSA, N, K, ALPHA, LDA, LDB, BETA, LDC)
subroutine cmmch(TRANSA, TRANSB, M, N, KK, ALPHA, A, LDA, B, LDB, BETA, C, LDC, CT, G, CC, LDCC, EPS, ERR, FATAL, NOUT, MV)
subroutine cprcn7(NOUT, NC, SNAME, IORDER, UPLO, TRANSA, N, K, ALPHA, LDA, LDB, BETA, LDC)
logical function lce(RI, RJ, LR)
subroutine cmake(TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL, KU, RESET, TRANSL)
logical function lceres(TYPE, UPLO, M, N, AA, AS, LDA)