154 SUBROUTINE dlaed9( K, KSTART, KSTOP, N, D, Q, LDQ, RHO, DLAMBDA,
162 INTEGER INFO, K, KSTART, KSTOP, LDQ, LDS, N
166 DOUBLE PRECISION D( * ), DLAMBDA( * ), Q( LDQ, * ), S( LDS, * ),
174 DOUBLE PRECISION TEMP
177 DOUBLE PRECISION DNRM2
184 INTRINSIC max, sign, sqrt
194 ELSE IF( kstart.LT.1 .OR. kstart.GT.max( 1, k ) )
THEN
196 ELSE IF( max( 1, kstop ).LT.kstart .OR. kstop.GT.max( 1, k ) )
199 ELSE IF( n.LT.k )
THEN
201 ELSE IF( ldq.LT.max( 1, k ) )
THEN
203 ELSE IF( lds.LT.max( 1, k ) )
THEN
207 CALL xerbla(
'DLAED9', -info )
216 DO 20 j = kstart, kstop
217 CALL dlaed4( k, j, dlambda, w, q( 1, j ), rho, d( j ), info )
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 xerbla(srname, info)
subroutine dcopy(n, dx, incx, dy, incy)
DCOPY
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....