Computes a matrix-matrix product where one input matrix is triangular and the other matrix is general, putting output into a different matrix.
call strmm_oop(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb, beta, c, ldc) call dtrmm_oop(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb, beta, c, ldc) call ctrmm_oop(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb, beta, c, ldc) call ztrmm_oop(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb, beta, c, ldc)
mkl.fi
The ?trmm_oop routines compute a scalar-matrix-matrix product where one of the matrices in the multiplication is triangular, and then add the result to a scalar-matrix product. The operation is defined as
C := alpha*op(A)*B + beta*C
or
C := alpha*B*op(A) + beta*C
where:
CHARACTER*1. Specifies whether op(A) appears on the left or right of B in the operation.
If side = 'L' or side = 'l', then C := alpha*op(A)*B + beta*C.
If side = 'R' or side = 'r', then C := alpha*B*op(A) + beta*C.
CHARACTER*1. Specifies whether the 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 lower triangular.
CHARACTER*1. Specifies the form of op(A) used in the matrix multiplication.
If transa='N' or 'n', then op(A) = A.
If transa='T' or 't', then op(A) = A'.
If transa='C' or 'c', then op(A) = conjg(A').
CHARACTER*1. Specifies whether the 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.
INTEGER. Specifies the number of rows of matrix B. The value of m must be at least zero.
INTEGER. Specifies the number of columnss of matrix B. The value of n must be at least zero.
REAL for strmm_oop.
DOUBLE PRECISION for dtrmm_oop.
COMPLEX for ctrmm_oop.
DOUBLE COMPLEX for ztrmm_oop.
Specifies the scalar alpha.
REAL for strmm_oop.
DOUBLE PRECISION for dtrmm_oop.
COMPLEX for ctrmm_oop.
DOUBLE COMPLEX for ztrmm_oop.
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.
INTEGER. 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).
REAL for strmm_oop.
DOUBLE PRECISION for dtrmm_oop.
COMPLEX for ctrmm_oop.
DOUBLE COMPLEX for ztrmm_oop.
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.
INTEGER. 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).
REAL for strmm_oop.
DOUBLE PRECISION for dtrmm_oop.
COMPLEX for ctrmm_oop.
DOUBLE COMPLEX for ztrmm_oop.
Specifies the scalar beta.
REAL for strmm_oop.
DOUBLE PRECISION for dtrmm_oop.
COMPLEX for ctrmm_oop.
DOUBLE COMPLEX for ztrmm_oop.
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.
INTEGER. 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 matrix overwritten by the operation