155 SUBROUTINE cchkq3( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL,
156 $ THRESH, A, COPYA, S, TAU, WORK, RWORK,
164 INTEGER NM, NN, NNB, NOUT
169 INTEGER IWORK( * ), MVAL( * ), NBVAL( * ), NVAL( * ),
171 REAL S( * ), RWORK( * )
172 COMPLEX A( * ), COPYA( * ), TAU( * ), WORK( * )
179 PARAMETER ( NTYPES = 6 )
181 parameter( ntests = 3 )
184 parameter( one = 1.0e+0, zero = 0.0e+0,
185 $ czero = ( 0.0e+0, 0.0e+0 ) )
189 INTEGER I, IHIGH, ILOW, IM, IMODE, IN, INB, INFO,
190 $ istep, k, lda, lw, lwork, m, mnmin, mode, n,
191 $ nb, nerrs, nfail, nrun, nx
195 INTEGER ISEED( 4 ), ISEEDY( 4 )
196 REAL RESULT( NTESTS )
199 REAL CQPT01, CQRT11, CQRT12, SLAMCH
200 EXTERNAL CQPT01, CQRT11, CQRT12, SLAMCH
212 INTEGER INFOT, IOUNIT
215 COMMON / infoc / infot, iounit, ok, lerr
216 COMMON / srnamc / srnamt
219 DATA iseedy / 1988, 1989, 1990, 1991 /
225 path( 1: 1 ) =
'Complex precision'
231 iseed( i ) = iseedy( i )
233 eps = slamch(
'Epsilon' )
249 lwork = max( 1, m*max( m, n )+4*mnmin+max( m, n ) )
251 DO 70 imode = 1, ntypes
252 IF( .NOT.dotype( imode ) )
273 IF( imode.EQ.1 )
THEN
274 CALL claset(
'Full', m, n, czero, czero, copya, lda )
279 CALL clatms( m, n,
'Uniform', iseed,
'Nonsymm', s,
280 $ mode, one / eps, one, m, n,
'No packing',
281 $ copya, lda, work, info )
282 IF( imode.GE.4 )
THEN
283 IF( imode.EQ.4 )
THEN
286 ihigh = max( 1, n / 2 )
287 ELSE IF( imode.EQ.5 )
THEN
288 ilow = max( 1, n / 2 )
291 ELSE IF( imode.EQ.6 )
THEN
296 DO 40 i = ilow, ihigh, istep
300 CALL slaord(
'Decreasing', mnmin, s, 1 )
315 CALL clacpy(
'All', m, n, copya, lda, a, lda )
316 CALL icopy( n, iwork( 1 ), 1, iwork( n+1 ), 1 )
323 CALL cgeqp3( m, n, a, lda, iwork( n+1 ), tau, work,
328 result( 1 ) = cqrt12( m, n, a, lda, s, work,
333 result( 2 ) = cqpt01( m, n, mnmin, copya, a, lda, tau,
334 $ iwork( n+1 ), work, lwork )
338 result( 3 ) = cqrt11( m, mnmin, a, lda, tau, work,
345 IF( result( k ).GE.thresh )
THEN
346 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
347 $
CALL alahd( nout, path )
348 WRITE( nout, fmt = 9999 )
'CGEQP3', m, n, nb,
349 $ imode, k, result( k )
362 CALL alasum( path, nout, nfail, nrun, nerrs )
364 9999
FORMAT( 1x, a,
' M =', i5,
', N =', i5,
', NB =', i4,
', type ',
365 $ i2,
', test ', i2,
', ratio =', g12.5 )
subroutine alasum(type, nout, nfail, nrun, nerrs)
ALASUM
subroutine xlaenv(ispec, nvalue)
XLAENV
subroutine alahd(iounit, path)
ALAHD
subroutine cchkq3(dotype, nm, mval, nn, nval, nnb, nbval, nxval, thresh, a, copya, s, tau, work, rwork, iwork, nout)
CCHKQ3
subroutine clatms(m, n, dist, iseed, sym, d, mode, cond, dmax, kl, ku, pack, a, lda, work, info)
CLATMS
subroutine cgeqp3(m, n, a, lda, jpvt, tau, work, lwork, rwork, info)
CGEQP3
subroutine clacpy(uplo, m, n, a, lda, b, ldb)
CLACPY copies all or part of one two-dimensional array to another.
subroutine claset(uplo, m, n, alpha, beta, a, lda)
CLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values.
subroutine icopy(n, sx, incx, sy, incy)
ICOPY
subroutine slaord(job, n, x, incx)
SLAORD