130 SUBROUTINE dchktz( DOTYPE, NM, MVAL, NN, NVAL, THRESH, TSTERR, A,
131 $ COPYA, S, TAU, WORK, NOUT )
140 DOUBLE PRECISION THRESH
144 INTEGER MVAL( * ), NVAL( * )
145 DOUBLE PRECISION A( * ), COPYA( * ), S( * ),
146 $ tau( * ), work( * )
153 parameter( ntypes = 3 )
155 parameter( ntests = 3 )
156 DOUBLE PRECISION ONE, ZERO
157 parameter( one = 1.0d0, zero = 0.0d0 )
161 INTEGER I, IM, IMODE, IN, INFO, K, LDA, LWORK, M,
162 $ mnmin, mode, n, nerrs, nfail, nrun
166 INTEGER ISEED( 4 ), ISEEDY( 4 )
167 DOUBLE PRECISION RESULT( NTESTS )
170 DOUBLE PRECISION DLAMCH, DQRT12, DRZT01, DRZT02
171 EXTERNAL dlamch, dqrt12, drzt01, drzt02
183 INTEGER INFOT, IOUNIT
186 COMMON / infoc / infot, iounit, ok, lerr
187 COMMON / srnamc / srnamt
190 DATA iseedy / 1988, 1989, 1990, 1991 /
196 path( 1: 1 ) =
'Double precision'
202 iseed( i ) = iseedy( i )
204 eps = dlamch(
'Epsilon' )
209 $
CALL derrtz( path, nout )
225 lwork = max( 1, n*n+4*m+n, m*n+2*mnmin+4*n )
228 DO 50 imode = 1, ntypes
229 IF( .NOT.dotype( imode ) )
245 CALL dlaset(
'Full', m, n, zero, zero, a, lda )
250 CALL dlatms( m, n,
'Uniform', iseed,
251 $
'Nonsymmetric', s, imode,
252 $ one / eps, one, m, n,
'No packing', a,
254 CALL dgeqr2( m, n, a, lda, work, work( mnmin+1 ),
256 CALL dlaset(
'Lower', m-1, n, zero, zero, a( 2 ),
258 CALL dlaord(
'Decreasing', mnmin, s, 1 )
263 CALL dlacpy(
'All', m, n, a, lda, copya, lda )
269 CALL dtzrzf( m, n, a, lda, tau, work, lwork, info )
273 result( 1 ) = dqrt12( m, m, a, lda, s, work,
278 result( 2 ) = drzt01( m, n, copya, a, lda, tau, work,
283 result( 3 ) = drzt02( m, n, a, lda, tau, work, lwork )
289 IF( result( k ).GE.thresh )
THEN
290 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
291 $
CALL alahd( nout, path )
292 WRITE( nout, fmt = 9999 )m, n, imode, k,
305 CALL alasum( path, nout, nfail, nrun, nerrs )
307 9999
FORMAT(
' M =', i5,
', N =', i5,
', type ', i2,
', test ', i2,
308 $
', ratio =', g12.5 )
subroutine alasum(type, nout, nfail, nrun, nerrs)
ALASUM
subroutine alahd(iounit, path)
ALAHD
subroutine dchktz(dotype, nm, mval, nn, nval, thresh, tsterr, a, copya, s, tau, work, nout)
DCHKTZ
subroutine derrtz(path, nunit)
DERRTZ
subroutine dlaord(job, n, x, incx)
DLAORD
subroutine dlatms(m, n, dist, iseed, sym, d, mode, cond, dmax, kl, ku, pack, a, lda, work, info)
DLATMS
subroutine dgeqr2(m, n, a, lda, tau, work, info)
DGEQR2 computes the QR factorization of a general rectangular matrix using an unblocked algorithm.
subroutine dlacpy(uplo, m, n, a, lda, b, ldb)
DLACPY copies all or part of one two-dimensional array to another.
subroutine dlaset(uplo, m, n, alpha, beta, a, lda)
DLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values.
subroutine dtzrzf(m, n, a, lda, tau, work, lwork, info)
DTZRZF