Solves a triangular matrix equation.

Syntax

void cblas_strsm (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, float *b, const MKL_INT ldb);

void cblas_dtrsm (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, double *b, const MKL_INT ldb);

void cblas_ctrsm (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, void *b, const MKL_INT ldb);

void cblas_ztrsm (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, void *b, const MKL_INT ldb);

Include Files

  • mkl.h

Description

The ?trsm 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, and

op(A) is one of op(A) = A, or op(A) = A', or op(A) = conjg(A').

The matrix B is overwritten by the solution matrix X.

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 X in the equation:

if side = CblasLeft, then op(A)*X = alpha*B;

if side = CblasRight, then X*op(A) = alpha*B.

uplo

Specifies whether the matrix A is upper or lower triangular.

uplo = CblasUpper

if uplo = CblasLower, then the matrix is low triangular.

transa

Specifies the form of op(A) used in the matrix multiplication:

if transa=CblasNoTrans, then op(A) = A;

if transa=CblasTrans;

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 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

Specifies the scalar alpha.

When alpha is zero, then a is not referenced and b need not be set before entry.

a

Array, size lda* k , where k is m when side = CblasLeft and 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 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 as declared in the calling (sub)program. 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, size ldb*n. Before entry, the leading m-by-n part of the array b must contain the matrix B.

For Layout = CblasRowMajor: array, 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 as declared in the calling (sub)program. When Layout = CblasColMajor, ldb must be at least max(1, m); otherwise, ldb must be at least max(1, n).

Output Parameters

b

Overwritten by the solution matrix X.

Para obtener información más completa sobre las optimizaciones del compilador, consulte nuestro Aviso de optimización.
Seleccione el color del botón adhesivo: 
Orange (only for download buttons)