Purpose
=======
DLAED8 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 element 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(
int ICOMPQ,
ref int K,
int N,
int QSIZ,
ref double[] D,
int offset_d,
ref double[] Q,
int offset_q,
int LDQ,
ref int[] INDXQ,
int offset_indxq,
ref double RHO,
int CUTPNT,
ref double[] Z,
int offset_z,
ref double[] DLAMDA,
int offset_dlamda,
ref double[] Q2,
int offset_q2,
int LDQ2,
ref double[] W,
int offset_w,
ref int[] PERM,
int offset_perm,
ref int GIVPTR,
ref int[] GIVCOL,
int offset_givcol,
ref double[] GIVNUM,
int offset_givnum,
ref int[] INDXP,
int offset_indxp,
ref int[] INDX,
int offset_indx,
ref int INFO
)
Public Sub Run (
ICOMPQ As Integer,
ByRef K As Integer,
N As Integer,
QSIZ 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,
CUTPNT As Integer,
ByRef Z As Double(),
offset_z As Integer,
ByRef DLAMDA As Double(),
offset_dlamda As Integer,
ByRef Q2 As Double(),
offset_q2 As Integer,
LDQ2 As Integer,
ByRef W As Double(),
offset_w As Integer,
ByRef PERM As Integer(),
offset_perm As Integer,
ByRef GIVPTR As Integer,
ByRef GIVCOL As Integer(),
offset_givcol As Integer,
ByRef GIVNUM As Double(),
offset_givnum As Integer,
ByRef INDXP As Integer(),
offset_indxp As Integer,
ByRef INDX As Integer(),
offset_indx As Integer,
ByRef INFO As Integer
)
Request Example
View SourceParameters
- ICOMPQ Int32
-
(input) INTEGER
= 0: Compute eigenvalues only.
= 1: Compute eigenvectors of original dense symmetric matrix
also. On entry, Q contains the orthogonal matrix used
to reduce the original matrix to tridiagonal form.
- K Int32
-
(output) INTEGER
The number of non-deflated eigenvalues, and the order of the
related secular equation.
- N Int32
-
(input) INTEGER
The dimension of the symmetric tridiagonal matrix. N .GE. 0.
- QSIZ Int32
-
(input) INTEGER
The dimension of the orthogonal matrix used to reduce
the full matrix to tridiagonal form. QSIZ .GE. N if ICOMPQ = 1.
- D Double
-
(input/output) DOUBLE PRECISION array, dimension (N)
On entry, the eigenvalues of the two submatrices to be
combined. On exit, 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)
If ICOMPQ = 0, Q is not referenced. Otherwise,
on entry, Q contains the eigenvectors of the partially solved
system which has been previously updated in matrix
multiplies with other partially solved eigensystems.
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) 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 CUTPNT added to
their values in order to be accurate.
- 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.
- CUTPNT Int32
-
(input) INTEGER
The location of the last eigenvalue in the leading
sub-matrix. min(1,N) .LE. CUTPNT .LE. N.
- 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 are 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
-
- Q2 Double
-
(output) DOUBLE PRECISION array, dimension (LDQ2,N)
If ICOMPQ = 0, Q2 is not referenced. Otherwise,
a copy of the first K eigenvectors which will be used by
DLAED7 in a matrix multiply (DGEMM) to update the new
eigenvectors.
- offset_q2 Int32
-
- LDQ2 Int32
-
(input) INTEGER
The leading dimension of the array Q2. LDQ2 .GE. max(1,N).
- W Double
-
(output) DOUBLE PRECISION array, dimension (N)
The first k values of the final deflation-altered z-vector and
will be passed to DLAED3.
- offset_w Int32
-
- PERM Int32
-
(output) INTEGER array, dimension (N)
The permutations (from deflation and sorting) to be applied
to each eigenblock.
- offset_perm Int32
-
- GIVPTR Int32
-
(output) INTEGER
The number of Givens rotations which took place in this
subproblem.
- GIVCOL Int32
-
(output) INTEGER array, dimension (2, N)
Each pair of numbers indicates a pair of columns to take place
in a Givens rotation.
- offset_givcol Int32
-
- GIVNUM Double
-
(output) DOUBLE PRECISION array, dimension (2, N)
Each number indicates the S value to be used in the
corresponding Givens rotation.
- offset_givnum 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
-
- INDX Int32
-
(workspace) INTEGER array, dimension (N)
The permutation used to sort the contents of D into ascending
order.
- offset_indx Int32
-
- INFO Int32
-
(output) INTEGER
= 0: successful exit.
.LT. 0: if INFO = -i, the i-th argument had an illegal value.
See Also