124      SUBROUTINE zrqt01( M, N, A, AF, Q, R, LDA, TAU, WORK, LWORK,
 
  132      INTEGER            LDA, LWORK, M, N
 
  135      DOUBLE PRECISION   RESULT( * ), RWORK( * )
 
  136      COMPLEX*16         A( LDA, * ), AF( LDA, * ), Q( LDA, * ),
 
  137     $                   r( lda, * ), tau( * ), work( lwork )
 
  143      DOUBLE PRECISION   ZERO, ONE
 
  144      parameter( zero = 0.0d+0, one = 1.0d+0 )
 
  146      parameter( rogue = ( -1.0d+10, -1.0d+10 ) )
 
  150      DOUBLE PRECISION   ANORM, EPS, RESID
 
  153      DOUBLE PRECISION   DLAMCH, ZLANGE, ZLANSY
 
  154      EXTERNAL           dlamch, zlange, zlansy
 
  160      INTRINSIC          dble, dcmplx, max, min
 
  166      COMMON             / srnamc / srnamt
 
  171      eps = dlamch( 
'Epsilon' )
 
  175      CALL zlacpy( 
'Full', m, n, a, lda, af, lda )
 
  180      CALL zgerqf( m, n, af, lda, tau, work, lwork, info )
 
  184      CALL zlaset( 
'Full', n, n, rogue, rogue, q, lda )
 
  186         IF( m.GT.0 .AND. m.LT.n )
 
  187     $      
CALL zlacpy( 
'Full', m, n-m, af, lda, q( n-m+1, 1 ), lda )
 
  189     $      
CALL zlacpy( 
'Lower', m-1, m-1, af( 2, n-m+1 ), lda,
 
  190     $                   q( n-m+2, n-m+1 ), lda )
 
  193     $      
CALL zlacpy( 
'Lower', n-1, n-1, af( m-n+2, 1 ), lda,
 
  200      CALL zungrq( n, n, minmn, q, lda, tau, work, lwork, info )
 
  204      CALL zlaset( 
'Full', m, n, dcmplx( zero ), dcmplx( zero ), r,
 
  208     $      
CALL zlacpy( 
'Upper', m, m, af( 1, n-m+1 ), lda,
 
  209     $                   r( 1, n-m+1 ), lda )
 
  211         IF( m.GT.n .AND. n.GT.0 )
 
  212     $      
CALL zlacpy( 
'Full', m-n, n, af, lda, r, lda )
 
  214     $      
CALL zlacpy( 
'Upper', n, n, af( m-n+1, 1 ), lda,
 
  215     $                   r( m-n+1, 1 ), lda )
 
  220      CALL zgemm( 
'No transpose', 
'Conjugate transpose', m, n, n,
 
  221     $            dcmplx( -one ), a, lda, q, lda, dcmplx( one ), r,
 
  226      anorm = zlange( 
'1', m, n, a, lda, rwork )
 
  227      resid = zlange( 
'1', m, n, r, lda, rwork )
 
  228      IF( anorm.GT.zero ) 
THEN 
  229         result( 1 ) = ( ( resid / dble( max( 1, n ) ) ) / anorm ) / eps
 
  236      CALL zlaset( 
'Full', n, n, dcmplx( zero ), dcmplx( one ), r, lda )
 
  237      CALL zherk( 
'Upper', 
'No transpose', n, n, -one, q, lda, one, r,
 
  242      resid = zlansy( 
'1', 
'Upper', n, r, lda, rwork )
 
  244      result( 2 ) = ( resid / dble( max( 1, n ) ) ) / eps