476 COMPLEX*16 zero, half
477 parameter ( zero = ( 0.0d0, 0.0d0 ),
478 $ half = ( 0.5d0, 0.0d0 ) )
479 DOUBLE PRECISION rzero
480 parameter ( rzero = 0.0d0 )
482 DOUBLE PRECISION eps, thresh
483 INTEGER incmax, nalf, nbet, nidim, ninc, nkb, nmax,
485 LOGICAL fatal, rewi, trace
488 COMPLEX*16 a( nmax, nmax ), aa( nmax*nmax ), alf( nalf ),
489 $ as( nmax*nmax ), bet( nbet ), x( nmax ),
490 $ xs( nmax*incmax ), xx( nmax*incmax ),
491 $ y( nmax ), ys( nmax*incmax ), yt( nmax ),
493 DOUBLE PRECISION g( nmax )
494 INTEGER idim( nidim ), inc( ninc ), kb( nkb )
496 COMPLEX*16 alpha, als, beta, bls, transl
497 DOUBLE PRECISION err, errmax
498 INTEGER i, ia, ib, ic, iku, im, in, incx, incxs, incy,
499 $ incys, ix, iy, kl, kls, ku, kus, laa, lda,
500 $ ldas, lx, ly, m, ml, ms, n, nargs, nc, nd, nk,
502 LOGICAL banded, full, null, reset, same, tran
503 CHARACTER*1 trans, transs
514 INTRINSIC abs, max, min
519 COMMON /infoc/infot, noutc, ok
523 full = sname( 9: 9 ).EQ.
'e'
524 banded = sname( 9: 9 ).EQ.
'b'
528 ELSE IF( banded )
THEN
542 $ m = max( n - nd, 0 )
544 $ m = min( n + nd, nmax )
554 kl = max( ku - 1, 0 )
571 null = n.LE.0.OR.m.LE.0
576 CALL zmake( sname( 8: 9 ),
' ',
' ', m, n, a, nmax, aa,
577 $ lda, kl, ku, reset, transl )
580 trans = ich( ic: ic )
581 IF (trans.EQ.
'N')
THEN
582 ctrans =
' CblasNoTrans'
583 ELSE IF (trans.EQ.
'T')
THEN
584 ctrans =
' CblasTrans'
586 ctrans =
'CblasConjTrans'
588 tran = trans.EQ.
'T'.OR.trans.EQ.
'C'
605 CALL zmake(
'ge',
' ',
' ', 1, nl, x, 1, xx,
606 $ abs( incx ), 0, nl - 1, reset, transl )
609 xx( 1 + abs( incx )*( nl/2 - 1 ) ) = zero
625 CALL zmake(
'ge',
' ',
' ', 1, ml, y, 1,
626 $ yy, abs( incy ), 0, ml - 1,
658 $
WRITE( ntra, fmt = 9994 )nc, sname,
659 $ ctrans, m, n, alpha, lda, incx, beta,
663 CALL czgemv( iorder, trans, m, n,
664 $ alpha, aa, lda, xx, incx,
666 ELSE IF( banded )
THEN
668 $
WRITE( ntra, fmt = 9995 )nc, sname,
669 $ ctrans, m, n, kl, ku, alpha, lda,
673 CALL czgbmv( iorder, trans, m, n, kl,
674 $ ku, alpha, aa, lda, xx,
675 $ incx, beta, yy, incy )
681 WRITE( nout, fmt = 9993 )
689 isame( 1 ) = trans.EQ.transs
693 isame( 4 ) = als.EQ.alpha
694 isame( 5 ) =
lze( as, aa, laa )
695 isame( 6 ) = ldas.EQ.lda
696 isame( 7 ) =
lze( xs, xx, lx )
697 isame( 8 ) = incxs.EQ.incx
698 isame( 9 ) = bls.EQ.beta
700 isame( 10 ) =
lze( ys, yy, ly )
702 isame( 10 ) =
lzeres(
'ge',
' ', 1,
706 isame( 11 ) = incys.EQ.incy
707 ELSE IF( banded )
THEN
708 isame( 4 ) = kls.EQ.kl
709 isame( 5 ) = kus.EQ.ku
710 isame( 6 ) = als.EQ.alpha
711 isame( 7 ) =
lze( as, aa, laa )
712 isame( 8 ) = ldas.EQ.lda
713 isame( 9 ) =
lze( xs, xx, lx )
714 isame( 10 ) = incxs.EQ.incx
715 isame( 11 ) = bls.EQ.beta
717 isame( 12 ) =
lze( ys, yy, ly )
719 isame( 12 ) =
lzeres(
'ge',
' ', 1,
723 isame( 13 ) = incys.EQ.incy
731 same = same.AND.isame( i )
732 IF( .NOT.isame( i ) )
733 $
WRITE( nout, fmt = 9998 )i
744 CALL zmvch( trans, m, n, alpha, a,
745 $ nmax, x, incx, beta, y,
746 $ incy, yt, g, yy, eps, err,
747 $ fatal, nout, .true. )
748 errmax = max( errmax, err )
778 IF( errmax.LT.thresh )
THEN
779 WRITE( nout, fmt = 9999 )sname, nc
781 WRITE( nout, fmt = 9997 )sname, nc, errmax
786 WRITE( nout, fmt = 9996 )sname
788 WRITE( nout, fmt = 9994 )nc, sname, ctrans, m, n, alpha, lda,
790 ELSE IF( banded )
THEN
791 WRITE( nout, fmt = 9995 )nc, sname, ctrans, m, n, kl, ku,
792 $ alpha, lda, incx, beta, incy
798 9999
FORMAT(
' ',a12,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
800 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
801 $
'ANGED INCORRECTLY *******' )
802 9997
FORMAT(
' ',a12,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
803 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
804 $
' - SUSPECT *******' )
805 9996
FORMAT(
' ******* ',a12,
' FAILED ON CALL NUMBER:' )
806 9995
FORMAT( 1x, i6,
': ',a12,
'(', a14,
',', 4( i3,
',' ),
'(',
807 $ f4.1,
',', f4.1,
'), A,',/ 10x, i3,
', X,', i2,
',(',
808 $ f4.1,
',', f4.1,
'), Y,', i2,
') .' )
809 9994
FORMAT( 1x, i6,
': ',a12,
'(', a14,
',', 2( i3,
',' ),
'(',
810 $ f4.1,
',', f4.1,
'), A,',/ 10x, i3,
', X,', i2,
',(',
811 $ f4.1,
',', f4.1,
'), Y,', i2,
') .' )
812 9993
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
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)
subroutine zmvch(TRANS, M, N, ALPHA, A, NMAX, X, INCX, BETA, Y, INCY, YT, G, YY, EPS, ERR, FATAL, NOUT, MV)