152 SUBROUTINE dchkq3( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL,
153 $ THRESH, A, COPYA, S, TAU, WORK, IWORK,
162 INTEGER nm, nn, nnb, nout
163 DOUBLE PRECISION thresh
167 INTEGER IWORK( * ), MVAL( * ), NBVAL( * ), NVAL( * ),
169 DOUBLE PRECISION A( * ), COPYA( * ), S( * ),
170 $ TAU( * ), WORK( * )
177 PARAMETER ( NTYPES = 6 )
179 parameter( ntests = 3 )
180 DOUBLE PRECISION ONE, ZERO
181 parameter( one = 1.0d0, zero = 0.0d0 )
185 INTEGER I, IHIGH, ILOW, IM, IMODE, IN, INB, INFO,
186 $ istep, k, lda, lw, lwork, m, mnmin, mode, n,
187 $ nb, nerrs, nfail, nrun, nx
191 INTEGER ISEED( 4 ), ISEEDY( 4 )
192 DOUBLE PRECISION RESULT( NTESTS )
195 DOUBLE PRECISION DLAMCH, DQPT01, DQRT11, DQRT12
196 EXTERNAL DLAMCH, DQPT01, DQRT11, DQRT12
208 INTEGER INFOT, IOUNIT
211 COMMON / infoc / infot, iounit, ok, lerr
212 COMMON / srnamc / srnamt
215 DATA iseedy / 1988, 1989, 1990, 1991 /
221 path( 1: 1 ) =
'Double precision'
227 iseed( i ) = iseedy( i )
229 eps = dlamch(
'Epsilon' )
245 lwork = max( 1, m*max( m, n )+4*mnmin+max( m, n ),
246 $ m*n + 2*mnmin + 4*n )
248 DO 70 imode = 1, ntypes
249 IF( .NOT.dotype( imode ) )
270 IF( imode.EQ.1 )
THEN
271 CALL dlaset(
'Full', m, n, zero, zero, copya, lda )
276 CALL dlatms( m, n,
'Uniform', iseed,
'Nonsymm', s,
277 $ mode, one / eps, one, m, n,
'No packing',
278 $ copya, lda, work, info )
279 IF( imode.GE.4 )
THEN
280 IF( imode.EQ.4 )
THEN
283 ihigh = max( 1, n / 2 )
284 ELSE IF( imode.EQ.5 )
THEN
285 ilow = max( 1, n / 2 )
288 ELSE IF( imode.EQ.6 )
THEN
293 DO 40 i = ilow, ihigh, istep
297 CALL dlaord(
'Decreasing', mnmin, s, 1 )
312 CALL dlacpy(
'All', m, n, copya, lda, a, lda )
313 CALL icopy( n, iwork( 1 ), 1, iwork( n+1 ), 1 )
317 lw = max( 1, 2*n+nb*( n+1 ) )
322 CALL dgeqp3( m, n, a, lda, iwork( n+1 ), tau, work,
327 result( 1 ) = dqrt12( m, n, a, lda, s, work,
332 result( 2 ) = dqpt01( m, n, mnmin, copya, a, lda, tau,
333 $ iwork( n+1 ), work, lwork )
337 result( 3 ) = dqrt11( m, mnmin, a, lda, tau, work,
344 IF( result( k ).GE.thresh )
THEN
345 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
346 $
CALL alahd( nout, path )
347 WRITE( nout, fmt = 9999 )
'DGEQP3', m, n, nb,
348 $ imode, k, result( k )
361 CALL alasum( path, nout, nfail, nrun, nerrs )
363 9999
FORMAT( 1x, a,
' M =', i5,
', N =', i5,
', NB =', i4,
', type ',
364 $ i2,
', test ', i2,
', ratio =', g12.5 )