strsna
strsna - estimate reciprocal condition numbers for specified eigenvalues and/or right eigenvectors of a real upper quasi-triangular matrix T (or of any matrix Q*T*Q**T with Q orthogonal)
SUBROUTINE STRSNA( JOB, HOWMNY, SELECT, N, T, LDT, VL, LDVL, VR,
* LDVR, S, SEP, MM, M, WORK, LDWORK, WORK1, INFO)
CHARACTER * 1 JOB, HOWMNY
INTEGER N, LDT, LDVL, LDVR, MM, M, LDWORK, INFO
INTEGER WORK1(*)
LOGICAL SELECT(*)
REAL T(LDT,*), VL(LDVL,*), VR(LDVR,*), S(*), SEP(*), WORK(LDWORK,*)
SUBROUTINE STRSNA_64( JOB, HOWMNY, SELECT, N, T, LDT, VL, LDVL, VR,
* LDVR, S, SEP, MM, M, WORK, LDWORK, WORK1, INFO)
CHARACTER * 1 JOB, HOWMNY
INTEGER*8 N, LDT, LDVL, LDVR, MM, M, LDWORK, INFO
INTEGER*8 WORK1(*)
LOGICAL*8 SELECT(*)
REAL T(LDT,*), VL(LDVL,*), VR(LDVR,*), S(*), SEP(*), WORK(LDWORK,*)
SUBROUTINE TRSNA( JOB, HOWMNY, SELECT, N, T, [LDT], VL, [LDVL], VR,
* [LDVR], S, SEP, MM, M, [WORK], [LDWORK], [WORK1], [INFO])
CHARACTER(LEN=1) :: JOB, HOWMNY
INTEGER :: N, LDT, LDVL, LDVR, MM, M, LDWORK, INFO
INTEGER, DIMENSION(:) :: WORK1
LOGICAL, DIMENSION(:) :: SELECT
REAL, DIMENSION(:) :: S, SEP
REAL, DIMENSION(:,:) :: T, VL, VR, WORK
SUBROUTINE TRSNA_64( JOB, HOWMNY, SELECT, N, T, [LDT], VL, [LDVL],
* VR, [LDVR], S, SEP, MM, M, [WORK], [LDWORK], [WORK1], [INFO])
CHARACTER(LEN=1) :: JOB, HOWMNY
INTEGER(8) :: N, LDT, LDVL, LDVR, MM, M, LDWORK, INFO
INTEGER(8), DIMENSION(:) :: WORK1
LOGICAL(8), DIMENSION(:) :: SELECT
REAL, DIMENSION(:) :: S, SEP
REAL, DIMENSION(:,:) :: T, VL, VR, WORK
#include <sunperf.h>
void strsna(char job, char howmny, logical *select, int n, float *t, int ldt, float *vl, int ldvl, float *vr, int ldvr, float *s, float *sep, int mm, int *m, int ldwork, int *info);
void strsna_64(char job, char howmny, logical *select, long n, float *t, long ldt, float *vl, long ldvl, float *vr, long ldvr, float *s, float *sep, long mm, long *m, long ldwork, long *info);
strsna estimates reciprocal condition numbers for specified
eigenvalues and/or right eigenvectors of a real upper
quasi-triangular matrix T (or of any matrix Q*T*Q**T with Q
orthogonal).
T must be in Schur canonical form (as returned by SHSEQR), that is,
block upper triangular with 1-by-1 and 2-by-2 diagonal blocks; each
2-by-2 diagonal block has its diagonal elements equal and its
off-diagonal elements of opposite sign.
-
* JOB (input)
-
Specifies whether condition numbers are required for
eigenvalues (S) or eigenvectors (SEP):
-
* HOWMNY (input)
-
-
* SELECT (input)
-
If HOWMNY = 'S', SELECT specifies the eigenpairs for which
condition numbers are required. To select condition numbers
for the eigenpair corresponding to a real eigenvalue w(j),
SELECT(j) must be set to .TRUE.. To select condition numbers
corresponding to a complex conjugate pair of eigenvalues w(j)
and w(j+1), either SELECT(j) or SELECT(j+1) or both, must be
set to .TRUE..
If HOWMNY = 'A', SELECT is not referenced.
-
* N (input)
-
The order of the matrix T. N >= 0.
-
* T (input)
-
The upper quasi-triangular matrix T, in Schur canonical form.
-
* LDT (input)
-
The leading dimension of the array T. LDT >= max(1,N).
-
* VL (input)
-
If JOB = 'E' or 'B', VL must contain left eigenvectors of T
(or of any Q*T*Q**T with Q orthogonal), corresponding to the
eigenpairs specified by HOWMNY and SELECT. The eigenvectors
must be stored in consecutive columns of VL, as returned by
SHSEIN or STREVC.
If JOB = 'V', VL is not referenced.
-
* LDVL (input)
-
The leading dimension of the array VL.
LDVL >= 1; and if JOB = 'E' or 'B', LDVL >= N.
-
* VR (input)
-
If JOB = 'E' or 'B', VR must contain right eigenvectors of T
(or of any Q*T*Q**T with Q orthogonal), corresponding to the
eigenpairs specified by HOWMNY and SELECT. The eigenvectors
must be stored in consecutive columns of VR, as returned by
SHSEIN or STREVC.
If JOB = 'V', VR is not referenced.
-
* LDVR (input)
-
The leading dimension of the array VR.
LDVR >= 1; and if JOB = 'E' or 'B', LDVR >= N.
-
* S (output)
-
If JOB = 'E' or 'B', the reciprocal condition numbers of the
selected eigenvalues, stored in consecutive elements of the
array. For a complex conjugate pair of eigenvalues two
consecutive elements of S are set to the same value. Thus
S(j), SEP(j), and the j-th columns of VL and VR all
correspond to the same eigenpair (but not in general the
j-th eigenpair, unless all eigenpairs are selected).
If JOB = 'V', S is not referenced.
-
* SEP (output)
-
If JOB = 'V' or 'B', the estimated reciprocal condition
numbers of the selected eigenvectors, stored in consecutive
elements of the array. For a complex eigenvector two
consecutive elements of SEP are set to the same value. If
the eigenvalues cannot be reordered to compute SEP(j), SEP(j)
is set to 0; this can only occur when the true value would be
very small anyway.
If JOB = 'E', SEP is not referenced.
-
* MM (input)
-
The number of elements in the arrays S (if JOB = 'E' or 'B')
and/or SEP (if JOB = 'V' or 'B'). MM >= M.
-
* M (output)
-
The number of elements of the arrays S and/or SEP actually
used to store the estimated condition numbers.
If HOWMNY = 'A', M is set to N.
-
* WORK (workspace)
-
If JOB = 'E', WORK is not referenced.
-
* LDWORK (input)
-
The leading dimension of the array WORK.
LDWORK >= 1; and if JOB = 'V' or 'B', LDWORK >= N.
-
* WORK1 (workspace)
-
If JOB = 'E', WORK1 is not referenced.
-
* INFO (output)
-