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 IF( errmax.LT.thresh )
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 *',
subroutine dmake(TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL, KU, RESET, TRANSL)
logical function lde(RI, RJ, LR)
logical function lderes(TYPE, UPLO, M, N, AA, AS, LDA)
subroutine dmvch(TRANS, M, N, ALPHA, A, NMAX, X, INCX, BETA, Y, INCY, YT, G, YY, EPS, ERR, FATAL, NOUT, MV)
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