452 COMPLEX*16 zero, half
453 parameter ( zero = ( 0.0d0, 0.0d0 ),
454 $ half = ( 0.5d0, 0.0d0 ) )
455 DOUBLE PRECISION rzero
456 parameter ( rzero = 0.0d0 )
458 DOUBLE PRECISION eps, thresh
459 INTEGER incmax, nalf, nbet, nidim, ninc, nkb, nmax,
461 LOGICAL fatal, rewi, trace
464 COMPLEX*16 a( nmax, nmax ), aa( nmax*nmax ), alf( nalf ),
465 $ as( nmax*nmax ), bet( nbet ), x( nmax ),
466 $ xs( nmax*incmax ), xx( nmax*incmax ),
467 $ y( nmax ), ys( nmax*incmax ), yt( nmax ),
469 DOUBLE PRECISION g( nmax )
470 INTEGER idim( nidim ), inc( ninc ), kb( nkb )
472 COMPLEX*16 alpha, als, beta, bls, transl
473 DOUBLE PRECISION err, errmax
474 INTEGER i, ia, ib, ic, iku, im, in, incx, incxs, incy,
475 $ incys, ix, iy, kl, kls, ku, kus, laa, lda,
476 $ ldas, lx, ly, m, ml, ms, n, nargs, nc, nd, nk,
478 LOGICAL banded, full, null, reset, same, tran
479 CHARACTER*1 trans, transs
489 INTRINSIC abs, max, min
494 COMMON /infoc/infot, noutc, ok, lerr
498 full = sname( 3: 3 ).EQ.
'E'
499 banded = sname( 3: 3 ).EQ.
'B'
503 ELSE IF( banded )
THEN
517 $ m = max( n - nd, 0 )
519 $ m = min( n + nd, nmax )
529 kl = max( ku - 1, 0 )
546 null = n.LE.0.OR.m.LE.0
551 CALL zmake( sname( 2: 3 ),
' ',
' ', m, n, a, nmax, aa,
552 $ lda, kl, ku, reset, transl )
555 trans = ich( ic: ic )
556 tran = trans.EQ.
'T'.OR.trans.EQ.
'C'
573 CALL zmake(
'GE',
' ',
' ', 1, nl, x, 1, xx,
574 $ abs( incx ), 0, nl - 1, reset, transl )
577 xx( 1 + abs( incx )*( nl/2 - 1 ) ) = zero
593 CALL zmake(
'GE',
' ',
' ', 1, ml, y, 1,
594 $ yy, abs( incy ), 0, ml - 1,
626 $
WRITE( ntra, fmt = 9994 )nc, sname,
627 $ trans, m, n, alpha, lda, incx, beta,
631 CALL zgemv( trans, m, n, alpha, aa,
632 $ lda, xx, incx, beta, yy,
634 ELSE IF( banded )
THEN
636 $
WRITE( ntra, fmt = 9995 )nc, sname,
637 $ trans, m, n, kl, ku, alpha, lda,
641 CALL zgbmv( trans, m, n, kl, ku, alpha,
642 $ aa, lda, xx, incx, beta,
649 WRITE( nout, fmt = 9993 )
656 isame( 1 ) = trans.EQ.transs
660 isame( 4 ) = als.EQ.alpha
661 isame( 5 ) =
lze( as, aa, laa )
662 isame( 6 ) = ldas.EQ.lda
663 isame( 7 ) =
lze( xs, xx, lx )
664 isame( 8 ) = incxs.EQ.incx
665 isame( 9 ) = bls.EQ.beta
667 isame( 10 ) =
lze( ys, yy, ly )
669 isame( 10 ) =
lzeres(
'GE',
' ', 1,
673 isame( 11 ) = incys.EQ.incy
674 ELSE IF( banded )
THEN
675 isame( 4 ) = kls.EQ.kl
676 isame( 5 ) = kus.EQ.ku
677 isame( 6 ) = als.EQ.alpha
678 isame( 7 ) =
lze( as, aa, laa )
679 isame( 8 ) = ldas.EQ.lda
680 isame( 9 ) =
lze( xs, xx, lx )
681 isame( 10 ) = incxs.EQ.incx
682 isame( 11 ) = bls.EQ.beta
684 isame( 12 ) =
lze( ys, yy, ly )
686 isame( 12 ) =
lzeres(
'GE',
' ', 1,
690 isame( 13 ) = incys.EQ.incy
698 same = same.AND.isame( i )
699 IF( .NOT.isame( i ) )
700 $
WRITE( nout, fmt = 9998 )i
711 CALL zmvch( trans, m, n, alpha, a,
712 $ nmax, x, incx, beta, y,
713 $ incy, yt, g, yy, eps, err,
714 $ fatal, nout, .true. )
715 errmax = max( errmax, err )
744 IF( errmax.LT.thresh )
THEN
745 WRITE( nout, fmt = 9999 )sname, nc
747 WRITE( nout, fmt = 9997 )sname, nc, errmax
752 WRITE( nout, fmt = 9996 )sname
754 WRITE( nout, fmt = 9994 )nc, sname, trans, m, n, alpha, lda,
756 ELSE IF( banded )
THEN
757 WRITE( nout, fmt = 9995 )nc, sname, trans, m, n, kl, ku,
758 $ alpha, lda, incx, beta, incy
764 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
766 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
767 $
'ANGED INCORRECTLY *******' )
768 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
769 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
770 $
' - SUSPECT *******' )
771 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
772 9995
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', 4( i3,
',' ),
'(',
773 $ f4.1,
',', f4.1,
'), A,', i3,
', X,', i2,
',(', f4.1,
',',
774 $ f4.1,
'), Y,', i2,
') .' )
775 9994
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', 2( i3,
',' ),
'(',
776 $ f4.1,
',', f4.1,
'), A,', i3,
', X,', i2,
',(', f4.1,
',',
777 $ f4.1,
'), Y,', i2,
') .' )
778 9993
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
logical function lzeres(TYPE, UPLO, M, N, AA, AS, LDA)
subroutine zgemv(TRANS, M, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
ZGEMV
subroutine zgbmv(TRANS, M, N, KL, KU, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
ZGBMV
subroutine zmake(TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL, KU, RESET, TRANSL)
logical function lze(RI, RJ, LR)
subroutine zmvch(TRANS, M, N, ALPHA, A, NMAX, X, INCX, BETA, Y, INCY, YT, G, YY, EPS, ERR, FATAL, NOUT, MV)