150 SUBROUTINE schkq3( DOTYPE, NM, MVAL, NN, NVAL, NNB, NBVAL, NXVAL,
151 $ THRESH, A, COPYA, S, TAU, WORK, IWORK,
159 INTEGER NM, NN, NNB, NOUT
164 INTEGER IWORK( * ), MVAL( * ), NBVAL( * ), NVAL( * ),
166 REAL A( * ), COPYA( * ), S( * ),
167 $ TAU( * ), WORK( * )
174 PARAMETER ( NTYPES = 6 )
176 parameter( ntests = 3 )
178 parameter( one = 1.0e0, zero = 0.0e0 )
182 INTEGER I, IHIGH, 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 REAL RESULT( NTESTS )
192 REAL SLAMCH, SQPT01, SQRT11, SQRT12
193 EXTERNAL SLAMCH, SQPT01, SQRT11, SQRT12
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 ) =
'Single precision'
224 iseed( i ) = iseedy( i )
226 eps = slamch(
'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 slaset(
'Full', m, n, zero, zero, copya, lda )
273 CALL slatms( m, n,
'Uniform', iseed,
'Nonsymm', s,
274 $ mode, one / eps, one, m, n,
'No packing',
275 $ copya, lda, work, info )
276 IF( imode.GE.4 )
THEN
277 IF( imode.EQ.4 )
THEN
280 ihigh = max( 1, n / 2 )
281 ELSE IF( imode.EQ.5 )
THEN
282 ilow = max( 1, n / 2 )
285 ELSE IF( imode.EQ.6 )
THEN
290 DO 40 i = ilow, ihigh, istep
294 CALL slaord(
'Decreasing', mnmin, s, 1 )
309 CALL slacpy(
'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 sgeqp3( m, n, a, lda, iwork( n+1 ), tau, work,
324 result( 1 ) = sqrt12( m, n, a, lda, s, work,
329 result( 2 ) = sqpt01( m, n, mnmin, copya, a, lda, tau,
330 $ iwork( n+1 ), work, lwork )
334 result( 3 ) = sqrt11( m, mnmin, a, lda, tau, work,
341 IF( result( k ).GE.thresh )
THEN
342 IF( nfail.EQ.0 .AND. nerrs.EQ.0 )
343 $
CALL alahd( nout, path )
344 WRITE( nout, fmt = 9999 )
'SGEQP3', 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 alasum(type, nout, nfail, nrun, nerrs)
ALASUM
subroutine xlaenv(ispec, nvalue)
XLAENV
subroutine alahd(iounit, path)
ALAHD
subroutine sgeqp3(m, n, a, lda, jpvt, tau, work, lwork, info)
SGEQP3
subroutine slacpy(uplo, m, n, a, lda, b, ldb)
SLACPY copies all or part of one two-dimensional array to another.
subroutine slaset(uplo, m, n, alpha, beta, a, lda)
SLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values.
subroutine icopy(n, sx, incx, sy, incy)
ICOPY
subroutine schkq3(dotype, nm, mval, nn, nval, nnb, nbval, nxval, thresh, a, copya, s, tau, work, iwork, nout)
SCHKQ3
subroutine slaord(job, n, x, incx)
SLAORD
subroutine slatms(m, n, dist, iseed, sym, d, mode, cond, dmax, kl, ku, pack, a, lda, work, info)
SLATMS