Contents


NAME

     dtbtrs - solve a triangular system of the form   A * X  =  B
     or A**T * X = B,

SYNOPSIS

     SUBROUTINE DTBTRS(UPLO, TRANSA, DIAG, N, KD, NRHS, A, LDA, B, LDB,
           INFO)

     CHARACTER * 1 UPLO, TRANSA, DIAG
     INTEGER N, KD, NRHS, LDA, LDB, INFO
     DOUBLE PRECISION A(LDA,*), B(LDB,*)

     SUBROUTINE DTBTRS_64(UPLO, TRANSA, DIAG, N, KD, NRHS, A, LDA, B,
           LDB, INFO)

     CHARACTER * 1 UPLO, TRANSA, DIAG
     INTEGER*8 N, KD, NRHS, LDA, LDB, INFO
     DOUBLE PRECISION A(LDA,*), B(LDB,*)

  F95 INTERFACE
     SUBROUTINE TBTRS(UPLO, [TRANSA], DIAG, [N], KD, [NRHS], A, [LDA], B,
            [LDB], [INFO])

     CHARACTER(LEN=1) :: UPLO, TRANSA, DIAG
     INTEGER :: N, KD, NRHS, LDA, LDB, INFO
     REAL(8), DIMENSION(:,:) :: A, B

     SUBROUTINE TBTRS_64(UPLO, [TRANSA], DIAG, [N], KD, [NRHS], A, [LDA], B,
            [LDB], [INFO])

     CHARACTER(LEN=1) :: UPLO, TRANSA, DIAG
     INTEGER(8) :: N, KD, NRHS, LDA, LDB, INFO
     REAL(8), DIMENSION(:,:) :: A, B

  C INTERFACE
     #include <sunperf.h>

     void dtbtrs(char uplo, char transa, char diag,  int  n,  int
               kd,  int  nrhs, double *a, int lda, double *b, int
               ldb, int *info);

     void dtbtrs_64(char uplo, char transa, char  diag,  long  n,
               long  kd,  long  nrhs, double *a, long lda, double
               *b, long ldb, long *info);

PURPOSE

     dtbtrs solves a triangular system of the form

     A * X = B or A**T * X = B

     where A is a triangular band matrix of order N, and B is  an
     N-by  NRHS matrix.  A check is made to verify that A is non-
     singular.

ARGUMENTS

     UPLO (input)
               = 'U':  A is upper triangular;
               = 'L':  A is lower triangular.

     TRANSA (input)
               Specifies the form the system of equations:
               = 'N':  A * X = B  (No transpose)
               = 'T':  A**T * X = B  (Transpose)
               = 'C':  A**H * X = B  (Conjugate transpose = Tran-
               spose)

     DIAG (input)
               = 'N':  A is non-unit triangular;
               = 'U':  A is unit triangular.

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

     KD (input)
               The number of superdiagonals  or  subdiagonals  of
               the triangular band matrix A.  KD >= 0.

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

     A (input) The upper  or  lower  triangular  band  matrix  A,
               stored  in  the  first  kd+1  rows of A.  The j-th
               column of A is stored in the j-th  column  of  the
               array  A as follows:  if UPLO = 'U', A(kd+1+i-j,j)
               = A(i,j) for max(1,j-kd)<=i<=j;  if  UPLO  =  'L',
               A(1+i-j,j)     = A(i,j) for j<=i<=min(n,j+kd).  If
               DIAG = 'U', the diagonal elements  of  A  are  not
               referenced and are assumed to be 1.
     LDA (input)
               The leading dimension of  the  array  A.   LDA  >=
               KD+1.

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

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

     INFO (output)
               = 0:  successful exit
               < 0:  if INFO = -i, the i-th argument had an ille-
               gal value
               > 0:  if INFO = i, the i-th diagonal element of  A
               is  zero,  indicating  that the matrix is singular
               and the solutions X have not been computed.