132 SUBROUTINE dchktz( DOTYPE, NM, MVAL, NN, NVAL, THRESH, TSTERR, A,
133 $ COPYA, S, TAU, WORK, NOUT )
143 DOUBLE PRECISION THRESH
147 INTEGER MVAL( * ), NVAL( * )
148 DOUBLE PRECISION A( * ), COPYA( * ), S( * ),
149 $ tau( * ), work( * )
156 parameter( ntypes = 3 )
158 parameter( ntests = 3 )
159 DOUBLE PRECISION ONE, ZERO
160 parameter( one = 1.0d0, zero = 0.0d0 )
164 INTEGER I, IM, IMODE, IN, INFO, K, LDA, LWORK, M,
165 $ mnmin, mode, n, nerrs, nfail, nrun
169 INTEGER ISEED( 4 ), ISEEDY( 4 )
170 DOUBLE PRECISION RESULT( NTESTS )
173 DOUBLE PRECISION DLAMCH, DQRT12, DRZT01, DRZT02
174 EXTERNAL dlamch, dqrt12, drzt01, drzt02
186 INTEGER INFOT, IOUNIT
189 COMMON / infoc / infot, iounit, ok, lerr
190 COMMON / srnamc / srnamt
193 DATA iseedy / 1988, 1989, 1990, 1991 /
199 path( 1: 1 ) =
'Double precision'
205 iseed( i ) = iseedy( i )
207 eps = dlamch(
'Epsilon' )
212 $
CALL derrtz( path, nout )
228 lwork = max( 1, n*n+4*m+n, m*n+2*mnmin+4*n )
231 DO 50 imode = 1, ntypes
232 IF( .NOT.dotype( imode ) )
248 CALL dlaset(
'Full', m, n, zero, zero, a, lda )
253 CALL dlatms( m, n,
'Uniform', iseed,
254 $
'Nonsymmetric', s, imode,
255 $ one / eps, one, m, n,
'No packing', a,
257 CALL dgeqr2( m, n, a, lda, work, work( mnmin+1 ),
259 CALL dlaset(
'Lower', m-1, n, zero, zero, a( 2 ),
261 CALL dlaord(
'Decreasing', mnmin, s, 1 )
266 CALL dlacpy(
'All', m, n, a, lda, copya, lda )
272 CALL dtzrzf( m, n, a, lda, tau, work, lwork, info )
276 result( 1 ) = dqrt12( m, m, a, lda, s, work,
281 result( 2 ) = drzt01( m, n, copya, a, lda, tau, work,
286 result( 3 ) = drzt02( m, n, a, lda, tau, work, lwork )
292 IF( result( k ).GE.thresh )
THEN
293 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
294 $
CALL alahd( nout, path )
295 WRITE( nout, fmt = 9999 )m, n, imode, k,
308 CALL alasum( path, nout, nfail, nrun, nerrs )
310 9999
FORMAT(
' M =', i5,
', N =', i5,
', type ', i2,
', test ', i2,
311 $
', ratio =', g12.5 )