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, ,
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( *incmax ), yt( nmax ),
136 $ yy( nmax*incmax ), z( 2*nmax )
137 INTEGER idim( nidmax ), inc( ninmax ), kb( nkbmax )
139 CHARACTER*6 snames( nsubs )
141 DOUBLE PRECISION ddiff
154 COMMON /infoc/infot, noutc, ok, lerr
155 COMMON /srnamc/srnamt
157 DATA snames/
'DGEMV ',
'DGBMV ', '
dsymv ', 'dsbmv ',
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.AND.
REWI = REWITRACE
182 READ( NIN, FMT = * )SFATAL
184 READ( NIN, FMT = * )TSTERR
186 READ( NIN, FMT = * )THRESH
191 READ( NIN, FMT = * )NIDIM
192.LT..OR..GT.
IF( NIDIM1NIDIMNIDMAX )THEN
193 WRITE( NOUT, FMT = 9997 )'n
', NIDMAX
196 READ( NIN, FMT = * )( IDIM( I ), I = 1, NIDIM )
198.LT..OR..GT.
IF( IDIM( I )0IDIM( I )NMAX )THEN
199 WRITE( NOUT, FMT = 9996 )NMAX
204 READ( NIN, FMT = * )NKB
205.LT..OR..GT.
IF( NKB1NKBNKBMAX )THEN
206 WRITE( NOUT, FMT = 9997 )'k
', NKBMAX
209 READ( NIN, FMT = * )( KB( I ), I = 1, NKB )
211.LT.
IF( KB( I )0 )THEN
212 WRITE( NOUT, FMT = 9995 )
217 READ( NIN, FMT = * )NINC
218.LT..OR..GT.
IF( NINC1NINCNINMAX )THEN
219 WRITE( NOUT, FMT = 9997 )'incx and incy
', NINMAX
222 READ( NIN, FMT = * )( INC( I ), I = 1, NINC )
224.EQ..OR..GT.
IF( INC( I )0ABS( INC( I ) )INCMAX )THEN
225 WRITE( NOUT, FMT = 9994 )INCMAX
230 READ( NIN, FMT = * )NALF
231.LT..OR..GT.
IF( NALF1NALFNALMAX )THEN
232 WRITE( NOUT, FMT = 9997 )'alpha', NALMAX
235 READ( NIN, FMT = * )( ALF( I ), I = 1, NALF )
237 READ( NIN, FMT = * )NBET
238.LT..OR..GT.
IF( NBET1NBETNBEMAX )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.NOT.
IF( 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.EQ.
IF( SNAMETSNAMES( 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.NOT..OR..NE.
IF( SAMEERRZERO )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.NOT..OR..NE.
IF( SAMEERRZERO )THEN
312 WRITE( NOUT, FMT = 9985 )TRANS, SAME, ERR
318 DO 210 ISNUM = 1, NSUBS
319 WRITE( NOUT, FMT = * )
320.NOT.
IF( 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.AND.
200 IF( FATALSFATAL )
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
472 EXTERNAL DGBMV, DGEMV, DMAKE, DMVCH
474 INTRINSIC ABS, MAX, MIN
479 COMMON /INFOC/INFOT, NOUTC, OK, LERR
483.EQ.
FULL = SNAME( 3: 3 )'E
'
484.EQ.
BANDED = SNAME( 3: 3 )'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.LE..OR..LE.
NULL = N0M0
536 CALL DMAKE( SNAME( 2: 3 ), ' ', ' ', M, N, A, NMAX, AA,
537 $ LDA, KL, KU, RESET, TRANSL )
540 TRANS = ICH( IC: IC )
541.EQ.
TRAN = TRANS'T.OR..EQ.
'TRANS'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.EQ.
ISAME( 1 ) = TRANSTRANSS
645.EQ.
ISAME( 4 ) = ALSALPHA
646 ISAME( 5 ) = LDE( AS, AA, LAA )
647.EQ.
ISAME( 6 ) = LDASLDA
648 ISAME( 7 ) = LDE( XS, XX, LX )
649.EQ.
ISAME( 8 ) = INCXSINCX
650.EQ.
ISAME( 9 ) = BLSBETA
652 ISAME( 10 ) = LDE( YS, YY, LY )
654 ISAME( 10 ) = LDERES( 'GE
', ' ', 1,
658.EQ.
ISAME( 11 ) = INCYSINCY
659 ELSE IF( BANDED )THEN
660.EQ.
ISAME( 4 ) = KLSKL
661.EQ.
ISAME( 5 ) = KUSKU
662.EQ.
ISAME( 6 ) = ALSALPHA
663 ISAME( 7 ) = LDE( AS, AA, LAA )
664.EQ.
ISAME( 8 ) = LDASLDA
665 ISAME( 9 ) = LDE( XS, XX, LX )
666.EQ.
ISAME( 10 ) = INCXSINCX
667.EQ.
ISAME( 11 ) = BLSBETA
669 ISAME( 12 ) = LDE( YS, YY, LY )
671 ISAME( 12 ) = LDERES( 'GE
', ' ', 1,
675.EQ.
ISAME( 13 ) = INCYSINCY
683.AND.
SAME = SAMEISAME( I )
684.NOT.
IF( 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.LT.
IF( ERRMAXTHRESH )THEN
730 WRITE( NOUT, FMT = 9999 )SNAME, NC
732 WRITE( NOUT, FMT = 9997 )SNAME, NC, ERRMAX
737 WRITE( NOUT, FMT = 9996 )SNAME
739 WRITE( NOUT, FMT = 9994 )NC, SNAME, TRANS, M, N, ALPHA, LDA,
741 ELSE IF( BANDED )THEN
742 WRITE( NOUT, FMT = 9995 )NC, SNAME, TRANS, M, N, KL, KU,
743 $ ALPHA, LDA, INCX, BETA, INCY
749 9999 FORMAT( ' ', A6, ' PASSED THE COMPUTATIONAL TESTS (
', I6, ' CALL
',
751 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER
', I2, ' WAS CH
',
752 $ 'ANGED INCORRECTLY *******
' )
753 9997 FORMAT( ' ', A6, ' COMPLETED THE COMPUTATIONAL TESTS (
', I6, ' C
',
754 $ 'ALLS)
', /' ******* BUT WITH MAXIMUM TEST RATIO
', F8.2,
755 $ ' - SUSPECT *******
' )
756 9996 FORMAT( ' *******
', A6, ' FAILED ON CALL NUMBER:
' )
757 9995 FORMAT( 1X, I6, ':
', A6, '(
''', A1, ''',
', 4( I3, ',
' ), F4.1,
758 $ ', A,
', I3, ', X,
', I2, ',
', F4.1, ', Y,
', I2, ') .
' )
759 9994 FORMAT( 1X, I6, ':
', A6, '(
''', A1, ''',
', 2( I3, ',
' ), F4.1,
760 $ ', A,
', I3, ', X,
', I2, ',
', F4.1, ', Y,
', I2,
762 9993 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *
',
768 SUBROUTINE DCHK2( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
769 $ FATAL, NIDIM, IDIM, NKB, KB, NALF, ALF, NBET,
770 $ BET, NINC, INC, NMAX, INCMAX, A, AA, AS, X, XX,
771 $ XS, Y, YY, YS, YT, G )
782 DOUBLE PRECISION ZERO, HALF
783 PARAMETER ( ZERO = 0.0D0, HALF = 0.5D0 )
785 DOUBLE PRECISION EPS, THRESH
786 INTEGER INCMAX, NALF, NBET, NIDIM, NINC, NKB, NMAX,
788 LOGICAL FATAL, REWI, TRACE
791 DOUBLE PRECISION A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
792 $ AS( NMAX*NMAX ), BET( NBET ), G( NMAX ),
793 $ X( NMAX ), XS( NMAX*INCMAX ),
794 $ XX( NMAX*INCMAX ), Y( NMAX ),
795 $ YS( NMAX*INCMAX ), YT( NMAX ),
797 INTEGER IDIM( NIDIM ), INC( NINC ), KB( NKB )
799 DOUBLE PRECISION ALPHA, ALS, BETA, BLS, ERR, ERRMAX, TRANSL
800 INTEGER I, IA, IB, IC, IK, IN, INCX, INCXS, INCY,
801 $ INCYS, IX, IY, K, KS, LAA, LDA, LDAS, LX, LY,
802 $ N, NARGS, NC, NK, NS
803 LOGICAL BANDED, FULL, NULL, PACKED, RESET, SAME
804 CHARACTER*1 UPLO, UPLOS
812 EXTERNAL DMAKE, DMVCH, DSBMV, DSPMV, DSYMV
819 COMMON /INFOC/INFOT, NOUTC, OK, LERR
823.EQ.
FULL = SNAME( 3: 3 )'Y
'
824.EQ.
BANDED = SNAME( 3: 3 )'B
'
825.EQ.
PACKED = SNAME( 3: 3 )'P
'
829 ELSE IF( BANDED )THEN
831 ELSE IF( PACKED )THEN
865 LAA = ( N*( N + 1 ) )/2
877 CALL DMAKE( SNAME( 2: 3 ), UPLO, ' ', N, N, A, NMAX, AA,
878 $ LDA, K, K, RESET, TRANSL )
887 CALL DMAKE( 'GE
', ' ', ' ', 1, N, X, 1, XX,
888 $ ABS( INCX ), 0, N - 1, RESET, TRANSL )
891 XX( 1 + ABS( INCX )*( N/2 - 1 ) ) = ZERO
907 CALL DMAKE( 'GE
', ' ', ' ', 1, N, Y, 1, YY,
908 $ ABS( INCY ), 0, N - 1, RESET,
938 $ WRITE( NTRA, FMT = 9993 )NC, SNAME,
939 $ UPLO, N, ALPHA, LDA, INCX, BETA, INCY
942 CALL DSYMV( UPLO, N, ALPHA, AA, LDA, XX,
943 $ INCX, BETA, YY, INCY )
944 ELSE IF( BANDED )THEN
946 $ WRITE( NTRA, FMT = 9994 )NC, SNAME,
947 $ UPLO, N, K, ALPHA, LDA, INCX, BETA,
951 CALL DSBMV( UPLO, N, K, ALPHA, AA, LDA,
952 $ XX, INCX, BETA, YY, INCY )
953 ELSE IF( PACKED )THEN
955 $ WRITE( NTRA, FMT = 9995 )NC, SNAME,
956 $ UPLO, N, ALPHA, INCX, BETA, INCY
959 CALL DSPMV( UPLO, N, ALPHA, AA, XX, INCX,
966 WRITE( NOUT, FMT = 9992 )
973.EQ.
ISAME( 1 ) = UPLOUPLOS
976.EQ.
ISAME( 3 ) = ALSALPHA
977 ISAME( 4 ) = LDE( AS, AA, LAA )
978.EQ.
ISAME( 5 ) = LDASLDA
979 ISAME( 6 ) = LDE( XS, XX, LX )
980.EQ.
ISAME( 7 ) = INCXSINCX
981.EQ.
ISAME( 8 ) = BLSBETA
983 ISAME( 9 ) = LDE( YS, YY, LY )
985 ISAME( 9 ) = LDERES( 'GE
', ' ', 1, N,
986 $ YS, YY, ABS( INCY ) )
988.EQ.
ISAME( 10 ) = INCYSINCY
989 ELSE IF( BANDED )THEN
991.EQ.
ISAME( 4 ) = ALSALPHA
992 ISAME( 5 ) = LDE( AS, AA, LAA )
993.EQ.
ISAME( 6 ) = LDASLDA
994 ISAME( 7 ) = LDE( XS, XX, LX )
995.EQ.
ISAME( 8 ) = INCXSINCX
996.EQ.
ISAME( 9 ) = BLSBETA
998 ISAME( 10 ) = LDE( YS, YY, LY )
1000 ISAME( 10 ) = LDERES( 'GE
', ' ', 1, N,
1001 $ YS, YY, ABS( INCY ) )
1003.EQ.
ISAME( 11 ) = INCYSINCY
1004 ELSE IF( PACKED )THEN
1005.EQ.
ISAME( 3 ) = ALSALPHA
1006 ISAME( 4 ) = LDE( AS, AA, LAA )
1007 ISAME( 5 ) = LDE( XS, XX, LX )
1008.EQ.
ISAME( 6 ) = INCXSINCX
1009.EQ.
ISAME( 7 ) = BLSBETA
1011 ISAME( 8 ) = LDE( YS, YY, LY )
1013 ISAME( 8 ) = LDERES( 'GE
', ' ', 1, N,
1014 $ YS, YY, ABS( INCY ) )
1016.EQ.
ISAME( 9 ) = INCYSINCY
1024.AND.
SAME = SAMEISAME( I )
1025.NOT.
IF( ISAME( I ) )
1026 $ WRITE( NOUT, FMT = 9998 )I
1037 CALL DMVCH( 'N
', N, N, ALPHA, A, NMAX, X,
1038 $ INCX, BETA, Y, INCY, YT, G,
1039 $ YY, EPS, ERR, FATAL, NOUT,
1041 ERRMAX = MAX( ERRMAX, ERR )
1067.LT.
IF( ERRMAXTHRESH )THEN
1068 WRITE( NOUT, FMT = 9999 )SNAME, NC
1070 WRITE( NOUT, FMT = 9997 )SNAME, NC, ERRMAX
1075 WRITE( NOUT, FMT = 9996 )SNAME
1077 WRITE( NOUT, FMT = 9993 )NC, SNAME, UPLO, N, ALPHA, LDA, INCX,
1079 ELSE IF( BANDED )THEN
1080 WRITE( NOUT, FMT = 9994 )NC, SNAME, UPLO, N, K, ALPHA, LDA,
1082 ELSE IF( PACKED )THEN
1083 WRITE( NOUT, FMT = 9995 )NC, SNAME, UPLO, N, ALPHA, INCX,
1090 9999 FORMAT( ' ', A6, ' PASSED THE COMPUTATIONAL TESTS (
', I6, ' CALL
',
1092 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER
', I2, ' WAS CH
',
1093 $ 'ANGED INCORRECTLY *******
' )
1094 9997 FORMAT( ' ', A6, ' COMPLETED THE COMPUTATIONAL TESTS (
', I6, ' C
',
1095 $ 'ALLS)
', /' ******* BUT WITH MAXIMUM TEST RATIO
', F8.2,
1096 $ ' - SUSPECT *******
' )
1097 9996 FORMAT( ' *******
', A6, ' FAILED ON CALL NUMBER:
' )
1098 9995 FORMAT( 1X, I6, ':
', A6, '(
''', A1, ''',
', I3, ',
', F4.1, ', AP
',
1099 $ ', X,
', I2, ',
', F4.1, ', Y,
', I2, ') .
' )
1100 9994 FORMAT( 1X, I6, ':
', A6, '(
''', A1, ''',
', 2( I3, ',
' ), F4.1,
1101 $ ', A,
', I3, ', X,
', I2, ',
', F4.1, ', Y,
', I2,
1103 9993 FORMAT( 1X, I6, ':
', A6, '(
''', A1, ''',
', I3, ',
', F4.1, ', A,
',
1104 $ I3, ', X,
', I2, ',
', F4.1, ', Y,
', I2, ') .
' )
1105 9992 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *
',
1111 SUBROUTINE DCHK3( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
1112 $ FATAL, NIDIM, IDIM, NKB, KB, NINC, INC, NMAX,
1113 $ INCMAX, A, AA, AS, X, XX, XS, XT, G, Z )
1124 DOUBLE PRECISION ZERO, HALF, ONE
1125 PARAMETER ( ZERO = 0.0D0, HALF = 0.5D0, ONE = 1.0D0 )
1127 DOUBLE PRECISION EPS, THRESH
1128 INTEGER INCMAX, NIDIM, NINC, NKB, NMAX, NOUT, NTRA
1129 LOGICAL FATAL, REWI, TRACE
1132 DOUBLE PRECISION A( NMAX, NMAX ), AA( NMAX*NMAX ),
1133 $ AS( NMAX*NMAX ), G( NMAX ), X( NMAX ),
1134 $ XS( NMAX*INCMAX ), XT( NMAX ),
1135 $ XX( NMAX*INCMAX ), Z( NMAX )
1136 INTEGER IDIM( NIDIM ), INC( NINC ), KB( NKB )
1138 DOUBLE PRECISION ERR, ERRMAX, TRANSL
1139 INTEGER I, ICD, ICT, ICU, IK, IN, INCX, INCXS, IX, K,
1140 $ KS, LAA, LDA, LDAS, LX, N, NARGS, NC, NK, NS
1141 LOGICAL BANDED, FULL, NULL, PACKED, RESET, SAME
1142 CHARACTER*1 DIAG, DIAGS, TRANS, TRANSS, UPLO, UPLOS
1143 CHARACTER*2 ICHD, ICHU
1149 EXTERNAL LDE, LDERES
1151 EXTERNAL DMAKE, DMVCH, DTBMV, DTBSV, DTPMV, DTPSV,
1156 INTEGER INFOT, NOUTC
1159 COMMON /INFOC/INFOT, NOUTC, OK, LERR
1161 DATA ICHU/'UL
'/, ICHT/'NTC
'/, ICHD/'UN
'/
1163.EQ.
FULL = SNAME( 3: 3 )'R
'
1164.EQ.
BANDED = SNAME( 3: 3 )'B
'
1165.EQ.
PACKED = SNAME( 3: 3 )'P
'
1169 ELSE IF( BANDED )THEN
1171 ELSE IF( PACKED )THEN
1183 DO 110 IN = 1, NIDIM
1209 LAA = ( N*( N + 1 ) )/2
1216 UPLO = ICHU( ICU: ICU )
1219 TRANS = ICHT( ICT: ICT )
1222 DIAG = ICHD( ICD: ICD )
1227 CALL DMAKE( SNAME( 2: 3 ), UPLO, DIAG, N, N, A,
1228 $ NMAX, AA, LDA, K, K, RESET, TRANSL )
1237 CALL DMAKE( 'GE
', ' ', ' ', 1, N, X, 1, XX,
1238 $ ABS( INCX ), 0, N - 1, RESET,
1242 XX( 1 + ABS( INCX )*( N/2 - 1 ) ) = ZERO
1265.EQ.
IF( SNAME( 4: 5 )'MV
' )THEN
1268 $ WRITE( NTRA, FMT = 9993 )NC, SNAME,
1269 $ UPLO, TRANS, DIAG, N, LDA, INCX
1272 CALL DTRMV( UPLO, TRANS, DIAG, N, AA, LDA,
1274 ELSE IF( BANDED )THEN
1276 $ WRITE( NTRA, FMT = 9994 )NC, SNAME,
1277 $ UPLO, TRANS, DIAG, N, K, LDA, INCX
1280 CALL DTBMV( UPLO, TRANS, DIAG, N, K, AA,
1282 ELSE IF( PACKED )THEN
1284 $ WRITE( NTRA, FMT = 9995 )NC, SNAME,
1285 $ UPLO, TRANS, DIAG, N, INCX
1288 CALL DTPMV( UPLO, TRANS, DIAG, N, AA, XX,
1291.EQ.
ELSE IF( SNAME( 4: 5 )'SV
' )THEN
1294 $ WRITE( NTRA, FMT = 9993 )NC, SNAME,
1295 $ UPLO, TRANS, DIAG, N, LDA, INCX
1298 CALL DTRSV( UPLO, TRANS, DIAG, N, AA, LDA,
1300 ELSE IF( BANDED )THEN
1302 $ WRITE( NTRA, FMT = 9994 )NC, SNAME,
1303 $ UPLO, TRANS, DIAG, N, K, LDA, INCX
1306 CALL DTBSV( UPLO, TRANS, DIAG, N, K, AA,
1308 ELSE IF( PACKED )THEN
1310 $ WRITE( NTRA, FMT = 9995 )NC, SNAME,
1311 $ UPLO, TRANS, DIAG, N, INCX
1314 CALL DTPSV( UPLO, TRANS, DIAG, N, AA, XX,
1322 WRITE( NOUT, FMT = 9992 )
1329.EQ.
ISAME( 1 ) = UPLOUPLOS
1330.EQ.
ISAME( 2 ) = TRANSTRANSS
1331.EQ.
ISAME( 3 ) = DIAGDIAGS
1332.EQ.
ISAME( 4 ) = NSN
1334 ISAME( 5 ) = LDE( AS, AA, LAA )
1335.EQ.
ISAME( 6 ) = LDASLDA
1337 ISAME( 7 ) = LDE( XS, XX, LX )
1339 ISAME( 7 ) = LDERES( 'GE
', ' ', 1, N, XS,
1342.EQ.
ISAME( 8 ) = INCXSINCX
1343 ELSE IF( BANDED )THEN
1344.EQ.
ISAME( 5 ) = KSK
1345 ISAME( 6 ) = LDE( AS, AA, LAA )
1346.EQ.
ISAME( 7 ) = LDASLDA
1348 ISAME( 8 ) = LDE( XS, XX, LX )
1350 ISAME( 8 ) = LDERES( 'GE
', ' ', 1, N, XS,
1353.EQ.
ISAME( 9 ) = INCXSINCX
1354 ELSE IF( PACKED )THEN
1355 ISAME( 5 ) = LDE( AS, AA, LAA )
1357 ISAME( 6 ) = LDE( XS, XX, LX )
1359 ISAME( 6 ) = LDERES( 'GE
', ' ', 1, N, XS,
1362.EQ.
ISAME( 7 ) = INCXSINCX
1370.AND.
SAME = SAMEISAME( I )
1371.NOT.
IF( ISAME( I ) )
1372 $ WRITE( NOUT, FMT = 9998 )I
1380.EQ.
IF( SNAME( 4: 5 )'MV
' )THEN
1384 CALL DMVCH( TRANS, N, N, ONE, A, NMAX, X,
1385 $ INCX, ZERO, Z, INCX, XT, G,
1386 $ XX, EPS, ERR, FATAL, NOUT,
1388.EQ.
ELSE IF( SNAME( 4: 5 )'SV
' )THEN
1393 Z( I ) = XX( 1 + ( I - 1 )*
1395 XX( 1 + ( I - 1 )*ABS( INCX ) )
1398 CALL DMVCH( TRANS, N, N, ONE, A, NMAX, Z,
1399 $ INCX, ZERO, X, INCX, XT, G,
1400 $ XX, EPS, ERR, FATAL, NOUT,
1403 ERRMAX = MAX( ERRMAX, ERR )
1426.LT.
IF( ERRMAXTHRESH )THEN
1427 WRITE( NOUT, FMT = 9999 )SNAME, NC
1429 WRITE( NOUT, FMT = 9997 )SNAME, NC, ERRMAX
1434 WRITE( NOUT, FMT = 9996 )SNAME
1436 WRITE( NOUT, FMT = 9993 )NC, SNAME, UPLO, TRANS, DIAG, N, LDA,
1438 ELSE IF( BANDED )THEN
1439 WRITE( NOUT, FMT = 9994 )NC, SNAME, UPLO, TRANS, DIAG, N, K,
1441 ELSE IF( PACKED )THEN
1442 WRITE( NOUT, FMT = 9995 )NC, SNAME, UPLO, TRANS, DIAG, N, INCX
1448 9999 FORMAT( ' ', A6, ' PASSED THE COMPUTATIONAL TESTS (
', I6, ' CALL
',
1450 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER
', I2, ' WAS CH
',
1451 $ 'ANGED INCORRECTLY *******
' )
1452 9997 FORMAT( ' ', A6, ' COMPLETED THE COMPUTATIONAL TESTS (
', I6, ' C
',
1453 $ 'ALLS)
', /' ******* BUT WITH MAXIMUM TEST RATIO
', F8.2,
1454 $ ' - SUSPECT *******
' )
1455 9996 FORMAT( ' *******
', A6, ' FAILED ON CALL NUMBER:
' )
1456 9995 FORMAT( 1X, I6, ':
', A6, '(
', 3( '''', A1, ''',
' ), I3, ', AP,
',
1458 9994 FORMAT( 1X, I6, ':
', A6, '(
', 3( '''', A1, ''',
' ), 2( I3, ',
' ),
1459 $ ' A,
', I3, ', X,
', I2, ') .
' )
1460 9993 FORMAT( 1X, I6, ':
', A6, '(
', 3( '''', A1, ''',
' ), I3, ', A,
',
1461 $ I3, ', X,
', I2, ') .
' )
1462 9992 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *
',
1468 SUBROUTINE DCHK4( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
1469 $ FATAL, NIDIM, IDIM, NALF, ALF, NINC, INC, NMAX,
1470 $ INCMAX, A, AA, AS, X, XX, XS, Y, YY, YS, YT, G,
1482 DOUBLE PRECISION ZERO, HALF, ONE
1483 PARAMETER ( ZERO = 0.0D0, HALF = 0.5D0, ONE = 1.0D0 )
1485 DOUBLE PRECISION EPS, THRESH
1486 INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA
1487 LOGICAL FATAL, REWI, TRACE
1490 DOUBLE PRECISION A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
1491 $ AS( NMAX*NMAX ), G( NMAX ), X( NMAX ),
1492 $ XS( NMAX*INCMAX ), XX( NMAX*INCMAX ),
1493 $ Y( NMAX ), YS( NMAX*INCMAX ), YT( NMAX ),
1494 $ YY( NMAX*INCMAX ), Z( NMAX )
1495 INTEGER IDIM( NIDIM ), INC( NINC )
1497 DOUBLE PRECISION ALPHA, ALS, ERR, ERRMAX, TRANSL
1498 INTEGER I, IA, IM, IN, INCX, INCXS, INCY, INCYS, IX,
1499 $ IY, J, LAA, LDA, LDAS, LX, LY, M, MS, N, NARGS,
1501 LOGICAL NULL, RESET, SAME
1503 DOUBLE PRECISION W( 1 )
1507 EXTERNAL LDE, LDERES
1509 EXTERNAL DGER, DMAKE, DMVCH
1511 INTRINSIC ABS, MAX, MIN
1513 INTEGER INFOT, NOUTC
1516 COMMON /INFOC/INFOT, NOUTC, OK, LERR
1525 DO 120 IN = 1, NIDIM
1531 $ M = MAX( N - ND, 0 )
1533 $ M = MIN( N + ND, NMAX )
1543.LE..OR..LE.
NULL = N0M0
1552 CALL DMAKE( 'GE
', ' ', ' ', 1, M, X, 1, XX, ABS( INCX ),
1553 $ 0, M - 1, RESET, TRANSL )
1556 XX( 1 + ABS( INCX )*( M/2 - 1 ) ) = ZERO
1566 CALL DMAKE( 'GE
', ' ', ' ', 1, N, Y, 1, YY,
1567 $ ABS( INCY ), 0, N - 1, RESET, TRANSL )
1570 YY( 1 + ABS( INCY )*( N/2 - 1 ) ) = ZERO
1579 CALL DMAKE( SNAME( 2: 3 ), ' ', ' ', M, N, A, NMAX,
1580 $ AA, LDA, M - 1, N - 1, RESET, TRANSL )
1605 $ WRITE( NTRA, FMT = 9994 )NC, SNAME, M, N,
1606 $ ALPHA, INCX, INCY, LDA
1609 CALL DGER( M, N, ALPHA, XX, INCX, YY, INCY, AA,
1615 WRITE( NOUT, FMT = 9993 )
1622.EQ.
ISAME( 1 ) = MSM
1623.EQ.
ISAME( 2 ) = NSN
1624.EQ.
ISAME( 3 ) = ALSALPHA
1625 ISAME( 4 ) = LDE( XS, XX, LX )
1626.EQ.
ISAME( 5 ) = INCXSINCX
1627 ISAME( 6 ) = LDE( YS, YY, LY )
1628.EQ.
ISAME( 7 ) = INCYSINCY
1630 ISAME( 8 ) = LDE( AS, AA, LAA )
1632 ISAME( 8 ) = LDERES( 'GE
', ' ', M, N, AS, AA,
1635.EQ.
ISAME( 9 ) = LDASLDA
1641.AND.
SAME = SAMEISAME( I )
1642.NOT.
IF( ISAME( I ) )
1643 $ WRITE( NOUT, FMT = 9998 )I
1660 Z( I ) = X( M - I + 1 )
1667 W( 1 ) = Y( N - J + 1 )
1669 CALL DMVCH( 'N
', M, 1, ALPHA, Z, NMAX, W, 1,
1670 $ ONE, A( 1, J ), 1, YT, G,
1671 $ AA( 1 + ( J - 1 )*LDA ), EPS,
1672 $ ERR, FATAL, NOUT, .TRUE. )
1673 ERRMAX = MAX( ERRMAX, ERR )
1695.LT.
IF( ERRMAXTHRESH )THEN
1696 WRITE( NOUT, FMT = 9999 )SNAME, NC
1698 WRITE( NOUT, FMT = 9997 )SNAME, NC, ERRMAX
1703 WRITE( NOUT, FMT = 9995 )J
1706 WRITE( NOUT, FMT = 9996 )SNAME
1707 WRITE( NOUT, FMT = 9994 )NC, SNAME, M, N, ALPHA, INCX, INCY, LDA
1712 9999 FORMAT( ' ', A6, ' PASSED THE COMPUTATIONAL TESTS (
', I6, ' CALL
',
1714 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER
', I2, ' WAS CH
',
1715 $ 'ANGED INCORRECTLY *******
' )
1716 9997 FORMAT( ' ', A6, ' COMPLETED THE COMPUTATIONAL TESTS (
', I6, ' C
',
1717 $ 'ALLS)
', /' ******* BUT WITH MAXIMUM TEST RATIO
', F8.2,
1718 $ ' - SUSPECT *******
' )
1719 9996 FORMAT( ' *******
', A6, ' FAILED ON CALL NUMBER:
' )
1720 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN
', I3 )
1721 9994 FORMAT( 1X, I6, ':
', A6, '(
', 2( I3, ',
' ), F4.1, ', X,
', I2,
1722 $ ', Y,
', I2, ', A,
', I3, ') .
' )
1723 9993 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *
',
1729 SUBROUTINE DCHK5( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
1730 $ FATAL, NIDIM, IDIM, NALF, ALF, NINC, INC, NMAX,
1731 $ INCMAX, A, AA, AS, X, XX, XS, Y, YY, YS, YT, G,
1743 DOUBLE PRECISION ZERO, HALF, ONE
1744 PARAMETER ( ZERO = 0.0D0, HALF = 0.5D0, ONE = 1.0D0 )
1746 DOUBLE PRECISION EPS, THRESH
1747 INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA
1748 LOGICAL FATAL, REWI, TRACE
1751 DOUBLE PRECISION A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
1752 $ AS( NMAX*NMAX ), G( NMAX ), X( NMAX ),
1753 $ XS( NMAX*INCMAX ), XX( NMAX*INCMAX ),
1754 $ Y( NMAX ), YS( NMAX*INCMAX ), YT( NMAX ),
1755 $ YY( NMAX*INCMAX ), Z( NMAX )
1756 INTEGER IDIM( NIDIM ), INC( NINC )
1758 DOUBLE PRECISION ALPHA, ALS, ERR, ERRMAX, TRANSL
1759 INTEGER I, IA, IC, IN, INCX, INCXS, IX, J, JA, JJ, LAA,
1760 $ LDA, LDAS, LJ, LX, N, NARGS, NC, NS
1761 LOGICAL FULL, NULL, PACKED, RESET, SAME, UPPER
1762 CHARACTER*1 UPLO, UPLOS
1765 DOUBLE PRECISION W( 1 )
1769 EXTERNAL LDE, LDERES
1771 EXTERNAL DMAKE, DMVCH, DSPR, DSYR
1775 INTEGER INFOT, NOUTC
1778 COMMON /INFOC/INFOT, NOUTC, OK, LERR
1782.EQ.
FULL = SNAME( 3: 3 )'Y
'
1783.EQ.
PACKED = SNAME( 3: 3 )'P
'
1787 ELSE IF( PACKED )THEN
1795 DO 100 IN = 1, NIDIM
1805 LAA = ( N*( N + 1 ) )/2
1811 UPLO = ICH( IC: IC )
1821 CALL DMAKE( 'GE
', ' ', ' ', 1, N, X, 1, XX, ABS( INCX ),
1822 $ 0, N - 1, RESET, TRANSL )
1825 XX( 1 + ABS( INCX )*( N/2 - 1 ) ) = ZERO
1830.LE..OR..EQ.
NULL = N0ALPHAZERO
1835 CALL DMAKE( SNAME( 2: 3 ), UPLO, ' ', N, N, A, NMAX,
1836 $ AA, LDA, N - 1, N - 1, RESET, TRANSL )
1858 $ WRITE( NTRA, FMT = 9993 )NC, SNAME, UPLO, N,
1862 CALL DSYR( UPLO, N, ALPHA, XX, INCX, AA, LDA )
1863 ELSE IF( PACKED )THEN
1865 $ WRITE( NTRA, FMT = 9994 )NC, SNAME, UPLO, N,
1869 CALL DSPR( UPLO, N, ALPHA, XX, INCX, AA )
1875 WRITE( NOUT, FMT = 9992 )
1882.EQ.
ISAME( 1 ) = UPLOUPLOS
1883.EQ.
ISAME( 2 ) = NSN
1884.EQ.
ISAME( 3 ) = ALSALPHA
1885 ISAME( 4 ) = LDE( XS, XX, LX )
1886.EQ.
ISAME( 5 ) = INCXSINCX
1888 ISAME( 6 ) = LDE( AS, AA, LAA )
1890 ISAME( 6 ) = LDERES( SNAME( 2: 3 ), UPLO, N, N, AS,
1893.NOT.
IF( PACKED )THEN
1894.EQ.
ISAME( 7 ) = LDASLDA
1901.AND.
SAME = SAMEISAME( I )
1902.NOT.
IF( ISAME( I ) )
1903 $ WRITE( NOUT, FMT = 9998 )I
1920 Z( I ) = X( N - I + 1 )
1933 CALL DMVCH( 'N
', LJ, 1, ALPHA, Z( JJ ), LJ, W,
1934 $ 1, ONE, A( JJ, J ), 1, YT, G,
1935 $ AA( JA ), EPS, ERR, FATAL, NOUT,
1946 ERRMAX = MAX( ERRMAX, ERR )
1967.LT.
IF( ERRMAXTHRESH )THEN
1968 WRITE( NOUT, FMT = 9999 )SNAME, NC
1970 WRITE( NOUT, FMT = 9997 )SNAME, NC, ERRMAX
1975 WRITE( NOUT, FMT = 9995 )J
1978 WRITE( NOUT, FMT = 9996 )SNAME
1980 WRITE( NOUT, FMT = 9993 )NC, SNAME, UPLO, N, ALPHA, INCX, LDA
1981 ELSE IF( PACKED )THEN
1982 WRITE( NOUT, FMT = 9994 )NC, SNAME, UPLO, N, ALPHA, INCX
1988 9999 FORMAT( ' ', A6, ' PASSED THE COMPUTATIONAL TESTS (
', I6, ' CALL
',
1990 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER
', I2, ' WAS CH
',
1991 $ 'ANGED INCORRECTLY *******
' )
1992 9997 FORMAT( ' ', A6, ' COMPLETED THE COMPUTATIONAL TESTS (
', I6, ' C',
1993 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
1994 $
' - SUSPECT *******' )
1995 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
1996 9995
FORMAT(
' THESE ARE THE RESULTS FOR COLUMN ', i3 )
1997 9994
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', i3,
',', f4.1,
', X,',
1999 9993
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', i3,
',', f4.1,
', X,',
2000 $ i2,
', A,', i3,
') .' )
2001 9992
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
2007 SUBROUTINE dchk6( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI,
2008 $ FATAL, NIDIM, IDIM, NALF, ALF, NINC, INC, NMAX,
2009 $ INCMAX, A, AA, AS, X, XX, XS, Y, YY, YS, YT, G,
2021 DOUBLE PRECISION ZERO, HALF, ONE
2022 PARAMETER ( ZERO = 0.0d0, half = 0.5d0, one = 1.0d0 )
2024 DOUBLE PRECISION EPS, THRESH
2025 INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA
2026 LOGICAL FATAL, REWI, TRACE
2029 DOUBLE PRECISION A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
2031 $ xs( nmax*incmax ), xx( nmax*incmax ),
2032 $ y( nmax ), ys( nmax*incmax ), yt( nmax ),
2033 $ yy( nmax*incmax ), z( nmax, 2 )
2034 INTEGER IDIM( NIDIM ), INC( NINC )
2036 DOUBLE PRECISION ALPHA, ALS, ERR, ERRMAX, TRANSL
2037 INTEGER I, IA, IC, IN, INCX, INCXS, INCY, INCYS, IX,
2038 $ IY, J, JA, JJ, LAA, LDA, LDAS, LJ, LX, LY, N,
2040 LOGICAL FULL, NULL, PACKED, RESET, SAME, UPPER
2041 CHARACTER*1 UPLO, UPLOS
2044 DOUBLE PRECISION W( 2 )
2048 EXTERNAL lde, lderes
2054 INTEGER INFOT, NOUTC
2057 COMMON /infoc/infot, noutc, ok, lerr
2061 full = sname( 3: 3 ).EQ.
'Y'
2062 packed = sname( 3: 3 ).EQ.
'P'
2066 ELSE IF( packed )
THEN
2074 DO 140 in = 1, nidim
2084 laa = ( n*( n + 1 ) )/2
2090 uplo = ich( ic: ic )
2100 CALL dmake(
'GE',
' ',
' ', 1, n, x, 1, xx, abs( incx ),
2101 $ 0, n - 1, reset, transl )
2104 xx( 1 + abs( incx )*( n/2 - 1 ) ) = zero
2114 CALL dmake(
'GE',
' ',
' ', 1, n, y, 1, yy,
2115 $ abs( incy ), 0, n - 1, reset, transl )
2118 yy( 1 + abs( incy )*( n/2 - 1 ) ) = zero
2123 null = n.LE.0.OR.alpha.EQ.zero
2128 CALL dmake( sname( 2: 3 ), uplo,
' ', n, n, a,
2129 $ nmax, aa, lda, n - 1, n - 1, reset,
2156 $
WRITE( ntra, fmt = 9993 )nc, sname, uplo, n,
2157 $ alpha, incx, incy, lda
2160 CALL dsyr2( uplo, n, alpha, xx, incx, yy, incy,
2162 ELSE IF( packed )
THEN
2164 $
WRITE( ntra, fmt = 9994 )nc, sname, uplo, n,
2168 CALL dspr2( uplo, n, alpha, xx, incx, yy, incy,
2175 WRITE( nout, fmt = 9992 )
2182 isame( 1 ) = uplo.EQ.uplos
2183 isame( 2 ) = ns.EQ.n
2184 isame( 3 ) = als.EQ.alpha
2185 isame( 4 ) = lde( xs, xx, lx )
2186 isame( 5 ) = incxs.EQ.incx
2187 isame( 6 ) = lde( ys, yy, ly )
2188 isame( 7 ) = incys.EQ.incy
2190 isame( 8 ) = lde( as, aa, laa )
2192 isame( 8 ) = lderes( sname( 2: 3 ), uplo, n, n,
2195 IF( .NOT.packed )
THEN
2196 isame( 9 ) = ldas.EQ.lda
2203 same = same.AND.isame( i )
2204 IF( .NOT.isame( i ) )
2205 $
WRITE( nout, fmt = 9998 )i
2222 z( i, 1 ) = x( n - i + 1 )
2231 z( i, 2 ) = y( n - i + 1 )
2245 CALL dmvch(
'N', lj, 2, alpha, z( jj, 1 ),
2246 $ nmax, w, 1, one, a( jj, j ), 1,
2247 $ yt, g, aa( ja ), eps, err, fatal,
2258 errmax =
max( errmax, err )
2281 IF( errmax.LT.thresh )
THEN
2282 WRITE( nout, fmt = 9999 )sname, nc
2284 WRITE( nout, fmt = 9997 )sname, nc, errmax
2289 WRITE( nout, fmt = 9995 )j
2292 WRITE( nout, fmt = 9996 )sname
2294 WRITE( nout, fmt = 9993 )nc, sname, uplo, n, alpha, incx,
2296 ELSE IF( packed )
THEN
2297 WRITE( nout, fmt = 9994 )nc, sname, uplo, n, alpha, incx, incy
2303 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
2305 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
2306 $
'ANGED INCORRECTLY *******' )
2307 9997
FORMAT(
' ', a6, ' completed
the computational tests(
', I6, ' c
',
2308 $ 'alls)
', /' ******* but with maximum test ratio
', F8.2,
2309 $ ' - suspect *******
' )
2310 9996 FORMAT( ' *******
', A6, ' failed on
CALL number:
' )
2311 9995 FORMAT( ' these are
the results
for column
', I3 )
2312 9994 FORMAT( 1X, I6, ':
', A6, '(
''', A1, ''',
', I3, ',
', F4.1, ', x,
',
2313 $ I2, ', y,
', I2, ', ap) .
' )
2314 9993 FORMAT( 1X, I6, ':
', A6, '(
''', A1, ''',
', I3, ',
', F4.1, ', x,
',
2315 $ I2, ', y,
', I2, ', a,
', I3, ') .
' )
2316 9992 FORMAT( ' ******* fatal error - error-
EXIT taken on valid
CALL *
',
2322 SUBROUTINE DCHKE( ISNUM, SRNAMT, NOUT )
2338 INTEGER INFOT, NOUTC
2341 DOUBLE PRECISION ALPHA, BETA
2343 DOUBLE PRECISION A( 1, 1 ), X( 1 ), Y( 1 )
2345 EXTERNAL CHKXER, DGBMV, DGEMV, DGER, DSBMV, DSPMV, DSPR,
2346 $ DSPR2, DSYMV, DSYR, DSYR2, DTBMV, DTBSV, DTPMV,
2347 $ DTPSV, DTRMV, DTRSV
2349 COMMON /INFOC/INFOT, NOUTC, OK, LERR
2357 GO TO ( 10, 20, 30, 40, 50, 60, 70, 80,
2358 $ 90, 100, 110, 120, 130, 140, 150,
2361 CALL DGEMV( '/
', 0, 0, ALPHA, A, 1, X, 1, BETA, Y, 1 )
2362 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2364 CALL DGEMV( 'n
', -1, 0, ALPHA, A, 1, X, 1, BETA, Y, 1 )
2365 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2367 CALL DGEMV( 'n
', 0, -1, ALPHA, A, 1, X, 1, BETA, Y, 1 )
2368 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2370 CALL DGEMV( 'n
', 2, 0, ALPHA, A, 1, X, 1, BETA, Y, 1 )
2371 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2373 CALL DGEMV( 'n
', 0, 0, ALPHA, A, 1, X, 0, BETA, Y, 1 )
2374 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2376 CALL DGEMV( 'n
', 0, 0, ALPHA, A, 1, X, 1, BETA, Y, 0 )
2377 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2380 CALL DGBMV( '/
', 0, 0, 0, 0, ALPHA, A, 1, X, 1, BETA, Y, 1 )
2381 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2383 CALL DGBMV( 'n
', -1, 0, 0, 0, ALPHA, A, 1, X, 1, BETA, Y, 1 )
2384 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2386 CALL DGBMV( 'n
', 0, -1, 0, 0, ALPHA, A, 1, X, 1, BETA, Y, 1 )
2387 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2389 CALL DGBMV( 'n
', 0, 0, -1, 0, ALPHA, A, 1, X, 1, BETA, Y, 1 )
2390 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2392 CALL DGBMV( 'n
', 2, 0, 0, -1, ALPHA, A, 1, X, 1, BETA, Y, 1 )
2393 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2395 CALL DGBMV( 'n
', 0, 0, 1, 0, ALPHA, A, 1, X, 1, BETA, Y, 1 )
2396 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2398 CALL DGBMV( 'n
', 0, 0, 0, 0, ALPHA, A, 1, X, 0, BETA, Y, 1 )
2399 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2401 CALL DGBMV( 'n
', 0, 0, 0, 0, ALPHA, A, 1, X, 1, BETA, Y, 0 )
2402 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2405 CALL DSYMV( '/
', 0, ALPHA, A, 1, X, 1, BETA, Y, 1 )
2406 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2408 CALL DSYMV( 'u
', -1, ALPHA, A, 1, X, 1, BETA, Y, 1 )
2409 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2411 CALL DSYMV( 'u
', 2, ALPHA, A, 1, X, 1, BETA, Y, 1 )
2412 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2414 CALL DSYMV( 'u
', 0, ALPHA, A, 1, X, 0, BETA, Y, 1 )
2415 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2417 CALL DSYMV( 'u
', 0, ALPHA, A, 1, X, 1, BETA, Y, 0 )
2418 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2421 CALL DSBMV( '/
', 0, 0, ALPHA, A, 1, X, 1, BETA, Y, 1 )
2422 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2424 CALL DSBMV( 'u
', -1, 0, ALPHA, A, 1, X, 1, BETA, Y, 1 )
2425 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2427 CALL DSBMV( 'u
', 0, -1, ALPHA, A, 1, X, 1, BETA, Y, 1 )
2428 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2430 CALL DSBMV( 'u
', 0, 1, ALPHA, A, 1, X, 1, BETA, Y, 1 )
2431 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2433 CALL DSBMV( 'u
', 0, 0, ALPHA, A, 1, X, 0, BETA, Y, 1 )
2434 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2436 CALL DSBMV( 'u
', 0, 0, ALPHA, A, 1, X, 1, BETA, Y, 0 )
2437 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2440 CALL DSPMV( '/
', 0, ALPHA, A, X, 1, BETA, Y, 1 )
2441 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2443 CALL DSPMV( 'u
', -1, ALPHA, A, X, 1, BETA, Y, 1 )
2444 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2446 CALL DSPMV( 'u
', 0, ALPHA, A, X, 0, BETA, Y, 1 )
2447 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2449 CALL DSPMV( 'u
', 0, ALPHA, A, X, 1, BETA, Y, 0 )
2450 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2453 CALL DTRMV( '/
', 'n
', 'n
', 0, A, 1, X, 1 )
2454 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2456 CALL DTRMV( 'u
', '/
', 'n
', 0, A, 1, X, 1 )
2457 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2459 CALL DTRMV( 'u
', 'n
', '/
', 0, A, 1, X, 1 )
2460 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2462 CALL DTRMV( 'u
', 'n',
'N', -1, a, 1, x, 1 )
2463 CALL chkxer( srnamt, infot, nout, lerr, ok )
2465 CALL dtrmv(
'U',
'N',
'N', 2, a, 1, x, 1 )
2466 CALL chkxer( srnamt, infot, nout, lerr, ok )
2468 CALL dtrmv(
'U',
'N',
'N', 0, a, 1, x, 0 )
2469 CALL chkxer( srnamt, infot, nout, lerr, ok )
2472 CALL dtbmv(
'/',
'N',
'N', 0, 0, a, 1, x, 1 )
2473 CALL chkxer( srnamt, infot, nout, lerr, ok )
2475 CALL dtbmv(
'U',
'/',
'N', 0, 0, a, 1, x, 1 )
2476 CALL chkxer( srnamt, infot, nout, lerr, ok )
2478 CALL dtbmv(
'U',
'N',
'/', 0, 0, a, 1, x, 1 )
2479 CALL chkxer( srnamt, infot, nout, lerr, ok )
2481 CALL dtbmv(
'U',
'N',
'N', -1, 0, a, 1, x, 1 )
2482 CALL chkxer( srnamt, infot, nout, lerr, ok )
2484 CALL dtbmv(
'U',
'N',
'N', 0, -1, a, 1, x, 1 )
2485 CALL chkxer( srnamt, infot, nout, lerr, ok )
2487 CALL dtbmv(
'U',
'N',
'N', 0, 1, a, 1, x, 1 )
2488 CALL chkxer( srnamt, infot, nout, lerr, ok )
2490 CALL dtbmv(
'U',
'N',
'N', 0, 0, a, 1, x, 0 )
2491 CALL chkxer( srnamt, infot, nout, lerr, ok )
2494 CALL dtpmv(
'/',
'N',
'N', 0, a, x, 1 )
2495 CALL chkxer( srnamt, infot, nout, lerr, ok )
2497 CALL dtpmv(
'U',
'/',
'N', 0, a, x, 1 )
2498 CALL chkxer( srnamt, infot, nout, lerr, ok )
2500 CALL dtpmv(
'U',
'N',
'/', 0, a, x, 1 )
2501 CALL chkxer( srnamt, infot, nout, lerr, ok )
2503 CALL dtpmv(
'U',
'N',
'N', -1, a, x, 1 )
2504 CALL chkxer( srnamt, infot, nout, lerr, ok )
2506 CALL dtpmv(
'U',
'N',
'N', 0, a, x, 0 )
2507 CALL chkxer( srnamt, infot, nout, lerr, ok )
2510 CALL dtrsv(
'/',
'N',
'N', 0, a, 1, x, 1 )
2511 CALL chkxer( srnamt, infot, nout, lerr, ok )
2513 CALL dtrsv(
'U',
'/',
'N', 0, a, 1, x, 1 )
2514 CALL chkxer( srnamt, infot, nout, lerr, ok )
2516 CALL dtrsv(
'U', 'n
', '/
', 0, A, 1, X, 1 )
2517 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2519 CALL DTRSV( 'u
', 'n
', 'n
', -1, A, 1, X, 1 )
2520 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2522 CALL DTRSV( 'u
', 'n
', 'n
', 2, A, 1, X, 1 )
2523 CALL CHKXER( SRNAMT, INFOT, NOUT, LERR, OK )
2525 CALL DTRSV( 'u
', 'n
', 'n', 0, a, 1, x, 0 )
2526 CALL chkxer( srnamt, infot, nout, lerr, ok )
2529 CALL dtbsv(
'/',
'N',
'N', 0, 0, a, 1, x, 1 )
2530 CALL chkxer( srnamt, infot, nout, lerr, ok )
2532 CALL dtbsv(
'U',
'/',
'N', 0, 0, a, 1, x, 1 )
2533 CALL chkxer( srnamt, infot, nout, lerr, ok )
2535 CALL dtbsv(
'U',
'N',
'/', 0, 0, a, 1, x, 1 )
2536 CALL chkxer( srnamt, infot, nout, lerr, ok )
2538 CALL dtbsv(
'U',
'N',
'N', -1, 0, a, 1, x, 1 )
2539 CALL chkxer( srnamt, infot, nout, lerr, ok )
2541 CALL dtbsv(
'U',
'N',
'N', 0, -1, a, 1, x, 1 )
2542 CALL chkxer( srnamt, infot, nout, lerr, ok )
2544 CALL dtbsv(
'U',
'N',
'N', 0, 1, a, 1, x, 1 )
2545 CALL chkxer( srnamt, infot, nout, lerr, ok )
2547 CALL dtbsv(
'U',
'N',
'N', 0, 0, a, 1, x, 0 )
2548 CALL chkxer( srnamt, infot, nout, lerr, ok )
2551 CALL dtpsv(
'/',
'N',
'N', 0, a, x, 1 )
2552 CALL chkxer( srnamt, infot, nout, lerr, ok )
2554 CALL dtpsv(
'U',
'/',
'N', 0, a, x, 1 )
2555 CALL chkxer( srnamt, infot, nout, lerr, ok )
2557 CALL dtpsv(
'U',
'N',
'/', 0, a, x, 1 )
2558 CALL chkxer( srnamt, infot, nout, lerr, ok )
2560 CALL dtpsv(
'U',
'N',
'N', -1, a, x, 1 )
2561 CALL chkxer( srnamt, infot, nout, lerr, ok )
2563 CALL dtpsv(
'U',
'N',
'N', 0, a, x, 0 )
2564 CALL chkxer( srnamt, infot, nout, lerr, ok )
2567 CALL dger( -1, 0, alpha, x, 1, y, 1, a, 1 )
2568 CALL chkxer( srnamt, infot, nout, lerr, ok )
2570 CALL dger( 0, -1, alpha, x, 1, y, 1, a, 1 )
2571 CALL chkxer( srnamt, infot, nout, lerr, ok )
2573 CALL dger( 0, 0, alpha, x, 0, y, 1, a, 1 )
2574 CALL chkxer( srnamt, infot, nout, lerr, ok )
2576 CALL dger( 0, 0, alpha, x, 1, y, 0, a, 1 )
2577 CALL chkxer( srnamt, infot, nout, lerr, ok )
2579 CALL dger( 2, 0, alpha, x, 1, y, 1, a, 1 )
2580 CALL chkxer( srnamt, infot, nout, lerr, ok )
2583 CALL dsyr(
'/', 0, alpha, x, 1, a, 1 )
2584 CALL chkxer( srnamt, infot, nout, lerr, ok )
2586 CALL dsyr(
'U', -1, alpha, x, 1, a, 1 )
2587 CALL chkxer( srnamt, infot, nout, lerr, ok )
2589 CALL dsyr(
'U', 0, alpha, x, 0, a, 1 )
2590 CALL chkxer( srnamt, infot, nout, lerr, ok )
2592 CALL dsyr(
'U', 2, alpha, x, 1, a, 1 )
2593 CALL chkxer( srnamt, infot, nout, lerr, ok )
2596 CALL dspr(
'/', 0, alpha, x, 1, a )
2597 CALL chkxer( srnamt, infot, nout, lerr, ok )
2599 CALL dspr(
'U', -1, alpha, x, 1, a )
2600 CALL chkxer( srnamt, infot, nout, lerr, ok )
2602 CALL dspr(
'U', 0, alpha, x, 0, a )
2603 CALL chkxer( srnamt, infot, nout, lerr, ok )
2606 CALL dsyr2(
'/', 0, alpha, x, 1, y, 1, a, 1 )
2607 CALL chkxer( srnamt, infot, nout, lerr, ok )
2609 CALL dsyr2(
'U', -1, alpha, x, 1, y, 1, a, 1 )
2610 CALL chkxer( srnamt, infot, nout, lerr, ok )
2612 CALL dsyr2(
'U', 0, alpha, x, 0, y, 1, a, 1 )
2613 CALL chkxer( srnamt, infot, nout, lerr, ok )
2615 CALL dsyr2(
'U', 0, alpha, x, 1, y, 0, a, 1 )
2616 CALL chkxer( srnamt, infot, nout, lerr, ok )
2618 CALL dsyr2(
'U', 2, alpha, x, 1, y, 1, a, 1 )
2619 CALL chkxer( srnamt, infot, nout, lerr, ok )
2622 CALL dspr2(
'/', 0, alpha, x, 1, y, 1, a )
2623 CALL chkxer( srnamt, infot, nout, lerr, ok )
2625 CALL dspr2(
'U', -1, alpha, x, 1, y, 1, a
2626 CALL chkxer( srnamt, infot, nout, lerr, ok )
2628 CALL dspr2(
'U', 0, alpha, x, 0, y, 1, a )
2629 CALL chkxer( srnamt, infot, nout, lerr, ok )
2631 CALL dspr2(
'U', 0, alpha, x, 1, y, 0, a )
2632 CALL chkxer( srnamt, infot, nout, lerr, ok )
2635 WRITE( nout, fmt = 9999 )srnamt
2637 WRITE( nout, fmt = 9998 )srnamt
2641 9999
FORMAT(
' ', a6,
' PASSED THE TESTS OF ERROR-EXITS' )
2642 9998
FORMAT(
' ******* ', a6,
' FAILED THE TESTS OF ERROR-EXITS *****',
2648 SUBROUTINE dmake( TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL,
2649 $ KU, RESET, TRANSL )
2665 DOUBLE PRECISION ZERO, ONE
2666 PARAMETER ( ZERO = 0.0d0, one = 1.0d0 )
2667 DOUBLE PRECISION ROGUE
2668 PARAMETER ( ROGUE = -1.0d10 )
2670 DOUBLE PRECISION TRANSL
2671 INTEGER KL, KU, LDA, M, N, NMAX
2673 CHARACTER*1 DIAG, UPLO
2676 DOUBLE PRECISION A( NMAX, * ), AA( * )
2678 INTEGER I, I1, I2, I3, IBEG, IEND, IOFF, J, KK
2679 LOGICAL GEN, LOWER, SYM, TRI, UNIT, UPPER
2681 DOUBLE PRECISION DBEG
2686 gen =
TYPE( 1: 1 ).EQ.
'G'
2687 SYM = type( 1: 1 ).EQ.
'S'
2688 tri =
TYPE( 1: 1 ).EQ.
'T'
2689 UPPER = ( sym.OR.tri ).AND.uplo.EQ.
'U'
2690 lower = ( sym.OR.tri ).AND.uplo.EQ.
'L'
2691 unit = tri.AND.diag.EQ.
'U'
2697 IF( gen.OR.( upper.AND.i.LE.j ).OR.( lower.AND.i.GE.j ) )
2699 IF( ( i.LE.j.AND.j - i.LE.ku ).OR.
2700 $ ( i.GE.j.AND.i - j.LE.kl ) )
THEN
2701 a( i, j ) = dbeg( reset ) + transl
2707 a( j, i ) = a( i, j )
2715 $ a( j, j ) = a( j, j ) + one
2722 IF( type.EQ.
'GE' )
THEN
2725 aa( i + ( j - 1 )*lda ) = a( i, j )
2727 DO 40 i = m + 1, lda
2728 aa( i + ( j - 1 )*lda ) = rogue
2731 ELSE IF( type.EQ.
'GB' )
THEN
2733 DO 60 i1 = 1, ku + 1 - j
2734 aa( i1 + ( j - 1 )*lda ) = rogue
2736 DO 70 i2 = i1,
min( kl + ku + 1, ku + 1 + m - j )
2737 aa( i2 + ( j - 1 )*lda ) = a( i2 + j - ku - 1, j )
2740 aa( i3 + ( j - 1 )*lda ) = rogue
2743 ELSE IF( type.EQ.
'SY'.OR.type.EQ.
'TR' )
THEN
2760 DO 100 i = 1, ibeg - 1
2761 aa( i + ( j - 1 )*lda ) = rogue
2763 DO 110 i = ibeg, iend
2764 aa( i + ( j - 1 )*lda ) = a( i, j )
2766 DO 120 i = iend + 1, lda
2767 aa( i + ( j - 1 )*lda ) = rogue
2770 ELSE IF( type.EQ.
'SB'.OR.type.EQ.
'TB' )
THEN
2774 ibeg =
max( 1, kl + 2 - j )
2787 iend =
min( kl + 1, 1 + m - j )
2789 DO 140 i = 1, ibeg - 1
2790 aa( i + ( j - 1 )*lda ) = rogue
2792 DO 150 i = ibeg, iend
2793 aa( i + ( j - 1 )*lda ) = a( i + j - kk, j )
2795 DO 160 i = iend + 1, lda
2796 aa( i + ( j - 1 )*lda ) = rogue
2799 ELSE IF( type.EQ.
'SP'.OR.type.EQ.
'TP' )
THEN
2809 DO 180 i = ibeg, iend
2811 aa( ioff ) = a( i, j )
2814 $ aa( ioff ) = rogue
2824 SUBROUTINE dmvch( TRANS, M, N, ALPHA, A, NMAX, X, INCX, BETA, Y,
2825 $ INCY, YT, G, YY, EPS, ERR, FATAL, NOUT, MV )
2836 DOUBLE PRECISION ZERO, ONE
2837 PARAMETER ( ZERO = 0.0d0, one = 1.0d0 )
2839 DOUBLE PRECISION ALPHA, BETA, EPS, ERR
2840 INTEGER , INCY, M, , NMAX, NOUT
2844 DOUBLE PRECISION A( NMAX, * ), G( * ), X( * ), Y( * ), YT( * ),
2847 DOUBLE PRECISION ERRI
2848 INTEGER I, INCXL, INCYL, IY, J, JX, KX, KY, ML, NL
2851 INTRINSIC ABS, MAX, SQRT
2853 tran = trans.EQ.
'T'.OR.trans.EQ.
'C'
2886 yt( iy ) = yt( iy ) + a( j, i )*x( jx )
2887 g( iy ) = g( iy ) + abs( a( j, i )*x( jx ) )
2892 yt( iy ) = yt( iy ) + a( i, j )*x( jx )
2893 g( iy ) = g( iy ) + abs( a( i, j )*x( jx ) )
2897 yt( iy ) = alpha*yt( iy ) + beta*y( iy )
2898 g( iy ) = abs( alpha )*g( iy ) + abs( beta*y( iy ) )
2906 erri = abs( yt( i ) - yy( 1 + ( i - 1 )*abs( incy ) ) )/eps
2907 IF( g( i ).NE.zero )
2908 $ erri = erri/g( i )
2909 err = max( err, erri )
2910 IF( err*sqrt( eps ).GE.one )
2919 WRITE( nout, fmt = 9999 )
2922 WRITE( nout, fmt = 9998 )i, yt( i ),
2923 $ yy( 1 + ( i - 1 )*abs( incy ) )
2925 WRITE( nout, fmt = 9998 )i,
2926 $ yy( 1 + ( i - 1 )*abs( incy ) ), yt( i )
2933 9999
FORMAT(
' ******* FATAL ERROR - COMPUTED RESULT IS LESS THAN HAL',
2934 $
'F ACCURATE *******', /
' EXPECTED RESULT COMPU',
2936 9998
FORMAT( 1x, i7, 2g18.6 )
2941 LOGICAL FUNCTION lde( RI, RJ, LR )
2954 DOUBLE PRECISION ri( * ), rj( * )
2959 IF( ri( i ).NE.rj( i ) )
2971 LOGICAL FUNCTION lderes( TYPE, UPLO, M, N, AA, AS, LDA )
2988 DOUBLE PRECISION aa( lda, * ), as( lda, * )
2990 INTEGER i, ibeg, iend, j
2994 IF( type.EQ.
'GE' )
THEN
2996 DO 10 i = m + 1, lda
2997 IF( aa( i, j ).NE.as( i, j ) )
3001 ELSE IF( type.EQ.
'SY' )
THEN
3010 DO 30 i = 1, ibeg - 1
3011 IF( aa( i, j ).NE.as( i, j ) )
3014 DO 40 i = iend + 1, lda
3015 IF( aa( i, j ).NE.as( i, j ) )
3030 DOUBLE PRECISION FUNCTION dbeg( RESET )
3065 i = i - 1000*( i/1000 )
3070 dbeg = dble( i - 500 )/1001.0d0
3084 DOUBLE PRECISION x, y
3092 SUBROUTINE chkxer( SRNAMT, INFOT, NOUT, LERR, OK )
3108 WRITE( nout, fmt = 9999 )infot, srnamt
3114 9999
FORMAT(
' ***** ILLEGAL VALUE OF PARAMETER NUMBER ', i2,
' NOT D',
3115 $
'ETECTED BY ', a6,
' *****' )
3145 COMMON /infoc/infot, nout, ok, lerr
3146 COMMON /srnamc/srnamt
3149 IF( info.NE.infot )
THEN
3150 IF( infot.NE.0 )
THEN
3151 WRITE( nout, fmt = 9999 )info, infot
3153 WRITE( nout, fmt = 9997 )info
3157 IF( srname.NE.srnamt )
THEN
3158 WRITE( nout, fmt = 9998 )srname, srnamt
3163 9999
FORMAT(
' ******* XERBLA WAS CALLED WITH INFO = ', i6,
' INSTEAD',
3164 $
' OF ', i2,
' *******' )
3165 9998
FORMAT(
' ******* XERBLA WAS CALLED WITH SRNAME = ', a6,
' INSTE',
3166 $
'AD OF ', a6,
' *******' )
3167 9997
FORMAT(
' ******* XERBLA WAS CALLED WITH INFO = ', i6,
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 xerbla(srname, info)
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 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 chkxer(srnamt, infot, nout, lerr, ok)
subroutine dmake(type, uplo, diag, m, n, a, nmax, aa, lda, kl, ku, reset, transl)
end diagonal values have been computed in the(sparse) matrix id.SOL
subroutine dtrsv(uplo, trans, diag, n, a, lda, x, incx)
DTRSV
subroutine dsyr(uplo, n, alpha, x, incx, a, lda)
DSYR
subroutine dsymv(uplo, n, alpha, a, lda, x, incx, beta, y, incy)
DSYMV
subroutine dtbmv(uplo, trans, diag, n, k, a, lda, x, incx)
DTBMV
subroutine dsbmv(uplo, n, k, alpha, a, lda, x, incx, beta, y, incy)
DSBMV
subroutine dtrmv(uplo, trans, diag, n, a, lda, x, incx)
DTRMV
subroutine dspmv(uplo, n, alpha, ap, x, incx, beta, y, incy)
DSPMV
subroutine dspr2(uplo, n, alpha, x, incx, y, incy, ap)
DSPR2
subroutine dsyr2(uplo, n, alpha, x, incx, y, incy, a, lda)
DSYR2
subroutine dspr(uplo, n, alpha, x, incx, ap)
DSPR
subroutine dtpsv(uplo, trans, diag, n, ap, x, incx)
DTPSV
subroutine dger(m, n, alpha, x, incx, y, incy, a, lda)
DGER
subroutine dtbsv(uplo, trans, diag, n, k, a, lda, x, incx)
DTBSV
subroutine dtpmv(uplo, trans, diag, n, ap, x, incx)
DTPMV
for(i8=*sizetab-1;i8 >=0;i8--)