1627 parameter ( zero = ( 0.0, 0.0 ), one = ( 1.0, 0.0 ) )
1629 parameter ( rone = 1.0, rzero = 0.0 )
1632 INTEGER nalf, nbet, nidim, nmax, nout, ntra
1633 LOGICAL fatal, rewi, trace
1636 COMPLEX aa( nmax*nmax ), ab( 2*nmax*nmax ),
1637 $ alf( nalf ), as( nmax*nmax ), bb( nmax*nmax ),
1638 $ bet( nbet ), bs( nmax*nmax ), c( nmax, nmax ),
1639 $ cc( nmax*nmax ), cs( nmax*nmax ), ct( nmax ),
1642 INTEGER idim( nidim )
1644 COMPLEX alpha, als, beta, bets
1645 REAL err, errmax, rbeta, rbets
1646 INTEGER i, ia, ib, ict, icu, ik, in, j, jc, jj, jjab,
1647 $ k, ks, laa, lbb, lcc, lda, ldas, ldb, ldbs,
1648 $ ldc, ldcs, lj, ma, n, na, nargs, nc, ns
1649 LOGICAL conj, null, reset, same, tran, upper
1650 CHARACTER*1 trans, transs, transt, uplo, uplos
1651 CHARACTER*2 icht, ichu
1660 INTRINSIC cmplx, conjg, max, real
1662 INTEGER infot, noutc
1665 COMMON /infoc/infot, noutc, ok, lerr
1667 DATA icht/
'NC'/, ichu/
'UL'/
1669 conj = sname( 2: 3 ).EQ.
'HE'
1676 DO 130 in = 1, nidim
1687 DO 120 ik = 1, nidim
1691 trans = icht( ict: ict )
1693 IF( tran.AND..NOT.conj )
1714 CALL cmake(
'GE',
' ',
' ', ma, na, ab, 2*nmax, aa,
1715 $ lda, reset, zero )
1717 CALL cmake(
'GE',
' ',
' ', ma, na, ab, nmax, aa, lda,
1726 CALL cmake(
'GE',
' ',
' ', ma, na, ab( k + 1 ),
1727 $ 2*nmax, bb, ldb, reset, zero )
1729 CALL cmake(
'GE',
' ',
' ', ma, na, ab( k*nmax + 1 ),
1730 $ nmax, bb, ldb, reset, zero )
1734 uplo = ichu( icu: icu )
1743 rbeta =
REAL( beta )
1744 beta = cmplx( rbeta, rzero )
1748 $ null = null.OR.( ( k.LE.0.OR.alpha.EQ.
1749 $ zero ).AND.rbeta.EQ.rone )
1753 CALL cmake( sname( 2: 3 ), uplo,
' ', n, n, c,
1754 $ nmax, cc, ldc, reset, zero )
1787 $
WRITE( ntra, fmt = 9994 )nc, sname, uplo,
1788 $ trans, n, k, alpha, lda, ldb, rbeta, ldc
1791 CALL cher2k( uplo, trans, n, k, alpha, aa,
1792 $ lda, bb, ldb, rbeta, cc, ldc )
1795 $
WRITE( ntra, fmt = 9993 )nc, sname, uplo,
1796 $ trans, n, k, alpha, lda, ldb, beta, ldc
1799 CALL csyr2k( uplo, trans, n, k, alpha, aa,
1800 $ lda, bb, ldb, beta, cc, ldc )
1806 WRITE( nout, fmt = 9992 )
1813 isame( 1 ) = uplos.EQ.uplo
1814 isame( 2 ) = transs.EQ.trans
1815 isame( 3 ) = ns.EQ.n
1816 isame( 4 ) = ks.EQ.k
1817 isame( 5 ) = als.EQ.alpha
1818 isame( 6 ) =
lce( as, aa, laa )
1819 isame( 7 ) = ldas.EQ.lda
1820 isame( 8 ) =
lce( bs, bb, lbb )
1821 isame( 9 ) = ldbs.EQ.ldb
1823 isame( 10 ) = rbets.EQ.rbeta
1825 isame( 10 ) = bets.EQ.beta
1828 isame( 11 ) =
lce( cs, cc, lcc )
1830 isame( 11 ) =
lceres(
'HE', uplo, n, n, cs,
1833 isame( 12 ) = ldcs.EQ.ldc
1840 same = same.AND.isame( i )
1841 IF( .NOT.isame( i ) )
1842 $
WRITE( nout, fmt = 9998 )i
1870 w( i ) = alpha*ab( ( j - 1 )*2*
1873 w( k + i ) = conjg( alpha )*
1882 CALL cmmch( transt,
'N', lj, 1, 2*k,
1883 $ one, ab( jjab ), 2*nmax, w,
1884 $ 2*nmax, beta, c( jj, j ),
1885 $ nmax, ct, g, cc( jc ), ldc,
1886 $ eps, err, fatal, nout,
1891 w( i ) = alpha*conjg( ab( ( k +
1892 $ i - 1 )*nmax + j ) )
1893 w( k + i ) = conjg( alpha*
1894 $ ab( ( i - 1 )*nmax +
1897 w( i ) = alpha*ab( ( k + i - 1 )*
1900 $ ab( ( i - 1 )*nmax +
1904 CALL cmmch(
'N',
'N', lj, 1, 2*k, one,
1905 $ ab( jj ), nmax, w, 2*nmax,
1906 $ beta, c( jj, j ), nmax, ct,
1907 $ g, cc( jc ), ldc, eps, err,
1908 $ fatal, nout, .true. )
1915 $ jjab = jjab + 2*nmax
1917 errmax = max( errmax, err )
1939 IF( errmax.LT.thresh )
THEN
1940 WRITE( nout, fmt = 9999 )sname, nc
1942 WRITE( nout, fmt = 9997 )sname, nc, errmax
1948 $
WRITE( nout, fmt = 9995 )j
1951 WRITE( nout, fmt = 9996 )sname
1953 WRITE( nout, fmt = 9994 )nc, sname, uplo, trans, n, k, alpha,
1954 $ lda, ldb, rbeta, ldc
1956 WRITE( nout, fmt = 9993 )nc, sname, uplo, trans, n, k, alpha,
1957 $ lda, ldb, beta, ldc
1963 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
1965 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
1966 $
'ANGED INCORRECTLY *******' )
1967 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
1968 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
1969 $
' - SUSPECT *******' )
1970 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
1971 9995
FORMAT(
' THESE ARE THE RESULTS FOR COLUMN ', i3 )
1972 9994
FORMAT( 1x, i6,
': ', a6,
'(', 2(
'''', a1,
''',' ), 2( i3,
',' ),
1973 $
'(', f4.1,
',', f4.1,
'), A,', i3,
', B,', i3,
',', f4.1,
1974 $
', C,', i3,
') .' )
1975 9993
FORMAT( 1x, i6,
': ', a6,
'(', 2(
'''', a1,
''',' ), 2( i3,
',' ),
1976 $
'(', f4.1,
',', f4.1,
'), A,', i3,
', B,', i3,
',(', f4.1,
1977 $
',', f4.1,
'), C,', i3,
') .' )
1978 9992
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
subroutine cmmch(TRANSA, TRANSB, M, N, KK, ALPHA, A, LDA, B, LDB, BETA, C, LDC, CT, G, CC, LDCC, EPS, ERR, FATAL, NOUT, MV)
logical function lce(RI, RJ, LR)
subroutine cmake(TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL, KU, RESET, TRANSL)
subroutine csyr2k(UPLO, TRANS, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
CSYR2K
subroutine cher2k(UPLO, TRANS, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
CHER2K
logical function lceres(TYPE, UPLO, M, N, AA, AS, LDA)