35 #ifndef _BLAZE_MATH_EXPRESSIONS_DMATSCALARMULTEXPR_H_ 36 #define _BLAZE_MATH_EXPRESSIONS_DMATSCALARMULTEXPR_H_ 131 static constexpr
bool useAssign = ( IsComputation_v<MT> && RequiresEvaluation_v<MT> );
134 template<
typename MT2 >
136 static constexpr
bool UseAssign_v =
useAssign;
148 template<
typename MT2 >
149 static constexpr
bool UseSMPAssign_v =
293 inline auto load() const noexcept {
422 ( MT::simdEnabled && IsNumeric_v<ET> &&
423 ( HasSIMDMult_v<ET,ST> || HasSIMDMult_v<UnderlyingElement_t<ET>,ST> ) );
522 inline size_t rows() const noexcept {
563 template<
typename T >
564 inline bool canAlias(
const T* alias )
const noexcept {
565 return IsExpression_v<MT> &&
matrix_.canAlias( alias );
575 template<
typename T >
576 inline bool isAliased(
const T* alias )
const noexcept {
577 return matrix_.isAliased( alias );
597 return matrix_.canSMPAssign() ||
598 (
rows() *
columns() >= SMP_DMATSCALARMULT_THRESHOLD );
622 template<
typename MT2
632 assign( ~lhs, rhs.matrix_ );
633 assign( ~lhs, (~lhs) * rhs.scalar_ );
652 template<
typename MT2
662 assign( ~lhs, rhs.matrix_ );
663 (~lhs) *= rhs.scalar_;
682 template<
typename MT2
684 friend inline auto addAssign( DenseMatrix<MT2,SO2>& lhs,
const DMatScalarMultExpr& rhs )
685 -> EnableIf_t< UseAssign_v<MT2> >
697 addAssign( ~lhs, tmp );
720 template<
typename MT2
722 friend inline auto subAssign( DenseMatrix<MT2,SO2>& lhs,
const DMatScalarMultExpr& rhs )
723 -> EnableIf_t< UseAssign_v<MT2> >
735 subAssign( ~lhs, tmp );
758 template<
typename MT2
760 friend inline auto schurAssign( DenseMatrix<MT2,SO2>& lhs,
const DMatScalarMultExpr& rhs )
761 -> EnableIf_t< UseAssign_v<MT2> >
773 schurAssign( ~lhs, tmp );
804 template<
typename MT2
807 -> EnableIf_t< UseSMPAssign_v<MT2> >
834 template<
typename MT2
837 -> EnableIf_t< UseSMPAssign_v<MT2> >
845 (~lhs) *= rhs.scalar_;
864 template<
typename MT2
867 -> EnableIf_t< UseSMPAssign_v<MT2> >
902 template<
typename MT2
905 -> EnableIf_t< UseSMPAssign_v<MT2> >
940 template<
typename MT2
943 -> EnableIf_t< UseSMPAssign_v<MT2> >
1009 template<
typename MT
1051 template<
typename MT
1054 , EnableIf_t< IsNumeric_v<ST> >* =
nullptr >
1055 inline decltype(
auto) operator*( const
DenseMatrix<MT,SO>& mat, ST scalar )
1087 template<
typename ST
1090 , EnableIf_t< IsNumeric_v<ST> >* =
nullptr >
1091 inline decltype(
auto) operator*( ST scalar, const
DenseMatrix<MT,SO>& mat )
1122 template<
typename MT
1125 inline decltype(
auto) operator-( const DMatScalarMultExpr<MT,ST,TF>& dm )
1129 using ReturnType =
const DMatScalarMultExpr<MT,ST,TF>;
1130 return ReturnType( dm.leftOperand(), -dm.rightOperand() );
1157 template<
typename MT
1161 , EnableIf_t< IsNumeric_v<ST2> >* =
nullptr >
1162 inline decltype(
auto) operator*( const DMatScalarMultExpr<MT,ST1,SO>& mat, ST2 scalar )
1166 return mat.leftOperand() * ( mat.rightOperand() * scalar );
1185 template<
typename ST1
1189 , EnableIf_t< IsNumeric_v<ST1> >* =
nullptr >
1190 inline decltype(
auto) operator*( ST1 scalar, const DMatScalarMultExpr<MT,ST2,SO>& mat )
1194 return mat.leftOperand() * ( scalar * mat.rightOperand() );
1213 template<
typename MT
1217 , EnableIf_t< IsNumeric_v<ST2> && ( IsInvertible_v<ST1> || IsInvertible_v<ST2> ) >* =
nullptr >
1218 inline decltype(
auto) operator/( const DMatScalarMultExpr<MT,ST1,SO>& mat, ST2 scalar )
1222 return mat.leftOperand() * ( mat.rightOperand() / scalar );
1242 template<
typename MT
1246 inline decltype(
auto)
1247 operator*( const DMatScalarMultExpr<MT,ST,SO>& mat, const DenseVector<VT,false>& vec )
1251 return ( mat.leftOperand() * (~vec) ) * mat.rightOperand();
1271 template<
typename VT
1275 inline decltype(
auto)
1276 operator*( const DenseVector<VT,true>& vec, const DMatScalarMultExpr<MT,ST,SO>& mat )
1280 return ( (~vec) * mat.leftOperand() ) * mat.rightOperand();
1302 template<
typename MT
1307 inline decltype(
auto)
1308 operator*( const DMatScalarMultExpr<MT,ST1,SO>& mat, const DVecScalarMultExpr<VT,ST2,false>& vec )
1312 return ( mat.leftOperand() * vec.leftOperand() ) * ( mat.rightOperand() * vec.rightOperand() );
1334 template<
typename VT
1339 inline decltype(
auto)
1340 operator*( const DVecScalarMultExpr<VT,ST1,true>& vec, const DMatScalarMultExpr<MT,ST2,SO>& mat )
1344 return ( vec.leftOperand() * mat.leftOperand() ) * ( vec.rightOperand() * mat.rightOperand() );
1364 template<
typename MT
1368 inline decltype(
auto)
1369 operator*( const DMatScalarMultExpr<MT,ST,SO>& mat, const SparseVector<VT,false>& vec )
1373 return ( mat.leftOperand() * (~vec) ) * mat.rightOperand();
1393 template<
typename VT
1397 inline decltype(
auto)
1398 operator*( const SparseVector<VT,true>& vec, const DMatScalarMultExpr<MT,ST,SO>& mat )
1402 return ( (~vec) * mat.leftOperand() ) * mat.rightOperand();
1424 template<
typename MT
1429 inline decltype(
auto)
1430 operator*( const DMatScalarMultExpr<MT,ST1,SO>& mat, const SVecScalarMultExpr<VT,ST2,false>& vec )
1434 return ( mat.leftOperand() * vec.leftOperand() ) * ( mat.rightOperand() * vec.rightOperand() );
1456 template<
typename VT
1461 inline decltype(
auto)
1462 operator*( const SVecScalarMultExpr<VT,ST1,true>& vec, const DMatScalarMultExpr<MT,ST2,SO>& mat )
1466 return ( vec.leftOperand() * mat.leftOperand() ) * ( vec.rightOperand() * mat.rightOperand() );
1486 template<
typename MT1
1491 inline decltype(
auto)
1492 operator*( const DMatScalarMultExpr<MT1,ST,SO1>& lhs, const DenseMatrix<MT2,SO2>& rhs )
1496 return ( lhs.leftOperand() * (~rhs) ) * lhs.rightOperand();
1516 template<
typename MT1
1521 inline decltype(
auto)
1522 operator*( const DenseMatrix<MT1,SO1>& lhs, const DMatScalarMultExpr<MT2,ST,SO2>& rhs )
1526 return ( (~lhs) * rhs.leftOperand() ) * rhs.rightOperand();
1546 template<
typename MT1
1552 inline decltype(
auto)
1553 operator*( const DMatScalarMultExpr<MT1,ST1,SO1>& lhs, const DMatScalarMultExpr<MT2,ST2,SO2>& rhs )
1557 return ( lhs.leftOperand() * rhs.leftOperand() ) * ( lhs.rightOperand() * rhs.rightOperand() );
1577 template<
typename MT1
1582 inline decltype(
auto)
1583 operator*( const DMatScalarMultExpr<MT1,ST,SO1>& lhs, const SparseMatrix<MT2,SO2>& rhs )
1587 return ( lhs.leftOperand() * (~rhs) ) * lhs.rightOperand();
1607 template<
typename MT1
1612 inline decltype(
auto)
1613 operator*( const SparseMatrix<MT1,SO1>& lhs, const DMatScalarMultExpr<MT2,ST,SO2>& rhs )
1617 return ( (~lhs) * rhs.leftOperand() ) * rhs.rightOperand();
1638 template<
typename MT1
1644 inline decltype(
auto)
1645 operator*( const DMatScalarMultExpr<MT1,ST1,SO1>& mat, const SMatScalarMultExpr<MT2,ST2,SO2>& vec )
1649 return ( mat.leftOperand() * vec.leftOperand() ) * ( mat.rightOperand() * vec.rightOperand() );
1670 template<
typename MT1
1676 inline decltype(
auto)
1677 operator*( const SMatScalarMultExpr<MT1,ST1,SO1>& mat, const DMatScalarMultExpr<MT2,ST2,SO2>& vec )
1681 return ( mat.leftOperand() * vec.leftOperand() ) * ( mat.rightOperand() * vec.rightOperand() );
1697 template<
typename MT,
typename ST,
bool SO >
1698 struct IsAligned< DMatScalarMultExpr<MT,ST,SO> >
1699 :
public IsAligned<MT>
1715 template<
typename MT,
typename ST,
bool SO >
1716 struct IsPadded< DMatScalarMultExpr<MT,ST,SO> >
1717 :
public IsPadded<MT>
Pointer difference type of the Blaze library.
Header file for auxiliary alias declarations.
static constexpr bool smpAssignable
Compilation switch for the expression template assignment strategy.
Definition: DMatScalarMultExpr.h:426
Constraint on the data type.
RightOperand scalar_
Scalar of the multiplication expression.
Definition: DMatScalarMultExpr.h:414
Header file for basic type definitions.
typename If< Condition, T1, T2 >::Type If_t
Auxiliary alias declaration for the If class template.The If_t alias declaration provides a convenien...
Definition: If.h:109
ElementType * PointerType
Pointer return type.
Definition: DMatScalarMultExpr.h:185
typename T::ResultType ResultType_t
Alias declaration for nested ResultType type definitions.The ResultType_t alias declaration provides ...
Definition: Aliases.h:390
ConstIterator & operator++()
Pre-increment operator.
Definition: DMatScalarMultExpr.h:241
const ConstIterator operator--(int)
Post-decrement operator.
Definition: DMatScalarMultExpr.h:273
Header file for the serial shim.
#define BLAZE_CONSTRAINT_MUST_BE_MATRIX_WITH_STORAGE_ORDER(T, SO)
Constraint on the data type.In case the given data type T is not a dense or sparse matrix type and in...
Definition: StorageOrder.h:63
size_t columns() const noexcept
Returns the current number of columns of the matrix.
Definition: DMatScalarMultExpr.h:532
#define BLAZE_CONSTRAINT_MUST_BE_DENSE_MATRIX_TYPE(T)
Constraint on the data type.In case the given data type T is not a dense, N-dimensional matrix type...
Definition: DenseMatrix.h:61
bool operator>(const ConstIterator &rhs) const
Greater-than comparison between two ConstIterator objects.
Definition: DMatScalarMultExpr.h:337
RightOperand scalar_
Right-hand side scalar of the multiplication expression.
Definition: DMatScalarMultExpr.h:605
static constexpr bool smpAssignable
Compilation flag for SMP assignments.
Definition: CompressedMatrix.h:3113
size_t rows() const noexcept
Returns the current number of rows of the matrix.
Definition: DMatScalarMultExpr.h:522
Base class for all matrix/scalar multiplication expression templates.The MatScalarMultExpr class serv...
Definition: MatScalarMultExpr.h:67
Header file for the DenseVector base class.
bool canSMPAssign() const noexcept
Returns whether the expression can be used in SMP assignments.
Definition: DMatScalarMultExpr.h:596
ReferenceType reference
Reference return type.
Definition: DMatScalarMultExpr.h:193
static constexpr bool returnExpr
Compilation switch for the selection of the subscript operator return type.
Definition: DMatScalarMultExpr.h:117
MultTrait_t< RT, ST > ResultType
Result type for expression template evaluations.
Definition: DMatScalarMultExpr.h:158
Header file for the Computation base class.
ReturnType operator*() const
Direct access to the element at the current iterator position.
Definition: DMatScalarMultExpr.h:283
Header file for the UnderlyingElement type trait.
Header file for the RequiresEvaluation type trait.
static constexpr size_t SIMDSIZE
The number of elements packed within a single SIMD element.
Definition: DMatScalarMultExpr.h:431
typename T::ReturnType ReturnType_t
Alias declaration for nested ReturnType type definitions.The ReturnType_t alias declaration provides ...
Definition: Aliases.h:410
auto load() const noexcept
Access to the SIMD elements of the matrix.
Definition: DMatScalarMultExpr.h:293
Base class for dense matrices.The DenseMatrix class is a base class for all dense matrix classes...
Definition: DenseMatrix.h:80
Base class for sparse matrices.The SparseMatrix class is a base class for all sparse matrix classes...
Definition: Forward.h:137
typename T::ElementType ElementType_t
Alias declaration for nested ElementType type definitions.The ElementType_t alias declaration provide...
Definition: Aliases.h:170
std::random_access_iterator_tag IteratorCategory
The iterator category.
Definition: DMatScalarMultExpr.h:183
Constraint on the data type.
typename EnableIf< Condition, T >::Type EnableIf_t
Auxiliary type for the EnableIf class template.The EnableIf_t alias declaration provides a convenient...
Definition: EnableIf.h:138
bool canAlias(const T *alias) const noexcept
Returns whether the expression can alias with the given address alias.
Definition: DMatScalarMultExpr.h:564
Header file for the IsTemporary type trait class.
Header file for the multiplication trait.
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 If class template.
Header file for the UnderlyingBuiltin type trait.
Expression object for dense matrix-scalar multiplications.The DMatScalarMultExpr class represents the...
Definition: DMatScalarMultExpr.h:98
ConstIterator & operator+=(size_t inc)
Addition assignment operator.
Definition: DMatScalarMultExpr.h:218
#define BLAZE_THROW_OUT_OF_RANGE(MESSAGE)
Macro for the emission of a std::out_of_range exception.This macro encapsulates the default way of Bl...
Definition: Exception.h:331
IteratorType iterator_
Iterator to the current element.
Definition: DMatScalarMultExpr.h:413
Header file for the DenseMatrix base class.
const If_t< returnExpr, ExprReturnType, ElementType > ReturnType
Return type for expression template evaluations.
Definition: DMatScalarMultExpr.h:164
const Element * ConstIterator
Iterator over constant elements.
Definition: CompressedMatrix.h:3086
Header file for all SIMD functionality.
bool operator==(const ConstIterator &rhs) const
Equality comparison between two ConstIterator objects.
Definition: DMatScalarMultExpr.h:304
If_t< useAssign, const ResultType, const DMatScalarMultExpr &> CompositeType
Data type for composite expression templates.
Definition: DMatScalarMultExpr.h:167
ValueType value_type
Type of the underlying elements.
Definition: DMatScalarMultExpr.h:191
#define BLAZE_CONSTRAINT_MUST_BE_SAME_TYPE(A, B)
Data type constraint.In case the two types A and B are not the same (ignoring all cv-qualifiers of bo...
Definition: SameType.h:71
Header file for the IsAligned type trait.
RightOperand rightOperand() const noexcept
Returns the right-hand side scalar operand.
Definition: DMatScalarMultExpr.h:552
BLAZE_ALWAYS_INLINE auto load(size_t i, size_t j) const noexcept
Access to the SIMD elements of the matrix.
Definition: DMatScalarMultExpr.h:486
ElementType_t< ResultType > ElementType
Resulting element type.
Definition: DMatScalarMultExpr.h:161
Constraints on the storage order of matrix types.
Header file for the exception macros of the math module.
bool operator<=(const ConstIterator &rhs) const
Less-than comparison between two ConstIterator objects.
Definition: DMatScalarMultExpr.h:348
LeftOperand matrix_
Left-hand side dense matrix of the multiplication expression.
Definition: DMatScalarMultExpr.h:604
ConstIterator_t< MT > IteratorType
ConstIterator type of the dense matrix expression.
Definition: DMatScalarMultExpr.h:197
Constraint on the data type.
decltype(std::declval< RN >() *std::declval< ST >()) ExprReturnType
Expression return type for the subscript operator.
Definition: DMatScalarMultExpr.h:120
Header file for all forward declarations for expression class templates.
DifferenceType operator-(const ConstIterator &rhs) const
Calculating the number of elements between two iterators.
Definition: DMatScalarMultExpr.h:370
typename UnderlyingBuiltin< T >::Type UnderlyingBuiltin_t
Auxiliary alias declaration for the UnderlyingBuiltin type trait.The UnderlyingBuiltin_t alias declar...
Definition: UnderlyingBuiltin.h:133
Header file for the EnableIf class template.
friend const ConstIterator operator-(const ConstIterator &it, size_t dec)
Subtraction between a ConstIterator and an integral value.
Definition: DMatScalarMultExpr.h:406
Header file for the IsPadded type trait.
OppositeType_t< ResultType > OppositeType
Result type with opposite storage order for expression template evaluations.
Definition: DMatScalarMultExpr.h:159
typename MultTrait< T1, T2 >::Type MultTrait_t
Auxiliary alias declaration for the MultTrait class template.The MultTrait_t alias declaration provid...
Definition: MultTrait.h:240
typename T::OppositeType OppositeType_t
Alias declaration for nested OppositeType type definitions.The OppositeType_t alias declaration provi...
Definition: Aliases.h:270
PointerType pointer
Pointer return type.
Definition: DMatScalarMultExpr.h:192
ConstIterator(IteratorType iterator, RightOperand scalar)
Constructor for the ConstIterator class.
Definition: DMatScalarMultExpr.h:206
friend const ConstIterator operator+(size_t inc, const ConstIterator &it)
Addition between an integral value and a ConstIterator.
Definition: DMatScalarMultExpr.h:394
ReturnType at(size_t i, size_t j) const
Checked access to the matrix elements.
Definition: DMatScalarMultExpr.h:468
Header file for the IsNumeric type trait.
Header file for the HasSIMDMult type trait.
TransposeType_t< ResultType > TransposeType
Transpose type for expression template evaluations.
Definition: DMatScalarMultExpr.h:160
Header file for the MatScalarMultExpr base class.
ST RightOperand
Composite type of the right-hand side scalar value.
Definition: DMatScalarMultExpr.h:173
ElementType & ReferenceType
Reference return type.
Definition: DMatScalarMultExpr.h:186
typename T::TransposeType TransposeType_t
Alias declaration for nested TransposeType type definitions.The TransposeType_t alias declaration pro...
Definition: Aliases.h:470
Header file for run time assertion macros.
typename T::CompositeType CompositeType_t
Alias declaration for nested CompositeType type definitions.The CompositeType_t alias declaration pro...
Definition: Aliases.h:90
auto smpAddAssign(Matrix< MT1, SO1 > &lhs, const Matrix< MT2, SO2 > &rhs) -> EnableIf_t< IsDenseMatrix_v< MT1 > >
Default implementation of the SMP addition assignment of a matrix to a dense matrix.
Definition: DenseMatrix.h:131
ptrdiff_t DifferenceType
Difference between two iterators.
Definition: DMatScalarMultExpr.h:187
static constexpr bool simdEnabled
Compilation switch for the expression template evaluation strategy.
Definition: DMatScalarMultExpr.h:421
ConstIterator & operator-=(size_t dec)
Subtraction assignment operator.
Definition: DMatScalarMultExpr.h:230
#define BLAZE_CONSTRAINT_MUST_BE_NUMERIC_TYPE(T)
Constraint on the data type.In case the given data type T is not a numeric (integral or floating poin...
Definition: Numeric.h:61
SIMD characteristics of data types.The SIMDTrait class template provides the SIMD characteristics of ...
Definition: SIMDTrait.h:295
#define BLAZE_FUNCTION_TRACE
Function trace macro.This macro can be used to reliably trace function calls. In case function tracin...
Definition: FunctionTrace.h:94
ConstIterator begin(size_t i) const
Returns an iterator to the first non-zero element of row i.
Definition: DMatScalarMultExpr.h:501
auto smpAssign(Matrix< MT1, SO1 > &lhs, const Matrix< MT2, SO2 > &rhs) -> EnableIf_t< IsDenseMatrix_v< MT1 > >
Default implementation of the SMP assignment of a matrix to a dense matrix.
Definition: DenseMatrix.h:100
decltype(auto) serial(const DenseMatrix< MT, SO > &dm)
Forces the serial evaluation of the given dense matrix expression dm.
Definition: DMatSerialExpr.h:808
ResultType_t< MT > RT
Result type of the dense matrix expression.
Definition: DMatScalarMultExpr.h:104
#define BLAZE_CONSTRAINT_MUST_NOT_REQUIRE_EVALUATION(T)
Constraint on the data type.In case the given data type T requires an intermediate evaluation within ...
Definition: RequiresEvaluation.h:81
ConstIterator end(size_t i) const
Returns an iterator just past the last non-zero element of row i.
Definition: DMatScalarMultExpr.h:512
const ConstIterator operator++(int)
Post-increment operator.
Definition: DMatScalarMultExpr.h:252
auto smpSchurAssign(Matrix< MT1, SO1 > &lhs, const Matrix< MT2, SO2 > &rhs) -> EnableIf_t< IsDenseMatrix_v< MT1 > >
Default implementation of the SMP Schur product assignment of a matrix to dense matrix.
Definition: DenseMatrix.h:194
ElementType ValueType
Type of the underlying elements.
Definition: DMatScalarMultExpr.h:184
bool isAliased(const T *alias) const noexcept
Returns whether the expression is aliased with the given address alias.
Definition: DMatScalarMultExpr.h:576
friend const ConstIterator operator+(const ConstIterator &it, size_t inc)
Addition between a ConstIterator and an integral value.
Definition: DMatScalarMultExpr.h:382
Header file for the IsInvertible type trait.
bool operator>=(const ConstIterator &rhs) const
Greater-than comparison between two ConstIterator objects.
Definition: DMatScalarMultExpr.h:359
typename T::ConstIterator ConstIterator_t
Alias declaration for nested ConstIterator type definitions.The ConstIterator_t alias declaration pro...
Definition: Aliases.h:110
ConstIterator & operator--()
Pre-decrement operator.
Definition: DMatScalarMultExpr.h:262
ReturnType_t< MT > RN
Return type of the dense matrix expression.
Definition: DMatScalarMultExpr.h:105
const Type & ReturnType
Return type for expression template evaluations.
Definition: CompressedMatrix.h:3081
static constexpr bool useAssign
Compilation switch for the serial evaluation strategy of the multiplication expression.
Definition: DMatScalarMultExpr.h:131
Header file for the IsComputation type trait class.
auto smpSubAssign(Matrix< MT1, SO1 > &lhs, const Matrix< MT2, SO2 > &rhs) -> EnableIf_t< IsDenseMatrix_v< MT1 > >
Default implementation of the SMP subtraction assignment of a matrix to dense matrix.
Definition: DenseMatrix.h:162
Base class for all compute expression templates.The Computation class serves as a tag for all computa...
Definition: Computation.h:66
ReturnType operator()(size_t i, size_t j) const
2D-access to the matrix elements.
Definition: DMatScalarMultExpr.h:453
DMatScalarMultExpr(const MT &matrix, ST scalar) noexcept
Constructor for the DMatScalarMultExpr class.
Definition: DMatScalarMultExpr.h:440
Iterator over the elements of the dense matrix.
Definition: DMatScalarMultExpr.h:179
bool operator<(const ConstIterator &rhs) const
Less-than comparison between two ConstIterator objects.
Definition: DMatScalarMultExpr.h:326
bool isAligned() const noexcept
Returns whether the operands of the expression are properly aligned in memory.
Definition: DMatScalarMultExpr.h:586
ElementType_t< MT > ET
Element type of the dense matrix expression.
Definition: DMatScalarMultExpr.h:106
bool operator!=(const ConstIterator &rhs) const
Inequality comparison between two ConstIterator objects.
Definition: DMatScalarMultExpr.h:315
LeftOperand leftOperand() const noexcept
Returns the left-hand side dense matrix operand.
Definition: DMatScalarMultExpr.h:542
If_t< IsExpression_v< MT >, const MT, const MT &> LeftOperand
Composite type of the left-hand side dense matrix expression.
Definition: DMatScalarMultExpr.h:170
System settings for the inline keywords.
Header file for the thresholds for matrix/vector and matrix/matrix multiplications.
CompositeType_t< MT > CT
Composite type of the dense matrix expression.
Definition: DMatScalarMultExpr.h:107
#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
IteratorCategory iterator_category
The iterator category.
Definition: DMatScalarMultExpr.h:190
Header file for the IsExpression type trait class.
Header file for the function trace functionality.