dgtsv - solve the equation A*X = B,
SUBROUTINE DGTSV( N, NRHS, LOW, DIAG, UP, B, LDB, INFO) INTEGER N, NRHS, LDB, INFO DOUBLE PRECISION LOW(*), DIAG(*), UP(*), B(LDB,*)
SUBROUTINE DGTSV_64( N, NRHS, LOW, DIAG, UP, B, LDB, INFO) INTEGER*8 N, NRHS, LDB, INFO DOUBLE PRECISION LOW(*), DIAG(*), UP(*), B(LDB,*)
SUBROUTINE GTSV( [N], [NRHS], LOW, DIAG, UP, B, [LDB], [INFO]) INTEGER :: N, NRHS, LDB, INFO REAL(8), DIMENSION(:) :: LOW, DIAG, UP REAL(8), DIMENSION(:,:) :: B
SUBROUTINE GTSV_64( [N], [NRHS], LOW, DIAG, UP, B, [LDB], [INFO]) INTEGER(8) :: N, NRHS, LDB, INFO REAL(8), DIMENSION(:) :: LOW, DIAG, UP REAL(8), DIMENSION(:,:) :: B
#include <sunperf.h>
void dgtsv(int n, int nrhs, double *low, double *diag, double *up, double *b, int ldb, int *info);
void dgtsv_64(long n, long nrhs, double *low, double *diag, double *up, double *b, long ldb, long *info);
dgtsv solves the equation
where A is an n by n tridiagonal matrix, by Gaussian elimination with partial pivoting.
Note that the equation A'*X = B may be solved by interchanging the order of the arguments DU and DL.
On exit, LOW is overwritten by the (n-2) elements of the second super-diagonal of the upper triangular matrix U from the LU factorization of A, in LOW(1), ..., LOW(n-2).
On exit, DIAG is overwritten by the n diagonal elements of U.
On exit, UP is overwritten by the (n-1) elements of the first super-diagonal of U.
= 0: successful exit
< 0: if INFO = -i, the i-th argument had an illegal value
> 0: if INFO = i, U(i,i) is exactly zero, and the solution has not been computed. The factorization has not been completed unless i = N.