The LA_TRIRED procedure reduces a real symmetric or complex Hermitian array to real tridiagonal form T. If the array is real symmetric then the decomposition is A = Q T QT, where Q is orthogonal. If the array is complex Hermitian then the decomposition is A = Q T QH, where Q is unitary. The superscript T represents the transpose while superscript H represents the Hermitian, or transpose complex conjugate.

LA_TRIRED is based on the following LAPACK routines:

 

Output Type

LAPACK Routine

Float

ssytrd, sorgtr

Double

dsytrd, dorgtr

Complex

chetrd, cungtr

Double complex

zhetrd, zungtr

Examples


See LA_TRIQL for an example of using this procedure.

Syntax


LA_TRIRED, Array, D, E [, /DOUBLE] [, /UPPER]

Arguments


Array

A named variable containing the real or complex array to decompose. Only the lower triangular portion of Array is used (or upper if the /UPPER keyword is set). This procedure returns Array as the real orthogonal (or complex unitary) Q array used to reduce the original array to tridiagonal form.

D

An n-element output vector containing the real diagonal elements of the tridiagonal array. Note that D is always real.

E

An (n - 1) element output vector containing the real subdiagonal elements of the tridiagonal array. Note that E is always real.

Keywords


DOUBLE

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

UPPER

If this keyword is set, then only the upper triangular portion of Array is used, and the upper triangular array is returned. The default is to use the lower triangular portion and return the lower triangular array.

Version History


5.6

Introduced

Resources and References


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

See Also


LA_TRIQL, TRIRED