172 SUBROUTINE claqps( M, N, OFFSET, NB, KB, A, LDA, JPVT, TAU,
174 $ VN2, AUXV, F, LDF )
181 INTEGER KB, LDA, LDF, M, N, NB, OFFSET
185 REAL VN1( * ), VN2( * )
186 COMPLEX A( LDA, * ), AUXV( * ), F( LDF, * ), TAU( * )
194 parameter( zero = 0.0e+0, one = 1.0e+0,
195 $ czero = ( 0.0e+0, 0.0e+0 ),
196 $ cone = ( 1.0e+0, 0.0e+0 ) )
199 INTEGER ITEMP, J, K, LASTRK, LSTICC, PVT, RK
200 REAL TEMP, TEMP2, TOL3Z
207 INTRINSIC abs, conjg, max, min, nint, real, sqrt
212 EXTERNAL isamax, scnrm2, slamch
216 lastrk = min( m, n+offset )
219 tol3z = sqrt(slamch(
'Epsilon'))
224 IF( ( k.LT.nb ) .AND. ( lsticc.EQ.0 ) )
THEN
230 pvt = ( k-1 ) + isamax( n-k+1, vn1( k ), 1 )
232 CALL cswap( m, a( 1, pvt ), 1, a( 1, k ), 1 )
233 CALL cswap( k-1, f( pvt, 1 ), ldf, f( k, 1 ), ldf )
235 jpvt( pvt ) = jpvt( k )
237 vn1( pvt ) = vn1( k )
238 vn2( pvt ) = vn2( k )
246 f( k, j ) = conjg( f( k, j ) )
248 CALL cgemv(
'No transpose', m-rk+1, k-1, -cone, a( rk,
250 $ lda, f( k, 1 ), ldf, cone, a( rk, k ), 1 )
252 f( k, j ) = conjg( f( k, j ) )
259 CALL clarfg( m-rk+1, a( rk, k ), a( rk+1, k ), 1,
262 CALL clarfg( 1, a( rk, k ), a( rk, k ), 1, tau( k ) )
273 CALL cgemv(
'Conjugate transpose', m-rk+1, n-k, tau( k ),
274 $ a( rk, k+1 ), lda, a( rk, k ), 1, czero,
289 CALL cgemv(
'Conjugate transpose', m-rk+1, k-1,
291 $ a( rk, 1 ), lda, a( rk, k ), 1, czero,
294 CALL cgemv(
'No transpose', n, k-1, cone, f( 1, 1 ), ldf,
295 $ auxv( 1 ), 1, cone, f( 1, k ), 1 )
302 CALL cgemm(
'No transpose',
'Conjugate transpose', 1,
304 $ k, -cone, a( rk, 1 ), lda, f( k+1, 1 ), ldf,
305 $ cone, a( rk, k+1 ), lda )
310 IF( rk.LT.lastrk )
THEN
312 IF( vn1( j ).NE.zero )
THEN
317 temp = abs( a( rk, j ) ) / vn1( j )
318 temp = max( zero, ( one+temp )*( one-temp ) )
319 temp2 = temp*( vn1( j ) / vn2( j ) )**2
320 IF( temp2 .LE. tol3z )
THEN
321 vn2( j ) = real( lsticc )
324 vn1( j ) = vn1( j )*sqrt( temp )
343 IF( kb.LT.min( n, m-offset ) )
THEN
344 CALL cgemm(
'No transpose',
'Conjugate transpose', m-rk,
346 $ kb, -cone, a( rk+1, 1 ), lda, f( kb+1, 1 ), ldf,
347 $ cone, a( rk+1, kb+1 ), lda )
353 IF( lsticc.GT.0 )
THEN
354 itemp = nint( vn2( lsticc ) )
355 vn1( lsticc ) = scnrm2( m-rk, a( rk+1, lsticc ), 1 )
361 vn2( lsticc ) = vn1( lsticc )