708 parameter ( zero = ( 0.0d0, 0.0d0 ) )
709 DOUBLE PRECISION rzero
710 parameter ( rzero = 0.0d0 )
712 DOUBLE PRECISION eps, thresh
713 INTEGER nalf, nbet, nidim, nmax, nout, ntra
714 LOGICAL fatal, rewi, trace
717 COMPLEX*16 a( nmax, nmax ), aa( nmax*nmax ), alf( nalf ),
718 $ as( nmax*nmax ), b( nmax, nmax ),
719 $ bb( nmax*nmax ), bet( nbet ), bs( nmax*nmax ),
720 $ c( nmax, nmax ), cc( nmax*nmax ),
721 $ cs( nmax*nmax ), ct( nmax )
722 DOUBLE PRECISION g( nmax )
723 INTEGER idim( nidim )
725 COMPLEX*16 alpha, als, beta, bls
726 DOUBLE PRECISION err, errmax
727 INTEGER i, ia, ib, ics, icu, im, in, laa, lbb, lcc,
728 $ lda, ldas, ldb, ldbs, ldc, ldcs, m, ms, n, na,
730 LOGICAL conj, left, null, reset, same
731 CHARACTER*1 side, sides, uplo, uplos
732 CHARACTER*2 ichs, ichu
746 COMMON /infoc/infot, noutc, ok, lerr
748 DATA ichs/
'LR'/, ichu/
'UL'/
750 conj = sname( 2: 3 ).EQ.
'HE'
770 null = n.LE.0.OR.m.LE.0
782 CALL zmake(
'GE',
' ',
' ', m, n, b, nmax, bb, ldb, reset,
786 side = ichs( ics: ics )
804 uplo = ichu( icu: icu )
808 CALL zmake( sname( 2: 3 ), uplo,
' ', na, na, a, nmax,
809 $ aa, lda, reset, zero )
819 CALL zmake(
'GE',
' ',
' ', m, n, c, nmax, cc,
849 $
WRITE( ntra, fmt = 9995 )nc, sname, side,
850 $ uplo, m, n, alpha, lda, ldb, beta, ldc
854 CALL zhemm( side, uplo, m, n, alpha, aa, lda,
855 $ bb, ldb, beta, cc, ldc )
857 CALL zsymm( side, uplo, m, n, alpha, aa, lda,
858 $ bb, ldb, beta, cc, ldc )
864 WRITE( nout, fmt = 9994 )
871 isame( 1 ) = sides.EQ.side
872 isame( 2 ) = uplos.EQ.uplo
875 isame( 5 ) = als.EQ.alpha
876 isame( 6 ) =
lze( as, aa, laa )
877 isame( 7 ) = ldas.EQ.lda
878 isame( 8 ) =
lze( bs, bb, lbb )
879 isame( 9 ) = ldbs.EQ.ldb
880 isame( 10 ) = bls.EQ.beta
882 isame( 11 ) =
lze( cs, cc, lcc )
884 isame( 11 ) =
lzeres(
'GE',
' ', m, n, cs,
887 isame( 12 ) = ldcs.EQ.ldc
894 same = same.AND.isame( i )
895 IF( .NOT.isame( i ) )
896 $
WRITE( nout, fmt = 9998 )i
908 CALL zmmch(
'N',
'N', m, n, m, alpha, a,
909 $ nmax, b, nmax, beta, c, nmax,
910 $ ct, g, cc, ldc, eps, err,
911 $ fatal, nout, .true. )
913 CALL zmmch(
'N',
'N', m, n, n, alpha, b,
914 $ nmax, a, nmax, beta, c, nmax,
915 $ ct, g, cc, ldc, eps, err,
916 $ fatal, nout, .true. )
918 errmax = max( errmax, err )
939 IF( errmax.LT.thresh )
THEN
940 WRITE( nout, fmt = 9999 )sname, nc
942 WRITE( nout, fmt = 9997 )sname, nc, errmax
947 WRITE( nout, fmt = 9996 )sname
948 WRITE( nout, fmt = 9995 )nc, sname, side, uplo, m, n, alpha, lda,
954 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
956 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
957 $
'ANGED INCORRECTLY *******' )
958 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
959 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
960 $
' - SUSPECT *******' )
961 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
962 9995
FORMAT( 1x, i6,
': ', a6,
'(', 2(
'''', a1,
''',' ), 2( i3,
',' ),
963 $
'(', f4.1,
',', f4.1,
'), A,', i3,
', B,', i3,
',(', f4.1,
964 $
',', f4.1,
'), C,', i3,
') .' )
965 9994
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
logical function lzeres(TYPE, UPLO, M, N, AA, AS, LDA)
subroutine zmmch(TRANSA, TRANSB, M, N, KK, ALPHA, A, LDA, B, LDB, BETA, C, LDC, CT, G, CC, LDCC, EPS, ERR, FATAL, NOUT, MV)
subroutine zsymm(SIDE, UPLO, M, N, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
ZSYMM
subroutine zmake(TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL, KU, RESET, TRANSL)
subroutine zhemm(SIDE, UPLO, M, N, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
ZHEMM
logical function lze(RI, RJ, LR)