1506 COMPLEX*16 ZERO, HALF, ONE
1507 parameter( zero = ( 0.0d0, 0.0d0 ),
1508 $ half = ( 0.5d0, 0.0d0 ),
1509 $ one = ( 1.0d0, 0.0d0 ) )
1510 DOUBLE PRECISION RZERO
1511 parameter( rzero = 0.0d0 )
1513 DOUBLE PRECISION EPS, THRESH
1514 INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA
1515 LOGICAL FATAL, REWI, TRACE
1518 COMPLEX*16 A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
1519 $ AS( NMAX*NMAX ), X( NMAX ), XS( NMAX*INCMAX ),
1520 $ XX( NMAX*INCMAX ), Y( NMAX ),
1521 $ YS( NMAX*INCMAX ), YT( NMAX ),
1522 $ YY( NMAX*INCMAX ), Z( NMAX )
1523 DOUBLE PRECISION G( NMAX )
1524 INTEGER IDIM( NIDIM ), INC( NINC )
1526 COMPLEX*16 ALPHA, ALS, TRANSL
1527 DOUBLE PRECISION ERR, ERRMAX
1528 INTEGER I, IA, IM, IN, INCX, INCXS, INCY, INCYS, IX,
1529 $ IY, J, LAA, LDA, LDAS, LX, LY, M, MS, N, NARGS,
1531 LOGICAL CONJ, NULL, RESET, SAME
1541 INTRINSIC abs, dconjg, max, min
1543 INTEGER INFOT, NOUTC
1546 COMMON /infoc/infot, noutc, ok, lerr
1548 conj = sname( 5: 5 ).EQ.
'C'
1556 DO 120 in = 1, nidim
1562 $ m = max( n - nd, 0 )
1564 $ m = min( n + nd, nmax )
1574 null = n.LE.0.OR.m.LE.0
1583 CALL zmake(
'GE',
' ',
' ', 1, m, x, 1, xx, abs( incx ),
1584 $ 0, m - 1, reset, transl )
1587 xx( 1 + abs( incx )*( m/2 - 1 ) ) = zero
1597 CALL zmake(
'GE',
' ',
' ', 1, n, y, 1, yy,
1598 $ abs( incy ), 0, n - 1, reset, transl )
1601 yy( 1 + abs( incy )*( n/2 - 1 ) ) = zero
1610 CALL zmake( sname( 2: 3 ),
' ',
' ', m, n, a, nmax,
1611 $ aa, lda, m - 1, n - 1, reset, transl )
1636 $
WRITE( ntra, fmt = 9994 )nc, sname, m, n,
1637 $ alpha, incx, incy, lda
1641 CALL zgerc( m, n, alpha, xx, incx, yy, incy, aa,
1646 CALL zgeru( m, n, alpha, xx, incx, yy, incy, aa,
1653 WRITE( nout, fmt = 9993 )
1660 isame( 1 ) = ms.EQ.m
1661 isame( 2 ) = ns.EQ.n
1662 isame( 3 ) = als.EQ.alpha
1663 isame( 4 ) =
lze( xs, xx, lx )
1664 isame( 5 ) = incxs.EQ.incx
1665 isame( 6 ) =
lze( ys, yy, ly )
1666 isame( 7 ) = incys.EQ.incy
1668 isame( 8 ) =
lze( as, aa, laa )
1670 isame( 8 ) =
lzeres(
'GE',
' ', m, n, as, aa,
1673 isame( 9 ) = ldas.EQ.lda
1679 same = same.AND.isame( i )
1680 IF( .NOT.isame( i ) )
1681 $
WRITE( nout, fmt = 9998 )i
1698 z( i ) = x( m - i + 1 )
1705 w( 1 ) = y( n - j + 1 )
1708 $ w( 1 ) = dconjg( w( 1 ) )
1709 CALL zmvch(
'N', m, 1, alpha, z, nmax, w, 1,
1710 $ one, a( 1, j ), 1, yt, g,
1711 $ aa( 1 + ( j - 1 )*lda ), eps,
1712 $ err, fatal, nout, .true. )
1713 errmax = max( errmax, err )
1735 IF( errmax.LT.thresh )
THEN
1736 WRITE( nout, fmt = 9999 )sname, nc
1738 WRITE( nout, fmt = 9997 )sname, nc, errmax
1743 WRITE( nout, fmt = 9995 )j
1746 WRITE( nout, fmt = 9996 )sname
1747 WRITE( nout, fmt = 9994 )nc, sname, m, n, alpha, incx, incy, lda
1752 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
1754 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
1755 $
'ANGED INCORRECTLY *******' )
1756 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
1757 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
1758 $
' - SUSPECT *******' )
1759 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
1760 9995
FORMAT(
' THESE ARE THE RESULTS FOR COLUMN ', i3 )
1761 9994
FORMAT( 1x, i6,
': ', a6,
'(', 2( i3,
',' ),
'(', f4.1,
',', f4.1,
1762 $
'), X,', i2,
', Y,', i2,
', A,', i3,
') ',
1764 9993
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
subroutine zgeru(M, N, ALPHA, X, INCX, Y, INCY, A, LDA)
ZGERU
subroutine zgerc(M, N, ALPHA, X, INCX, Y, INCY, A, LDA)
ZGERC
subroutine zmvch(TRANS, M, N, ALPHA, A, NMAX, X, INCX, BETA, Y, INCY, YT, G, YY, EPS, ERR, FATAL, NOUT, MV)
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)