773 parameter( zero = ( 0.0d0, 0.0d0 ) )
774 DOUBLE PRECISION RZERO
775 parameter( rzero = 0.0d0 )
777 DOUBLE PRECISION EPS, THRESH
778 INTEGER NALF, NBET, NIDIM, NMAX, NOUT, NTRA, IORDER
779 LOGICAL FATAL, REWI, TRACE
782 COMPLEX*16 A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
783 $ AS( NMAX*NMAX ), B( NMAX, NMAX ),
784 $ BB( NMAX*NMAX ), BET( NBET ), BS( NMAX*NMAX ),
785 $ C( NMAX, NMAX ), CC( NMAX*NMAX ),
786 $ CS( NMAX*NMAX ), CT( NMAX )
787 DOUBLE PRECISION G( NMAX )
788 INTEGER IDIM( NIDIM )
790 COMPLEX*16 ALPHA, ALS, BETA, BLS
791 DOUBLE PRECISION ERR, ERRMAX
792 INTEGER I, IA, IB, ICS, ICU, IM, IN, LAA, LBB, LCC,
793 $ LDA, LDAS, LDB, LDBS, LDC, LDCS, M, MS, N, NA,
795 LOGICAL CONJ, LEFT, NULL, RESET, SAME
796 CHARACTER*1 SIDE, SIDES, UPLO, UPLOS
797 CHARACTER*2 ICHS, ICHU
811 COMMON /infoc/infot, noutc, ok, lerr
813 DATA ichs/
'LR'/, ichu/
'UL'/
815 conj = sname( 8: 9 ).EQ.
'he'
835 null = n.LE.0.OR.m.LE.0
847 CALL zmake(
'ge',
' ',
' ', m, n, b, nmax, bb, ldb, reset,
851 side = ichs( ics: ics )
869 uplo = ichu( icu: icu )
873 CALL zmake(sname( 8: 9 ), uplo,
' ', na, na, a, nmax,
874 $ aa, lda, reset, zero )
884 CALL zmake(
'ge',
' ',
' ', m, n, c, nmax, cc,
914 $
CALL zprcn2(ntra, nc, sname, iorder,
915 $ side, uplo, m, n, alpha, lda, ldb,
920 CALL czhemm( iorder, side, uplo, m, n,
921 $ alpha, aa, lda, bb, ldb, beta,
924 CALL czsymm( iorder, side, uplo, m, n,
925 $ alpha, aa, lda, bb, ldb, beta,
932 WRITE( nout, fmt = 9994 )
939 isame( 1 ) = sides.EQ.side
940 isame( 2 ) = uplos.EQ.uplo
943 isame( 5 ) = als.EQ.alpha
944 isame( 6 ) =
lze( as, aa, laa )
945 isame( 7 ) = ldas.EQ.lda
946 isame( 8 ) =
lze( bs, bb, lbb )
947 isame( 9 ) = ldbs.EQ.ldb
948 isame( 10 ) = bls.EQ.beta
950 isame( 11 ) =
lze( cs, cc, lcc )
952 isame( 11 ) =
lzeres(
'ge',
' ', m, n, cs,
955 isame( 12 ) = ldcs.EQ.ldc
962 same = same.AND.isame( i )
963 IF( .NOT.isame( i ) )
964 $
WRITE( nout, fmt = 9998 )i
976 CALL zmmch(
'N',
'N', m, n, m, alpha, a,
977 $ nmax, b, nmax, beta, c, nmax,
978 $ ct, g, cc, ldc, eps, err,
979 $ fatal, nout, .true. )
981 CALL zmmch(
'N',
'N', m, n, n, alpha, b,
982 $ nmax, a, nmax, beta, c, nmax,
983 $ ct, g, cc, ldc, eps, err,
984 $ fatal, nout, .true. )
986 errmax = max( errmax, err )
1007 IF( errmax.LT.thresh )
THEN
1008 IF ( iorder.EQ.0)
WRITE( nout, fmt = 10000 )sname, nc
1009 IF ( iorder.EQ.1)
WRITE( nout, fmt = 10001 )sname, nc
1011 IF ( iorder.EQ.0)
WRITE( nout, fmt = 10002 )sname, nc, errmax
1012 IF ( iorder.EQ.1)
WRITE( nout, fmt = 10003 )sname, nc, errmax
1017 WRITE( nout, fmt = 9996 )sname
1018 CALL zprcn2(nout, nc, sname, iorder, side, uplo, m, n, alpha, lda,
1024 10003
FORMAT(
' ', a12,
' COMPLETED THE ROW-MAJOR COMPUTATIONAL ',
1025 $
'TESTS (', i6,
' CALLS)', /
' ******* BUT WITH MAXIMUM TEST ',
1026 $
'RATIO ', f8.2,
' - SUSPECT *******' )
1027 10002
FORMAT(
' ', a12,
' COMPLETED THE COLUMN-MAJOR COMPUTATIONAL ',
1028 $
'TESTS (', i6,
' CALLS)', /
' ******* BUT WITH MAXIMUM TEST ',
1029 $
'RATIO ', f8.2,
' - SUSPECT *******' )
1030 10001
FORMAT(
' ', a12,
' PASSED THE ROW-MAJOR COMPUTATIONAL TESTS',
1031 $
' (', i6,
' CALL',
'S)' )
1032 10000
FORMAT(
' ', a12,
' PASSED THE COLUMN-MAJOR COMPUTATIONAL TESTS',
1033 $
' (', i6,
' CALL',
'S)' )
1034 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
1035 $
'ANGED INCORRECTLY *******' )
1036 9996
FORMAT(
' ******* ', a12,
' FAILED ON CALL NUMBER:' )
1037 9995
FORMAT(1x, i6,
': ', a12,
'(', 2(
'''', a1,
''',' ), 2( i3,
',' ),
1038 $
'(', f4.1,
',', f4.1,
'), A,', i3,
', B,', i3,
',(', f4.1,
1039 $
',', f4.1,
'), C,', i3,
') .' )
1040 9994
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',