254 SUBROUTINE slaed7( ICOMPQ, N, QSIZ, TLVLS, CURLVL, CURPBM, D,
256 $ LDQ, INDXQ, RHO, CUTPNT, QSTORE, QPTR, PRMPTR,
257 $ PERM, GIVPTR, GIVCOL, GIVNUM, WORK, IWORK,
265 INTEGER CURLVL, CURPBM, CUTPNT, ICOMPQ, INFO, LDQ, N,
270 INTEGER GIVCOL( 2, * ), GIVPTR( * ), INDXQ( * ),
271 $ iwork( * ), perm( * ), prmptr( * ), qptr( * )
272 REAL D( * ), GIVNUM( 2, * ), Q( LDQ, * ),
273 $ QSTORE( * ), WORK( * )
280 PARAMETER ( ONE = 1.0e0, zero = 0.0e0 )
283 INTEGER COLTYP, CURR, I, IDLMDA, INDX, INDXC, INDXP,
284 $ iq2, is, iw, iz, k, ldq2, n1, n2, ptr
299 IF( icompq.LT.0 .OR. icompq.GT.1 )
THEN
301 ELSE IF( n.LT.0 )
THEN
303 ELSE IF( icompq.EQ.1 .AND. qsiz.LT.n )
THEN
305 ELSE IF( ldq.LT.max( 1, n ) )
THEN
307 ELSE IF( min( 1, n ).GT.cutpnt .OR. n.LT.cutpnt )
THEN
311 CALL xerbla(
'SLAED7', -info )
324 IF( icompq.EQ.1 )
THEN
345 DO 10 i = 1, curlvl - 1
346 ptr = ptr + 2**( tlvls-i )
349 CALL slaeda( n, tlvls, curlvl, curpbm, prmptr, perm, givptr,
350 $ givcol, givnum, qstore, qptr, work( iz ),
351 $ work( iz+n ), info )
357 IF( curlvl.EQ.tlvls )
THEN
365 CALL slaed8( icompq, k, n, qsiz, d, q, ldq, indxq, rho, cutpnt,
366 $ work( iz ), work( idlmda ), work( iq2 ), ldq2,
367 $ work( iw ), perm( prmptr( curr ) ), givptr( curr+1 ),
368 $ givcol( 1, givptr( curr ) ),
369 $ givnum( 1, givptr( curr ) ), iwork( indxp ),
370 $ iwork( indx ), info )
371 prmptr( curr+1 ) = prmptr( curr ) + n
372 givptr( curr+1 ) = givptr( curr+1 ) + givptr( curr )
377 CALL slaed9( k, 1, k, n, d, work( is ), k, rho,
379 $ work( iw ), qstore( qptr( curr ) ), k, info )
382 IF( icompq.EQ.1 )
THEN
383 CALL sgemm(
'N',
'N', qsiz, k, k, one, work( iq2 ), ldq2,
384 $ qstore( qptr( curr ) ), k, zero, q, ldq )
386 qptr( curr+1 ) = qptr( curr ) + k**2
392 CALL slamrg( n1, n2, d, 1, -1, indxq )
394 qptr( curr+1 ) = qptr( curr )
subroutine slaed7(icompq, n, qsiz, tlvls, curlvl, curpbm, d, q, ldq, indxq, rho, cutpnt, qstore, qptr, prmptr, perm, givptr, givcol, givnum, work, iwork, info)
SLAED7 used by SSTEDC. Computes the updated eigensystem of a diagonal matrix after modification by a ...
subroutine slaed8(icompq, k, n, qsiz, d, q, ldq, indxq, rho, cutpnt, z, dlambda, q2, ldq2, w, perm, givptr, givcol, givnum, indxp, indx, info)
SLAED8 used by SSTEDC. Merges eigenvalues and deflates secular equation. Used when the original matri...
subroutine slaed9(k, kstart, kstop, n, d, q, ldq, rho, dlambda, w, s, lds, info)
SLAED9 used by SSTEDC. Finds the roots of the secular equation and updates the eigenvectors....
subroutine slaeda(n, tlvls, curlvl, curpbm, prmptr, perm, givptr, givcol, givnum, q, qptr, z, ztemp, info)
SLAEDA used by SSTEDC. Computes the Z vector determining the rank-one modification of the diagonal ma...