449 parameter( zero = ( 0.0, 0.0 ), half = ( 0.5, 0.0 ) )
451 parameter( rzero = 0.0 )
454 INTEGER INCMAX, NALF, NBET, NIDIM, NINC, NKB, NMAX,
456 LOGICAL FATAL, REWI, TRACE
459 COMPLEX A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
460 $ AS( NMAX*NMAX ), BET( NBET ), X( NMAX ),
461 $ XS( NMAX*INCMAX ), XX( NMAX*INCMAX ),
462 $ Y( NMAX ), YS( NMAX*INCMAX ), YT( NMAX ),
465 INTEGER IDIM( NIDIM ), INC( NINC ), KB( NKB )
467 COMPLEX ALPHA, ALS, BETA, BLS, TRANSL
469 INTEGER I, IA, IB, IC, IKU, IM, IN, INCX, INCXS, INCY,
470 $ INCYS, IX, IY, KL, KLS, KU, KUS, LAA, LDA,
471 $ LDAS, LX, LY, M, ML, MS, N, NARGS, NC, ND, NK,
473 LOGICAL BANDED, FULL, NULL, RESET, SAME, TRAN
474 CHARACTER*1 TRANS, TRANSS
484 INTRINSIC abs, max, min
489 COMMON /infoc/infot, noutc, ok, lerr
493 full = sname( 3: 3 ).EQ.
'E'
494 banded = sname( 3: 3 ).EQ.
'B'
498 ELSE IF( banded )
THEN
512 $ m = max( n - nd, 0 )
514 $ m = min( n + nd, nmax )
524 kl = max( ku - 1, 0 )
541 null = n.LE.0.OR.m.LE.0
546 CALL cmake( sname( 2: 3 ),
' ',
' ', m, n, a, nmax, aa,
547 $ lda, kl, ku, reset, transl )
550 trans = ich( ic: ic )
551 tran = trans.EQ.
'T'.OR.trans.EQ.
'C'
568 CALL cmake(
'GE',
' ',
' ', 1, nl, x, 1, xx,
569 $ abs( incx ), 0, nl - 1, reset, transl )
572 xx( 1 + abs( incx )*( nl/2 - 1 ) ) = zero
588 CALL cmake(
'GE',
' ',
' ', 1, ml, y, 1,
589 $ yy, abs( incy ), 0, ml - 1,
621 $
WRITE( ntra, fmt = 9994 )nc, sname,
622 $ trans, m, n, alpha, lda, incx, beta,
626 CALL cgemv( trans, m, n, alpha, aa,
627 $ lda, xx, incx, beta, yy,
629 ELSE IF( banded )
THEN
631 $
WRITE( ntra, fmt = 9995 )nc, sname,
632 $ trans, m, n, kl, ku, alpha, lda,
636 CALL cgbmv( trans, m, n, kl, ku, alpha,
637 $ aa, lda, xx, incx, beta,
644 WRITE( nout, fmt = 9993 )
651 isame( 1 ) = trans.EQ.transs
655 isame( 4 ) = als.EQ.alpha
656 isame( 5 ) =
lce( as, aa, laa )
657 isame( 6 ) = ldas.EQ.lda
658 isame( 7 ) =
lce( xs, xx, lx )
659 isame( 8 ) = incxs.EQ.incx
660 isame( 9 ) = bls.EQ.beta
662 isame( 10 ) =
lce( ys, yy, ly )
664 isame( 10 ) =
lceres(
'GE',
' ', 1,
668 isame( 11 ) = incys.EQ.incy
669 ELSE IF( banded )
THEN
670 isame( 4 ) = kls.EQ.kl
671 isame( 5 ) = kus.EQ.ku
672 isame( 6 ) = als.EQ.alpha
673 isame( 7 ) =
lce( as, aa, laa )
674 isame( 8 ) = ldas.EQ.lda
675 isame( 9 ) =
lce( xs, xx, lx )
676 isame( 10 ) = incxs.EQ.incx
677 isame( 11 ) = bls.EQ.beta
679 isame( 12 ) =
lce( ys, yy, ly )
681 isame( 12 ) =
lceres(
'GE',
' ', 1,
685 isame( 13 ) = incys.EQ.incy
693 same = same.AND.isame( i )
694 IF( .NOT.isame( i ) )
695 $
WRITE( nout, fmt = 9998 )i
706 CALL cmvch( trans, m, n, alpha, a,
707 $ nmax, x, incx, beta, y,
708 $ incy, yt, g, yy, eps, err,
709 $ fatal, nout, .true. )
710 errmax = max( errmax, err )
739 IF( errmax.LT.thresh )
THEN
740 WRITE( nout, fmt = 9999 )sname, nc
742 WRITE( nout, fmt = 9997 )sname, nc, errmax
747 WRITE( nout, fmt = 9996 )sname
749 WRITE( nout, fmt = 9994 )nc, sname, trans, m, n, alpha, lda,
751 ELSE IF( banded )
THEN
752 WRITE( nout, fmt = 9995 )nc, sname, trans, m, n, kl, ku,
753 $ alpha, lda, incx, beta, incy
759 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
761 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
762 $
'ANGED INCORRECTLY *******' )
763 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
764 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
765 $
' - SUSPECT *******' )
766 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
767 9995
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', 4( i3,
',' ),
'(',
768 $ f4.1,
',', f4.1,
'), A,', i3,
', X,', i2,
',(', f4.1,
',',
769 $ f4.1,
'), Y,', i2,
') .' )
770 9994
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', 2( i3,
',' ),
'(',
771 $ f4.1,
',', f4.1,
'), A,', i3,
', X,', i2,
',(', f4.1,
',',
772 $ f4.1,
'), Y,', i2,
') .' )
773 9993
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
subroutine cmake(TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL, KU, RESET, TRANSL)
logical function lce(RI, RJ, LR)
logical function lceres(TYPE, UPLO, M, N, AA, AS, LDA)
subroutine cmvch(TRANS, M, N, ALPHA, A, NMAX, X, INCX, BETA, Y, INCY, YT, G, YY, EPS, ERR, FATAL, NOUT, MV)
subroutine cgemv(TRANS, M, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
CGEMV
subroutine cgbmv(TRANS, M, N, KL, KU, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
CGBMV