171 SUBROUTINE dlaqps( M, N, OFFSET, NB, KB, A, LDA, JPVT, TAU,
173 $ VN2, AUXV, F, LDF )
180 INTEGER KB, LDA, LDF, M, N, NB, OFFSET
184 DOUBLE PRECISION A( LDA, * ), AUXV( * ), F( LDF, * ), TAU( * ),
191 DOUBLE PRECISION ZERO, ONE
192 PARAMETER ( ZERO = 0.0d+0, one = 1.0d+0 )
195 INTEGER ITEMP, J, K, LASTRK, LSTICC, PVT, RK
196 DOUBLE PRECISION AKK, TEMP, TEMP2, TOL3Z
202 INTRINSIC abs, dble, max, min, nint, sqrt
206 DOUBLE PRECISION DLAMCH, DNRM2
207 EXTERNAL idamax, dlamch, dnrm2
211 lastrk = min( m, n+offset )
214 tol3z = sqrt(dlamch(
'Epsilon'))
219 IF( ( k.LT.nb ) .AND. ( lsticc.EQ.0 ) )
THEN
225 pvt = ( k-1 ) + idamax( n-k+1, vn1( k ), 1 )
227 CALL dswap( m, a( 1, pvt ), 1, a( 1, k ), 1 )
228 CALL dswap( k-1, f( pvt, 1 ), ldf, f( k, 1 ), ldf )
230 jpvt( pvt ) = jpvt( k )
232 vn1( pvt ) = vn1( k )
233 vn2( pvt ) = vn2( k )
240 CALL dgemv(
'No transpose', m-rk+1, k-1, -one, a( rk,
242 $ lda, f( k, 1 ), ldf, one, a( rk, k ), 1 )
248 CALL dlarfg( m-rk+1, a( rk, k ), a( rk+1, k ), 1,
251 CALL dlarfg( 1, a( rk, k ), a( rk, k ), 1, tau( k ) )
262 CALL dgemv(
'Transpose', m-rk+1, n-k, tau( k ),
263 $ a( rk, k+1 ), lda, a( rk, k ), 1, zero,
278 CALL dgemv(
'Transpose', m-rk+1, k-1, -tau( k ), a( rk,
280 $ lda, a( rk, k ), 1, zero, auxv( 1 ), 1 )
282 CALL dgemv(
'No transpose', n, k-1, one, f( 1, 1 ), ldf,
283 $ auxv( 1 ), 1, one, f( 1, k ), 1 )
290 CALL dgemv(
'No transpose', n-k, k, -one, f( k+1, 1 ),
292 $ a( rk, 1 ), lda, one, a( rk, k+1 ), lda )
297 IF( rk.LT.lastrk )
THEN
299 IF( vn1( j ).NE.zero )
THEN
304 temp = abs( a( rk, j ) ) / vn1( j )
305 temp = max( zero, ( one+temp )*( one-temp ) )
306 temp2 = temp*( vn1( j ) / vn2( j ) )**2
307 IF( temp2 .LE. tol3z )
THEN
308 vn2( j ) = dble( lsticc )
311 vn1( j ) = vn1( j )*sqrt( temp )
330 IF( kb.LT.min( n, m-offset ) )
THEN
331 CALL dgemm(
'No transpose',
'Transpose', m-rk, n-kb, kb,
333 $ a( rk+1, 1 ), lda, f( kb+1, 1 ), ldf, one,
334 $ a( rk+1, kb+1 ), lda )
340 IF( lsticc.GT.0 )
THEN
341 itemp = nint( vn2( lsticc ) )
342 vn1( lsticc ) = dnrm2( m-rk, a( rk+1, lsticc ), 1 )
348 vn2( lsticc ) = vn1( lsticc )
subroutine dlaqps(m, n, offset, nb, kb, a, lda, jpvt, tau, vn1, vn2, auxv, f, ldf)
DLAQPS computes a step of QR factorization with column pivoting of a real m-by-n matrix A by using BL...