NAG Library Routine Document

F08HQF (ZHBEVD)

Note: before using this routine, please read the Users' Note for your implementation to check the interpretation of bold italicised terms and other implementation-dependent details.

Warning. The specification of the parameters LRWORK and LIWORK changed at Mark 20 in the case where JOB='V' and N>1: the minimum dimension of the array RWORK has been reduced whereas the minimum dimension of the array IWORK has been increased.

+− Contents

1 Purpose

F08HQF (ZHBEVD) computes all the eigenvalues and, optionally, all the eigenvectors of a complex Hermitian band matrix.
If the eigenvectors are requested, then it uses a divide-and-conquer algorithm to compute eigenvalues and eigenvectors. However, if only eigenvalues are required, then it uses the Pal–Walker–Kahan variant of the QL or QR algorithm.

On entry: the first dimension of the array Z as declared in the (sub)program from which F08HQF (ZHBEVD) is called.

Constraints:

if JOB='V', LDZ≥max1,N;

if JOB='N', LDZ≥1.

10: WORK(max1,LWORK) – COMPLEX (KIND=nag_wp) arrayWorkspace

On exit: if INFO=0, the real part of WORK1 contains the required minimal size of LWORK.

11: LWORK – INTEGERInput

On entry:
the dimension of the array WORK as declared in the (sub)program from which F08HQF (ZHBEVD) is called.

If LWORK=-1, a workspace query is assumed; the routine only calculates the minimum dimension of the WORK array, returns this value as the first entry of the WORK array, and no error message related to LWORK is issued.

Constraints:

if N≤1, LWORK≥1 or LWORK=-1;

if JOB='N' and N>1, LWORK≥N or LWORK=-1;

if JOB='V' and N>1, LWORK≥2×N2 or LWORK=-1.

12: RWORK(max1,LRWORK) – REAL (KIND=nag_wp) arrayWorkspace

On exit: if INFO=0, RWORK1 contains the required minimal size of LRWORK.

13: LRWORK – INTEGERInput

On entry:
the dimension of the array RWORK as declared in the (sub)program from which F08HQF (ZHBEVD) is called.

If LRWORK=-1, a workspace query is assumed; the routine only calculates the minimum dimension of the RWORK array, returns this value as the first entry of the RWORK array, and no error message related to LRWORK is issued.

Constraints:

if N≤1, LRWORK≥1 or LRWORK=-1;

if JOB='N' and N>1, LRWORK≥N or LRWORK=-1;

if JOB='V' and N>1, LRWORK≥2×N2+5×N+1 or LRWORK=-1.

14: IWORK(max1,LIWORK) – INTEGER arrayWorkspace

On exit: if INFO=0, IWORK1 contains the required minimal size of LIWORK.

15: LIWORK – INTEGERInput

On entry: the dimension of the array IWORK as declared in the (sub)program from which F08HQF (ZHBEVD) is called.

If LIWORK=-1, a workspace query is assumed; the routine only calculates the minimum dimension of the IWORK array, returns this value as the first entry of the IWORK array, and no error message related to LIWORK is issued.

6 Error Indicators and Warnings

Errors or warnings detected by the routine:

INFO<0

If INFO=-i, argument i had an illegal value. An explanatory message is output, and execution of the program is terminated.

INFO>0

if INFO=i and JOB='N', the algorithm failed to converge; i elements of an intermediate tridiagonal form did not converge to zero; if INFO=i and JOB='V', then the algorithm failed to compute an eigenvalue while working on the submatrix lying in rows and column i/N+1 through modi,N+1.

7 Accuracy

The computed eigenvalues and eigenvectors are exact for a nearby matrix A+E, where