1541 DOUBLE PRECISION zero
1542 parameter ( zero = 0.0d0 )
1544 DOUBLE PRECISION eps, thresh
1545 INTEGER nalf, nbet, nidim, nmax, nout, ntra
1546 LOGICAL fatal, rewi, trace
1549 DOUBLE PRECISION aa( nmax*nmax ), ab( 2*nmax*nmax ),
1550 $ alf( nalf ), as( nmax*nmax ), bb( nmax*nmax ),
1551 $ bet( nbet ), bs( nmax*nmax ), c( nmax, nmax ),
1552 $ cc( nmax*nmax ), cs( nmax*nmax ), ct( nmax ),
1553 $ g( nmax ), w( 2*nmax )
1554 INTEGER idim( nidim )
1556 DOUBLE PRECISION alpha, als, beta, bets, err, errmax
1557 INTEGER i, ia, ib, ict, icu, ik, in, j, jc, jj, jjab,
1558 $ k, ks, laa, lbb, lcc, lda, ldas, ldb, ldbs,
1559 $ ldc, ldcs, lj, ma, n, na, nargs, nc, ns
1560 LOGICAL null, reset, same, tran, upper
1561 CHARACTER*1 trans, transs, uplo, uplos
1574 INTEGER infot, noutc
1577 COMMON /infoc/infot, noutc, ok, lerr
1579 DATA icht/
'NTC'/, ichu/
'UL'/
1587 DO 130 in = 1, nidim
1599 DO 120 ik = 1, nidim
1603 trans = icht( ict: ict )
1604 tran = trans.EQ.
'T'.OR.trans.EQ.
'C'
1624 CALL dmake(
'GE',
' ',
' ', ma, na, ab, 2*nmax, aa,
1625 $ lda, reset, zero )
1627 CALL dmake(
'GE',
' ',
' ', ma, na, ab, nmax, aa, lda,
1636 CALL dmake(
'GE',
' ',
' ', ma, na, ab( k + 1 ),
1637 $ 2*nmax, bb, ldb, reset, zero )
1639 CALL dmake(
'GE',
' ',
' ', ma, na, ab( k*nmax + 1 ),
1640 $ nmax, bb, ldb, reset, zero )
1644 uplo = ichu( icu: icu )
1655 CALL dmake(
'SY', uplo,
' ', n, n, c, nmax, cc,
1656 $ ldc, reset, zero )
1684 $
WRITE( ntra, fmt = 9994 )nc, sname, uplo,
1685 $ trans, n, k, alpha, lda, ldb, beta, ldc
1688 CALL dsyr2k( uplo, trans, n, k, alpha, aa, lda,
1689 $ bb, ldb, beta, cc, ldc )
1694 WRITE( nout, fmt = 9993 )
1701 isame( 1 ) = uplos.EQ.uplo
1702 isame( 2 ) = transs.EQ.trans
1703 isame( 3 ) = ns.EQ.n
1704 isame( 4 ) = ks.EQ.k
1705 isame( 5 ) = als.EQ.alpha
1706 isame( 6 ) =
lde( as, aa, laa )
1707 isame( 7 ) = ldas.EQ.lda
1708 isame( 8 ) =
lde( bs, bb, lbb )
1709 isame( 9 ) = ldbs.EQ.ldb
1710 isame( 10 ) = bets.EQ.beta
1712 isame( 11 ) =
lde( cs, cc, lcc )
1714 isame( 11 ) =
lderes(
'SY', uplo, n, n, cs,
1717 isame( 12 ) = ldcs.EQ.ldc
1724 same = same.AND.isame( i )
1725 IF( .NOT.isame( i ) )
1726 $
WRITE( nout, fmt = 9998 )i
1749 w( i ) = ab( ( j - 1 )*2*nmax + k +
1751 w( k + i ) = ab( ( j - 1 )*2*nmax +
1754 CALL dmmch(
'T',
'N', lj, 1, 2*k,
1755 $ alpha, ab( jjab ), 2*nmax,
1757 $ c( jj, j ), nmax, ct, g,
1758 $ cc( jc ), ldc, eps, err,
1759 $ fatal, nout, .true. )
1762 w( i ) = ab( ( k + i - 1 )*nmax +
1764 w( k + i ) = ab( ( i - 1 )*nmax +
1767 CALL dmmch(
'N',
'N', lj, 1, 2*k,
1768 $ alpha, ab( jj ), nmax, w,
1769 $ 2*nmax, beta, c( jj, j ),
1770 $ nmax, ct, g, cc( jc ), ldc,
1771 $ eps, err, fatal, nout,
1779 $ jjab = jjab + 2*nmax
1781 errmax = max( errmax, err )
1803 IF( errmax.LT.thresh )
THEN
1804 WRITE( nout, fmt = 9999 )sname, nc
1806 WRITE( nout, fmt = 9997 )sname, nc, errmax
1812 $
WRITE( nout, fmt = 9995 )j
1815 WRITE( nout, fmt = 9996 )sname
1816 WRITE( nout, fmt = 9994 )nc, sname, uplo, trans, n, k, alpha,
1817 $ lda, ldb, beta, ldc
1822 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
1824 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
1825 $
'ANGED INCORRECTLY *******' )
1826 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
1827 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
1828 $
' - SUSPECT *******' )
1829 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
1830 9995
FORMAT(
' THESE ARE THE RESULTS FOR COLUMN ', i3 )
1831 9994
FORMAT( 1x, i6,
': ', a6,
'(', 2(
'''', a1,
''',' ), 2( i3,
',' ),
1832 $ f4.1,
', A,', i3,
', B,', i3,
',', f4.1,
', C,', i3,
') ',
1834 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 dsyr2k(UPLO, TRANS, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
DSYR2K
logical function lderes(TYPE, UPLO, M, N, AA, AS, LDA)