1509 COMPLEX*16 zero, half, one
1510 parameter ( zero = ( 0.0d0, 0.0d0 ),
1511 $ half = ( 0.5d0, 0.0d0 ),
1512 $ one = ( 1.0d0, 0.0d0 ) )
1513 DOUBLE PRECISION rzero
1514 parameter ( rzero = 0.0d0 )
1516 DOUBLE PRECISION eps, thresh
1517 INTEGER incmax, nalf, nidim, ninc, nmax, nout, ntra
1518 LOGICAL fatal, rewi, trace
1521 COMPLEX*16 a( nmax, nmax ), aa( nmax*nmax ), alf( nalf ),
1522 $ as( nmax*nmax ), x( nmax ), xs( nmax*incmax ),
1523 $ xx( nmax*incmax ), y( nmax ),
1524 $ ys( nmax*incmax ), yt( nmax ),
1525 $ yy( nmax*incmax ), z( nmax )
1526 DOUBLE PRECISION g( nmax )
1527 INTEGER idim( nidim ), inc( ninc )
1529 COMPLEX*16 alpha, als, transl
1530 DOUBLE PRECISION err, errmax
1531 INTEGER i, ia, im, in, incx, incxs, incy, incys, ix,
1532 $ iy, j, laa, lda, ldas, lx, ly, m, ms, n, nargs,
1534 LOGICAL conj, null, reset, same
1544 INTRINSIC abs, dconjg, max, min
1546 INTEGER infot, noutc
1549 COMMON /infoc/infot, noutc, ok, lerr
1551 conj = sname( 5: 5 ).EQ.
'C'
1559 DO 120 in = 1, nidim
1565 $ m = max( n - nd, 0 )
1567 $ m = min( n + nd, nmax )
1577 null = n.LE.0.OR.m.LE.0
1586 CALL zmake(
'GE',
' ',
' ', 1, m, x, 1, xx, abs( incx ),
1587 $ 0, m - 1, reset, transl )
1590 xx( 1 + abs( incx )*( m/2 - 1 ) ) = zero
1600 CALL zmake(
'GE',
' ',
' ', 1, n, y, 1, yy,
1601 $ abs( incy ), 0, n - 1, reset, transl )
1604 yy( 1 + abs( incy )*( n/2 - 1 ) ) = zero
1613 CALL zmake( sname( 2: 3 ),
' ',
' ', m, n, a, nmax,
1614 $ aa, lda, m - 1, n - 1, reset, transl )
1639 $
WRITE( ntra, fmt = 9994 )nc, sname, m, n,
1640 $ alpha, incx, incy, lda
1644 CALL zgerc( m, n, alpha, xx, incx, yy, incy, aa,
1649 CALL zgeru( m, n, alpha, xx, incx, yy, incy, aa,
1656 WRITE( nout, fmt = 9993 )
1663 isame( 1 ) = ms.EQ.m
1664 isame( 2 ) = ns.EQ.n
1665 isame( 3 ) = als.EQ.alpha
1666 isame( 4 ) =
lze( xs, xx, lx )
1667 isame( 5 ) = incxs.EQ.incx
1668 isame( 6 ) =
lze( ys, yy, ly )
1669 isame( 7 ) = incys.EQ.incy
1671 isame( 8 ) =
lze( as, aa, laa )
1673 isame( 8 ) =
lzeres(
'GE',
' ', m, n, as, aa,
1676 isame( 9 ) = ldas.EQ.lda
1682 same = same.AND.isame( i )
1683 IF( .NOT.isame( i ) )
1684 $
WRITE( nout, fmt = 9998 )i
1701 z( i ) = x( m - i + 1 )
1708 w( 1 ) = y( n - j + 1 )
1711 $ w( 1 ) = dconjg( w( 1 ) )
1712 CALL zmvch(
'N', m, 1, alpha, z, nmax, w, 1,
1713 $ one, a( 1, j ), 1, yt, g,
1714 $ aa( 1 + ( j - 1 )*lda ), eps,
1715 $ err, fatal, nout, .true. )
1716 errmax = max( errmax, err )
1738 IF( errmax.LT.thresh )
THEN
1739 WRITE( nout, fmt = 9999 )sname, nc
1741 WRITE( nout, fmt = 9997 )sname, nc, errmax
1746 WRITE( nout, fmt = 9995 )j
1749 WRITE( nout, fmt = 9996 )sname
1750 WRITE( nout, fmt = 9994 )nc, sname, m, n, alpha, incx, incy, lda
1755 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
1757 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
1758 $
'ANGED INCORRECTLY *******' )
1759 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
1760 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
1761 $
' - SUSPECT *******' )
1762 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
1763 9995
FORMAT(
' THESE ARE THE RESULTS FOR COLUMN ', i3 )
1764 9994
FORMAT( 1x, i6,
': ', a6,
'(', 2( i3,
',' ),
'(', f4.1,
',', f4.1,
1765 $
'), X,', i2,
', Y,', i2,
', A,', i3,
') ',
1767 9993
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
logical function lzeres(TYPE, UPLO, M, N, AA, AS, LDA)
subroutine zgerc(M, N, ALPHA, X, INCX, Y, INCY, A, LDA)
ZGERC
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)
subroutine zgeru(M, N, ALPHA, X, INCX, Y, INCY, A, LDA)
ZGERU