165      SUBROUTINE zckglm( NN, NVAL, MVAL, PVAL, NMATS, ISEED, THRESH,
 
  166     $                   NMAX, A, AF, B, BF, X, WORK, RWORK, NIN, NOUT,
 
  174      INTEGER            INFO, NIN, NMATS, NMAX, NN, NOUT
 
  175      DOUBLE PRECISION   THRESH
 
  178      INTEGER            ISEED( 4 ), MVAL( * ), NVAL( * ), PVAL( * )
 
  179      DOUBLE PRECISION   RWORK( * )
 
  180      COMPLEX*16         A( * ), AF( * ), B( * ), BF( * ), WORK( * ),
 
  188      PARAMETER          ( NTYPES = 8 )
 
  192      CHARACTER          DISTA, DISTB, TYPE
 
  194      INTEGER            I, IINFO, IK, IMAT, KLA, KLB, KUA, KUB, LDA,
 
  195     $                   ldb, lwork, m, modea, modeb, n, nfail, nrun, p
 
  196      DOUBLE PRECISION   ANORM, BNORM, CNDNMA, CNDNMB, RESID
 
  199      LOGICAL            DOTYPE( NTYPES )
 
  220      CALL alareq( path, nmats, dotype, ntypes, nin, nout )
 
  231         IF( m.GT.n .OR. n.GT.m+p ) 
THEN 
  233               WRITE( nout, fmt = * )
 
  236            WRITE( nout, fmt = 9997 )m, p, n
 
  247         IF( m.GT.n .OR. n.GT.m+p )
 
  250         DO 30 imat = 1, ntypes
 
  254            IF( .NOT.dotype( imat ) )
 
  260            CALL dlatb9( path, imat, m, p, n, 
TYPE, kla, kua, klb, kub,
 
  261     $                   anorm, bnorm, modea, modeb, cndnma, cndnmb,
 
  264            CALL zlatms( n, m, dista, iseed, 
TYPE, rwork, modea, cndnma,
 
  265     $                   anorm, kla, kua, 
'No packing', a, lda, work,
 
  267            IF( iinfo.NE.0 ) 
THEN 
  268               WRITE( nout, fmt = 9999 )iinfo
 
  273            CALL zlatms( n, p, distb, iseed, 
TYPE, rwork, modeb, cndnmb,
 
  274     $                   bnorm, klb, kub, 
'No packing', b, ldb, work,
 
  276            IF( iinfo.NE.0 ) 
THEN 
  277               WRITE( nout, fmt = 9999 )iinfo
 
  285               x( i ) = zlarnd( 2, iseed )
 
  288            CALL zglmts( n, m, p, a, af, lda, b, bf, ldb, x,
 
  289     $                   x( nmax+1 ), x( 2*nmax+1 ), x( 3*nmax+1 ),
 
  290     $                   work, lwork, rwork, resid )
 
  295            IF( resid.GE.thresh ) 
THEN 
  296               IF( nfail.EQ.0 .AND. firstt ) 
THEN 
  300               WRITE( nout, fmt = 9998 )n, m, p, imat, 1, resid
 
  310      CALL alasum( path, nout, nfail, nrun, 0 )
 
  312 9999 
FORMAT( 
' ZLATMS in ZCKGLM INFO = ', i5 )
 
  313 9998 
FORMAT( 
' N=', i4, 
' M=', i4, 
', P=', i4, 
', type ', i2,
 
  314     $      
', test ', i2, 
', ratio=', g13.6 )
 
  315 9997 
FORMAT( 
' *** Invalid input  for GLM:  M = ', i6, 
', P = ', i6,
 
  316     $      
', N = ', i6, 
';', / 
'     must satisfy M <= N <= M+P  ',
 
  317     $      
'(this set of values will be skipped)' )
 
 
subroutine dlatb9(path, imat, m, p, n, type, kla, kua, klb, kub, anorm, bnorm, modea, modeb, cndnma, cndnmb, dista, distb)
DLATB9
subroutine zckglm(nn, nval, mval, pval, nmats, iseed, thresh, nmax, a, af, b, bf, x, work, rwork, nin, nout, info)
ZCKGLM
subroutine zglmts(n, m, p, a, af, lda, b, bf, ldb, d, df, x, u, work, lwork, rwork, result)
ZGLMTS
subroutine zlatms(m, n, dist, iseed, sym, d, mode, cond, dmax, kl, ku, pack, a, lda, work, info)
ZLATMS