NAME

dhseqr - compute the eigenvalues of a real upper Hessenberg matrix H and, optionally, the matrices T and Z from the Schur decomposition H = Z T Z**T, where T is an upper quasi-triangular matrix (the Schur form), and Z is the orthogonal matrix of Schur vectors


SYNOPSIS

  SUBROUTINE DHSEQR( JOB, COMPZ, N, ILO, IHI, H, LDH, WR, WI, Z, LDZ, 
 *      WORK, LWORK, INFO)
  CHARACTER * 1 JOB, COMPZ
  INTEGER N, ILO, IHI, LDH, LDZ, LWORK, INFO
  DOUBLE PRECISION H(LDH,*), WR(*), WI(*), Z(LDZ,*), WORK(*)
  SUBROUTINE DHSEQR_64( JOB, COMPZ, N, ILO, IHI, H, LDH, WR, WI, Z, 
 *      LDZ, WORK, LWORK, INFO)
  CHARACTER * 1 JOB, COMPZ
  INTEGER*8 N, ILO, IHI, LDH, LDZ, LWORK, INFO
  DOUBLE PRECISION H(LDH,*), WR(*), WI(*), Z(LDZ,*), WORK(*)

F95 INTERFACE

  SUBROUTINE HSEQR( JOB, COMPZ, N, ILO, IHI, H, [LDH], WR, WI, Z, [LDZ], 
 *       [WORK], [LWORK], [INFO])
  CHARACTER(LEN=1) :: JOB, COMPZ
  INTEGER :: N, ILO, IHI, LDH, LDZ, LWORK, INFO
  REAL(8), DIMENSION(:) :: WR, WI, WORK
  REAL(8), DIMENSION(:,:) :: H, Z
  SUBROUTINE HSEQR_64( JOB, COMPZ, N, ILO, IHI, H, [LDH], WR, WI, Z, 
 *       [LDZ], [WORK], [LWORK], [INFO])
  CHARACTER(LEN=1) :: JOB, COMPZ
  INTEGER(8) :: N, ILO, IHI, LDH, LDZ, LWORK, INFO
  REAL(8), DIMENSION(:) :: WR, WI, WORK
  REAL(8), DIMENSION(:,:) :: H, Z

C INTERFACE

#include <sunperf.h>

void dhseqr(char job, char compz, int n, int ilo, int ihi, double *h, int ldh, double *wr, double *wi, double *z, int ldz, int *info);

void dhseqr_64(char job, char compz, long n, long ilo, long ihi, double *h, long ldh, double *wr, double *wi, double *z, long ldz, long *info);


PURPOSE

dhseqr computes the eigenvalues of a real upper Hessenberg matrix H and, optionally, the matrices T and Z from the Schur decomposition H = Z T Z**T, where T is an upper quasi-triangular matrix (the Schur form), and Z is the orthogonal matrix of Schur vectors.

Optionally Z may be postmultiplied into an input orthogonal matrix Q, so that this routine can give the Schur factorization of a matrix A which has been reduced to the Hessenberg form H by the orthogonal matrix Q: A = Q*H*Q**T = (QZ)*T*(QZ)**T.


ARGUMENTS