The LA_HQR function uses the multishift QR algorithm to compute all eigenvalues of an *n*-by-*n* upper Hessenberg array. The LA_ELMHES routine can be used to reduce a real or complex array to upper Hessenberg form suitable for input to this procedure. LA_HQR may also be used to compute the matrices *T* and *QZ* from the Schur decomposition *A* = *(QZ) T (QZ)*^{H}.

LA_HQR is based on the following LAPACK routines:

Output Type |
LAPACK Routine |

Float |
shseqr |

Double |
dhseqr |

Complex |
chseqr |

Double complex |
zhseqr |

## Examples

See LA_EIGENVEC for an example of using this procedure.

## Syntax

*Result* = LA_HQR(*H *[, Q] [, /DOUBLE] [, PERMUTE_RESULT=[*ilo*, *ihi*]] [, STATUS=*variable*] )

## Return Value

The result is an* n*-element complex vector.

## Arguments

### H

An *n*-by-*n* upper Hessenberg array, created by the LA_ELMHES procedure. If argument *Q* is present, then on return *H* is replaced by the Schur form *T*. If argument *Q* is not present then *H* is unchanged.

### Q

Set this optional argument to the array *Q* created by the LA_ELMHES procedure. If argument *Q* is present, then on return *Q* is replaced by the Schur vectors *QZ*.

## Keywords

### DOUBLE

Set this keyword to use double-precision for computations and to return a double-precision (real or complex) result. Set DOUBLE = 0 to use single-precision for computations and to return a single-precision (real or complex) result. The default is /DOUBLE if *H* is double precision, otherwise the default is DOUBLE = 0.

### PERMUTE_RESULT

Set this keyword to a two-element vector containing the [*ilo*, *ihi*] permutation results from the LA_ELMHES procedure. The default is [1, *n*], indicating that permute balancing was not done on *H*.

### STATUS

Set this keyword to a named variable that will contain the status of the computation. Possible values are:

- STATUS = 0: The computation was successful.
- STATUS > 0: The algorithm failed to find all eigenvalues in
*30**(*ihi*-*ilo*+*1*) iterations. The STATUS value indicates that eigenvalues ilo:STATUS (starting at index*1*) did not converge; all other eigenvalues converged.

**Note: **If STATUS is not specified, any error messages will output to the screen.

## Version History

5.6 |
Introduced |

## Resources and References

For details see Anderson et al., *LAPACK Users' Guide*, 3rd ed., SIAM, 1999.