159 SUBROUTINE dlaed1( N, D, Q, LDQ, INDXQ, RHO, CUTPNT, WORK,
168 INTEGER CUTPNT, INFO, LDQ, N
172 INTEGER INDXQ( * ), IWORK( * )
173 DOUBLE PRECISION D( * ), Q( LDQ, * ), WORK( * )
179 INTEGER COLTYP, I, IDLMDA, INDX, INDXC, INDXP, IQ2, IS,
180 $ IW, IZ, K, N1, N2, ZPP1
197 ELSE IF( ldq.LT.max( 1, n ) )
THEN
199 ELSE IF( min( 1, n / 2 ).GT.cutpnt .OR. ( n / 2 ).LT.cutpnt )
THEN
203 CALL xerbla(
'DLAED1', -info )
230 CALL dcopy( cutpnt, q( cutpnt, 1 ), ldq, work( iz ), 1 )
232 CALL dcopy( n-cutpnt, q( zpp1, zpp1 ), ldq, work( iz+cutpnt ),
237 CALL dlaed2( k, n, cutpnt, d, q, ldq, indxq, rho, work( iz ),
238 $ work( idlmda ), work( iw ), work( iq2 ),
239 $ iwork( indx ), iwork( indxc ), iwork( indxp ),
240 $ iwork( coltyp ), info )
248 is = ( iwork( coltyp )+iwork( coltyp+1 ) )*cutpnt +
249 $ ( iwork( coltyp+1 )+iwork( coltyp+2 ) )*( n-cutpnt ) + iq2
250 CALL dlaed3( k, n, cutpnt, d, q, ldq, rho, work( idlmda ),
251 $ work( iq2 ), iwork( indxc ), iwork( coltyp ),
252 $ work( iw ), work( is ), info )
260 CALL dlamrg( n1, n2, d, 1, -1, indxq )
subroutine dlaed1(n, d, q, ldq, indxq, rho, cutpnt, work, iwork, info)
DLAED1 used by DSTEDC. Computes the updated eigensystem of a diagonal matrix after modification by a ...
subroutine dlaed2(k, n, n1, d, q, ldq, indxq, rho, z, dlambda, w, q2, indx, indxc, indxp, coltyp, info)
DLAED2 used by DSTEDC. Merges eigenvalues and deflates secular equation. Used when the original matri...
subroutine dlaed3(k, n, n1, d, q, ldq, rho, dlambda, q2, indx, ctot, w, s, info)
DLAED3 used by DSTEDC. Finds the roots of the secular equation and updates the eigenvectors....
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...