444 DOUBLE PRECISION zero, half
445 parameter ( zero = 0.0d0, half = 0.5d0 )
447 DOUBLE PRECISION eps, thresh
448 INTEGER incmax, nalf, nbet, nidim, ninc, nkb, nmax,
450 LOGICAL fatal, rewi, trace
453 DOUBLE PRECISION a( nmax, nmax ), aa( nmax*nmax ), alf( nalf ),
454 $ as( nmax*nmax ), bet( nbet ), g( nmax ),
455 $ x( nmax ), xs( nmax*incmax ),
456 $ xx( nmax*incmax ), y( nmax ),
457 $ ys( nmax*incmax ), yt( nmax ),
459 INTEGER idim( nidim ), inc( ninc ), kb( nkb )
461 DOUBLE PRECISION alpha, als, beta, bls, err, errmax, transl
462 INTEGER i, ia, ib, ic, iku, im, in, incx, incxs, incy,
463 $ incys, ix, iy, kl, kls, ku, kus, laa, lda,
464 $ ldas, lx, ly, m, ml, ms, n, nargs, nc, nd, nk,
466 LOGICAL banded, full, null, reset, same, tran
467 CHARACTER*1 trans, transs
477 INTRINSIC abs, max, min
482 COMMON /infoc/infot, noutc, ok, lerr
486 full = sname( 3: 3 ).EQ.
'E'
487 banded = sname( 3: 3 ).EQ.
'B'
491 ELSE IF( banded )
THEN
505 $ m = max( n - nd, 0 )
507 $ m = min( n + nd, nmax )
517 kl = max( ku - 1, 0 )
534 null = n.LE.0.OR.m.LE.0
539 CALL dmake( sname( 2: 3 ),
' ',
' ', m, n, a, nmax, aa,
540 $ lda, kl, ku, reset, transl )
543 trans = ich( ic: ic )
544 tran = trans.EQ.
'T'.OR.trans.EQ.
'C'
561 CALL dmake(
'GE',
' ',
' ', 1, nl, x, 1, xx,
562 $ abs( incx ), 0, nl - 1, reset, transl )
565 xx( 1 + abs( incx )*( nl/2 - 1 ) ) = zero
581 CALL dmake(
'GE',
' ',
' ', 1, ml, y, 1,
582 $ yy, abs( incy ), 0, ml - 1,
614 $
WRITE( ntra, fmt = 9994 )nc, sname,
615 $ trans, m, n, alpha, lda, incx, beta,
619 CALL dgemv( trans, m, n, alpha, aa,
620 $ lda, xx, incx, beta, yy,
622 ELSE IF( banded )
THEN
624 $
WRITE( ntra, fmt = 9995 )nc, sname,
625 $ trans, m, n, kl, ku, alpha, lda,
629 CALL dgbmv( trans, m, n, kl, ku, alpha,
630 $ aa, lda, xx, incx, beta,
637 WRITE( nout, fmt = 9993 )
644 isame( 1 ) = trans.EQ.transs
648 isame( 4 ) = als.EQ.alpha
649 isame( 5 ) =
lde( as, aa, laa )
650 isame( 6 ) = ldas.EQ.lda
651 isame( 7 ) =
lde( xs, xx, lx )
652 isame( 8 ) = incxs.EQ.incx
653 isame( 9 ) = bls.EQ.beta
655 isame( 10 ) =
lde( ys, yy, ly )
657 isame( 10 ) =
lderes(
'GE',
' ', 1,
661 isame( 11 ) = incys.EQ.incy
662 ELSE IF( banded )
THEN
663 isame( 4 ) = kls.EQ.kl
664 isame( 5 ) = kus.EQ.ku
665 isame( 6 ) = als.EQ.alpha
666 isame( 7 ) =
lde( as, aa, laa )
667 isame( 8 ) = ldas.EQ.lda
668 isame( 9 ) =
lde( xs, xx, lx )
669 isame( 10 ) = incxs.EQ.incx
670 isame( 11 ) = bls.EQ.beta
672 isame( 12 ) =
lde( ys, yy, ly )
674 isame( 12 ) =
lderes(
'GE',
' ', 1,
678 isame( 13 ) = incys.EQ.incy
686 same = same.AND.isame( i )
687 IF( .NOT.isame( i ) )
688 $
WRITE( nout, fmt = 9998 )i
699 CALL dmvch( trans, m, n, alpha, a,
700 $ nmax, x, incx, beta, y,
701 $ incy, yt, g, yy, eps, err,
702 $ fatal, nout, .true. )
703 errmax = max( errmax, err )
732 IF( errmax.LT.thresh )
THEN
733 WRITE( nout, fmt = 9999 )sname, nc
735 WRITE( nout, fmt = 9997 )sname, nc, errmax
740 WRITE( nout, fmt = 9996 )sname
742 WRITE( nout, fmt = 9994 )nc, sname, trans, m, n, alpha, lda,
744 ELSE IF( banded )
THEN
745 WRITE( nout, fmt = 9995 )nc, sname, trans, m, n, kl, ku,
746 $ alpha, lda, incx, beta, incy
752 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
754 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
755 $
'ANGED INCORRECTLY *******' )
756 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
757 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
758 $
' - SUSPECT *******' )
759 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
760 9995
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', 4( i3,
',' ), f4.1,
761 $
', A,', i3,
', X,', i2,
',', f4.1,
', Y,', i2,
') .' )
762 9994
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', 2( i3,
',' ), f4.1,
763 $
', A,', i3,
', X,', i2,
',', f4.1,
', Y,', i2,
765 9993
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
subroutine dgemv(TRANS, M, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
DGEMV
subroutine dmake(TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL, KU, RESET, TRANSL)
logical function lde(RI, RJ, LR)
subroutine dgbmv(TRANS, M, N, KL, KU, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
DGBMV
subroutine dmvch(TRANS, M, N, ALPHA, A, NMAX, X, INCX, BETA, Y, INCY, YT, G, YY, EPS, ERR, FATAL, NOUT, MV)
logical function lderes(TYPE, UPLO, M, N, AA, AS, LDA)