(S|D|C|Z)TRMM

Single, double, single complex, and double complex TRMM.

Description

Computes a matrix-matrix product with triangular matrix A.

B \assign \alpha A*B

or

B \assign \alpha B*A

BLAS Interface

void strmm(const char *SIDE, const char *UPLO, const char *TRANSA,
           const char *DIAG, const qml_long *M, const qml_long *N,
           const float *ALPHA, const float *A, const qml_long *LDA,
           float *B, const qml_long *LDB);

void dtrmm(const char *SIDE, const char *UPLO, const char *TRANSA,
           const char *DIAG, const qml_long *M, const qml_long *N,
           const double *ALPHA, const double *A, const qml_long *LDA,
           double *B, const qml_long *LDB);

void ctrmm(const char *SIDE, const char *UPLO, const char *TRANSA,
           const char *DIAG, const qml_long *M, const qml_long *N,
           const qml_single_complex *ALPHA, const qml_single_complex *A,
           const qml_long *LDA, qml_single_complex *B,
           const qml_long *LDB);

void ztrmm(const char *SIDE, const char *UPLO, const char *TRANSA,
           const char *DIAG, const qml_long *M, const qml_long *N,
           const qml_double_complex *ALPHA, const qml_double_complex *A,
           const qml_long *LDA, qml_double_complex *B,
           const qml_long *LDB);

CBLAS Interface

void cblas_strmm(const CBLAS_ORDER ORDER, const CBLAS_SIDE SIDE,
                 const CBLAS_UPLO UPLO, const CBLAS_TRANSPOSE TRANSA,
                 const CBLAS_DIAG DIAG, const qml_long M, const qml_long N,
                 const float ALPHA, const float *A, const qml_long LDA,
                 float *B, const qml_long LDB);

void cblas_dtrmm(const CBLAS_ORDER ORDER, const CBLAS_SIDE SIDE,
                 const CBLAS_UPLO UPLO, const CBLAS_TRANSPOSE TRANSA,
                 const CBLAS_DIAG DIAG, const qml_long M, const qml_long N,
                 const double ALPHA, const double *A, const qml_long LDA,
                 double *B, const qml_long LDB);

void cblas_ctrmm(const CBLAS_ORDER ORDER, const CBLAS_SIDE SIDE,
                 const CBLAS_UPLO UPLO, const CBLAS_TRANSPOSE TRANSA,
                 const CBLAS_DIAG DIAG, const qml_long M, const qml_long N,
                 const qml_single_complex *ALPHA, const qml_single_complex *A,
                 const qml_long LDA, qml_single_complex *B,
                 const qml_long LDB);

void cblas_ztrmm(const CBLAS_ORDER ORDER, const CBLAS_SIDE SIDE,
                 const CBLAS_UPLO UPLO, const CBLAS_TRANSPOSE TRANSA,
                 const CBLAS_DIAG DIAG, const qml_long M, const qml_long N,
                 const qml_double_complex *ALPHA, const qml_double_complex *A,
                 const qml_long LDA, qml_double_complex *B,
                 const qml_long LDB);

Arguments

SIDE Specify which side of the product matrix A should be
For left, computes: B \assign \alpha A*B
For right, computes: B \assign \alpha B*A
UPLO Specify whether the upper or lower triangle of matrix A will be read
TRANSA Specifies how to read matrix A
Possible values: Non-Transpose, Tranpose, Complex Conjugate Transpose
DIAG Whether the diagonal is unit or not
M Number of rows of matrix B
N Number of columns of matrix B
ALPHA Scalar multiplied with the matrix-matrix product
A Input matrix A
LDA Leading dimension of matrix A
B Result matrix B
LDB Leading dimension of matrix B