Contents
dgttrf - compute an LU factorization of a real tridiagonal
matrix A using elimination with partial pivoting and row
interchanges
SUBROUTINE DGTTRF(N, LOW, DIAG, UP1, UP2, IPIVOT, INFO)
INTEGER N, INFO
INTEGER IPIVOT(*)
DOUBLE PRECISION LOW(*), DIAG(*), UP1(*), UP2(*)
SUBROUTINE DGTTRF_64(N, LOW, DIAG, UP1, UP2, IPIVOT, INFO)
INTEGER*8 N, INFO
INTEGER*8 IPIVOT(*)
DOUBLE PRECISION LOW(*), DIAG(*), UP1(*), UP2(*)
F95 INTERFACE
SUBROUTINE GTTRF([N], LOW, DIAG, UP1, UP2, IPIVOT, [INFO])
INTEGER :: N, INFO
INTEGER, DIMENSION(:) :: IPIVOT
REAL(8), DIMENSION(:) :: LOW, DIAG, UP1, UP2
SUBROUTINE GTTRF_64([N], LOW, DIAG, UP1, UP2, IPIVOT, [INFO])
INTEGER(8) :: N, INFO
INTEGER(8), DIMENSION(:) :: IPIVOT
REAL(8), DIMENSION(:) :: LOW, DIAG, UP1, UP2
C INTERFACE
#include <sunperf.h>
void dgttrf(int n, double *low, double *diag, double *up1,
double *up2, int *ipivot, int *info);
void dgttrf_64(long n, double *low, double *diag, double
*up1, double *up2, long *ipivot, long *info);
dgttrf computes an LU factorization of a real tridiagonal
matrix A using elimination with partial pivoting and row
interchanges.
The factorization has the form
A = L * U
where L is a product of permutation and unit lower bidiago-
nal matrices and U is upper triangular with nonzeros in only
the main diagonal and first two superdiagonals.
N (input) The order of the matrix A.
LOW (input/output)
On entry, LOW must contain the (n-1) sub-diagonal
elements of A.
On exit, LOW is overwritten by the (n-1) multi-
pliers that define the matrix L from the LU fac-
torization of A.
DIAG (input/output)
On entry, DIAG must contain the diagonal elements
of A.
On exit, DIAG is overwritten by the n diagonal
elements of the upper triangular matrix U from the
LU factorization of A.
UP1 (input/output)
On entry, UP1 must contain the (n-1) super-
diagonal elements of A.
On exit, UP1 is overwritten by the (n-1) elements
of the first super-diagonal of U.
UP2 (output)
On exit, UP2 is overwritten by the (n-2) elements
of the second super-diagonal of U.
IPIVOT (output)
The pivot indices; for 1 <= i <= n, row i of the
matrix was interchanged with row IPIVOT(i).
IPIVOT(i) will always be either i or i+1;
IPIVOT(i) = i indicates a row interchange was not
required.
INFO (output)
= 0: successful exit
< 0: if INFO = -k, the k-th argument had an ille-
gal value
> 0: if INFO = k, U(k,k) is exactly zero. The
factorization has been completed, but the factor U
is exactly singular, and division by zero will
occur if it is used to solve a system of equa-
tions.