35#ifndef _BLAZE_MATH_EXPRESSIONS_DENSEMATRIX_H_
36#define _BLAZE_MATH_EXPRESSIONS_DENSEMATRIX_H_
110template<
typename MT,
bool SO >
113template<
typename MT,
bool SO >
116template<
typename MT,
bool SO >
159 -> EnableIf_t< HasMutableDataAccess_v<MT>,
typename MT::ElementType* >
184 return data_backend( *dm );
203 -> DisableIf_t< HasConstDataAccess_v<MT>,
const typename MT::ElementType* >
226 -> EnableIf_t< HasConstDataAccess_v<MT>,
const typename MT::ElementType* >
251 return data_backend( *dm );
267 return (*dm).spacing();
283template<
typename MT >
284inline auto resetLower_backend( DenseMatrix<MT,false>& dm )
285 -> DisableIf_t< IsUniform_v<MT> || IsUpper_v<MT> >
289 const size_t m( (*dm).rows() );
290 const size_t n( (*dm).columns() );
292 for(
size_t i=1UL; i<m; ++i ) {
293 const size_t jend(
min( i, n ) );
294 for(
size_t j=0UL; j<jend; ++j ) {
314template<
typename MT >
315inline auto resetLower_backend( DenseMatrix<MT,true>& dm )
316 -> DisableIf_t< IsUniform_v<MT> || IsUpper_v<MT> >
320 const size_t m ( (*dm).rows() );
321 const size_t n ( (*dm).columns() );
322 const size_t jend(
min( m, n ) );
324 for(
size_t j=0UL; j<jend; ++j ) {
325 for(
size_t i=j+1UL; i<m; ++i ) {
346inline auto resetLower_backend( DenseMatrix<MT,SO>& dm )
347 -> EnableIf_t< IsUniform_v<MT> && !IsUpper_v<MT> >
369inline auto resetLower_backend( DenseMatrix<MT,SO>& dm )
370 -> EnableIf_t< IsUpper_v<MT> >
390inline void resetLower( DenseMatrix<MT,SO>& dm )
392 resetLower_backend( *dm );
409template<
typename MT >
410inline auto resetUpper_backend( DenseMatrix<MT,false>& dm )
411 -> DisableIf_t< IsUniform_v<MT> || IsLower_v<MT> >
415 const size_t m ( (*dm).rows() );
416 const size_t n ( (*dm).columns() );
417 const size_t iend(
min( m, n ) );
419 for(
size_t i=0UL; i<iend; ++i ) {
420 for(
size_t j=i+1UL; j<n; ++j ) {
440template<
typename MT >
441inline auto resetUpper_backend( DenseMatrix<MT,true>& dm )
442 -> DisableIf_t< IsUniform_v<MT> || IsLower_v<MT> >
446 const size_t m( (*dm).rows() );
447 const size_t n( (*dm).columns() );
449 for(
size_t j=1UL; j<n; ++j ) {
450 const size_t iend(
min( j, m ) );
451 for(
size_t i=0UL; i<iend; ++i ) {
472inline auto resetUpper_backend( DenseMatrix<MT,SO>& dm )
473 -> EnableIf_t< IsUniform_v<MT> || !IsLower_v<MT> >
495inline auto resetUpper_backend( DenseMatrix<MT,SO>& dm )
496 -> EnableIf_t< IsLower_v<MT> >
516inline void resetUpper( DenseMatrix<MT,SO>& dm )
518 resetUpper_backend( *dm );
Header file for the EnableIf class template.
Header file for the HasConstDataAccess type trait.
Header file for the HasMutableDataAccess type trait.
Header file for the IsLower type trait.
Header file for the IsUpper type trait.
Header file for the MAYBE_UNUSED function template.
Base class for dense matrices.
Definition: DenseMatrix.h:82
Base class for matrices.
Definition: Matrix.h:85
Header file for the Matrix base class.
decltype(auto) min(const DenseMatrix< MT1, SO1 > &lhs, const DenseMatrix< MT2, SO2 > &rhs)
Computes the componentwise minimum of the dense matrices lhs and rhs.
Definition: DMatDMatMapExpr.h:1339
BLAZE_ALWAYS_INLINE const MT::ElementType * data(const DenseMatrix< MT, SO > &dm) noexcept
Low-level data access to the dense matrix elements.
Definition: DenseMatrix.h:249
BLAZE_ALWAYS_INLINE size_t spacing(const DenseMatrix< MT, SO > &dm) noexcept
Returns the spacing between the beginning of two rows/columns.
Definition: DenseMatrix.h:265
constexpr void reset(Matrix< MT, SO > &matrix)
Resetting the given matrix.
Definition: Matrix.h:806
#define BLAZE_ALWAYS_INLINE
Platform dependent setup of an enforced inline keyword.
Definition: Inline.h:85
constexpr void MAYBE_UNUSED(const Args &...)
Suppression of unused parameter warnings.
Definition: MaybeUnused.h:81
typename EnableIf<!Condition, T >::Type DisableIf_t
Auxiliary type for the EnableIf class template.
Definition: EnableIf.h:175
Header file for the reset shim.
System settings for the inline keywords.
Header file for the generic min algorithm.