761 parameter ( zero = 0.0 )
764 INTEGER nalf, nbet, nidim, nmax, nout, ntra, iorder
765 LOGICAL fatal, rewi, trace
768 REAL a( nmax, nmax ), aa( nmax*nmax ), alf( nalf ),
769 $ as( nmax*nmax ), b( nmax, nmax ),
770 $ bb( nmax*nmax ), bet( nbet ), bs( nmax*nmax ),
771 $ c( nmax, nmax ), cc( nmax*nmax ),
772 $ cs( nmax*nmax ), ct( nmax ), g( nmax )
773 INTEGER idim( nidim )
775 REAL alpha, als, beta, bls, err, errmax
776 INTEGER i, ia, ib, ics, icu, im, in, laa, lbb, lcc,
777 $ lda, ldas, ldb, ldbs, ldc, ldcs, m, ms, n, na,
779 LOGICAL left, null, reset, same
780 CHARACTER*1 side, sides, uplo, uplos
781 CHARACTER*2 ichs, ichu
795 COMMON /infoc/infot, noutc, ok
797 DATA ichs/
'LR'/, ichu/
'UL'/
818 null = n.LE.0.OR.m.LE.0
831 CALL smake(
'GE',
' ',
' ', m, n, b, nmax, bb, ldb, reset,
835 side = ichs( ics: ics )
853 uplo = ichu( icu: icu )
857 CALL smake(
'SY', uplo,
' ', na, na, a, nmax, aa, lda,
868 CALL smake(
'GE',
' ',
' ', m, n, c, nmax, cc,
898 $
CALL sprcn2(ntra, nc, sname, iorder,
899 $ side, uplo, m, n, alpha, lda, ldb,
903 CALL cssymm( iorder, side, uplo, m, n, alpha,
904 $ aa, lda, bb, ldb, beta, cc, ldc )
909 WRITE( nout, fmt = 9994 )
916 isame( 1 ) = sides.EQ.side
917 isame( 2 ) = uplos.EQ.uplo
920 isame( 5 ) = als.EQ.alpha
921 isame( 6 ) =
lse( as, aa, laa )
922 isame( 7 ) = ldas.EQ.lda
923 isame( 8 ) =
lse( bs, bb, lbb )
924 isame( 9 ) = ldbs.EQ.ldb
925 isame( 10 ) = bls.EQ.beta
927 isame( 11 ) =
lse( cs, cc, lcc )
929 isame( 11 ) =
lseres(
'GE',
' ', m, n, cs,
932 isame( 12 ) = ldcs.EQ.ldc
939 same = same.AND.isame( i )
940 IF( .NOT.isame( i ) )
941 $
WRITE( nout, fmt = 9998 )i+1
953 CALL smmch(
'N',
'N', m, n, m, alpha, a,
954 $ nmax, b, nmax, beta, c, nmax,
955 $ ct, g, cc, ldc, eps, err,
956 $ fatal, nout, .true. )
958 CALL smmch(
'N',
'N', m, n, n, alpha, b,
959 $ nmax, a, nmax, beta, c, nmax,
960 $ ct, g, cc, ldc, eps, err,
961 $ fatal, nout, .true. )
963 errmax = max( errmax, err )
984 IF( errmax.LT.thresh )
THEN
985 IF ( iorder.EQ.0)
WRITE( nout, fmt = 10000 )sname, nc
986 IF ( iorder.EQ.1)
WRITE( nout, fmt = 10001 )sname, nc
988 IF ( iorder.EQ.0)
WRITE( nout, fmt = 10002 )sname, nc, errmax
989 IF ( iorder.EQ.1)
WRITE( nout, fmt = 10003 )sname, nc, errmax
994 WRITE( nout, fmt = 9996 )sname
995 CALL sprcn2(nout, nc, sname, iorder, side, uplo, m, n, alpha, lda,
1001 10003
FORMAT(
' ', a12,
' COMPLETED THE ROW-MAJOR COMPUTATIONAL ',
1002 $
'TESTS (', i6,
' CALLS)', /
' ******* BUT WITH MAXIMUM TEST ',
1003 $
'RATIO ', f8.2,
' - SUSPECT *******' )
1004 10002
FORMAT(
' ', a12,
' COMPLETED THE COLUMN-MAJOR COMPUTATIONAL ',
1005 $
'TESTS (', i6,
' CALLS)', /
' ******* BUT WITH MAXIMUM TEST ',
1006 $
'RATIO ', f8.2,
' - SUSPECT *******' )
1007 10001
FORMAT(
' ', a12,
' PASSED THE ROW-MAJOR COMPUTATIONAL TESTS',
1008 $
' (', i6,
' CALL',
'S)' )
1009 10000
FORMAT(
' ', a12,
' PASSED THE COLUMN-MAJOR COMPUTATIONAL TESTS',
1010 $
' (', i6,
' CALL',
'S)' )
1011 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
1012 $
'ANGED INCORRECTLY *******' )
1013 9996
FORMAT(
' ******* ', a12,
' FAILED ON CALL NUMBER:' )
1014 9995
FORMAT( 1x, i6,
': ', a12,
'(', 2(
'''', a1,
''',' ), 2( i3,
',' ),
1015 $ f4.1,
', A,', i3,
', B,', i3,
',', f4.1,
', C,', i3,
') ',
1017 9994
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
subroutine smake(TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL, KU, RESET, TRANSL)
subroutine sprcn2(NOUT, NC, SNAME, IORDER, SIDE, UPLO, M, N, ALPHA, LDA, LDB, BETA, LDC)
logical function lse(RI, RJ, LR)
logical function lseres(TYPE, UPLO, M, N, AA, AS, LDA)
subroutine smmch(TRANSA, TRANSB, M, N, KK, ALPHA, A, LDA, B, LDB, BETA, C, LDC, CT, G, CC, LDCC, EPS, ERR, FATAL, NOUT, MV)