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 *',