Itasca C++ Interface
Loading...
Searching...
No Matches
SymMatrix< T, SX > Class Template Reference

A template-based symmetric matrix class, size fixed at compile time. This primitive template-based matrix class should be used where the matrix size is fixed at compile time. More...

#include <matrix.h>

Public Member Functions

constexpr SymMatrix (const SymMatrix< T, SX > &)=default
constexpr SymMatrix< T, SX > & operator= (const SymMatrix< T, SX > &)=default
 SymMatrix (const T &t)
 Explicit constructor, initializes all elements to value t.
const T & get (unsigned x, unsigned y) const
 Retrieve value at row x column y. Bounds checking is done in a debug compile.
T & get (unsigned x, unsigned y)
 Retrieve value at row x column y. Bounds checking is done in a debug compile.
const Column operator[] (unsigned y) const
 Array access operator returns a Column helper class, which has it's own [] operator to access a column of the row.
Column operator[] (unsigned y)
 Array access operator returns a Column helper class, which has it's own [] operator to access a column of the row.
const T & operator() (unsigned x, unsigned y) const
 () operator access to get(x,y)
T & operator() (unsigned x, unsigned y)
 () operator access to get(x,y)
constexpr UVect2 size () const
const SymMatrix< T, SX > & operator+= (const SymMatrix< T, SX > &m)
 In-place matrix addition.
const SymMatrix< T, SX > & operator-= (const SymMatrix< T, SX > &m)
 In-place matrix subtraction.
const SymMatrix< T, SX > & operator*= (const T &t)
 In-place multiplication by a scalar.
const SymMatrix< T, SX > & operator/= (const T &t)
 In-place division by a scalar.
SymMatrix< T, SX > operator+ (const SymMatrix< T, SX > &m) const
 Binary addition operator for a symetric matris.
Matrix< T, SX, SX > operator+ (const Matrix< T, SX, SX > &m) const
 Binary addition operator.
SymMatrix< T, SX > operator- (const SymMatrix< T, SX > &m) const
 Binary subtraction operator for a symetric matrix.
Matrix< T, SX, SX > operator- (const Matrix< T, SX, SX > &m) const
 Binary subtraction operator.
SymMatrix< T, SX > operator* (const T &t) const
 Binary scalar multiplication operator for a symetric matrix.
SymMatrix< T, SX > operator/ (const T &t) const
 Binary scalar division operator for a symetric matrix.
constexpr Matrix< T, SX, SX > operator* (const SymMatrix< T, SX > &m) const
 Binary matrix multiplication operator – simplest naive approach.
template<unsigned SZ>
constexpr Matrix< T, SX, SZ > operator* (const Matrix< T, SX, SZ > &m) const
 Binary matrix multiplication operator – simplest naive approach.
template<unsigned BX, unsigned BY, unsigned SX2, unsigned SY2>
void addBlock (const Matrix< T, SX2, SY2 > &m, unsigned iSrc, unsigned jSrc, unsigned iDst, unsigned jDst)
 Adds a block to this matrix from matrix m using the block size (BX,BY), from block indices (iSrc,jSrc) to block indices (iDst,jDst).
template<unsigned BX, unsigned BY, unsigned SX2>
void addBlock (const SymMatrix< T, SX2 > &m, unsigned iSrc, unsigned jSrc, unsigned iDst, unsigned jDst)
 Adds a block to this matrix from matrix m using the block size (BX,BY), from block indices (iSrc,jSrc) to block indices (iDst,jDst).
template<unsigned BX, unsigned BY, unsigned SX2, unsigned SY2>
void addGenBlock (const Matrix< T, SX2, SY2 > &m, unsigned iSrc, unsigned jSrc, unsigned iDst, unsigned jDst)
 Adds a block to this matrix from matrix m using the block size (BX,BY), from normal not block indices (iSrc,jSrc) to (iDst,jDst).
template<unsigned BX, unsigned BY, unsigned SX2>
void addGenBlock (const SymMatrix< T, SX2 > &m, unsigned iSrc, unsigned jSrc, unsigned iDst, unsigned jDst)
 Adds a block to this matrix from matrix m using the block size (BX,BY), from normal not block indices (iSrc,jSrc) to (iDst,jDst).
T maxNorm () const
 Returns the infinity norm of the matrix, or the maximum absolute magnitude of any element.
SymMatrix< T, SX > transpose () const
 Return the transpose of the matrix.
T trace () const
 Return the trace of the matrix or the sum of the diagonal components. Works also if the matrix is not square.
constexpr void set (const T &t=T{})
 Sets all matrix elements to t.
constexpr T minEntry () const
constexpr T maxEntry () const
Matrix< T, SX, SX > toMatrix () const
 Returns its copy.

Static Public Member Functions

static SymMatrix< T, SX > identity ()
 Returns an identity matrix (or as close as you can get if not diagonal).
static SymMatrix< T, SX > fromMatrix (const Matrix< T, SX, SX > &m)
 Assign from full matrix.
static constexpr unsigned index (unsigned x, unsigned y)

Public Attributes

T t_ [len_]

Static Public Attributes

static constexpr unsigned len_ = (SX*SX + SX) / 2
static constexpr unsigned indexConst_ = 1 + 2*SX

(Note that these are not member symbols.)

template<class T>
constexpr Vector2< T > operator* (const SymMatrix< T, 2 > &m, const Vector2< T > &v)

Detailed Description

template<class T, unsigned SX>
class SymMatrix< T, SX >

A template-based symmetric matrix class, size fixed at compile time. This primitive template-based matrix class should be used where the matrix size is fixed at compile time.


The documentation for this class was generated from the following file:
  • C:/Source/itasca-suite/common/base/src/matrix.h