47 parameter( nin = 5, nout = 6 )
49 parameter( nsubs = 6 )
51 parameter( zero = 0.0, half = 0.5, one = 1.0 )
53 parameter( nmax = 65 )
54 INTEGER nidmax, nalmax,
55 parameter( nidmax = 9, nalmax = 7, nbemax = 7 )
58 INTEGER i, isnum, j, n, nalf, nbet, nidim, ntra,
60 LOGICAL fatal, ltestt, rewi, same, sfatal, trace,
61 $ tsterr, corder, rorder
62 CHARACTER*1 transa, transb
66 REAL aa( nmax*nmax ), ab( nmax, 2*nmax ),
67 $ alf( nalmax ), as( nmax*nmax ),
68 $ bb( nmax*nmax ), bet( nbemax ),
69 $ bs( nmax*nmax ), c( nmax, nmax ),
70 $ cc( nmax*nmax ), cs( nmax*nmax ), ct( nmax ),
71 $ g( nmax ), w( 2*nmax )
72 INTEGER idim( nidmax )
73 LOGICAL ltest( nsubs )
74 CHARACTER*12 snames( nsubs )
89 COMMON /infoc/infot, noutc, ok
92 DATA snames/
'cblas_sgemm ',
'cblas_ssymm ',
93 $
'cblas_strmm ',
'cblas_strsm ',
'cblas_ssyrk ',
100 READ( nin, fmt = * )snaps
101 READ( nin, fmt = * )ntra
105 OPEN( ntra, file = snaps )
108 READ( nin, fmt = * )rewi
109 rewi = rewi.AND.trace
111 READ( nin, fmt = * )sfatal
113 READ( nin, fmt = * )tsterr
115 READ( nin, fmt = * )layout
117 READ( nin, fmt = * )thresh
122 READ( nin, fmt = * )nidim
123 IF( nidim.LT.1.OR.nidim.GT.nidmax )
THEN
124 WRITE( nout, fmt = 9997 )
'N', nidmax
127 READ( nin, fmt = * )( idim( i ), i = 1, nidim )
129 IF( idim( i ).LT.0.OR.idim( i ).GT.nmax )
THEN
130 WRITE( nout, fmt = 9996 )nmax
135 READ( nin, fmt = * )nalf
136 IF( nalf.LT.1.OR.nalf.GT.nalmax )
THEN
137 WRITE( nout, fmt = 9997 )
'ALPHA', nalmax
140 READ( nin, fmt = * )( alf( i ), i = 1, nalf )
142 READ( nin, fmt = * )nbet
143 IF( nbet.LT.1.OR.nbet.GT.nbemax )
THEN
144 WRITE( nout, fmt = 9997 )
'BETA', nbemax
147 READ( nin, fmt = * )( bet( i ), i = 1, nbet )
151 WRITE( nout, fmt = 9995 )
152 WRITE( nout, fmt = 9994 )( idim( i ), i = 1, nidim )
153 WRITE( nout, fmt = 9993 )( alf( i ), i = 1, nalf )
154 WRITE( nout, fmt = 9992 )( bet( i ), i = 1, nbet )
155 IF( .NOT.tsterr )
THEN
156 WRITE( nout, fmt = * )
157 WRITE( nout, fmt = 9984 )
159 WRITE( nout, fmt = * )
160 WRITE( nout, fmt = 9999 )thresh
161 WRITE( nout, fmt = * )
165 IF (layout.EQ.2)
THEN
168 WRITE( *, fmt = 10002 )
169 ELSE IF (layout.EQ.1)
THEN
171 WRITE( *, fmt = 10001 )
172 ELSE IF (layout.EQ.0)
THEN
174 WRITE( *, fmt = 10000 )
185 30
READ( nin, fmt = 9988,
END = 60 )SNAMET, ltestt
187 IF( snamet.EQ.snames( i ) )
190 WRITE( nout, fmt = 9990 )snamet
192 50 ltest( i ) = ltestt
202 IF(
sdiff( one + eps, one ).EQ.zero )
208 WRITE( nout, fmt = 9998 )eps
215 ab( i, j ) =
max( i - j + 1, 0 )
217 ab( j, nmax + 1 ) = j
218 ab( 1, nmax + j ) = j
222 cc( j ) = j*( ( j + 1 )*j )/2 - ( ( j + 1 )*j*( j - 1 ) )/3
228 CALL smmch( transa, transb, n, 1, n, one, ab, nmax,
229 $ ab( 1, nmax + 1 ), nmax, zero, c, nmax, ct, g, cc,
230 $ nmax, eps, err,
fatal, nout, .true. )
231 same =
lse( cc, ct, n )
232 IF( .NOT.same.OR.err.NE.zero )
THEN
233 WRITE( nout, fmt = 9989 )transa, transb, same, err
237 CALL smmch( transa, transb, n, 1, n, one, ab, nmax,
238 $ ab( 1, nmax + 1 ), nmax, zero, c, nmax, ct, g, cc,
239 $ nmax, eps, err,
fatal, nout, .true. )
240 same =
lse( cc, ct, n )
241 IF( .NOT.same.OR.err.NE.zero )
THEN
242 WRITE( nout, fmt = 9989 )transa, transb, same, err
246 ab( j, nmax + 1 ) = n - j + 1
247 ab( 1, nmax + j ) = n - j + 1
250 cc( n - j + 1 ) = j*( ( j + 1 )*j )/2 -
251 $ ( ( j + 1 )*j*( j - 1 ) )/3
255 CALL smmch( transa, transb, n, 1, n, one, ab, nmax,
256 $ ab( 1, nmax + 1 ), nmax, zero, c, nmax, ct, g, cc,
257 $ nmax, eps, err,
fatal, nout, .true. )
258 same =
lse( cc, ct, n )
259 IF( .NOT.same.OR.err.NE.zero )
THEN
260 WRITE( nout, fmt = 9989 )transa, transb, same, err
264 CALL smmch( transa, transb, n, 1, n, one, ab, nmax,
265 $ ab( 1, nmax + 1 ), nmax, zero, c, nmax, ct, g, cc,
266 $ nmax, eps, err,
fatal, nout, .true. )
267 same =
lse( cc, ct, n )
268 IF( .NOT.same.OR.err.NE.zero )
THEN
269 WRITE( nout, fmt = 9989 )transa, transb, same, err
275 DO 200 isnum = 1, nsubs
276 WRITE( nout, fmt = * )
277 IF( .NOT.ltest( isnum ) )
THEN
279 WRITE( nout, fmt = 9987 )snames( isnum )
281 srnamt = snames( isnum )
284 CALL cs3chke( snames( isnum ) )
285 WRITE( nout, fmt = * )
291 GO TO ( 140, 150, 160, 160, 170, 180 )isnum
294 CALL schk1( snames( isnum ), eps, thresh, nout, ntra, trace,
295 $ rewi,
fatal, nidim, idim, nalf, alf, nbet, bet,
296 $ nmax, ab, aa, as, ab( 1, nmax + 1 ), bb, bs, c,
300 CALL schk1( snames( isnum ), eps, thresh, nout, ntra, trace,
301 $ rewi,
fatal, nidim, idim, nalf, alf, nbet, bet,
302 $ nmax, ab, aa, as, ab( 1, nmax + 1 ), bb, bs, c,
308 CALL schk2( snames( isnum ), eps, thresh, nout, ntra, trace,
309 $ rewi,
fatal, nidim, idim, nalf, alf, nbet, bet,
310 $ nmax, ab, aa, as, ab( 1, nmax + 1 ), bb, bs, c,
314 CALL schk2( 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,
322 CALL schk3( snames( isnum ), eps, thresh, nout, ntra, trace,
323 $ rewi,
fatal, nidim, idim, nalf, alf, nmax, ab,
324 $ aa, as, ab( 1, nmax + 1 ), bb, bs, ct, g, c,
328 CALL schk3( snames( isnum ), eps, thresh, nout, ntra, trace,
329 $ rewi,
fatal, nidim, idim, nalf, alf, nmax, ab,
330 $ aa, as, ab( 1, nmax + 1 ), bb, bs, ct, g, c,
336 CALL schk4( snames( isnum ), eps, thresh, nout, ntra, trace,
337 $ rewi,
fatal, nidim, idim, nalf, alf, nbet, bet,
338 $ nmax, ab, aa, as, ab( 1, nmax + 1 ), bb, bs, c,
342 CALL schk4( snames( isnum ), eps, thresh, nout, ntra, trace,
343 $ rewi,
fatal, nidim, idim, nalf, alf, nbet, bet,
344 $ nmax, ab, aa, as, ab( 1, nmax + 1 ), bb, bs, c,
350 CALL schk5( snames( isnum ), eps, thresh, nout, ntra, trace,
351 $ rewi,
fatal, nidim, idim, nalf, alf, nbet, bet,
352 $ nmax, ab, aa, as, bb, bs, c, cc, cs, ct, g, w,
356 CALL schk5( snames( isnum ), eps, thresh, nout, ntra, trace,
357 $ rewi,
fatal, nidim, idim, nalf, alf, nbet, bet,
358 $ nmax, ab, aa, as, bb, bs, c, cc, cs, ct, g, w,
363 190
IF(
fatal.AND.sfatal )
367 WRITE( nout, fmt = 9986 )
371 WRITE( nout, fmt = 9985 )
375 WRITE( nout, fmt = 9991 )
38310002
FORMAT(
' COLUMN-MAJOR AND ROW-MAJOR DATA LAYOUTS ARE TESTED' )
38410001
FORMAT(
' ROW-MAJOR DATA LAYOUT IS TESTED' )
38510000
FORMAT(
' COLUMN-MAJOR DATA LAYOUT IS TESTED' )
386 9999
FORMAT(
' ROUTINES PASS COMPUTATIONAL TESTS IF TEST RATIO IS LES',
388 9998
FORMAT(
' RELATIVE MACHINE PRECISION IS TAKEN TO BE', 1p, e9.1 )
389 9997
FORMAT(
' NUMBER OF VALUES OF ', a,
' IS LESS THAN 1 OR GREATER ',
391 9996
FORMAT(
' VALUE OF N IS LESS THAN 0 OR GREATER THAN ', i2 )
392 9995
FORMAT(
' TESTS OF THE REAL LEVEL 3 BLAS', //
' THE F',
393 $
'OLLOWING PARAMETER VALUES WILL BE USED:' )
394 9994
FORMAT(
' FOR N ', 9i6 )
395 9993
FORMAT(
' FOR ALPHA ', 7f6.1 )
396 9992
FORMAT(
' FOR BETA ', 7f6.1 )
397 9991
FORMAT(
' AMEND DATA FILE OR INCREASE ARRAY SIZES IN PROGRAM',
398 $ /
' ******* TESTS ABANDONED *******' )
399 9990
FORMAT(
' SUBPROGRAM NAME ', a12,
' NOT RECOGNIZED', /
' ******* ',
400 $
'TESTS ABANDONED *******' )
401 9989
FORMAT(
' ERROR IN SMMCH - IN-LINE DOT PRODUCTS ARE BEING EVALU',
402 $
'ATED WRONGLY.', /
' SMMCH WAS CALLED WITH TRANSA = ', a1,
403 $
' AND TRANSB = ', a1, /
' AND RETURNED SAME = ', l1,
' AND ',
404 $
'ERR = ', f12.3,
'.', /
' THIS MAY BE DUE TO FAULTS IN THE ',
405 $
'ARITHMETIC OR THE COMPILER.', /
' ******* TESTS ABANDONED ',
407 9988
FORMAT( a12,l2 )
408 9987
FORMAT( 1x, a12,
' WAS NOT TESTED' )
409 9986
FORMAT( /
' END OF TESTS' )
410 9985
FORMAT( /
' ******* FATAL ERROR - TESTS ABANDONED *******' )
411 9984
FORMAT(
' ERROR-EXITS WILL NOT BE TESTED' )
416 SUBROUTINE schk1( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
417 $ FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, NMAX,
418 $ A, AA, AS, B, BB, BS, C, CC, CS, CT, G,
433 PARAMETER ( ZERO = 0.0 )
436 INTEGER NALF, NBET, NIDIM, NMAX, NOUT, NTRA, IORDER
437 LOGICAL FATAL, REWI, TRACE
440 REAL A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
441 $ as( nmax*nmax ), b( nmax, nmax ),
442 $ bb( nmax*nmax ), bet( nbet ), bs( nmax*nmax ),
443 $ c( nmax, nmax ), cc( nmax*nmax ),
444 $ cs( nmax*nmax ), ct( nmax ), g( nmax )
445 INTEGER IDIM( NIDIM )
447 REAL ALPHA, ALS, BETA, BLS, ERR, ERRMAX
448 INTEGER I, IA, IB, ICA, ICB, IK, IM, IN, K, KS, LAA,
449 $ LBB, LCC, LDA, LDAS, LDB, LDBS, LDC, LDCS, M,
450 $ ma, mb, ms, n, na, nargs, nb, nc, ns
451 LOGICAL NULL, RESET, SAME, TRANA, TRANB
452 CHARACTER*1 TRANAS, TRANBS, TRANSA, TRANSB
467 COMMON /infoc/infot, noutc, ok
490 null = n.LE.0.OR.m.LE.0
496 transa = ich( ica: ica )
497 trana = transa.EQ.
'T'.OR.transa.EQ.
'C'
517 CALL smake(
'GE',
' ',
' ', ma, na, a, nmax, aa, lda,
521 transb = ich( icb: icb )
522 tranb = transb.EQ.
'T'.OR.transb.EQ.
'C'
542 CALL smake(
'GE',
' ',
' ', mb, nb, b, nmax, bb,
553 CALL smake(
'GE',
' ',
' ', m, n, c, nmax,
554 $ cc, ldc, reset, zero )
584 $
CALL sprcn1(ntra, nc, sname, iorder,
585 $ transa, transb, m, n, k, alpha, lda,
589 CALL csgemm( iorder, transa, transb, m, n,
590 $ k, alpha, aa, lda, bb, ldb,
596 WRITE( nout, fmt = 9994 )
603 isame( 1 ) = transa.EQ.tranas
604 isame( 2 ) = transb.EQ.tranbs
608 isame( 6 ) = als.EQ.alpha
609 isame( 7 ) = lse( as, aa, laa )
610 isame( 8 ) = ldas.EQ.lda
611 isame( 9 ) = lse( bs, bb, lbb )
612 isame( 10 ) = ldbs.EQ.ldb
613 isame( 11 ) = bls.EQ.beta
615 isame( 12 ) = lse( cs, cc, lcc )
617 isame( 12 ) = lseres(
'GE',
' ', m, n, cs,
620 isame( 13 ) = ldcs.EQ.ldc
627 same = same.AND.isame( i )
628 IF( .NOT.isame( i ) )
629 $
WRITE( nout, fmt = 9998 )i+1
640 CALL smmch( transa, transb, m, n, k,
641 $ alpha, a, nmax, b, nmax, beta,
642 $ c, nmax, ct, g, cc, ldc, eps,
643 $ err, fatal, nout, .true. )
644 errmax =
max( errmax, err )
667 IF( errmax.LT.thresh )
THEN
668 IF ( iorder.EQ.0)
WRITE( nout, fmt = 10000 )sname, nc
669 IF ( iorder.EQ.1)
WRITE( nout, fmt = 10001 )sname, nc
671 IF ( iorder.EQ.0)
WRITE( nout, fmt = 10002 )sname, nc, errmax
672 IF ( iorder.EQ.1)
WRITE( nout, fmt = 10003 )sname, nc, errmax
677 WRITE( nout, fmt = 9996 )sname
678 CALL sprcn1(nout, nc, sname, iorder, transa, transb,
679 $ m, n, k, alpha, lda, ldb, beta, ldc)
68410003
FORMAT(
' ', a12,
' COMPLETED THE ROW-MAJOR COMPUTATIONAL ',
685 $
'TESTS (', i6,
' CALLS)', /
' ******* BUT WITH MAXIMUM TEST ',
686 $
'RATIO ', f8.2,
' - SUSPECT *******' )
68710002
FORMAT(
' ', a12,
' COMPLETED THE COLUMN-MAJOR COMPUTATIONAL ',
688 $
'TESTS (', i6,
' CALLS)', /
' ******* BUT WITH MAXIMUM TEST ',
689 $
'RATIO ', f8.2,
' - SUSPECT *******' )
69010001
FORMAT(
' ', a12,
' PASSED THE ROW-MAJOR COMPUTATIONAL TESTS',
691 $
' (', i6,
' CALL',
'S)' )
69210000
FORMAT(
' ', a12,
' PASSED THE COLUMN-MAJOR COMPUTATIONAL TESTS',
693 $
' (', i6,
' CALL',
'S)' )
694 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
695 $
'ANGED INCORRECTLY *******' )
696 9996
FORMAT(
' ******* ', a12,
' FAILED ON CALL NUMBER:' )
697 9995
FORMAT( 1x, i6,
': ', a12,
'(''', a1,
''',''', a1,
''',',
698 $ 3( i3,
',' ), f4.1,
', A,', i3,
', B,', i3,
',', f4.1,
', ',
700 9994
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
709 SUBROUTINE sprcn1(NOUT, NC, SNAME, IORDER, TRANSA, TRANSB, M, N,
710 $ K, ALPHA, LDA, LDB, BETA, LDC)
711 INTEGER NOUT, NC, IORDER, M, N, K, LDA, , LDC
713 CHARACTER*1 TRANSA, TRANSB
715 CHARACTER*14 CRC, CTA,CTB
717 IF (transa.EQ.
'N')
THEN
718 cta =
' CblasNoTrans'
719 ELSE IF (transa.EQ.
'T')
THEN
722 cta =
'CblasConjTrans'
724 IF (transb.EQ.
'N')
THEN
725 ctb =
' CblasNoTrans'
726 ELSE IF (transb.EQ.
'T')
THEN
729 ctb =
'CblasConjTrans'
732 crc =
' CblasRowMajor'
734 crc =
' CblasColMajor'
736 WRITE(nout, fmt = 9995)nc,sname,crc, cta,ctb
737 WRITE(nout, fmt = 9994)m, n, k, alpha, lda, ldb, beta, ldc
739 9995
FORMAT( 1x, i6,
': ', a12,
'(', a14,
',', a14,
',', a14,
',')
740 9994
FORMAT( 20x, 3( i3,
',' ), f4.1,
', A,', i3,
', B,', i3,
',',
741 $ f4.1,
', ',
'C,', i3,
').' )
744 SUBROUTINE schk2( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
745 $ FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, NMAX,
746 $ A, AA, AS, B, BB, BS, C, CC, CS, CT, G,
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,
100110003
FORMAT(
' ', a12,
' COMPLETED THE ROW-MAJOR COMPUTATIONAL ',
1002 $
'TESTS (', i6,
' CALLS)', /
' ******* BUT WITH MAXIMUM TEST ',
1003 $
'RATIO ', f8.2,
' - SUSPECT *******' )
100410002
FORMAT(
' ', a12,
' COMPLETED THE COLUMN-MAJOR COMPUTATIONAL ',
1005 $
'TESTS (', i6,
' CALLS)', /
' ******* BUT WITH MAXIMUM TEST ',
1006 $
'RATIO ', f8.2,
' - SUSPECT *******' )
100710001
FORMAT(
' ', a12,
' PASSED THE ROW-MAJOR COMPUTATIONAL TESTS',
1008 $
' (', i6,
' CALL',
'S)' )
100910000
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 *',
1024 SUBROUTINE sprcn2(NOUT, NC, SNAME, IORDER, SIDE, UPLO, M, N,
1025 $ ALPHA, LDA, LDB, BETA, LDC)
1026 INTEGER NOUT, NC, IORDER, M, N, LDA, LDB, LDC
1028 CHARACTER*1 SIDE, UPLO
1030 CHARACTER*14 CRC, CS,CU
1032 IF (side.EQ.
'L')
THEN
1037 IF (uplo.EQ.
'U')
THEN
1042 IF (iorder.EQ.1)
THEN
1043 crc =
' CblasRowMajor'
1045 crc =
' CblasColMajor'
1047 WRITE(nout, fmt = 9995)nc,sname,crc, cs,cu
1048 WRITE(nout, fmt = 9994)m, n, alpha, lda, ldb, beta, ldc
1050 9995
FORMAT( 1x, i6,
': ', a12,
'(', a14,
',', a14,
',', a14,
',')
1051 9994
FORMAT( 20x, 2( i3,
',' ), f4.1,
', A,', i3,
', B,', i3,
',',
1052 $ f4.1,
', ',
'C,', i3,
').' )
1055 SUBROUTINE schk3( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
1056 $ FATAL, NIDIM, IDIM, NALF, ALF, NMAX, A, AA, AS,
1057 $ B, BB, BS, CT, G, C, IORDER )
1071 PARAMETER ( ZERO = 0.0, one = 1.0 )
1074 INTEGER NALF, NIDIM, NMAX, NOUT, NTRA, IORDER
1075 LOGICAL FATAL, REWI, TRACE
1078 REAL A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
1079 $ AS( NMAX*NMAX ), B( NMAX, NMAX ),
1080 $ bb( nmax*nmax ), bs( nmax*nmax ),
1081 $ c( nmax, nmax ), ct( nmax ), g( nmax )
1082 INTEGER IDIM( NIDIM )
1084 REAL ALPHA, ALS, ERR, ERRMAX
1085 INTEGER I, IA, ICD, ICS, ICT, ICU, IM, IN, J, LAA, LBB,
1086 $ lda, ldas, ldb, ldbs, m, ms, n, na, nargs, nc,
1088 LOGICAL LEFT, NULL, RESET, SAME
1089 CHARACTER*1 DIAG, DIAGS, SIDE, SIDES, TRANAS, TRANSA, UPLO,
1091 CHARACTER*2 ICHD, ICHS, ICHU
1097 EXTERNAL LSE, LSERES
1103 INTEGER INFOT, NOUTC
1106 COMMON /infoc/infot, noutc, ok
1108 DATA ichu/
'UL'/, icht/
'NTC'/, ichd/
'UN'/, ichs/'lr
'/
1122 DO 140 IM = 1, NIDIM
1125 DO 130 IN = 1, NIDIM
1135.LE..OR..LE.
NULL = M0N0
1138 SIDE = ICHS( ICS: ICS )
1155 UPLO = ICHU( ICU: ICU )
1158 TRANSA = ICHT( ICT: ICT )
1161 DIAG = ICHD( ICD: ICD )
1168 CALL SMAKE( 'tr
', UPLO, DIAG, NA, NA, A,
1169 $ NMAX, AA, LDA, RESET, ZERO )
1173 CALL SMAKE( 'ge
', ' ', ' ', M, N, B, NMAX,
1174 $ BB, LDB, RESET, ZERO )
1199.EQ.
IF( SNAME( 10: 11 )'mm
' )THEN
1201 $ CALL SPRCN3( NTRA, NC, SNAME, IORDER,
1202 $ SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA,
1206 CALL CSTRMM( IORDER, SIDE, UPLO, TRANSA,
1207 $ DIAG, M, N, ALPHA, AA, LDA,
1209.EQ.
ELSE IF( SNAME( 10: 11 )'sm
' )THEN
1211 $ CALL SPRCN3( NTRA, NC, SNAME, IORDER,
1212 $ SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA,
1216 CALL CSTRSM( IORDER, SIDE, UPLO, TRANSA,
1217 $ DIAG, M, N, ALPHA, AA, LDA,
1224 WRITE( NOUT, FMT = 9994 )
1231.EQ.
ISAME( 1 ) = SIDESSIDE
1232.EQ.
ISAME( 2 ) = UPLOSUPLO
1233.EQ.
ISAME( 3 ) = TRANASTRANSA
1234.EQ.
ISAME( 4 ) = DIAGSDIAG
1235.EQ.
ISAME( 5 ) = MSM
1236.EQ.
ISAME( 6 ) = NSN
1237.EQ.
ISAME( 7 ) = ALSALPHA
1238 ISAME( 8 ) = LSE( AS, AA, LAA )
1239.EQ.
ISAME( 9 ) = LDASLDA
1241 ISAME( 10 ) = LSE( BS, BB, LBB )
1243 ISAME( 10 ) = LSERES( 'ge
', ' ', M, N, BS,
1246.EQ.
ISAME( 11 ) = LDBSLDB
1253.AND.
SAME = SAMEISAME( I )
1254.NOT.
IF( ISAME( I ) )
1255 $ WRITE( NOUT, FMT = 9998 )I+1
1263.EQ.
IF( SNAME( 10: 11 )'mm
' )THEN
1268 CALL SMMCH( TRANSA, 'n
', M, N, M,
1269 $ ALPHA, A, NMAX, B, NMAX,
1270 $ ZERO, C, NMAX, CT, G,
1271 $ BB, LDB, EPS, ERR,
1272 $ FATAL, NOUT, .TRUE. )
1274 CALL SMMCH( 'n
', TRANSA, M, N, N,
1275 $ ALPHA, B, NMAX, A, NMAX,
1276 $ ZERO, C, NMAX, CT, G,
1277 $ BB, LDB, EPS, ERR,
1278 $ FATAL, NOUT, .TRUE. )
1280.EQ.
ELSE IF( SNAME( 10: 11 )'sm
' )THEN
1287 C( I, J ) = BB( I + ( J - 1 )*
1289 BB( I + ( J - 1 )*LDB ) = ALPHA*
1295 CALL SMMCH( TRANSA, 'n
', M, N, M,
1296 $ ONE, A, NMAX, C, NMAX,
1297 $ ZERO, B, NMAX, CT, G,
1298 $ BB, LDB, EPS, ERR,
1299 $ FATAL, NOUT, .FALSE. )
1301 CALL SMMCH( 'n
', TRANSA, M, N, N,
1302 $ ONE, C, NMAX, A, NMAX,
1303 $ ZERO, B, NMAX, CT, G,
1304 $ BB, LDB, EPS, ERR,
1305 $ FATAL, NOUT, .FALSE. )
1308 ERRMAX = MAX( ERRMAX, ERR )
1331.LT.
IF( ERRMAXTHRESH )THEN
1332.EQ.
IF ( IORDER0) WRITE( NOUT, FMT = 10000 )SNAME, NC
1333.EQ.
IF ( IORDER1) WRITE( NOUT, FMT = 10001 )SNAME, NC
1335.EQ.
IF ( IORDER0) WRITE( NOUT, FMT = 10002 )SNAME, NC, ERRMAX
1336.EQ.
IF ( IORDER1) WRITE( NOUT, FMT = 10003 )SNAME, NC, ERRMAX
1341 WRITE( NOUT, FMT = 9996 )SNAME
1343 $ CALL SPRCN3( NTRA, NC, SNAME, IORDER, SIDE, UPLO, TRANSA, DIAG,
1344 $ M, N, ALPHA, LDA, LDB)
134910003 FORMAT( ' ', A12,' completed
the row-major computational
',
1350 $ 'tests(
', I6, ' calls)
', /' ******* but with maximum test
',
1351 $ 'ratio
', F8.2, ' - suspect *******
' )
135210002 FORMAT( ' ', A12,' completed
the column-major computational
',
1353 $ 'tests(
', I6, ' calls)
', /' ******* but with maximum test
',
1354 $ 'ratio
', F8.2, ' - suspect *******
' )
135510001 FORMAT( ' ', A12,' passed
the row-major computational tests
',
1356 $ ' (
', I6, ' call
', 's)
' )
135710000 FORMAT( ' ', A12,' passed
the column-major computational tests
',
1358 $ ' (
', I6, ' call
', 's)
' )
1359 9998 FORMAT( ' ******* fatal error -
PARAMETER number
', I2, ' was ch
',
1360 $ 'anged incorrectly *******
' )
1361 9996 FORMAT( ' *******
', A12,' failed on
CALL number:
' )
1362 9995 FORMAT( 1X, I6, ':
', A12,'(
', 4( '''', A1, ''',
' ), 2( I3, ',
' ),
1363 $ F4.1, ', a,
', I3, ', b,
', I3, ') .
' )
1364 9994 FORMAT( ' ******* fatal error - error-
EXIT taken on valid
CALL *
',
1371 SUBROUTINE SPRCN3(NOUT, NC, SNAME, IORDER, SIDE, UPLO, TRANSA,
1372 $ DIAG, M, N, ALPHA, LDA, LDB)
1373 INTEGER NOUT, NC, IORDER, M, N, LDA, LDB
1375 CHARACTER*1 SIDE, UPLO, TRANSA, DIAG
1377 CHARACTER*14 CRC, CS, CU, CA, CD
1379.EQ.
IF (SIDE'l
')THEN
1384.EQ.
IF (UPLO'u
')THEN
1389.EQ.
IF (TRANSA'n
')THEN
1390 CA = ' cblasnotrans
'
1391.EQ.
ELSE IF (TRANSA't
')THEN
1394 CA = 'cblasconjtrans
'
1396.EQ.
IF (DIAG'n
')THEN
1397 CD = ' cblasnonunit
'
1401.EQ.
IF (IORDER1)THEN
1402 CRC = 'cblasrowmajor
'
1404 CRC = 'cblascolmajor
'
1406 WRITE(NOUT, FMT = 9995)NC,SNAME,CRC, CS,CU
1407 WRITE(NOUT, FMT = 9994)CA, CD, M, N, ALPHA, LDA, LDB
1409 9995 FORMAT( 1X, I6, ':
', A12,'(
', A14, ',
', A14, ',
', A14, ',
')
1410 9994 FORMAT( 22X, 2( A14, ',
') , 2( I3, ',
' ),
1411 $ F4.1, ', a,
', I3, ', b,
', I3, ').
' )
1414 SUBROUTINE SCHK4( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
1415 $ FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, NMAX,
1416 $ A, AA, AS, B, BB, BS, C, CC, CS, CT, G,
1431 PARAMETER ( ZERO = 0.0 )
1434 INTEGER NALF, NBET, NIDIM, NMAX, NOUT, NTRA, IORDER
1435 LOGICAL FATAL, REWI, TRACE
1438 REAL A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
1439 $ AS( NMAX*NMAX ), B( NMAX, NMAX ),
1440 $ BB( NMAX*NMAX ), BET( NBET ), BS( NMAX*NMAX ),
1441 $ C( NMAX, NMAX ), CC( NMAX*NMAX ),
1442 $ CS( NMAX*NMAX ), CT( NMAX ), G( NMAX )
1443 INTEGER IDIM( NIDIM )
1445 REAL ALPHA, ALS, BETA, BETS, ERR, ERRMAX
1446 INTEGER I, IA, IB, ICT, ICU, IK, IN, J, JC, JJ, K, KS,
1447 $ LAA, LCC, LDA, LDAS, LDC, LDCS, LJ, MA, N, NA,
1449 LOGICAL NULL, RESET, SAME, TRAN, UPPER
1450 CHARACTER*1 TRANS, TRANSS, UPLO, UPLOS
1457 EXTERNAL LSE, LSERES
1459 EXTERNAL SMAKE, SMMCH, CSSYRK
1463 INTEGER INFOT, NOUTC
1466 COMMON /INFOC/INFOT, NOUTC, OK
1468 DATA ICHT/'ntc
'/, ICHU/'ul
'/
1476 DO 100 IN = 1, NIDIM
1492 TRANS = ICHT( ICT: ICT )
1493.EQ.
TRAN = TRANS't.OR..EQ.
'TRANS'c
'
1512 CALL SMAKE( 'ge
', ' ', ' ', MA, NA, A, NMAX, AA, LDA,
1516 UPLO = ICHU( ICU: ICU )
1527 CALL SMAKE( 'sy
', UPLO, ' ', N, N, C, NMAX, CC,
1528 $ LDC, RESET, ZERO )
1552 $ CALL SPRCN4( NTRA, NC, SNAME, IORDER, UPLO,
1553 $ TRANS, N, K, ALPHA, LDA, BETA, LDC)
1556 CALL CSSYRK( IORDER, UPLO, TRANS, N, K, ALPHA,
1557 $ AA, LDA, BETA, CC, LDC )
1562 WRITE( NOUT, FMT = 9993 )
1569.EQ.
ISAME( 1 ) = UPLOSUPLO
1570.EQ.
ISAME( 2 ) = TRANSSTRANS
1571.EQ.
ISAME( 3 ) = NSN
1572.EQ.
ISAME( 4 ) = KSK
1573.EQ.
ISAME( 5 ) = ALSALPHA
1574 ISAME( 6 ) = LSE( AS, AA, LAA )
1575.EQ.
ISAME( 7 ) = LDASLDA
1576.EQ.
ISAME( 8 ) = BETSBETA
1578 ISAME( 9 ) = LSE( CS, CC, LCC )
1580 ISAME( 9 ) = LSERES( 'sy
', UPLO, N, N, CS,
1583.EQ.
ISAME( 10 ) = LDCSLDC
1590.AND.
SAME = SAMEISAME( I )
1591.NOT.
IF( ISAME( I ) )
1592 $ WRITE( NOUT, FMT = 9998 )I+1
1613 CALL SMMCH( 't
', 'n
', LJ, 1, K, ALPHA,
1615 $ A( 1, J ), NMAX, BETA,
1616 $ C( JJ, J ), NMAX, CT, G,
1617 $ CC( JC ), LDC, EPS, ERR,
1618 $ FATAL, NOUT, .TRUE. )
1620 CALL SMMCH( 'n
', 't
', LJ, 1, K, ALPHA,
1622 $ A( J, 1 ), NMAX, BETA,
1623 $ C( JJ, J ), NMAX, CT, G,
1624 $ CC( JC ), LDC, EPS, ERR,
1625 $ FATAL, NOUT, .TRUE. )
1632 ERRMAX = MAX( ERRMAX, ERR )
1654.LT.
IF( ERRMAXTHRESH )THEN
1655.EQ.
IF ( IORDER0) WRITE( NOUT, FMT = 10000 )SNAME, NC
1656.EQ.
IF ( IORDER1) WRITE( NOUT, FMT = 10001 )SNAME, NC
1658.EQ.
IF ( IORDER0) WRITE( NOUT, FMT = 10002 )SNAME, NC, ERRMAX
1659.EQ.
IF ( IORDER1) WRITE( NOUT, FMT = 10003 )SNAME, NC, ERRMAX
1665 $ WRITE( NOUT, FMT = 9995 )J
1668 WRITE( NOUT, FMT = 9996 )SNAME
1669 CALL SPRCN4( NOUT, NC, SNAME, IORDER, UPLO, TRANS, N, K, ALPHA,
167510003 FORMAT( ' ', A12,' completed
the row-major computational
',
1676 $ 'tests(
', I6, ' calls)
', /' ******* but with maximum test
',
1677 $ 'ratio
', F8.2, ' - suspect *******
' )
167810002 FORMAT( ' ', A12,' completed
the column-major computational
',
1679 $ 'tests(
', I6, ' calls)
', /' ******* but with maximum test
',
1680 $ 'ratio
', F8.2, ' - suspect *******
' )
168110001 FORMAT( ' ', A12,' passed
the row-major computational tests
',
1682 $ ' (
', I6, ' call
', 's)
' )
168310000 FORMAT( ' ', A12,' passed
the column-major computational tests
',
1684 $ ' (
', I6, ' call
', 's)
' )
1685 9998 FORMAT( ' ******* fatal error -
PARAMETER number
', I2, ' was ch
',
1686 $ 'anged incorrectly *******
' )
1687 9996 FORMAT( ' *******
', A12,' failed on
CALL number:
' )
1688 9995 FORMAT( ' these are
the results
for column
', I3 )
1689 9994 FORMAT( 1X, I6, ':
', A12,'(
', 2( '''', A1, ''',
' ), 2( I3, ',
' ),
1690 $ F4.1, ', a,
', I3, ',
', F4.1, ', c,
', I3, ') .
' )
1691 9993 FORMAT( ' ******* fatal error - error-
EXIT taken on valid
CALL *
',
1698 SUBROUTINE SPRCN4(NOUT, NC, SNAME, IORDER, UPLO, TRANSA,
1699 $ N, K, ALPHA, LDA, BETA, LDC)
1700 INTEGER NOUT, NC, IORDER, N, K, LDA, LDC
1702 CHARACTER*1 UPLO, TRANSA
1704 CHARACTER*14 CRC, CU, CA
1706.EQ.
IF (UPLO'u
')THEN
1711.EQ.
IF (TRANSA'n
')THEN
1712 CA = ' cblasnotrans
'
1713.EQ.
ELSE IF (TRANSA't
')THEN
1716 CA = 'cblasconjtrans
'
1718.EQ.
IF (IORDER1)THEN
1719 CRC = ' cblasrowmajor
'
1721 CRC = ' cblascolmajor
'
1723 WRITE(NOUT, FMT = 9995)NC, SNAME, CRC, CU, CA
1724 WRITE(NOUT, FMT = 9994)N, K, ALPHA, LDA, BETA, LDC
1726 9995 FORMAT( 1X, I6, ':
', A12,'(
', 3( A14, ',
') )
1727 9994 FORMAT( 20X, 2( I3, ',
' ),
1728 $ F4.1, ', a,
', I3, ',
', F4.1, ', c,
', I3, ').
' )
1731 SUBROUTINE SCHK5( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
1732 $ FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, NMAX,
1733 $ AB, AA, AS, BB, BS, C, CC, CS, CT, G, W,
1748 PARAMETER ( ZERO = 0.0 )
1751 INTEGER NALF, NBET, NIDIM, NMAX, NOUT, NTRA, IORDER
1752 LOGICAL FATAL, REWI, TRACE
1755 REAL AA( NMAX*NMAX ), AB( 2*NMAX*NMAX ),
1756 $ ALF( NALF ), AS( NMAX*NMAX ), BB( NMAX*NMAX ),
1757 $ BET( NBET ), BS( NMAX*NMAX ), C( NMAX, NMAX ),
1758 $ CC( NMAX*NMAX ), CS( NMAX*NMAX ), CT( NMAX ),
1759 $ G( NMAX ), W( 2*NMAX )
1760 INTEGER IDIM( NIDIM )
1762 REAL ALPHA, ALS, BETA, BETS, ERR, ERRMAX
1763 INTEGER I, IA, IB, ICT, ICU, IK, IN, J, JC, JJ, JJAB,
1764 $ K, KS, LAA, LBB, LCC, LDA, LDAS, LDB, LDBS,
1765 $ LDC, LDCS, LJ, MA, N, NA, NARGS, NC, NS
1766 LOGICAL NULL, RESET, SAME, TRAN, UPPER
1767 CHARACTER*1 TRANS, TRANSS, UPLO, UPLOS
1774 EXTERNAL LSE, LSERES
1776 EXTERNAL SMAKE, SMMCH, CSSYR2K
1780 INTEGER INFOT, NOUTC
1783 COMMON /INFOC/INFOT, NOUTC, OK
1785 DATA ICHT/'ntc
'/, ICHU/'ul
'/
1793 DO 130 IN = 1, NIDIM
1805 DO 120 IK = 1, NIDIM
1809 TRANS = ICHT( ICT: ICT )
1810.EQ.
TRAN = TRANS't.OR..EQ.
'TRANS'c
'
1830 CALL SMAKE( 'ge
', ' ', ' ', MA, NA, AB, 2*NMAX, AA,
1831 $ LDA, RESET, ZERO )
1833 CALL SMAKE( 'ge
', ' ', ' ', MA, NA, AB, NMAX, AA, LDA,
1842 CALL SMAKE( 'ge
', ' ', ' ', MA, NA, AB( K + 1 ),
1843 $ 2*NMAX, BB, LDB, RESET, ZERO )
1845 CALL SMAKE( 'ge
', ' ', ' ', MA, NA, AB( K*NMAX + 1 ),
1846 $ NMAX, BB, LDB, RESET, ZERO )
1850 UPLO = ICHU( ICU: ICU )
1861 CALL SMAKE( 'sy
', UPLO, ' ', N, N, C, NMAX, CC,
1862 $ LDC, RESET, ZERO )
1890 $ CALL SPRCN5( NTRA, NC, SNAME, IORDER, UPLO,
1891 $ TRANS, N, K, ALPHA, LDA, LDB, BETA, LDC)
1894 CALL CSSYR2K( IORDER, UPLO, TRANS, N, K, ALPHA,
1895 $ AA, LDA, BB, LDB, BETA, CC, LDC )
1900 WRITE( NOUT, FMT = 9993 )
1907.EQ.
ISAME( 1 ) = UPLOSUPLO
1908.EQ.
ISAME( 2 ) = TRANSSTRANS
1909.EQ.
ISAME( 3 ) = NSN
1910.EQ.
ISAME( 4 ) = KSK
1911.EQ.
ISAME( 5 ) = ALSALPHA
1912 ISAME( 6 ) = LSE( AS, AA, LAA )
1913.EQ.
ISAME( 7 ) = LDASLDA
1914 ISAME( 8 ) = LSE( BS, BB, LBB )
1915.EQ.
ISAME( 9 ) = LDBSLDB
1916.EQ.
ISAME( 10 ) = BETSBETA
1918 ISAME( 11 ) = LSE( CS, CC, LCC )
1920 ISAME( 11 ) = LSERES( 'sy
', UPLO, N, N, CS,
1923.EQ.
ISAME( 12 ) = LDCSLDC
1930.AND.
SAME = SAMEISAME( I )
1931.NOT.
IF( ISAME( I ) )
1932 $ WRITE( NOUT, FMT = 9998 )I+1
1955 W( I ) = AB( ( J - 1 )*2*NMAX + K +
1957 W( K + I ) = AB( ( J - 1 )*2*NMAX +
1960 CALL SMMCH( 't
', 'n
', LJ, 1, 2*K,
1961 $ ALPHA, AB( JJAB ), 2*NMAX,
1963 $ C( JJ, J ), NMAX, CT, G,
1964 $ CC( JC ), LDC, EPS, ERR,
1965 $ FATAL, NOUT, .TRUE. )
1968 W( I ) = AB( ( K + I - 1 )*NMAX +
1970 W( K + I ) = AB( ( I - 1 )*NMAX +
1973 CALL SMMCH( 'n
', 'n
', LJ, 1, 2*K,
1974 $ ALPHA, AB( JJ ), NMAX, W,
1975 $ 2*NMAX, BETA, C( JJ, J ),
1976 $ NMAX, CT, G, CC( JC ), LDC,
1977 $ EPS, ERR, FATAL, NOUT,
1985 $ JJAB = JJAB + 2*NMAX
1987 ERRMAX = MAX( ERRMAX, ERR )
2009.LT.
IF( ERRMAXTHRESH )THEN
2010.EQ.
IF ( IORDER0) WRITE( NOUT, FMT = 10000 )SNAME, NC
2011.EQ.
IF ( IORDER1) WRITE( NOUT, FMT = 10001 )SNAME, NC
2013.EQ.
IF ( IORDER0) WRITE( NOUT, FMT = 10002 )SNAME, NC, ERRMAX
2014.EQ.
IF ( IORDER1) WRITE( NOUT, FMT = 10003 )SNAME, NC, ERRMAX
2020 $ WRITE( NOUT, FMT = 9995 )J
2023 WRITE( NOUT, FMT = 9996 )SNAME
2024 CALL SPRCN5( NOUT, NC, SNAME, IORDER, UPLO, TRANS, N, K, ALPHA,
2025 $ LDA, LDB, BETA, LDC)
203010003 FORMAT( ' ', A12,' completed
the row-major computational
',
2031 $ 'tests(
', I6, ' calls)
', /' ******* but with maximum test
',
2032 $ 'ratio
', F8.2, ' - suspect *******
' )
203310002 FORMAT( ' ', A12,' completed
the column-major computational
',
2034 $ 'tests(
', I6, ' calls)
', /' ******* but with maximum test
',
2035 $ 'ratio
', F8.2, ' - suspect *******
' )
203610001 FORMAT( ' ', A12,' passed
the row-major computational tests
',
2037 $ ' (
', I6, ' call
', 's)
' )
203810000 FORMAT( ' ', A12,' passed
the column-major computational tests
',
2039 $ ' (
', I6, ' call
', 's)
' )
2040 9998 FORMAT( ' ******* fatal error -
PARAMETER number
', I2, ' was ch
',
2041 $ 'anged incorrectly *******
' )
2042 9996 FORMAT( ' *******
', A12,' failed on
CALL number:
' )
2043 9995 FORMAT( ' these are
the results
for column
', I3 )
2044 9994 FORMAT( 1X, I6, ':
', A12,'(
', 2( '''', A1, ''',
' ), 2( I3, ',
' ),
2045 $ F4.1, ', a,
', I3, ', b,
', I3, ',
', F4.1, ', c,
', I3, ')
',
2047 9993 FORMAT( ' ******* fatal error - error-
EXIT taken on valid
CALL *
',
2054 SUBROUTINE SPRCN5(NOUT, NC, SNAME, IORDER, UPLO, TRANSA,
2055 $ N, K, ALPHA, LDA, LDB, BETA, LDC)
2056 INTEGER NOUT, NC, IORDER, N, K, LDA, LDB, LDC
2058 CHARACTER*1 UPLO, TRANSA
2060 CHARACTER*14 CRC, CU, CA
2062.EQ.
IF (UPLO'u
')THEN
2067.EQ.
IF (TRANSA'n
')THEN
2068 CA = ' cblasnotrans
'
2069.EQ.
ELSE IF (TRANSA't
')THEN
2072 CA = 'cblasconjtrans
'
2074.EQ.
IF (IORDER1)THEN
2075 CRC = ' cblasrowmajor
'
2077 CRC = ' cblascolmajor
'
2079 WRITE(NOUT, FMT = 9995)NC, SNAME, CRC, CU, CA
2080 WRITE(NOUT, FMT = 9994)N, K, ALPHA, LDA, LDB, BETA, LDC
2082 9995 FORMAT( 1X, I6, ':
', A12,'(
', 3( A14, ',
') )
2083 9994 FORMAT( 20X, 2( I3, ',
' ),
2084 $ F4.1, ', a,
', I3, ', b
', I3, ',
', F4.1, ', c,
', I3, ').
' )
2087 SUBROUTINE SMAKE( TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, RESET,
2106 PARAMETER ( ZERO = 0.0, ONE = 1.0 )
2108 PARAMETER ( ROGUE = -1.0E10 )
2111 INTEGER LDA, M, N, NMAX
2113 CHARACTER*1 DIAG, UPLO
2116 REAL A( NMAX, * ), AA( * )
2118 INTEGER I, IBEG, IEND, J
2119 LOGICAL GEN, LOWER, SYM, TRI, UNIT, UPPER
2127.OR..AND..EQ.
UPPER = ( SYMTRI )UPLO'u
'
2128.OR..AND..EQ.
LOWER = ( SYMTRI )UPLO'l
'
2129.AND..EQ.
UNIT = TRIDIAG'u
'
2135.OR..AND..LE..OR..AND..GE.
IF( GEN( UPPERIJ )( LOWERIJ ) )
2137 A( I, J ) = SBEG( RESET ) + TRANSL
2140.GT..AND..EQ.
IF( N3JN/2 )
2143 A( J, I ) = A( I, J )
2151 $ A( J, J ) = A( J, J ) + ONE
2158.EQ.
IF( TYPE'ge
' )THEN
2161 AA( I + ( J - 1 )*LDA ) = A( I, J )
2163 DO 40 I = M + 1, LDA
2164 AA( I + ( J - 1 )*LDA ) = ROGUE
2167.EQ.
ELSE IF( TYPE'sy.OR..EQ.
'TYPE'tr
' )THEN
2184 DO 60 I = 1, IBEG - 1
2185 AA( I + ( J - 1 )*LDA ) = ROGUE
2187 DO 70 I = IBEG, IEND
2188 AA( I + ( J - 1 )*LDA ) = A( I, J )
2190 DO 80 I = IEND + 1, LDA
2191 AA( I + ( J - 1 )*LDA ) = ROGUE
2200 SUBROUTINE SMMCH( TRANSA, TRANSB, M, N, KK, ALPHA, A, LDA, B, LDB,
2201 $ BETA, C, LDC, CT, G, CC, LDCC, EPS, ERR, FATAL,
2216 PARAMETER ( ZERO = 0.0, ONE = 1.0 )
2218 REAL ALPHA, BETA, EPS, ERR
2219 INTEGER KK, LDA, LDB, LDC, LDCC, M, N, NOUT
2221 CHARACTER*1 TRANSA, TRANSB
2223 REAL A( LDA, * ), B( LDB, * ), C( LDC, * ),
2224 $ CC( LDCC, * ), CT( * ), G( * )
2228 LOGICAL TRANA, TRANB
2230 INTRINSIC ABS, MAX, SQRT
2232.EQ.
TRANA = TRANSA't.OR..EQ.
'TRANSA'c
'
2233.EQ.
TRANB = TRANSB't.OR..EQ.
'TRANSB'c
'
2245.NOT..AND..NOT.
IF( TRANATRANB )THEN
2248 CT( I ) = CT( I ) + A( I, K )*B( K, J )
2249 G( I ) = G( I ) + ABS( A( I, K ) )*ABS( B( K, J ) )
2252.AND..NOT.
ELSE IF( TRANATRANB )THEN
2255 CT( I ) = CT( I ) + A( K, I )*B( K, J )
2256 G( I ) = G( I ) + ABS( A( K, I ) )*ABS( B( K, J ) )
2259.NOT..AND.
ELSE IF( TRANATRANB )THEN
2262 CT( I ) = CT( I ) + A( I, K )*B( J, K )
2263 G( I ) = G( I ) + ABS( A( I, K ) )*ABS( B( J, K ) )
2266.AND.
ELSE IF( TRANATRANB )THEN
2269 CT( I ) = CT( I ) + A( K, I )*B( J, K )
2270 G( I ) = G( I ) + ABS( A( K, I ) )*ABS( B( J, K ) )
2275 CT( I ) = ALPHA*CT( I ) + BETA*C( I, J )
2276 G( I ) = ABS( ALPHA )*G( I ) + ABS( BETA )*ABS( C( I, J ) )
2283 ERRI = ABS( CT( I ) - CC( I, J ) )/EPS
2284.NE.
IF( G( I )ZERO )
2285 $ ERRI = ERRI/G( I )
2286 ERR = MAX( ERR, ERRI )
2287.GE.
IF( ERR*SQRT( EPS )ONE )
2299 WRITE( NOUT, FMT = 9999 )
2302 WRITE( NOUT, FMT = 9998 )I, CT( I ), CC( I, J )
2304 WRITE( NOUT, FMT = 9998 )I, CC( I, J ), CT( I )
2308 $ WRITE( NOUT, FMT = 9997 )J
2313 9999 FORMAT( ' ******* fatal error - computed result is less than hal
',
2314 $ 'f accurate *******
', /' expected result compu
',
2316 9998 FORMAT( 1X, I7, 2G18.6 )
2317 9997 FORMAT( ' these are
the results
for column
', I3 )
2322 LOGICAL FUNCTION LSE( RI, RJ, LR )
2337 REAL RI( * ), RJ( * )
2342.NE.
IF( RI( I )RJ( I ) )
2354 LOGICAL FUNCTION LSERES( TYPE, UPLO, M, N, AA, AS, LDA )
2373 REAL AA( LDA, * ), AS( LDA, * )
2375 INTEGER I, IBEG, IEND, J
2379 IF( type.EQ.
'GE' )
THEN
2381 DO 10 i = m + 1, lda
2382 IF( aa( i, j ).NE.as( i, j ) )
2386 ELSE IF( type.EQ.
'SY' )
THEN
2395 DO 30 i = 1, ibeg - 1
2396 IF( aa( i, j ).NE.as( i, j ) )
2399 DO 40 i = iend + 1, lda
2400 IF( aa( i, j ).NE.as( i, j ) )
2451 i = i - 1000*( i/1000 )
2456 sbeg = ( i - 500 )/1001.0
real function sdiff(x, y)
subroutine smake(type, uplo, diag, m, n, a, nmax, aa, lda, reset, transl)
subroutine sprcn2(nout, nc, sname, iorder, side, uplo, m, n, alpha, lda, ldb, beta, ldc)
subroutine smmch(transa, transb, m, n, kk, alpha, a, lda, b, ldb, beta, c, ldc, ct, g, cc, ldcc, eps, err, fatal, nout, mv)
subroutine schk4(sname, eps, thresh, nout, ntra, trace, rewi, fatal, nidim, idim, nalf, alf, nbet, bet, nmax, a, aa, as, b, bb, bs, c, cc, cs, ct, g, iorder)
subroutine schk1(sname, eps, thresh, nout, ntra, trace, rewi, fatal, nidim, idim, nalf, alf, nbet, bet, nmax, a, aa, as, b, bb, bs, c, cc, cs, ct, g, iorder)
subroutine schk2(sname, eps, thresh, nout, ntra, trace, rewi, fatal, nidim, idim, nalf, alf, nbet, bet, nmax, a, aa, as, b, bb, bs, c, cc, cs, ct, g, iorder)
subroutine schk3(sname, eps, thresh, nout, ntra, trace, rewi, fatal, nidim, idim, nalf, alf, nmax, a, aa, as, b, bb, bs, ct, g, c, iorder)
subroutine sprcn1(nout, nc, sname, iorder, transa, transb, m, n, k, alpha, lda, ldb, beta, ldc)
real function sbeg(reset)
logical function lse(ri, rj, lr)
subroutine schk5(sname, eps, thresh, nout, ntra, trace, rewi, fatal, nidim, idim, nalf, alf, nbet, bet, nmax, ab, aa, as, bb, bs, c, cc, cs, ct, g, w, iorder)
if(complex_arithmetic) id
end diagonal values have been computed in the(sparse) matrix id.SOL
for(i8=*sizetab-1;i8 >=0;i8--)