150 SUBROUTINE dchkq3( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL,
151 $ THRESH, A, COPYA, S, TAU, WORK, IWORK,
159 INTEGER NM, NN, NNB, NOUT
160 DOUBLE PRECISION THRESH
164 INTEGER IWORK( * ), MVAL( * ), NBVAL( * ), NVAL( * ),
166 DOUBLE PRECISION A( * ), COPYA( * ), S( * ),
174 PARAMETER ( NTYPES = 6 )
176 parameter( ntests = 3 )
177 DOUBLE PRECISION ONE, ZERO
178 parameter( one = 1.0d0, zero = 0.0d0 )
182 INTEGER I, , ILOW, IM, IMODE, IN, INB, INFO,
183 $ istep, k, lda, lw, lwork, m, mnmin, mode, n,
184 $ nb, nerrs, nfail, nrun, nx
188 INTEGER ISEED( 4 ), ISEEDY( 4 )
189 DOUBLE PRECISION RESULT( NTESTS )
192 DOUBLE PRECISION DLAMCH, DQPT01, DQRT11, DQRT12
193 EXTERNAL DLAMCH, DQPT01, , DQRT12
205 INTEGER INFOT, IOUNIT
208 COMMON / infoc / infot, iounit, ok, lerr
209 COMMON / srnamc / srnamt
212 DATA iseedy / 1988, 1989, 1990, 1991 /
218 path( 1: 1 ) =
'Double precision'
224 iseed( i ) = iseedy( i )
226 eps = dlamch(
'Epsilon' )
242 lwork =
max( 1, m*
max( m, n )+4*mnmin+
max( m, n ),
243 $ m*n + 2*mnmin + 4*n )
245 DO 70 imode = 1, ntypes
246 IF( .NOT.dotype( imode ) )
267 IF( imode.EQ.1 )
THEN
268 CALL dlaset(
'Full', m, n, zero, zero, copya, lda )
273 CALL dlatms( m, n, 'uniform
', ISEED, 'nonsymm
', S,
274 $ MODE, ONE / EPS, ONE, M, N, 'no packing
',
275 $ COPYA, LDA, WORK, INFO )
276.GE.
IF( IMODE4 ) THEN
277.EQ.
IF( IMODE4 ) THEN
280 IHIGH = MAX( 1, N / 2 )
281.EQ.
ELSE IF( IMODE5 ) THEN
282 ILOW = MAX( 1, N / 2 )
285.EQ.
ELSE IF( IMODE6 ) THEN
290 DO 40 I = ILOW, IHIGH, ISTEP
294 CALL DLAORD( 'decreasing
', MNMIN, S, 1 )
309 CALL DLACPY( 'all
', M, N, COPYA, LDA, A, LDA )
310 CALL ICOPY( N, IWORK( 1 ), 1, IWORK( N+1 ), 1 )
314 LW = MAX( 1, 2*N+NB*( N+1 ) )
319 CALL DGEQP3( M, N, A, LDA, IWORK( N+1 ), TAU, WORK,
324 RESULT( 1 ) = DQRT12( M, N, A, LDA, S, WORK,
329 RESULT( 2 ) = DQPT01( M, N, MNMIN, COPYA, A, LDA, TAU,
330 $ IWORK( N+1 ), WORK, LWORK )
334 RESULT( 3 ) = DQRT11( M, MNMIN, A, LDA, TAU, WORK,
341.GE.
IF( RESULT( K )THRESH ) THEN
342.EQ..AND..EQ.
IF( NFAIL0 NERRS0 )
343 $ CALL ALAHD( NOUT, PATH )
344 WRITE( NOUT, FMT = 9999 )'dgeqp3', M, N, NB,
345 $ IMODE, K, RESULT( K )
358 CALL ALASUM( PATH, NOUT, NFAIL, NRUN, NERRS )
360 9999 FORMAT( 1X, A, ' m =
', I5, ', n =
', I5, ', nb =
', I4, ',
type ',
361 $ I2, ', test
', I2, ', ratio =
', G12.5 )
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 xlaenv(ispec, nvalue)
XLAENV
subroutine alasum(type, nout, nfail, nrun, nerrs)
ALASUM
subroutine icopy(n, sx, incx, sy, incy)
ICOPY
subroutine alahd(iounit, path)
ALAHD
subroutine dgeqp3(m, n, a, lda, jpvt, tau, work, lwork, info)
DGEQP3
subroutine dchkq3(dotype, nm, mval, nn, nval, nnb, nbval, nxval, thresh, a, copya, s, tau, work, iwork, nout)
DCHKQ3
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