183 SUBROUTINE slaed3( K, N, N1, D, Q, LDQ, RHO, DLAMDA, Q2, INDX,
191 INTEGER INFO, K, LDQ, N, N1
195 INTEGER CTOT( * ), INDX( * )
196 REAL D( * ), DLAMDA( * ), Q( LDQ, * ), Q2( * ),
204 parameter( one = 1.0e0, zero = 0.0e0 )
207 INTEGER I, II, IQ2, J, N12, N2, N23
212 EXTERNAL slamc3, snrm2
218 INTRINSIC max, sign, sqrt
228 ELSE IF( n.LT.k )
THEN
230 ELSE IF( ldq.LT.max( 1, n ) )
THEN
234 CALL xerbla(
'SLAED3', -info )
261 dlamda( i ) = slamc3( dlamda( i ), dlamda( i ) ) - dlamda( i )
265 CALL slaed4( k, j, dlamda, w, q( 1, j ), rho, d( j ), info )
289 CALL scopy( k, w, 1, s, 1 )
293 CALL scopy( 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 = snrm2( k, s, 1 )
315 q( i, j ) = s( ii ) / temp
324 n12 = ctot( 1 ) + ctot( 2 )
325 n23 = ctot( 2 ) + ctot( 3 )
327 CALL slacpy(
'A', n23, k, q( ctot( 1 )+1, 1 ), ldq, s, n23 )
330 CALL sgemm(
'N',
'N', n2, k, n23, one, q2( iq2 ), n2, s, n23,
331 $ zero, q( n1+1, 1 ), ldq )
333 CALL slaset(
'A', n2, k, zero, zero, q( n1+1, 1 ), ldq )
336 CALL slacpy(
'A', n12, k, q, ldq, s, n12 )
338 CALL sgemm(
'N',
'N', n1, k, n12, one, q2, n1, s, n12, zero, q,
341 CALL slaset(
'A', n1, k, zero, zero, q( 1, 1 ), ldq )
subroutine slaset(UPLO, M, N, ALPHA, BETA, A, LDA)
SLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values.
subroutine slacpy(UPLO, M, N, A, LDA, B, LDB)
SLACPY copies all or part of one two-dimensional array to another.
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine slaed3(K, N, N1, D, Q, LDQ, RHO, DLAMDA, Q2, INDX, CTOT, W, S, INFO)
SLAED3 used by SSTEDC. Finds the roots of the secular equation and updates the eigenvectors....
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
subroutine sgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
SGEMM