Contents


NAME

     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

SYNOPSIS

     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(*)

  F95 INTERFACE
     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

  C INTERFACE
     #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);

PURPOSE

     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  eigen-
     vectors of the generalized symmetric definite eigenproblem.

ARGUMENTS

     JOB (input)
               Specifies for which problem the reciprocal  condi-
               tion 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.

     M (input) The number of rows of the matrix. M >= 0.

     N (input) If JOB = 'L' or 'R', the number of columns of  the
               matrix,  in  which  case  N >= 0. Ignored if JOB =
               'E'.

     D (input) 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.

     SEP (output)
               dimension (min(M,N)) if  JOB  =  'L'  or  'R'  The
               reciprocal condition numbers of the vectors.

     INFO (output)
               = 0:  successful exit.
               < 0:  if INFO =  -i,  the  i-th  argument  had  an
               illegal value.