35 #ifndef _BLAZE_MATH_EXPRESSIONS_DMATSCALARMULTEXPR_H_ 36 #define _BLAZE_MATH_EXPRESSIONS_DMATSCALARMULTEXPR_H_ 132 static constexpr
bool useAssign = ( IsComputation_v<MT> && RequiresEvaluation_v<MT> );
135 template<
typename MT2 >
137 static constexpr
bool UseAssign_v =
useAssign;
149 template<
typename MT2 >
150 static constexpr
bool UseSMPAssign_v =
151 ( ( !MT2::smpAssignable || !MT::smpAssignable ) &&
useAssign );
294 inline auto load() const noexcept {
423 ( MT::simdEnabled && IsNumeric_v<ET> &&
424 ( HasSIMDMult_v<ET,ST> || HasSIMDMult_v<UnderlyingElement_t<ET>,ST> ) );
523 inline size_t rows() const noexcept {
564 template<
typename T >
565 inline bool canAlias(
const T* alias )
const noexcept {
566 return IsExpression_v<MT> &&
matrix_.canAlias( alias );
576 template<
typename T >
577 inline bool isAliased(
const T* alias )
const noexcept {
578 return matrix_.isAliased( alias );
598 return matrix_.canSMPAssign() ||
599 (
rows() *
columns() >= SMP_DMATSCALARMULT_THRESHOLD );
623 template<
typename MT2
633 assign( ~lhs, rhs.matrix_ );
634 assign( ~lhs, (~lhs) * rhs.scalar_ );
653 template<
typename MT2
663 assign( ~lhs, rhs.matrix_ );
664 (~lhs) *= rhs.scalar_;
683 template<
typename MT2
685 friend inline auto addAssign( DenseMatrix<MT2,SO2>& lhs,
const DMatScalarMultExpr& rhs )
686 -> EnableIf_t< UseAssign_v<MT2> >
698 addAssign( ~lhs, tmp );
721 template<
typename MT2
723 friend inline auto subAssign( DenseMatrix<MT2,SO2>& lhs,
const DMatScalarMultExpr& rhs )
724 -> EnableIf_t< UseAssign_v<MT2> >
736 subAssign( ~lhs, tmp );
759 template<
typename MT2
761 friend inline auto schurAssign( DenseMatrix<MT2,SO2>& lhs,
const DMatScalarMultExpr& rhs )
762 -> EnableIf_t< UseAssign_v<MT2> >
774 schurAssign( ~lhs, tmp );
805 template<
typename MT2
808 -> EnableIf_t< UseSMPAssign_v<MT2> >
835 template<
typename MT2
838 -> EnableIf_t< UseSMPAssign_v<MT2> >
846 (~lhs) *= rhs.scalar_;
865 template<
typename MT2
868 -> EnableIf_t< UseSMPAssign_v<MT2> >
903 template<
typename MT2
906 -> EnableIf_t< UseSMPAssign_v<MT2> >
941 template<
typename MT2
944 -> EnableIf_t< UseSMPAssign_v<MT2> >
1010 template<
typename MT
1018 return ReturnType( ~dm, ScalarType(-1) );
1052 template<
typename MT
1055 , EnableIf_t< IsNumeric_v<ST> >* =
nullptr >
1056 inline decltype(
auto) operator*( const
DenseMatrix<MT,SO>& mat, ST scalar )
1062 return ReturnType( ~mat, scalar );
1088 template<
typename ST
1091 , EnableIf_t< IsNumeric_v<ST> >* =
nullptr >
1092 inline decltype(
auto) operator*( ST scalar, const
DenseMatrix<MT,SO>& mat )
1098 return ReturnType( ~mat, scalar );
1123 template<
typename MT
1126 inline decltype(
auto) operator-( const DMatScalarMultExpr<MT,ST,TF>& dm )
1130 using ReturnType =
const DMatScalarMultExpr<MT,ST,TF>;
1131 return ReturnType( dm.leftOperand(), -dm.rightOperand() );
1158 template<
typename MT
1162 , EnableIf_t< IsNumeric_v<ST2> >* =
nullptr >
1163 inline decltype(
auto) operator*( const DMatScalarMultExpr<MT,ST1,SO>& mat, ST2 scalar )
1167 return mat.leftOperand() * ( mat.rightOperand() * scalar );
1186 template<
typename ST1
1190 , EnableIf_t< IsNumeric_v<ST1> >* =
nullptr >
1191 inline decltype(
auto) operator*( ST1 scalar, const DMatScalarMultExpr<MT,ST2,SO>& mat )
1195 return mat.leftOperand() * ( scalar * mat.rightOperand() );
1214 template<
typename MT
1218 , EnableIf_t< IsNumeric_v<ST2> && ( IsInvertible_v<ST1> || IsInvertible_v<ST2> ) >* =
nullptr >
1219 inline decltype(
auto) operator/( const DMatScalarMultExpr<MT,ST1,SO>& mat, ST2 scalar )
1223 return mat.leftOperand() * ( mat.rightOperand() / scalar );
1243 template<
typename MT
1247 inline decltype(
auto)
1248 operator*( const DMatScalarMultExpr<MT,ST,SO>& mat, const DenseVector<VT,false>& vec )
1252 return ( mat.leftOperand() * (~vec) ) * mat.rightOperand();
1272 template<
typename VT
1276 inline decltype(
auto)
1277 operator*( const DenseVector<VT,true>& vec, const DMatScalarMultExpr<MT,ST,SO>& mat )
1281 return ( (~vec) * mat.leftOperand() ) * mat.rightOperand();
1303 template<
typename MT
1308 inline decltype(
auto)
1309 operator*( const DMatScalarMultExpr<MT,ST1,SO>& mat, const DVecScalarMultExpr<VT,ST2,false>& vec )
1313 return ( mat.leftOperand() * vec.leftOperand() ) * ( mat.rightOperand() * vec.rightOperand() );
1335 template<
typename VT
1340 inline decltype(
auto)
1341 operator*( const DVecScalarMultExpr<VT,ST1,true>& vec, const DMatScalarMultExpr<MT,ST2,SO>& mat )
1345 return ( vec.leftOperand() * mat.leftOperand() ) * ( vec.rightOperand() * mat.rightOperand() );
1365 template<
typename MT
1369 inline decltype(
auto)
1370 operator*( const DMatScalarMultExpr<MT,ST,SO>& mat, const SparseVector<VT,false>& vec )
1374 return ( mat.leftOperand() * (~vec) ) * mat.rightOperand();
1394 template<
typename VT
1398 inline decltype(
auto)
1399 operator*( const SparseVector<VT,true>& vec, const DMatScalarMultExpr<MT,ST,SO>& mat )
1403 return ( (~vec) * mat.leftOperand() ) * mat.rightOperand();
1425 template<
typename MT
1430 inline decltype(
auto)
1431 operator*( const DMatScalarMultExpr<MT,ST1,SO>& mat, const SVecScalarMultExpr<VT,ST2,false>& vec )
1435 return ( mat.leftOperand() * vec.leftOperand() ) * ( mat.rightOperand() * vec.rightOperand() );
1457 template<
typename VT
1462 inline decltype(
auto)
1463 operator*( const SVecScalarMultExpr<VT,ST1,true>& vec, const DMatScalarMultExpr<MT,ST2,SO>& mat )
1467 return ( vec.leftOperand() * mat.leftOperand() ) * ( vec.rightOperand() * mat.rightOperand() );
1487 template<
typename MT1
1492 inline decltype(
auto)
1493 operator*( const DMatScalarMultExpr<MT1,ST,SO1>& lhs, const DenseMatrix<MT2,SO2>& rhs )
1497 return ( lhs.leftOperand() * (~rhs) ) * lhs.rightOperand();
1517 template<
typename MT1
1522 inline decltype(
auto)
1523 operator*( const DenseMatrix<MT1,SO1>& lhs, const DMatScalarMultExpr<MT2,ST,SO2>& rhs )
1527 return ( (~lhs) * rhs.leftOperand() ) * rhs.rightOperand();
1547 template<
typename MT1
1553 inline decltype(
auto)
1554 operator*( const DMatScalarMultExpr<MT1,ST1,SO1>& lhs, const DMatScalarMultExpr<MT2,ST2,SO2>& rhs )
1558 return ( lhs.leftOperand() * rhs.leftOperand() ) * ( lhs.rightOperand() * rhs.rightOperand() );
1578 template<
typename MT1
1583 inline decltype(
auto)
1584 operator*( const DMatScalarMultExpr<MT1,ST,SO1>& lhs, const SparseMatrix<MT2,SO2>& rhs )
1588 return ( lhs.leftOperand() * (~rhs) ) * lhs.rightOperand();
1608 template<
typename MT1
1613 inline decltype(
auto)
1614 operator*( const SparseMatrix<MT1,SO1>& lhs, const DMatScalarMultExpr<MT2,ST,SO2>& rhs )
1618 return ( (~lhs) * rhs.leftOperand() ) * rhs.rightOperand();
1639 template<
typename MT1
1645 inline decltype(
auto)
1646 operator*( const DMatScalarMultExpr<MT1,ST1,SO1>& mat, const SMatScalarMultExpr<MT2,ST2,SO2>& vec )
1650 return ( mat.leftOperand() * vec.leftOperand() ) * ( mat.rightOperand() * vec.rightOperand() );
1671 template<
typename MT1
1677 inline decltype(
auto)
1678 operator*( const SMatScalarMultExpr<MT1,ST1,SO1>& mat, const DMatScalarMultExpr<MT2,ST2,SO2>& vec )
1682 return ( mat.leftOperand() * vec.leftOperand() ) * ( mat.rightOperand() * vec.rightOperand() );
1698 template<
typename MT,
typename ST,
bool SO >
1699 struct IsAligned< DMatScalarMultExpr<MT,ST,SO> >
1700 :
public IsAligned<MT>
1716 template<
typename MT,
typename ST,
bool SO >
1717 struct IsPadded< DMatScalarMultExpr<MT,ST,SO> >
1718 :
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:427
Constraint on the data type.
RightOperand scalar_
Scalar of the multiplication expression.
Definition: DMatScalarMultExpr.h:415
Header file for basic type definitions.
typename If< Condition, T1, T2 >::Type If_t
Auxiliary alias template for the If class template.The If_t alias template provides a convenient shor...
Definition: If.h:109
ElementType * PointerType
Pointer return type.
Definition: DMatScalarMultExpr.h:186
typename T::ResultType ResultType_t
Alias declaration for nested ResultType type definitions.The ResultType_t alias declaration provides ...
Definition: Aliases.h:390
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:533
#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:338
RightOperand scalar_
Right-hand side scalar of the multiplication expression.
Definition: DMatScalarMultExpr.h:606
size_t rows() const noexcept
Returns the current number of rows of the matrix.
Definition: DMatScalarMultExpr.h:523
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:597
ReferenceType reference
Reference return type.
Definition: DMatScalarMultExpr.h:194
static constexpr bool returnExpr
Compilation switch for the selection of the subscript operator return type.
Definition: DMatScalarMultExpr.h:118
MultTrait_t< RT, ST > ResultType
Result type for expression template evaluations.
Definition: DMatScalarMultExpr.h:159
Header file for the Computation base class.
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:432
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:294
Base class for dense matrices.The DenseMatrix class is a base class for all dense matrix classes....
Definition: DenseMatrix.h:81
Base class for sparse matrices.The SparseMatrix class is a base class for all sparse matrix classes....
Definition: Forward.h:145
typename T::ElementType ElementType_t
Alias declaration for nested ElementType type definitions.The ElementType_t alias declaration provide...
Definition: Aliases.h:170
ReturnType operator *() const
Direct access to the element at the current iterator position.
Definition: DMatScalarMultExpr.h:284
std::random_access_iterator_tag IteratorCategory
The iterator category.
Definition: DMatScalarMultExpr.h:184
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:565
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:99
#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:414
Header file for the DenseMatrix base class.
const If_t< returnExpr, ExprReturnType, ElementType > ReturnType
Return type for expression template evaluations.
Definition: DMatScalarMultExpr.h:165
Header file for all SIMD functionality.
bool operator==(const ConstIterator &rhs) const
Equality comparison between two ConstIterator objects.
Definition: DMatScalarMultExpr.h:305
If_t< useAssign, const ResultType, const DMatScalarMultExpr & > CompositeType
Data type for composite expression templates.
Definition: DMatScalarMultExpr.h:168
ValueType value_type
Type of the underlying elements.
Definition: DMatScalarMultExpr.h:192
#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:553
BLAZE_ALWAYS_INLINE auto load(size_t i, size_t j) const noexcept
Access to the SIMD elements of the matrix.
Definition: DMatScalarMultExpr.h:487
ElementType_t< ResultType > ElementType
Resulting element type.
Definition: DMatScalarMultExpr.h:162
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:349
BLAZE_DEVICE_CALLABLE ConstIterator & operator-=(size_t dec)
Subtraction assignment operator.
Definition: DMatScalarMultExpr.h:231
LeftOperand matrix_
Left-hand side dense matrix of the multiplication expression.
Definition: DMatScalarMultExpr.h:605
ConstIterator_t< MT > IteratorType
ConstIterator type of the dense matrix expression.
Definition: DMatScalarMultExpr.h:198
Constraint on the data type.
decltype(std::declval< RN >() *std::declval< ST >()) ExprReturnType
Expression return type for the subscript operator.
Definition: DMatScalarMultExpr.h:121
DifferenceType operator-(const ConstIterator &rhs) const
Calculating the number of elements between two iterators.
Definition: DMatScalarMultExpr.h:371
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:407
Header file for the IsPadded type trait.
OppositeType_t< ResultType > OppositeType
Result type with opposite storage order for expression template evaluations.
Definition: DMatScalarMultExpr.h:160
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:193
ConstIterator(IteratorType iterator, RightOperand scalar)
Constructor for the ConstIterator class.
Definition: DMatScalarMultExpr.h:207
friend const ConstIterator operator+(size_t inc, const ConstIterator &it)
Addition between an integral value and a ConstIterator.
Definition: DMatScalarMultExpr.h:395
ReturnType at(size_t i, size_t j) const
Checked access to the matrix elements.
Definition: DMatScalarMultExpr.h:469
Header file for the IsNumeric type trait.
BLAZE_DEVICE_CALLABLE const ConstIterator operator--(int)
Post-decrement operator.
Definition: DMatScalarMultExpr.h:274
Header file for the HasSIMDMult type trait.
TransposeType_t< ResultType > TransposeType
Transpose type for expression template evaluations.
Definition: DMatScalarMultExpr.h:161
Header file for the MatScalarMultExpr base class.
ST RightOperand
Composite type of the right-hand side scalar value.
Definition: DMatScalarMultExpr.h:174
ElementType & ReferenceType
Reference return type.
Definition: DMatScalarMultExpr.h:187
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:188
static constexpr bool simdEnabled
Compilation switch for the expression template evaluation strategy.
Definition: DMatScalarMultExpr.h:422
typename UnderlyingBuiltin< T >::Type UnderlyingBuiltin_t
Auxiliary alias declaration for the UnderlyingBuiltin type trait.The UnderlyingBuiltin_t alias declar...
Definition: UnderlyingBuiltin.h:116
BLAZE_DEVICE_CALLABLE ConstIterator & operator+=(size_t inc)
Addition assignment operator.
Definition: DMatScalarMultExpr.h:219
#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
Header file for all forward declarations for expression class templates.
ConstIterator begin(size_t i) const
Returns an iterator to the first non-zero element of row i.
Definition: DMatScalarMultExpr.h:502
BLAZE_ALWAYS_INLINE const EnableIf_t< IsIntegral_v< T > &&HasSize_v< T, 1UL >, If_t< IsSigned_v< T >, SIMDint8, SIMDuint8 > > set(T value) noexcept
Sets all values in the vector to the given 1-byte integral value.
Definition: Set.h:75
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:105
#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:513
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:185
bool isAliased(const T *alias) const noexcept
Returns whether the expression is aliased with the given address alias.
Definition: DMatScalarMultExpr.h:577
friend const ConstIterator operator+(const ConstIterator &it, size_t inc)
Addition between a ConstIterator and an integral value.
Definition: DMatScalarMultExpr.h:383
Header file for the IsInvertible type trait.
BLAZE_DEVICE_CALLABLE ConstIterator & operator--()
Pre-decrement operator.
Definition: DMatScalarMultExpr.h:263
bool operator>=(const ConstIterator &rhs) const
Greater-than comparison between two ConstIterator objects.
Definition: DMatScalarMultExpr.h:360
typename T::ConstIterator ConstIterator_t
Alias declaration for nested ConstIterator type definitions.The ConstIterator_t alias declaration pro...
Definition: Aliases.h:110
ReturnType_t< MT > RN
Return type of the dense matrix expression.
Definition: DMatScalarMultExpr.h:106
static constexpr bool useAssign
Compilation switch for the serial evaluation strategy of the multiplication expression.
Definition: DMatScalarMultExpr.h:132
Macro for CUDA compatibility.
BLAZE_DEVICE_CALLABLE ConstIterator & operator++()
Pre-increment operator.
Definition: DMatScalarMultExpr.h:242
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:454
DMatScalarMultExpr(const MT &matrix, ST scalar) noexcept
Constructor for the DMatScalarMultExpr class.
Definition: DMatScalarMultExpr.h:441
BLAZE_DEVICE_CALLABLE const ConstIterator operator++(int)
Post-increment operator.
Definition: DMatScalarMultExpr.h:253
Iterator over the elements of the dense matrix.
Definition: DMatScalarMultExpr.h:180
bool operator<(const ConstIterator &rhs) const
Less-than comparison between two ConstIterator objects.
Definition: DMatScalarMultExpr.h:327
bool isAligned() const noexcept
Returns whether the operands of the expression are properly aligned in memory.
Definition: DMatScalarMultExpr.h:587
ElementType_t< MT > ET
Element type of the dense matrix expression.
Definition: DMatScalarMultExpr.h:107
#define BLAZE_DEVICE_CALLABLE
Conditional macro that sets host and device attributes when compiled with CUDA.
Definition: HostDevice.h:94
bool operator!=(const ConstIterator &rhs) const
Inequality comparison between two ConstIterator objects.
Definition: DMatScalarMultExpr.h:316
LeftOperand leftOperand() const noexcept
Returns the left-hand side dense matrix operand.
Definition: DMatScalarMultExpr.h:543
If_t< IsExpression_v< MT >, const MT, const MT & > LeftOperand
Composite type of the left-hand side dense matrix expression.
Definition: DMatScalarMultExpr.h:171
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:108
#define BLAZE_INTERNAL_ASSERT(expr, msg)
Run time assertion macro for internal checks.In case of an invalid run time expression,...
Definition: Assert.h:101
IteratorCategory iterator_category
The iterator category.
Definition: DMatScalarMultExpr.h:191
Header file for the IsExpression type trait class.
Header file for the function trace functionality.