194      INTEGER           INFO, LDA, LDT, LWORK, M, N, MB, NB
 
  197      DOUBLE PRECISION  A( LDA, * ), T( LDT, * ), WORK( * )
 
  203      DOUBLE PRECISION   ONE, ZERO
 
  204      parameter( one = 1.0d+0, zero = 0.0d+0 )
 
  208      INTEGER            NBLOCAL, MB2, M_PLUS_ONE, ITMP, IB_BOTTOM,
 
  209     $                   lworkopt, num_all_row_blocks, jb_t, ib, imb,
 
  210     $                   kb, kb_last, knb, mb1
 
  213      DOUBLE PRECISION   DUMMY( 1, 1 )
 
  219      INTRINSIC          dble, max, min
 
  229      ELSE IF( n.LT.0 .OR. m.LT.n ) 
THEN 
  231      ELSE IF( mb.LE.n ) 
THEN 
  233      ELSE IF( nb.LT.1 ) 
THEN 
  235      ELSE IF( lda.LT.max( 1, m ) ) 
THEN 
  237      ELSE IF( ldt.LT.max( 1, min( nb, n ) ) ) 
THEN 
  239      ELSE IF( lwork.LT.1 .AND. .NOT.lquery ) 
THEN 
  243      nblocal = min( nb, n )
 
  248         lworkopt = nblocal * max( nblocal, ( n - nblocal ) )
 
  254         CALL xerbla( 
'DORGTSQR_ROW', -info )
 
  256      ELSE IF ( lquery ) 
THEN 
  257         work( 1 ) = dble( lworkopt )
 
  263      IF( min( m, n ).EQ.0 ) 
THEN 
  264         work( 1 ) = dble( lworkopt )
 
  271      CALL dlaset(
'U', m, n, zero, one, a, lda )
 
  276      kb_last = ( ( n-1 ) / nblocal ) * nblocal + 1
 
  298         itmp = ( m - mb - 1 ) / mb2
 
  299         ib_bottom = itmp * mb2 + mb + 1
 
  300         num_all_row_blocks = itmp + 2
 
  301         jb_t = num_all_row_blocks * n + 1
 
  303         DO ib = ib_bottom, mb+1, -mb2
 
  308            imb = min( m_plus_one - ib, mb2 )
 
  320            DO kb = kb_last, 1, -nblocal
 
  325               knb = min( nblocal, n - kb + 1 )
 
  328     $                     t( 1, jb_t+kb-1 ), ldt, a( kb, kb ), lda,
 
  329     $                     a( ib, kb ), lda, work, knb )
 
  348      DO kb = kb_last, 1, -nblocal
 
  353         knb = min( nblocal, n - kb + 1 )
 
  355         IF( mb1-kb-knb+1.EQ.0 ) 
THEN 
  362     $                        t( 1, kb ), ldt, a( kb, kb ), lda,
 
  363     $                        dummy( 1, 1 ), 1, work, knb )
 
  366     $                        t( 1, kb ), ldt, a( kb, kb ), lda,
 
  367     $                        a( kb+knb, kb), lda, work, knb )
 
  373      work( 1 ) = dble( lworkopt )