FEDRA emulsion software from the OPERA Collaboration
SMatrix< T, D1, D2 > Class Template Reference

#include <SMatrix.hh>

Public Types

— Typedefs —
typedef T value_type
 

Public Member Functions

— Access functions —
apply (unsigned int i) const
 access the parse tree More...
 
const T * Array () const
 return read-only pointer to internal array More...
 
T * Array ()
 return pointer to internal array More...
 
— Operators —
bool operator== (const T &rhs) const
 element wise comparison More...
 
bool operator!= (const T &rhs) const
 element wise comparison More...
 
bool operator== (const SMatrix< T, D1, D2 > &rhs) const
 element wise comparison More...
 
bool operator!= (const SMatrix< T, D1, D2 > &rhs) const
 element wise comparison More...
 
template<class A >
bool operator== (const Expr< A, T, D1, D2 > &rhs) const
 element wise comparison More...
 
template<class A >
bool operator!= (const Expr< A, T, D1, D2 > &rhs) const
 element wise comparison More...
 
bool operator> (const T &rhs) const
 element wise comparison More...
 
bool operator< (const T &rhs) const
 element wise comparison More...
 
bool operator> (const SMatrix< T, D1, D2 > &rhs) const
 element wise comparison More...
 
bool operator< (const SMatrix< T, D1, D2 > &rhs) const
 element wise comparison More...
 
template<class A >
bool operator> (const Expr< A, T, D1, D2 > &rhs) const
 element wise comparison More...
 
template<class A >
bool operator< (const Expr< A, T, D1, D2 > &rhs) const
 element wise comparison More...
 
const T & operator() (unsigned int i, unsigned int j) const
 read-only access More...
 
T & operator() (unsigned int i, unsigned int j)
 read/write access More...
 
SMatrix< T, D1, D2 > & operator+= (const SMatrix< T, D1, D2 > &rhs)
 
template<class A >
SMatrix< T, D1, D2 > & operator+= (const Expr< A, T, D1, D2 > &rhs)
 
SMatrix< T, D1, D2 > & operator-= (const SMatrix< T, D1, D2 > &rhs)
 
template<class A >
SMatrix< T, D1, D2 > & operator-= (const Expr< A, T, D1, D2 > &rhs)
 
SMatrix< T, D1, D2 > & operator*= (const SMatrix< T, D1, D2 > &rhs)
 
template<class A >
SMatrix< T, D1, D2 > & operator*= (const Expr< A, T, D1, D2 > &rhs)
 
SMatrix< T, D1, D2 > & operator/= (const SMatrix< T, D1, D2 > &rhs)
 
template<class A >
SMatrix< T, D1, D2 > & operator/= (const Expr< A, T, D1, D2 > &rhs)
 

— Constructors —

static const unsigned int rows = D1
 return no. of matrix rows More...
 
static const unsigned int cols = D2
 return no. of matrix columns More...
 
static const unsigned int size = D1*D2
 return no of elements: rows*columns More...
 
 SMatrix ()
 
 SMatrix (const SMatrix< T, D1, D2 > &rhs)
 
template<class A >
 SMatrix (const Expr< A, T, D1, D2 > &rhs)
 
 SMatrix (const T &rhs, const bool diagonal=false)
 2nd arg: set only diagonal? More...
 
 SMatrix (const SVector< T, D1 > &rhs)
 constructor via dyadic product More...
 
template<class A >
 SMatrix (const Expr< A, T, D1 > &rhs)
 constructor via dyadic product More...
 
template<class T1 >
 SMatrix (const T1 *a, const bool triang=false, const unsigned int len=D1 *D2)
 
SMatrix< T, D1, D2 > & operator= (const T &rhs)
 
template<class A >
SMatrix< T, D1, D2 > & operator= (const Expr< A, T, D1, D2 > &rhs)
 

— Expert functions —

array [D1 *D2]
 
bool sinvert ()
 invert symmetric, pos. def. Matrix via Dsinv More...
 
bool sdet (T &det)
 
bool invert ()
 invert square Matrix via Dinv More...
 
bool det (T &det)
 
template<unsigned int D>
SMatrix< T, D1, D2 > & place_in_row (const SVector< T, D > &rhs, const unsigned int row, const unsigned int col)
 place a vector in a Matrix row More...
 
template<class A , unsigned int D>
SMatrix< T, D1, D2 > & place_in_row (const Expr< A, T, D > &rhs, const unsigned int row, const unsigned int col)
 place a vector expression in a Matrix row More...
 
template<unsigned int D>
SMatrix< T, D1, D2 > & place_in_col (const SVector< T, D > &rhs, const unsigned int row, const unsigned int col)
 place a vector in a Matrix column More...
 
template<class A , unsigned int D>
SMatrix< T, D1, D2 > & place_in_col (const Expr< A, T, D > &rhs, const unsigned int row, const unsigned int col)
 place a vector expression in a Matrix column More...
 
template<unsigned int D3, unsigned int D4>
SMatrix< T, D1, D2 > & place_at (const SMatrix< T, D3, D4 > &rhs, const unsigned int row, const unsigned int col)
 place a matrix in this matrix More...
 
template<class A , unsigned int D3, unsigned int D4>
SMatrix< T, D1, D2 > & place_at (const Expr< A, T, D3, D4 > &rhs, const unsigned int row, const unsigned int col)
 place a matrix expression in this matrix More...
 
SVector< T, D2 > row (const unsigned int therow) const
 return a Matrix row as a vector More...
 
SVector< T, D1 > col (const unsigned int thecol) const
 return a Matrix column as a vector More...
 
std::ostream & print (std::ostream &os) const
 used by operator<<() More...
 

Detailed Description

template<class T, unsigned int D1, unsigned int D2 = D1>
class SMatrix< T, D1, D2 >

SMatrix. A generic fixed size n x m Matrix class.q

@memo SMatrix

Author
T. Glebe

Member Typedef Documentation

◆ value_type

template<class T , unsigned int D1, unsigned int D2 = D1>
typedef T SMatrix< T, D1, D2 >::value_type

Constructor & Destructor Documentation

◆ SMatrix() [1/7]

template<class T , unsigned int D1, unsigned int D2 = D1>
SMatrix< T, D1, D2 >::SMatrix ( )

◆ SMatrix() [2/7]

template<class T , unsigned int D1, unsigned int D2 = D1>
SMatrix< T, D1, D2 >::SMatrix ( const SMatrix< T, D1, D2 > &  rhs)

◆ SMatrix() [3/7]

template<class T , unsigned int D1, unsigned int D2 = D1>
template<class A >
SMatrix< T, D1, D2 >::SMatrix ( const Expr< A, T, D1, D2 > &  rhs)

◆ SMatrix() [4/7]

template<class T , unsigned int D1, unsigned int D2 = D1>
SMatrix< T, D1, D2 >::SMatrix ( const T &  rhs,
const bool  diagonal = false 
)

2nd arg: set only diagonal?

◆ SMatrix() [5/7]

template<class T , unsigned int D1, unsigned int D2 = D1>
SMatrix< T, D1, D2 >::SMatrix ( const SVector< T, D1 > &  rhs)

constructor via dyadic product

◆ SMatrix() [6/7]

template<class T , unsigned int D1, unsigned int D2 = D1>
template<class A >
SMatrix< T, D1, D2 >::SMatrix ( const Expr< A, T, D1 > &  rhs)

constructor via dyadic product

◆ SMatrix() [7/7]

template<class T , unsigned int D1, unsigned int D2 = D1>
template<class T1 >
SMatrix< T, D1, D2 >::SMatrix ( const T1 *  a,
const bool  triang = false,
const unsigned int  len = D1 *D2 
)

constructor via array, triag=true: array contains only upper/lower triangular part of a symmetric matrix, len: length of array

Member Function Documentation

◆ apply()

template<class T , unsigned int D1, unsigned int D2 = D1>
T SMatrix< T, D1, D2 >::apply ( unsigned int  i) const

access the parse tree

◆ Array() [1/2]

template<class T , unsigned int D1, unsigned int D2 = D1>
T * SMatrix< T, D1, D2 >::Array ( )

return pointer to internal array

◆ Array() [2/2]

template<class T , unsigned int D1, unsigned int D2 = D1>
const T * SMatrix< T, D1, D2 >::Array ( ) const

return read-only pointer to internal array

◆ col()

template<class T , unsigned int D1, unsigned int D2 = D1>
SVector< T, D1 > SMatrix< T, D1, D2 >::col ( const unsigned int  thecol) const

return a Matrix column as a vector

◆ det()

template<class T , unsigned int D1, unsigned int D2 = D1>
bool SMatrix< T, D1, D2 >::det ( T &  det)

determinant of square Matrix via Dfact. \textbf{Note:} this will destroy the contents of the Matrix!

◆ invert()

template<class T , unsigned int D1, unsigned int D2 = D1>
bool SMatrix< T, D1, D2 >::invert ( )

invert square Matrix via Dinv

◆ operator!=() [1/3]

template<class T , unsigned int D1, unsigned int D2 = D1>
template<class A >
bool SMatrix< T, D1, D2 >::operator!= ( const Expr< A, T, D1, D2 > &  rhs) const

element wise comparison

◆ operator!=() [2/3]

template<class T , unsigned int D1, unsigned int D2 = D1>
bool SMatrix< T, D1, D2 >::operator!= ( const SMatrix< T, D1, D2 > &  rhs) const

element wise comparison

◆ operator!=() [3/3]

template<class T , unsigned int D1, unsigned int D2 = D1>
bool SMatrix< T, D1, D2 >::operator!= ( const T &  rhs) const

element wise comparison

◆ operator()() [1/2]

template<class T , unsigned int D1, unsigned int D2 = D1>
T & SMatrix< T, D1, D2 >::operator() ( unsigned int  i,
unsigned int  j 
)

read/write access

◆ operator()() [2/2]

template<class T , unsigned int D1, unsigned int D2 = D1>
const T & SMatrix< T, D1, D2 >::operator() ( unsigned int  i,
unsigned int  j 
) const

read-only access

◆ operator*=() [1/2]

template<class T , unsigned int D1, unsigned int D2 = D1>
template<class A >
SMatrix< T, D1, D2 > & SMatrix< T, D1, D2 >::operator*= ( const Expr< A, T, D1, D2 > &  rhs)

◆ operator*=() [2/2]

template<class T , unsigned int D1, unsigned int D2 = D1>
SMatrix< T, D1, D2 > & SMatrix< T, D1, D2 >::operator*= ( const SMatrix< T, D1, D2 > &  rhs)

◆ operator+=() [1/2]

template<class T , unsigned int D1, unsigned int D2 = D1>
template<class A >
SMatrix< T, D1, D2 > & SMatrix< T, D1, D2 >::operator+= ( const Expr< A, T, D1, D2 > &  rhs)

◆ operator+=() [2/2]

template<class T , unsigned int D1, unsigned int D2 = D1>
SMatrix< T, D1, D2 > & SMatrix< T, D1, D2 >::operator+= ( const SMatrix< T, D1, D2 > &  rhs)

◆ operator-=() [1/2]

template<class T , unsigned int D1, unsigned int D2 = D1>
template<class A >
SMatrix< T, D1, D2 > & SMatrix< T, D1, D2 >::operator-= ( const Expr< A, T, D1, D2 > &  rhs)

◆ operator-=() [2/2]

template<class T , unsigned int D1, unsigned int D2 = D1>
SMatrix< T, D1, D2 > & SMatrix< T, D1, D2 >::operator-= ( const SMatrix< T, D1, D2 > &  rhs)

◆ operator/=() [1/2]

template<class T , unsigned int D1, unsigned int D2 = D1>
template<class A >
SMatrix< T, D1, D2 > & SMatrix< T, D1, D2 >::operator/= ( const Expr< A, T, D1, D2 > &  rhs)

◆ operator/=() [2/2]

template<class T , unsigned int D1, unsigned int D2 = D1>
SMatrix< T, D1, D2 > & SMatrix< T, D1, D2 >::operator/= ( const SMatrix< T, D1, D2 > &  rhs)

◆ operator<() [1/3]

template<class T , unsigned int D1, unsigned int D2 = D1>
template<class A >
bool SMatrix< T, D1, D2 >::operator< ( const Expr< A, T, D1, D2 > &  rhs) const

element wise comparison

◆ operator<() [2/3]

template<class T , unsigned int D1, unsigned int D2 = D1>
bool SMatrix< T, D1, D2 >::operator< ( const SMatrix< T, D1, D2 > &  rhs) const

element wise comparison

◆ operator<() [3/3]

template<class T , unsigned int D1, unsigned int D2 = D1>
bool SMatrix< T, D1, D2 >::operator< ( const T &  rhs) const

element wise comparison

◆ operator=() [1/2]

template<class T , unsigned int D1, unsigned int D2 = D1>
template<class A >
SMatrix< T, D1, D2 > & SMatrix< T, D1, D2 >::operator= ( const Expr< A, T, D1, D2 > &  rhs)

◆ operator=() [2/2]

template<class T , unsigned int D1, unsigned int D2 = D1>
SMatrix< T, D1, D2 > & SMatrix< T, D1, D2 >::operator= ( const T &  rhs)

◆ operator==() [1/3]

template<class T , unsigned int D1, unsigned int D2 = D1>
template<class A >
bool SMatrix< T, D1, D2 >::operator== ( const Expr< A, T, D1, D2 > &  rhs) const

element wise comparison

◆ operator==() [2/3]

template<class T , unsigned int D1, unsigned int D2 = D1>
bool SMatrix< T, D1, D2 >::operator== ( const SMatrix< T, D1, D2 > &  rhs) const

element wise comparison

◆ operator==() [3/3]

template<class T , unsigned int D1, unsigned int D2 = D1>
bool SMatrix< T, D1, D2 >::operator== ( const T &  rhs) const

element wise comparison

◆ operator>() [1/3]

template<class T , unsigned int D1, unsigned int D2 = D1>
template<class A >
bool SMatrix< T, D1, D2 >::operator> ( const Expr< A, T, D1, D2 > &  rhs) const

element wise comparison

◆ operator>() [2/3]

template<class T , unsigned int D1, unsigned int D2 = D1>
bool SMatrix< T, D1, D2 >::operator> ( const SMatrix< T, D1, D2 > &  rhs) const

element wise comparison

◆ operator>() [3/3]

template<class T , unsigned int D1, unsigned int D2 = D1>
bool SMatrix< T, D1, D2 >::operator> ( const T &  rhs) const

element wise comparison

◆ place_at() [1/2]

template<class T , unsigned int D1, unsigned int D2 = D1>
template<class A , unsigned int D3, unsigned int D4>
SMatrix< T, D1, D2 > & SMatrix< T, D1, D2 >::place_at ( const Expr< A, T, D3, D4 > &  rhs,
const unsigned int  row,
const unsigned int  col 
)

place a matrix expression in this matrix

◆ place_at() [2/2]

template<class T , unsigned int D1, unsigned int D2 = D1>
template<unsigned int D3, unsigned int D4>
SMatrix< T, D1, D2 > & SMatrix< T, D1, D2 >::place_at ( const SMatrix< T, D3, D4 > &  rhs,
const unsigned int  row,
const unsigned int  col 
)

place a matrix in this matrix

◆ place_in_col() [1/2]

template<class T , unsigned int D1, unsigned int D2 = D1>
template<class A , unsigned int D>
SMatrix< T, D1, D2 > & SMatrix< T, D1, D2 >::place_in_col ( const Expr< A, T, D > &  rhs,
const unsigned int  row,
const unsigned int  col 
)

place a vector expression in a Matrix column

◆ place_in_col() [2/2]

template<class T , unsigned int D1, unsigned int D2 = D1>
template<unsigned int D>
SMatrix< T, D1, D2 > & SMatrix< T, D1, D2 >::place_in_col ( const SVector< T, D > &  rhs,
const unsigned int  row,
const unsigned int  col 
)

place a vector in a Matrix column

◆ place_in_row() [1/2]

template<class T , unsigned int D1, unsigned int D2 = D1>
template<class A , unsigned int D>
SMatrix< T, D1, D2 > & SMatrix< T, D1, D2 >::place_in_row ( const Expr< A, T, D > &  rhs,
const unsigned int  row,
const unsigned int  col 
)

place a vector expression in a Matrix row

◆ place_in_row() [2/2]

template<class T , unsigned int D1, unsigned int D2 = D1>
template<unsigned int D>
SMatrix< T, D1, D2 > & SMatrix< T, D1, D2 >::place_in_row ( const SVector< T, D > &  rhs,
const unsigned int  row,
const unsigned int  col 
)

place a vector in a Matrix row

◆ print()

template<class T , unsigned int D1, unsigned int D2 = D1>
std::ostream & SMatrix< T, D1, D2 >::print ( std::ostream &  os) const

used by operator<<()

◆ row()

template<class T , unsigned int D1, unsigned int D2 = D1>
SVector< T, D2 > SMatrix< T, D1, D2 >::row ( const unsigned int  therow) const

return a Matrix row as a vector

◆ sdet()

template<class T , unsigned int D1, unsigned int D2 = D1>
bool SMatrix< T, D1, D2 >::sdet ( T &  det)

determinant of symmetrc, pos. def. Matrix via Dsfact. \textbf{Note:} this will destroy the contents of the Matrix!

◆ sinvert()

template<class T , unsigned int D1, unsigned int D2 = D1>
bool SMatrix< T, D1, D2 >::sinvert ( )

invert symmetric, pos. def. Matrix via Dsinv

Member Data Documentation

◆ array

template<class T , unsigned int D1, unsigned int D2 = D1>
T SMatrix< T, D1, D2 >::array[D1 *D2]
private

◆ cols

template<class T , unsigned int D1, unsigned int D2 = D1>
const unsigned int SMatrix< T, D1, D2 >::cols = D2
static

return no. of matrix columns

◆ rows

template<class T , unsigned int D1, unsigned int D2 = D1>
const unsigned int SMatrix< T, D1, D2 >::rows = D1
static

return no. of matrix rows

◆ size

template<class T , unsigned int D1, unsigned int D2 = D1>
const unsigned int SMatrix< T, D1, D2 >::size = D1*D2
static

return no of elements: rows*columns


The documentation for this class was generated from the following files: