Purpose
=======
DLAED2 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.
Namespace: DotNumerics.LinearAlgebra.CSLapackAssembly: DWSIM.MathOps.DotNumerics (in DWSIM.MathOps.DotNumerics.dll) Version: 1.0.0.0 (1.0.0.0)
Syntax public void Run(
ref int K,
int N,
int N1,
ref double[] D,
int offset_d,
ref double[] Q,
int offset_q,
int LDQ,
ref int[] INDXQ,
int offset_indxq,
ref double RHO,
ref double[] Z,
int offset_z,
ref double[] DLAMDA,
int offset_dlamda,
ref double[] W,
int offset_w,
ref double[] Q2,
int offset_q2,
ref int[] INDX,
int offset_indx,
ref int[] INDXC,
int offset_indxc,
ref int[] INDXP,
int offset_indxp,
ref int[] COLTYP,
int offset_coltyp,
ref int INFO
)
Public Sub Run (
ByRef K As Integer,
N As Integer,
N1 As Integer,
ByRef D As Double(),
offset_d As Integer,
ByRef Q As Double(),
offset_q As Integer,
LDQ As Integer,
ByRef INDXQ As Integer(),
offset_indxq As Integer,
ByRef RHO As Double,
ByRef Z As Double(),
offset_z As Integer,
ByRef DLAMDA As Double(),
offset_dlamda As Integer,
ByRef W As Double(),
offset_w As Integer,
ByRef Q2 As Double(),
offset_q2 As Integer,
ByRef INDX As Integer(),
offset_indx As Integer,
ByRef INDXC As Integer(),
offset_indxc As Integer,
ByRef INDXP As Integer(),
offset_indxp As Integer,
ByRef COLTYP As Integer(),
offset_coltyp As Integer,
ByRef INFO As Integer
)
Request Example
View SourceParameters
- K Int32
-
(output) INTEGER
The number of non-deflated eigenvalues, and the order of the
related secular equation. 0 .LE. K .LE.N.
- N Int32
-
(input) INTEGER
The dimension of the symmetric tridiagonal matrix. N .GE. 0.
- N1 Int32
-
(input) INTEGER
The location of the last eigenvalue in the leading sub-matrix.
min(1,N) .LE. N1 .LE. N/2.
- D Double
-
(input/output) DOUBLE PRECISION array, dimension (N)
On entry, D contains the eigenvalues of the two submatrices to
be combined.
On exit, D contains the trailing (N-K) updated eigenvalues
(those which were deflated) sorted into increasing order.
- offset_d Int32
-
- Q Double
-
(input/output) DOUBLE PRECISION array, dimension (LDQ, N)
On entry, Q contains the eigenvectors of two submatrices in
the two square blocks with corners at (1,1), (N1,N1)
and (N1+1, N1+1), (N,N).
On exit, Q contains the trailing (N-K) updated eigenvectors
(those which were deflated) in its last N-K columns.
- offset_q Int32
-
- LDQ Int32
-
(input) INTEGER
The leading dimension of the array Q. LDQ .GE. max(1,N).
- INDXQ Int32
-
(input/output) INTEGER array, dimension (N)
The permutation which separately sorts the two sub-problems
in D into ascending order. Note that elements in the second
half of this permutation must first have N1 added to their
values. Destroyed on exit.
- offset_indxq Int32
-
- RHO Double
-
(input/output) DOUBLE PRECISION
On entry, the off-diagonal element associated with the rank-1
cut which originally split the two submatrices which are now
being recombined.
On exit, RHO has been modified to the value required by
DLAED3.
- Z Double
-
(input) DOUBLE PRECISION array, dimension (N)
On entry, Z contains the updating vector (the last
row of the first sub-eigenvector matrix and the first row of
the second sub-eigenvector matrix).
On exit, the contents of Z have been destroyed by the updating
process.
- offset_z Int32
-
- DLAMDA Double
-
(output) DOUBLE PRECISION array, dimension (N)
A copy of the first K eigenvalues which will be used by
DLAED3 to form the secular equation.
- offset_dlamda Int32
-
- W Double
-
(output) DOUBLE PRECISION array, dimension (N)
The first k values of the final deflation-altered z-vector
which will be passed to DLAED3.
- offset_w Int32
-
- Q2 Double
-
(output) DOUBLE PRECISION array, dimension (N1**2+(N-N1)**2)
A copy of the first K eigenvectors which will be used by
DLAED3 in a matrix multiply (DGEMM) to solve for the new
eigenvectors.
- offset_q2 Int32
-
- INDX Int32
-
(workspace) INTEGER array, dimension (N)
The permutation used to sort the contents of DLAMDA into
ascending order.
- offset_indx Int32
-
- INDXC Int32
-
(output) 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.
- offset_indxc Int32
-
- INDXP Int32
-
(workspace) INTEGER array, dimension (N)
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.
- offset_indxp Int32
-
- COLTYP Int32
-
(workspace/output) INTEGER 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.
On exit, COLTYP(i) is the number of columns of type i,
for i=1 to 4 only.
- offset_coltyp Int32
-
- INFO Int32
-
(output) INTEGER
= 0: successful exit.
.LT. 0: if INFO = -i, the i-th argument had an illegal value.
See Also