703 parameter( zero = ( 0.0, 0.0 ) )
705 parameter( rzero = 0.0 )
708 INTEGER NALF, NBET, NIDIM, NMAX, NOUT, NTRA
709 LOGICAL FATAL, REWI, TRACE
712 COMPLEX A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
713 $ AS( NMAX*NMAX ), B( NMAX, NMAX ),
714 $ BB( NMAX*NMAX ), BET( NBET ), BS( NMAX*NMAX ),
715 $ C( NMAX, NMAX ), CC( NMAX*NMAX ),
716 $ CS( NMAX*NMAX ), CT( NMAX )
718 INTEGER IDIM( NIDIM )
720 COMPLEX ALPHA, ALS, BETA, BLS
722 INTEGER I, IA, IB, ICS, ICU, IM, IN, LAA, LBB, LCC,
723 $ LDA, LDAS, LDB, LDBS, LDC, LDCS, M, MS, N, NA,
725 LOGICAL CONJ, LEFT, NULL, RESET, SAME
726 CHARACTER*1 SIDE, SIDES, UPLO, UPLOS
727 CHARACTER*2 ICHS, ICHU
741 COMMON /infoc/infot, noutc, ok, lerr
743 DATA ichs/
'LR'/, ichu/
'UL'/
745 conj = sname( 2: 3 ).EQ.
'HE'
765 null = n.LE.0.OR.m.LE.0
777 CALL cmake(
'GE',
' ',
' ', m, n, b, nmax, bb, ldb, reset,
781 side = ichs( ics: ics )
799 uplo = ichu( icu: icu )
803 CALL cmake( sname( 2: 3 ), uplo,
' ', na, na, a, nmax,
804 $ aa, lda, reset, zero )
814 CALL cmake(
'GE',
' ',
' ', m, n, c, nmax, cc,
844 $
WRITE( ntra, fmt = 9995 )nc, sname, side,
845 $ uplo, m, n, alpha, lda, ldb, beta, ldc
849 CALL chemm( side, uplo, m, n, alpha, aa, lda,
850 $ bb, ldb, beta, cc, ldc )
852 CALL csymm( side, uplo, m, n, alpha, aa, lda,
853 $ bb, ldb, beta, cc, ldc )
859 WRITE( nout, fmt = 9994 )
866 isame( 1 ) = sides.EQ.side
867 isame( 2 ) = uplos.EQ.uplo
870 isame( 5 ) = als.EQ.alpha
871 isame( 6 ) =
lce( as, aa, laa )
872 isame( 7 ) = ldas.EQ.lda
873 isame( 8 ) =
lce( bs, bb, lbb )
874 isame( 9 ) = ldbs.EQ.ldb
875 isame( 10 ) = bls.EQ.beta
877 isame( 11 ) =
lce( cs, cc, lcc )
879 isame( 11 ) =
lceres(
'GE',
' ', m, n, cs,
882 isame( 12 ) = ldcs.EQ.ldc
889 same = same.AND.isame( i )
890 IF( .NOT.isame( i ) )
891 $
WRITE( nout, fmt = 9998 )i
903 CALL cmmch(
'N',
'N', m, n, m, alpha, a,
904 $ nmax, b, nmax, beta, c, nmax,
905 $ ct, g, cc, ldc, eps, err,
906 $ fatal, nout, .true. )
908 CALL cmmch(
'N',
'N', m, n, n, alpha, b,
909 $ nmax, a, nmax, beta, c, nmax,
910 $ ct, g, cc, ldc, eps, err,
911 $ fatal, nout, .true. )
913 errmax = max( errmax, err )
934 IF( errmax.LT.thresh )
THEN
935 WRITE( nout, fmt = 9999 )sname, nc
937 WRITE( nout, fmt = 9997 )sname, nc, errmax
942 WRITE( nout, fmt = 9996 )sname
943 WRITE( nout, fmt = 9995 )nc, sname, side, uplo, m, n, alpha, lda,
949 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
951 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
952 $
'ANGED INCORRECTLY *******' )
953 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
954 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
955 $
' - SUSPECT *******' )
956 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
957 9995
FORMAT( 1x, i6,
': ', a6,
'(', 2(
'''', a1,
''',' ), 2( i3,
',' ),
958 $
'(', f4.1,
',', f4.1,
'), A,', i3,
', B,', i3,
',(', f4.1,
959 $
',', f4.1,
'), C,', i3,
') .' )
960 9994
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 csymm(SIDE, UPLO, M, N, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
CSYMM
subroutine chemm(SIDE, UPLO, M, N, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
CHEMM