Developer Reference for Intel® oneAPI Math Kernel Library for C
cblas_?trsm_oop
Solves a triangular matrix equation and adds the result to another scaled matrix.
Syntax
void cblas_strsm_oop (
    const CBLAS_LAYOUT layout, const CBLAS_SIDE side, const CBLAS_UPLO uplo,
    const CBLAS_TRANSPOSE transa, const CBLAS_DIAG diag, const MKL_INT m,
    const MKL_INT n, const float alpha, const float *a, const MKL_INT lda,
    const float *b, const MKL_INT ldb, const float beta, float *c,
    const MKL_INT ldc);
void cblas_dtrsm_oop (
    const CBLAS_LAYOUT layout, const CBLAS_SIDE side, const CBLAS_UPLO uplo,
    const CBLAS_TRANSPOSE transa, const CBLAS_DIAG diag, const MKL_INT m,
    const MKL_INT n, const double alpha, const double *a, const MKL_INT lda,
    const double *b, const MKL_INT ldb, const double beta, double *c,
    const MKL_INT ldc);
void cblas_ctrsm_oop (
    const CBLAS_LAYOUT layout, const CBLAS_SIDE side,
    const CBLAS_UPLO uplo, const CBLAS_TRANSPOSE transa,
    const CBLAS_DIAG diag, const MKL_INT m, const MKL_INT n,
    const void* alpha, const void *a, const MKL_INT lda, const void *b,
    const MKL_INT ldb, const void* beta, void *c, const MKL_INT ldc);
void cblas_ztrsm_oop (
    const CBLAS_LAYOUT layout, const CBLAS_SIDE side,
    const CBLAS_UPLO uplo, const CBLAS_TRANSPOSE transa,
    const CBLAS_DIAG diag, const MKL_INT m, const MKL_INT n,
    const void* alpha, const void *a, const MKL_INT lda, const void *b,
    const MKL_INT ldb, const void* beta, void *c, const MKL_INT ldc);
 
  Include Files
mkl.h
Description
The cblas_?trsm_oop routines perform a triangular matrix solve followed by a scaled matrix addition.
For a left-side solve, the routine solves
op(A)*X=alpha*B
for x and then computes
C := X + beta*C
For a right-side solve, the routine solves
X*op(A)=alpha*B
followed by the same-scaled addition
C := X + beta*C
where:
- alpha and beta are scalars.
 - A is a unit or non-unit upper or lower triangular matrix.
 - B is an m-by-n matrix.
 - C is an m-by-n matrix.
 - op(A) is one of op(A) = A, op(A) = A', or op(A) = conjg(A').
 
Input Parameters
- layout
 -  
     
Specifies whether two-dimensional array storage is row-major (CblasRowMajor) or column-major (CblasColMajor).
 - side
 -  
     
Specifies whether op(A) appears on the left or right of B in the triangular solve.
If side = CblasLeft, then we solve op(A)*X = alpha*B before performing C := X + beta*C.
If side = CblasRight, then we solve X*op(A) = alpha*B before performing C := X + beta*C.
 - uplo
 -  
     
Specifies whether the matrix A is upper or lower triangular.
If uplo = CblasUpper, then the matrix is upper triangular.
If uplo = CblasLower, then the matrix is lower triangular.
 - transa
 -  
     
Specifies the form of op(A) used in the triangular solve.
If transa=CblasNoTrans, then op(A) = A.
If transa=CblasTrans, then op(A) = A'.
If transa=CblasConjTrans, then op(A) = conjg(A').
 - diag
 -  
     
Specifies whether the matrix A is unit triangular.
If diag = CblasUnit then the matrix is unit triangular.
If diag = CblasNonUnit, then the matrix is not unit triangular.
 - m
 -  
     
Specifies the number of rows of matrix B. The value of m must be at least zero.
 - n
 -  
     
Specifies the number of columns of matrix B. The value of n must be at least zero.
 - alpha
 -  
     
Specifies the scalar alpha.
 - a
 -  
     
Array of size lda*k, where k is m when side = CblasLeft and k is n when side = CblasRight.
Before entry with uplo = CblasUpper, the leading k by k upper triangular part of the array a must contain the upper triangular matrix and the strictly lower triangular part of a is not referenced.
Before entry with uplo = CblasLower the lower triangular part of the array a must contain the lower triangular matrix and the strictly upper triangular part of a is not referenced.
When diag = CblasUnit, the diagonal elements of a are not referenced either, but are assumed to be unity.
 - lda
 -  
     
Specifies the leading dimension of a. When side = CblasLeft, then lda must be at least max(1, m). When side = CblasRight, then lda must be at least max(1, n).
 - b
 -  
     
For layout = CblasColMajor, array of size ldb*n. Before entry, the leading m-by-n part of the array b must contain the matrix B.
For layout = CblasRowMajor, array of size ldb*m. Before entry, the leading n-by-m part of the array b must contain the matrix B.
 - ldb
 -  
     
Specifies the leading dimension of b. When layout = CblasColMajor, ldb must be at least max(1, m); otherwise, ldb must be at least max(1, n).
 - beta
 -  
     
Specifies the scalar beta.
 - c
 -  
     
For layout = CblasColMajor, array of size ldc*n. Before entry, the leading m-by-n part of the array c must contain the matrix C.
For layout = CblasRowMajor, array of size ldc*m. Before entry, the leading n-by-m part of the array c must contain the matrix C.
 - ldc
 -  
     
Specifies the leading dimension of c. When layout = CblasColMajor, ldc must be at least max(1, m); otherwise, ldc must be at least max(1, n).
 
Output Parameters
- c
 -  
     
Output matrix overwritten by the operation.