167 SUBROUTINE zckglm( NN, NVAL, MVAL, PVAL, NMATS, ISEED, THRESH,
168 $ nmax, a, af, b, bf, x, work, rwork, nin, nout,
177 INTEGER info, nin, nmats, nmax, nn, nout
178 DOUBLE PRECISION thresh
181 INTEGER iseed( 4 ), mval( * ), nval( * ), pval( * )
182 DOUBLE PRECISION rwork( * )
183 COMPLEX*16 a( * ), af( * ), b( * ), bf( * ), work( * ),
191 parameter( ntypes = 8 )
195 CHARACTER dista, distb, type
197 INTEGER i, iinfo, ik, imat, kla, klb, kua, kub, lda,
198 $ ldb, lwork, m, modea, modeb, n, nfail, nrun, p
199 DOUBLE PRECISION anorm, bnorm, cndnma, cndnmb, resid
202 LOGICAL dotype( ntypes )
223 CALL
alareq( path, nmats, dotype, ntypes, nin, nout )
234 IF( m.GT.n .OR. n.GT.m+p )
THEN
236 WRITE( nout, fmt = * )
239 WRITE( nout, fmt = 9997 )m, p, n
250 IF( m.GT.n .OR. n.GT.m+p )
253 DO 30 imat = 1, ntypes
257 IF( .NOT.dotype( imat ) )
263 CALL
dlatb9( path, imat, m, p, n, type, kla, kua, klb, kub,
264 $ anorm, bnorm, modea, modeb, cndnma, cndnmb,
267 CALL
zlatms( n, m, dista, iseed, type, rwork, modea, cndnma,
268 $ anorm, kla, kua,
'No packing', a, lda, work,
270 IF( iinfo.NE.0 )
THEN
271 WRITE( nout, fmt = 9999 )iinfo
276 CALL
zlatms( n, p, distb, iseed, type, rwork, modeb, cndnmb,
277 $ bnorm, klb, kub,
'No packing', b, ldb, work,
279 IF( iinfo.NE.0 )
THEN
280 WRITE( nout, fmt = 9999 )iinfo
288 x( i ) =
zlarnd( 2, iseed )
291 CALL
zglmts( n, m, p, a, af, lda, b, bf, ldb, x,
292 $ x( nmax+1 ), x( 2*nmax+1 ), x( 3*nmax+1 ),
293 $ work, lwork, rwork, resid )
298 IF( resid.GE.thresh )
THEN
299 IF( nfail.EQ.0 .AND. firstt )
THEN
303 WRITE( nout, fmt = 9998 )n, m, p, imat, 1, resid
313 CALL
alasum( path, nout, nfail, nrun, 0 )
315 9999 format(
' ZLATMS in ZCKGLM INFO = ', i5 )
316 9998 format(
' N=', i4,
' M=', i4,
', P=', i4,
', type ', i2,
317 $
', test ', i2,
', ratio=', g13.6 )
318 9997 format(
' *** Invalid input for GLM: M = ', i6,
', P = ', i6,
319 $
', N = ', i6,
';', /
' must satisfy M <= N <= M+P ',
320 $
'(this set of values will be skipped)' )