disna#

Functions

void sdisna(
    const char*          job,
    const INT            m,
    const INT            n,
    const f32*  restrict D,
          f32*  restrict SEP,
          INT*           info
);
void sdisna(const char *job, const INT m, const INT n, const f32 *restrict D, f32 *restrict SEP, INT *info)#

SDISNA 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-by-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

   SLAMCH( 'E' ) * ( ANORM / SEP( I ) )
where ANORM = 2-norm(A) = max( abs( D(j) ) ). SEP(I) is not allowed to be smaller than SLAMCH( ‘E’ )*ANORM in order to limit the size of the error bound.

SDISNA may also be used to compute error bounds for eigenvectors of the generalized symmetric definite eigenproblem.

Parameters

in
job

Specifies 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
m

The number of rows of the matrix. m >= 0.

in
n

If job = ‘L’ or ‘R’, the number of columns of the matrix, in which case n >= 0. Ignored if job = ‘E’.

in
D

Double precision array, dimension (m) if job = ‘E’ dimension (min(m,n)) if job = ‘L’ or ‘R’ The eigenvalues (if job = ‘E’) or singular values (if job = ‘L’ or ‘R’) of the matrix, in either increasing or decreasing order. If singular values, they must be non-negative.

out
SEP

Double precision array, dimension (m) if job = ‘E’ dimension (min(m,n)) if job = ‘L’ or ‘R’ The reciprocal condition numbers of the vectors.

out
info

  • = 0: successful exit.

  • < 0: if info = -i, the i-th argument had an illegal value.

Functions

void ddisna(
    const char*          job,
    const INT            m,
    const INT            n,
    const f64*  restrict D,
          f64*  restrict SEP,
          INT*           info
);
void ddisna(const char *job, const INT m, const INT n, const f64 *restrict D, f64 *restrict SEP, INT *info)#

DDISNA 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-by-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 ) )
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
job

Specifies 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
m

The number of rows of the matrix. m >= 0.

in
n

If job = ‘L’ or ‘R’, the number of columns of the matrix, in which case n >= 0. Ignored if job = ‘E’.

in
D

Double precision array, dimension (m) if job = ‘E’ dimension (min(m,n)) if job = ‘L’ or ‘R’ The eigenvalues (if job = ‘E’) or singular values (if job = ‘L’ or ‘R’) of the matrix, in either increasing or decreasing order. If singular values, they must be non-negative.

out
SEP

Double precision array, dimension (m) if job = ‘E’ dimension (min(m,n)) if job = ‘L’ or ‘R’ The reciprocal condition numbers of the vectors.

out
info

  • = 0: successful exit.

  • < 0: if info = -i, the i-th argument had an illegal value.