DecompositionOperations<TReal, TComplex>.TriangularSolve Method

Definition

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

Overload List

TriangularSolve(MatrixTriangle, TransposeOperation, MatrixDiagonal, 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 matrix of order N, and B is an N-by-NRHS matrix.

TriangularSolve(MatrixTriangle, TransposeOperation, MatrixDiagonal, Int32, Int32, Array2D<TComplex>, Array2D<TComplex>, Int32) Solves a complex triangular system of equations.
TriangularSolve(MatrixTriangle, TransposeOperation, MatrixDiagonal, 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 matrix of order N, and B is an N-by-NRHS matrix.

TriangularSolve(MatrixTriangle, TransposeOperation, MatrixDiagonal, Int32, Int32, ReadOnlySpan2D<TComplex>, Span2D<TComplex>, Int32) Solves a complex triangular system of equations.
TriangularSolve(MatrixTriangle, TransposeOperation, MatrixDiagonal, 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 matrix of order N, and B is an N-by-NRHS matrix.

TriangularSolve(MatrixTriangle, TransposeOperation, MatrixDiagonal, Int32, Int32, ReadOnlySpan<TComplex>, Int32, Span<TComplex>, Int32, Int32) Solves a complex triangular system of equations.

TriangularSolve(MatrixTriangle, TransposeOperation, MatrixDiagonal, 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 matrix of order N, and B is an N-by-NRHS matrix.

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

Parameters

storedTriangle  MatrixTriangle
            = 'U':  A is upper triangular;
            = 'L':  A is lower triangular.
            
trans  TransposeOperation
            Specifies the form of 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.
            
nrhs  Int32
            The number of right hand sides, i.e., the number of columns
            of the matrix B.  NRHS >= 0.
            
a  Array2D<TReal>
            A is TReal array, dimension (LDA,N)
            The triangular matrix A.  If UPLO = 'U', the leading N-by-N
            upper triangular part of the array A contains the upper
            triangular matrix, and the strictly lower triangular part of
            A is not referenced.  If UPLO = 'L', the leading N-by-N lower
            triangular part of the array A contains the lower triangular
            matrix, and the strictly upper triangular part of A is not
            referenced.  If DIAG = 'U', the diagonal elements of A are
            also not referenced and are assumed to be 1.
            
            The leading dimension of the array A.  LDA >= max(1,N).
            
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 ?TRTRS.

TriangularSolve(MatrixTriangle, TransposeOperation, MatrixDiagonal, Int32, Int32, Array2D<TComplex>, Array2D<TComplex>, Int32)

Solves a complex triangular system of equations.
C#
public void TriangularSolve(
	MatrixTriangle storedTriangle,
	TransposeOperation trans,
	MatrixDiagonal diag,
	int n,
	int nrhs,
	Array2D<TComplex> a,
	Array2D<TComplex> b,
	out int info
)

Parameters

storedTriangle  MatrixTriangle
A MatrixTriangle value that indicates whether the matrix is upper or lower triangular.
trans  TransposeOperation
A TransposeOperation value that indicates if the matrix should be transposed or not.
diag  MatrixDiagonal
A MatrixDiagonal value that indicates whether the matrix is unit diagonal.
n  Int32
The number of rows and columns of the matrix.
nrhs  Int32
The number of right hand sides.
a  Array2D<TComplex>
A complex array that contains the elements of the matrix.
b  Array2D<TComplex>
A complex array that contains the components of the right-hand side(s).
info  Int32
On return, indicates error conditions.

TriangularSolve(MatrixTriangle, TransposeOperation, MatrixDiagonal, 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 matrix of order N, and B is an N-by-NRHS matrix.

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

Parameters

storedTriangle  MatrixTriangle
            = 'U':  A is upper triangular;
            = 'L':  A is lower triangular.
            
trans  TransposeOperation
            Specifies the form of 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.
            
nrhs  Int32
            The number of right hand sides, i.e., the number of columns
            of the matrix B.  NRHS >= 0.
            
a  ReadOnlySpan2D<TReal>
            A is TReal array, dimension (LDA,N)
            The triangular matrix A.  If UPLO = 'U', the leading N-by-N
            upper triangular part of the array A contains the upper
            triangular matrix, and the strictly lower triangular part of
            A is not referenced.  If UPLO = 'L', the leading N-by-N lower
            triangular part of the array A contains the lower triangular
            matrix, and the strictly upper triangular part of A is not
            referenced.  If DIAG = 'U', the diagonal elements of A are
            also not referenced and are assumed to be 1.
            
            The leading dimension of the array A.  LDA >= max(1,N).
            
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 ?TRTRS.

TriangularSolve(MatrixTriangle, TransposeOperation, MatrixDiagonal, Int32, Int32, ReadOnlySpan2D<TComplex>, Span2D<TComplex>, Int32)

Solves a complex triangular system of equations.
C#
public void TriangularSolve(
	MatrixTriangle storedTriangle,
	TransposeOperation trans,
	MatrixDiagonal diag,
	int n,
	int nrhs,
	ReadOnlySpan2D<TComplex> a,
	Span2D<TComplex> b,
	out int info
)

Parameters

storedTriangle  MatrixTriangle
A MatrixTriangle value that indicates whether the matrix is upper or lower triangular.
trans  TransposeOperation
A TransposeOperation value that indicates if the matrix should be transposed or not.
diag  MatrixDiagonal
A MatrixDiagonal value that indicates whether the matrix is unit diagonal.
n  Int32
The number of rows and columns of the matrix.
nrhs  Int32
The number of right hand sides.
a  ReadOnlySpan2D<TComplex>
A complex array that contains the elements of the matrix.
b  Span2D<TComplex>
A complex array that contains the components of the right-hand side(s).
info  Int32
On return, indicates error conditions.

TriangularSolve(MatrixTriangle, TransposeOperation, MatrixDiagonal, 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 matrix of order N, and B is an N-by-NRHS matrix.

C#
public abstract void TriangularSolve(
	MatrixTriangle storedTriangle,
	TransposeOperation trans,
	MatrixDiagonal diag,
	int n,
	int nrhs,
	ReadOnlySpan<TReal> a,
	int lda,
	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 of 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.
            
nrhs  Int32
            The number of right hand sides, i.e., the number of columns
            of the matrix B.  NRHS >= 0.
            
a  ReadOnlySpan<TReal>
            A is TReal array, dimension (LDA,N)
            The triangular matrix A.  If UPLO = 'U', the leading N-by-N
            upper triangular part of the array A contains the upper
            triangular matrix, and the strictly lower triangular part of
            A is not referenced.  If UPLO = 'L', the leading N-by-N lower
            triangular part of the array A contains the lower triangular
            matrix, and the strictly upper triangular part of A is not
            referenced.  If DIAG = 'U', the diagonal elements of A are
            also not referenced and are assumed to be 1.
            
lda  Int32
            The leading dimension of the array A.  LDA >= max(1,N).
            
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 ?TRTRS.

TriangularSolve(MatrixTriangle, TransposeOperation, MatrixDiagonal, Int32, Int32, ReadOnlySpan<TComplex>, Int32, Span<TComplex>, Int32, Int32)

Solves a complex triangular system of equations.
C#
public abstract void TriangularSolve(
	MatrixTriangle storedTriangle,
	TransposeOperation trans,
	MatrixDiagonal diag,
	int n,
	int nrhs,
	ReadOnlySpan<TComplex> a,
	int lda,
	Span<TComplex> b,
	int ldb,
	out int info
)

Parameters

storedTriangle  MatrixTriangle
A MatrixTriangle value that indicates whether the matrix is upper or lower triangular.
trans  TransposeOperation
A TransposeOperation value that indicates if the matrix should be transposed or not.
diag  MatrixDiagonal
A MatrixDiagonal value that indicates whether the matrix is unit diagonal.
n  Int32
The number of rows and columns of the matrix.
nrhs  Int32
The number of right hand sides.
a  ReadOnlySpan<TComplex>
A complex array that contains the elements of the matrix.
lda  Int32
The leading dimension of the matrix a.
b  Span<TComplex>
A complex array that contains the components of the right-hand side(s).
ldb  Int32
The leading dimension of the matrix b.
info  Int32
On return, indicates error conditions.

See Also