1624 parameter( zero = ( 0.0, 0.0 ), one = ( 1.0, 0.0 ) )
1626 parameter( rone = 1.0, rzero = 0.0 )
1629 INTEGER NALF, NBET, NIDIM, NMAX, NOUT, NTRA
1630 LOGICAL FATAL, REWI, TRACE
1633 COMPLEX AA( NMAX*NMAX ), AB( 2*NMAX*NMAX ),
1634 $ ALF( NALF ), AS( NMAX*NMAX ), BB( NMAX*NMAX ),
1635 $ BET( NBET ), BS( NMAX*NMAX ), C( NMAX, NMAX ),
1636 $ CC( NMAX*NMAX ), CS( NMAX*NMAX ), CT( NMAX ),
1639 INTEGER IDIM( NIDIM )
1641 COMPLEX ALPHA, ALS, BETA, BETS
1642 REAL ERR, ERRMAX, RBETA, RBETS
1643 INTEGER I, IA, IB, ICT, ICU, IK, IN, J, JC, JJ, JJAB,
1644 $ K, KS, LAA, LBB, LCC, LDA, LDAS, LDB, LDBS,
1645 $ LDC, LDCS, LJ, MA, N, NA, NARGS, NC, NS
1646 LOGICAL CONJ, NULL, RESET, SAME, TRAN, UPPER
1647 CHARACTER*1 TRANS, TRANSS, TRANST, UPLO, UPLOS
1648 CHARACTER*2 ICHT, ICHU
1657 INTRINSIC cmplx, conjg, max, real
1659 INTEGER INFOT, NOUTC
1662 COMMON /infoc/infot, noutc, ok, lerr
1664 DATA icht/
'NC'/, ichu/
'UL'/
1666 conj = sname( 2: 3 ).EQ.
'HE'
1673 DO 130 in = 1, nidim
1684 DO 120 ik = 1, nidim
1688 trans = icht( ict: ict )
1690 IF( tran.AND..NOT.conj )
1711 CALL cmake(
'GE',
' ',
' ', ma, na, ab, 2*nmax, aa,
1712 $ lda, reset, zero )
1714 CALL cmake(
'GE',
' ',
' ', ma, na, ab, nmax, aa, lda,
1723 CALL cmake(
'GE',
' ',
' ', ma, na, ab( k + 1 ),
1724 $ 2*nmax, bb, ldb, reset, zero )
1726 CALL cmake(
'GE',
' ',
' ', ma, na, ab( k*nmax + 1 ),
1727 $ nmax, bb, ldb, reset, zero )
1731 uplo = ichu( icu: icu )
1740 rbeta = real( beta )
1741 beta = cmplx( rbeta, rzero )
1745 $ null = null.OR.( ( k.LE.0.OR.alpha.EQ.
1746 $ zero ).AND.rbeta.EQ.rone )
1750 CALL cmake( sname( 2: 3 ), uplo,
' ', n, n, c,
1751 $ nmax, cc, ldc, reset, zero )
1784 $
WRITE( ntra, fmt = 9994 )nc, sname, uplo,
1785 $ trans, n, k, alpha, lda, ldb, rbeta, ldc
1788 CALL cher2k( uplo, trans, n, k, alpha, aa,
1789 $ lda, bb, ldb, rbeta, cc, ldc )
1792 $
WRITE( ntra, fmt = 9993 )nc, sname, uplo,
1793 $ trans, n, k, alpha, lda, ldb, beta, ldc
1796 CALL csyr2k( uplo, trans, n, k, alpha, aa,
1797 $ lda, bb, ldb, beta, cc, ldc )
1803 WRITE( nout, fmt = 9992 )
1810 isame( 1 ) = uplos.EQ.uplo
1811 isame( 2 ) = transs.EQ.trans
1812 isame( 3 ) = ns.EQ.n
1813 isame( 4 ) = ks.EQ.k
1814 isame( 5 ) = als.EQ.alpha
1815 isame( 6 ) =
lce( as, aa, laa )
1816 isame( 7 ) = ldas.EQ.lda
1817 isame( 8 ) =
lce( bs, bb, lbb )
1818 isame( 9 ) = ldbs.EQ.ldb
1820 isame( 10 ) = rbets.EQ.rbeta
1822 isame( 10 ) = bets.EQ.beta
1825 isame( 11 ) =
lce( cs, cc, lcc )
1827 isame( 11 ) =
lceres(
'HE', uplo, n, n, cs,
1830 isame( 12 ) = ldcs.EQ.ldc
1837 same = same.AND.isame( i )
1838 IF( .NOT.isame( i ) )
1839 $
WRITE( nout, fmt = 9998 )i
1867 w( i ) = alpha*ab( ( j - 1 )*2*
1870 w( k + i ) = conjg( alpha )*
1879 CALL cmmch( transt,
'N', lj, 1, 2*k,
1880 $ one, ab( jjab ), 2*nmax, w,
1881 $ 2*nmax, beta, c( jj, j ),
1882 $ nmax, ct, g, cc( jc ), ldc,
1883 $ eps, err, fatal, nout,
1888 w( i ) = alpha*conjg( ab( ( k +
1889 $ i - 1 )*nmax + j ) )
1890 w( k + i ) = conjg( alpha*
1891 $ ab( ( i - 1 )*nmax +
1894 w( i ) = alpha*ab( ( k + i - 1 )*
1897 $ ab( ( i - 1 )*nmax +
1901 CALL cmmch(
'N',
'N', lj, 1, 2*k, one,
1902 $ ab( jj ), nmax, w, 2*nmax,
1903 $ beta, c( jj, j ), nmax, ct,
1904 $ g, cc( jc ), ldc, eps, err,
1905 $ fatal, nout, .true. )
1912 $ jjab = jjab + 2*nmax
1914 errmax = max( errmax, err )
1936 IF( errmax.LT.thresh )
THEN
1937 WRITE( nout, fmt = 9999 )sname, nc
1939 WRITE( nout, fmt = 9997 )sname, nc, errmax
1945 $
WRITE( nout, fmt = 9995 )j
1948 WRITE( nout, fmt = 9996 )sname
1950 WRITE( nout, fmt = 9994 )nc, sname, uplo, trans, n, k, alpha,
1951 $ lda, ldb, rbeta, ldc
1953 WRITE( nout, fmt = 9993 )nc, sname, uplo, trans, n, k, alpha,
1954 $ lda, ldb, beta, ldc
1960 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
1962 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
1963 $
'ANGED INCORRECTLY *******' )
1964 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
1965 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
1966 $
' - SUSPECT *******' )
1967 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
1968 9995
FORMAT(
' THESE ARE THE RESULTS FOR COLUMN ', i3 )
1969 9994
FORMAT( 1x, i6,
': ', a6,
'(', 2(
'''', a1,
''',' ), 2( i3,
',' ),
1970 $
'(', f4.1,
',', f4.1,
'), A,', i3,
', B,', i3,
',', f4.1,
1971 $
', C,', i3,
') .' )
1972 9993
FORMAT( 1x, i6,
': ', a6,
'(', 2(
'''', a1,
''',' ), 2( i3,
',' ),
1973 $
'(', f4.1,
',', f4.1,
'), A,', i3,
', B,', i3,
',(', f4.1,
1974 $
',', f4.1,
'), C,', i3,
') .' )
1975 9992
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
subroutine cmake(TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL, KU, RESET, TRANSL)
logical function lce(RI, RJ, LR)
logical function lceres(TYPE, UPLO, M, N, AA, AS, LDA)
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 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