NAME

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


SYNOPSIS

  SUBROUTINE ZHSEQR( JOB, COMPZ, N, ILO, IHI, H, LDH, W, Z, LDZ, WORK, 
 *      LWORK, INFO)
  CHARACTER * 1 JOB, COMPZ
  DOUBLE COMPLEX H(LDH,*), W(*), Z(LDZ,*), WORK(*)
  INTEGER N, ILO, IHI, LDH, LDZ, LWORK, INFO
  SUBROUTINE ZHSEQR_64( JOB, COMPZ, N, ILO, IHI, H, LDH, W, Z, LDZ, 
 *      WORK, LWORK, INFO)
  CHARACTER * 1 JOB, COMPZ
  DOUBLE COMPLEX H(LDH,*), W(*), Z(LDZ,*), WORK(*)
  INTEGER*8 N, ILO, IHI, LDH, LDZ, LWORK, INFO

F95 INTERFACE

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

C INTERFACE

#include <sunperf.h>

void zhseqr(char job, char compz, int n, int ilo, int ihi, doublecomplex *h, int ldh, doublecomplex *w, doublecomplex *z, int ldz, int *info);

void zhseqr_64(char job, char compz, long n, long ilo, long ihi, doublecomplex *h, long ldh, doublecomplex *w, doublecomplex *z, long ldz, long *info);


PURPOSE

zhseqr computes the eigenvalues of a complex upper Hessenberg matrix H, and, optionally, the matrices T and Z from the Schur decomposition H = Z T Z**H, where T is an upper triangular matrix (the Schur form), and Z is the unitary matrix of Schur vectors.

Optionally Z may be postmultiplied into an input unitary 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 unitary matrix Q: A = Q*H*Q**H = (QZ)*T*(QZ)**H.


ARGUMENTS