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