Developer Reference for Intel® oneAPI Math Kernel Library for Fortran
?laed2
Used by sstedc / dstedc . Merges eigenvalues and deflates secular equation. Used when the original matrix is tridiagonal.
Syntax
call slaed2 ( k , n , n1 , d , q , ldq , indxq , rho , z , dlamda , w , q2 , indx , indxc , indxp , coltyp , info )
call dlaed2 ( k , n , n1 , d , q , ldq , indxq , rho , z , dlamda , w , q2 , indx , indxc , indxp , coltyp , info )
Include Files
mkl.fi
Description
slaed2 dlaed2
The routine ?laed2 merges the two sets of eigenvalues together into a single sorted set. Then it tries to deflate the size of the problem. There are two ways in which deflation can occur: when two or more eigenvalues are close together or if there is a tiny entry in the z vector. For each such occurrence the order of the related secular equation problem is reduced by one.
Input Parameters
- k
-
INTEGER . The number of non-deflated eigenvalues, and the order of the related secular equation ( 0 ≤ k ≤ n) .
- n
-
INTEGER . The dimension of the symmetric tridiagonal matrix ( n≥ 0 ).
- n1
-
INTEGER . The location of the last eigenvalue in the leading sub-matrix; min(1,n) ≤ n1 ≤ n/2 .
- d , q , z
-
REAL for slaed2 DOUBLE PRECISION for dlaed2 . Arrays: d(*) contains the eigenvalues of the two submatrices to be combined. The dimension of d must be at least max(1, n) . q(ldq, *) contains the eigenvectors of the two submatrices in the two square blocks with corners at (1,1), ( n1 , n1 ) and ( n1 +1, n1 +1), ( n , n ). The second dimension of q must be at least max(1, n) . z(*) contains the updating vector (the last row of the first sub-eigenvector matrix and the first row of the second sub-eigenvector matrix).
- ldq
-
INTEGER . The leading dimension of the array q ; ldq≥ max(1, n) .
- indxq
-
INTEGER . Array, dimension ( n ). On entry, the permutation which separately sorts the two subproblems in d into ascending order. Note that elements in the second half of this permutation must first have n1 added to their values.
- rho
-
REAL for slaed2 DOUBLE PRECISION for dlaed2 . On entry, the off-diagonal element associated with the rank-1 cut which originally split the two submatrices which are now being recombined.
- indx , indxp
-
INTEGER . Workspace arrays, dimension ( n ) each. Array indx contains the permutation used to sort the contents of dlamda into ascending order. Array indxp contains the permutation used to place deflated values of d at the end of the array. indxp (1: k ) points to the nondeflated d -values and indxp ( k +1: n ) points to the deflated eigenvalues.
- coltyp
-
INTEGER . Workspace array, dimension ( n ). During execution, a label which will indicate which of the following types a column in the q2 matrix is: 1 : non-zero in the upper half only; 2 : dense; 3 : non-zero in the lower half only; 4 : deflated.
Output Parameters
- d
-
On exit, d contains the trailing ( n-k ) updated eigenvalues (those which were deflated) sorted into increasing order.
- q
-
On exit, q contains the trailing ( n-k ) updated eigenvectors (those which were deflated) in its last n - k columns.
- z
-
On exit, z content is destroyed by the updating process.
- indxq
-
Destroyed on exit.
- rho
-
On exit, rho has been modified to the value required by ?laed3 .
- dlamda , w , q2
-
REAL for slaed2 DOUBLE PRECISION for dlaed2 . Arrays: dlamda(n), w(n), q2(n1^2 + (n - n1)^2). The array dlamda contains a copy of the first k eigenvalues which is used by ?laed3 to form the secular equation. The array w contains the first k values of the final deflation-altered z -vector which is passed to ?laed3 . The array q2 contains a copy of the first k eigenvectors which is used by ?laed3 in a matrix multiply ( sgemm / dgemm ) to solve for the new eigenvectors.
- indxc
-
INTEGER . Array, dimension ( n ). The permutation used to arrange the columns of the deflated q matrix into three groups: the first group contains non-zero elements only at and above n1 , the second contains non-zero elements only below n1 , and the third is dense.
- coltyp
-
On exit, coltyp (i) is the number of columns of type i, for i=1 to 4 only (see the definition of types in the description of coltyp in Input Parameters ).
info
INTEGER .
If info = 0 , the execution is successful.
If info = -i , the i- th parameter had an illegal value.