Welcome to the L3 Harris Geospatial documentation center. Here you will find reference guides and help documents.
﻿

### LA_TRIQL

LA_TRIQL

The LA_TRIQL procedure uses the QL and QR variants of the implicitly-shifted QR algorithm to compute the eigenvalues and eigenvectors of a symmetric tridiagonal array. The LA_TRIRED routine can be used to reduce a real symmetric (or complex Hermitian) array to tridiagonal form suitable for input to this procedure.

LA_TRIQL is based on the following LAPACK routines:

 Output Type LAPACK Routine Float ssteqr Double dsteqr Complex csteqr Double complex zsteqr

## Examples

The following example computes the eigenvalues and eigenvectors of a given symmetric array:

`; Create a symmetric random array:`
`n = 4`
`seed = 12321`
`Array = RANDOMN(seed, n, n)`
`array = array + TRANSPOSE(array)`
` `
`; Reduce to tridiagonal form`
`q = array    ; make a copy`
`LA_TRIRED, q, d, e`
` `
`; Compute eigenvalues and eigenvectors`
`eigenvalues = d`
`eigenvectors = q`
`LA_TRIQL, eigenvalues, e, eigenvectors`
`PRINT, 'LA_TRIQL eigenvalues:'`
`PRINT, eigenvalues`

IDL prints:

`LA_TRIQL eigenvalues:`
`-3.90712     -2.53874      2.14756      4.41393`

## Syntax

LA_TRIQL, D, E [, A] [, /DOUBLE] [, STATUS=variable]

## Arguments

### D

A named vector of length n containing the real diagonal elements, optionally created by the LA_TRIRED procedure. Upon output, D is replaced by a real vector of length n containing the eigenvalues.

### E

The (n - 1) real subdiagonal elements, optionally created by the LA_TRIRED procedure. On output, the values within E are destroyed.

### A

An optional named variable that returns the eigenvectors as a set of n row vectors. If the eigenvectors of a tridiagonal array are desired, A should be input as an identity array. If the eigenvectors of an array that has been reduced by LA_TRIRED are desired, A should be input as the Array output from LA_TRIRED. If A is not input, then eigenvectors are not computed. A may be either real or complex.

## 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 = 0 if none of the inputs are double precision. If A is not input, then the default is /DOUBLE if D is double precision. If A is input, then the default is /DOUBLE if A is double precision (real or complex).

### 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 30n iterations. The STATUS value specifies how many elements of E have not converged to zero.

Note: If STATUS is not specified, any error messages will be 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.