113 parameter( nsubs = 16 )
114 DOUBLE PRECISION zero, one
115 parameter( zero = 0.0d0, one = 1.0d0 )
117 parameter( nmax = 65, incmax = 2 )
118 INTEGER ninmax, nidmax, nkbmax, nalmax, nbemax
119 parameter( ninmax = 7, nidmax = 9, nkbmax = 7,
120 $ nalmax = 7, nbemax = 7 )
122 DOUBLE PRECISION eps, err, thresh
123 INTEGER i, isnum, j, n, nalf, nbet, nidim, ninc, nkb,
125 LOGICAL fatal, ltestt, rewi, same, sfatal, trace,
129 CHARACTER*32 snaps, summry
131 DOUBLE PRECISION a( nmax, nmax ), aa( nmax*nmax ),
132 $ alf( nalmax ), as( nmax*nmax ), bet( nbemax ),
133 $ g( nmax ), x( nmax ), xs( nmax*incmax ),
134 $ xx( nmax*incmax ), y( nmax ),
135 $ ys( nmax*incmax ), yt( nmax ),
136 $ yy( nmax*incmax ), z( 2*nmax )
137 INTEGER idim( nidmax ), inc( ninmax ), kb( nkbmax )
138 LOGICAL ltest( nsubs )
139 CHARACTER*6 snames( nsubs )
141 DOUBLE PRECISION ddiff
148 INTRINSIC abs, max, min
154 COMMON /infoc/infot, noutc, ok, lerr
155 COMMON /srnamc/srnamt
157 DATA snames/
'DGEMV ',
'DGBMV ',
'DSYMV ',
'DSBMV ',
158 $
'DSPMV ',
'DTRMV ',
'DTBMV ',
'DTPMV ',
159 $
'DTRSV ',
'DTBSV ',
'DTPSV ',
'DGER ',
160 $
'DSYR ',
'DSPR ',
'DSYR2 ',
'DSPR2 '/
165 READ( nin, fmt = * )summry
166 READ( nin, fmt = * )nout
167 OPEN( nout, file = summry, status =
'UNKNOWN' )
172 READ( nin, fmt = * )snaps
173 READ( nin, fmt = * )ntra
176 OPEN( ntra, file = snaps, status =
'UNKNOWN' )
179 READ( nin, fmt = * )rewi
180 rewi = rewi.AND.trace
182 READ( nin, fmt = * )sfatal
184 READ( nin, fmt = * )tsterr
186 READ( nin, fmt = * )thresh
191 READ( nin, fmt = * )nidim
192 IF( nidim.LT.1.OR.nidim.GT.nidmax )
THEN
193 WRITE( nout, fmt = 9997 )
'N', nidmax
196 READ( nin, fmt = * )( idim( i ), i = 1, nidim )
198 IF( idim( i ).LT.0.OR.idim( i ).GT.nmax )
THEN
199 WRITE( nout, fmt = 9996 )nmax
204 READ( nin, fmt = * )nkb
205 IF( nkb.LT.1.OR.nkb.GT.nkbmax )
THEN
206 WRITE( nout, fmt = 9997 )
'K', nkbmax
209 READ( nin, fmt = * )( kb( i ), i = 1, nkb )
211 IF( kb( i ).LT.0 )
THEN
212 WRITE( nout, fmt = 9995 )
217 READ( nin, fmt = * )ninc
218 IF( ninc.LT.1.OR.ninc.GT.ninmax )
THEN
219 WRITE( nout, fmt = 9997 )
'INCX AND INCY', ninmax
222 READ( nin, fmt = * )( inc( i ), i = 1, ninc )
224 IF( inc( i ).EQ.0.OR.abs( inc( i ) ).GT.incmax )
THEN
225 WRITE( nout, fmt = 9994 )incmax
230 READ( nin, fmt = * )nalf
231 IF( nalf.LT.1.OR.nalf.GT.nalmax )
THEN
232 WRITE( nout, fmt = 9997 )
'ALPHA', nalmax
235 READ( nin, fmt = * )( alf( i ), i = 1, nalf )
237 READ( nin, fmt = * )nbet
238 IF( nbet.LT.1.OR.nbet.GT.nbemax )
THEN
239 WRITE( nout, fmt = 9997 )
'BETA', nbemax
242 READ( nin, fmt = * )( bet( i ), i = 1, nbet )
246 WRITE( nout, fmt = 9993 )
247 WRITE( nout, fmt = 9992 )( idim( i ), i = 1, nidim )
248 WRITE( nout, fmt = 9991 )( kb( i ), i = 1, nkb )
249 WRITE( nout, fmt = 9990 )( inc( i ), i = 1, ninc )
250 WRITE( nout, fmt = 9989 )( alf( i ), i = 1, nalf )
251 WRITE( nout, fmt = 9988 )( bet( i ), i = 1, nbet )
252 IF( .NOT.tsterr )
THEN
253 WRITE( nout, fmt = * )
254 WRITE( nout, fmt = 9980 )
256 WRITE( nout, fmt = * )
257 WRITE( nout, fmt = 9999 )thresh
258 WRITE( nout, fmt = * )
266 50
READ( nin, fmt = 9984,
END = 80 )SNAMET, ltestt
268 IF( snamet.EQ.snames( i ) )
271 WRITE( nout, fmt = 9986 )snamet
273 70 ltest( i ) = ltestt
282 WRITE( nout, fmt = 9998 )eps
289 a( i, j ) = max( i - j + 1, 0 )
295 yy( j ) = j*( ( j + 1 )*j )/2 - ( ( j + 1 )*j*( j - 1 ) )/3
300 CALL dmvch( trans, n, n, one, a, nmax, x, 1, zero, y, 1, yt, g,
301 $ yy, eps, err, fatal, nout, .true. )
302 same =
lde( yy, yt, n )
303 IF( .NOT.same.OR.err.NE.zero )
THEN
304 WRITE( nout, fmt = 9985 )trans, same, err
308 CALL dmvch( trans, n, n, one, a, nmax, x, -1, zero, y, -1, yt, g,
309 $ yy, eps, err, fatal, nout, .true. )
310 same =
lde( yy, yt, n )
311 IF( .NOT.same.OR.err.NE.zero )
THEN
312 WRITE( nout, fmt = 9985 )trans, same, err
318 DO 210 isnum = 1, nsubs
319 WRITE( nout, fmt = * )
320 IF( .NOT.ltest( isnum ) )
THEN
322 WRITE( nout, fmt = 9983 )snames( isnum )
324 srnamt = snames( isnum )
327 CALL dchke( isnum, snames( isnum ), nout )
328 WRITE( nout, fmt = * )
334 GO TO ( 140, 140, 150, 150, 150, 160, 160,
335 $ 160, 160, 160, 160, 170, 180, 180,
338 140
CALL dchk1( snames( isnum ), eps, thresh, nout, ntra, trace,
339 $ rewi, fatal, nidim, idim, nkb, kb, nalf, alf,
340 $ nbet, bet, ninc, inc, nmax, incmax, a, aa, as,
341 $ x, xx, xs, y, yy, ys, yt, g )
344 150
CALL dchk2( snames( isnum ), eps, thresh, nout, ntra, trace,
345 $ rewi, fatal, nidim, idim, nkb, kb, nalf, alf,
346 $ nbet, bet, ninc, inc, nmax, incmax, a, aa, as,
347 $ x, xx, xs, y, yy, ys, yt, g )
351 160
CALL dchk3( snames( isnum ), eps, thresh, nout, ntra, trace,
352 $ rewi, fatal, nidim, idim, nkb, kb, ninc, inc,
353 $ nmax, incmax, a, aa, as, y, yy, ys, yt, g, z )
356 170
CALL dchk4( snames( isnum ), eps, thresh, nout, ntra, trace,
357 $ rewi, fatal, nidim, idim, nalf, alf, ninc, inc,
358 $ nmax, incmax, a, aa, as, x, xx, xs, y, yy, ys,
362 180
CALL dchk5( snames( isnum ), eps, thresh, nout, ntra, trace,
363 $ rewi, fatal, nidim, idim, nalf, alf, ninc, inc,
364 $ nmax, incmax, a, aa, as, x, xx, xs, y, yy, ys,
368 190
CALL dchk6( snames( isnum ), eps, thresh, nout, ntra, trace,
369 $ rewi, fatal, nidim, idim, nalf, alf, ninc, inc,
370 $ nmax, incmax, a, aa, as, x, xx, xs, y, yy, ys,
373 200
IF( fatal.AND.sfatal )
377 WRITE( nout, fmt = 9982 )
381 WRITE( nout, fmt = 9981 )
385 WRITE( nout, fmt = 9987 )
393 9999
FORMAT(
' ROUTINES PASS COMPUTATIONAL TESTS IF TEST RATIO IS LES',
395 9998
FORMAT(
' RELATIVE MACHINE PRECISION IS TAKEN TO BE', 1p, d9.1 )
396 9997
FORMAT(
' NUMBER OF VALUES OF ', a,
' IS LESS THAN 1 OR GREATER ',
398 9996
FORMAT(
' VALUE OF N IS LESS THAN 0 OR GREATER THAN ', i2 )
399 9995
FORMAT(
' VALUE OF K IS LESS THAN 0' )
400 9994
FORMAT(
' ABSOLUTE VALUE OF INCX OR INCY IS 0 OR GREATER THAN ',
402 9993
FORMAT(
' TESTS OF THE DOUBLE PRECISION LEVEL 2 BLAS', //
' THE F',
403 $
'OLLOWING PARAMETER VALUES WILL BE USED:' )
404 9992
FORMAT(
' FOR N ', 9i6 )
405 9991
FORMAT(
' FOR K ', 7i6 )
406 9990
FORMAT(
' FOR INCX AND INCY ', 7i6 )
407 9989
FORMAT(
' FOR ALPHA ', 7f6.1 )
408 9988
FORMAT(
' FOR BETA ', 7f6.1 )
409 9987
FORMAT(
' AMEND DATA FILE OR INCREASE ARRAY SIZES IN PROGRAM',
410 $ /
' ******* TESTS ABANDONED *******' )
411 9986
FORMAT(
' SUBPROGRAM NAME ', a6,
' NOT RECOGNIZED', /
' ******* T',
412 $
'ESTS ABANDONED *******' )
413 9985
FORMAT(
' ERROR IN DMVCH - IN-LINE DOT PRODUCTS ARE BEING EVALU',
414 $
'ATED WRONGLY.', /
' DMVCH WAS CALLED WITH TRANS = ', a1,
415 $
' AND RETURNED SAME = ', l1,
' AND ERR = ', f12.3,
'.', /
416 $
' THIS MAY BE DUE TO FAULTS IN THE ARITHMETIC OR THE COMPILER.'
417 $ , /
' ******* TESTS ABANDONED *******' )
418 9984
FORMAT( a6, l2 )
419 9983
FORMAT( 1x, a6,
' WAS NOT TESTED' )
420 9982
FORMAT( /
' END OF TESTS' )
421 9981
FORMAT( /
' ******* FATAL ERROR - TESTS ABANDONED *******' )
422 9980
FORMAT(
' ERROR-EXITS WILL NOT BE TESTED' )
427 SUBROUTINE dchk1( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
428 $ FATAL, NIDIM, IDIM, NKB, KB, NALF, ALF, NBET,
429 $ BET, NINC, INC, NMAX, INCMAX, A, AA, AS, X, XX,
430 $ XS, Y, YY, YS, YT, G )
441 DOUBLE PRECISION ZERO, HALF
442 PARAMETER ( ZERO = 0.0d0, half = 0.5d0 )
444 DOUBLE PRECISION EPS, THRESH
445 INTEGER INCMAX, NALF, NBET, NIDIM, NINC, NKB, NMAX,
447 LOGICAL FATAL, REWI, TRACE
450 DOUBLE PRECISION A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
451 $ as( nmax*nmax ), bet( nbet ), g( nmax ),
452 $ x( nmax ), xs( nmax*incmax ),
453 $ xx( nmax*incmax ), y( nmax ),
454 $ ys( nmax*incmax ), yt( nmax ),
456 INTEGER IDIM( NIDIM ), INC( NINC ), KB( NKB )
458 DOUBLE PRECISION ALPHA, ALS, BETA, BLS, ERR, ERRMAX, TRANSL
459 INTEGER I, IA, IB, IC, IKU, IM, IN, INCX, INCXS, INCY,
460 $ INCYS, IX, IY, KL, KLS, KU, KUS, LAA, LDA,
461 $ ldas, lx, ly, m, ml, ms, n, nargs, nc, nd, nk,
463 LOGICAL BANDED, FULL, NULL, RESET, SAME, TRAN
464 CHARACTER*1 TRANS, TRANSS
474 INTRINSIC abs, max, min
479 COMMON /infoc/infot, noutc, ok, lerr
483 full = sname( 3: 3 ).EQ.
'E'
484 banded = sname( 3: 3 ).EQ.
'B'
488 ELSE IF( banded )
THEN
502 $ m = max( n - nd, 0 )
504 $ m = min( n + nd, nmax )
514 kl = max( ku - 1, 0 )
531 null = n.LE.0.OR.m.LE.0
536 CALL dmake( sname( 2: 3 ),
' ',
' ', m, n, a, nmax, aa,
537 $ lda, kl, ku, reset, transl )
540 trans = ich( ic: ic )
541 tran = trans.EQ.
'T'.OR.trans.EQ.
'C'
558 CALL dmake(
'GE',
' ',
' ', 1, nl, x, 1, xx,
559 $ abs( incx ), 0, nl - 1, reset, transl )
562 xx( 1 + abs( incx )*( nl/2 - 1 ) ) = zero
578 CALL dmake(
'GE',
' ',
' ', 1, ml, y, 1,
579 $ yy, abs( incy ), 0, ml - 1,
611 $
WRITE( ntra, fmt = 9994 )nc, sname,
612 $ trans, m, n, alpha, lda, incx, beta,
616 CALL dgemv( trans, m, n, alpha, aa,
617 $ lda, xx, incx, beta, yy,
619 ELSE IF( banded )
THEN
621 $
WRITE( ntra, fmt = 9995 )nc, sname,
622 $ trans, m, n, kl, ku, alpha, lda,
626 CALL dgbmv( trans, m, n, kl, ku, alpha,
627 $ aa, lda, xx, incx, beta,
634 WRITE( nout, fmt = 9993 )
641 isame( 1 ) = trans.EQ.transs
645 isame( 4 ) = als.EQ.alpha
646 isame( 5 ) = lde( as, aa, laa )
647 isame( 6 ) = ldas.EQ.lda
648 isame( 7 ) = lde( xs, xx, lx )
649 isame( 8 ) = incxs.EQ.incx
650 isame( 9 ) = bls.EQ.beta
652 isame( 10 ) = lde( ys, yy, ly )
654 isame( 10 ) = lderes(
'GE',
' ', 1,
658 isame( 11 ) = incys.EQ.incy
659 ELSE IF( banded )
THEN
660 isame( 4 ) = kls.EQ.kl
661 isame( 5 ) = kus.EQ.ku
662 isame( 6 ) = als.EQ.alpha
663 isame( 7 ) = lde( as, aa, laa )
664 isame( 8 ) = ldas.EQ.lda
665 isame( 9 ) = lde( xs, xx, lx )
666 isame( 10 ) = incxs.EQ.incx
667 isame( 11 ) = bls.EQ.beta
669 isame( 12 ) = lde( ys, yy, ly )
671 isame( 12 ) = lderes(
'GE',
' ', 1,
675 isame( 13 ) = incys.EQ.incy
683 same = same.AND.isame( i )
684 IF( .NOT.isame( i ) )
685 $
WRITE( nout, fmt = 9998 )i
696 CALL dmvch( trans, m, n, alpha, a,
697 $ nmax, x, incx, beta, y,
698 $ incy, yt, g, yy, eps, err,
699 $ fatal, nout, .true. )
700 errmax = max( errmax, err )
729 CALL dregr1( trans, m, n, ly, kl, ku, alpha, aa, lda, xx, incx,
730 $ beta, yy, incy, ys )
733 $
WRITE( ntra, fmt = 9994 )nc, sname, trans, m, n, alpha, lda,
737 CALL dgemv( trans, m, n, alpha, aa, lda, xx, incx, beta, yy,
739 ELSE IF( banded )
THEN
741 $
WRITE( ntra, fmt = 9995 )nc, sname, trans, m, n, kl, ku,
742 $ alpha, lda, incx, beta, incy
745 CALL dgbmv( trans, m, n, kl, ku, alpha, aa, lda, xx, incx,
749 IF( .NOT.lde( ys, yy, ly ) )
THEN
750 WRITE( nout, fmt = 9998 )nargs - 1
757 IF( errmax.LT.thresh )
THEN
758 WRITE( nout, fmt = 9999 )sname, nc
760 WRITE( nout, fmt = 9997 )sname, nc, errmax
765 WRITE( nout, fmt = 9996 )sname
767 WRITE( nout, fmt = 9994 )nc, sname, trans, m, n, alpha, lda,
769 ELSE IF( banded )
THEN
770 WRITE( nout, fmt = 9995 )nc, sname, trans, m, n, kl, ku,
771 $ alpha, lda, incx, beta, incy
777 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
779 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
780 $
'ANGED INCORRECTLY *******' )
781 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
782 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
783 $
' - SUSPECT *******' )
784 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
785 9995
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', 4( i3,
',' ), f4.1,
786 $
', A,', i3,
', X,', i2,
',', f4.1,
', Y,', i2,
') .' )
787 9994
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', 2( i3,
',' ), f4.1,
788 $
', A,', i3,
', X,', i2,
',', f4.1,
', Y,', i2,
790 9993
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
796 SUBROUTINE dchk2( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
797 $ FATAL, NIDIM, IDIM, NKB, KB, NALF, ALF, NBET,
798 $ BET, NINC, INC, NMAX, INCMAX, A, AA, AS, X, XX,
799 $ XS, Y, YY, YS, YT, G )
810 DOUBLE PRECISION ZERO, HALF
811 PARAMETER ( ZERO = 0.0d0, half = 0.5d0 )
813 DOUBLE PRECISION EPS, THRESH
814 INTEGER INCMAX, NALF, NBET, NIDIM, NINC, NKB, NMAX,
816 LOGICAL FATAL, REWI, TRACE
819 DOUBLE PRECISION A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
820 $ as( nmax*nmax ), bet( nbet ), g( nmax ),
821 $ x( nmax ), xs( nmax*incmax ),
822 $ xx( nmax*incmax ), y( nmax ),
823 $ ys( nmax*incmax ), yt( nmax ),
825 INTEGER IDIM( NIDIM ), INC( NINC ), KB( NKB )
827 DOUBLE PRECISION ALPHA, ALS, BETA, BLS, ERR, ERRMAX, TRANSL
828 INTEGER I, IA, IB, IC, IK, IN, INCX, INCXS, INCY,
829 $ INCYS, IX, IY, K, KS, LAA, LDA, LDAS, LX, LY,
830 $ N, NARGS, NC, NK, NS
831 LOGICAL BANDED, FULL, NULL, PACKED, RESET, SAME
832 CHARACTER*1 UPLO, UPLOS
847 COMMON /infoc/infot, noutc, ok, lerr
851 full = sname( 3: 3 ).EQ.
'Y'
852 banded = sname( 3: 3 ).EQ.
'B'
853 packed = sname( 3: 3 ).EQ.
'P'
857 ELSE IF( banded )
THEN
859 ELSE IF( packed )
THEN
893 laa = ( n*( n + 1 ) )/2
905 CALL dmake( sname( 2: 3 ), uplo,
' ', n, n, a, nmax, aa,
906 $ lda, k, k, reset, transl )
915 CALL dmake(
'GE',
' ',
' ', 1, n, x, 1, xx,
916 $ abs( incx ), 0, n - 1, reset, transl )
919 xx( 1 + abs( incx )*( n/2 - 1 ) ) = zero
935 CALL dmake(
'GE',
' ',
' ', 1, n, y, 1, yy,
936 $ abs( incy ), 0, n - 1, reset,
966 $
WRITE( ntra, fmt = 9993 )nc, sname,
967 $ uplo, n, alpha, lda, incx, beta, incy
970 CALL dsymv( uplo, n, alpha, aa, lda, xx,
971 $ incx, beta, yy, incy )
972 ELSE IF( banded )
THEN
974 $
WRITE( ntra, fmt = 9994 )nc, sname,
975 $ uplo, n, k, alpha, lda, incx, beta,
979 CALL dsbmv( uplo, n, k, alpha, aa, lda,
980 $ xx, incx, beta, yy, incy )
981 ELSE IF( packed )
THEN
983 $
WRITE( ntra, fmt = 9995 )nc, sname,
984 $ uplo, n, alpha, incx, beta, incy
987 CALL dspmv( uplo, n, alpha, aa, xx, incx,
994 WRITE( nout, fmt = 9992 )
1001 isame( 1 ) = uplo.EQ.uplos
1002 isame( 2 ) = ns.EQ.n
1004 isame( 3 ) = als.EQ.alpha
1005 isame( 4 ) = lde( as, aa, laa )
1006 isame( 5 ) = ldas.EQ.lda
1007 isame( 6 ) = lde( xs, xx, lx )
1008 isame( 7 ) = incxs.EQ.incx
1009 isame( 8 ) = bls.EQ.beta
1011 isame( 9 ) = lde( ys, yy, ly )
1013 isame( 9 ) = lderes(
'GE',
' ', 1, n,
1014 $ ys, yy, abs( incy ) )
1016 isame( 10 ) = incys.EQ.incy
1017 ELSE IF( banded )
THEN
1018 isame( 3 ) = ks.EQ.k
1019 isame( 4 ) = als.EQ.alpha
1020 isame( 5 ) = lde( as, aa, laa )
1021 isame( 6 ) = ldas.EQ.lda
1022 isame( 7 ) = lde( xs, xx, lx )
1023 isame( 8 ) = incxs.EQ.incx
1024 isame( 9 ) = bls.EQ.beta
1026 isame( 10 ) = lde( ys, yy, ly )
1028 isame( 10 ) = lderes(
'GE',
' ', 1, n,
1029 $ ys, yy, abs( incy ) )
1031 isame( 11 ) = incys.EQ.incy
1032 ELSE IF( packed )
THEN
1033 isame( 3 ) = als.EQ.alpha
1034 isame( 4 ) = lde( as, aa, laa )
1035 isame( 5 ) = lde( xs, xx, lx )
1036 isame( 6 ) = incxs.EQ.incx
1037 isame( 7 ) = bls.EQ.beta
1039 isame( 8 ) = lde( ys, yy, ly )
1041 isame( 8 ) = lderes(
'GE',
' ', 1, n,
1042 $ ys, yy, abs( incy ) )
1044 isame( 9 ) = incys.EQ.incy
1052 same = same.AND.isame( i )
1053 IF( .NOT.isame( i ) )
1054 $
WRITE( nout, fmt = 9998 )i
1065 CALL dmvch(
'N', n, n, alpha, a, nmax, x,
1066 $ incx, beta, y, incy, yt, g,
1067 $ yy, eps, err, fatal, nout,
1069 errmax = max( errmax, err )
1095 IF( errmax.LT.thresh )
THEN
1096 WRITE( nout, fmt = 9999 )sname, nc
1098 WRITE( nout, fmt = 9997 )sname, nc, errmax
1103 WRITE( nout, fmt = 9996 )sname
1105 WRITE( nout, fmt = 9993 )nc, sname, uplo, n, alpha, lda, incx,
1107 ELSE IF( banded )
THEN
1108 WRITE( nout, fmt = 9994 )nc, sname, uplo, n, k, alpha, lda,
1110 ELSE IF( packed )
THEN
1111 WRITE( nout, fmt = 9995 )nc, sname, uplo, n, alpha, incx,
1118 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
1120 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
1121 $
'ANGED INCORRECTLY *******' )
1122 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
1123 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
1124 $
' - SUSPECT *******' )
1125 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
1126 9995
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', i3,
',', f4.1,
', AP',
1127 $
', X,', i2,
',', f4.1,
', Y,', i2,
') .' )
1128 9994
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', 2( i3,
',' ), f4.1,
1129 $
', A,', i3,
', X,', i2,
',', f4.1,
', Y,', i2,
1131 9993
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', i3,
',', f4.1,
', A,',
1132 $ i3,
', X,', i2,
',', f4.1,
', Y,', i2,
') .' )
1133 9992
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
1139 SUBROUTINE dchk3( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
1140 $ FATAL, NIDIM, IDIM, NKB, KB, NINC, INC, NMAX,
1141 $ INCMAX, A, AA, AS, X, XX, XS, XT, G, Z )
1152 DOUBLE PRECISION ZERO, HALF, ONE
1153 PARAMETER ( ZERO = 0.0d0, half = 0.5d0, one = 1.0d0 )
1155 DOUBLE PRECISION EPS, THRESH
1156 INTEGER INCMAX, NIDIM, NINC, NKB, NMAX, NOUT, NTRA
1157 LOGICAL FATAL, REWI, TRACE
1160 DOUBLE PRECISION A( NMAX, NMAX ), AA( NMAX*NMAX ),
1161 $ as( nmax*nmax ), g( nmax ), x( nmax ),
1162 $ xs( nmax*incmax ), xt( nmax ),
1163 $ xx( nmax*incmax ), z( nmax )
1164 INTEGER IDIM( NIDIM ), INC( NINC ), KB( NKB )
1166 DOUBLE PRECISION ERR, ERRMAX, TRANSL
1167 INTEGER I, ICD, ICT, ICU, IK, IN, INCX, INCXS, IX, K,
1168 $ ks, laa, lda, ldas, lx, n, nargs, nc, nk, ns
1169 LOGICAL BANDED, FULL, NULL, PACKED, RESET, SAME
1170 CHARACTER*1 DIAG, DIAGS, TRANS, TRANSS, UPLO, UPLOS
1171 CHARACTER*2 ICHD, ICHU
1177 EXTERNAL lde, lderes
1184 INTEGER INFOT, NOUTC
1187 COMMON /infoc/infot, noutc, ok, lerr
1189 DATA ichu/
'UL'/, icht/
'NTC'/, ichd/
'UN'/
1191 full = sname( 3: 3 ).EQ.
'R'
1192 banded = sname( 3: 3 ).EQ.
'B'
1193 packed = sname( 3: 3 ).EQ.
'P'
1197 ELSE IF( banded )
THEN
1199 ELSE IF( packed )
THEN
1211 DO 110 in = 1, nidim
1237 laa = ( n*( n + 1 ) )/2
1244 uplo = ichu( icu: icu )
1247 trans = icht( ict: ict )
1250 diag = ichd( icd: icd )
1255 CALL dmake( sname( 2: 3 ), uplo, diag, n, n, a,
1256 $ nmax, aa, lda, k, k, reset, transl )
1265 CALL dmake(
'GE',
' ',
' ', 1, n, x, 1, xx,
1266 $ abs( incx ), 0, n - 1, reset,
1270 xx( 1 + abs( incx )*( n/2 - 1 ) ) = zero
1293 IF( sname( 4: 5 ).EQ.
'MV' )
THEN
1296 $
WRITE( ntra, fmt = 9993 )nc, sname,
1297 $ uplo, trans, diag, n, lda, incx
1300 CALL dtrmv( uplo, trans, diag, n, aa, lda,
1302 ELSE IF( banded )
THEN
1304 $
WRITE( ntra, fmt = 9994 )nc, sname,
1305 $ uplo, trans, diag, n, k, lda, incx
1308 CALL dtbmv( uplo, trans, diag, n, k, aa,
1310 ELSE IF( packed )
THEN
1312 $
WRITE( ntra, fmt = 9995 )nc, sname,
1313 $ uplo, trans, diag, n, incx
1316 CALL dtpmv( uplo, trans, diag, n, aa, xx,
1319 ELSE IF( sname( 4: 5 ).EQ.
'SV' )
THEN
1322 $
WRITE( ntra, fmt = 9993 )nc, sname,
1323 $ uplo, trans, diag, n, lda, incx
1326 CALL dtrsv( uplo, trans, diag, n, aa, lda,
1328 ELSE IF( banded )
THEN
1330 $
WRITE( ntra, fmt = 9994 )nc, sname,
1331 $ uplo, trans, diag, n, k, lda, incx
1334 CALL dtbsv( uplo, trans, diag, n, k, aa,
1336 ELSE IF( packed )
THEN
1338 $
WRITE( ntra, fmt = 9995 )nc, sname,
1339 $ uplo, trans, diag, n, incx
1342 CALL dtpsv( uplo, trans, diag, n, aa, xx,
1350 WRITE( nout, fmt = 9992 )
1357 isame( 1 ) = uplo.EQ.uplos
1358 isame( 2 ) = trans.EQ.transs
1359 isame( 3 ) = diag.EQ.diags
1360 isame( 4 ) = ns.EQ.n
1362 isame( 5 ) = lde( as, aa, laa )
1363 isame( 6 ) = ldas.EQ.lda
1365 isame( 7 ) = lde( xs, xx, lx )
1367 isame( 7 ) = lderes(
'GE',
' ', 1, n, xs,
1370 isame( 8 ) = incxs.EQ.incx
1371 ELSE IF( banded )
THEN
1372 isame( 5 ) = ks.EQ.k
1373 isame( 6 ) = lde( as, aa, laa )
1374 isame( 7 ) = ldas.EQ.lda
1376 isame( 8 ) = lde( xs, xx, lx )
1378 isame( 8 ) = lderes(
'GE',
' ', 1, n, xs,
1381 isame( 9 ) = incxs.EQ.incx
1382 ELSE IF( packed )
THEN
1383 isame( 5 ) = lde( as, aa, laa )
1385 isame( 6 ) = lde( xs, xx, lx )
1387 isame( 6 ) = lderes(
'GE',
' ', 1, n, xs,
1390 isame( 7 ) = incxs.EQ.incx
1398 same = same.AND.isame( i )
1399 IF( .NOT.isame( i ) )
1400 $
WRITE( nout, fmt = 9998 )i
1408 IF( sname( 4: 5 ).EQ.
'MV' )
THEN
1412 CALL dmvch( trans, n, n, one, a, nmax, x,
1413 $ incx, zero, z, incx, xt, g,
1414 $ xx, eps, err, fatal, nout,
1416 ELSE IF( sname( 4: 5 ).EQ.
'SV' )
THEN
1421 z( i ) = xx( 1 + ( i - 1 )*
1423 xx( 1 + ( i - 1 )*abs( incx ) )
1426 CALL dmvch( trans, n, n, one, a, nmax, z,
1427 $ incx, zero, x, incx, xt, g,
1428 $ xx, eps, err, fatal, nout,
1431 errmax = max( errmax, err )
1454 IF( errmax.LT.thresh )
THEN
1455 WRITE( nout, fmt = 9999 )sname, nc
1457 WRITE( nout, fmt = 9997 )sname, nc, errmax
1462 WRITE( nout, fmt = 9996 )sname
1464 WRITE( nout, fmt = 9993 )nc, sname, uplo, trans, diag, n, lda,
1466 ELSE IF( banded )
THEN
1467 WRITE( nout, fmt = 9994 )nc, sname, uplo, trans, diag, n, k,
1469 ELSE IF( packed )
THEN
1470 WRITE( nout, fmt = 9995 )nc, sname, uplo, trans, diag, n, incx
1476 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
1478 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
1479 $
'ANGED INCORRECTLY *******' )
1480 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
1481 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
1482 $
' - SUSPECT *******' )
1483 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
1484 9995
FORMAT( 1x, i6,
': ', a6,
'(', 3(
'''', a1,
''',' ), i3,
', AP, ',
1486 9994
FORMAT( 1x, i6,
': ', a6,
'(', 3(
'''', a1,
''',' ), 2( i3,
',' ),
1487 $
' A,', i3,
', X,', i2,
') .' )
1488 9993
FORMAT( 1x, i6,
': ', a6,
'(', 3(
'''', a1,
''',' ), i3,
', A,',
1489 $ i3,
', X,', i2,
') .' )
1490 9992
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
1496 SUBROUTINE dchk4( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
1497 $ FATAL, NIDIM, IDIM, NALF, ALF, NINC, INC, NMAX,
1498 $ INCMAX, A, AA, AS, X, XX, XS, Y, YY, YS, YT, G,
1510 DOUBLE PRECISION ZERO, HALF, ONE
1511 PARAMETER ( ZERO = 0.0d0, half = 0.5d0, one = 1.0d0 )
1513 DOUBLE PRECISION EPS, THRESH
1514 INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA
1515 LOGICAL FATAL, REWI, TRACE
1518 DOUBLE PRECISION A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
1519 $ AS( NMAX*NMAX ), G( NMAX ), X( NMAX ),
1520 $ XS( NMAX*INCMAX ), XX( NMAX*INCMAX ),
1521 $ y( nmax ), ys( nmax*incmax ), yt( nmax ),
1522 $ yy( nmax*incmax ), z( nmax )
1523 INTEGER IDIM( NIDIM ), INC( NINC )
1525 DOUBLE PRECISION ALPHA, ALS, ERR, ERRMAX, TRANSL
1526 INTEGER I, IA, IM, IN, INCX, INCXS, INCY, INCYS, IX,
1527 $ iy, j, laa, lda, ldas, lx, ly, m, ms, n, nargs,
1529 LOGICAL NULL, RESET, SAME
1531 DOUBLE PRECISION W( 1 )
1535 EXTERNAL LDE, LDERES
1539 INTRINSIC abs, max, min
1541 INTEGER INFOT, NOUTC
1544 COMMON /infoc/infot, noutc, ok, lerr
1553 DO 120 in = 1, nidim
1559 $ m = max( n - nd, 0 )
1561 $ m = min( n + nd, nmax )
1571 null = n.LE.0.OR.m.LE.0
1580 CALL dmake(
'GE',
' ',
' ', 1, m, x, 1, xx, abs( incx ),
1581 $ 0, m - 1, reset, transl )
1584 xx( 1 + abs( incx )*( m/2 - 1 ) ) = zero
1594 CALL dmake(
'GE',
' ',
' ', 1, n, y, 1, yy,
1595 $ abs( incy ), 0, n - 1, reset, transl )
1598 yy( 1 + abs( incy )*( n/2 - 1 ) ) = zero
1607 CALL dmake( sname( 2: 3 ),
' ',
' ', m, n, a, nmax,
1608 $ aa, lda, m - 1, n - 1, reset, transl )
1633 $
WRITE( ntra, fmt = 9994 )nc, sname, m, n,
1634 $ alpha, incx, incy, lda
1637 CALL dger( m, n, alpha, xx, incx, yy, incy, aa,
1643 WRITE( nout, fmt = 9993 )
1650 isame( 1 ) = ms.EQ.m
1651 isame( 2 ) = ns.EQ.n
1652 isame( 3 ) = als.EQ.alpha
1653 isame( 4 ) = lde( xs, xx, lx )
1654 isame( 5 ) = incxs.EQ.incx
1655 isame( 6 ) = lde( ys, yy, ly )
1656 isame( 7 ) = incys.EQ.incy
1658 isame( 8 ) = lde( as, aa, laa )
1660 isame( 8 ) = lderes(
'GE',
' ', m, n, as, aa,
1663 isame( 9 ) = ldas.EQ.lda
1669 same = same.AND.isame( i )
1670 IF( .NOT.isame( i ) )
1671 $
WRITE( nout, fmt = 9998 )i
1688 z( i ) = x( m - i + 1 )
1695 w( 1 ) = y( n - j + 1 )
1697 CALL dmvch(
'N', m, 1, alpha, z, nmax, w, 1,
1698 $ one, a( 1, j ), 1, yt, g,
1699 $ aa( 1 + ( j - 1 )*lda ), eps,
1700 $ err, fatal, nout, .true. )
1701 errmax = max( errmax, err )
1723 IF( errmax.LT.thresh )
THEN
1724 WRITE( nout, fmt = 9999 )sname, nc
1726 WRITE( nout, fmt = 9997 )sname, nc, errmax
1731 WRITE( nout, fmt = 9995 )j
1734 WRITE( nout, fmt = 9996 )sname
1735 WRITE( nout, fmt = 9994 )nc, sname, m, n, alpha, incx, incy, lda
1740 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
1742 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
1743 $
'ANGED INCORRECTLY *******' )
1744 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
1745 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
1746 $
' - SUSPECT *******' )
1747 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
1748 9995
FORMAT(
' THESE ARE THE RESULTS FOR COLUMN ', i3 )
1749 9994
FORMAT( 1x, i6,
': ', a6,
'(', 2( i3,
',' ), f4.1,
', X,', i2,
1750 $
', Y,', i2,
', A,', i3,
') .' )
1751 9993
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
1757 SUBROUTINE dchk5( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
1758 $ FATAL, NIDIM, IDIM, NALF, ALF, NINC, INC, NMAX,
1759 $ INCMAX, A, AA, AS, X, XX, XS, Y, YY, YS, YT, G,
1771 DOUBLE PRECISION ZERO, HALF, ONE
1772 PARAMETER ( ZERO = 0.0d0, half = 0.5d0, one = 1.0d0 )
1774 DOUBLE PRECISION EPS, THRESH
1775 INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA
1776 LOGICAL FATAL, REWI, TRACE
1779 DOUBLE PRECISION A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
1780 $ AS( NMAX*NMAX ), G( NMAX ), X( NMAX ),
1781 $ XS( NMAX*INCMAX ), XX( NMAX*INCMAX ),
1782 $ Y( NMAX ), YS( NMAX*INCMAX ), YT( NMAX ),
1783 $ YY( NMAX*INCMAX ), Z( NMAX )
1784 INTEGER IDIM( NIDIM ), INC( NINC )
1786 DOUBLE PRECISION ALPHA, ALS, ERR, ERRMAX, TRANSL
1787 INTEGER I, IA, IC, IN, INCX, INCXS, IX, J, JA, JJ, LAA,
1788 $ lda, ldas, lj, lx, n, nargs, nc, ns
1789 LOGICAL FULL, NULL, PACKED, RESET, SAME, UPPER
1790 CHARACTER*1 UPLO, UPLOS
1793 DOUBLE PRECISION W( 1 )
1797 EXTERNAL LDE, LDERES
1803 INTEGER INFOT, NOUTC
1806 COMMON /infoc/infot, noutc, ok, lerr
1810 full = sname( 3: 3 ).EQ.
'Y'
1811 packed = sname( 3: 3 ).EQ.
'P'
1815 ELSE IF( packed )
THEN
1823 DO 100 in = 1, nidim
1833 laa = ( n*( n + 1 ) )/2
1839 uplo = ich( ic: ic )
1849 CALL dmake(
'GE',
' ',
' ', 1, n, x, 1, xx, abs( incx ),
1850 $ 0, n - 1, reset, transl )
1853 xx( 1 + abs( incx )*( n/2 - 1 ) ) = zero
1858 null = n.LE.0.OR.alpha.EQ.zero
1863 CALL dmake( sname( 2: 3 ), uplo,
' ', n, n, a, nmax,
1864 $ aa, lda, n - 1, n - 1, reset, transl )
1886 $
WRITE( ntra, fmt = 9993 )nc, sname, uplo, n,
1890 CALL dsyr( uplo, n, alpha, xx, incx, aa, lda )
1891 ELSE IF( packed )
THEN
1893 $
WRITE( ntra, fmt = 9994 )nc, sname, uplo, n,
1897 CALL dspr( uplo, n, alpha, xx, incx, aa )
1903 WRITE( nout, fmt = 9992 )
1910 isame( 1 ) = uplo.EQ.uplos
1911 isame( 2 ) = ns.EQ.n
1912 isame( 3 ) = als.EQ.alpha
1913 isame( 4 ) = lde( xs, xx, lx )
1914 isame( 5 ) = incxs.EQ.incx
1916 isame( 6 ) = lde( as, aa, laa )
1918 isame( 6 ) = lderes( sname( 2: 3 ), uplo, n, n, as,
1921 IF( .NOT.packed )
THEN
1922 isame( 7 ) = ldas.EQ.lda
1929 same = same.AND.isame( i )
1930 IF( .NOT.isame( i ) )
1931 $
WRITE( nout, fmt = 9998 )i
1948 z( i ) = x( n - i + 1 )
1961 CALL dmvch(
'N', lj, 1, alpha, z( jj ), lj, w,
1962 $ 1, one, a( jj, j ), 1, yt, g,
1963 $ aa( ja ), eps, err, fatal, nout,
1974 errmax = max( errmax, err )
1995 IF( errmax.LT.thresh )
THEN
1996 WRITE( nout, fmt = 9999 )sname, nc
1998 WRITE( nout, fmt = 9997 )sname, nc, errmax
2003 WRITE( nout, fmt = 9995 )j
2006 WRITE( nout, fmt = 9996 )sname
2008 WRITE( nout, fmt = 9993 )nc, sname, uplo, n, alpha, incx, lda
2009 ELSE IF( packed )
THEN
2010 WRITE( nout, fmt = 9994 )nc, sname, uplo, n, alpha, incx
2016 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
2018 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
2019 $
'ANGED INCORRECTLY *******' )
2020 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
2021 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
2022 $
' - SUSPECT *******' )
2023 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
2024 9995
FORMAT(
' THESE ARE THE RESULTS FOR COLUMN ', i3 )
2025 9994
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', i3,
',', f4.1,
', X,',
2027 9993
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', i3,
',', f4.1,
', X,',
2028 $ i2,
', A,', i3,
') .' )
2029 9992
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
2035 SUBROUTINE dchk6( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
2036 $ FATAL, NIDIM, IDIM, NALF, ALF, NINC, INC, NMAX,
2037 $ INCMAX, A, AA, AS, X, XX, XS, Y, YY, YS, YT, G,
2049 DOUBLE PRECISION ZERO, HALF, ONE
2050 PARAMETER ( ZERO = 0.0d0, half = 0.5d0, one = 1.0d0 )
2052 DOUBLE PRECISION EPS, THRESH
2053 INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA
2054 LOGICAL FATAL, REWI, TRACE
2057 DOUBLE PRECISION A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
2058 $ AS( NMAX*NMAX ), G( NMAX ), X( NMAX ),
2059 $ XS( NMAX*INCMAX ), XX( NMAX*INCMAX ),
2060 $ Y( NMAX ), YS( NMAX*INCMAX ), YT( NMAX ),
2061 $ YY( NMAX*INCMAX ), Z( NMAX, 2 )
2062 INTEGER IDIM( NIDIM ), INC( NINC )
2064 DOUBLE PRECISION ALPHA, ALS, ERR, ERRMAX, TRANSL
2065 INTEGER I, IA, IC, IN, INCX, INCXS, INCY, INCYS, IX,
2066 $ iy, j, ja, jj, laa, lda, ldas, lj, lx, ly, n,
2068 LOGICAL FULL, NULL, PACKED, RESET, SAME, UPPER
2069 CHARACTER*1 UPLO, UPLOS
2072 DOUBLE PRECISION W( 2 )
2076 EXTERNAL LDE, LDERES
2078 EXTERNAL DMAKE, DMVCH, DSPR2, DSYR2
2082 INTEGER INFOT, NOUTC
2085 COMMON /infoc/infot, noutc, ok, lerr
2089 full = sname( 3: 3 ).EQ.
'Y'
2090 packed = sname( 3: 3 ).EQ.
'P'
2094 ELSE IF( packed )
THEN
2102 DO 140 in = 1, nidim
2112 laa = ( n*( n + 1 ) )/2
2118 uplo = ich( ic: ic )
2128 CALL dmake(
'GE',
' ',
' ', 1, n, x, 1, xx, abs( incx ),
2129 $ 0, n - 1, reset, transl )
2132 xx( 1 + abs( incx )*( n/2 - 1 ) ) = zero
2142 CALL dmake(
'GE',
' ',
' ', 1, n, y, 1, yy,
2143 $ abs( incy ), 0, n - 1, reset, transl )
2146 yy( 1 + abs( incy )*( n/2 - 1 ) ) = zero
2151 null = n.LE.0.OR.alpha.EQ.zero
2156 CALL dmake( sname( 2: 3 ), uplo,
' ', n, n, a,
2157 $ nmax, aa, lda, n - 1, n - 1, reset,
2184 $
WRITE( ntra, fmt = 9993 )nc, sname, uplo, n,
2185 $ alpha, incx, incy, lda
2188 CALL dsyr2( uplo, n, alpha, xx, incx, yy, incy,
2190 ELSE IF( packed )
THEN
2192 $
WRITE( ntra, fmt = 9994 )nc, sname, uplo, n,
2196 CALL dspr2( uplo, n, alpha, xx, incx, yy, incy,
2203 WRITE( nout, fmt = 9992 )
2210 isame( 1 ) = uplo.EQ.uplos
2211 isame( 2 ) = ns.EQ.n
2212 isame( 3 ) = als.EQ.alpha
2213 isame( 4 ) = lde( xs, xx, lx )
2214 isame( 5 ) = incxs.EQ.incx
2215 isame( 6 ) = lde( ys, yy, ly )
2216 isame( 7 ) = incys.EQ.incy
2218 isame( 8 ) = lde( as, aa, laa )
2220 isame( 8 ) = lderes( sname( 2: 3 ), uplo, n, n,
2223 IF( .NOT.packed )
THEN
2224 isame( 9 ) = ldas.EQ.lda
2231 same = same.AND.isame( i )
2232 IF( .NOT.isame( i ) )
2233 $
WRITE( nout, fmt = 9998 )i
2250 z( i, 1 ) = x( n - i + 1 )
2259 z( i, 2 ) = y( n - i + 1 )
2273 CALL dmvch(
'N', lj, 2, alpha, z( jj, 1 ),
2274 $ nmax, w, 1, one, a( jj, j ), 1,
2275 $ yt, g, aa( ja ), eps, err, fatal,
2286 errmax = max( errmax, err )
2309 IF( errmax.LT.thresh )
THEN
2310 WRITE( nout, fmt = 9999 )sname, nc
2312 WRITE( nout, fmt = 9997 )sname, nc, errmax
2317 WRITE( nout, fmt = 9995 )j
2320 WRITE( nout, fmt = 9996 )sname
2322 WRITE( nout, fmt = 9993 )nc, sname, uplo, n, alpha, incx,
2324 ELSE IF( packed )
THEN
2325 WRITE( nout, fmt = 9994 )nc, sname, uplo, n, alpha, incx, incy
2331 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
2333 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
2334 $
'ANGED INCORRECTLY *******' )
2335 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
2336 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
2337 $
' - SUSPECT *******' )
2338 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
2339 9995
FORMAT(
' THESE ARE THE RESULTS FOR COLUMN ', i3 )
2340 9994
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', i3,
',', f4.1,
', X,',
2341 $ i2,
', Y,', i2,
', AP) .' )
2342 9993
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', i3,
',', f4.1,
', X,',
2343 $ i2,
', Y,', i2,
', A,', i3,
') .' )
2344 9992
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
2366 INTEGER INFOT, NOUTC
2369 DOUBLE PRECISION ALPHA, BETA
2371 DOUBLE PRECISION A( 1, 1 ), X( 1 ), Y( 1 )
2373 EXTERNAL CHKXER, DGBMV, DGEMV, DGER, DSBMV, DSPMV, DSPR,
2374 $ DSPR2, DSYMV, DSYR, DSYR2, DTBMV, DTBSV, DTPMV,
2375 $ DTPSV, DTRMV, DTRSV
2377 COMMON /INFOC/INFOT, NOUTC, OK, LERR
2385 GO TO ( 10, 20, 30, 40, 50, 60, 70, 80,
2386 $ 90, 100, 110, 120, 130, 140, 150,
2389 CALL dgemv(
'/', 0, 0, alpha, a, 1, x, 1, beta, y, 1 )
2390 CALL chkxer( srnamt, infot, nout, lerr, ok )
2392 CALL dgemv(
'N', -1, 0, alpha, a, 1, x, 1, beta, y, 1 )
2393 CALL chkxer( srnamt, infot, nout, lerr, ok )
2395 CALL dgemv(
'N', 0, -1, alpha, a, 1, x, 1, beta, y, 1 )
2396 CALL chkxer( srnamt, infot, nout, lerr, ok )
2398 CALL dgemv(
'N', 2, 0, alpha, a, 1, x, 1, beta, y, 1 )
2399 CALL chkxer( srnamt, infot, nout, lerr, ok )
2401 CALL dgemv(
'N', 0, 0, alpha, a, 1, x, 0, beta, y, 1 )
2402 CALL chkxer( srnamt, infot, nout, lerr, ok )
2404 CALL dgemv(
'N', 0, 0, alpha, a, 1, x, 1, beta, y, 0 )
2405 CALL chkxer( srnamt, infot, nout, lerr, ok )
2408 CALL dgbmv(
'/', 0, 0, 0, 0, alpha, a, 1, x, 1, beta, y, 1 )
2409 CALL chkxer( srnamt, infot, nout, lerr, ok )
2411 CALL dgbmv(
'N', -1, 0, 0, 0, alpha, a, 1, x, 1, beta, y, 1 )
2412 CALL chkxer( srnamt, infot, nout, lerr, ok )
2414 CALL dgbmv(
'N', 0, -1, 0, 0, alpha, a, 1, x, 1, beta, y, 1 )
2415 CALL chkxer( srnamt, infot, nout, lerr, ok )
2417 CALL dgbmv(
'N', 0, 0, -1, 0, alpha, a, 1, x, 1, beta, y, 1 )
2418 CALL chkxer( srnamt, infot, nout, lerr, ok )
2420 CALL dgbmv(
'N', 2, 0, 0, -1, alpha, a, 1, x, 1, beta, y, 1 )
2421 CALL chkxer( srnamt, infot, nout, lerr, ok )
2423 CALL dgbmv(
'N', 0, 0, 1, 0, alpha, a, 1, x, 1, beta, y, 1 )
2424 CALL chkxer( srnamt, infot, nout, lerr, ok )
2426 CALL dgbmv(
'N', 0, 0, 0, 0, alpha, a, 1, x, 0, beta, y, 1 )
2427 CALL chkxer( srnamt, infot, nout, lerr, ok )
2429 CALL dgbmv(
'N', 0, 0, 0, 0, alpha, a, 1, x, 1, beta, y, 0 )
2430 CALL chkxer( srnamt, infot, nout, lerr, ok )
2433 CALL dsymv(
'/', 0, alpha, a, 1, x, 1, beta, y, 1 )
2434 CALL chkxer( srnamt, infot, nout, lerr, ok )
2436 CALL dsymv(
'U', -1, alpha, a, 1, x, 1, beta, y, 1 )
2437 CALL chkxer( srnamt, infot, nout, lerr, ok )
2439 CALL dsymv(
'U', 2, alpha, a, 1, x, 1, beta, y, 1 )
2440 CALL chkxer( srnamt, infot, nout, lerr, ok )
2442 CALL dsymv(
'U', 0, alpha, a, 1, x, 0, beta, y, 1 )
2443 CALL chkxer( srnamt, infot, nout, lerr, ok )
2445 CALL dsymv(
'U', 0, alpha, a, 1, x, 1, beta, y, 0 )
2446 CALL chkxer( srnamt, infot, nout, lerr, ok )
2449 CALL dsbmv(
'/', 0, 0, alpha, a, 1, x, 1, beta, y, 1 )
2450 CALL chkxer( srnamt, infot, nout, lerr, ok )
2452 CALL dsbmv(
'U', -1, 0, alpha, a, 1, x, 1, beta, y, 1 )
2453 CALL chkxer( srnamt, infot, nout, lerr, ok )
2455 CALL dsbmv(
'U', 0, -1, alpha, a, 1, x, 1, beta, y, 1 )
2456 CALL chkxer( srnamt, infot, nout, lerr, ok )
2458 CALL dsbmv(
'U', 0, 1, alpha, a, 1, x, 1, beta, y, 1 )
2459 CALL chkxer( srnamt, infot, nout, lerr, ok )
2461 CALL dsbmv(
'U', 0, 0, alpha, a, 1, x, 0, beta, y, 1 )
2462 CALL chkxer( srnamt, infot, nout, lerr, ok )
2464 CALL dsbmv(
'U', 0, 0, alpha, a, 1, x, 1, beta, y, 0 )
2465 CALL chkxer( srnamt, infot, nout, lerr, ok )
2468 CALL dspmv(
'/', 0, alpha, a, x, 1, beta, y, 1 )
2469 CALL chkxer( srnamt, infot, nout, lerr, ok )
2471 CALL dspmv(
'U', -1, alpha, a, x, 1, beta, y, 1 )
2472 CALL chkxer( srnamt, infot, nout, lerr, ok )
2474 CALL dspmv(
'U', 0, alpha, a, x, 0, beta, y, 1 )
2475 CALL chkxer( srnamt, infot, nout, lerr, ok )
2477 CALL dspmv(
'U', 0, alpha, a, x, 1, beta, y, 0 )
2478 CALL chkxer( srnamt, infot, nout, lerr, ok )
2481 CALL dtrmv(
'/',
'N',
'N', 0, a, 1, x, 1 )
2482 CALL chkxer( srnamt, infot, nout, lerr, ok )
2484 CALL dtrmv(
'U',
'/',
'N', 0, a, 1, x, 1 )
2485 CALL chkxer( srnamt, infot, nout, lerr, ok )
2487 CALL dtrmv(
'U',
'N',
'/', 0, a, 1, x, 1 )
2488 CALL chkxer( srnamt, infot, nout, lerr, ok )
2490 CALL dtrmv(
'U',
'N',
'N', -1, a, 1, x, 1 )
2491 CALL chkxer( srnamt, infot, nout, lerr, ok )
2493 CALL dtrmv(
'U',
'N',
'N', 2, a, 1, x, 1 )
2494 CALL chkxer( srnamt, infot, nout, lerr, ok )
2496 CALL dtrmv(
'U',
'N',
'N', 0, a, 1, x, 0 )
2497 CALL chkxer( srnamt, infot, nout, lerr, ok )
2500 CALL dtbmv(
'/',
'N',
'N', 0, 0, a, 1, x, 1 )
2501 CALL chkxer( srnamt, infot, nout, lerr, ok )
2503 CALL dtbmv(
'U',
'/',
'N', 0, 0, a, 1, x, 1 )
2504 CALL chkxer( srnamt, infot, nout, lerr, ok )
2506 CALL dtbmv(
'U',
'N',
'/', 0, 0, a, 1, x, 1 )
2507 CALL chkxer( srnamt, infot, nout, lerr, ok )
2509 CALL dtbmv(
'U',
'N',
'N', -1, 0, a, 1, x, 1 )
2510 CALL chkxer( srnamt, infot, nout, lerr, ok )
2512 CALL dtbmv(
'U',
'N',
'N', 0, -1, a, 1, x, 1 )
2513 CALL chkxer( srnamt, infot, nout, lerr, ok )
2515 CALL dtbmv(
'U',
'N',
'N', 0, 1, a, 1, x, 1 )
2516 CALL chkxer( srnamt, infot, nout, lerr, ok )
2518 CALL dtbmv(
'U',
'N',
'N', 0, 0, a, 1, x, 0 )
2519 CALL chkxer( srnamt, infot, nout, lerr, ok )
2522 CALL dtpmv(
'/',
'N',
'N', 0, a, x, 1 )
2523 CALL chkxer( srnamt, infot, nout, lerr, ok )
2525 CALL dtpmv(
'U',
'/',
'N', 0, a, x, 1 )
2526 CALL chkxer( srnamt, infot, nout, lerr, ok )
2528 CALL dtpmv(
'U',
'N',
'/', 0, a, x, 1 )
2529 CALL chkxer( srnamt, infot, nout, lerr, ok )
2531 CALL dtpmv(
'U',
'N',
'N', -1, a, x, 1 )
2532 CALL chkxer( srnamt, infot, nout, lerr, ok )
2534 CALL dtpmv(
'U',
'N',
'N', 0, a, x, 0 )
2535 CALL chkxer( srnamt, infot, nout, lerr, ok )
2538 CALL dtrsv(
'/',
'N',
'N', 0, a, 1, x, 1 )
2539 CALL chkxer( srnamt, infot, nout, lerr, ok )
2541 CALL dtrsv(
'U',
'/',
'N', 0, a, 1, x, 1 )
2542 CALL chkxer( srnamt, infot, nout, lerr, ok )
2544 CALL dtrsv(
'U',
'N',
'/', 0, a, 1, x, 1 )
2545 CALL chkxer( srnamt, infot, nout, lerr, ok )
2547 CALL dtrsv(
'U',
'N',
'N', -1, a, 1, x, 1 )
2548 CALL chkxer( srnamt, infot, nout, lerr, ok )
2550 CALL dtrsv(
'U',
'N',
'N', 2, a, 1, x, 1 )
2551 CALL chkxer( srnamt, infot, nout, lerr, ok )
2553 CALL dtrsv(
'U',
'N',
'N', 0, a, 1, x, 0 )
2554 CALL chkxer( srnamt, infot, nout, lerr, ok )
2557 CALL dtbsv(
'/',
'N',
'N', 0, 0, a, 1, x, 1 )
2558 CALL chkxer( srnamt, infot, nout, lerr, ok )
2560 CALL dtbsv(
'U',
'/',
'N', 0, 0, a, 1, x, 1 )
2561 CALL chkxer( srnamt, infot, nout, lerr, ok )
2563 CALL dtbsv(
'U',
'N',
'/', 0, 0, a, 1, x, 1 )
2564 CALL chkxer( srnamt, infot, nout, lerr, ok )
2566 CALL dtbsv(
'U',
'N',
'N', -1, 0, a, 1, x, 1 )
2567 CALL chkxer( srnamt, infot, nout, lerr, ok )
2569 CALL dtbsv(
'U',
'N',
'N', 0, -1, a, 1, x, 1 )
2570 CALL chkxer( srnamt, infot, nout, lerr, ok )
2572 CALL dtbsv(
'U',
'N',
'N', 0, 1, a, 1, x, 1 )
2573 CALL chkxer( srnamt, infot, nout, lerr, ok )
2575 CALL dtbsv(
'U',
'N',
'N', 0, 0, a, 1, x, 0 )
2576 CALL chkxer( srnamt, infot, nout, lerr, ok )
2579 CALL dtpsv(
'/',
'N',
'N', 0, a, x, 1 )
2580 CALL chkxer( srnamt, infot, nout, lerr, ok )
2582 CALL dtpsv(
'U',
'/',
'N', 0, a, x, 1 )
2583 CALL chkxer( srnamt, infot, nout, lerr, ok )
2585 CALL dtpsv(
'U',
'N',
'/', 0, a, x, 1 )
2586 CALL chkxer( srnamt, infot, nout, lerr, ok )
2588 CALL dtpsv(
'U',
'N',
'N', -1, a, x, 1 )
2589 CALL chkxer( srnamt, infot, nout, lerr, ok )
2591 CALL dtpsv(
'U',
'N',
'N', 0, a, x, 0 )
2592 CALL chkxer( srnamt, infot, nout, lerr, ok )
2595 CALL dger( -1, 0, alpha, x, 1, y, 1, a, 1 )
2596 CALL chkxer( srnamt, infot, nout, lerr, ok )
2598 CALL dger( 0, -1, alpha, x, 1, y, 1, a, 1 )
2599 CALL chkxer( srnamt, infot, nout, lerr, ok )
2601 CALL dger( 0, 0, alpha, x, 0, y, 1, a, 1 )
2602 CALL chkxer( srnamt, infot, nout, lerr, ok )
2604 CALL dger( 0, 0, alpha, x, 1, y, 0, a, 1 )
2605 CALL chkxer( srnamt, infot, nout, lerr, ok )
2607 CALL dger( 2, 0, alpha, x, 1, y, 1, a, 1 )
2608 CALL chkxer( srnamt, infot, nout, lerr, ok )
2611 CALL dsyr(
'/', 0, alpha, x, 1, a, 1 )
2612 CALL chkxer( srnamt, infot, nout, lerr, ok )
2614 CALL dsyr(
'U', -1, alpha, x, 1, a, 1 )
2615 CALL chkxer( srnamt, infot, nout, lerr, ok )
2617 CALL dsyr(
'U', 0, alpha, x, 0, a, 1 )
2618 CALL chkxer( srnamt, infot, nout, lerr, ok )
2620 CALL dsyr(
'U', 2, alpha, x, 1, a, 1 )
2621 CALL chkxer( srnamt, infot, nout, lerr, ok )
2624 CALL dspr(
'/', 0, alpha, x, 1, a )
2625 CALL chkxer( srnamt, infot, nout, lerr, ok )
2627 CALL dspr(
'U', -1, alpha, x, 1, a )
2628 CALL chkxer( srnamt, infot, nout, lerr, ok )
2630 CALL dspr(
'U', 0, alpha, x, 0, a )
2631 CALL chkxer( srnamt, infot, nout, lerr, ok )
2634 CALL dsyr2(
'/', 0, alpha, x, 1, y, 1, a, 1 )
2635 CALL chkxer( srnamt, infot, nout, lerr, ok )
2637 CALL dsyr2(
'U', -1, alpha, x, 1, y, 1, a, 1 )
2638 CALL chkxer( srnamt, infot, nout, lerr, ok )
2640 CALL dsyr2(
'U', 0, alpha, x, 0, y, 1, a, 1 )
2641 CALL chkxer( srnamt, infot, nout, lerr, ok )
2643 CALL dsyr2(
'U', 0, alpha, x, 1, y, 0, a, 1 )
2644 CALL chkxer( srnamt, infot, nout, lerr, ok )
2646 CALL dsyr2(
'U', 2, alpha, x, 1, y, 1, a, 1 )
2647 CALL chkxer( srnamt, infot, nout, lerr, ok )
2650 CALL dspr2(
'/', 0, alpha, x, 1, y, 1, a )
2651 CALL chkxer( srnamt, infot, nout, lerr, ok )
2653 CALL dspr2(
'U', -1, alpha, x, 1, y, 1, a )
2654 CALL chkxer( srnamt, infot, nout, lerr, ok )
2656 CALL dspr2(
'U', 0, alpha, x, 0, y, 1, a )
2657 CALL chkxer( srnamt, infot, nout, lerr, ok )
2659 CALL dspr2(
'U', 0, alpha, x, 1, y, 0, a )
2660 CALL chkxer( srnamt, infot, nout, lerr, ok )
2663 WRITE( nout, fmt = 9999 )srnamt
2665 WRITE( nout, fmt = 9998 )srnamt
2669 9999
FORMAT(
' ', a6,
' PASSED THE TESTS OF ERROR-EXITS' )
2670 9998
FORMAT(
' ******* ', a6,
' FAILED THE TESTS OF ERROR-EXITS *****',
2676 SUBROUTINE dmake( TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL,
2677 $ KU, RESET, TRANSL )
2693 DOUBLE PRECISION ZERO, ONE
2694 parameter( zero = 0.0d0, one = 1.0d0 )
2695 DOUBLE PRECISION ROGUE
2696 PARAMETER ( ROGUE = -1.0d10 )
2698 DOUBLE PRECISION TRANSL
2699 INTEGER KL, KU, LDA, M, N, NMAX
2701 CHARACTER*1 DIAG, UPLO
2704 DOUBLE PRECISION A( NMAX, * ), AA( * )
2706 INTEGER I, I1, I2, I3, IBEG, IEND, IOFF, J, KK
2707 LOGICAL GEN, LOWER, SYM, TRI, UNIT, UPPER
2709 DOUBLE PRECISION DBEG
2714 gen =
TYPE( 1: 1 ).EQ.
'G'
2715 SYM = type( 1: 1 ).EQ.
'S'
2716 tri =
TYPE( 1: 1 ).EQ.
'T'
2717 upper = ( sym.OR.tri ).AND.uplo.EQ.
'U'
2718 lower = ( sym.OR.tri ).AND.uplo.EQ.
'L'
2719 unit = tri.AND.diag.EQ.
'U'
2725 IF( gen.OR.( upper.AND.i.LE.j ).OR.( lower.AND.i.GE.j ) )
2727 IF( ( i.LE.j.AND.j - i.LE.ku ).OR.
2728 $ ( i.GE.j.AND.i - j.LE.kl ) )
THEN
2729 a( i, j ) = dbeg( reset ) + transl
2735 a( j, i ) = a( i, j )
2743 $ a( j, j ) = a( j, j ) + one
2750 IF( type.EQ.
'GE' )
THEN
2753 aa( i + ( j - 1 )*lda ) = a( i, j )
2755 DO 40 i = m + 1, lda
2756 aa( i + ( j - 1 )*lda ) = rogue
2759 ELSE IF( type.EQ.
'GB' )
THEN
2761 DO 60 i1 = 1, ku + 1 - j
2762 aa( i1 + ( j - 1 )*lda ) = rogue
2764 DO 70 i2 = i1, min( kl + ku + 1, ku + 1 + m - j )
2765 aa( i2 + ( j - 1 )*lda ) = a( i2 + j - ku - 1, j )
2768 aa( i3 + ( j - 1 )*lda ) = rogue
2771 ELSE IF( type.EQ.
'SY'.OR.type.EQ.
'TR' )
THEN
2788 DO 100 i = 1, ibeg - 1
2789 aa( i + ( j - 1 )*lda ) = rogue
2791 DO 110 i = ibeg, iend
2792 aa( i + ( j - 1 )*lda ) = a( i, j )
2794 DO 120 i = iend + 1, lda
2795 aa( i + ( j - 1 )*lda ) = rogue
2798 ELSE IF( type.EQ.
'SB'.OR.type.EQ.
'TB' )
THEN
2802 ibeg = max( 1, kl + 2 - j )
2815 iend = min( kl + 1, 1 + m - j )
2817 DO 140 i = 1, ibeg - 1
2818 aa( i + ( j - 1 )*lda ) = rogue
2820 DO 150 i = ibeg, iend
2821 aa( i + ( j - 1 )*lda ) = a( i + j - kk, j )
2823 DO 160 i = iend + 1, lda
2824 aa( i + ( j - 1 )*lda ) = rogue
2827 ELSE IF( type.EQ.
'SP'.OR.type.EQ.
'TP' )
THEN
2837 DO 180 i = ibeg, iend
2839 aa( ioff ) = a( i, j )
2842 $ aa( ioff ) = rogue
2852 SUBROUTINE dmvch( TRANS, M, N, ALPHA, A, NMAX, X, INCX, BETA, Y,
2853 $ INCY, YT, G, YY, EPS, ERR, FATAL, NOUT, MV )
2864 DOUBLE PRECISION ZERO, ONE
2865 parameter( zero = 0.0d0, one = 1.0d0 )
2867 DOUBLE PRECISION ALPHA, BETA, EPS, ERR
2868 INTEGER INCX, INCY, M, N, NMAX, NOUT
2872 DOUBLE PRECISION A( NMAX, * ), G( * ), X( * ), Y( * ), YT( * ),
2875 DOUBLE PRECISION ERRI
2876 INTEGER I, INCXL, INCYL, IY, J, JX, KX, KY, ML, NL
2879 INTRINSIC ABS, MAX, SQRT
2881 TRAN = trans.EQ.
'T'.OR.trans.EQ.
'C'
2914 yt( iy ) = yt( iy ) + a( j, i )*x( jx )
2915 g( iy ) = g( iy ) + abs( a( j, i )*x( jx ) )
2920 yt( iy ) = yt( iy ) + a( i, j )*x( jx )
2921 g( iy ) = g( iy ) + abs( a( i, j )*x( jx ) )
2925 yt( iy ) = alpha*yt( iy ) + beta*y( iy )
2926 g( iy ) = abs( alpha )*g( iy ) + abs( beta*y( iy ) )
2934 erri = abs( yt( i ) - yy( 1 + ( i - 1 )*abs( incy ) ) )/eps
2935 IF( g( i ).NE.zero )
2936 $ erri = erri/g( i )
2937 err = max( err, erri )
2938 IF( err*sqrt( eps ).GE.one )
2947 WRITE( nout, fmt = 9999 )
2950 WRITE( nout, fmt = 9998 )i, yt( i ),
2951 $ yy( 1 + ( i - 1 )*abs( incy ) )
2953 WRITE( nout, fmt = 9998 )i,
2954 $ yy( 1 + ( i - 1 )*abs( incy ) ), yt( i )
2961 9999
FORMAT(
' ******* FATAL ERROR - COMPUTED RESULT IS LESS THAN HAL',
2962 $
'F ACCURATE *******', /
' EXPECTED RESULT COMPU',
2964 9998
FORMAT( 1x, i7, 2g18.6 )
2969 LOGICAL FUNCTION lde( RI, RJ, LR )
2982 DOUBLE PRECISION ri( * ), rj( * )
2987 IF( ri( i ).NE.rj( i ) )
2999 LOGICAL FUNCTION lderes( TYPE, UPLO, M, N, AA, AS, LDA )
3016 DOUBLE PRECISION aa( lda, * ), as( lda, * )
3018 INTEGER i, ibeg, iend, j
3022 IF( type.EQ.
'GE' )
THEN
3024 DO 10 i = m + 1, lda
3025 IF( aa( i, j ).NE.as( i, j ) )
3029 ELSE IF( type.EQ.
'SY' )
THEN
3038 DO 30 i = 1, ibeg - 1
3039 IF( aa( i, j ).NE.as( i, j ) )
3042 DO 40 i = iend + 1, lda
3043 IF( aa( i, j ).NE.as( i, j ) )
3058 DOUBLE PRECISION FUNCTION dbeg( RESET )
3093 i = i - 1000*( i/1000 )
3098 dbeg = dble( i - 500 )/1001.0d0
3112 DOUBLE PRECISION x, y
3120 SUBROUTINE chkxer( SRNAMT, INFOT, NOUT, LERR, OK )
3136 WRITE( nout, fmt = 9999 )infot, srnamt
3142 9999
FORMAT(
' ***** ILLEGAL VALUE OF PARAMETER NUMBER ', i2,
' NOT D',
3143 $
'ETECTED BY ', a6,
' *****' )
3148 SUBROUTINE dregr1( TRANS, M, N, LY, KL, KU, ALPHA, A, LDA, X,
3149 $ INCX, BETA, Y, INCY, YS )
3155 INTEGER LY, M, N, KL, KU, LDA, INCX, INCY
3156 DOUBLE PRECISION ALPHA, BETA
3158 DOUBLE PRECISION A(LDA,*), X(*), Y(*), YS(*)
3176 y( i ) = 42.0d0 + dble( i )
3206 COMMON /INFOC/INFOT, NOUT, OK, LERR
3207 COMMON /SRNAMC/SRNAMT
3210 IF( info.NE.infot )
THEN
3211 IF( infot.NE.0 )
THEN
3212 WRITE( nout, fmt = 9999 )info, infot
3214 WRITE( nout, fmt = 9997 )info
3218 IF( srname.NE.srnamt )
THEN
3219 WRITE( nout, fmt = 9998 )srname, srnamt
3224 9999
FORMAT(
' ******* XERBLA WAS CALLED WITH INFO = ', i6,
' INSTEAD',
3225 $
' OF ', i2,
' *******' )
3226 9998
FORMAT(
' ******* XERBLA WAS CALLED WITH SRNAME = ', a6,
' INSTE',
3227 $
'AD OF ', a6,
' *******' )
3228 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)
subroutine dmvch(trans, m, n, alpha, a, nmax, x, incx, beta, y, incy, yt, g, yy, eps, err, fatal, nout, mv)
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 dchk6(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)
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 dregr1(trans, m, n, ly, kl, ku, alpha, a, lda, x, incx, beta, y, incy, ys)
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 dgbmv(trans, m, n, kl, ku, alpha, a, lda, x, incx, beta, y, incy)
DGBMV
subroutine dgemv(trans, m, n, alpha, a, lda, x, incx, beta, y, incy)
DGEMV
subroutine dger(m, n, alpha, x, incx, y, incy, a, lda)
DGER
subroutine dsbmv(uplo, n, k, alpha, a, lda, x, incx, beta, y, incy)
DSBMV
subroutine dsymv(uplo, n, alpha, a, lda, x, incx, beta, y, incy)
DSYMV
subroutine dsyr(uplo, n, alpha, x, incx, a, lda)
DSYR
subroutine dspmv(uplo, n, alpha, ap, x, incx, beta, y, incy)
DSPMV
subroutine dspr(uplo, n, alpha, x, incx, ap)
DSPR
subroutine dtbmv(uplo, trans, diag, n, k, a, lda, x, incx)
DTBMV
subroutine dtbsv(uplo, trans, diag, n, k, a, lda, x, incx)
DTBSV
subroutine dtpmv(uplo, trans, diag, n, ap, x, incx)
DTPMV
subroutine dtpsv(uplo, trans, diag, n, ap, x, incx)
DTPSV
subroutine dtrmv(uplo, trans, diag, n, a, lda, x, incx)
DTRMV
subroutine dtrsv(uplo, trans, diag, n, a, lda, x, incx)
DTRSV