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 )
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 alahd(IOUNIT, PATH)
ALAHD
subroutine derrtz(PATH, NUNIT)
DERRTZ
subroutine dtzrzf(M, N, A, LDA, TAU, WORK, LWORK, INFO)
DTZRZF
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 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 dchktz(DOTYPE, NM, MVAL, NN, NVAL, THRESH, TSTERR, A, COPYA, S, TAU, WORK, NOUT)
DCHKTZ
subroutine alasum(TYPE, NOUT, NFAIL, NRUN, NERRS)
ALASUM