247 SUBROUTINE claed7( 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 REAL D( * ), GIVNUM( 2, * ), QSTORE( * ), RWORK( * )
266 COMPLEX 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(
'CLAED7', -info )
327 DO 10 i = 1, curlvl - 1
328 ptr = ptr + 2**( tlvls-i )
331 CALL slaeda( 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 claed8( 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 slaed9( k, 1, k, n, d, rwork( iq ), k, rho,
360 $ rwork( idlmda ), rwork( iw ),
361 $ qstore( qptr( curr ) ), k, info )
362 CALL clacrm( qsiz, k, work, qsiz, qstore( qptr( curr ) ), k, q,
364 qptr( curr+1 ) = qptr( curr ) + k**2
373 CALL slamrg( n1, n2, d, 1, -1, indxq )
375 qptr( curr+1 ) = qptr( curr )