NAME

chbevd - compute all the eigenvalues and, optionally, eigenvectors of a complex Hermitian band matrix A


SYNOPSIS

  SUBROUTINE CHBEVD( JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, WORK, 
 *      LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO)
  CHARACTER * 1 JOBZ, UPLO
  COMPLEX AB(LDAB,*), Z(LDZ,*), WORK(*)
  INTEGER N, KD, LDAB, LDZ, LWORK, LRWORK, LIWORK, INFO
  INTEGER IWORK(*)
  REAL W(*), RWORK(*)
  SUBROUTINE CHBEVD_64( JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, WORK, 
 *      LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO)
  CHARACTER * 1 JOBZ, UPLO
  COMPLEX AB(LDAB,*), Z(LDZ,*), WORK(*)
  INTEGER*8 N, KD, LDAB, LDZ, LWORK, LRWORK, LIWORK, INFO
  INTEGER*8 IWORK(*)
  REAL W(*), RWORK(*)

F95 INTERFACE

  SUBROUTINE HBEVD( JOBZ, UPLO, [N], KD, AB, [LDAB], W, Z, [LDZ], 
 *       WORK, [LWORK], RWORK, [LRWORK], [IWORK], [LIWORK], [INFO])
  CHARACTER(LEN=1) :: JOBZ, UPLO
  COMPLEX, DIMENSION(:) :: WORK
  COMPLEX, DIMENSION(:,:) :: AB, Z
  INTEGER :: N, KD, LDAB, LDZ, LWORK, LRWORK, LIWORK, INFO
  INTEGER, DIMENSION(:) :: IWORK
  REAL, DIMENSION(:) :: W, RWORK
  SUBROUTINE HBEVD_64( JOBZ, UPLO, [N], KD, AB, [LDAB], W, Z, [LDZ], 
 *       WORK, [LWORK], RWORK, [LRWORK], [IWORK], [LIWORK], [INFO])
  CHARACTER(LEN=1) :: JOBZ, UPLO
  COMPLEX, DIMENSION(:) :: WORK
  COMPLEX, DIMENSION(:,:) :: AB, Z
  INTEGER(8) :: N, KD, LDAB, LDZ, LWORK, LRWORK, LIWORK, INFO
  INTEGER(8), DIMENSION(:) :: IWORK
  REAL, DIMENSION(:) :: W, RWORK

C INTERFACE

#include <sunperf.h>

void chbevd(char jobz, char uplo, int n, int kd, complex *ab, int ldab, float *w, complex *z, int ldz, complex *work, int lwork, float *rwork, int lrwork, int *info);

void chbevd_64(char jobz, char uplo, long n, long kd, complex *ab, long ldab, float *w, complex *z, long ldz, complex *work, long lwork, float *rwork, long lrwork, long *info);


PURPOSE

chbevd computes all the eigenvalues and, optionally, eigenvectors of a complex Hermitian band matrix A. If eigenvectors are desired, it uses a divide and conquer algorithm.

The divide and conquer algorithm makes very mild assumptions about floating point arithmetic. It will work on machines with a guard digit in add/subtract, or on those binary machines without guard digits which subtract like the Cray X-MP, Cray Y-MP, Cray C-90, or Cray-2. It could conceivably fail on hexadecimal or decimal machines without guard digits, but we know of none.


ARGUMENTS