152 SUBROUTINE dlaed9( K, KSTART, KSTOP, N, D, Q, LDQ, RHO,
161 INTEGER INFO, K, KSTART, KSTOP, LDQ, LDS, N
165 DOUBLE PRECISION D( * ), DLAMBDA( * ), Q( LDQ, * ), S( LDS, * ),
173 DOUBLE PRECISION TEMP
176 DOUBLE PRECISION DNRM2
183 INTRINSIC max, sign, sqrt
193 ELSE IF( kstart.LT.1 .OR. kstart.GT.max( 1, k ) )
THEN
195 ELSE IF( max( 1, kstop ).LT.kstart .OR. kstop.GT.max( 1, k ) )
198 ELSE IF( n.LT.k )
THEN
200 ELSE IF( ldq.LT.max( 1, k ) )
THEN
202 ELSE IF( lds.LT.max( 1, k ) )
THEN
206 CALL xerbla(
'DLAED9', -info )
215 DO 20 j = kstart, kstop
216 CALL dlaed4( k, j, dlambda, w, q( 1, j ), rho, d( j ),
225 IF( k.EQ.1 .OR. k.EQ.2 )
THEN
228 s( j, i ) = q( j, i )
236 CALL dcopy( k, w, 1, s, 1 )
240 CALL dcopy( k, q, ldq+1, w, 1 )
243 w( i ) = w( i )*( q( i, j )/( dlambda( i )-dlambda( j ) ) )
246 w( i ) = w( i )*( q( i, j )/( dlambda( i )-dlambda( j ) ) )
250 w( i ) = sign( sqrt( -w( i ) ), s( i, 1 ) )
257 q( i, j ) = w( i ) / q( i, j )
259 temp = dnrm2( k, q( 1, j ), 1 )
261 s( i, j ) = q( i, j ) / temp
subroutine dlaed4(n, i, d, z, delta, rho, dlam, info)
DLAED4 used by DSTEDC. Finds a single root of the secular equation.
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....