Routines (alphabetical) > Routines: L > LA_TRIDC

# LA_TRIDC

The LA_TRIDC procedure computes the LU decomposition of a tridiagonal (n x n) array as Array = L U, where L is a product of permutation and unit lower bidiagonal arrays, and U is upper triangular with nonzero elements only in the main diagonal and the first two superdiagonals.

LA_TRIDC is based on the following LAPACK routines:

Output Type | LAPACK Routine
Float | sgttrf
Double | dgttrf
Complex | cgttrf
Double complex | zgttrf

## Examples

The example `la_tridc_doc.pro` computes the LU decomposition of a tridiagonal array. This example file is installed in the IDL installation’s `/examples/doc/language` directory. To view the example code, enter `.edit la_tridc_doc.pro` at the IDL command line. To execute the code, enter `la_tridc_doc` at the IDL command line.

When this program is compiled and run, IDL prints:

LA_TRIDC error: 1.50427e-008

## Syntax

LA_TRIDC, AL, A, AU, U2, Index [, /DOUBLE] [, STATUS=variable]

## Arguments

### AL

A named vector of length (n - 1) containing the subdiagonal elements of an array. This procedure returns AL as the (n - 1) elements of the lower bidiagonal array from the LU decomposition.

### A

A named vector of length n containing the main diagonal elements of an array. This procedure returns A as the n diagonal elements of the upper array from the LU decomposition.

### AU

A named vector of length (n - 1) containing the superdiagonal elements of an array. This procedure returns AU as the (n - 1) superdiagonal elements of the upper array.

### U2

An output vector that contains the (n - 2) elements of the second superdiagonal of the upper array.

### Index

An output vector that records the row permutations which occurred as a result of partial pivoting. For 1 < j < n, row j of the matrix was interchanged with row Index[j].

Note: Row numbers within Index start at one rather than zero.

## 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 AL is double precision, otherwise the default is DOUBLE = 0.

### 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: One of the diagonal elements of U is zero. The STATUS value specifies which value along the diagonal (starting at one) is zero.

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

## Version History

5.6 | Introduced

## Resources and References

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

## See Also

LA_TRIMPROVE, LA_TRISOL