175 SUBROUTINE dlaed3( K, N, N1, D, Q, LDQ, RHO, DLAMBDA, Q2, INDX,
183 INTEGER INFO, K, LDQ, N, N1
187 INTEGER CTOT( * ), INDX( * )
188 DOUBLE PRECISION D( * ), DLAMBDA( * ), Q( LDQ, * ), Q2( * ),
195 DOUBLE PRECISION ONE, ZERO
196 parameter( one = 1.0d0, zero = 0.0d0 )
199 INTEGER I, II, IQ2, J, N12, N2, N23
200 DOUBLE PRECISION TEMP
203 DOUBLE PRECISION DNRM2
210 INTRINSIC max, sign, sqrt
220 ELSE IF( n.LT.k )
THEN
222 ELSE IF( ldq.LT.max( 1, n ) )
THEN
226 CALL xerbla(
'DLAED3', -info )
237 CALL dlaed4( k, j, dlambda, w, q( 1, j ), rho, d( j ), info )
261 CALL dcopy( k, w, 1, s, 1 )
265 CALL dcopy( k, q, ldq+1, w, 1 )
268 w( i ) = w( i )*( q( i, j )/( dlambda( i )-dlambda( j ) ) )
271 w( i ) = w( i )*( q( i, j )/( dlambda( i )-dlambda( j ) ) )
275 w( i ) = sign( sqrt( -w( i ) ), s( i ) )
282 s( i ) = w( i ) / q( i, j )
284 temp = dnrm2( k, s, 1 )
287 q( i, j ) = s( ii ) / temp
296 n12 = ctot( 1 ) + ctot( 2 )
297 n23 = ctot( 2 ) + ctot( 3 )
299 CALL dlacpy(
'A', n23, k, q( ctot( 1 )+1, 1 ), ldq, s, n23 )
302 CALL dgemm(
'N',
'N', n2, k, n23, one, q2( iq2 ), n2, s, n23,
303 $ zero, q( n1+1, 1 ), ldq )
305 CALL dlaset(
'A', n2, k, zero, zero, q( n1+1, 1 ), ldq )
308 CALL dlacpy(
'A', n12, k, q, ldq, s, n12 )
310 CALL dgemm(
'N',
'N', n1, k, n12, one, q2, n1, s, n12, zero, q,
313 CALL dlaset(
'A', n1, k, zero, zero, q( 1, 1 ), ldq )
subroutine xerbla(srname, info)
subroutine dcopy(n, dx, incx, dy, incy)
DCOPY
subroutine dgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
DGEMM
subroutine dlacpy(uplo, m, n, a, lda, b, ldb)
DLACPY copies all or part of one two-dimensional array to another.
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 dlaed4(n, i, d, z, delta, rho, dlam, info)
DLAED4 used by DSTEDC. Finds a single root of the secular equation.
subroutine dlaset(uplo, m, n, alpha, beta, a, lda)
DLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values.