477 parameter ( zero = ( 0.0, 0.0 ), half = ( 0.5, 0.0 ) )
479 parameter ( rzero = 0.0 )
482 INTEGER incmax, nalf, nbet, nidim, ninc, nkb, nmax,
484 LOGICAL fatal, rewi, trace
487 COMPLEX a( nmax, nmax ), aa( nmax*nmax ), alf( nalf ),
488 $ as( nmax*nmax ), bet( nbet ), x( nmax ),
489 $ xs( nmax*incmax ), xx( nmax*incmax ),
490 $ y( nmax ), ys( nmax*incmax ), yt( nmax ),
493 INTEGER idim( nidim ), inc( ninc ), kb( nkb )
495 COMPLEX alpha, als, beta, bls, transl
497 INTEGER i, ia, ib, ic, iku, im, in, incx, incxs, incy,
498 $ incys, ix, iy, kl, kls, ku, kus, laa, lda,
499 $ ldas, lx, ly, m, ml, ms, n, nargs, nc, nd, nk,
501 LOGICAL banded, full, null, reset, same, tran
502 CHARACTER*1 trans, transs
513 INTRINSIC abs, max, min
518 COMMON /infoc/infot, noutc, ok
522 full = sname( 9: 9 ).EQ.
'e'
523 banded = sname( 9: 9 ).EQ.
'b'
527 ELSE IF( banded )
THEN
541 $ m = max( n - nd, 0 )
543 $ m = min( n + nd, nmax )
553 kl = max( ku - 1, 0 )
570 null = n.LE.0.OR.m.LE.0
575 CALL cmake( sname( 8: 9 ),
' ',
' ', m, n, a, nmax, aa,
576 $ lda, kl, ku, reset, transl )
579 trans = ich( ic: ic )
580 IF (trans.EQ.
'N')
THEN
581 ctrans =
' CblasNoTrans'
582 ELSE IF (trans.EQ.
'T')
THEN
583 ctrans =
' CblasTrans'
585 ctrans =
'CblasConjTrans'
587 tran = trans.EQ.
'T'.OR.trans.EQ.
'C'
604 CALL cmake(
'ge',
' ',
' ', 1, nl, x, 1, xx,
605 $ abs( incx ), 0, nl - 1, reset, transl )
608 xx( 1 + abs( incx )*( nl/2 - 1 ) ) = zero
624 CALL cmake(
'ge',
' ',
' ', 1, ml, y, 1,
625 $ yy, abs( incy ), 0, ml - 1,
657 $
WRITE( ntra, fmt = 9994 )nc, sname,
658 $ ctrans, m, n, alpha, lda, incx, beta,
662 CALL ccgemv( iorder, trans, m, n,
663 $ alpha, aa, lda, xx, incx,
665 ELSE IF( banded )
THEN
667 $
WRITE( ntra, fmt = 9995 )nc, sname,
668 $ ctrans, m, n, kl, ku, alpha, lda,
672 CALL ccgbmv( iorder, trans, m, n, kl,
673 $ ku, alpha, aa, lda, xx,
674 $ incx, beta, yy, incy )
680 WRITE( nout, fmt = 9993 )
688 isame( 1 ) = trans.EQ.transs
692 isame( 4 ) = als.EQ.alpha
693 isame( 5 ) =
lce( as, aa, laa )
694 isame( 6 ) = ldas.EQ.lda
695 isame( 7 ) =
lce( xs, xx, lx )
696 isame( 8 ) = incxs.EQ.incx
697 isame( 9 ) = bls.EQ.beta
699 isame( 10 ) =
lce( ys, yy, ly )
701 isame( 10 ) =
lceres(
'ge',
' ', 1,
705 isame( 11 ) = incys.EQ.incy
706 ELSE IF( banded )
THEN
707 isame( 4 ) = kls.EQ.kl
708 isame( 5 ) = kus.EQ.ku
709 isame( 6 ) = als.EQ.alpha
710 isame( 7 ) =
lce( as, aa, laa )
711 isame( 8 ) = ldas.EQ.lda
712 isame( 9 ) =
lce( xs, xx, lx )
713 isame( 10 ) = incxs.EQ.incx
714 isame( 11 ) = bls.EQ.beta
716 isame( 12 ) =
lce( ys, yy, ly )
718 isame( 12 ) =
lceres(
'ge',
' ', 1,
722 isame( 13 ) = incys.EQ.incy
730 same = same.AND.isame( i )
731 IF( .NOT.isame( i ) )
732 $
WRITE( nout, fmt = 9998 )i
743 CALL cmvch( trans, m, n, alpha, a,
744 $ nmax, x, incx, beta, y,
745 $ incy, yt, g, yy, eps, err,
746 $ fatal, nout, .true. )
747 errmax = max( errmax, err )
777 IF( errmax.LT.thresh )
THEN
778 WRITE( nout, fmt = 9999 )sname, nc
780 WRITE( nout, fmt = 9997 )sname, nc, errmax
785 WRITE( nout, fmt = 9996 )sname
787 WRITE( nout, fmt = 9994 )nc, sname, ctrans, m, n, alpha, lda,
789 ELSE IF( banded )
THEN
790 WRITE( nout, fmt = 9995 )nc, sname, ctrans, m, n, kl, ku,
791 $ alpha, lda, incx, beta, incy
797 9999
FORMAT(
' ',a12,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
799 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
800 $
'ANGED INCORRECTLY *******' )
801 9997
FORMAT(
' ',a12,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
802 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
803 $
' - SUSPECT *******' )
804 9996
FORMAT(
' ******* ',a12,
' FAILED ON CALL NUMBER:' )
805 9995
FORMAT( 1x, i6,
': ',a12,
'(', a14,
',', 4( i3,
',' ),
'(',
806 $ f4.1,
',', f4.1,
'), A,',/ 10x, i3,
', X,', i2,
',(',
807 $ f4.1,
',', f4.1,
'), Y,', i2,
') .' )
808 9994
FORMAT( 1x, i6,
': ',a12,
'(', a14,
',', 2( i3,
',' ),
'(',
809 $ f4.1,
',', f4.1,
'), A,',/ 10x, i3,
', X,', i2,
',(',
810 $ f4.1,
',', f4.1,
'), Y,', i2,
') .' )
811 9993
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
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)