203 SUBROUTINE cgebrd( M, N, A, LDA, D, E, TAUQ, TAUP, WORK, LWORK,
211 INTEGER INFO, LDA, LWORK, M, N
215 COMPLEX A( LDA, * ), TAUP( * ), TAUQ( * ),
223 parameter( one = ( 1.0e+0, 0.0e+0 ) )
227 INTEGER I, IINFO, J, LDWRKX, LDWRKY, LWKMIN, LWKOPT,
228 $ minmn, nb, nbmin, nx, ws
234 INTRINSIC max, min, real
239 EXTERNAL ilaenv, sroundup_lwork
247 IF( minmn.EQ.0 )
THEN
252 nb = max( 1, ilaenv( 1,
'CGEBRD',
' ', m, n, -1, -1 ) )
255 work( 1 ) = sroundup_lwork( lwkopt )
256 lquery = ( lwork.EQ.-1 )
259 ELSE IF( n.LT.0 )
THEN
261 ELSE IF( lda.LT.max( 1, m ) )
THEN
263 ELSE IF( lwork.LT.lwkmin .AND. .NOT.lquery )
THEN
267 CALL xerbla(
'CGEBRD', -info )
269 ELSE IF( lquery )
THEN
275 IF( minmn.EQ.0 )
THEN
284 IF( nb.GT.1 .AND. nb.LT.minmn )
THEN
288 nx = max( nb, ilaenv( 3,
'CGEBRD',
' ', m, n, -1, -1 ) )
292 IF( nx.LT.minmn )
THEN
294 IF( lwork.LT.ws )
THEN
299 nbmin = ilaenv( 2,
'CGEBRD',
' ', m, n, -1, -1 )
300 IF( lwork.GE.( m+n )*nbmin )
THEN
312 DO 30 i = 1, minmn - nx, nb
318 CALL clabrd( m-i+1, n-i+1, nb, a( i, i ), lda, d( i ),
320 $ tauq( i ), taup( i ), work, ldwrkx,
321 $ work( ldwrkx*nb+1 ), ldwrky )
326 CALL cgemm(
'No transpose',
'Conjugate transpose', m-i-nb+1,
327 $ n-i-nb+1, nb, -one, a( i+nb, i ), lda,
328 $ work( ldwrkx*nb+nb+1 ), ldwrky, one,
329 $ a( i+nb, i+nb ), lda )
330 CALL cgemm(
'No transpose',
'No transpose', m-i-nb+1,
332 $ nb, -one, work( nb+1 ), ldwrkx, a( i, i+nb ), lda,
333 $ one, a( i+nb, i+nb ), lda )
338 DO 10 j = i, i + nb - 1
343 DO 20 j = i, i + nb - 1
352 CALL cgebd2( m-i+1, n-i+1, a( i, i ), lda, d( i ), e( i ),
353 $ tauq( i ), taup( i ), work, iinfo )
354 work( 1 ) = sroundup_lwork( ws )
subroutine cgebd2(m, n, a, lda, d, e, tauq, taup, work, info)
CGEBD2 reduces a general matrix to bidiagonal form using an unblocked algorithm.
subroutine cgebrd(m, n, a, lda, d, e, tauq, taup, work, lwork, info)
CGEBRD
subroutine cgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
CGEMM
subroutine clabrd(m, n, nb, a, lda, d, e, tauq, taup, x, ldx, y, ldy)
CLABRD reduces the first nb rows and columns of a general matrix to a bidiagonal form.