- AB
- (
*input/output*)**REAL**or**COMPLEX**array, shape with (**AB**,1) and (**AB**,2) , where is the number of subdiagonals or superdiagonals in the band of and is the order of and .

On entry, the upper (if**UPLO**= 'U') or lower (if**UPLO**= 'L') triangle of in band storage. The diagonals of are stored in the rows of**AB**so that the column of is stored in the column of as follows:

On exit, the contents of**AB**are destroyed. - BB
- (
*input/output*)**REAL**or**COMPLEX**array, shape with (**BB**,1) and (**BB**,2) , where is the number of subdiagonals or superdiagonals in the band of .

On entry, the upper (if**UPLO**= 'U') or lower (if**UPLO**= 'L') triangle of matrix in band storage. The diagonals of are stored in the rows of**BB**so that the column of is stored in the column of as follows:

On exit, the factor from the split Cholesky factorization . - W
- (
*output*)**REAL**array, shape with .

The first**M**elements contain the selected eigenvalues in ascending order. - UPLO
*Optional*(*input*)**CHARACTER(LEN=1)**.

Default value: 'U'.- Z
*Optional*(*output*)**REAL**or**COMPLEX**square array, shape with (**Z**,1) .

The first**M**columns of**Z**contain the orthonormal eigenvectors corresponding to the selected eigenvalues, with the i column of**Z**containing the eigenvector associated with the eigenvalue in**W**. The eigenvectors are normalized so that . If an eigenvector fails to converge, then that column of**Z**contains the latest approximation to the eigenvector and the index of the eigenvector is returned in**IFAIL**.- VL,VU
*Optional*(*input*)**REAL**.

The lower and upper bounds of the interval to be searched for eigenvalues.**VL****VU**.

Default values:**VL**-**HUGE**(*wp*) and**VU****HUGE**(*wp*), where*wp*::=**KIND**(1.0)**KIND**(1.0D0).

Note: Neither**VL**nor**VU**may be present if**IL**and/or**IU**is present.- IL,IU
*Optional*(*input*)**INTEGER**.

The indices of the smallest and largest eigenvalues to be returned. The through eigenvalues will be found. .

Default values:**IL**and**IU**(**A**,1).

Note: Neither**IL**nor**IU**may be present if**VL**and/or**VU**is present.

Note: All eigenvalues are calculated if none of the arguments**VL**,**VU**,**IL**and**IU**are present.- M
*Optional*(*output*)**INTEGER**.

The total number of eigenvalues found. .

Note: If and are present then .- IFAIL
*Optional*(*output*)**INTEGER**array, shape with (**IFAIL**) .

If**INFO**, the first**M**elements of**IFAIL**are zero.

If**INFO**, then**IFAIL**contains the indices of the eigenvectors that failed to converge. Note: If**Z**is present then**IFAIL**should also be present.- Q
*Optional*(*output*)**REAL**or**COMPLEX**square array, shape(:,:) with .

If**Z**is present, the matrix used in the reduction of to tridiagonal form.- ABSTOL
*Optional*(*input*)**REAL**.

The absolute error tolerance for the eigenvalues. An approximate eigenvalue is accepted as converged when it is determined to lie in an interval of width less than or equal to

where*wp*is the working precision. If**ABSTOL**, then will be used in its place, where is the norm of the tridiagonal matrix obtained by reducing the generalized eigenvalue problem to tridiagonal form. Eigenvalues will be computed most accurately when**ABSTOL**is set to twice the underflow threshold , not zero.

Default value: .

Note: If this routine returns with , then some eigenvectors did not converge. Try setting**ABSTOL**to .- INFO
*Optional*(*output*)**INTEGER**.

If**INFO**is not present and an error occurs, then the program is terminated with an error message.