dgtsv


NAME

dgtsv - solve the equation A*X = B,


SYNOPSIS

  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,*)
 

F95 INTERFACE

  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
 

C INTERFACE

#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);


PURPOSE

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.


ARGUMENTS

* N (input)
The order of the matrix A. N >= 0.

* NRHS (input)
The number of right hand sides, i.e., the number of columns of the matrix B. NRHS >= 0.

* LOW (input/output)
On entry, LOW must contain the (n-1) sub-diagonal elements of A.

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).

* DIAG (input/output)
On entry, DIAG must contain the diagonal elements of A.

On exit, DIAG is overwritten by the n diagonal elements of U.

* UP (input/output)
On entry, UP must contain the (n-1) super-diagonal elements of A.

On exit, UP is overwritten by the (n-1) elements of the first super-diagonal of U.

* B (input/output)
On entry, the N by NRHS matrix of right hand side matrix B. On exit, if INFO = 0, the N by NRHS solution matrix X.

* LDB (input)
The leading dimension of the array B. LDB >= max(1,N).

* INFO (output)