35#ifndef _BLAZE_MATH_BLAS_TRSM_H_
36#define _BLAZE_MATH_BLAS_TRSM_H_
71template<
typename MT,
bool SO,
typename VT,
bool TF,
typename ST >
72void trsm(
const DenseMatrix<MT,SO>& A, DenseVector<VT,TF>& b,
73 CBLAS_SIDE side, CBLAS_UPLO uplo, ST alpha );
75template<
typename MT1,
bool SO1,
typename MT2,
bool SO2,
typename ST >
76void trsm(
const DenseMatrix<MT1,SO1>& A, DenseMatrix<MT2,SO2>& B,
77 CBLAS_SIDE side, CBLAS_UPLO uplo, ST alpha );
113inline void trsm(
const DenseMatrix<MT,SO>& A, DenseVector<VT,TF>& b,
114 CBLAS_SIDE side, CBLAS_UPLO uplo, ST alpha )
129 const blas_int_t m ( ( side == CblasLeft )?( numeric_cast<blas_int_t>( (*b).size() ) ):( 1 ) );
130 const blas_int_t n ( ( side == CblasRight )?( numeric_cast<blas_int_t>( (*b).size() ) ):( 1 ) );
131 const blas_int_t lda( numeric_cast<blas_int_t>( (*A).spacing() ) );
132 const blas_int_t ldb( ( IsRowMajorMatrix_v<MT> )?( n ):( m ) );
134 trsm( ( IsRowMajorMatrix_v<MT> )?( CblasRowMajor ):( CblasColMajor ),
139 m, n, alpha, (*A).data(), lda, (*b).data(), ldb );
169template<
typename MT1
174inline void trsm(
const DenseMatrix<MT1,SO1>& A, DenseMatrix<MT2,SO2>& B,
175 CBLAS_SIDE side, CBLAS_UPLO uplo, ST alpha )
190 const blas_int_t m ( numeric_cast<blas_int_t>( (*B).rows() ) );
191 const blas_int_t n ( numeric_cast<blas_int_t>( (*B).columns() ) );
192 const blas_int_t lda( numeric_cast<blas_int_t>( (*A).spacing() ) );
193 const blas_int_t ldb( numeric_cast<blas_int_t>( (*B).spacing() ) );
195 trsm( ( IsRowMajorMatrix_v<MT2> )?( CblasRowMajor ):( CblasColMajor ),
197 ( SO1 == SO2 )?( uplo ):( ( uplo == CblasLower )?( CblasUpper ):( CblasLower ) ),
198 ( SO1 == SO2 )?( CblasNoTrans ):( CblasTrans ),
200 m, n, alpha, (*A).data(), lda, (*B).data(), ldb );
Header file for auxiliary alias declarations.
Header file for run time assertion macros.
Constraint on the data type.
Header file for the complex data type.
Constraint on the data type.
Header file for the IsRowMajorMatrix type trait.
Constraint on the data type.
Cast operators for numeric types.
Header file for the CBLAS trsm wrapper functions.
Constraint on the data type.
Header file for the DenseMatrix base class.
Header file for the DenseVector base class.
#define BLAZE_CONSTRAINT_MUST_BE_BLAS_COMPATIBLE_TYPE(T)
Constraint on the data type.
Definition: BLASCompatible.h:61
#define BLAZE_CONSTRAINT_MUST_NOT_BE_COMPUTATION_TYPE(T)
Constraint on the data type.
Definition: Computation.h:81
#define BLAZE_CONSTRAINT_MUST_HAVE_MUTABLE_DATA_ACCESS(T)
Constraint on the data type.
Definition: MutableDataAccess.h:61
#define BLAZE_CONSTRAINT_MUST_HAVE_CONST_DATA_ACCESS(T)
Constraint on the data type.
Definition: ConstDataAccess.h:61
int32_t blas_int_t
Signed integer type used in the BLAS/LAPACK wrapper functions.
Definition: Types.h:64
#define BLAZE_INTERNAL_ASSERT(expr, msg)
Run time assertion macro for internal checks.
Definition: Assert.h:101
System settings for the BLAS mode.