1482 DOUBLE PRECISION ZERO, HALF, ONE
1483 parameter( zero = 0.0d0, half = 0.5d0, one = 1.0d0 )
1485 DOUBLE PRECISION EPS, THRESH
1486 INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA
1487 LOGICAL FATAL, REWI, TRACE
1490 DOUBLE PRECISION A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
1491 $ AS( NMAX*NMAX ), G( NMAX ), X( NMAX ),
1492 $ XS( NMAX*INCMAX ), XX( NMAX*INCMAX ),
1493 $ Y( NMAX ), YS( NMAX*INCMAX ), YT( NMAX ),
1494 $ YY( NMAX*INCMAX ), Z( NMAX )
1495 INTEGER IDIM( NIDIM ), INC( NINC )
1497 DOUBLE PRECISION ALPHA, ALS, ERR, ERRMAX, TRANSL
1498 INTEGER I, IA, IM, IN, INCX, INCXS, INCY, INCYS, IX,
1499 $ IY, J, LAA, LDA, LDAS, LX, LY, M, MS, N, NARGS,
1501 LOGICAL NULL, RESET, SAME
1503 DOUBLE PRECISION W( 1 )
1511 INTRINSIC abs, max, min
1513 INTEGER INFOT, NOUTC
1516 COMMON /infoc/infot, noutc, ok, lerr
1525 DO 120 in = 1, nidim
1531 $ m = max( n - nd, 0 )
1533 $ m = min( n + nd, nmax )
1543 null = n.LE.0.OR.m.LE.0
1552 CALL dmake(
'GE',
' ',
' ', 1, m, x, 1, xx, abs( incx ),
1553 $ 0, m - 1, reset, transl )
1556 xx( 1 + abs( incx )*( m/2 - 1 ) ) = zero
1566 CALL dmake(
'GE',
' ',
' ', 1, n, y, 1, yy,
1567 $ abs( incy ), 0, n - 1, reset, transl )
1570 yy( 1 + abs( incy )*( n/2 - 1 ) ) = zero
1579 CALL dmake( sname( 2: 3 ),
' ',
' ', m, n, a, nmax,
1580 $ aa, lda, m - 1, n - 1, reset, transl )
1605 $
WRITE( ntra, fmt = 9994 )nc, sname, m, n,
1606 $ alpha, incx, incy, lda
1609 CALL dger( m, n, alpha, xx, incx, yy, incy, aa,
1615 WRITE( nout, fmt = 9993 )
1622 isame( 1 ) = ms.EQ.m
1623 isame( 2 ) = ns.EQ.n
1624 isame( 3 ) = als.EQ.alpha
1625 isame( 4 ) =
lde( xs, xx, lx )
1626 isame( 5 ) = incxs.EQ.incx
1627 isame( 6 ) =
lde( ys, yy, ly )
1628 isame( 7 ) = incys.EQ.incy
1630 isame( 8 ) =
lde( as, aa, laa )
1632 isame( 8 ) =
lderes(
'GE',
' ', m, n, as, aa,
1635 isame( 9 ) = ldas.EQ.lda
1641 same = same.AND.isame( i )
1642 IF( .NOT.isame( i ) )
1643 $
WRITE( nout, fmt = 9998 )i
1660 z( i ) = x( m - i + 1 )
1667 w( 1 ) = y( n - j + 1 )
1669 CALL dmvch(
'N', m, 1, alpha, z, nmax, w, 1,
1670 $ one, a( 1, j ), 1, yt, g,
1671 $ aa( 1 + ( j - 1 )*lda ), eps,
1672 $ err, fatal, nout, .true. )
1673 errmax = max( errmax, err )
1695 IF( errmax.LT.thresh )
THEN
1696 WRITE( nout, fmt = 9999 )sname, nc
1698 WRITE( nout, fmt = 9997 )sname, nc, errmax
1703 WRITE( nout, fmt = 9995 )j
1706 WRITE( nout, fmt = 9996 )sname
1707 WRITE( nout, fmt = 9994 )nc, sname, m, n, alpha, incx, incy, lda
1712 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
1714 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
1715 $
'ANGED INCORRECTLY *******' )
1716 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
1717 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
1718 $
' - SUSPECT *******' )
1719 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
1720 9995
FORMAT(
' THESE ARE THE RESULTS FOR COLUMN ', i3 )
1721 9994
FORMAT( 1x, i6,
': ', a6,
'(', 2( i3,
',' ), f4.1,
', X,', i2,
1722 $
', Y,', i2,
', A,', i3,
') .' )
1723 9993
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
subroutine dmake(TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL, KU, RESET, TRANSL)
logical function lde(RI, RJ, LR)
logical function lderes(TYPE, UPLO, M, N, AA, AS, LDA)
subroutine dmvch(TRANS, M, N, ALPHA, A, NMAX, X, INCX, BETA, Y, INCY, YT, G, YY, EPS, ERR, FATAL, NOUT, MV)
subroutine dger(M, N, ALPHA, X, INCX, Y, INCY, A, LDA)
DGER