134      SUBROUTINE crqt03( M, N, K, AF, C, CC, Q, LDA, TAU, WORK, LWORK,
 
  142      INTEGER            K, LDA, LWORK, M, N
 
  145      REAL               RESULT( * ), RWORK( * )
 
  146      COMPLEX            AF( LDA, * ), C( LDA, * ), CC( LDA, * ),
 
  147     $                   q( lda, * ), tau( * ), work( lwork )
 
  154      parameter( zero = 0.0e+0, one = 1.0e+0 )
 
  156      parameter( rogue = ( -1.0e+10, -1.0e+10 ) )
 
  159      CHARACTER          SIDE, TRANS
 
  160      INTEGER            INFO, ISIDE, ITRANS, J, MC, MINMN, NC
 
  161      REAL               CNORM, EPS, RESID
 
  166      EXTERNAL           lsame, clange, slamch
 
  175      INTRINSIC          cmplx, max, min, real
 
  181      COMMON             / srnamc / srnamt
 
  184      DATA               iseed / 1988, 1989, 1990, 1991 /
 
  188      eps = slamch( 
'Epsilon' )
 
  193      IF( minmn.EQ.0 ) 
THEN 
  203      CALL claset( 
'Full', n, n, rogue, rogue, q, lda )
 
  204      IF( k.GT.0 .AND. n.GT.k )
 
  205     $   
CALL clacpy( 
'Full', k, n-k, af( m-k+1, 1 ), lda,
 
  206     $                q( n-k+1, 1 ), lda )
 
  208     $   
CALL clacpy( 
'Lower', k-1, k-1, af( m-k+2, n-k+1 ), lda,
 
  209     $                q( n-k+2, n-k+1 ), lda )
 
  214      CALL cungrq( n, n, k, q, lda, tau( minmn-k+1 ), work, lwork,
 
  218         IF( iside.EQ.1 ) 
THEN 
  231            CALL clarnv( 2, iseed, mc, c( 1, j ) )
 
  233         cnorm = clange( 
'1', mc, nc, c, lda, rwork )
 
  238            IF( itrans.EQ.1 ) 
THEN 
  246            CALL clacpy( 
'Full', mc, nc, c, lda, cc, lda )
 
  252     $         
CALL cunmrq( side, trans, mc, nc, k, af( m-k+1, 1 ), lda,
 
  253     $                      tau( minmn-k+1 ), cc, lda, work, lwork,
 
  258            IF( lsame( side, 
'L' ) ) 
THEN 
  259               CALL cgemm( trans, 
'No transpose', mc, nc, mc,
 
  260     $                     cmplx( -one ), q, lda, c, lda, cmplx( one ),
 
  263               CALL cgemm( 
'No transpose', trans, mc, nc, nc,
 
  264     $                     cmplx( -one ), c, lda, q, lda, cmplx( one ),
 
  270            resid = clange( 
'1', mc, nc, cc, lda, rwork )
 
  271            result( ( iside-1 )*2+itrans ) = resid /
 
  272     $         ( real( max( 1, n ) )*cnorm*eps )
 
 
subroutine crqt03(m, n, k, af, c, cc, q, lda, tau, work, lwork, rwork, result)
CRQT03
subroutine cgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
CGEMM
subroutine cunmrq(side, trans, m, n, k, a, lda, tau, c, ldc, work, lwork, info)
CUNMRQ