35 #ifndef _BLAZE_MATH_BLAS_TRSM_H_ 36 #define _BLAZE_MATH_BLAS_TRSM_H_ 73 CBLAS_TRANSPOSE transA, CBLAS_DIAG diag,
int m,
int n,
74 float alpha,
const float* A,
int lda,
float* B,
int ldb );
77 CBLAS_TRANSPOSE transA, CBLAS_DIAG diag,
int m,
int n,
78 double alpha,
const double* A,
int lda,
double* B,
int ldb );
81 CBLAS_TRANSPOSE transA, CBLAS_DIAG diag,
int m,
int n,
82 complex<float> alpha,
const complex<float>* A,
int lda,
83 complex<float>* B,
int ldb );
86 CBLAS_TRANSPOSE transA, CBLAS_DIAG diag,
int m,
int n,
87 complex<double> alpha,
const complex<double>* A,
int lda,
88 complex<double>* B,
int ldb );
90 template<
typename MT,
bool SO,
typename VT,
bool TF,
typename ST >
92 CBLAS_SIDE side, CBLAS_UPLO uplo, ST alpha );
94 template<
typename MT1,
bool SO1,
typename MT2,
bool SO2,
typename ST >
96 CBLAS_SIDE side, CBLAS_UPLO uplo, ST alpha );
128 CBLAS_TRANSPOSE transA, CBLAS_DIAG diag,
int m,
int n,
129 float alpha,
const float* A,
int lda,
float* B,
int ldb )
131 cblas_strsm( order, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb );
162 CBLAS_TRANSPOSE transA, CBLAS_DIAG diag,
int m,
int n,
163 double alpha,
const double* A,
int lda,
double* B,
int ldb )
165 cblas_dtrsm( order, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb );
196 CBLAS_TRANSPOSE transA, CBLAS_DIAG diag,
int m,
int n,
197 complex<float> alpha,
const complex<float>* A,
int lda,
198 complex<float>* B,
int ldb )
202 cblas_ctrsm( order, side, uplo, transA, diag, m, n, reinterpret_cast<const float*>( &alpha ),
203 reinterpret_cast<const float*>( A ), lda, reinterpret_cast<float*>( B ), ldb );
234 CBLAS_TRANSPOSE transA, CBLAS_DIAG diag,
int m,
int n,
235 complex<double> alpha,
const complex<double>* A,
int lda,
236 complex<double>* B,
int ldb )
240 cblas_ztrsm( order, side, uplo, transA, diag, m, n, reinterpret_cast<const double*>( &alpha ),
241 reinterpret_cast<const double*>( A ), lda, reinterpret_cast<double*>( B ), ldb );
267 template<
typename MT
273 CBLAS_SIDE side, CBLAS_UPLO uplo, ST alpha )
288 const int m ( ( side == CblasLeft )?( numeric_cast<int>( (~b).
size() ) ):( 1 ) );
289 const int n ( ( side == CblasRight )?( numeric_cast<int>( (~b).
size() ) ):( 1 ) );
290 const int lda( numeric_cast<int>( (~A).
spacing() ) );
291 const int ldb( ( IsRowMajorMatrix_v<MT> )?( n ):( m ) );
293 trsm( ( IsRowMajorMatrix_v<MT> )?( CblasRowMajor ):( CblasColMajor ),
298 m, n, alpha, (~A).
data(), lda, (~b).
data(), ldb );
324 template<
typename MT1
330 CBLAS_SIDE side, CBLAS_UPLO uplo, ST alpha )
345 const int m ( numeric_cast<int>( (~B).
rows() ) );
346 const int n ( numeric_cast<int>( (~B).
columns() ) );
347 const int lda( numeric_cast<int>( (~A).
spacing() ) );
348 const int ldb( numeric_cast<int>( (~B).
spacing() ) );
350 trsm( ( IsRowMajorMatrix_v<MT2> )?( CblasRowMajor ):( CblasColMajor ),
352 ( SO1 == SO2 )?( uplo ):( ( uplo == CblasLower )?( CblasUpper ):( CblasLower ) ),
353 ( SO1 == SO2 )?( CblasNoTrans ):( CblasTrans ),
355 m, n, alpha, (~A).
data(), lda, (~B).
data(), ldb );
Constraint on the data type.
Header file for auxiliary alias declarations.
#define BLAZE_CONSTRAINT_MUST_HAVE_MUTABLE_DATA_ACCESS(T)
Constraint on the data type.In case the given data type T does not provide low-level data access to m...
Definition: MutableDataAccess.h:61
#define BLAZE_CONSTRAINT_MUST_HAVE_CONST_DATA_ACCESS(T)
Constraint on the data type.In case the given data type T does not provide low-level data access to c...
Definition: ConstDataAccess.h:61
MT::ElementType * data(DenseMatrix< MT, SO > &dm) noexcept
Low-level data access to the dense matrix elements.
Definition: DenseMatrix.h:169
#define BLAZE_CONSTRAINT_MUST_NOT_BE_COMPUTATION_TYPE(T)
Constraint on the data type.In case the given data type T is a computational expression (i...
Definition: Computation.h:81
Header file for the DenseVector base class.
Cast operators for numeric types.
constexpr size_t columns(const Matrix< MT, SO > &matrix) noexcept
Returns the current number of columns of the matrix.
Definition: Matrix.h:514
size_t spacing(const DenseMatrix< MT, SO > &dm) noexcept
Returns the spacing between the beginning of two rows/columns.
Definition: DenseMatrix.h:252
Constraint on the data type.
Namespace of the Blaze C++ math library.
Definition: Blaze.h:58
#define BLAZE_ALWAYS_INLINE
Platform dependent setup of an enforced inline keyword.
Definition: Inline.h:85
Header file for the DenseMatrix base class.
Constraint on the data type.
System settings for the BLAS mode.
Header file for run time assertion macros.
Constraint on the data type.
constexpr size_t size(const Matrix< MT, SO > &matrix) noexcept
Returns the total number of elements of the matrix.
Definition: Matrix.h:530
#define BLAZE_CONSTRAINT_MUST_BE_BLAS_COMPATIBLE_TYPE(T)
Constraint on the data type.In case the given data type T is not a BLAS compatible data type (i...
Definition: BLASCompatible.h:61
constexpr size_t rows(const Matrix< MT, SO > &matrix) noexcept
Returns the current number of rows of the matrix.
Definition: Matrix.h:498
Header file for the IsRowMajorMatrix type trait.
Header file for the complex data type.
#define BLAZE_STATIC_ASSERT(expr)
Compile time assertion macro.In case of an invalid compile time expression, a compilation error is cr...
Definition: StaticAssert.h:112
System settings for the inline keywords.
#define BLAZE_INTERNAL_ASSERT(expr, msg)
Run time assertion macro for internal checks.In case of an invalid run time expression, the program execution is terminated. The BLAZE_INTERNAL_ASSERT macro can be disabled by setting the BLAZE_USER_ASSERTION flag to zero or by defining NDEBUG during the compilation.
Definition: Assert.h:101