93 parameter( nsubs = 6 )
94 DOUBLE PRECISION zero, one
95 parameter( zero = 0.0d0, one = 1.0d0 )
97 parameter( nmax = 65 )
98 INTEGER nidmax, nalmax, nbemax
99 parameter( nidmax = 9, nalmax = 7, nbemax = 7 )
101 DOUBLE PRECISION eps, err, thresh
102 INTEGER i, isnum, j, n, nalf, nbet, nidim, nout, ntra
103 LOGICAL fatal, ltestt, rewi, same, sfatal, trace,
105 CHARACTER*1 transa, transb
107 CHARACTER*32 snaps, summry
109 DOUBLE PRECISION aa( nmax*nmax ), ab( nmax, 2*nmax ),
110 $ alf( nalmax ), as( nmax*nmax ),
111 $ bb( nmax*nmax ), bet( nbemax ),
112 $ bs( nmax*nmax ), c( nmax, nmax ),
113 $ cc( nmax*nmax ), cs( nmax*nmax ), ct( nmax ),
114 $ g( nmax ), w( 2*nmax )
115 INTEGER idim( nidmax )
116 LOGICAL ltest( nsubs )
117 CHARACTER*6 snames( nsubs )
119 DOUBLE PRECISION ddiff
131 COMMON /infoc/infot, noutc, ok, lerr
132 COMMON /srnamc/srnamt
134 DATA snames/
'DGEMM ',
'DSYMM ',
'DTRMM ',
'DTRSM ',
135 $
'DSYRK ',
'DSYR2K'/
140 READ( nin, fmt = * )summry
141 READ( nin, fmt = * )nout
142 OPEN( nout, file = summry, status =
'UNKNOWN' )
147 READ( nin, fmt = * )snaps
148 READ( nin, fmt = * )ntra
151 OPEN( ntra, file = snaps, status =
'UNKNOWN' )
154 READ( nin, fmt = * )rewi
155 rewi = rewi.AND.trace
157 READ( nin, fmt = * )sfatal
159 READ( nin, fmt = * )tsterr
161 READ( nin, fmt = * )thresh
166 READ( nin, fmt = * )nidim
167 IF( nidim.LT.1.OR.nidim.GT.nidmax )
THEN
168 WRITE( nout, fmt = 9997 )
'N', nidmax
171 READ( nin, fmt = * )( idim( i ), i = 1, nidim )
173 IF( idim( i ).LT.0.OR.idim( i ).GT.nmax )
THEN
174 WRITE( nout, fmt = 9996 )nmax
179 READ( nin, fmt = * )nalf
180 IF( nalf.LT.1.OR.nalf.GT.nalmax )
THEN
181 WRITE( nout, fmt = 9997 )
'ALPHA', nalmax
184 READ( nin, fmt = * )( alf( i ), i = 1, nalf )
186 READ( nin, fmt = * )nbet
187 IF( nbet.LT.1.OR.nbet.GT.nbemax )
THEN
188 WRITE( nout, fmt = 9997 )
'BETA', nbemax
191 READ( nin, fmt = * )( bet( i ), i = 1, nbet )
195 WRITE( nout, fmt = 9995 )
196 WRITE( nout, fmt = 9994 )( idim( i ), i = 1, nidim )
197 WRITE( nout, fmt = 9993 )( alf( i ), i = 1, nalf )
198 WRITE( nout, fmt = 9992 )( bet( i ), i = 1, nbet )
199 IF( .NOT.tsterr )
THEN
200 WRITE( nout, fmt = * )
201 WRITE( nout, fmt = 9984 )
203 WRITE( nout, fmt = * )
204 WRITE( nout, fmt = 9999 )thresh
205 WRITE( nout, fmt = * )
213 30
READ( nin, fmt = 9988,
END = 60 )SNAMET, ltestt
215 IF( snamet.EQ.snames( i ) )
218 WRITE( nout, fmt = 9990 )snamet
220 50 ltest( i ) = ltestt
229 WRITE( nout, fmt = 9998 )eps
236 ab( i, j ) = max( i - j + 1, 0 )
238 ab( j, nmax + 1 ) = j
239 ab( 1, nmax + j ) = j
243 cc( j ) = j*( ( j + 1 )*j )/2 - ( ( j + 1 )*j*( j - 1 ) )/3
249 CALL dmmch( transa, transb, n, 1, n, one, ab, nmax,
250 $ ab( 1, nmax + 1 ), nmax, zero, c, nmax, ct, g, cc,
251 $ nmax, eps, err, fatal, nout, .true. )
252 same =
lde( cc, ct, n )
253 IF( .NOT.same.OR.err.NE.zero )
THEN
254 WRITE( nout, fmt = 9989 )transa, transb, same, err
258 CALL dmmch( transa, transb, n, 1, n, one, ab, nmax,
259 $ ab( 1, nmax + 1 ), nmax, zero, c, nmax, ct, g, cc,
260 $ nmax, eps, err, fatal, nout, .true. )
261 same =
lde( cc, ct, n )
262 IF( .NOT.same.OR.err.NE.zero )
THEN
263 WRITE( nout, fmt = 9989 )transa, transb, same, err
267 ab( j, nmax + 1 ) = n - j + 1
268 ab( 1, nmax + j ) = n - j + 1
271 cc( n - j + 1 ) = j*( ( j + 1 )*j )/2 -
272 $ ( ( j + 1 )*j*( j - 1 ) )/3
276 CALL dmmch( transa, transb, n, 1, n, one, ab, nmax,
277 $ ab( 1, nmax + 1 ), nmax, zero, c, nmax, ct, g, cc,
278 $ nmax, eps, err, fatal, nout, .true. )
279 same =
lde( cc, ct, n )
280 IF( .NOT.same.OR.err.NE.zero )
THEN
281 WRITE( nout, fmt = 9989 )transa, transb, same, err
285 CALL dmmch( transa, transb, n, 1, n, one, ab, nmax,
286 $ ab( 1, nmax + 1 ), nmax, zero, c, nmax, ct, g, cc,
287 $ nmax, eps, err, fatal, nout, .true. )
288 same =
lde( cc, ct, n )
289 IF( .NOT.same.OR.err.NE.zero )
THEN
290 WRITE( nout, fmt = 9989 )transa, transb, same, err
296 DO 200 isnum = 1, nsubs
297 WRITE( nout, fmt = * )
298 IF( .NOT.ltest( isnum ) )
THEN
300 WRITE( nout, fmt = 9987 )snames( isnum )
302 srnamt = snames( isnum )
305 CALL dchke( isnum, snames( isnum ), nout )
306 WRITE( nout, fmt = * )
312 GO TO ( 140, 150, 160, 160, 170, 180 )isnum
314 140
CALL dchk1( snames( isnum ), eps, thresh, nout, ntra, trace,
315 $ rewi, fatal, nidim, idim, nalf, alf, nbet, bet,
316 $ nmax, ab, aa, as, ab( 1, nmax + 1 ), bb, bs, c,
320 150
CALL dchk2( snames( isnum ), eps, thresh, nout, ntra, trace,
321 $ rewi, fatal, nidim, idim, nalf, alf, nbet, bet,
322 $ nmax, ab, aa, as, ab( 1, nmax + 1 ), bb, bs, c,
326 160
CALL dchk3( snames( isnum ), eps, thresh, nout, ntra, trace,
327 $ rewi, fatal, nidim, idim, nalf, alf, nmax, ab,
328 $ aa, as, ab( 1, nmax + 1 ), bb, bs, ct, g, c )
331 170
CALL dchk4( snames( isnum ), eps, thresh, nout, ntra, trace,
332 $ rewi, fatal, nidim, idim, nalf, alf, nbet, bet,
333 $ nmax, ab, aa, as, ab( 1, nmax + 1 ), bb, bs, c,
337 180
CALL dchk5( snames( isnum ), eps, thresh, nout, ntra, trace,
338 $ rewi, fatal, nidim, idim, nalf, alf, nbet, bet,
339 $ nmax, ab, aa, as, bb, bs, c, cc, cs, ct, g, w )
342 190
IF( fatal.AND.sfatal )
346 WRITE( nout, fmt = 9986 )
350 WRITE( nout, fmt = 9985 )
354 WRITE( nout, fmt = 9991 )
362 9999
FORMAT(
' ROUTINES PASS COMPUTATIONAL TESTS IF TEST RATIO IS LES',
364 9998
FORMAT(
' RELATIVE MACHINE PRECISION IS TAKEN TO BE', 1p, d9.1 )
365 9997
FORMAT(
' NUMBER OF VALUES OF ', a,
' IS LESS THAN 1 OR GREATER ',
367 9996
FORMAT(
' VALUE OF N IS LESS THAN 0 OR GREATER THAN ', i2 )
368 9995
FORMAT(
' TESTS OF THE DOUBLE PRECISION LEVEL 3 BLAS', //
' THE F',
369 $
'OLLOWING PARAMETER VALUES WILL BE USED:' )
370 9994
FORMAT(
' FOR N ', 9i6 )
371 9993
FORMAT(
' FOR ALPHA ', 7f6.1 )
372 9992
FORMAT(
' FOR BETA ', 7f6.1 )
373 9991
FORMAT(
' AMEND DATA FILE OR INCREASE ARRAY SIZES IN PROGRAM',
374 $ /
' ******* TESTS ABANDONED *******' )
375 9990
FORMAT(
' SUBPROGRAM NAME ', a6,
' NOT RECOGNIZED', /
' ******* T',
376 $
'ESTS ABANDONED *******' )
377 9989
FORMAT(
' ERROR IN DMMCH - IN-LINE DOT PRODUCTS ARE BEING EVALU',
378 $
'ATED WRONGLY.', /
' DMMCH WAS CALLED WITH TRANSA = ', a1,
379 $
' AND TRANSB = ', a1, /
' AND RETURNED SAME = ', l1,
' AND ',
380 $
'ERR = ', f12.3,
'.', /
' THIS MAY BE DUE TO FAULTS IN THE ',
381 $
'ARITHMETIC OR THE COMPILER.', /
' ******* TESTS ABANDONED ',
383 9988
FORMAT( a6, l2 )
384 9987
FORMAT( 1x, a6,
' WAS NOT TESTED' )
385 9986
FORMAT( /
' END OF TESTS' )
386 9985
FORMAT( /
' ******* FATAL ERROR - TESTS ABANDONED *******' )
387 9984
FORMAT(
' ERROR-EXITS WILL NOT BE TESTED' )
392 SUBROUTINE dchk1( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
393 $ FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, NMAX,
394 $ A, AA, AS, B, BB, BS, C, CC, CS, CT, G )
407 DOUBLE PRECISION ZERO
408 PARAMETER ( ZERO = 0.0d0 )
410 DOUBLE PRECISION EPS, THRESH
411 INTEGER NALF, NBET, NIDIM, NMAX, NOUT, NTRA
412 LOGICAL FATAL, REWI, TRACE
415 DOUBLE PRECISION A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
416 $ AS( NMAX*NMAX ), B( NMAX, NMAX ),
417 $ bb( nmax*nmax ), bet( nbet ), bs( nmax*nmax ),
418 $ c( nmax, nmax ), cc( nmax*nmax ),
419 $ cs( nmax*nmax ), ct( nmax ), g( nmax )
420 INTEGER IDIM( NIDIM )
422 DOUBLE PRECISION ALPHA, ALS, BETA, BLS, ERR, ERRMAX
423 INTEGER I, IA, IB, ICA, ICB, IK, IM, IN, K, KS, LAA,
424 $ lbb, lcc, lda, ldas, ldb, ldbs, ldc, ldcs, m,
425 $ ma, mb, ms, n, na, nargs, nb, nc, ns
426 LOGICAL NULL, RESET, SAME, TRANA, TRANB
427 CHARACTER*1 TRANAS, TRANBS, TRANSA, TRANSB
442 COMMON /infoc/infot, noutc, ok, lerr
465 null = n.LE.0.OR.m.LE.0
471 transa = ich( ica: ica )
472 trana = transa.EQ.
'T'.OR.transa.EQ.
'C'
492 CALL dmake(
'GE',
' ',
' ', ma, na, a, nmax, aa, lda,
496 transb = ich( icb: icb )
497 tranb = transb.EQ.
'T'.OR.transb.EQ.
'C'
517 CALL dmake(
'GE',
' ',
' ', mb, nb, b, nmax, bb,
528 CALL dmake(
'GE',
' ',
' ', m, n, c, nmax,
529 $ cc, ldc, reset, zero )
559 $
WRITE( ntra, fmt = 9995 )nc, sname,
560 $ transa, transb, m, n, k, alpha, lda, ldb,
564 CALL dgemm( transa, transb, m, n, k, alpha,
565 $ aa, lda, bb, ldb, beta, cc, ldc )
570 WRITE( nout, fmt = 9994 )
577 isame( 1 ) = transa.EQ.tranas
578 isame( 2 ) = transb.EQ.tranbs
582 isame( 6 ) = als.EQ.alpha
583 isame( 7 ) = lde( as, aa, laa )
584 isame( 8 ) = ldas.EQ.lda
585 isame( 9 ) = lde( bs, bb, lbb )
586 isame( 10 ) = ldbs.EQ.ldb
587 isame( 11 ) = bls.EQ.beta
589 isame( 12 ) = lde( cs, cc, lcc )
591 isame( 12 ) = lderes(
'GE',
' ', m, n, cs,
594 isame( 13 ) = ldcs.EQ.ldc
601 same = same.AND.isame( i )
602 IF( .NOT.isame( i ) )
603 $
WRITE( nout, fmt = 9998 )i
614 CALL dmmch( transa, transb, m, n, k,
615 $ alpha, a, nmax, b, nmax, beta,
616 $ c, nmax, ct, g, cc, ldc, eps,
617 $ err, fatal, nout, .true. )
618 errmax = max( errmax, err )
641 IF( errmax.LT.thresh )
THEN
642 WRITE( nout, fmt = 9999 )sname, nc
644 WRITE( nout, fmt = 9997 )sname, nc, errmax
649 WRITE( nout, fmt = 9996 )sname
650 WRITE( nout, fmt = 9995 )nc, sname, transa, transb, m, n, k,
651 $ alpha, lda, ldb, beta, ldc
656 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
658 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
659 $
'ANGED INCORRECTLY *******' )
660 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
661 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
662 $
' - SUSPECT *******' )
663 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
664 9995
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',''', a1,
''',',
665 $ 3( i3,
',' ), f4.1,
', A,', i3,
', B,', i3,
',', f4.1,
', ',
667 9994
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
673 SUBROUTINE dchk2( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
674 $ FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, NMAX,
675 $ A, AA, AS, B, BB, BS, C, CC, CS, CT, G )
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 *',
943 SUBROUTINE dchk3( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
944 $ FATAL, NIDIM, IDIM, NALF, ALF, NMAX, A, AA, AS,
945 $ B, BB, BS, CT, G, C )
958 DOUBLE PRECISION ZERO, ONE
959 PARAMETER ( ZERO = 0.0d0, one = 1.0d0 )
961 DOUBLE PRECISION EPS, THRESH
962 INTEGER NALF, NIDIM, NMAX, NOUT, NTRA
963 LOGICAL FATAL, REWI, TRACE
966 DOUBLE PRECISION A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
967 $ as( nmax*nmax ), b( nmax, nmax ),
968 $ bb( nmax*nmax ), bs( nmax*nmax ),
969 $ c( nmax, nmax ), ct( nmax ), g( nmax )
970 INTEGER IDIM( NIDIM )
972 DOUBLE PRECISION ALPHA, ALS, ERR, ERRMAX
973 INTEGER I, IA, ICD, ICS, ICT, ICU, IM, IN, J, LAA, LBB,
974 $ LDA, LDAS, LDB, LDBS, M, MS, N, NA, NARGS, NC,
976 LOGICAL LEFT, NULL, RESET, SAME
977 CHARACTER*1 DIAG, DIAGS, SIDE, SIDES, TRANAS, TRANSA, UPLO,
979 CHARACTER*2 ICHD, ICHS, ICHU
994 COMMON /infoc/infot, noutc, ok, lerr
996 DATA ichu/
'UL'/, icht/
'NTC'/, ichd/
'UN'/, ichs/
'LR'/
1010 DO 140 im = 1, nidim
1013 DO 130 in = 1, nidim
1023 null = m.LE.0.OR.n.LE.0
1026 side = ichs( ics: ics )
1043 uplo = ichu( icu: icu )
1046 transa = icht( ict: ict )
1049 diag = ichd( icd: icd )
1056 CALL dmake(
'TR', uplo, diag, na, na, a,
1057 $ nmax, aa, lda, reset, zero )
1061 CALL dmake(
'GE',
' ',
' ', m, n, b, nmax,
1062 $ bb, ldb, reset, zero )
1087 IF( sname( 4: 5 ).EQ.
'MM' )
THEN
1089 $
WRITE( ntra, fmt = 9995 )nc, sname,
1090 $ side, uplo, transa, diag, m, n, alpha,
1094 CALL dtrmm( side, uplo, transa, diag, m,
1095 $ n, alpha, aa, lda, bb, ldb )
1096 ELSE IF( sname( 4: 5 ).EQ.
'SM' )
THEN
1098 $
WRITE( ntra, fmt = 9995 )nc, sname,
1099 $ side, uplo, transa, diag, m, n, alpha,
1103 CALL dtrsm( side, uplo, transa, diag, m,
1104 $ n, alpha, aa, lda, bb, ldb )
1110 WRITE( nout, fmt = 9994 )
1117 isame( 1 ) = sides.EQ.side
1118 isame( 2 ) = uplos.EQ.uplo
1119 isame( 3 ) = tranas.EQ.transa
1120 isame( 4 ) = diags.EQ.diag
1121 isame( 5 ) = ms.EQ.m
1122 isame( 6 ) = ns.EQ.n
1123 isame( 7 ) = als.EQ.alpha
1124 isame( 8 ) = lde( as, aa, laa )
1125 isame( 9 ) = ldas.EQ.lda
1127 isame( 10 ) = lde( bs, bb, lbb )
1129 isame( 10 ) = lderes(
'GE',
' ', m, n, bs,
1132 isame( 11 ) = ldbs.EQ.ldb
1139 same = same.AND.isame( i )
1140 IF( .NOT.isame( i ) )
1141 $
WRITE( nout, fmt = 9998 )i
1149 IF( sname( 4: 5 ).EQ.
'MM' )
THEN
1154 CALL dmmch( transa,
'N', m, n, m,
1155 $ alpha, a, nmax, b, nmax,
1156 $ zero, c, nmax, ct, g,
1157 $ bb, ldb, eps, err,
1158 $ fatal, nout, .true. )
1160 CALL dmmch(
'N', transa, m, n, n,
1161 $ alpha, b, nmax, a, nmax,
1162 $ zero, c, nmax, ct, g,
1163 $ bb, ldb, eps, err,
1164 $ fatal, nout, .true. )
1166 ELSE IF( sname( 4: 5 ).EQ.
'SM' )
THEN
1173 c( i, j ) = bb( i + ( j - 1 )*
1175 bb( i + ( j - 1 )*ldb ) = alpha*
1181 CALL dmmch( transa,
'N', m, n, m,
1182 $ one, a, nmax, c, nmax,
1183 $ zero, b, nmax, ct, g,
1184 $ bb, ldb, eps, err,
1185 $ fatal, nout, .false. )
1187 CALL dmmch(
'N', transa, m, n, n,
1188 $ one, c, nmax, a, nmax,
1189 $ zero, b, nmax, ct, g,
1190 $ bb, ldb, eps, err,
1191 $ fatal, nout, .false. )
1194 errmax = max( errmax, err )
1217 IF( errmax.LT.thresh )
THEN
1218 WRITE( nout, fmt = 9999 )sname, nc
1220 WRITE( nout, fmt = 9997 )sname, nc, errmax
1225 WRITE( nout, fmt = 9996 )sname
1226 WRITE( nout, fmt = 9995 )nc, sname, side, uplo, transa, diag, m,
1227 $ n, alpha, lda, ldb
1232 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
1234 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
1235 $
'ANGED INCORRECTLY *******' )
1236 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
1237 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
1238 $
' - SUSPECT *******' )
1239 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
1240 9995
FORMAT( 1x, i6,
': ', a6,
'(', 4(
'''', a1,
''',' ), 2( i3,
',' ),
1241 $ f4.1,
', A,', i3,
', B,', i3,
') .' )
1242 9994
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
1248 SUBROUTINE dchk4( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
1249 $ FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, NMAX,
1250 $ A, AA, AS, B, BB, BS, C, CC, CS, CT, G )
1263 DOUBLE PRECISION ZERO
1264 PARAMETER ( ZERO = 0.0d0 )
1266 DOUBLE PRECISION EPS, THRESH
1267 INTEGER NALF, NBET, NIDIM, NMAX, NOUT, NTRA
1268 LOGICAL FATAL, REWI, TRACE
1271 DOUBLE PRECISION A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
1272 $ as( nmax*nmax ), b( nmax, nmax ),
1273 $ bb( nmax*nmax ), bet( nbet ), bs( nmax*nmax ),
1274 $ c( nmax, nmax ), cc( nmax*nmax ),
1275 $ cs( nmax*nmax ), ct( nmax ), g( nmax )
1276 INTEGER IDIM( NIDIM )
1278 DOUBLE PRECISION ALPHA, ALS, BETA, BETS, ERR, ERRMAX
1279 INTEGER I, IA, IB, ICT, ICU, IK, IN, J, JC, JJ, K, KS,
1280 $ LAA, LCC, LDA, LDAS, LDC, LDCS, LJ, MA, N, NA,
1282 LOGICAL NULL, RESET, SAME, TRAN, UPPER
1283 CHARACTER*1 TRANS, TRANSS, UPLO, UPLOS
1290 EXTERNAL lde, lderes
1296 INTEGER INFOT, NOUTC
1299 COMMON /infoc/infot, noutc, ok, lerr
1301 DATA icht/
'NTC'/, ichu/
'UL'/
1309 DO 100 in = 1, nidim
1325 trans = icht( ict: ict )
1326 tran = trans.EQ.
'T'.OR.trans.EQ.
'C'
1345 CALL dmake(
'GE',
' ',
' ', ma, na, a, nmax, aa, lda,
1349 uplo = ichu( icu: icu )
1360 CALL dmake(
'SY', uplo,
' ', n, n, c, nmax, cc,
1361 $ ldc, reset, zero )
1385 $
WRITE( ntra, fmt = 9994 )nc, sname, uplo,
1386 $ trans, n, k, alpha, lda, beta, ldc
1389 CALL dsyrk( uplo, trans, n, k, alpha, aa, lda,
1395 WRITE( nout, fmt = 9993 )
1402 isame( 1 ) = uplos.EQ.uplo
1403 isame( 2 ) = transs.EQ.trans
1404 isame( 3 ) = ns.EQ.n
1405 isame( 4 ) = ks.EQ.k
1406 isame( 5 ) = als.EQ.alpha
1407 isame( 6 ) = lde( as, aa, laa )
1408 isame( 7 ) = ldas.EQ.lda
1409 isame( 8 ) = bets.EQ.beta
1411 isame( 9 ) = lde( cs, cc, lcc )
1413 isame( 9 ) = lderes(
'SY', uplo, n, n, cs,
1416 isame( 10 ) = ldcs.EQ.ldc
1423 same = same.AND.isame( i )
1424 IF( .NOT.isame( i ) )
1425 $
WRITE( nout, fmt = 9998 )i
1446 CALL dmmch(
'T',
'N', lj, 1, k, alpha,
1448 $ a( 1, j ), nmax, beta,
1449 $ c( jj, j ), nmax, ct, g,
1450 $ cc( jc ), ldc, eps, err,
1451 $ fatal, nout, .true. )
1453 CALL dmmch(
'N',
'T', lj, 1, k, alpha,
1455 $ a( j, 1 ), nmax, beta,
1456 $ c( jj, j ), nmax, ct, g,
1457 $ cc( jc ), ldc, eps, err,
1458 $ fatal, nout, .true. )
1465 errmax = max( errmax, err )
1487 IF( errmax.LT.thresh )
THEN
1488 WRITE( nout, fmt = 9999 )sname, nc
1490 WRITE( nout, fmt = 9997 )sname, nc, errmax
1496 $
WRITE( nout, fmt = 9995 )j
1499 WRITE( nout, fmt = 9996 )sname
1500 WRITE( nout, fmt = 9994 )nc, sname, uplo, trans, n, k, alpha,
1506 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
1508 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
1509 $
'ANGED INCORRECTLY *******' )
1510 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
1511 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
1512 $
' - SUSPECT *******' )
1513 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
1514 9995
FORMAT(
' THESE ARE THE RESULTS FOR COLUMN ', i3 )
1515 9994
FORMAT( 1x, i6,
': ', a6,
'(', 2(
'''', a1,
''',' ), 2( i3,
',' ),
1516 $ f4.1,
', A,', i3,
',', f4.1,
', C,', i3,
') .' )
1517 9993
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
1523 SUBROUTINE dchk5( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
1524 $ FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, NMAX,
1525 $ AB, AA, AS, BB, BS, C, CC, CS, CT, G, W )
1538 DOUBLE PRECISION ZERO
1539 PARAMETER ( ZERO = 0.0d0 )
1541 DOUBLE PRECISION EPS, THRESH
1542 INTEGER NALF, NBET, NIDIM, NMAX, NOUT, NTRA
1543 LOGICAL FATAL, REWI, TRACE
1546 DOUBLE PRECISION AA( NMAX*NMAX ), AB( 2*NMAX*NMAX ),
1547 $ ALF( NALF ), AS( NMAX*NMAX ), BB( NMAX*NMAX ),
1548 $ bet( nbet ), bs( nmax*nmax ), c( nmax, nmax ),
1549 $ cc( nmax*nmax ), cs( nmax*nmax ), ct( nmax ),
1550 $ g( nmax ), w( 2*nmax )
1551 INTEGER IDIM( NIDIM )
1553 DOUBLE PRECISION ALPHA, ALS, BETA, BETS, ERR, ERRMAX
1554 INTEGER I, IA, IB, ICT, ICU, IK, IN, J, JC, JJ, JJAB,
1555 $ K, KS, LAA, LBB, LCC, LDA, LDAS, LDB, LDBS,
1556 $ ldc, ldcs, lj, ma, n, na, nargs, nc, ns
1557 LOGICAL NULL, RESET, SAME, TRAN, UPPER
1558 CHARACTER*1 TRANS, TRANSS, UPLO, UPLOS
1565 EXTERNAL LDE, LDERES
1571 INTEGER INFOT, NOUTC
1574 COMMON /infoc/infot, noutc, ok, lerr
1576 DATA icht/
'NTC'/, ichu/
'UL'/
1584 DO 130 in = 1, nidim
1596 DO 120 ik = 1, nidim
1600 trans = icht( ict: ict )
1601 tran = trans.EQ.
'T'.OR.trans.EQ.
'C'
1621 CALL dmake(
'GE',
' ',
' ', ma, na, ab, 2*nmax, aa,
1622 $ lda, reset, zero )
1624 CALL dmake(
'GE',
' ',
' ', ma, na, ab, nmax, aa, lda,
1633 CALL dmake(
'GE',
' ',
' ', ma, na, ab( k + 1 ),
1634 $ 2*nmax, bb, ldb, reset, zero )
1636 CALL dmake(
'GE',
' ',
' ', ma, na, ab( k*nmax + 1 ),
1637 $ nmax, bb, ldb, reset, zero )
1641 uplo = ichu( icu: icu )
1652 CALL dmake(
'SY', uplo,
' ', n, n, c, nmax, cc,
1653 $ ldc, reset, zero )
1681 $
WRITE( ntra, fmt = 9994 )nc, sname, uplo,
1682 $ trans, n, k, alpha, lda, ldb, beta, ldc
1685 CALL dsyr2k( uplo, trans, n, k, alpha, aa, lda,
1686 $ bb, ldb, beta, cc, ldc )
1691 WRITE( nout, fmt = 9993 )
1698 isame( 1 ) = uplos.EQ.uplo
1699 isame( 2 ) = transs.EQ.trans
1700 isame( 3 ) = ns.EQ.n
1701 isame( 4 ) = ks.EQ.k
1702 isame( 5 ) = als.EQ.alpha
1703 isame( 6 ) = lde( as, aa, laa )
1704 isame( 7 ) = ldas.EQ.lda
1705 isame( 8 ) = lde( bs, bb, lbb )
1706 isame( 9 ) = ldbs.EQ.ldb
1707 isame( 10 ) = bets.EQ.beta
1709 isame( 11 ) = lde( cs, cc, lcc )
1711 isame( 11 ) = lderes(
'SY', uplo, n, n, cs,
1714 isame( 12 ) = ldcs.EQ.ldc
1721 same = same.AND.isame( i )
1722 IF( .NOT.isame( i ) )
1723 $
WRITE( nout, fmt = 9998 )i
1746 w( i ) = ab( ( j - 1 )*2*nmax + k +
1748 w( k + i ) = ab( ( j - 1 )*2*nmax +
1751 CALL dmmch(
'T',
'N', lj, 1, 2*k,
1752 $ alpha, ab( jjab ), 2*nmax,
1754 $ c( jj, j ), nmax, ct, g,
1755 $ cc( jc ), ldc, eps, err,
1756 $ fatal, nout, .true. )
1759 w( i ) = ab( ( k + i - 1 )*nmax +
1761 w( k + i ) = ab( ( i - 1 )*nmax +
1764 CALL dmmch(
'N',
'N', lj, 1, 2*k,
1765 $ alpha, ab( jj ), nmax, w,
1766 $ 2*nmax, beta, c( jj, j ),
1767 $ nmax, ct, g, cc( jc ), ldc,
1768 $ eps, err, fatal, nout,
1776 $ jjab = jjab + 2*nmax
1778 errmax = max( errmax, err )
1800 IF( errmax.LT.thresh )
THEN
1801 WRITE( nout, fmt = 9999 )sname, nc
1803 WRITE( nout, fmt = 9997 )sname, nc, errmax
1809 $
WRITE( nout, fmt = 9995 )j
1812 WRITE( nout, fmt = 9996 )sname
1813 WRITE( nout, fmt = 9994 )nc, sname, uplo, trans, n, k, alpha,
1814 $ lda, ldb, beta, ldc
1819 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
1821 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
1822 $
'ANGED INCORRECTLY *******' )
1823 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
1824 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
1825 $
' - SUSPECT *******' )
1826 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
1827 9995
FORMAT(
' THESE ARE THE RESULTS FOR COLUMN ', i3 )
1828 9994
FORMAT( 1x, i6,
': ', a6,
'(', 2(
'''', a1,
''',' ), 2( i3,
',' ),
1829 $ f4.1,
', A,', i3,
', B,', i3,
',', f4.1,
', C,', i3,
') ',
1831 9993
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
1858 INTEGER INFOT, NOUTC
1861 DOUBLE PRECISION ONE, TWO
1862 PARAMETER ( ONE = 1.0d0, two = 2.0d0 )
1864 DOUBLE PRECISION ALPHA, BETA
1866 DOUBLE PRECISION A( 2, 1 ), B( 2, 1 ), C( 2, 1 )
1871 COMMON /infoc/infot, noutc, ok, lerr
1885 GO TO ( 10, 20, 30, 40, 50, 60 )isnum
1887 CALL dgemm(
'/',
'N', 0, 0, 0, alpha, a, 1, b, 1, beta, c, 1 )
1888 CALL chkxer( srnamt, infot, nout, lerr, ok )
1890 CALL dgemm(
'/',
'T', 0, 0, 0, alpha, a, 1, b, 1, beta, c, 1 )
1891 CALL chkxer( srnamt, infot, nout, lerr, ok )
1893 CALL dgemm(
'N',
'/', 0, 0, 0, alpha, a, 1, b, 1, beta, c, 1 )
1894 CALL chkxer( srnamt, infot, nout, lerr, ok )
1896 CALL dgemm(
'T',
'/', 0, 0, 0, alpha, a, 1, b, 1, beta, c, 1 )
1897 CALL chkxer( srnamt, infot, nout, lerr, ok )
1899 CALL dgemm(
'N',
'N', -1, 0, 0, alpha, a, 1, b, 1, beta, c, 1 )
1900 CALL chkxer( srnamt, infot, nout, lerr, ok )
1902 CALL dgemm(
'N',
'T', -1, 0, 0, alpha, a, 1, b, 1, beta, c, 1 )
1903 CALL chkxer( srnamt, infot, nout, lerr, ok )
1905 CALL dgemm(
'T',
'N', -1, 0, 0, alpha, a, 1, b, 1, beta, c, 1 )
1906 CALL chkxer( srnamt, infot, nout, lerr, ok )
1908 CALL dgemm(
'T',
'T', -1, 0, 0, alpha, a, 1, b, 1, beta, c, 1 )
1909 CALL chkxer( srnamt, infot, nout, lerr, ok )
1911 CALL dgemm(
'N',
'N', 0, -1, 0, alpha, a, 1, b, 1, beta, c, 1 )
1912 CALL chkxer( srnamt, infot, nout, lerr, ok )
1914 CALL dgemm(
'N',
'T', 0, -1, 0, alpha, a, 1, b, 1, beta, c, 1 )
1915 CALL chkxer( srnamt, infot, nout, lerr, ok )
1917 CALL dgemm(
'T',
'N', 0, -1, 0, alpha, a, 1, b, 1, beta, c, 1 )
1918 CALL chkxer( srnamt, infot, nout, lerr, ok )
1920 CALL dgemm(
'T',
'T', 0, -1, 0, alpha, a, 1, b, 1, beta, c, 1 )
1921 CALL chkxer( srnamt, infot, nout, lerr, ok )
1923 CALL dgemm(
'N',
'N', 0, 0, -1, alpha, a, 1, b, 1, beta, c, 1 )
1924 CALL chkxer( srnamt, infot, nout, lerr, ok )
1926 CALL dgemm(
'N',
'T', 0, 0, -1, alpha, a, 1, b, 1, beta, c, 1 )
1927 CALL chkxer( srnamt, infot, nout, lerr, ok )
1929 CALL dgemm(
'T',
'N', 0, 0, -1, alpha, a, 1, b, 1, beta, c, 1 )
1930 CALL chkxer( srnamt, infot, nout, lerr, ok )
1932 CALL dgemm(
'T',
'T', 0, 0, -1, alpha, a, 1, b, 1, beta, c, 1 )
1933 CALL chkxer( srnamt, infot, nout, lerr, ok )
1935 CALL dgemm(
'N',
'N', 2, 0, 0, alpha, a, 1, b, 1, beta, c, 2 )
1936 CALL chkxer( srnamt, infot, nout, lerr, ok )
1938 CALL dgemm(
'N',
'T', 2, 0, 0, alpha, a, 1, b, 1, beta, c, 2 )
1939 CALL chkxer( srnamt, infot, nout, lerr, ok )
1941 CALL dgemm(
'T',
'N', 0, 0, 2, alpha, a, 1, b, 2, beta, c, 1 )
1942 CALL chkxer( srnamt, infot, nout, lerr, ok )
1944 CALL dgemm(
'T',
'T', 0, 0, 2, alpha, a, 1, b, 1, beta, c, 1 )
1945 CALL chkxer( srnamt, infot, nout, lerr, ok )
1947 CALL dgemm(
'N',
'N', 0, 0, 2, alpha, a, 1, b, 1, beta, c, 1 )
1948 CALL chkxer( srnamt, infot, nout, lerr, ok )
1950 CALL dgemm(
'T',
'N', 0, 0, 2, alpha, a, 2, b, 1, beta, c, 1 )
1951 CALL chkxer( srnamt, infot, nout, lerr, ok )
1953 CALL dgemm(
'N',
'T', 0, 2, 0, alpha, a, 1, b, 1, beta, c, 1 )
1954 CALL chkxer( srnamt, infot, nout, lerr, ok )
1956 CALL dgemm(
'T',
'T', 0, 2, 0, alpha, a, 1, b, 1, beta, c, 1 )
1957 CALL chkxer( srnamt, infot, nout, lerr, ok )
1959 CALL dgemm(
'N',
'N', 2, 0, 0, alpha, a, 2, b, 1, beta, c, 1 )
1960 CALL chkxer( srnamt, infot, nout, lerr, ok )
1962 CALL dgemm(
'N',
'T', 2, 0, 0, alpha, a, 2, b, 1, beta, c, 1 )
1963 CALL chkxer( srnamt, infot, nout, lerr, ok )
1965 CALL dgemm(
'T',
'N', 2, 0, 0, alpha, a, 1, b, 1, beta, c, 1 )
1966 CALL chkxer( srnamt, infot, nout, lerr, ok )
1968 CALL dgemm(
'T',
'T', 2, 0, 0, alpha, a, 1, b, 1, beta, c, 1 )
1969 CALL chkxer( srnamt, infot, nout, lerr, ok )
1972 CALL dsymm(
'/',
'U', 0, 0, alpha, a, 1, b, 1, beta, c, 1 )
1973 CALL chkxer( srnamt, infot, nout, lerr, ok )
1975 CALL dsymm(
'L',
'/', 0, 0, alpha, a, 1, b, 1, beta, c, 1 )
1976 CALL chkxer( srnamt, infot, nout, lerr, ok )
1978 CALL dsymm(
'L',
'U', -1, 0, alpha, a, 1, b, 1, beta, c, 1 )
1979 CALL chkxer( srnamt, infot, nout, lerr, ok )
1981 CALL dsymm(
'R',
'U', -1, 0, alpha, a, 1, b, 1, beta, c, 1 )
1982 CALL chkxer( srnamt, infot, nout, lerr, ok )
1984 CALL dsymm(
'L',
'L', -1, 0, alpha, a, 1, b, 1, beta, c, 1 )
1985 CALL chkxer( srnamt, infot, nout, lerr, ok )
1987 CALL dsymm(
'R',
'L', -1, 0, alpha, a, 1, b, 1, beta, c, 1 )
1988 CALL chkxer( srnamt, infot, nout, lerr, ok )
1990 CALL dsymm(
'L',
'U', 0, -1, alpha, a, 1, b, 1, beta, c, 1 )
1991 CALL chkxer( srnamt, infot, nout, lerr, ok )
1993 CALL dsymm(
'R',
'U', 0, -1, alpha, a, 1, b, 1, beta, c, 1 )
1994 CALL chkxer( srnamt, infot, nout, lerr, ok )
1996 CALL dsymm(
'L',
'L', 0, -1, alpha, a, 1, b, 1, beta, c, 1 )
1997 CALL chkxer( srnamt, infot, nout, lerr, ok )
1999 CALL dsymm(
'R',
'L', 0, -1, alpha, a, 1, b, 1, beta, c, 1 )
2000 CALL chkxer( srnamt, infot, nout, lerr, ok )
2002 CALL dsymm(
'L',
'U', 2, 0, alpha, a, 1, b, 2, beta, c, 2 )
2003 CALL chkxer( srnamt, infot, nout, lerr, ok )
2005 CALL dsymm(
'R',
'U', 0, 2, alpha, a, 1, b, 1, beta, c, 1 )
2006 CALL chkxer( srnamt, infot, nout, lerr, ok )
2008 CALL dsymm(
'L',
'L', 2, 0, alpha, a, 1, b, 2, beta, c, 2 )
2009 CALL chkxer( srnamt, infot, nout, lerr, ok )
2011 CALL dsymm(
'R',
'L', 0, 2, alpha, a, 1, b, 1, beta, c, 1 )
2012 CALL chkxer( srnamt, infot, nout, lerr, ok )
2014 CALL dsymm(
'L',
'U', 2, 0, alpha, a, 2, b, 1, beta, c, 2 )
2015 CALL chkxer( srnamt, infot, nout, lerr, ok )
2017 CALL dsymm(
'R',
'U', 2, 0, alpha, a, 1, b, 1, beta, c, 2 )
2018 CALL chkxer( srnamt, infot, nout, lerr, ok )
2020 CALL dsymm(
'L',
'L', 2, 0, alpha, a, 2, b, 1, beta, c, 2 )
2021 CALL chkxer( srnamt, infot, nout, lerr, ok )
2023 CALL dsymm(
'R',
'L', 2, 0, alpha, a, 1, b, 1, beta, c, 2 )
2024 CALL chkxer( srnamt, infot, nout, lerr, ok )
2026 CALL dsymm(
'L',
'U', 2, 0, alpha, a, 2, b, 2, beta, c, 1 )
2027 CALL chkxer( srnamt, infot, nout, lerr, ok )
2029 CALL dsymm(
'R',
'U', 2, 0, alpha, a, 1, b, 2, beta, c, 1 )
2030 CALL chkxer( srnamt, infot, nout, lerr, ok )
2032 CALL dsymm(
'L',
'L', 2, 0, alpha, a, 2, b, 2, beta, c, 1 )
2033 CALL chkxer( srnamt, infot, nout, lerr, ok )
2035 CALL dsymm(
'R',
'L', 2, 0, alpha, a, 1, b, 2, beta, c, 1 )
2036 CALL chkxer( srnamt, infot, nout, lerr, ok )
2039 CALL dtrmm(
'/',
'U',
'N',
'N', 0, 0, alpha, a, 1, b, 1 )
2040 CALL chkxer( srnamt, infot, nout, lerr, ok )
2042 CALL dtrmm(
'L',
'/',
'N',
'N', 0, 0, alpha, a, 1, b, 1 )
2043 CALL chkxer( srnamt, infot, nout, lerr, ok )
2045 CALL dtrmm(
'L',
'U',
'/',
'N', 0, 0, alpha, a, 1, b, 1 )
2046 CALL chkxer( srnamt, infot, nout, lerr, ok )
2048 CALL dtrmm(
'L',
'U',
'N',
'/', 0, 0, alpha, a, 1, b, 1 )
2049 CALL chkxer( srnamt, infot, nout, lerr, ok )
2051 CALL dtrmm(
'L',
'U',
'N',
'N', -1, 0, alpha, a, 1, b, 1 )
2052 CALL chkxer( srnamt, infot, nout, lerr, ok )
2054 CALL dtrmm(
'L',
'U',
'T',
'N', -1, 0, alpha, a, 1, b, 1 )
2055 CALL chkxer( srnamt, infot, nout, lerr, ok )
2057 CALL dtrmm(
'R',
'U',
'N',
'N', -1, 0, alpha, a, 1, b, 1 )
2058 CALL chkxer( srnamt, infot, nout, lerr, ok )
2060 CALL dtrmm(
'R',
'U',
'T',
'N', -1, 0, alpha, a, 1, b, 1 )
2061 CALL chkxer( srnamt, infot, nout, lerr, ok )
2063 CALL dtrmm(
'L',
'L',
'N',
'N', -1, 0, alpha, a, 1, b, 1 )
2064 CALL chkxer( srnamt, infot, nout, lerr, ok )
2066 CALL dtrmm(
'L',
'L',
'T',
'N', -1, 0, alpha, a, 1, b, 1 )
2067 CALL chkxer( srnamt, infot, nout, lerr, ok )
2069 CALL dtrmm(
'R',
'L',
'N',
'N', -1, 0, alpha, a, 1, b, 1 )
2070 CALL chkxer( srnamt, infot, nout, lerr, ok )
2072 CALL dtrmm(
'R',
'L',
'T',
'N', -1, 0, alpha, a, 1, b, 1 )
2073 CALL chkxer( srnamt, infot, nout, lerr, ok )
2075 CALL dtrmm(
'L',
'U',
'N',
'N', 0, -1, alpha, a, 1, b, 1 )
2076 CALL chkxer( srnamt, infot, nout, lerr, ok )
2078 CALL dtrmm(
'L',
'U',
'T',
'N', 0, -1, alpha, a, 1, b, 1 )
2079 CALL chkxer( srnamt, infot, nout, lerr, ok )
2081 CALL dtrmm(
'R',
'U',
'N',
'N', 0, -1, alpha, a, 1, b, 1 )
2082 CALL chkxer( srnamt, infot, nout, lerr, ok )
2084 CALL dtrmm(
'R',
'U',
'T',
'N', 0, -1, alpha, a, 1, b, 1 )
2085 CALL chkxer( srnamt, infot, nout, lerr, ok )
2087 CALL dtrmm(
'L',
'L',
'N',
'N', 0, -1, alpha, a, 1, b, 1 )
2088 CALL chkxer( srnamt, infot, nout, lerr, ok )
2090 CALL dtrmm(
'L',
'L',
'T',
'N', 0, -1, alpha, a, 1, b, 1 )
2091 CALL chkxer( srnamt, infot, nout, lerr, ok )
2093 CALL dtrmm(
'R',
'L',
'N',
'N', 0, -1, alpha, a, 1, b, 1 )
2094 CALL chkxer( srnamt, infot, nout, lerr, ok )
2096 CALL dtrmm(
'R',
'L',
'T',
'N', 0, -1, alpha, a, 1, b, 1 )
2097 CALL chkxer( srnamt, infot, nout, lerr, ok )
2099 CALL dtrmm(
'L',
'U',
'N',
'N', 2, 0, alpha, a, 1, b, 2 )
2100 CALL chkxer( srnamt, infot, nout, lerr, ok )
2102 CALL dtrmm(
'L',
'U',
'T',
'N', 2, 0, alpha, a, 1, b, 2 )
2103 CALL chkxer( srnamt, infot, nout, lerr, ok )
2105 CALL dtrmm(
'R',
'U',
'N',
'N', 0, 2, alpha, a, 1, b, 1 )
2106 CALL chkxer( srnamt, infot, nout, lerr, ok )
2108 CALL dtrmm(
'R',
'U',
'T',
'N', 0, 2, alpha, a, 1, b, 1 )
2109 CALL chkxer( srnamt, infot, nout, lerr, ok )
2111 CALL dtrmm(
'L',
'L',
'N',
'N', 2, 0, alpha, a, 1, b, 2 )
2112 CALL chkxer( srnamt, infot, nout, lerr, ok )
2114 CALL dtrmm(
'L',
'L',
'T',
'N', 2, 0, alpha, a, 1, b, 2 )
2115 CALL chkxer( srnamt, infot, nout, lerr, ok )
2117 CALL dtrmm(
'R',
'L',
'N',
'N', 0, 2, alpha, a, 1, b, 1 )
2118 CALL chkxer( srnamt, infot, nout, lerr, ok )
2120 CALL dtrmm(
'R',
'L',
'T',
'N', 0, 2, alpha, a, 1, b, 1 )
2121 CALL chkxer( srnamt, infot, nout, lerr, ok )
2123 CALL dtrmm(
'L',
'U',
'N',
'N', 2, 0, alpha, a, 2, b, 1 )
2124 CALL chkxer( srnamt, infot, nout, lerr, ok )
2126 CALL dtrmm(
'L',
'U',
'T',
'N', 2, 0, alpha, a, 2, b, 1 )
2127 CALL chkxer( srnamt, infot, nout, lerr, ok )
2129 CALL dtrmm(
'R',
'U',
'N',
'N', 2, 0, alpha, a, 1, b, 1 )
2130 CALL chkxer( srnamt, infot, nout, lerr, ok )
2132 CALL dtrmm(
'R',
'U',
'T',
'N', 2, 0, alpha, a, 1, b, 1 )
2133 CALL chkxer( srnamt, infot, nout, lerr, ok )
2135 CALL dtrmm(
'L',
'L',
'N',
'N', 2, 0, alpha, a, 2, b, 1 )
2136 CALL chkxer( srnamt, infot, nout, lerr, ok )
2138 CALL dtrmm(
'L',
'L',
'T',
'N', 2, 0, alpha, a, 2, b, 1 )
2139 CALL chkxer( srnamt, infot, nout, lerr, ok )
2141 CALL dtrmm(
'R',
'L',
'N',
'N', 2, 0, alpha, a, 1, b, 1 )
2142 CALL chkxer( srnamt, infot, nout, lerr, ok )
2144 CALL dtrmm(
'R',
'L',
'T',
'N', 2, 0, alpha, a, 1, b, 1 )
2145 CALL chkxer( srnamt, infot, nout, lerr, ok )
2148 CALL dtrsm(
'/',
'U',
'N',
'N', 0, 0, alpha, a, 1, b, 1 )
2149 CALL chkxer( srnamt, infot, nout, lerr, ok )
2151 CALL dtrsm(
'L',
'/',
'N',
'N', 0, 0, alpha, a, 1, b, 1 )
2152 CALL chkxer( srnamt, infot, nout, lerr, ok )
2154 CALL dtrsm(
'L',
'U',
'/',
'N', 0, 0, alpha, a, 1, b, 1 )
2155 CALL chkxer( srnamt, infot, nout, lerr, ok )
2157 CALL dtrsm(
'L',
'U',
'N',
'/', 0, 0, alpha, a, 1, b, 1 )
2158 CALL chkxer( srnamt, infot, nout, lerr, ok )
2160 CALL dtrsm(
'L',
'U',
'N',
'N', -1, 0, alpha, a, 1, b, 1 )
2161 CALL chkxer( srnamt, infot, nout, lerr, ok )
2163 CALL dtrsm(
'L',
'U',
'T',
'N', -1, 0, alpha, a, 1, b, 1 )
2164 CALL chkxer( srnamt, infot, nout, lerr, ok )
2166 CALL dtrsm(
'R',
'U',
'N',
'N', -1, 0, alpha, a, 1, b, 1 )
2167 CALL chkxer( srnamt, infot, nout, lerr, ok )
2169 CALL dtrsm(
'R',
'U',
'T',
'N', -1, 0, alpha, a, 1, b, 1 )
2170 CALL chkxer( srnamt, infot, nout, lerr, ok )
2172 CALL dtrsm(
'L',
'L',
'N',
'N', -1, 0, alpha, a, 1, b, 1 )
2173 CALL chkxer( srnamt, infot, nout, lerr, ok )
2175 CALL dtrsm(
'L',
'L',
'T',
'N', -1, 0, alpha, a, 1, b, 1 )
2176 CALL chkxer( srnamt, infot, nout, lerr, ok )
2178 CALL dtrsm(
'R',
'L',
'N',
'N', -1, 0, alpha, a, 1, b, 1 )
2179 CALL chkxer( srnamt, infot, nout, lerr, ok )
2181 CALL dtrsm(
'R',
'L',
'T',
'N', -1, 0, alpha, a, 1, b, 1 )
2182 CALL chkxer( srnamt, infot, nout, lerr, ok )
2184 CALL dtrsm(
'L',
'U',
'N',
'N', 0, -1, alpha, a, 1, b, 1 )
2185 CALL chkxer( srnamt, infot, nout, lerr, ok )
2187 CALL dtrsm(
'L',
'U',
'T',
'N', 0, -1, alpha, a, 1, b, 1 )
2188 CALL chkxer( srnamt, infot, nout, lerr, ok )
2190 CALL dtrsm(
'R',
'U',
'N',
'N', 0, -1, alpha, a, 1, b, 1 )
2191 CALL chkxer( srnamt, infot, nout, lerr, ok )
2193 CALL dtrsm(
'R',
'U',
'T',
'N', 0, -1, alpha, a, 1, b, 1 )
2194 CALL chkxer( srnamt, infot, nout, lerr, ok )
2196 CALL dtrsm(
'L',
'L',
'N',
'N', 0, -1, alpha, a, 1, b, 1 )
2197 CALL chkxer( srnamt, infot, nout, lerr, ok )
2199 CALL dtrsm(
'L',
'L',
'T',
'N', 0, -1, alpha, a, 1, b, 1 )
2200 CALL chkxer( srnamt, infot, nout, lerr, ok )
2202 CALL dtrsm(
'R',
'L',
'N',
'N', 0, -1, alpha, a, 1, b, 1 )
2203 CALL chkxer( srnamt, infot, nout, lerr, ok )
2205 CALL dtrsm(
'R',
'L',
'T',
'N', 0, -1, alpha, a, 1, b, 1 )
2206 CALL chkxer( srnamt, infot, nout, lerr, ok )
2208 CALL dtrsm(
'L',
'U',
'N',
'N', 2, 0, alpha, a, 1, b, 2 )
2209 CALL chkxer( srnamt, infot, nout, lerr, ok )
2211 CALL dtrsm(
'L',
'U',
'T',
'N', 2, 0, alpha, a, 1, b, 2 )
2212 CALL chkxer( srnamt, infot, nout, lerr, ok )
2214 CALL dtrsm(
'R',
'U',
'N',
'N', 0, 2, alpha, a, 1, b, 1 )
2215 CALL chkxer( srnamt, infot, nout, lerr, ok )
2217 CALL dtrsm(
'R',
'U',
'T',
'N', 0, 2, alpha, a, 1, b, 1 )
2218 CALL chkxer( srnamt, infot, nout, lerr, ok )
2220 CALL dtrsm(
'L',
'L',
'N',
'N', 2, 0, alpha, a, 1, b, 2 )
2221 CALL chkxer( srnamt, infot, nout, lerr, ok )
2223 CALL dtrsm(
'L',
'L',
'T',
'N', 2, 0, alpha, a, 1, b, 2 )
2224 CALL chkxer( srnamt, infot, nout, lerr, ok )
2226 CALL dtrsm(
'R',
'L',
'N',
'N', 0, 2, alpha, a, 1, b, 1 )
2227 CALL chkxer( srnamt, infot, nout, lerr, ok )
2229 CALL dtrsm(
'R',
'L',
'T',
'N', 0, 2, alpha, a, 1, b, 1 )
2230 CALL chkxer( srnamt, infot, nout, lerr, ok )
2232 CALL dtrsm(
'L',
'U',
'N',
'N', 2, 0, alpha, a, 2, b, 1 )
2233 CALL chkxer( srnamt, infot, nout, lerr, ok )
2235 CALL dtrsm(
'L',
'U',
'T',
'N', 2, 0, alpha, a, 2, b, 1 )
2236 CALL chkxer( srnamt, infot, nout, lerr, ok )
2238 CALL dtrsm(
'R',
'U',
'N',
'N', 2, 0, alpha, a, 1, b, 1 )
2239 CALL chkxer( srnamt, infot, nout, lerr, ok )
2241 CALL dtrsm(
'R',
'U',
'T',
'N', 2, 0, alpha, a, 1, b, 1 )
2242 CALL chkxer( srnamt, infot, nout, lerr, ok )
2244 CALL dtrsm(
'L',
'L',
'N',
'N', 2, 0, alpha, a, 2, b, 1 )
2245 CALL chkxer( srnamt, infot, nout, lerr, ok )
2247 CALL dtrsm(
'L',
'L',
'T',
'N', 2, 0, alpha, a, 2, b, 1 )
2248 CALL chkxer( srnamt, infot, nout, lerr, ok )
2250 CALL dtrsm(
'R',
'L',
'N',
'N', 2, 0, alpha, a, 1, b, 1 )
2251 CALL chkxer( srnamt, infot, nout, lerr, ok )
2253 CALL dtrsm(
'R',
'L',
'T',
'N', 2, 0, alpha, a, 1, b, 1 )
2254 CALL chkxer( srnamt, infot, nout, lerr, ok )
2257 CALL dsyrk(
'/',
'N', 0, 0, alpha, a, 1, beta, c, 1 )
2258 CALL chkxer( srnamt, infot, nout, lerr, ok )
2260 CALL dsyrk(
'U',
'/', 0, 0, alpha, a, 1, beta, c, 1 )
2261 CALL chkxer( srnamt, infot, nout, lerr, ok )
2263 CALL dsyrk(
'U',
'N', -1, 0, alpha, a, 1, beta, c, 1 )
2264 CALL chkxer( srnamt, infot, nout, lerr, ok )
2266 CALL dsyrk(
'U',
'T', -1, 0, alpha, a, 1, beta, c, 1 )
2267 CALL chkxer( srnamt, infot, nout, lerr, ok )
2269 CALL dsyrk(
'L',
'N', -1, 0, alpha, a, 1, beta, c, 1 )
2270 CALL chkxer( srnamt, infot, nout, lerr, ok )
2272 CALL dsyrk(
'L',
'T', -1, 0, alpha, a, 1, beta, c, 1 )
2273 CALL chkxer( srnamt, infot, nout, lerr, ok )
2275 CALL dsyrk(
'U',
'N', 0, -1, alpha, a, 1, beta, c, 1 )
2276 CALL chkxer( srnamt, infot, nout, lerr, ok )
2278 CALL dsyrk(
'U',
'T', 0, -1, alpha, a, 1, beta, c, 1 )
2279 CALL chkxer( srnamt, infot, nout, lerr, ok )
2281 CALL dsyrk(
'L',
'N', 0, -1, alpha, a, 1, beta, c, 1 )
2282 CALL chkxer( srnamt, infot, nout, lerr, ok )
2284 CALL dsyrk(
'L',
'T', 0, -1, alpha, a, 1, beta, c, 1 )
2285 CALL chkxer( srnamt, infot, nout, lerr, ok )
2287 CALL dsyrk(
'U',
'N', 2, 0, alpha, a, 1, beta, c, 2 )
2288 CALL chkxer( srnamt, infot, nout, lerr, ok )
2290 CALL dsyrk(
'U',
'T', 0, 2, alpha, a, 1, beta, c, 1 )
2291 CALL chkxer( srnamt, infot, nout, lerr, ok )
2293 CALL dsyrk(
'L',
'N', 2, 0, alpha, a, 1, beta, c, 2 )
2294 CALL chkxer( srnamt, infot, nout, lerr, ok )
2296 CALL dsyrk(
'L',
'T', 0, 2, alpha, a, 1, beta, c, 1 )
2297 CALL chkxer( srnamt, infot, nout, lerr, ok )
2299 CALL dsyrk(
'U',
'N', 2, 0, alpha, a, 2, beta, c, 1 )
2300 CALL chkxer( srnamt, infot, nout, lerr, ok )
2302 CALL dsyrk(
'U',
'T', 2, 0, alpha, a, 1, beta, c, 1 )
2303 CALL chkxer( srnamt, infot, nout, lerr, ok )
2305 CALL dsyrk(
'L',
'N', 2, 0, alpha, a, 2, beta, c, 1 )
2306 CALL chkxer( srnamt, infot, nout, lerr, ok )
2308 CALL dsyrk(
'L',
'T', 2, 0, alpha, a, 1, beta, c, 1 )
2309 CALL chkxer( srnamt, infot, nout, lerr, ok )
2312 CALL dsyr2k(
'/',
'N', 0, 0, alpha, a, 1, b, 1, beta, c, 1 )
2313 CALL chkxer( srnamt, infot, nout, lerr, ok )
2315 CALL dsyr2k(
'U',
'/', 0, 0, alpha, a, 1, b, 1, beta, c, 1 )
2316 CALL chkxer( srnamt, infot, nout, lerr, ok )
2318 CALL dsyr2k(
'U',
'N', -1, 0, alpha, a, 1, b, 1, beta, c, 1 )
2319 CALL chkxer( srnamt, infot, nout, lerr, ok )
2321 CALL dsyr2k(
'U',
'T', -1, 0, alpha, a, 1, b, 1, beta, c, 1 )
2322 CALL chkxer( srnamt, infot, nout, lerr, ok )
2324 CALL dsyr2k(
'L',
'N', -1, 0, alpha, a, 1, b, 1, beta, c, 1 )
2325 CALL chkxer( srnamt, infot, nout, lerr, ok )
2327 CALL dsyr2k(
'L',
'T', -1, 0, alpha, a, 1, b, 1, beta, c, 1 )
2328 CALL chkxer( srnamt, infot, nout, lerr, ok )
2330 CALL dsyr2k(
'U',
'N', 0, -1, alpha, a, 1, b, 1, beta, c, 1 )
2331 CALL chkxer( srnamt, infot, nout, lerr, ok )
2333 CALL dsyr2k(
'U',
'T', 0, -1, alpha, a, 1, b, 1, beta, c, 1 )
2334 CALL chkxer( srnamt, infot, nout, lerr, ok )
2336 CALL dsyr2k(
'L',
'N', 0, -1, alpha, a, 1, b, 1, beta, c, 1 )
2337 CALL chkxer( srnamt, infot, nout, lerr, ok )
2339 CALL dsyr2k(
'L',
'T', 0, -1, alpha, a, 1, b, 1, beta, c, 1 )
2340 CALL chkxer( srnamt, infot, nout, lerr, ok )
2342 CALL dsyr2k(
'U',
'N', 2, 0, alpha, a, 1, b, 1, beta, c, 2 )
2343 CALL chkxer( srnamt, infot, nout, lerr, ok )
2345 CALL dsyr2k(
'U',
'T', 0, 2, alpha, a, 1, b, 1, beta, c, 1 )
2346 CALL chkxer( srnamt, infot, nout, lerr, ok )
2348 CALL dsyr2k(
'L',
'N', 2, 0, alpha, a, 1, b, 1, beta, c, 2 )
2349 CALL chkxer( srnamt, infot, nout, lerr, ok )
2351 CALL dsyr2k(
'L',
'T', 0, 2, alpha, a, 1, b, 1, beta, c, 1 )
2352 CALL chkxer( srnamt, infot, nout, lerr, ok )
2354 CALL dsyr2k(
'U',
'N', 2, 0, alpha, a, 2, b, 1, beta, c, 2 )
2355 CALL chkxer( srnamt, infot, nout, lerr, ok )
2357 CALL dsyr2k(
'U',
'T', 0, 2, alpha, a, 2, b, 1, beta, c, 1 )
2358 CALL chkxer( srnamt, infot, nout, lerr, ok )
2360 CALL dsyr2k(
'L',
'N', 2, 0, alpha, a, 2, b, 1, beta, c, 2 )
2361 CALL chkxer( srnamt, infot, nout, lerr, ok )
2363 CALL dsyr2k(
'L',
'T', 0, 2, alpha, a, 2, b, 1, beta, c, 1 )
2364 CALL chkxer( srnamt, infot, nout, lerr, ok )
2366 CALL dsyr2k(
'U',
'N', 2, 0, alpha, a, 2, b, 2, beta, c, 1 )
2367 CALL chkxer( srnamt, infot, nout, lerr, ok )
2369 CALL dsyr2k(
'U',
'T', 2, 0, alpha, a, 1, b, 1, beta, c, 1 )
2370 CALL chkxer( srnamt, infot, nout, lerr, ok )
2372 CALL dsyr2k(
'L',
'N', 2, 0, alpha, a, 2, b, 2, beta, c, 1 )
2373 CALL chkxer( srnamt, infot, nout, lerr, ok )
2375 CALL dsyr2k(
'L',
'T', 2, 0, alpha, a, 1, b, 1, beta, c, 1 )
2376 CALL chkxer( srnamt, infot, nout, lerr, ok )
2379 WRITE( nout, fmt = 9999 )srnamt
2381 WRITE( nout, fmt = 9998 )srnamt
2385 9999
FORMAT(
' ', a6,
' PASSED THE TESTS OF ERROR-EXITS' )
2386 9998
FORMAT(
' ******* ', a6,
' FAILED THE TESTS OF ERROR-EXITS *****',
2392 SUBROUTINE dmake( TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, RESET,
2410 DOUBLE PRECISION ZERO, ONE
2411 PARAMETER ( ZERO = 0.0d0, one = 1.0d0 )
2412 DOUBLE PRECISION ROGUE
2413 PARAMETER ( ROGUE = -1.0d10 )
2415 DOUBLE PRECISION TRANSL
2416 INTEGER LDA, M, N, NMAX
2418 CHARACTER*1 DIAG, UPLO
2421 DOUBLE PRECISION A( NMAX, * ), AA( * )
2423 INTEGER I, IBEG, IEND, J
2424 LOGICAL GEN, LOWER, SYM, TRI, UNIT, UPPER
2426 DOUBLE PRECISION DBEG
2432 upper = ( sym.OR.tri ).AND.uplo.EQ.
'U'
2433 lower = ( sym.OR.tri ).AND.uplo.EQ.
'L'
2434 unit = tri.AND.diag.EQ.
'U'
2440 IF( gen.OR.( upper.AND.i.LE.j ).OR.( lower.AND.i.GE.j ) )
2442 a( i, j ) = dbeg( reset ) + transl
2445 IF( n.GT.3.AND.j.EQ.n/2 )
2448 a( j, i ) = a( i, j )
2456 $ a( j, j ) = a( j, j ) + one
2463 IF( type.EQ.
'GE' )
THEN
2466 aa( i + ( j - 1 )*lda ) = a( i, j )
2468 DO 40 i = m + 1, lda
2469 aa( i + ( j - 1 )*lda ) = rogue
2472 ELSE IF( type.EQ.
'SY'.OR.type.EQ.
'TR' )
THEN
2489 DO 60 i = 1, ibeg - 1
2490 aa( i + ( j - 1 )*lda ) = rogue
2492 DO 70 i = ibeg, iend
2493 aa( i + ( j - 1 )*lda ) = a( i, j )
2495 DO 80 i = iend + 1, lda
2496 aa( i + ( j - 1 )*lda ) = rogue
2505 SUBROUTINE dmmch( TRANSA, TRANSB, M, N, KK, ALPHA, A, LDA, B, LDB,
2506 $ BETA, C, LDC, CT, G, CC, LDCC, EPS, ERR, FATAL,
2520 DOUBLE PRECISION ZERO, ONE
2521 PARAMETER ( ZERO = 0.0d0, one = 1.0d0 )
2523 DOUBLE PRECISION ALPHA, BETA, EPS, ERR
2524 INTEGER KK, LDA, LDB, LDC, LDCC, M, N, NOUT
2526 CHARACTER*1 TRANSA, TRANSB
2528 DOUBLE PRECISION A( LDA, * ), B( LDB, * ), C( LDC, * ),
2529 $ CC( LDCC, * ), CT( * ), G( * )
2531 DOUBLE PRECISION ERRI
2533 LOGICAL TRANA, TRANB
2535 INTRINSIC abs, max, sqrt
2537 trana = transa.EQ.
'T'.OR.transa.EQ.
'C'
2538 tranb = transb.EQ.
'T'.OR.transb.EQ.
'C'
2550 IF( .NOT.trana.AND..NOT.tranb )
THEN
2553 ct( i ) = ct( i ) + a( i, k )*b( k, j )
2554 g( i ) = g( i ) + abs( a( i, k ) )*abs( b( k, j ) )
2557 ELSE IF( trana.AND..NOT.tranb )
THEN
2560 ct( i ) = ct( i ) + a( k, i )*b( k, j )
2561 g( i ) = g( i ) + abs( a( k, i ) )*abs( b( k, j ) )
2564 ELSE IF( .NOT.trana.AND.tranb )
THEN
2567 ct( i ) = ct( i ) + a( i, k )*b( j, k )
2568 g( i ) = g( i ) + abs( a( i, k ) )*abs( b( j, k ) )
2571 ELSE IF( trana.AND.tranb )
THEN
2574 ct( i ) = ct( i ) + a( k, i )*b( j, k )
2575 g( i ) = g( i ) + abs( a( k, i ) )*abs( b( j, k ) )
2580 ct( i ) = alpha*ct( i ) + beta*c( i, j )
2581 g( i ) = abs( alpha )*g( i ) + abs( beta )*abs( c( i, j ) )
2588 erri = abs( ct( i ) - cc( i, j ) )/eps
2589 IF( g( i ).NE.zero )
2590 $ erri = erri/g( i )
2591 err = max( err, erri )
2592 IF( err*sqrt( eps ).GE.one )
2604 WRITE( nout, fmt = 9999 )
2607 WRITE( nout, fmt = 9998 )i, ct( i ), cc( i, j )
2609 WRITE( nout, fmt = 9998 )i, cc( i, j ), ct( i )
2613 $
WRITE( nout, fmt = 9997 )j
2618 9999
FORMAT(
' ******* FATAL ERROR - COMPUTED RESULT IS LESS THAN HAL',
2619 $
'F ACCURATE *******', /
' EXPECTED RESULT COMPU',
2621 9998
FORMAT( 1x, i7, 2g18.6 )
2622 9997
FORMAT(
' THESE ARE THE RESULTS FOR COLUMN ', i3 )
2627 LOGICAL FUNCTION lde( RI, RJ, LR )
2642 DOUBLE PRECISION ri( * ), rj( * )
2647 IF( ri( i ).NE.rj( i ) )
2659 LOGICAL FUNCTION lderes( TYPE, UPLO, M, N, AA, AS, LDA )
2678 DOUBLE PRECISION aa( lda, * ), as( lda, * )
2680 INTEGER i, ibeg, iend, j
2684 IF( type.EQ.
'GE' )
THEN
2686 DO 10 i = m + 1, lda
2687 IF( aa( i, j ).NE.as( i, j ) )
2691 ELSE IF( type.EQ.
'SY' )
THEN
2700 DO 30 i = 1, ibeg - 1
2701 IF( aa( i, j ).NE.as( i, j ) )
2704 DO 40 i = iend + 1, lda
2705 IF( aa( i, j ).NE.as( i, j ) )
2720 DOUBLE PRECISION FUNCTION dbeg( RESET )
2755 i = i - 1000*( i/1000 )
2760 dbeg = ( i - 500 )/1001.0d0
2777 DOUBLE PRECISION x, y
2785 SUBROUTINE chkxer( SRNAMT, INFOT, NOUT, LERR, OK )
2803 WRITE( NOUT, FMT = 9999 )infot, srnamt
2809 9999
FORMAT(
' ***** ILLEGAL VALUE OF PARAMETER NUMBER ', i2,
' NOT D',
2810 $
'ETECTED BY ', a6,
' *****' )
2842 COMMON /INFOC/INFOT, NOUT, OK, LERR
2843 COMMON /SRNAMC/SRNAMT
2846 IF( info.NE.infot )
THEN
2847 IF( infot.NE.0 )
THEN
2848 WRITE( nout, fmt = 9999 )info, infot
2850 WRITE( nout, fmt = 9997 )info
2854 IF( srname.NE.srnamt )
THEN
2855 WRITE( nout, fmt = 9998 )srname, srnamt
2860 9999
FORMAT(
' ******* XERBLA WAS CALLED WITH INFO = ', i6,
' INSTEAD',
2861 $
' OF ', i2,
' *******' )
2862 9998
FORMAT(
' ******* XERBLA WAS CALLED WITH SRNAME = ', a6,
' INSTE',
2863 $
'AD OF ', a6,
' *******' )
2864 9997
FORMAT(
' ******* XERBLA WAS CALLED WITH INFO = ', i6,
subroutine xerbla(srname, info)
subroutine chkxer(srnamt, infot, nout, lerr, ok)
subroutine dchk4(sname, eps, thresh, nout, ntra, trace, rewi, fatal, nidim, idim, nalf, alf, ninc, inc, nmax, incmax, a, aa, as, x, xx, xs, y, yy, ys, yt, g, z)
logical function lde(ri, rj, lr)
logical function lderes(type, uplo, m, n, aa, as, lda)
double precision function dbeg(reset)
subroutine dchk2(sname, eps, thresh, nout, ntra, trace, rewi, fatal, nidim, idim, nkb, kb, nalf, alf, nbet, bet, ninc, inc, nmax, incmax, a, aa, as, x, xx, xs, y, yy, ys, yt, g)
subroutine dchk5(sname, eps, thresh, nout, ntra, trace, rewi, fatal, nidim, idim, nalf, alf, ninc, inc, nmax, incmax, a, aa, as, x, xx, xs, y, yy, ys, yt, g, z)
double precision function ddiff(x, y)
subroutine dchk3(sname, eps, thresh, nout, ntra, trace, rewi, fatal, nidim, idim, nkb, kb, ninc, inc, nmax, incmax, a, aa, as, x, xx, xs, xt, g, z)
subroutine dchke(isnum, srnamt, nout)
subroutine dchk1(sname, eps, thresh, nout, ntra, trace, rewi, fatal, nidim, idim, nkb, kb, nalf, alf, nbet, bet, ninc, inc, nmax, incmax, a, aa, as, x, xx, xs, y, yy, ys, yt, g)
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)
subroutine dgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
DGEMM
subroutine dsymm(side, uplo, m, n, alpha, a, lda, b, ldb, beta, c, ldc)
DSYMM
subroutine dsyr2k(uplo, trans, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
DSYR2K
subroutine dsyrk(uplo, trans, n, k, alpha, a, lda, beta, c, ldc)
DSYRK
subroutine dtrmm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
DTRMM
subroutine dtrsm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
DTRSM