452 parameter ( zero = ( 0.0, 0.0 ), half = ( 0.5, 0.0 ) )
454 parameter ( rzero = 0.0 )
457 INTEGER incmax, nalf, nbet, nidim, ninc, nkb, nmax,
459 LOGICAL fatal, rewi, trace
462 COMPLEX a( nmax, nmax ), aa( nmax*nmax ), alf( nalf ),
463 $ as( nmax*nmax ), bet( nbet ), x( nmax ),
464 $ xs( nmax*incmax ), xx( nmax*incmax ),
465 $ y( nmax ), ys( nmax*incmax ), yt( nmax ),
468 INTEGER idim( nidim ), inc( ninc ), kb( nkb )
470 COMPLEX alpha, als, beta, bls, transl
472 INTEGER i, ia, ib, ic, iku, im, in, incx, incxs, incy,
473 $ incys, ix, iy, kl, kls, ku, kus, laa, lda,
474 $ ldas, lx, ly, m, ml, ms, n, nargs, nc, nd, nk,
476 LOGICAL banded, full, null, reset, same, tran
477 CHARACTER*1 trans, transs
487 INTRINSIC abs, max, min
492 COMMON /infoc/infot, noutc, ok, lerr
496 full = sname( 3: 3 ).EQ.
'E'
497 banded = sname( 3: 3 ).EQ.
'B'
501 ELSE IF( banded )
THEN
515 $ m = max( n - nd, 0 )
517 $ m = min( n + nd, nmax )
527 kl = max( ku - 1, 0 )
544 null = n.LE.0.OR.m.LE.0
549 CALL cmake( sname( 2: 3 ),
' ',
' ', m, n, a, nmax, aa,
550 $ lda, kl, ku, reset, transl )
553 trans = ich( ic: ic )
554 tran = trans.EQ.
'T'.OR.trans.EQ.
'C'
571 CALL cmake(
'GE',
' ',
' ', 1, nl, x, 1, xx,
572 $ abs( incx ), 0, nl - 1, reset, transl )
575 xx( 1 + abs( incx )*( nl/2 - 1 ) ) = zero
591 CALL cmake(
'GE',
' ',
' ', 1, ml, y, 1,
592 $ yy, abs( incy ), 0, ml - 1,
624 $
WRITE( ntra, fmt = 9994 )nc, sname,
625 $ trans, m, n, alpha, lda, incx, beta,
629 CALL cgemv( trans, m, n, alpha, aa,
630 $ lda, xx, incx, beta, yy,
632 ELSE IF( banded )
THEN
634 $
WRITE( ntra, fmt = 9995 )nc, sname,
635 $ trans, m, n, kl, ku, alpha, lda,
639 CALL cgbmv( trans, m, n, kl, ku, alpha,
640 $ aa, lda, xx, incx, beta,
647 WRITE( nout, fmt = 9993 )
654 isame( 1 ) = trans.EQ.transs
658 isame( 4 ) = als.EQ.alpha
659 isame( 5 ) =
lce( as, aa, laa )
660 isame( 6 ) = ldas.EQ.lda
661 isame( 7 ) =
lce( xs, xx, lx )
662 isame( 8 ) = incxs.EQ.incx
663 isame( 9 ) = bls.EQ.beta
665 isame( 10 ) =
lce( ys, yy, ly )
667 isame( 10 ) =
lceres(
'GE',
' ', 1,
671 isame( 11 ) = incys.EQ.incy
672 ELSE IF( banded )
THEN
673 isame( 4 ) = kls.EQ.kl
674 isame( 5 ) = kus.EQ.ku
675 isame( 6 ) = als.EQ.alpha
676 isame( 7 ) =
lce( as, aa, laa )
677 isame( 8 ) = ldas.EQ.lda
678 isame( 9 ) =
lce( xs, xx, lx )
679 isame( 10 ) = incxs.EQ.incx
680 isame( 11 ) = bls.EQ.beta
682 isame( 12 ) =
lce( ys, yy, ly )
684 isame( 12 ) =
lceres(
'GE',
' ', 1,
688 isame( 13 ) = incys.EQ.incy
696 same = same.AND.isame( i )
697 IF( .NOT.isame( i ) )
698 $
WRITE( nout, fmt = 9998 )i
709 CALL cmvch( trans, m, n, alpha, a,
710 $ nmax, x, incx, beta, y,
711 $ incy, yt, g, yy, eps, err,
712 $ fatal, nout, .true. )
713 errmax = max( errmax, err )
742 IF( errmax.LT.thresh )
THEN
743 WRITE( nout, fmt = 9999 )sname, nc
745 WRITE( nout, fmt = 9997 )sname, nc, errmax
750 WRITE( nout, fmt = 9996 )sname
752 WRITE( nout, fmt = 9994 )nc, sname, trans, m, n, alpha, lda,
754 ELSE IF( banded )
THEN
755 WRITE( nout, fmt = 9995 )nc, sname, trans, m, n, kl, ku,
756 $ alpha, lda, incx, beta, incy
762 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
764 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
765 $
'ANGED INCORRECTLY *******' )
766 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
767 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
768 $
' - SUSPECT *******' )
769 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
770 9995
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', 4( i3,
',' ),
'(',
771 $ f4.1,
',', f4.1,
'), A,', i3,
', X,', i2,
',(', f4.1,
',',
772 $ f4.1,
'), Y,', i2,
') .' )
773 9994
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', 2( i3,
',' ),
'(',
774 $ f4.1,
',', f4.1,
'), A,', i3,
', X,', i2,
',(', f4.1,
',',
775 $ f4.1,
'), Y,', i2,
') .' )
776 9993
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
subroutine cgbmv(TRANS, M, N, KL, KU, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
CGBMV
subroutine cgemv(TRANS, M, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
CGEMV
subroutine cmvch(TRANS, M, N, ALPHA, A, NMAX, X, INCX, BETA, Y, INCY, YT, G, YY, EPS, ERR, FATAL, NOUT, MV)
logical function lce(RI, RJ, LR)
subroutine cmake(TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL, KU, RESET, TRANSL)
logical function lceres(TYPE, UPLO, M, N, AA, AS, LDA)