NAME

dhsein - use inverse iteration to find specified right and/or left eigenvectors of a real upper Hessenberg matrix H


SYNOPSIS

  SUBROUTINE DHSEIN( SIDE, EIGSRC, INITV, SELECT, N, H, LDH, WR, WI, 
 *      VL, LDVL, VR, LDVR, MM, M, WORK, IFAILL, IFAILR, INFO)
  CHARACTER * 1 SIDE, EIGSRC, INITV
  INTEGER N, LDH, LDVL, LDVR, MM, M, INFO
  INTEGER IFAILL(*), IFAILR(*)
  LOGICAL SELECT(*)
  DOUBLE PRECISION H(LDH,*), WR(*), WI(*), VL(LDVL,*), VR(LDVR,*), WORK(*)
  SUBROUTINE DHSEIN_64( SIDE, EIGSRC, INITV, SELECT, N, H, LDH, WR, 
 *      WI, VL, LDVL, VR, LDVR, MM, M, WORK, IFAILL, IFAILR, INFO)
  CHARACTER * 1 SIDE, EIGSRC, INITV
  INTEGER*8 N, LDH, LDVL, LDVR, MM, M, INFO
  INTEGER*8 IFAILL(*), IFAILR(*)
  LOGICAL*8 SELECT(*)
  DOUBLE PRECISION H(LDH,*), WR(*), WI(*), VL(LDVL,*), VR(LDVR,*), WORK(*)

F95 INTERFACE

  SUBROUTINE HSEIN( SIDE, EIGSRC, INITV, SELECT, [N], H, [LDH], WR, 
 *       WI, VL, [LDVL], VR, [LDVR], MM, M, [WORK], IFAILL, IFAILR, [INFO])
  CHARACTER(LEN=1) :: SIDE, EIGSRC, INITV
  INTEGER :: N, LDH, LDVL, LDVR, MM, M, INFO
  INTEGER, DIMENSION(:) :: IFAILL, IFAILR
  LOGICAL, DIMENSION(:) :: SELECT
  REAL(8), DIMENSION(:) :: WR, WI, WORK
  REAL(8), DIMENSION(:,:) :: H, VL, VR
  SUBROUTINE HSEIN_64( SIDE, EIGSRC, INITV, SELECT, [N], H, [LDH], WR, 
 *       WI, VL, [LDVL], VR, [LDVR], MM, M, [WORK], IFAILL, IFAILR, [INFO])
  CHARACTER(LEN=1) :: SIDE, EIGSRC, INITV
  INTEGER(8) :: N, LDH, LDVL, LDVR, MM, M, INFO
  INTEGER(8), DIMENSION(:) :: IFAILL, IFAILR
  LOGICAL(8), DIMENSION(:) :: SELECT
  REAL(8), DIMENSION(:) :: WR, WI, WORK
  REAL(8), DIMENSION(:,:) :: H, VL, VR

C INTERFACE

#include <sunperf.h>

void dhsein(char side, char eigsrc, char initv, logical *select, int n, double *h, int ldh, double *wr, double *wi, double *vl, int ldvl, double *vr, int ldvr, int mm, int *m, int *ifaill, int *ifailr, int *info);

void dhsein_64(char side, char eigsrc, char initv, logical *select, long n, double *h, long ldh, double *wr, double *wi, double *vl, long ldvl, double *vr, long ldvr, long mm, long *m, long *ifaill, long *ifailr, long *info);


PURPOSE

dhsein uses inverse iteration to find specified right and/or left eigenvectors of a real upper Hessenberg matrix H.

The right eigenvector x and the left eigenvector y of the matrix H corresponding to an eigenvalue w are defined by:

             H * x = w * x,     y**h * H = w * y**h

where y**h denotes the conjugate transpose of the vector y.


ARGUMENTS


FURTHER DETAILS

Each eigenvector is normalized so that the element of largest magnitude has magnitude 1; here the magnitude of a complex number (x,y) is taken to be |x|+|y|.