119      DOUBLE PRECISION FUNCTION dqpt01( M, N, K, A, AF, LDA, TAU, JPVT,
 
  127      INTEGER            k, lda, lwork, m, n
 
  131      DOUBLE PRECISION   a( lda, * ), af( lda, * ), tau( * ),
 
  138      DOUBLE PRECISION   zero, one
 
  139      parameter( zero = 0.0d0, one = 1.0d0 )
 
  143      DOUBLE PRECISION   norma
 
  146      DOUBLE PRECISION   rwork( 1 )
 
  156      INTRINSIC          dble, max, min
 
  164      IF( lwork.LT.m*n+n ) 
THEN 
  165         CALL xerbla( 
'DQPT01', 10 )
 
  171      IF( m.LE.0 .OR. n.LE.0 )
 
  174      norma = 
dlange( 
'One-norm', m, n, a, lda, rwork )
 
  181         DO i = 1, min( j, m )
 
  182            work( ( j-1 )*m+i ) = af( i, j )
 
  188            work( ( j-1 )*m+i ) = zero
 
  198         CALL dcopy( m, af( 1, j ), 1, work( ( j-1 )*m+1 ), 1 )
 
  201      CALL dormqr( 
'Left', 
'No transpose', m, n, k, af, lda, tau, work,
 
  202     $             m, work( m*n+1 ), lwork-m*n, info )
 
  208         CALL daxpy( m, -one, a( 1, jpvt( j ) ), 1, work( ( j-1 )*m+1 ),
 
  213     $         ( dble( max( m, n ) )*
dlamch( 
'Epsilon' ) )
 
 
double precision function dqpt01(m, n, k, a, af, lda, tau, jpvt, work, lwork)
DQPT01
double precision function dlange(norm, m, n, a, lda, work)
DLANGE returns the value of the 1-norm, Frobenius norm, infinity-norm, or the largest absolute value ...
subroutine dormqr(side, trans, m, n, k, a, lda, tau, c, ldc, work, lwork, info)
DORMQR