452 COMPLEX*16 ZERO, HALF
453 parameter( zero = ( 0.0d0, 0.0d0 ),
454 $ half = ( 0.5d0, 0.0d0 ) )
455 DOUBLE PRECISION RZERO
456 parameter( rzero = 0.0d0 )
458 DOUBLE PRECISION EPS, THRESH
459 INTEGER INCMAX, NALF, NBET, NIDIM, NINC, NKB, NMAX,
461 LOGICAL FATAL, REWI, TRACE
464 COMPLEX*16 A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
465 $ AS( NMAX*NMAX ), BET( NBET ), X( NMAX ),
466 $ XS( NMAX*INCMAX ), XX( NMAX*INCMAX ),
467 $ Y( NMAX ), YS( NMAX*INCMAX ), YT( NMAX ),
469 DOUBLE PRECISION G( NMAX )
470 INTEGER IDIM( NIDIM ), INC( NINC ), KB( NKB )
472 COMPLEX*16 ALPHA, ALS, BETA, BLS, TRANSL
473 DOUBLE PRECISION ERR, ERRMAX
474 INTEGER I, IA, IB, IC, IKU, IM, IN, INCX, INCXS, INCY,
475 $ INCYS, IX, IY, KL, KLS, KU, KUS, LAA, LDA,
476 $ LDAS, LX, LY, M, ML, MS, N, NARGS, NC, ND, NK,
478 LOGICAL BANDED, FULL, NULL, RESET, SAME, TRAN
479 CHARACTER*1 TRANS, TRANSS
489 INTRINSIC abs, max, min
494 COMMON /infoc/infot, noutc, ok, lerr
498 full = sname( 3: 3 ).EQ.
'E'
499 banded = sname( 3: 3 ).EQ.
'B'
503 ELSE IF( banded )
THEN
517 $ m = max( n - nd, 0 )
519 $ m = min( n + nd, nmax )
529 kl = max( ku - 1, 0 )
546 null = n.LE.0.OR.m.LE.0
551 CALL zmake( sname( 2: 3 ),
' ',
' ', m, n, a, nmax, aa,
552 $ lda, kl, ku, reset, transl )
555 trans = ich( ic: ic )
556 tran = trans.EQ.
'T'.OR.trans.EQ.
'C'
573 CALL zmake(
'GE',
' ',
' ', 1, nl, x, 1, xx,
574 $ abs( incx ), 0, nl - 1, reset, transl )
577 xx( 1 + abs( incx )*( nl/2 - 1 ) ) = zero
593 CALL zmake(
'GE',
' ',
' ', 1, ml, y, 1,
594 $ yy, abs( incy ), 0, ml - 1,
626 $
WRITE( ntra, fmt = 9994 )nc, sname,
627 $ trans, m, n, alpha, lda, incx, beta,
631 CALL zgemv( trans, m, n, alpha, aa,
632 $ lda, xx, incx, beta, yy,
634 ELSE IF( banded )
THEN
636 $
WRITE( ntra, fmt = 9995 )nc, sname,
637 $ trans, m, n, kl, ku, alpha, lda,
641 CALL zgbmv( trans, m, n, kl, ku, alpha,
642 $ aa, lda, xx, incx, beta,
649 WRITE( nout, fmt = 9993 )
656 isame( 1 ) = trans.EQ.transs
660 isame( 4 ) = als.EQ.alpha
661 isame( 5 ) =
lze( as, aa, laa )
662 isame( 6 ) = ldas.EQ.lda
663 isame( 7 ) =
lze( xs, xx, lx )
664 isame( 8 ) = incxs.EQ.incx
665 isame( 9 ) = bls.EQ.beta
667 isame( 10 ) =
lze( ys, yy, ly )
669 isame( 10 ) =
lzeres(
'GE',
' ', 1,
673 isame( 11 ) = incys.EQ.incy
674 ELSE IF( banded )
THEN
675 isame( 4 ) = kls.EQ.kl
676 isame( 5 ) = kus.EQ.ku
677 isame( 6 ) = als.EQ.alpha
678 isame( 7 ) =
lze( as, aa, laa )
679 isame( 8 ) = ldas.EQ.lda
680 isame( 9 ) =
lze( xs, xx, lx )
681 isame( 10 ) = incxs.EQ.incx
682 isame( 11 ) = bls.EQ.beta
684 isame( 12 ) =
lze( ys, yy, ly )
686 isame( 12 ) =
lzeres(
'GE',
' ', 1,
690 isame( 13 ) = incys.EQ.incy
698 same = same.AND.isame( i )
699 IF( .NOT.isame( i ) )
700 $
WRITE( nout, fmt = 9998 )i
711 CALL zmvch( trans, m, n, alpha, a,
712 $ nmax, x, incx, beta, y,
713 $ incy, yt, g, yy, eps, err,
714 $ fatal, nout, .true. )
715 errmax = max( errmax, err )
744 IF( errmax.LT.thresh )
THEN
745 WRITE( nout, fmt = 9999 )sname, nc
747 WRITE( nout, fmt = 9997 )sname, nc, errmax
752 WRITE( nout, fmt = 9996 )sname
754 WRITE( nout, fmt = 9994 )nc, sname, trans, m, n, alpha, lda,
756 ELSE IF( banded )
THEN
757 WRITE( nout, fmt = 9995 )nc, sname, trans, m, n, kl, ku,
758 $ alpha, lda, incx, beta, incy
764 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
766 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
767 $
'ANGED INCORRECTLY *******' )
768 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
769 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
770 $
' - SUSPECT *******' )
771 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
772 9995
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', 4( i3,
',' ),
'(',
773 $ f4.1,
',', f4.1,
'), A,', i3,
', X,', i2,
',(', f4.1,
',',
774 $ f4.1,
'), Y,', i2,
') .' )
775 9994
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',', 2( i3,
',' ),
'(',
776 $ f4.1,
',', f4.1,
'), A,', i3,
', X,', i2,
',(', f4.1,
',',
777 $ f4.1,
'), Y,', i2,
') .' )
778 9993
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',