35 #ifndef _BLAZE_MATH_EXPRESSIONS_MATRIX_H_ 36 #define _BLAZE_MATH_EXPRESSIONS_MATRIX_H_ 106 return *
static_cast<const MatrixType*
>( this );
135 template<
typename VT
141 (~lhs) = std::move( tmp );
162 template<
typename VT
167 return (~lhs) *= (~rhs);
187 template<
typename VT
193 (~lhs) = std::move( tmp );
214 template<
typename VT
219 return (~lhs) *= (~rhs);
238 template<
typename MT1
245 (~lhs) = std::move( tmp );
266 template<
typename MT1
272 return (~lhs) *= (~rhs);
289 template<
typename MT,
bool SO >
292 template<
typename MT,
bool SO >
295 template<
typename MT,
bool SO >
298 template<
typename MT,
bool SO >
301 template<
typename MT,
bool SO >
304 template<
typename MT,
bool SO >
307 template<
typename MT,
bool SO >
310 template<
typename MT,
bool SO >
313 template<
typename MT,
bool SO >
316 template<
typename MT,
bool SO >
319 template<
typename MT,
bool SO >
322 template<
typename MT,
bool SO >
325 template<
typename MT,
bool SO >
328 template<
typename MT,
bool SO >
331 template<
typename MT,
bool SO >
334 template<
typename MT,
bool SO >
337 template<
typename MT,
bool SO >
340 template<
typename MT,
bool SO >
343 template<
typename MT1,
bool SO1,
typename MT2,
bool SO2 >
362 template<
typename MT
366 return (~matrix).begin(i);
384 template<
typename MT
388 return (~matrix).begin(i);
406 template<
typename MT
410 return (~matrix).cbegin(i);
428 template<
typename MT
432 return (~matrix).end(i);
450 template<
typename MT
454 return (~matrix).end(i);
472 template<
typename MT
476 return (~matrix).cend(i);
488 template<
typename MT
492 return (~matrix).rows();
504 template<
typename MT
508 return (~matrix).columns();
520 template<
typename MT
524 return (~matrix).capacity();
542 template<
typename MT
546 return (~matrix).capacity( i );
558 template<
typename MT
562 return (~matrix).nonZeros();
580 template<
typename MT
584 return (~matrix).nonZeros( i );
606 template<
typename MT
609 resize_backend(
Matrix<MT,SO>& matrix,
size_t m,
size_t n,
bool preserve )
613 if( (~matrix).
rows() != m || (~matrix).
columns() != n ) {
634 template<
typename MT
637 resize_backend(
Matrix<MT,SO>& matrix,
size_t m,
size_t n,
bool preserve )
639 (~matrix).
resize( m, n, preserve );
659 template<
typename MT
662 resize_backend(
Matrix<MT,SO>& matrix,
size_t m,
size_t n,
bool preserve )
668 (~matrix).
resize( m, preserve );
712 template<
typename MT
716 resize_backend( matrix, m, n, preserve );
729 template<
typename MT
748 template<
typename MT
773 template<
typename MT
777 shrinkToFit_backend( matrix );
799 template<
typename MT
825 template<
typename MT
886 template<
typename MT
906 template<
typename MT
945 template<
typename MT1
952 reinterpret_cast<const void*>( &a ) == reinterpret_cast<const void*>( &b ) );
966 template<
typename MT1
973 (~lhs).assign( ~rhs );
988 template<
typename MT1
998 (~lhs).assign( ~rhs );
1014 template<
typename MT1
1026 (~lhs).assign(
trans( ~rhs ) );
1047 template<
typename MT1
1058 assign_backend( ~lhs, ~rhs );
1074 template<
typename MT1
1081 (~lhs).addAssign( ~rhs );
1097 template<
typename MT1
1107 (~lhs).addAssign( ~rhs );
1123 template<
typename MT1
1135 (~lhs).addAssign(
trans( ~rhs ) );
1156 template<
typename MT1
1167 addAssign_backend( ~lhs, ~rhs );
1183 template<
typename MT1
1190 (~lhs).subAssign( ~rhs );
1206 template<
typename MT1
1216 (~lhs).subAssign( ~rhs );
1232 template<
typename MT1
1244 (~lhs).subAssign(
trans( ~rhs ) );
1265 template<
typename MT1
1276 subAssign_backend( ~lhs, ~rhs );
1292 template<
typename MT1
1299 (~lhs).schurAssign( ~rhs );
1315 template<
typename MT1
1325 (~lhs).schurAssign( ~rhs );
1341 template<
typename MT1
1353 (~lhs).schurAssign(
trans( ~rhs ) );
1374 template<
typename MT1
1385 schurAssign_backend( ~lhs, ~rhs );
1406 template<
typename MT1
1416 (~lhs).multAssign( ~rhs );
1438 template<
typename MT
1470 template<
typename MT
1502 template<
typename MT
1534 template<
typename MT
1568 template<
typename MT
1603 template<
typename MT
1637 template<
typename MT
1641 tryDiv(
const Matrix<MT,SO>& mat,
size_t row,
size_t column,
size_t m,
size_t n,
const ET& value )
1672 template<
typename MT
1677 size_t row,
size_t column )
1709 template<
typename MT
1745 template<
typename MT1
1750 size_t row,
size_t column )
1781 template<
typename MT
1786 size_t row,
size_t column )
1818 template<
typename MT
1823 ptrdiff_t band,
size_t row,
size_t column )
1854 template<
typename MT1
1859 size_t row,
size_t column )
1890 template<
typename MT
1895 size_t row,
size_t column )
1928 template<
typename MT
1933 ptrdiff_t band,
size_t row,
size_t column )
1964 template<
typename MT1
1969 size_t row,
size_t column )
2000 template<
typename MT
2005 size_t row,
size_t column )
2038 template<
typename MT
2043 ptrdiff_t band,
size_t row,
size_t column )
2074 template<
typename MT1
2079 size_t row,
size_t column )
2110 template<
typename MT
2115 size_t row,
size_t column )
2148 template<
typename MT
2153 ptrdiff_t band,
size_t row,
size_t column )
2183 template<
typename MT
#define BLAZE_THROW_INVALID_ARGUMENT(MESSAGE)
Macro for the emission of a std::invalid_argument exception.This macro encapsulates the default way o...
Definition: Exception.h:235
Pointer difference type of the Blaze library.
Header file for auxiliary alias declarations.
decltype(auto) column(Matrix< MT, SO > &matrix, RCAs... args)
Creating a view on a specific column of the given matrix.
Definition: Column.h:131
Header file for the UNUSED_PARAMETER function template.
BLAZE_ALWAYS_INLINE size_t capacity(const Matrix< MT, SO > &matrix) noexcept
Returns the maximum capacity of the matrix.
Definition: Matrix.h:522
BLAZE_ALWAYS_INLINE bool isSame(const Matrix< MT1, SO1 > &a, const Matrix< MT2, SO2 > &b) noexcept
Returns whether the two given matrices represent the same observable state.
Definition: Matrix.h:949
Header file for basic type definitions.
BLAZE_ALWAYS_INLINE size_t size(const Vector< VT, TF > &vector) noexcept
Returns the current size/dimension of the vector.
Definition: Vector.h:265
Header file for the IsSame and IsStrictlySame type traits.
This ResultType
Result type for expression template evaluations.
Definition: CompressedMatrix.h:3076
BLAZE_ALWAYS_INLINE MT::Iterator begin(Matrix< MT, SO > &matrix, size_t i)
Returns an iterator to the first element of row/column i.
Definition: Matrix.h:364
BLAZE_ALWAYS_INLINE void shrinkToFit(Matrix< MT, SO > &matrix)
Requesting the removal of unused capacity.
Definition: Matrix.h:775
typename DisableIf< Condition, T >::Type DisableIf_
Auxiliary type for the DisableIf class template.The DisableIf_ alias declaration provides a convenien...
Definition: DisableIf.h:224
Header file for the And class template.
BLAZE_ALWAYS_INLINE void ctranspose(Matrix< MT, SO > &matrix)
In-place conjugate transpose of the given matrix.
Definition: Matrix.h:827
BLAZE_ALWAYS_INLINE size_t nonZeros(const Matrix< MT, SO > &matrix)
Returns the total number of non-zero elements in the matrix.
Definition: Matrix.h:560
Type relationship analysis.This class tests if the two data types A and B are equal. For this type comparison, the cv-qualifiers of both data types are ignored. If A and B are the same data type (ignoring the cv-qualifiers), then the value member constant is set to true, the nested type definition Type is TrueType, and the class derives from TrueType. Otherwise value is set to false, Type is FalseType, and the class derives from FalseType.
Definition: IsSame.h:140
Element * Iterator
Iterator over non-constant elements.
Definition: CompressedMatrix.h:3084
const MT::ResultType evaluate(const Matrix< MT, SO > &matrix)
Evaluates the given matrix expression.
Definition: Matrix.h:888
typename T::ResultType ResultType_
Alias declaration for nested ResultType type definitions.The ResultType_ alias declaration provides a...
Definition: Aliases.h:343
BLAZE_ALWAYS_INLINE MT::ConstIterator cend(const Matrix< MT, SO > &matrix, size_t i)
Returns an iterator just past the last element of row/column i.
Definition: Matrix.h:474
BLAZE_ALWAYS_INLINE MT::ConstIterator cbegin(const Matrix< MT, SO > &matrix, size_t i)
Returns an iterator to the first element of row/column i.
Definition: Matrix.h:408
Header file for the IsSquare type trait.
Header file for the DisableIf class template.
Header file for the IsSymmetric type 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 IsShrinkable type trait.
Header file for the Not class template.
const Element * ConstIterator
Iterator over constant elements.
Definition: CompressedMatrix.h:3085
Compile time check for square matrices.This type trait tests whether or not the given template parame...
Definition: IsSquare.h:88
BLAZE_ALWAYS_INLINE size_t columns(const Matrix< MT, SO > &matrix) noexcept
Returns the current number of columns of the matrix.
Definition: Matrix.h:506
Header file for the exception macros of the math module.
BLAZE_ALWAYS_INLINE void resize(Matrix< MT, SO > &matrix, size_t rows, size_t columns, bool preserve=true)
Changing the size of the matrix.
Definition: Matrix.h:714
BLAZE_ALWAYS_INLINE MT::Iterator end(Matrix< MT, SO > &matrix, size_t i)
Returns an iterator just past the last element of row/column i.
Definition: Matrix.h:430
Header file for all forward declarations for expression class templates.
Header file for the EnableIf class template.
decltype(auto) band(Matrix< MT, SO > &matrix, RBAs... args)
Creating a view on a specific band of the given matrix.
Definition: Band.h:134
#define BLAZE_CONSTRAINT_MUST_NOT_BE_SYMMETRIC_MATRIX_TYPE(T)
Constraint on the data type.In case the given data type T is a symmetric matrix type, a compilation error is created.
Definition: Symmetric.h:79
Header file for run time assertion macros.
BLAZE_ALWAYS_INLINE const MatrixType & operator~() const noexcept
Conversion operator for constant matrices.
Definition: Matrix.h:105
Expression object for sparse matrix-scalar divisions.The SMatScalarMult class represents the compile ...
Definition: Forward.h:113
decltype(auto) row(Matrix< MT, SO > &, RRAs...)
Creating a view on a specific row of the given matrix.
Definition: Row.h:131
#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
Compile time type negation.The Not alias declaration negates the given compile time condition...
Definition: Not.h:70
Base class for matrices.The Matrix class is a base class for all dense and sparse matrix classes with...
Definition: Forward.h:101
Constraint on the data type.
typename EnableIf< Condition, T >::Type EnableIf_
Auxiliary alias declaration for the EnableIf class template.The EnableIf_ alias declaration provides ...
Definition: EnableIf.h:224
BLAZE_ALWAYS_INLINE size_t rows(const Matrix< MT, SO > &matrix) noexcept
Returns the current number of rows of the matrix.
Definition: Matrix.h:490
decltype(auto) trans(const DenseMatrix< MT, SO > &dm)
Calculation of the transpose of the given dense matrix.
Definition: DMatTransExpr.h:789
Base class for N-dimensional vectors.The Vector class is a base class for all arbitrarily sized (N-di...
Definition: Forward.h:177
void UNUSED_PARAMETER(const Args &...)
Suppression of unused parameter warnings.
Definition: Unused.h:81
EnableIf_< IsNumeric< ST >, MT &> operator*=(DenseMatrix< MT, SO > &mat, ST scalar)
Multiplication assignment operator for the multiplication of a dense matrix and a scalar value ( )...
Definition: DenseMatrix.h:593
BLAZE_ALWAYS_INLINE bool isSquare(const Matrix< MT, SO > &matrix) noexcept
Checks if the given matrix is a square matrix.
Definition: Matrix.h:908
Header file for the IsResizable type trait.
BLAZE_ALWAYS_INLINE MatrixType & operator~() noexcept
Conversion operator for non-constant matrices.
Definition: Matrix.h:95
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
Header file for the function trace functionality.
BLAZE_ALWAYS_INLINE void transpose(Matrix< MT, SO > &matrix)
In-place transpose of the given matrix.
Definition: Matrix.h:801