141 SUBROUTINE claed0( QSIZ, N, D, E, Q, LDQ, QSTORE, LDQS, RWORK,
149 INTEGER INFO, LDQ, LDQS, N, QSIZ
153 REAL D( * ), E( * ), RWORK( * )
154 COMPLEX Q( LDQ, * ), QSTORE( LDQS, * )
163 parameter( two = 2.e+0 )
166 INTEGER CURLVL, CURPRB, CURR, I, IGIVCL, IGIVNM,
167 $ igivpt, indxq, iperm, iprmpt, iq, iqptr, iwrem,
168 $ j, k, lgn, ll, matsiz, msd2, smlsiz, smm1,
169 $ spm1, spm2, submat, subpbs, tlvls
181 INTRINSIC abs, int, log, max, real
193 IF( qsiz.LT.max( 0, n ) )
THEN
195 ELSE IF( n.LT.0 )
THEN
197 ELSE IF( ldq.LT.max( 1, n ) )
THEN
199 ELSE IF( ldqs.LT.max( 1, n ) )
THEN
203 CALL xerbla(
'CLAED0', -info )
212 smlsiz = ilaenv( 9,
'CLAED0',
' ', 0, 0, 0, 0 )
221 IF( iwork( subpbs ).GT.smlsiz )
THEN
222 DO 20 j = subpbs, 1, -1
223 iwork( 2*j ) = ( iwork( j )+1 ) / 2
224 iwork( 2*j-1 ) = iwork( j ) / 2
231 iwork( j ) = iwork( j ) + iwork( j-1 )
239 submat = iwork( i ) + 1
241 d( smm1 ) = d( smm1 ) - abs( e( smm1 ) )
242 d( submat ) = d( submat ) - abs( e( smm1 ) )
250 temp = log( real( n ) ) / log( two )
256 iprmpt = indxq + n + 1
257 iperm = iprmpt + n*lgn
258 iqptr = iperm + n*lgn
259 igivpt = iqptr + n + 2
260 igivcl = igivpt + n*lgn
263 iq = igivnm + 2*n*lgn
264 iwrem = iq + n**2 + 1
267 iwork( iprmpt+i ) = 1
268 iwork( igivpt+i ) = 1
281 submat = iwork( i ) + 1
282 matsiz = iwork( i+1 ) - iwork( i )
284 ll = iq - 1 + iwork( iqptr+curr )
285 CALL ssteqr(
'I', matsiz, d( submat ), e( submat ),
286 $ rwork( ll ), matsiz, rwork, info )
287 CALL clacrm( qsiz, matsiz, q( 1, submat ), ldq, rwork( ll ),
288 $ matsiz, qstore( 1, submat ), ldqs,
290 iwork( iqptr+curr+1 ) = iwork( iqptr+curr ) + matsiz**2
293 info = submat*( n+1 ) + submat + matsiz - 1
297 DO 60 j = submat, iwork( i+1 )
310 IF( subpbs.GT.1 )
THEN
319 submat = iwork( i ) + 1
320 matsiz = iwork( i+2 ) - iwork( i )
332 CALL claed7( matsiz, msd2, qsiz, tlvls, curlvl, curprb,
333 $ d( submat ), qstore( 1, submat ), ldqs,
334 $ e( submat+msd2-1 ), iwork( indxq+submat ),
335 $ rwork( iq ), iwork( iqptr ), iwork( iprmpt ),
336 $ iwork( iperm ), iwork( igivpt ),
337 $ iwork( igivcl ), rwork( igivnm ),
338 $ q( 1, submat ), rwork( iwrem ),
339 $ iwork( subpbs+1 ), info )
341 info = submat*( n+1 ) + submat + matsiz - 1
344 iwork( i / 2+1 ) = iwork( i+2 )
359 CALL ccopy( qsiz, qstore( 1, j ), 1, q( 1, i ), 1 )
361 CALL scopy( n, rwork, 1, d, 1 )
subroutine claed0(qsiz, n, d, e, q, ldq, qstore, ldqs, rwork, iwork, info)
CLAED0 used by CSTEDC. Computes all eigenvalues and corresponding eigenvectors of an unreduced symmet...
subroutine claed7(n, cutpnt, qsiz, tlvls, curlvl, curpbm, d, q, ldq, rho, indxq, qstore, qptr, prmptr, perm, givptr, givcol, givnum, work, rwork, iwork, info)
CLAED7 used by CSTEDC. Computes the updated eigensystem of a diagonal matrix after modification by a ...