247 SUBROUTINE zlaed7( N, CUTPNT, QSIZ, TLVLS, CURLVL, CURPBM, D, Q,
248 $ ldq, rho, indxq, qstore, qptr, prmptr, perm,
249 $ givptr, givcol, givnum, work, rwork, iwork,
258 INTEGER curlvl, curpbm, cutpnt, info, ldq, n, qsiz,
263 INTEGER givcol( 2, * ), givptr( * ), indxq( * ),
264 $ iwork( * ), perm( * ), prmptr( * ), qptr( * )
265 DOUBLE PRECISION d( * ), givnum( 2, * ), qstore( * ), rwork( * )
266 COMPLEX*16 q( ldq, * ), work( * )
272 INTEGER coltyp, curr, i, idlmda, indx,
273 $ indxc, indxp, iq, iw, iz, k, n1, n2, ptr
292 ELSE IF( min( 1, n ).GT.cutpnt .OR. n.LT.cutpnt )
THEN
294 ELSE IF( qsiz.LT.n )
THEN
296 ELSE IF( ldq.LT.max( 1, n ) )
THEN
300 CALL
xerbla(
'ZLAED7', -info )
327 DO 10 i = 1, curlvl - 1
328 ptr = ptr + 2**( tlvls-i )
331 CALL
dlaeda( n, tlvls, curlvl, curpbm, prmptr, perm, givptr,
332 $ givcol, givnum, qstore, qptr, rwork( iz ),
333 $ rwork( iz+n ), info )
339 IF( curlvl.EQ.tlvls )
THEN
347 CALL
zlaed8( k, n, qsiz, q, ldq, d, rho, cutpnt, rwork( iz ),
348 $ rwork( idlmda ), work, qsiz, rwork( iw ),
349 $ iwork( indxp ), iwork( indx ), indxq,
350 $ perm( prmptr( curr ) ), givptr( curr+1 ),
351 $ givcol( 1, givptr( curr ) ),
352 $ givnum( 1, givptr( curr ) ), info )
353 prmptr( curr+1 ) = prmptr( curr ) + n
354 givptr( curr+1 ) = givptr( curr+1 ) + givptr( curr )
359 CALL
dlaed9( k, 1, k, n, d, rwork( iq ), k, rho,
360 $ rwork( idlmda ), rwork( iw ),
361 $ qstore( qptr( curr ) ), k, info )
362 CALL
zlacrm( qsiz, k, work, qsiz, qstore( qptr( curr ) ), k, q,
364 qptr( curr+1 ) = qptr( curr ) + k**2
373 CALL
dlamrg( n1, n2, d, 1, -1, indxq )
375 qptr( curr+1 ) = qptr( curr )