198 SUBROUTINE dchkrq( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL,
199 $ NRHS, THRESH, TSTERR, NMAX, A, AF, AQ, AR, AC,
200 $ B, X, XACT, TAU, WORK, RWORK, IWORK, NOUT )
208 INTEGER NM, NMAX, NN, NNB, NOUT, NRHS
209 DOUBLE PRECISION THRESH
213 INTEGER IWORK( * ), MVAL( * ), NBVAL( * ), NVAL( * ),
215 DOUBLE PRECISION A( * ), AC( * ), AF( * ), AQ( * ), AR( * ),
216 $ B( * ), RWORK( * ), TAU( * ), WORK( * ),
224 PARAMETER ( NTESTS = 7 )
226 parameter( ntypes = 8 )
227 DOUBLE PRECISION ZERO
228 parameter( zero = 0.0d0 )
233 INTEGER I, IK, IM, IMAT, IN, INB, INFO, K, KL, KU, LDA,
234 $ lwork, m, minmn, mode, n, nb, nerrs, nfail, nk,
236 DOUBLE PRECISION ANORM, CNDNUM
239 INTEGER ISEED( 4 ), ISEEDY( 4 ), KVAL( 4 )
240 DOUBLE PRECISION RESULT( NTESTS )
256 COMMON / infoc / infot, nunit, ok, lerr
257 COMMON / srnamc / srnamt
260 DATA iseedy / 1988, 1989, 1990, 1991 /
266 path( 1: 1 ) =
'Double precision'
272 iseed( i ) = iseedy( i )
278 $
CALL derrrq( path, nout )
283 lwork = nmax*max( nmax, nrhs )
295 DO 50 imat = 1, ntypes
299 IF( .NOT.dotype( imat ) )
305 CALL dlatb4( path, imat, m, n,
TYPE, kl, ku, anorm, mode,
309 CALL dlatms( m, n, dist, iseed,
TYPE, rwork, mode,
310 $ cndnum, anorm, kl, ku,
'No packing', a, lda,
316 CALL alaerh( path,
'DLATMS', info, 0,
' ', m, n, -1,
317 $ -1, -1, imat, nfail, nerrs, nout )
328 kval( 4 ) = minmn / 2
329 IF( minmn.EQ.0 )
THEN
331 ELSE IF( minmn.EQ.1 )
THEN
333 ELSE IF( minmn.LE.3 )
THEN
359 CALL drqt01( m, n, a, af, aq, ar, lda, tau,
360 $ work, lwork, rwork, result( 1 ) )
361 ELSE IF( m.LE.n )
THEN
366 CALL drqt02( m, n, k, a, af, aq, ar, lda, tau,
367 $ work, lwork, rwork, result( 1 ) )
375 CALL drqt03( m, n, k, af, ac, ar, aq, lda, tau,
376 $ work, lwork, rwork, result( 3 ) )
383 IF( k.EQ.m .AND. inb.EQ.1 )
THEN
389 CALL dlarhs( path,
'New',
'Full',
390 $
'No transpose', m, n, 0, 0,
391 $ nrhs, a, lda, xact, lda, b, lda,
394 CALL dlacpy(
'Full', m, nrhs, b, lda,
397 CALL dgerqs( m, n, nrhs, af, lda, tau, x,
398 $ lda, work, lwork, info )
403 $
CALL alaerh( path,
'DGERQS', info, 0,
' ',
404 $ m, n, nrhs, -1, nb, imat,
405 $ nfail, nerrs, nout )
407 CALL dget02(
'No transpose', m, n, nrhs, a,
408 $ lda, x, lda, b, lda, rwork,
418 IF( result( i ).GE.thresh )
THEN
419 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
420 $
CALL alahd( nout, path )
421 WRITE( nout, fmt = 9999 )m, n, k, nb, nx,
422 $ imat, i, result( i )
435 CALL alasum( path, nout, nfail, nrun, nerrs )
437 9999
FORMAT(
' M=', i5,
', N=', i5,
', K=', i5,
', NB=', i4,
', NX=',
438 $ i5,
', type ', i2,
', test(', i2,
')=', g12.5 )
subroutine alasum(type, nout, nfail, nrun, nerrs)
ALASUM
subroutine dget02(trans, m, n, nrhs, a, lda, x, ldx, b, ldb, rwork, resid)
DGET02
subroutine dlarhs(path, xtype, uplo, trans, m, n, kl, ku, nrhs, a, lda, x, ldx, b, ldb, iseed, info)
DLARHS
subroutine xlaenv(ispec, nvalue)
XLAENV
subroutine alaerh(path, subnam, info, infoe, opts, m, n, kl, ku, n5, imat, nfail, nerrs, nout)
ALAERH
subroutine alahd(iounit, path)
ALAHD
subroutine dchkrq(dotype, nm, mval, nn, nval, nnb, nbval, nxval, nrhs, thresh, tsterr, nmax, a, af, aq, ar, ac, b, x, xact, tau, work, rwork, iwork, nout)
DCHKRQ
subroutine derrrq(path, nunit)
DERRRQ
subroutine dgerqs(m, n, nrhs, a, lda, tau, b, ldb, work, lwork, info)
DGERQS
subroutine dlatb4(path, imat, m, n, type, kl, ku, anorm, mode, cndnum, dist)
DLATB4
subroutine dlatms(m, n, dist, iseed, sym, d, mode, cond, dmax, kl, ku, pack, a, lda, work, info)
DLATMS
subroutine drqt01(m, n, a, af, q, r, lda, tau, work, lwork, rwork, result)
DRQT01
subroutine drqt02(m, n, k, a, af, q, r, lda, tau, work, lwork, rwork, result)
DRQT02
subroutine drqt03(m, n, k, af, c, cc, q, lda, tau, work, lwork, rwork, result)
DRQT03
subroutine dlacpy(uplo, m, n, a, lda, b, ldb)
DLACPY copies all or part of one two-dimensional array to another.