688 DOUBLE PRECISION ZERO
689 parameter( zero = 0.0d0 )
691 DOUBLE PRECISION EPS, THRESH
692 INTEGER NALF, NBET, NIDIM, NMAX, NOUT, NTRA
693 LOGICAL FATAL, REWI, TRACE
696 DOUBLE PRECISION A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
697 $ AS( NMAX*NMAX ), B( NMAX, NMAX ),
698 $ BB( NMAX*NMAX ), BET( NBET ), BS( NMAX*NMAX ),
699 $ C( NMAX, NMAX ), CC( NMAX*NMAX ),
700 $ CS( NMAX*NMAX ), CT( NMAX ), G( NMAX )
701 INTEGER IDIM( NIDIM )
703 DOUBLE PRECISION ALPHA, ALS, BETA, BLS, ERR, ERRMAX
704 INTEGER I, IA, IB, ICS, ICU, IM, IN, LAA, LBB, LCC,
705 $ LDA, LDAS, LDB, LDBS, LDC, LDCS, M, MS, N, NA,
707 LOGICAL LEFT, NULL, RESET, SAME
708 CHARACTER*1 SIDE, SIDES, UPLO, UPLOS
709 CHARACTER*2 ICHS, ICHU
723 COMMON /infoc/infot, noutc, ok, lerr
725 DATA ichs/
'LR'/, ichu/
'UL'/
746 null = n.LE.0.OR.m.LE.0
759 CALL dmake(
'GE',
' ',
' ', m, n, b, nmax, bb, ldb, reset,
763 side = ichs( ics: ics )
781 uplo = ichu( icu: icu )
785 CALL dmake(
'SY', uplo,
' ', na, na, a, nmax, aa, lda,
796 CALL dmake(
'GE',
' ',
' ', m, n, c, nmax, cc,
826 $
WRITE( ntra, fmt = 9995 )nc, sname, side,
827 $ uplo, m, n, alpha, lda, ldb, beta, ldc
830 CALL dsymm( side, uplo, m, n, alpha, aa, lda,
831 $ bb, ldb, beta, cc, ldc )
836 WRITE( nout, fmt = 9994 )
843 isame( 1 ) = sides.EQ.side
844 isame( 2 ) = uplos.EQ.uplo
847 isame( 5 ) = als.EQ.alpha
848 isame( 6 ) =
lde( as, aa, laa )
849 isame( 7 ) = ldas.EQ.lda
850 isame( 8 ) =
lde( bs, bb, lbb )
851 isame( 9 ) = ldbs.EQ.ldb
852 isame( 10 ) = bls.EQ.beta
854 isame( 11 ) =
lde( cs, cc, lcc )
856 isame( 11 ) =
lderes(
'GE',
' ', m, n, cs,
859 isame( 12 ) = ldcs.EQ.ldc
866 same = same.AND.isame( i )
867 IF( .NOT.isame( i ) )
868 $
WRITE( nout, fmt = 9998 )i
880 CALL dmmch(
'N',
'N', m, n, m, alpha, a,
881 $ nmax, b, nmax, beta, c, nmax,
882 $ ct, g, cc, ldc, eps, err,
883 $ fatal, nout, .true. )
885 CALL dmmch(
'N',
'N', m, n, n, alpha, b,
886 $ nmax, a, nmax, beta, c, nmax,
887 $ ct, g, cc, ldc, eps, err,
888 $ fatal, nout, .true. )
890 errmax = max( errmax, err )
911 IF( errmax.LT.thresh )
THEN
912 WRITE( nout, fmt = 9999 )sname, nc
914 WRITE( nout, fmt = 9997 )sname, nc, errmax
919 WRITE( nout, fmt = 9996 )sname
920 WRITE( nout, fmt = 9995 )nc, sname, side, uplo, m, n, alpha, lda,
926 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
928 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
929 $
'ANGED INCORRECTLY *******' )
930 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
931 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
932 $
' - SUSPECT *******' )
933 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
934 9995
FORMAT( 1x, i6,
': ', a6,
'(', 2(
'''', a1,
''',' ), 2( i3,
',' ),
935 $ f4.1,
', A,', i3,
', B,', i3,
',', f4.1,
', C,', i3,
') ',
937 9994
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
subroutine dmake(TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL, KU, RESET, TRANSL)
logical function lde(RI, RJ, LR)
logical function lderes(TYPE, UPLO, M, N, AA, AS, LDA)
subroutine dmmch(TRANSA, TRANSB, M, N, KK, ALPHA, A, LDA, B, LDB, BETA, C, LDC, CT, G, CC, LDCC, EPS, ERR, FATAL, NOUT, MV)
subroutine dsymm(SIDE, UPLO, M, N, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
DSYMM