Developer Reference for Intel® oneAPI Math Kernel Library for C
?tfsm
Solves a matrix equation (one operand is a triangular matrix in RFP format).
Syntax
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);
Include Files
mkl.h
Description
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) = A^{T} for real flavors op(A) = A or op(A) = A^{H} for complex flavors
The matrix B is overwritten by the solution matrix X .
Input Parameters
- matrix_layout
-
Specifies whether matrix storage layout is row major ( LAPACK_ROW_MAJOR ) or column major ( LAPACK_COL_MAJOR ).
transr
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.
side
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 .
uplo
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.
trans
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') .
diag
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.
m
Specifies the number of rows of B . The value of m must be at least zero.
n
Specifies the number of columns of B . The value of n must be at least zero.
- alpha
-
REAL for stfsm DOUBLE PRECISION for dtfsm COMPLEX for ctfsm DOUBLE COMPLEX for ztfsm Specifies the scalar alpha . When alpha is zero, then a is not referenced and b need not be set before entry.
- a
-
REAL for stfsm DOUBLE PRECISION for dtfsm COMPLEX for ctfsm DOUBLE COMPLEX for ztfsm Array, size (n*(n+1)/2) . Contains the matrix A in RFP format .
- b
-
REAL for stfsm DOUBLE PRECISION for dtfsm COMPLEX for ctfsm DOUBLE COMPLEX for ztfsm
Array, size (1, ldb*n)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 .
ldb
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 .
Output Parameters
- b
-
Overwritten by the solution matrix X .
Return Values
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.