706 parameter ( zero = ( 0.0, 0.0 ) )
708 parameter ( rzero = 0.0 )
711 INTEGER nalf, nbet, nidim, nmax, nout, ntra
712 LOGICAL fatal, rewi, trace
715 COMPLEX a( nmax, nmax ), aa( nmax*nmax ), alf( nalf ),
716 $ as( nmax*nmax ), b( nmax, nmax ),
717 $ bb( nmax*nmax ), bet( nbet ), bs( nmax*nmax ),
718 $ c( nmax, nmax ), cc( nmax*nmax ),
719 $ cs( nmax*nmax ), ct( nmax )
721 INTEGER idim( nidim )
723 COMPLEX alpha, als, beta, bls
725 INTEGER i, ia, ib, ics, icu, im, in, laa, lbb, lcc,
726 $ lda, ldas, ldb, ldbs, ldc, ldcs, m, ms, n, na,
728 LOGICAL conj, left, null, reset, same
729 CHARACTER*1 side, sides, uplo, uplos
730 CHARACTER*2 ichs, ichu
744 COMMON /infoc/infot, noutc, ok, lerr
746 DATA ichs/
'LR'/, ichu/
'UL'/
748 conj = sname( 2: 3 ).EQ.
'HE'
768 null = n.LE.0.OR.m.LE.0
780 CALL cmake(
'GE',
' ',
' ', m, n, b, nmax, bb, ldb, reset,
784 side = ichs( ics: ics )
802 uplo = ichu( icu: icu )
806 CALL cmake( sname( 2: 3 ), uplo,
' ', na, na, a, nmax,
807 $ aa, lda, reset, zero )
817 CALL cmake(
'GE',
' ',
' ', m, n, c, nmax, cc,
847 $
WRITE( ntra, fmt = 9995 )nc, sname, side,
848 $ uplo, m, n, alpha, lda, ldb, beta, ldc
852 CALL chemm( side, uplo, m, n, alpha, aa, lda,
853 $ bb, ldb, beta, cc, ldc )
855 CALL csymm( side, uplo, m, n, alpha, aa, lda,
856 $ bb, ldb, beta, cc, ldc )
862 WRITE( nout, fmt = 9994 )
869 isame( 1 ) = sides.EQ.side
870 isame( 2 ) = uplos.EQ.uplo
873 isame( 5 ) = als.EQ.alpha
874 isame( 6 ) =
lce( as, aa, laa )
875 isame( 7 ) = ldas.EQ.lda
876 isame( 8 ) =
lce( bs, bb, lbb )
877 isame( 9 ) = ldbs.EQ.ldb
878 isame( 10 ) = bls.EQ.beta
880 isame( 11 ) =
lce( cs, cc, lcc )
882 isame( 11 ) =
lceres(
'GE',
' ', m, n, cs,
885 isame( 12 ) = ldcs.EQ.ldc
892 same = same.AND.isame( i )
893 IF( .NOT.isame( i ) )
894 $
WRITE( nout, fmt = 9998 )i
906 CALL cmmch(
'N',
'N', m, n, m, alpha, a,
907 $ nmax, b, nmax, beta, c, nmax,
908 $ ct, g, cc, ldc, eps, err,
909 $ fatal, nout, .true. )
911 CALL cmmch(
'N',
'N', m, n, n, alpha, b,
912 $ nmax, a, nmax, beta, c, nmax,
913 $ ct, g, cc, ldc, eps, err,
914 $ fatal, nout, .true. )
916 errmax = max( errmax, err )
937 IF( errmax.LT.thresh )
THEN
938 WRITE( nout, fmt = 9999 )sname, nc
940 WRITE( nout, fmt = 9997 )sname, nc, errmax
945 WRITE( nout, fmt = 9996 )sname
946 WRITE( nout, fmt = 9995 )nc, sname, side, uplo, m, n, alpha, lda,
952 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
954 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
955 $
'ANGED INCORRECTLY *******' )
956 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
957 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
958 $
' - SUSPECT *******' )
959 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
960 9995
FORMAT( 1x, i6,
': ', a6,
'(', 2(
'''', a1,
''',' ), 2( i3,
',' ),
961 $
'(', f4.1,
',', f4.1,
'), A,', i3,
', B,', i3,
',(', f4.1,
962 $
',', f4.1,
'), C,', i3,
') .' )
963 9994
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
subroutine csymm(SIDE, UPLO, M, N, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
CSYMM
subroutine cmmch(TRANSA, TRANSB, M, N, KK, ALPHA, A, LDA, B, LDB, BETA, C, LDC, CT, G, CC, LDCC, EPS, ERR, FATAL, NOUT, MV)
subroutine chemm(SIDE, UPLO, M, N, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
CHEMM
logical function lce(RI, RJ, LR)
subroutine cmake(TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL, KU, RESET, TRANSL)
logical function lceres(TYPE, UPLO, M, N, AA, AS, LDA)