XLPack 7.0
XLPack Numerical Library (Excel VBA) Reference Manual
Loading...
Searching...
No Matches

◆ Ddisna()

Sub Ddisna ( Job As  String,
M As  Long,
N As  Long,
D() As  Double,
Sep() As  Double,
Info As  Long 
)

Condition numbers for the eigenvectors of a real symmetric or complex Hermitian matrix, or for the singular vectors of a general matrix

Purpose
This routine computes the reciprocal condition numbers for the eigenvectors of a real symmetric or complex Hermitian matrix or for the left or right singular vectors of a general m x n matrix. The reciprocal condition number is the 'gap' between the corresponding eigenvalue or singular value and the nearest other one.

The bound on the error, measured by angle in radians, in the I-th computed vector is given by
Dlamch("E") * (anorm/sep(i))
Function Dlamch(C As String) As Double
Machine parameters (double precision floating-point arithmetic)
where anorm = 2-norm(A) = max(abs(D(j))). sep(i) is not allowed to be smaller than Dlamch("E")*anorm in order to limit the size of the error bound.

Ddisna may also be used to compute error bounds for eigenvectors of the generalized symmetric definite eigenproblem.
Parameters
[in]JobSpecifies for which problem the reciprocal condition numbers should be computed.
= "E": The eigenvectors of a symmetric/Hermitian matrix.
= "L": The left singular vectors of a general matrix.
= "R": The right singular vectors of a general matrix.
[in]MNumber of rows of the matrix. (M >= 0) (If M = 0, returns without computation)
[in]Njob = "L" or "R": Number of columns of the matrix. (N >= 0) (If N = 0, returns without computation)
job = "E": To be ignored.
[in]D()Array D(LD - 1) (LD >= M if Job = "E", LD >= min(M, N) if Job = "L" or "R")
Job = "E": The eigenvalues of the matrix in either increasing or decreasing order.
Job = "L" or "R": The singular values of the matrix in either increasing or decreasing order. (Singular values >= 0)
[out]Sep()Array Spe(LSep - 1) (LSep >= M if Job = "E", LSep >= min(M, N) if Job = "L" or "R")
Job = "E": The reciprocal condition numbers of the eigenvectors.
Job = "L" or "R": The reciprocal condition numbers of the singular vectors.
[out]Info= 0: Successful exit.
= -1: The argument Job had an illegal value. (Job <> "E", "L" nor "R")
= -2: The argument M had an illegal value. (M < 0)
= -3: The argument N had an illegal value. (N < 0)
= -4: The argument D() is invalid.
= -5: The argument Sep() is invalid.
Reference
LAPACK