1742 DOUBLE PRECISION zero
1743 parameter ( zero = 0.0d0 )
1745 DOUBLE PRECISION eps, thresh
1746 INTEGER nalf, nbet, nidim, nmax, nout, ntra, iorder
1747 LOGICAL fatal, rewi, trace
1750 DOUBLE PRECISION aa( nmax*nmax ), ab( 2*nmax*nmax ),
1751 $ alf( nalf ), as( nmax*nmax ), bb( nmax*nmax ),
1752 $ bet( nbet ), bs( nmax*nmax ), c( nmax, nmax ),
1753 $ cc( nmax*nmax ), cs( nmax*nmax ), ct( nmax ),
1754 $ g( nmax ), w( 2*nmax )
1755 INTEGER idim( nidim )
1757 DOUBLE PRECISION alpha, als, beta, bets, err, errmax
1758 INTEGER i, ia, ib, ict, icu, ik, in, j, jc, jj, jjab,
1759 $ k, ks, laa, lbb, lcc, lda, ldas, ldb, ldbs,
1760 $ ldc, ldcs, lj, ma, n, na, nargs, nc, ns
1761 LOGICAL null, reset, same, tran, upper
1762 CHARACTER*1 trans, transs, uplo, uplos
1775 INTEGER infot, noutc
1778 COMMON /infoc/infot, noutc, ok
1780 DATA icht/
'NTC'/, ichu/
'UL'/
1788 DO 130 in = 1, nidim
1800 DO 120 ik = 1, nidim
1804 trans = icht( ict: ict )
1805 tran = trans.EQ.
'T'.OR.trans.EQ.
'C'
1825 CALL dmake(
'GE',
' ',
' ', ma, na, ab, 2*nmax, aa,
1826 $ lda, reset, zero )
1828 CALL dmake(
'GE',
' ',
' ', ma, na, ab, nmax, aa, lda,
1837 CALL dmake(
'GE',
' ',
' ', ma, na, ab( k + 1 ),
1838 $ 2*nmax, bb, ldb, reset, zero )
1840 CALL dmake(
'GE',
' ',
' ', ma, na, ab( k*nmax + 1 ),
1841 $ nmax, bb, ldb, reset, zero )
1845 uplo = ichu( icu: icu )
1856 CALL dmake(
'SY', uplo,
' ', n, n, c, nmax, cc,
1857 $ ldc, reset, zero )
1885 $
CALL dprcn5( ntra, nc, sname, iorder, uplo,
1886 $ trans, n, k, alpha, lda, ldb, beta, ldc)
1889 CALL cdsyr2k( iorder, uplo, trans, n, k,
1890 $ alpha, aa, lda, bb, ldb, beta,
1896 WRITE( nout, fmt = 9993 )
1903 isame( 1 ) = uplos.EQ.uplo
1904 isame( 2 ) = transs.EQ.trans
1905 isame( 3 ) = ns.EQ.n
1906 isame( 4 ) = ks.EQ.k
1907 isame( 5 ) = als.EQ.alpha
1908 isame( 6 ) =
lde( as, aa, laa )
1909 isame( 7 ) = ldas.EQ.lda
1910 isame( 8 ) =
lde( bs, bb, lbb )
1911 isame( 9 ) = ldbs.EQ.ldb
1912 isame( 10 ) = bets.EQ.beta
1914 isame( 11 ) =
lde( cs, cc, lcc )
1916 isame( 11 ) =
lderes(
'SY', uplo, n, n, cs,
1919 isame( 12 ) = ldcs.EQ.ldc
1926 same = same.AND.isame( i )
1927 IF( .NOT.isame( i ) )
1928 $
WRITE( nout, fmt = 9998 )i
1951 w( i ) = ab( ( j - 1 )*2*nmax + k +
1953 w( k + i ) = ab( ( j - 1 )*2*nmax +
1956 CALL dmmch(
'T',
'N', lj, 1, 2*k,
1957 $ alpha, ab( jjab ), 2*nmax,
1959 $ c( jj, j ), nmax, ct, g,
1960 $ cc( jc ), ldc, eps, err,
1961 $ fatal, nout, .true. )
1964 w( i ) = ab( ( k + i - 1 )*nmax +
1966 w( k + i ) = ab( ( i - 1 )*nmax +
1969 CALL dmmch(
'N',
'N', lj, 1, 2*k,
1970 $ alpha, ab( jj ), nmax, w,
1971 $ 2*nmax, beta, c( jj, j ),
1972 $ nmax, ct, g, cc( jc ), ldc,
1973 $ eps, err, fatal, nout,
1981 $ jjab = jjab + 2*nmax
1983 errmax = max( errmax, err )
2005 IF( errmax.LT.thresh )
THEN
2006 IF ( iorder.EQ.0)
WRITE( nout, fmt = 10000 )sname, nc
2007 IF ( iorder.EQ.1)
WRITE( nout, fmt = 10001 )sname, nc
2009 IF ( iorder.EQ.0)
WRITE( nout, fmt = 10002 )sname, nc, errmax
2010 IF ( iorder.EQ.1)
WRITE( nout, fmt = 10003 )sname, nc, errmax
2016 $
WRITE( nout, fmt = 9995 )j
2019 WRITE( nout, fmt = 9996 )sname
2020 CALL dprcn5( nout, nc, sname, iorder, uplo, trans, n, k, alpha,
2021 $ lda, ldb, beta, ldc)
2026 10003
FORMAT(
' ', a12,
' COMPLETED THE ROW-MAJOR COMPUTATIONAL ',
2027 $
'TESTS (', i6,
' CALLS)', /
' ******* BUT WITH MAXIMUM TEST ',
2028 $
'RATIO ', f8.2,
' - SUSPECT *******' )
2029 10002
FORMAT(
' ', a12,
' COMPLETED THE COLUMN-MAJOR COMPUTATIONAL ',
2030 $
'TESTS (', i6,
' CALLS)', /
' ******* BUT WITH MAXIMUM TEST ',
2031 $
'RATIO ', f8.2,
' - SUSPECT *******' )
2032 10001
FORMAT(
' ', a12,
' PASSED THE ROW-MAJOR COMPUTATIONAL TESTS',
2033 $
' (', i6,
' CALL',
'S)' )
2034 10000
FORMAT(
' ', a12,
' PASSED THE COLUMN-MAJOR COMPUTATIONAL TESTS',
2035 $
' (', i6,
' CALL',
'S)' )
2036 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
2037 $
'ANGED INCORRECTLY *******' )
2038 9996
FORMAT(
' ******* ', a12,
' FAILED ON CALL NUMBER:' )
2039 9995
FORMAT(
' THESE ARE THE RESULTS FOR COLUMN ', i3 )
2040 9994
FORMAT( 1x, i6,
': ', a12,
'(', 2(
'''', a1,
''',' ), 2( i3,
',' ),
2041 $ f4.1,
', A,', i3,
', B,', i3,
',', f4.1,
', C,', i3,
') ',
2043 9993
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
subroutine dmake(TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL, KU, RESET, TRANSL)
subroutine dmmch(TRANSA, TRANSB, M, N, KK, ALPHA, A, LDA, B, LDB, BETA, C, LDC, CT, G, CC, LDCC, EPS, ERR, FATAL, NOUT, MV)
logical function lde(RI, RJ, LR)
subroutine dprcn5(NOUT, NC, SNAME, IORDER, UPLO, TRANSA, N, K, ALPHA, LDA, LDB, BETA, LDC)
logical function lderes(TYPE, UPLO, M, N, AA, AS, LDA)