449 COMPLEX*16 ZERO, HALF
450 parameter( zero = ( 0.0d0, 0.0d0 ),
451 $ half = ( 0.5d0, 0.0d0 ) )
452 DOUBLE PRECISION RZERO
453 parameter( rzero = 0.0d0 )
455 DOUBLE PRECISION EPS, THRESH
456 INTEGER INCMAX, NALF, NBET, NIDIM, NINC, NKB, NMAX,
458 LOGICAL FATAL, REWI, TRACE
461 COMPLEX*16 A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
462 $ AS( NMAX*NMAX ), BET( NBET ), X( NMAX ),
463 $ XS( NMAX*INCMAX ), XX( NMAX*INCMAX ),
464 $ Y( NMAX ), YS( NMAX*INCMAX ), YT( NMAX ),
466 DOUBLE PRECISION G( NMAX )
467 INTEGER IDIM( NIDIM ), INC( NINC ), KB( NKB )
469 COMPLEX*16 ALPHA, ALS, BETA, BLS, TRANSL
470 DOUBLE PRECISION ERR, ERRMAX
471 INTEGER I, IA, IB, IC, IKU, IM, IN, INCX, INCXS, INCY,
472 $ INCYS, IX, IY, KL, KLS, KU, KUS, LAA, LDA,
473 $ LDAS, LX, LY, M, ML, MS, N, NARGS, NC, ND, NK,
475 LOGICAL BANDED, FULL, NULL, RESET, SAME, TRAN
476 CHARACTER*1 TRANS, TRANSS
486 INTRINSIC abs, max, min
491 COMMON /infoc/infot, noutc, ok, lerr
495 full = sname( 3: 3 ).EQ.
'E'
496 banded = sname( 3: 3 ).EQ.
'B'
500 ELSE IF( banded )
THEN
514 $ m = max( n - nd, 0 )
516 $ m = min( n + nd, nmax )
526 kl = max( ku - 1, 0 )
543 null = n.LE.0.OR.m.LE.0
548 CALL zmake( sname( 2: 3 ),
' ',
' ', m, n, a, nmax, aa,
549 $ lda, kl, ku, reset, transl )
552 trans = ich( ic: ic )
553 tran = trans.EQ.
'T'.OR.trans.EQ.
'C'
570 CALL zmake(
'GE',
' ',
' ', 1, nl, x, 1, xx,
571 $ abs( incx ), 0, nl - 1, reset, transl )
574 xx( 1 + abs( incx )*( nl/2 - 1 ) ) = zero
590 CALL zmake(
'GE',
' ',
' ', 1, ml, y, 1,
591 $ yy, abs( incy ), 0, ml - 1,
623 $
WRITE( ntra, fmt = 9994 )nc, sname,
624 $ trans, m, n, alpha, lda, incx, beta,
628 CALL zgemv( trans, m, n, alpha, aa,
629 $ lda, xx, incx, beta, yy,
631 ELSE IF( banded )
THEN
633 $
WRITE( ntra, fmt = 9995 )nc, sname,
634 $ trans, m, n, kl, ku, alpha, lda,
638 CALL zgbmv( trans, m, n, kl, ku, alpha,
639 $ aa, lda, xx, incx, beta,
646 WRITE( nout, fmt = 9993 )
653 isame( 1 ) = trans.EQ.transs
657 isame( 4 ) = als.EQ.alpha
658 isame( 5 ) =
lze( as, aa, laa )
659 isame( 6 ) = ldas.EQ.lda
660 isame( 7 ) =
lze( xs, xx, lx )
661 isame( 8 ) = incxs.EQ.incx
662 isame( 9 ) = bls.EQ.beta
664 isame( 10 ) =
lze( ys, yy, ly )
666 isame( 10 ) =
lzeres(
'GE',
' ', 1,
670 isame( 11 ) = incys.EQ.incy
671 ELSE IF( banded )
THEN
672 isame( 4 ) = kls.EQ.kl
673 isame( 5 ) = kus.EQ.ku
674 isame( 6 ) = als.EQ.alpha
675 isame( 7 ) =
lze( as, aa, laa )
676 isame( 8 ) = ldas.EQ.lda
677 isame( 9 ) =
lze( xs, xx, lx )
678 isame( 10 ) = incxs.EQ.incx
679 isame( 11 ) = bls.EQ.beta
681 isame( 12 ) =
lze( ys, yy, ly )
683 isame( 12 ) =
lzeres(
'GE',
' ', 1,
687 isame( 13 ) = incys.EQ.incy
695 same = same.AND.isame( i )
696 IF( .NOT.isame( i ) )
697 $
WRITE( nout, fmt = 9998 )i
708 CALL zmvch( trans, m, n, alpha, a,
709 $ nmax, x, incx, beta, y,
710 $ incy, yt, g, yy, eps, err,
711 $ fatal, nout, .true. )
712 errmax = max( errmax, err )
741 IF( errmax.LT.thresh )
THEN
742 WRITE( nout, fmt = 9999 )sname, nc
744 WRITE( nout, fmt = 9997 )sname, nc, errmax
749 WRITE( nout, fmt = 9996 )sname
751 WRITE( nout, fmt = 9994 )nc, sname, trans, m, n, alpha, lda,
753 ELSE IF( banded )
THEN
754 WRITE( nout, fmt = 9995 )nc, sname, trans, m, n, kl, ku,
755 $ alpha, lda, incx, beta, incy
761 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
763 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
764 $
'ANGED INCORRECTLY *******' )
765 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
766 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
767 $
' - SUSPECT *******' )
768 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
769 9995
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', 4( i3,
',' ),
'(',
770 $ f4.1,
',', f4.1,
'), A,', i3,
', X,', i2,
',(', f4.1,
',',
771 $ f4.1,
'), Y,', i2,
') .' )
772 9994
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', 2( i3,
',' ),
'(',
773 $ f4.1,
',', f4.1,
'), A,', i3,
', X,', i2,
',(', f4.1,
',',
774 $ f4.1,
'), Y,', i2,
') .' )
775 9993
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
subroutine zgbmv(TRANS, M, N, KL, KU, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
ZGBMV
subroutine zgemv(TRANS, M, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
ZGEMV
subroutine zmvch(TRANS, M, N, ALPHA, A, NMAX, X, INCX, BETA, Y, INCY, YT, G, YY, EPS, ERR, FATAL, NOUT, MV)
logical function lzeres(TYPE, UPLO, M, N, AA, AS, LDA)
subroutine zmake(TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL, KU, RESET, TRANSL)
logical function lze(RI, RJ, LR)