130 SUBROUTINE dchktz( DOTYPE, NM, MVAL, NN, NVAL, THRESH, TSTERR, A,
131 $ COPYA, S, TAU, WORK, NOUT )
140 DOUBLE PRECISION THRESH
144 INTEGER MVAL( * ), NVAL( * )
145 DOUBLE PRECISION A( * ), COPYA( * ), S( * ),
146 $ tau( * ), work( * )
153 parameter( ntypes = 3 )
155 parameter( ntests = 3 )
156 DOUBLE PRECISION ONE, ZERO
157 parameter( one = 1.0d0, zero = 0.0d0 )
161 INTEGER I, IM, IMODE, IN, INFO, K, LDA, LWORK, M,
162 $ mnmin, mode, n, nerrs, nfail, nrun
166 INTEGER ISEED( 4 ), ISEEDY( 4 )
167 DOUBLE PRECISION RESULT( NTESTS )
170 DOUBLE PRECISION DLAMCH, DQRT12, , DRZT02
183 INTEGER INFOT, IOUNIT
186 COMMON / infoc / infot, iounit, ok, lerr
187 COMMON / srnamc / srnamt
190 DATA iseedy / 1988, 1989, 1990, 1991 /
196 path( 1: 1 ) =
'Double precision'
202 iseed( i ) = iseedy( i )
204 eps = dlamch(
'Epsilon' )
209 $
CALL derrtz( path, nout )
225 lwork =
max( 1, n*n+4*m+n, m*n+2*mnmin+4*n )
228 DO 50 imode = 1, ntypes
229 IF( .NOT.dotype( imode ) )
245 CALL dlaset(
'Full', m, n, zero, zero, a, lda )
250 CALL dlatms( m, n,
'Uniform', iseed,
251 $
'Nonsymmetric', s, imode,
252 $ one / eps, one, m, n,
'No packing', a,
254 CALL dgeqr2( m, n, a, lda, work, work( mnmin+1 ),
256 CALL dlaset( 'lower
', M-1, N, ZERO, ZERO, A( 2 ),
258 CALL DLAORD( 'decreasing
', MNMIN, S, 1 )
263 CALL DLACPY( 'all
', M, N, A, LDA, COPYA, LDA )
269 CALL DTZRZF( M, N, A, LDA, TAU, WORK, LWORK, INFO )
273 RESULT( 1 ) = DQRT12( M, M, A, LDA, S, WORK,
278 RESULT( 2 ) = DRZT01( M, N, COPYA, A, LDA, TAU, WORK,
283 RESULT( 3 ) = DRZT02( M, N, A, LDA, TAU, WORK, LWORK )
289.GE.
IF( RESULT( K )THRESH ) THEN
290.EQ..AND..EQ.
IF( NFAIL0 NERRS0 )
291 $ CALL ALAHD( NOUT, PATH )
292 WRITE( NOUT, FMT = 9999 )M, N, IMODE, K,
305 CALL ALASUM( PATH, NOUT, NFAIL, NRUN, NERRS )
307 9999 FORMAT( ' m =
', I5, ', n =
', I5, ',
type ', I2, ', test
', I2,
308 $ ', 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 alasum(type, nout, nfail, nrun, nerrs)
ALASUM
subroutine alahd(iounit, path)
ALAHD
subroutine dgeqr2(m, n, a, lda, tau, work, info)
DGEQR2 computes the QR factorization of a general rectangular matrix using an unblocked algorithm.
subroutine dtzrzf(m, n, a, lda, tau, work, lwork, info)
DTZRZF
double precision function drzt01(m, n, a, af, lda, tau, work, lwork)
DRZT01
subroutine dchktz(dotype, nm, mval, nn, nval, thresh, tsterr, a, copya, s, tau, work, nout)
DCHKTZ
subroutine derrtz(path, nunit)
DERRTZ
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