19#ifndef __MATRIX_WRAPPER__
20#define __MATRIX_WRAPPER__
26#define MyMatrix MatrixWrapper::Matrix
27#define MyColumnVector MatrixWrapper::ColumnVector
28#define MyRowVector MatrixWrapper::RowVector
29#define MySymmetricMatrix MatrixWrapper::SymmetricMatrix
31namespace MatrixWrapper{
50 virtual unsigned int size()
const = 0;
56 virtual unsigned int rows()
const = 0;
62 virtual double&
operator()(
unsigned int,
unsigned int) = 0;
65 virtual double operator()(
unsigned int,
unsigned int)
const = 0;
101 virtual MyMatrix&
operator =(
const MySymmetricMatrix& a) = 0;
110 virtual MyMatrix
operator+ (
const MyMatrix &a)
const = 0;
113 virtual MyMatrix
operator- (
const MyMatrix &a)
const = 0;
116 virtual MyMatrix
operator* (
const MyMatrix &a)
const = 0;
121 virtual MyColumnVector
operator* (
const MyColumnVector &b)
const = 0;
125 virtual MyRowVector
rowCopy(
unsigned int r)
const = 0;
131 virtual void resize(
unsigned int i,
unsigned int j,
132 bool copy=
true,
bool initialize=
true) = 0;
153 virtual MyMatrix
sub(
int i_start,
int i_end,
int j_start ,
int j_end)
const = 0;
156 virtual bool SVD(MyColumnVector& D, MyMatrix& U, MyMatrix& V)
const ;
158 double PYTHAG(
double a,
double b)
const;
160 double SIGN(
double a,
double b)
const;
176 virtual unsigned int size()
const = 0;
183 virtual unsigned int rows()
const = 0;
192 virtual double operator()(
unsigned int,
unsigned int)
const = 0;
195 virtual bool operator==(
const MySymmetricMatrix& a)
const = 0;
215 virtual MySymmetricMatrix
operator+ (
double b)
const = 0;
218 virtual MySymmetricMatrix
operator- (
double b)
const = 0;
221 virtual MySymmetricMatrix
operator* (
double b)
const = 0;
224 virtual MySymmetricMatrix
operator/ (
double b)
const = 0;
234 virtual MyMatrix
operator+ (
const MyMatrix &a)
const = 0;
237 virtual MyMatrix
operator- (
const MyMatrix &a)
const = 0;
240 virtual MyMatrix
operator* (
const MyMatrix &a)
const = 0;
243 virtual MySymmetricMatrix&
operator +=(
const MySymmetricMatrix& a) = 0;
246 virtual MySymmetricMatrix&
operator -=(
const MySymmetricMatrix& a) = 0;
249 virtual MySymmetricMatrix
operator+ (
const MySymmetricMatrix &a)
const = 0;
252 virtual MySymmetricMatrix
operator- (
const MySymmetricMatrix &a)
const= 0;
255 virtual MyMatrix
operator* (
const MySymmetricMatrix &a)
const = 0;
260 virtual ColumnVector
operator* (
const MyColumnVector &b)
const = 0;
263 virtual void multiply(
const MyColumnVector &b, MyColumnVector &result)
const = 0;
266 virtual void resize(
unsigned int i,
bool copy=
true,
bool initialize=
true) = 0;
269 virtual MySymmetricMatrix
inverse()
const = 0;
278 virtual MyMatrix
sub(
int i_start,
int i_end,
int j_start ,
int j_end)
const = 0;
291#include "matrix_NEWMAT.h"
292#include "matrix_BOOST.h"
293#include "matrix_EIGEN.h"
virtual bool operator==(const MyMatrix &a) const =0
Operator ==.
virtual MyMatrix & operator+=(double a)=0
MATRIX - SCALAR operator.
virtual unsigned int size() const =0
Ask Number of Rows.
virtual MyMatrix & operator*=(double b)=0
MATRIX - SCALAR operator.
virtual unsigned int rows() const =0
Ask Number of Rows.
Matrix_Wrapper()
Constructor.
virtual unsigned int columns() const =0
Ask Number of Columns.
virtual MyColumnVector columnCopy(unsigned int c) const =0
Get column from matrix.
virtual MyMatrix operator+(double b) const =0
MATRIX - SCALAR operator.
virtual bool SVD(MyColumnVector &D, MyMatrix &U, MyMatrix &V) const
SVD Decomposition (for pseudo-inverse properties)
virtual double determinant() const =0
get determinant
virtual MyMatrix transpose() const =0
get transpose
virtual MyMatrix & operator=(double a)=0
Set all elements of the Matrix equal to a.
virtual int convertToSymmetricMatrix(MySymmetricMatrix &sym)=0
Turn matrix into Symmetric one.
virtual MyMatrix & operator/=(double b)=0
MATRIX - SCALAR operator.
virtual ~Matrix_Wrapper()
Destructor.
virtual double operator()(unsigned int, unsigned int) const =0
Operator ()
virtual double & operator()(unsigned int, unsigned int)=0
Operator ()
virtual MyMatrix operator-(double b) const =0
MATRIX - SCALAR operator.
virtual MyMatrix sub(int i_start, int i_end, int j_start, int j_end) const =0
get sub matrix
virtual MyMatrix operator/(double b) const =0
MATRIX - SCALAR operator.
virtual void resize(unsigned int i, unsigned int j, bool copy=true, bool initialize=true)=0
resize matrix
virtual MyRowVector rowCopy(unsigned int r) const =0
Get row from matrix.
virtual MyMatrix & operator-=(double a)=0
MATRIX - SCALAR operator.
virtual unsigned int capacity() const =0
Ask Number of Rows.
virtual MyMatrix operator*(double b) const =0
MATRIX - SCALAR operator.
virtual MyMatrix pseudoinverse(double epsilon=0.01) const
get pseudoinverse
virtual MyMatrix inverse() const =0
get inverse
Class SymmetricMatrixWrapper.
virtual MySymmetricMatrix & operator*=(double b)=0
SYMMETRICMATRIX - SCALAR operator.
virtual MySymmetricMatrix operator/(double b) const =0
SYMMETRICMATRIX - SCALAR operator.
virtual ~SymmetricMatrix_Wrapper()
Destructor.
virtual MySymmetricMatrix operator+(double b) const =0
SYMMETRICMATRIX - SCALAR operator.
virtual unsigned int size() const =0
Ask Number of Rows.
virtual void resize(unsigned int i, bool copy=true, bool initialize=true)=0
resize symmetric matrix
virtual unsigned int rows() const =0
Ask Number of Rows.
virtual MySymmetricMatrix operator*(double b) const =0
SYMMETRICMATRIX - SCALAR operator.
virtual MySymmetricMatrix inverse() const =0
get inverse
virtual unsigned int columns() const =0
Ask Number of Columns.
virtual void multiply(const MyColumnVector &b, MyColumnVector &result) const =0
SYMMETRICMATRIX - VECTOR operator.
virtual bool operator==(const MySymmetricMatrix &a) const =0
Operator ==.
virtual MySymmetricMatrix operator-(double b) const =0
SYMMETRICMATRIX - SCALAR operator.
virtual double determinant() const =0
get determinant
virtual bool cholesky_semidefinite(MyMatrix &m) const
Cholesky Decomposition for semidefinite matrices.
virtual MySymmetricMatrix transpose() const =0
get transpose
virtual double operator()(unsigned int, unsigned int) const =0
Operator ()
virtual double & operator()(unsigned int, unsigned int)=0
Operator ()
virtual MyMatrix sub(int i_start, int i_end, int j_start, int j_end) const =0
get sub matrix
virtual unsigned int capacity() const =0
Ask Number of Rows.
virtual MySymmetricMatrix & operator/=(double b)=0
SYMMETRICMATRIX - SCALAR operator.
virtual MySymmetricMatrix & operator+=(double a)=0
SYMMETRICMATRIX - SCALAR operator.
virtual MySymmetricMatrix & operator=(double a)=0
Set all elements of the Matrix equal to a.
SymmetricMatrix_Wrapper()
Constructor.
virtual MySymmetricMatrix & operator-=(double a)=0
SYMMETRICMATRIX - SCALAR operator.