245 SUBROUTINE zlaed7( N, CUTPNT, QSIZ, TLVLS, CURLVL, CURPBM, D, Q,
246 $ LDQ, RHO, INDXQ, QSTORE, QPTR, PRMPTR, PERM,
247 $ GIVPTR, GIVCOL, GIVNUM, WORK, RWORK, IWORK,
255 INTEGER CURLVL, CURPBM, CUTPNT, INFO, LDQ, N, QSIZ,
260 INTEGER GIVCOL( 2, * ), GIVPTR( * ), INDXQ( * ),
261 $ IWORK( * ), PERM( * ), PRMPTR( * ), QPTR( * )
262 DOUBLE PRECISION D( * ), GIVNUM( 2, * ), QSTORE( * ), RWORK( * )
263 COMPLEX*16 Q( LDQ, * ), WORK( * )
269 INTEGER COLTYP, CURR, I, IDLMDA, INDX,
270 $ INDXC, INDXP, IQ, IW, IZ, K, N1, N2, PTR
289 ELSE IF( min( 1, n ).GT.cutpnt .OR. n.LT.cutpnt )
THEN
291 ELSE IF( qsiz.LT.n )
THEN
293 ELSE IF( ldq.LT.max( 1, n ) )
THEN
297 CALL xerbla(
'ZLAED7', -info )
324 DO 10 i = 1, curlvl - 1
325 ptr = ptr + 2**( tlvls-i )
328 CALL dlaeda( n, tlvls, curlvl, curpbm, prmptr, perm, givptr,
329 $ givcol, givnum, qstore, qptr, rwork( iz ),
330 $ rwork( iz+n ), info )
336 IF( curlvl.EQ.tlvls )
THEN
344 CALL zlaed8( k, n, qsiz, q, ldq, d, rho, cutpnt, rwork( iz ),
345 $ rwork( idlmda ), work, qsiz, rwork( iw ),
346 $ iwork( indxp ), iwork( indx ), indxq,
347 $ perm( prmptr( curr ) ), givptr( curr+1 ),
348 $ givcol( 1, givptr( curr ) ),
349 $ givnum( 1, givptr( curr ) ), info )
350 prmptr( curr+1 ) = prmptr( curr ) + n
351 givptr( curr+1 ) = givptr( curr+1 ) + givptr( curr )
356 CALL dlaed9( k, 1, k, n, d, rwork( iq ), k, rho,
357 $ rwork( idlmda ), rwork( iw ),
358 $ qstore( qptr( curr ) ), k, info )
359 CALL zlacrm( qsiz, k, work, qsiz, qstore( qptr( curr ) ), k, q,
361 qptr( curr+1 ) = qptr( curr ) + k**2
370 CALL dlamrg( n1, n2, d, 1, -1, indxq )
372 qptr( curr+1 ) = qptr( curr )
subroutine xerbla(srname, info)
subroutine zlacrm(m, n, a, lda, b, ldb, c, ldc, rwork)
ZLACRM multiplies a complex matrix by a square real matrix.
subroutine zlaed7(n, cutpnt, qsiz, tlvls, curlvl, curpbm, d, q, ldq, rho, indxq, qstore, qptr, prmptr, perm, givptr, givcol, givnum, work, rwork, iwork, info)
ZLAED7 used by ZSTEDC. Computes the updated eigensystem of a diagonal matrix after modification by a ...
subroutine zlaed8(k, n, qsiz, q, ldq, d, rho, cutpnt, z, dlambda, q2, ldq2, w, indxp, indx, indxq, perm, givptr, givcol, givnum, info)
ZLAED8 used by ZSTEDC. Merges eigenvalues and deflates secular equation. Used when the original matri...
subroutine dlaed9(k, kstart, kstop, n, d, q, ldq, rho, dlambda, w, s, lds, info)
DLAED9 used by DSTEDC. Finds the roots of the secular equation and updates the eigenvectors....
subroutine dlaeda(n, tlvls, curlvl, curpbm, prmptr, perm, givptr, givcol, givnum, q, qptr, z, ztemp, info)
DLAEDA used by DSTEDC. Computes the Z vector determining the rank-one modification of the diagonal ma...
subroutine dlamrg(n1, n2, a, dtrd1, dtrd2, index)
DLAMRG creates a permutation list to merge the entries of two independently sorted sets into a single...