183 SUBROUTINE dlaed3( K, N, N1, D, Q, LDQ, RHO, DLAMDA, Q2, INDX,
191 INTEGER INFO, K, LDQ, N, N1
195 INTEGER CTOT( * ), INDX( * )
196 DOUBLE PRECISION D( * ), DLAMDA( * ), Q( LDQ, * ), Q2( * ),
203 DOUBLE PRECISION ONE, ZERO
204 parameter( one = 1.0d0, zero = 0.0d0 )
207 INTEGER I, II, IQ2, J, N12, N2, N23
208 DOUBLE PRECISION TEMP
211 DOUBLE PRECISION DLAMC3, DNRM2
212 EXTERNAL dlamc3, dnrm2
218 INTRINSIC max, sign, sqrt
228 ELSE IF( n.LT.k )
THEN
230 ELSE IF( ldq.LT.max( 1, n ) )
THEN
234 CALL xerbla(
'DLAED3', -info )
261 dlamda( i ) = dlamc3( dlamda( i ), dlamda( i ) ) - dlamda( i )
265 CALL dlaed4( k, j, dlamda, w, q( 1, j ), rho, d( j ), info )
289 CALL dcopy( k, w, 1, s, 1 )
293 CALL dcopy( k, q, ldq+1, w, 1 )
296 w( i ) = w( i )*( q( i, j ) / ( dlamda( i )-dlamda( j ) ) )
299 w( i ) = w( i )*( q( i, j ) / ( dlamda( i )-dlamda( j ) ) )
303 w( i ) = sign( sqrt( -w( i ) ), s( i ) )
310 s( i ) = w( i ) / q( i, j )
312 temp = dnrm2( k, s, 1 )
315 q( i, j ) = s( ii ) / temp
324 n12 = ctot( 1 ) + ctot( 2 )
325 n23 = ctot( 2 ) + ctot( 3 )
327 CALL dlacpy(
'A', n23, k, q( ctot( 1 )+1, 1 ), ldq, s, n23 )
330 CALL dgemm(
'N',
'N', n2, k, n23, one, q2( iq2 ), n2, s, n23,
331 $ zero, q( n1+1, 1 ), ldq )
333 CALL dlaset(
'A', n2, k, zero, zero, q( n1+1, 1 ), ldq )
336 CALL dlacpy(
'A', n12, k, q, ldq, s, n12 )
338 CALL dgemm(
'N',
'N', n1, k, n12, one, q2, n1, s, n12, zero, q,
341 CALL dlaset(
'A', n1, k, zero, zero, q( 1, 1 ), ldq )
subroutine dlacpy(UPLO, M, N, A, LDA, B, LDB)
DLACPY copies all or part of one two-dimensional array to another.
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.
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dlaed4(N, I, D, Z, DELTA, RHO, DLAM, INFO)
DLAED4 used by DSTEDC. Finds a single root of the secular equation.
subroutine dlaed3(K, N, N1, D, Q, LDQ, RHO, DLAMDA, Q2, INDX, CTOT, W, S, INFO)
DLAED3 used by DSTEDC. Finds the roots of the secular equation and updates the eigenvectors....
subroutine dcopy(N, DX, INCX, DY, INCY)
DCOPY
subroutine dgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
DGEMM