143      SUBROUTINE slaqp2( M, N, OFFSET, A, LDA, JPVT, TAU, VN1, VN2,
 
  151      INTEGER            LDA, M, N, OFFSET
 
  155      REAL               A( LDA, * ), TAU( * ), VN1( * ), VN2( * ),
 
  163      parameter( zero = 0.0e+0, one = 1.0e+0 )
 
  166      INTEGER            I, ITEMP, J, MN, OFFPI, PVT
 
  167      REAL               TEMP, TEMP2, TOL3Z
 
  173      INTRINSIC          abs, max, min, sqrt
 
  178      EXTERNAL           isamax, slamch, snrm2
 
  182      mn = min( m-offset, n )
 
  183      tol3z = sqrt(slamch(
'Epsilon'))
 
  193         pvt = ( i-1 ) + isamax( n-i+1, vn1( i ), 1 )
 
  196            CALL sswap( m, a( 1, pvt ), 1, a( 1, i ), 1 )
 
  198            jpvt( pvt ) = jpvt( i )
 
  200            vn1( pvt ) = vn1( i )
 
  201            vn2( pvt ) = vn2( i )
 
  206         IF( offpi.LT.m ) 
THEN 
  207            CALL slarfg( m-offpi+1, a( offpi, i ), a( offpi+1, i ),
 
  211            CALL slarfg( 1, a( m, i ), a( m, i ), 1, tau( i ) )
 
  218            CALL slarf1f( 
'Left', m-offpi+1, n-i, a( offpi, i ), 1,
 
  219     $                    tau( i ), a( offpi, i+1 ), lda, work( 1 ) )
 
  225            IF( vn1( j ).NE.zero ) 
THEN 
  230               temp = one - ( abs( a( offpi, j ) ) / vn1( j ) )**2
 
  231               temp = max( temp, zero )
 
  232               temp2 = temp*( vn1( j ) / vn2( j ) )**2
 
  233               IF( temp2 .LE. tol3z ) 
THEN 
  234                  IF( offpi.LT.m ) 
THEN 
  235                     vn1( j ) = snrm2( m-offpi, a( offpi+1, j ), 1 )
 
  242                  vn1( j ) = vn1( j )*sqrt( temp )
 
 
subroutine slaqp2(m, n, offset, a, lda, jpvt, tau, vn1, vn2, work)
SLAQP2 computes a QR factorization with column pivoting of the matrix block.
subroutine slarfg(n, alpha, x, incx, tau)
SLARFG generates an elementary reflector (Householder matrix).
subroutine slarf1f(side, m, n, v, incv, tau, c, ldc, work)
SLARF1F applies an elementary reflector to a general rectangular