MatrixBase¶
-
template<typename Derived>
class MatrixBase¶ Base class inherited by all matrices, vectors and related expressions.
If you want to write a function that accepts any matrix, vector or expression, just use this class as the argument type. For example, the following function calculates the mean value of all elements in a given matrix, vector or expression
x
,template<typename Derived> auto mean(mocca::MatrixBase<Derived> &x) { return sum(x) / x.size(); }
Template Parameters:
Derived
- Derived class, either a matrix, vector or an expression
Public Types
-
using traits = typename internal::type_traits<Derived>¶
Type traits of the MatrixBase.
Public Functions
-
MatrixBase() = default¶
Default Constructor.
Complexity: Constant
-
virtual ~MatrixBase() = default¶
Default Destructor.
Complexity: Constant
-
constexpr index_t size() const noexcept¶
Complexity: Constant
- Returns:
the number of entries in the container. In sparse objects, this routines returns the number of non-zeros elements.
-
constexpr index_t rows() const noexcept¶
Complexity: Constant
- Returns:
the number of rows in the container
-
constexpr index_t cols() const noexcept¶
Complexity: Constant
- Returns:
the number of columns in the container
-
Derived &derived()¶
Complexity: Constant
- Returns:
reference to the derived object in order to access its methods
-
const Derived &derived() const¶
Complexity: Constant
- Returns:
const
reference to the derived object in order to access its methods
-
auto transpose() const¶
Complexity: Constant
Warning
If you want to replace the matrix by its transpose, do not use:
Instead, domat = mat.transpose();
to correctly transpose the matrix and allows MOCCA to optimize the operation.mat.tranpose_inplace()
- Returns:
an abstract expression representing the transpose of the matrix, vector or expression
-
auto T() const¶
Alias for transpose()
-
template<typename E>
Derived &operator+=(const MatrixBase<E> &expr)¶ Compound Operator (Addition). Evaluates the sum between
*this
and the expressionexpr
, then assign the results to*this
.Complexity: Linear in
this->size()
(Typical)- Parameters:
expr – [in] a matrix, vector or expression
- Throws:
std::length_error – if ``*this`` and ``expr`` have mismatch dimensions
- Returns:
a reference to
*this
-
template<typename E>
Derived &operator-=(const MatrixBase<E> &expr)¶ Compound Operator (Subtraction). Evaluates the subtraction between
*this
and the expressionexpr
, then assign the results to*this
.Complexity: Linear in
this->size()
(Typical)- Parameters:
expr – [in] a matrix, vector or expression
- Throws:
std::length_error – if ``*this`` and ``expr`` have mismatch dimensions
- Returns:
a reference to
*this
-
template<typename E>
Derived &operator*=(const MatrixBase<E> &expr)¶ Compound Operator (Multiplication). Evaluates the element-wise multiplication between
*this
and the expressionexpr
, then assign the results to*this
.Complexity: Linear in
this->size()
(Typical)- Parameters:
expr – [in] a matrix, vector or expression
- Throws:
std::length_error – if ``*this`` and ``expr`` have mismatch dimensions
- Returns:
a reference to
*this
-
template<typename E>
Derived &operator/=(const MatrixBase<E> &expr)¶ Compound Operator (Division). Evaluates the element-wise division between
*this
and the expressionexpr
, then assign the results to*this
.Complexity: Linear in
this->size()
(Typical)- Parameters:
expr – [in] a matrix, vector or expression
- Throws:
std::length_error – if ``*this`` and ``expr`` have mismatch dimensions
- Returns:
a reference to
*this
-
template<typename S, internal::require_numeric_type<S> = true>
Derived &operator+=(S scalar)¶ Compound Operator (Addition). Sum a scalar to all elements in the container.
Complexity: Linear in
this->size()
- Parameters:
scalar – [in] scalar value to multiply all elements with
- Returns:
a reference to
*this
-
template<typename S, internal::require_numeric_type<S> = true>
Derived &operator-=(S scalar)¶ Compound Operator (Subtraction). Subtract a scalar from each element in the container.
Complexity: Linear in
this->size()
- Parameters:
scalar – [in] scalar value to divide all elements with
- Returns:
a reference to
*this
-
template<typename S, internal::require_numeric_type<S> = true>
Derived &operator*=(S scalar)¶ Compound Operator (Multiplication). Multiplies each element in the container by a scalar.
Complexity: Linear in
this->size()
- Parameters:
scalar – [in] scalar value to multiply all elements with
- Returns:
a reference to
*this
-
template<typename S, internal::require_numeric_type<S> = true>
Derived &operator/=(S scalar)¶ Compound Operator (Division). Divides each element in the container by a scalar.
Complexity: Linear in
this->size()
- Parameters:
scalar – [in] scalar value to divide all elements with
- Returns:
a reference to
*this