705 parameter( zero = ( 0.0d0, 0.0d0 ) )
706 DOUBLE PRECISION RZERO
707 parameter( rzero = 0.0d0 )
709 DOUBLE PRECISION EPS, THRESH
710 INTEGER NALF, NBET, NIDIM, NMAX, NOUT, NTRA
711 LOGICAL FATAL, REWI, TRACE
714 COMPLEX*16 A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
715 $ AS( NMAX*NMAX ), B( NMAX, NMAX ),
716 $ BB( NMAX*NMAX ), BET( NBET ), BS( NMAX*NMAX ),
717 $ C( NMAX, NMAX ), CC( NMAX*NMAX ),
718 $ CS( NMAX*NMAX ), CT( NMAX )
719 DOUBLE PRECISION G( NMAX )
720 INTEGER IDIM( NIDIM )
722 COMPLEX*16 ALPHA, ALS, BETA, BLS
723 DOUBLE PRECISION ERR, ERRMAX
724 INTEGER I, IA, IB, ICS, ICU, IM, IN, LAA, LBB, LCC,
725 $ LDA, LDAS, LDB, LDBS, LDC, LDCS, M, MS, N, NA,
727 LOGICAL CONJ, LEFT, NULL, RESET, SAME
728 CHARACTER*1 SIDE, SIDES, UPLO, UPLOS
729 CHARACTER*2 ICHS, ICHU
743 COMMON /infoc/infot, noutc, ok, lerr
745 DATA ichs/
'LR'/, ichu/
'UL'/
747 conj = sname( 2: 3 ).EQ.
'HE'
767 null = n.LE.0.OR.m.LE.0
779 CALL zmake(
'GE',
' ',
' ', m, n, b, nmax, bb, ldb, reset,
783 side = ichs( ics: ics )
801 uplo = ichu( icu: icu )
805 CALL zmake( sname( 2: 3 ), uplo,
' ', na, na, a, nmax,
806 $ aa, lda, reset, zero )
816 CALL zmake(
'GE',
' ',
' ', m, n, c, nmax, cc,
846 $
WRITE( ntra, fmt = 9995 )nc, sname, side,
847 $ uplo, m, n, alpha, lda, ldb, beta, ldc
851 CALL zhemm( side, uplo, m, n, alpha, aa, lda,
852 $ bb, ldb, beta, cc, ldc )
854 CALL zsymm( side, uplo, m, n, alpha, aa, lda,
855 $ bb, ldb, beta, cc, ldc )
861 WRITE( nout, fmt = 9994 )
868 isame( 1 ) = sides.EQ.side
869 isame( 2 ) = uplos.EQ.uplo
872 isame( 5 ) = als.EQ.alpha
873 isame( 6 ) =
lze( as, aa, laa )
874 isame( 7 ) = ldas.EQ.lda
875 isame( 8 ) =
lze( bs, bb, lbb )
876 isame( 9 ) = ldbs.EQ.ldb
877 isame( 10 ) = bls.EQ.beta
879 isame( 11 ) =
lze( cs, cc, lcc )
881 isame( 11 ) =
lzeres(
'GE',
' ', m, n, cs,
884 isame( 12 ) = ldcs.EQ.ldc
891 same = same.AND.isame( i )
892 IF( .NOT.isame( i ) )
893 $
WRITE( nout, fmt = 9998 )i
905 CALL zmmch(
'N',
'N', m, n, m, alpha, a,
906 $ nmax, b, nmax, beta, c, nmax,
907 $ ct, g, cc, ldc, eps, err,
908 $ fatal, nout, .true. )
910 CALL zmmch(
'N',
'N', m, n, n, alpha, b,
911 $ nmax, a, nmax, beta, c, nmax,
912 $ ct, g, cc, ldc, eps, err,
913 $ fatal, nout, .true. )
915 errmax = max( errmax, err )
936 IF( errmax.LT.thresh )
THEN
937 WRITE( nout, fmt = 9999 )sname, nc
939 WRITE( nout, fmt = 9997 )sname, nc, errmax
944 WRITE( nout, fmt = 9996 )sname
945 WRITE( nout, fmt = 9995 )nc, sname, side, uplo, m, n, alpha, lda,
951 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
953 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
954 $
'ANGED INCORRECTLY *******' )
955 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
956 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
957 $
' - SUSPECT *******' )
958 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
959 9995
FORMAT( 1x, i6,
': ', a6,
'(', 2(
'''', a1,
''',' ), 2( i3,
',' ),
960 $
'(', f4.1,
',', f4.1,
'), A,', i3,
', B,', i3,
',(', f4.1,
961 $
',', f4.1,
'), C,', i3,
') .' )
962 9994
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
subroutine zsymm(SIDE, UPLO, M, N, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
ZSYMM
subroutine zhemm(SIDE, UPLO, M, N, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
ZHEMM
logical function lzeres(TYPE, UPLO, M, N, AA, AS, LDA)
subroutine zmake(TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL, KU, RESET, TRANSL)
logical function lze(RI, RJ, LR)
subroutine zmmch(TRANSA, TRANSB, M, N, KK, ALPHA, A, LDA, B, LDB, BETA, C, LDC, CT, G, CC, LDCC, EPS, ERR, FATAL, NOUT, MV)