154 SUBROUTINE slaed9( K, KSTART, KSTOP, N, D, Q, LDQ, RHO, DLAMDA, W,
162 INTEGER INFO, K, KSTART, KSTOP, LDQ, LDS, N
166 REAL D( * ), DLAMDA( * ), Q( ldq, * ), S( lds, * ),
178 EXTERNAL slamc3, snrm2
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(
'SLAED9', -info )
234 dlamda( i ) = slamc3( dlamda( i ), dlamda( i ) ) - dlamda( i )
237 DO 20 j = kstart, kstop
238 CALL slaed4( k, j, dlamda, w, q( 1, j ), rho, d( j ), info )
246 IF( k.EQ.1 .OR. k.EQ.2 )
THEN 249 s( j, i ) = q( j, i )
257 CALL scopy( k, w, 1, s, 1 )
261 CALL scopy( k, q, ldq+1, w, 1 )
264 w( i ) = w( i )*( q( i, j ) / ( dlamda( i )-dlamda( j ) ) )
267 w( i ) = w( i )*( q( i, j ) / ( dlamda( i )-dlamda( j ) ) )
271 w( i ) = sign( sqrt( -w( i ) ), s( i, 1 ) )
278 q( i, j ) = w( i ) / q( i, j )
280 temp = snrm2( k, q( 1, j ), 1 )
282 s( i, j ) = q( i, j ) / temp
subroutine slaed9(K, KSTART, KSTOP, N, D, Q, LDQ, RHO, DLAMDA, W, S, LDS, INFO)
SLAED9 used by SSTEDC. Finds the roots of the secular equation and updates the eigenvectors. Used when the original matrix is dense.
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine slaed4(N, I, D, Z, DELTA, RHO, DLAM, INFO)
SLAED4 used by SSTEDC. Finds a single root of the secular equation.
subroutine scopy(N, SX, INCX, SY, INCY)
SCOPY