chbtrd - reduce a complex Hermitian band matrix A to real symmetric tridiagonal form T by a unitary similarity transformation
SUBROUTINE CHBTRD( VECT, UPLO, N, KD, AB, LDAB, D, E, Q, LDQ, WORK, * INFO) CHARACTER * 1 VECT, UPLO COMPLEX AB(LDAB,*), Q(LDQ,*), WORK(*) INTEGER N, KD, LDAB, LDQ, INFO REAL D(*), E(*)
SUBROUTINE CHBTRD_64( VECT, UPLO, N, KD, AB, LDAB, D, E, Q, LDQ, * WORK, INFO) CHARACTER * 1 VECT, UPLO COMPLEX AB(LDAB,*), Q(LDQ,*), WORK(*) INTEGER*8 N, KD, LDAB, LDQ, INFO REAL D(*), E(*)
SUBROUTINE HBTRD( VECT, UPLO, [N], KD, AB, [LDAB], D, E, Q, [LDQ], * [WORK], [INFO]) CHARACTER(LEN=1) :: VECT, UPLO COMPLEX, DIMENSION(:) :: WORK COMPLEX, DIMENSION(:,:) :: AB, Q INTEGER :: N, KD, LDAB, LDQ, INFO REAL, DIMENSION(:) :: D, E
SUBROUTINE HBTRD_64( VECT, UPLO, [N], KD, AB, [LDAB], D, E, Q, [LDQ], * [WORK], [INFO]) CHARACTER(LEN=1) :: VECT, UPLO COMPLEX, DIMENSION(:) :: WORK COMPLEX, DIMENSION(:,:) :: AB, Q INTEGER(8) :: N, KD, LDAB, LDQ, INFO REAL, DIMENSION(:) :: D, E
#include <sunperf.h>
void chbtrd(char vect, char uplo, int n, int kd, complex *ab, int ldab, float *d, float *e, complex *q, int ldq, int *info);
void chbtrd_64(char vect, char uplo, long n, long kd, complex *ab, long ldab, float *d, float *e, complex *q, long ldq, long *info);
chbtrd reduces a complex Hermitian band matrix A to real symmetric tridiagonal form T by a unitary similarity transformation: Q**H * A * Q = T.
= 'N': do not form Q;
= 'V': form Q;
= 'U': update a matrix X, by forming X*Q.
= 'U': Upper triangle of A is stored;
= 'L': Lower triangle of A is stored.
AB(kd+1+i-j,j)
= A(i,j)
for max(1,j-kd)
< =i < =j;
if UPLO = 'L', AB(1+i-j,j)
= A(i,j)
for j < =i < =min(n,j+kd).
On exit, the diagonal elements of AB are overwritten by the
diagonal elements of the tridiagonal matrix T; if KD > 0, the
elements on the first superdiagonal (if UPLO = 'U') or the
first subdiagonal (if UPLO = 'L') are overwritten by the
off-diagonal elements of T; the rest of AB is overwritten by
values generated during the reduction.
E(i)
= T(i,i+1)
if UPLO = 'U'; E(i)
= T(i+1,i)
if UPLO = 'L'.
On exit: if VECT = 'V', Q contains the N-by-N unitary matrix Q; if VECT = 'U', Q contains the product X*Q; if VECT = 'N', the array Q is not referenced.
dimension(N)
= 0: successful exit
< 0: if INFO = -i, the i-th argument had an illegal value
Modified by Linda Kaufman, Bell Labs.