DecompositionOperations<TReal, TComplex>.BandTriangularSolve Method

Definition

Namespace: Numerics.NET.LinearAlgebra.Implementation
Assembly: Numerics.NET (in Numerics.NET.dll) Version: 9.0.4

Overload List

BandTriangularSolve(MatrixTriangle, TransposeOperation, MatrixDiagonal, Int32, Int32, Int32, Array2D<TReal>, Array2D<TReal>, Int32)

Solves a triangular system of the form A * X = B or AT * X = B, where A is a triangular band matrix of order N, and B is an N-by NRHS matrix.

BandTriangularSolve(MatrixTriangle, TransposeOperation, MatrixDiagonal, Int32, Int32, Int32, ReadOnlySpan2D<TReal>, Span2D<TReal>, Int32)

Solves a triangular system of the form A * X = B or AT * X = B, where A is a triangular band matrix of order N, and B is an N-by NRHS matrix.

BandTriangularSolve(MatrixTriangle, TransposeOperation, MatrixDiagonal, Int32, Int32, Int32, ReadOnlySpan<TReal>, Int32, Span<TReal>, Int32, Int32)

Solves a triangular system of the form A * X = B or AT * X = B, where A is a triangular band matrix of order N, and B is an N-by NRHS matrix.

BandTriangularSolve(MatrixTriangle, TransposeOperation, MatrixDiagonal, Int32, Int32, Int32, Array2D<TReal>, Array2D<TReal>, Int32)

Solves a triangular system of the form A * X = B or AT * X = B, where A is a triangular band matrix of order N, and B is an N-by NRHS matrix.

C#
public void BandTriangularSolve(
	MatrixTriangle storedTriangle,
	TransposeOperation trans,
	MatrixDiagonal diag,
	int n,
	int kd,
	int nrhs,
	Array2D<TReal> ab,
	Array2D<TReal> b,
	out int info
)

Parameters

storedTriangle  MatrixTriangle
            = 'U':  A is upper triangular;
            = 'L':  A is lower triangular.
            
trans  TransposeOperation
            Specifies the form the system of equations:
            = 'N':  A * X = B  (No transpose)
            = 'T':  AT * X = B  (Transpose)
            = 'C':  AH * X = B  (Conjugate transpose = Transpose)
            
diag  MatrixDiagonal
            = 'N':  A is non-unit triangular;
            = 'U':  A is unit triangular.
            
n  Int32
            The order of the matrix A.  N >= 0.
            
kd  Int32
            The number of superdiagonals or subdiagonals of the
            triangular band matrix A.  KD >= 0.
            
nrhs  Int32
            The number of right hand sides, i.e., the number of columns
            of the matrix B.  NRHS >= 0.
            
ab  Array2D<TReal>
            AB is TReal array, dimension (LDAB,N)
            The upper or lower triangular band matrix A, stored in the
            first kd+1 rows of AB.  The j-th column of A is stored
            in the j-th column of the array AB as follows:
            if UPLO = 'U', AB(kd+1+i-j,j) = A(i,j) for max(1,j-kd)<=i<=j;
            if UPLO = 'L', AB(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.
            
            The leading dimension of the array AB.  LDAB >= KD+1.
            
b  Array2D<TReal>
            B is TReal array, dimension (LDB,NRHS)
            On entry, the right hand side matrix B.
            On exit, if INFO = 0, the solution matrix X.
            
            The leading dimension of the array B.  LDB >= max(1,N).
            
info  Int32
            = 0:  successful exit
            < 0:  if INFO = -i, the i-th argument had an illegal 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.
            

Remarks

            A check is made to verify that A is nonsingular.
            

This method corresponds to the LAPACK routine ?TBTRS.

BandTriangularSolve(MatrixTriangle, TransposeOperation, MatrixDiagonal, Int32, Int32, Int32, ReadOnlySpan2D<TReal>, Span2D<TReal>, Int32)

Solves a triangular system of the form A * X = B or AT * X = B, where A is a triangular band matrix of order N, and B is an N-by NRHS matrix.

C#
public void BandTriangularSolve(
	MatrixTriangle storedTriangle,
	TransposeOperation trans,
	MatrixDiagonal diag,
	int n,
	int kd,
	int nrhs,
	ReadOnlySpan2D<TReal> ab,
	Span2D<TReal> b,
	out int info
)

Parameters

storedTriangle  MatrixTriangle
            = 'U':  A is upper triangular;
            = 'L':  A is lower triangular.
            
trans  TransposeOperation
            Specifies the form the system of equations:
            = 'N':  A * X = B  (No transpose)
            = 'T':  AT * X = B  (Transpose)
            = 'C':  AH * X = B  (Conjugate transpose = Transpose)
            
diag  MatrixDiagonal
            = 'N':  A is non-unit triangular;
            = 'U':  A is unit triangular.
            
n  Int32
            The order of the matrix A.  N >= 0.
            
kd  Int32
            The number of superdiagonals or subdiagonals of the
            triangular band matrix A.  KD >= 0.
            
nrhs  Int32
            The number of right hand sides, i.e., the number of columns
            of the matrix B.  NRHS >= 0.
            
ab  ReadOnlySpan2D<TReal>
            AB is TReal array, dimension (LDAB,N)
            The upper or lower triangular band matrix A, stored in the
            first kd+1 rows of AB.  The j-th column of A is stored
            in the j-th column of the array AB as follows:
            if UPLO = 'U', AB(kd+1+i-j,j) = A(i,j) for max(1,j-kd)<=i<=j;
            if UPLO = 'L', AB(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.
            
            The leading dimension of the array AB.  LDAB >= KD+1.
            
b  Span2D<TReal>
            B is TReal array, dimension (LDB,NRHS)
            On entry, the right hand side matrix B.
            On exit, if INFO = 0, the solution matrix X.
            
            The leading dimension of the array B.  LDB >= max(1,N).
            
info  Int32
            = 0:  successful exit
            < 0:  if INFO = -i, the i-th argument had an illegal 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.
            

Remarks

            A check is made to verify that A is nonsingular.
            

This method corresponds to the LAPACK routine ?TBTRS.

BandTriangularSolve(MatrixTriangle, TransposeOperation, MatrixDiagonal, Int32, Int32, Int32, ReadOnlySpan<TReal>, Int32, Span<TReal>, Int32, Int32)

Solves a triangular system of the form A * X = B or AT * X = B, where A is a triangular band matrix of order N, and B is an N-by NRHS matrix.

C#
public abstract void BandTriangularSolve(
	MatrixTriangle storedTriangle,
	TransposeOperation trans,
	MatrixDiagonal diag,
	int n,
	int kd,
	int nrhs,
	ReadOnlySpan<TReal> ab,
	int ldab,
	Span<TReal> b,
	int ldb,
	out int info
)

Parameters

storedTriangle  MatrixTriangle
            = 'U':  A is upper triangular;
            = 'L':  A is lower triangular.
            
trans  TransposeOperation
            Specifies the form the system of equations:
            = 'N':  A * X = B  (No transpose)
            = 'T':  AT * X = B  (Transpose)
            = 'C':  AH * X = B  (Conjugate transpose = Transpose)
            
diag  MatrixDiagonal
            = 'N':  A is non-unit triangular;
            = 'U':  A is unit triangular.
            
n  Int32
            The order of the matrix A.  N >= 0.
            
kd  Int32
            The number of superdiagonals or subdiagonals of the
            triangular band matrix A.  KD >= 0.
            
nrhs  Int32
            The number of right hand sides, i.e., the number of columns
            of the matrix B.  NRHS >= 0.
            
ab  ReadOnlySpan<TReal>
            AB is TReal array, dimension (LDAB,N)
            The upper or lower triangular band matrix A, stored in the
            first kd+1 rows of AB.  The j-th column of A is stored
            in the j-th column of the array AB as follows:
            if UPLO = 'U', AB(kd+1+i-j,j) = A(i,j) for max(1,j-kd)<=i<=j;
            if UPLO = 'L', AB(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.
            
ldab  Int32
            The leading dimension of the array AB.  LDAB >= KD+1.
            
b  Span<TReal>
            B is TReal array, dimension (LDB,NRHS)
            On entry, the right hand side matrix B.
            On exit, if INFO = 0, the solution matrix X.
            
ldb  Int32
            The leading dimension of the array B.  LDB >= max(1,N).
            
info  Int32
            = 0:  successful exit
            < 0:  if INFO = -i, the i-th argument had an illegal 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.
            

Remarks

            A check is made to verify that A is nonsingular.
            

This method corresponds to the LAPACK routine ?TBTRS.

See Also