163 SUBROUTINE dlaed1( N, D, Q, LDQ, INDXQ, RHO, CUTPNT, WORK, IWORK,
172 INTEGER cutpnt, info, ldq, n
176 INTEGER indxq( * ), iwork( * )
177 DOUBLE PRECISION d( * ), q( ldq, * ), work( * )
183 INTEGER coltyp, i, idlmda, indx, indxc, indxp, iq2, is,
184 $ iw, iz, k, n1, n2, zpp1
200 ELSE IF( ldq.LT.max( 1, n ) )
THEN
202 ELSE IF( min( 1, n / 2 ).GT.cutpnt .OR. ( n / 2 ).LT.cutpnt )
THEN
206 CALL
xerbla(
'DLAED1', -info )
233 CALL
dcopy( cutpnt, q( cutpnt, 1 ), ldq, work( iz ), 1 )
235 CALL
dcopy( n-cutpnt, q( zpp1, zpp1 ), ldq, work( iz+cutpnt ), 1 )
239 CALL
dlaed2( k, n, cutpnt, d, q, ldq, indxq, rho, work( iz ),
240 $ work( idlmda ), work( iw ), work( iq2 ),
241 $ iwork( indx ), iwork( indxc ), iwork( indxp ),
242 $ iwork( coltyp ), info )
250 is = ( iwork( coltyp )+iwork( coltyp+1 ) )*cutpnt +
251 $ ( iwork( coltyp+1 )+iwork( coltyp+2 ) )*( n-cutpnt ) + iq2
252 CALL
dlaed3( k, n, cutpnt, d, q, ldq, rho, work( idlmda ),
253 $ work( iq2 ), iwork( indxc ), iwork( coltyp ),
254 $ work( iw ), work( is ), info )
262 CALL
dlamrg( n1, n2, d, 1, -1, indxq )