756 DOUBLE PRECISION zero
757 parameter ( zero = 0.0d0 )
759 DOUBLE PRECISION eps, thresh
760 INTEGER nalf, nbet, nidim, nmax, nout, ntra, iorder
761 LOGICAL fatal, rewi, trace
764 DOUBLE PRECISION a( nmax, nmax ), aa( nmax*nmax ), alf( nalf ),
765 $ as( nmax*nmax ), b( nmax, nmax ),
766 $ bb( nmax*nmax ), bet( nbet ), bs( nmax*nmax ),
767 $ c( nmax, nmax ), cc( nmax*nmax ),
768 $ cs( nmax*nmax ), ct( nmax ), g( nmax )
769 INTEGER idim( nidim )
771 DOUBLE PRECISION alpha, als, beta, bls, err, errmax
772 INTEGER i, ia, ib, ics, icu, im, in, laa, lbb, lcc,
773 $ lda, ldas, ldb, ldbs, ldc, ldcs, m, ms, n, na,
775 LOGICAL left, null, reset, same
776 CHARACTER*1 side, sides, uplo, uplos
777 CHARACTER*2 ichs, ichu
791 COMMON /infoc/infot, noutc, ok
793 DATA ichs/
'LR'/, ichu/
'UL'/
814 null = n.LE.0.OR.m.LE.0
827 CALL dmake(
'GE',
' ',
' ', m, n, b, nmax, bb, ldb, reset,
831 side = ichs( ics: ics )
849 uplo = ichu( icu: icu )
853 CALL dmake(
'SY', uplo,
' ', na, na, a, nmax, aa, lda,
864 CALL dmake(
'GE',
' ',
' ', m, n, c, nmax, cc,
894 $
CALL dprcn2(ntra, nc, sname, iorder,
895 $ side, uplo, m, n, alpha, lda, ldb,
899 CALL cdsymm( iorder, side, uplo, m, n, alpha,
900 $ aa, lda, bb, ldb, beta, cc, ldc )
905 WRITE( nout, fmt = 9994 )
912 isame( 1 ) = sides.EQ.side
913 isame( 2 ) = uplos.EQ.uplo
916 isame( 5 ) = als.EQ.alpha
917 isame( 6 ) =
lde( as, aa, laa )
918 isame( 7 ) = ldas.EQ.lda
919 isame( 8 ) =
lde( bs, bb, lbb )
920 isame( 9 ) = ldbs.EQ.ldb
921 isame( 10 ) = bls.EQ.beta
923 isame( 11 ) =
lde( cs, cc, lcc )
925 isame( 11 ) =
lderes(
'GE',
' ', m, n, cs,
928 isame( 12 ) = ldcs.EQ.ldc
935 same = same.AND.isame( i )
936 IF( .NOT.isame( i ) )
937 $
WRITE( nout, fmt = 9998 )i
949 CALL dmmch(
'N',
'N', m, n, m, alpha, a,
950 $ nmax, b, nmax, beta, c, nmax,
951 $ ct, g, cc, ldc, eps, err,
952 $ fatal, nout, .true. )
954 CALL dmmch(
'N',
'N', m, n, n, alpha, b,
955 $ nmax, a, nmax, beta, c, nmax,
956 $ ct, g, cc, ldc, eps, err,
957 $ fatal, nout, .true. )
959 errmax = max( errmax, err )
980 IF( errmax.LT.thresh )
THEN
981 IF ( iorder.EQ.0)
WRITE( nout, fmt = 10000 )sname, nc
982 IF ( iorder.EQ.1)
WRITE( nout, fmt = 10001 )sname, nc
984 IF ( iorder.EQ.0)
WRITE( nout, fmt = 10002 )sname, nc, errmax
985 IF ( iorder.EQ.1)
WRITE( nout, fmt = 10003 )sname, nc, errmax
990 WRITE( nout, fmt = 9996 )sname
991 CALL dprcn2(nout, nc, sname, iorder, side, uplo, m, n, alpha, lda,
997 10003
FORMAT(
' ', a12,
' COMPLETED THE ROW-MAJOR COMPUTATIONAL ',
998 $
'TESTS (', i6,
' CALLS)', /
' ******* BUT WITH MAXIMUM TEST ',
999 $
'RATIO ', f8.2,
' - SUSPECT *******' )
1000 10002
FORMAT(
' ', a12,
' COMPLETED THE COLUMN-MAJOR COMPUTATIONAL ',
1001 $
'TESTS (', i6,
' CALLS)', /
' ******* BUT WITH MAXIMUM TEST ',
1002 $
'RATIO ', f8.2,
' - SUSPECT *******' )
1003 10001
FORMAT(
' ', a12,
' PASSED THE ROW-MAJOR COMPUTATIONAL TESTS',
1004 $
' (', i6,
' CALL',
'S)' )
1005 10000
FORMAT(
' ', a12,
' PASSED THE COLUMN-MAJOR COMPUTATIONAL TESTS',
1006 $
' (', i6,
' CALL',
'S)' )
1007 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
1008 $
'ANGED INCORRECTLY *******' )
1009 9996
FORMAT(
' ******* ', a12,
' FAILED ON CALL NUMBER:' )
1010 9995
FORMAT( 1x, i6,
': ', a12,
'(', 2(
'''', a1,
''',' ), 2( i3,
',' ),
1011 $ f4.1,
', A,', i3,
', B,', i3,
',', f4.1,
', C,', i3,
') ',
1013 9994
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
subroutine dprcn2(NOUT, NC, SNAME, IORDER, SIDE, UPLO, M, N, ALPHA, LDA, LDB, BETA, LDC)
subroutine dmake(TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL, KU, RESET, TRANSL)
subroutine dmmch(TRANSA, TRANSB, M, N, KK, ALPHA, A, LDA, B, LDB, BETA, C, LDC, CT, G, CC, LDCC, EPS, ERR, FATAL, NOUT, MV)
logical function lde(RI, RJ, LR)
logical function lderes(TYPE, UPLO, M, N, AA, AS, LDA)