SUBROUTINE ZGTSV( N, NRHS, LOW, DIAG, UP, B, LDB, INFO) DOUBLE COMPLEX LOW(*), DIAG(*), UP(*), B(LDB,*) INTEGER N, NRHS, LDB, INFO SUBROUTINE ZGTSV_64( N, NRHS, LOW, DIAG, UP, B, LDB, INFO) DOUBLE COMPLEX LOW(*), DIAG(*), UP(*), B(LDB,*) INTEGER*8 N, NRHS, LDB, INFO
SUBROUTINE GTSV( [N], [NRHS], LOW, DIAG, UP, B, [LDB], [INFO]) COMPLEX(8), DIMENSION(:) :: LOW, DIAG, UP COMPLEX(8), DIMENSION(:,:) :: B INTEGER :: N, NRHS, LDB, INFO SUBROUTINE GTSV_64( [N], [NRHS], LOW, DIAG, UP, B, [LDB], [INFO]) COMPLEX(8), DIMENSION(:) :: LOW, DIAG, UP COMPLEX(8), DIMENSION(:,:) :: B INTEGER(8) :: N, NRHS, LDB, INFO
void zgtsv(int n, int nrhs, doublecomplex *low, doublecomplex *diag, doublecomplex *up, doublecomplex *b, int ldb, int *info);
void zgtsv_64(long n, long nrhs, doublecomplex *low, doublecomplex *diag, doublecomplex *up, doublecomplex *b, long ldb, long *info);
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.