31 #if defined(SimpleMatrix_RECURSES)
32 #error Recursive header files inclusion detected in SimpleMatrix.h
35 #define SimpleMatrix_RECURSES
37 #if !defined SimpleMatrix_h
39 #define SimpleMatrix_h
44 #include "DGtal/base/Common.h"
45 #include "DGtal/kernel/CEuclideanRing.h"
46 #include "DGtal/kernel/PointVector.h"
47 #include "DGtal/kernel/NumberTraits.h"
74 template <
typename TComponent, DGtal::Dimension TM, DGtal::Dimension TN>
233 template<
typename TComponentOther>
439 template <
typename T, DGtal::Dimension M, DGtal::Dimension N>
447 template <
typename TComponent, DGtal::Dimension TM, DGtal::Dimension TN>
456 #include "DGtal/math/linalg/SimpleMatrixSpecializations.h"
457 #include "DGtal/math/linalg/SimpleMatrix.ih"
464 #undef SimpleMatrix_RECURSES
Aim: Implements basic operations that will be used in Point and Vector classes.
Aim: implements basic MxN Matrix services (M,N>=1).
SimpleMatrix(std::initializer_list< TComponent > values)
std::array< Component, M *N > myCofactorCoefs
Component & operator()(const DGtal::Dimension i, const DGtal::Dimension j)
Component minorDeterminant(const DGtal::Dimension i, const DGtal::Dimension j) const
Component determinant() const
SimpleMatrix< Component, TM, TN > Self
static const DGtal::Dimension M
ColumnVector column(const DGtal::Dimension j) const
ColumnVector operator*(const RowVector &aVector) const
SimpleMatrix< Component, TM, TM > operator*(const SimpleMatrix< Component, N, M > &aMatrix) const
Self operator+(const Self &aMatrix) const
Component operator()(const DGtal::Dimension i, const DGtal::Dimension j) const
Self operator/(const Component &aScalar) const
RowVector row(const DGtal::Dimension i) const
static const DGtal::Dimension N
SimpleMatrix< Component, TM, TN > inverse() const
Self & operator/=(const Component &aScalar)
void selfDisplay(std::ostream &out) const
Self & operator-=(const Self &aMatrix)
SimpleMatrix & operator=(const Self &other)=default
Component cofactor(const DGtal::Dimension i, const DGtal::Dimension j) const
void setComponent(const DGtal::Dimension i, const DGtal::Dimension j, const Component &aValue)
void constant(const Component &aScalar)
Self operator*(const Component &aScalar) const
Self & operator+=(const Self &aMatrix)
std::array< Component, M *N > myValues
Matrix values containers.
SimpleMatrix(const Self &other)
PointVector< M, Component > ColumnVector
BOOST_CONCEPT_ASSERT((concepts::CEuclideanRing< TComponent >))
Self & operator*=(const Component &aScalar)
Dimension Index
Types needed by CLinearAlgebraContainer.
Self operator-(const Self &aMatrix) const
bool operator==(const Self &aMatrix) const
BOOST_STATIC_ASSERT(TM > 0)
Self & operator=(const SimpleMatrix< TComponentOther, M, N > &aMatrix)
PointVector< N, Component > RowVector
SimpleMatrix< Component, TN, TM > transpose() const
DGtal is the top-level namespace which contains all DGtal functions and types.
std::ostream & operator<<(std::ostream &out, const ATu0v1< TKSpace, TLinearAlgebra > &object)
DGtal::uint32_t Dimension
KForm< Calculus, order, duality > operator*(const typename Calculus::Scalar &scalar, const KForm< Calculus, order, duality > &form)
Aim: Defines the mathematical concept equivalent to a unitary commutative ring with a division operat...