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 *',
subroutine zprcn2(NOUT, NC, SNAME, IORDER, SIDE, UPLO, M, N, ALPHA, LDA, LDB, BETA, LDC)
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 zmake(TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL, KU, RESET, TRANSL)
logical function lze(RI, RJ, LR)