ddisna - compute 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
SUBROUTINE DDISNA( JOB, M, N, D, SEP, INFO) CHARACTER * 1 JOB INTEGER M, N, INFO DOUBLE PRECISION D(*), SEP(*)
SUBROUTINE DDISNA_64( JOB, M, N, D, SEP, INFO) CHARACTER * 1 JOB INTEGER*8 M, N, INFO DOUBLE PRECISION D(*), SEP(*)
SUBROUTINE DISNA( JOB, [M], N, D, SEP, [INFO]) CHARACTER(LEN=1) :: JOB INTEGER :: M, N, INFO REAL(8), DIMENSION(:) :: D, SEP
SUBROUTINE DISNA_64( JOB, [M], N, D, SEP, [INFO]) CHARACTER(LEN=1) :: JOB INTEGER(8) :: M, N, INFO REAL(8), DIMENSION(:) :: D, SEP
#include <sunperf.h>
void ddisna(char job, int m, int n, double *d, double *sep, int *info);
void ddisna_64(char job, long m, long n, double *d, double *sep, long *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
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.
= '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.
= 0: successful exit.
< 0: if INFO = -i, the i-th argument had an illegal value.