137 SUBROUTINE zchktz( DOTYPE, NM, MVAL, NN, NVAL, THRESH, TSTERR, A,
138 $ COPYA, S, TAU, WORK, RWORK, NOUT )
148 DOUBLE PRECISION THRESH
152 INTEGER MVAL( * ), NVAL( * )
153 DOUBLE PRECISION S( * ), RWORK( * )
154 COMPLEX*16 A( * ), COPYA( * ), TAU( * ), WORK( * )
161 parameter( ntypes = 3 )
163 parameter( ntests = 3 )
164 DOUBLE PRECISION ONE, ZERO
165 parameter( one = 1.0d0, zero = 0.0d0 )
169 INTEGER I, IM, IMODE, IN, INFO, K, LDA, LWORK, M,
170 $ mnmin, mode, n, nerrs, nfail, nrun
174 INTEGER ISEED( 4 ), ISEEDY( 4 )
175 DOUBLE PRECISION RESULT( NTESTS )
178 DOUBLE PRECISION DLAMCH, ZQRT12, ZRZT01, ZRZT02
179 EXTERNAL dlamch, zqrt12, zrzt01, zrzt02
186 INTRINSIC dcmplx, max, min
191 INTEGER INFOT, IOUNIT
194 COMMON / infoc / infot, iounit, ok, lerr
195 COMMON / srnamc / srnamt
198 DATA iseedy / 1988, 1989, 1990, 1991 /
204 path( 1: 1 ) =
'Zomplex precision'
210 iseed( i ) = iseedy( i )
212 eps = dlamch(
'Epsilon' )
217 $
CALL zerrtz( path, nout )
233 lwork = max( 1, n*n+4*m+n )
236 DO 50 imode = 1, ntypes
237 IF( .NOT.dotype( imode ) )
253 CALL zlaset(
'Full', m, n, dcmplx( zero ),
254 $ dcmplx( zero ), a, lda )
259 CALL zlatms( m, n,
'Uniform', iseed,
260 $
'Nonsymmetric', s, imode,
261 $ one / eps, one, m, n,
'No packing', a,
263 CALL zgeqr2( m, n, a, lda, work, work( mnmin+1 ),
265 CALL zlaset(
'Lower', m-1, n, dcmplx( zero ),
266 $ dcmplx( zero ), a( 2 ), lda )
267 CALL dlaord(
'Decreasing', mnmin, s, 1 )
272 CALL zlacpy(
'All', m, n, a, lda, copya, lda )
278 CALL ztzrzf( m, n, a, lda, tau, work, lwork, info )
282 result( 1 ) = zqrt12( m, m, a, lda, s, work,
287 result( 2 ) = zrzt01( m, n, copya, a, lda, tau, work,
292 result( 3 ) = zrzt02( m, n, a, lda, tau, work, lwork )
298 IF( result( k ).GE.thresh )
THEN
299 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
300 $
CALL alahd( nout, path )
301 WRITE( nout, fmt = 9999 )m, n, imode, k,
314 CALL alasum( path, nout, nfail, nrun, nerrs )
316 9999
FORMAT(
' M =', i5,
', N =', i5,
', type ', i2,
', test ', i2,
317 $
', ratio =', g12.5 )