Intel® oneAPI Math Kernel Library Developer Reference - C
Solves a matrix equation (one operand is a triangular matrix in RFP format).
lapack_int LAPACKE_stfsm (int matrix_layout , char transr , char side , char uplo , char trans , char diag , lapack_int m , lapack_int n , float alpha , const float * a , float * b , lapack_int ldb );
lapack_int LAPACKE_dtfsm (int matrix_layout , char transr , char side , char uplo , char trans , char diag , lapack_int m , lapack_int n , double alpha , const double * a , double * b , lapack_int ldb );
lapack_int LAPACKE_ctfsm (int matrix_layout , char transr , char side , char uplo , char trans , char diag , lapack_int m , lapack_int n , lapack_complex_float alpha , const lapack_complex_float * a , lapack_complex_float * b , lapack_int ldb );
lapack_int LAPACKE_ztfsm (int matrix_layout , char transr , char side , char uplo , char trans , char diag , lapack_int m , lapack_int n , lapack_complex_double alpha , const lapack_complex_double * a , lapack_complex_double * b , lapack_int ldb );
The ?tfsm routines solve one of the following matrix equations:
op(A)*X = alpha*B,
or
X*op(A) = alpha*B,
where:
alpha is a scalar,
X and B are m-by-n matrices,
A is a unit, or non-unit, upper or lower triangular matrix in rectangular full packed (RFP) format.
op(A) can be one of the following:
op(A) = A or op(A) = AT for real flavors
op(A) = A or op(A) = AH for complex flavors
The matrix B is overwritten by the solution matrix X.
Specifies whether matrix storage layout is row major (LAPACK_ROW_MAJOR) or column major ( LAPACK_COL_MAJOR ).
if transr = 'N' or 'n', the normal form of RFP A is stored;
if transr = 'T' or 't', the transpose form of RFP A is stored;
if transr = 'C' or 'c', the conjugate-transpose form of RFP A is stored.
Specifies whether op(A) appears on the left or right of X in the equation:
if side = 'L' or 'l', then op(A)*X = alpha*B;
if side = 'R' or 'r', then X*op(A) = alpha*B.
Specifies whether the RFP matrix A is upper or lower triangular:
if uplo = 'U' or 'u', then the matrix is upper triangular;
if uplo = 'L' or 'l', then the matrix is low triangular.
Specifies the form of op(A) used in the matrix multiplication:
if trans = 'N' or 'n', then op(A) = A;
if trans = 'T' or 't', then op(A) = A';
if trans = 'C' or 'c', then op(A) = conjg(A').
Specifies whether the RFP matrix A is unit triangular:
if diag = 'U' or 'u' then the matrix is unit triangular;
if diag = 'N' or 'n', then the matrix is not unit triangular.
Specifies the number of rows of B. The value of m must be at least zero.
Specifies the number of columns of B. The value of n must be at least zero.
Specifies the scalar alpha.
When alpha is zero, then a is not referenced and b need not be set before entry.
Array, size (n*(n+1)/2). Contains the matrix A in RFP format.
Array, size max(1, ldb*n) for column major and max(1, ldb*m) for row major.
Before entry, the leading m-by-n part of the array b must contain the right-hand side matrix B.
Specifies the leading dimension of b as declared in the calling (sub)program. The value of ldb must be at least max(1, m) for column major and max(1,n) for row major.
Overwritten by the solution matrix X.
This function returns a value info.
If info = 0, the execution is successful.
If info < 0, the i-th parameter had an illegal value.
If info = -1011, memory allocation error occurred.