19 #include "../config.h" 20 #ifdef __MATRIXWRAPPER_BOOST__ 22 #ifndef __MATRIX_BOOST__ 23 #define __MATRIX_BOOST__ 24 #include "../../bfl_constants.h" 25 #include "matrix_wrapper.h" 26 #include "vector_wrapper.h" 27 #include <boost/numeric/ublas/matrix.hpp> 28 #include <boost/numeric/ublas/lu.hpp> 29 #include <boost/numeric/ublas/symmetric.hpp> 30 #include <boost/numeric/ublas/io.hpp> 31 #include <boost/numeric/ublas/lu.hpp> 32 #include <boost/numeric/ublas/triangular.hpp> 33 #include <boost/numeric/ublas/storage.hpp> 34 #include <boost/numeric/ublas/matrix_proxy.hpp> 35 #include <boost/numeric/ublas/matrix_expression.hpp> 39 typedef boost::numeric::ublas::matrix<double> BoostMatrix;
40 typedef boost::numeric::ublas::symmetric_matrix<double, boost::numeric::ublas::lower> BoostSymmetricMatrix;
42 namespace MatrixWrapper
60 Matrix (
const MyMatrix& a);
61 Matrix(
const BoostMatrix & a);
66 virtual unsigned int size()
const;
67 virtual unsigned int capacity()
const;
68 virtual unsigned int rows()
const;
69 virtual unsigned int columns()
const;
70 virtual double&
operator()(
unsigned int,
unsigned int);
71 virtual double operator()(
unsigned int,
unsigned int)
const;
72 virtual RowVector operator[](
unsigned int)
const;
74 virtual bool operator==(
const MyMatrix& a)
const;
82 virtual MyMatrix
operator+ (
double b)
const;
83 virtual MyMatrix
operator- (
double b)
const;
84 virtual MyMatrix
operator* (
double b)
const;
85 virtual MyMatrix
operator/ (
double b)
const;
87 virtual MyMatrix&
operator =(
const MySymmetricMatrix& a);
90 virtual MyMatrix
operator+ (
const MyMatrix &a)
const;
91 virtual MyMatrix
operator- (
const MyMatrix &a)
const;
92 virtual MyMatrix
operator* (
const MyMatrix &a)
const;
94 virtual MyColumnVector
operator* (
const MyColumnVector &b)
const;
96 virtual MyRowVector
rowCopy(
unsigned int r)
const;
97 virtual MyColumnVector
columnCopy(
unsigned int c)
const;
99 virtual void resize(
unsigned int i,
unsigned int j,
100 bool copy=
true,
bool initialize=
true);
101 virtual MyMatrix
inverse()
const;
105 virtual MyMatrix
sub(
int i_start,
int i_end,
int j_start ,
int j_end)
const;
127 virtual unsigned int size()
const;
128 virtual unsigned int capacity()
const;
129 virtual unsigned int rows()
const;
130 virtual unsigned int columns()
const;
131 virtual MySymmetricMatrix
inverse()
const;
132 virtual MySymmetricMatrix
transpose()
const;
135 virtual double&
operator()(
unsigned int,
unsigned int);
136 virtual double operator()(
unsigned int,
unsigned int)
const;
137 virtual RowVector operator[](
unsigned int)
const;
138 virtual bool operator==(
const MySymmetricMatrix& a)
const;
140 virtual MySymmetricMatrix&
operator=(
double a);
146 virtual MySymmetricMatrix
operator + (
double b)
const;
147 virtual MySymmetricMatrix
operator - (
double b)
const;
148 virtual MySymmetricMatrix
operator * (
double b)
const;
149 virtual MySymmetricMatrix
operator / (
double b)
const;
151 virtual MyRowVector rowCopy(
unsigned int r)
const;
155 virtual MyMatrix
operator + (
const MyMatrix &a)
const;
156 virtual MyMatrix
operator - (
const MyMatrix &a)
const;
157 virtual MyMatrix
operator * (
const MyMatrix &a)
const;
159 virtual MySymmetricMatrix&
operator +=(
const MySymmetricMatrix& a);
160 virtual MySymmetricMatrix&
operator -=(
const MySymmetricMatrix& a);
161 virtual MySymmetricMatrix
operator + (
const MySymmetricMatrix &a)
const;
162 virtual MySymmetricMatrix
operator - (
const MySymmetricMatrix &a)
const;
163 virtual MyMatrix
operator * (
const MySymmetricMatrix& a)
const;
165 virtual MyColumnVector
operator* (
const MyColumnVector &b)
const;
166 virtual void multiply (
const MyColumnVector &b, MyColumnVector &result)
const;
168 virtual void resize(
unsigned int i,
bool copy=
true,
bool initialize=
true);
169 virtual MyMatrix
sub(
int i_start,
int i_end,
int j_start ,
int j_end)
const;
Implementation of Matrixwrapper using Boost.
virtual MySymmetricMatrix & operator*=(double b)
SYMMETRICMATRIX - SCALAR operator.
Wrapper class for RowVectors (Boost implementation)
virtual MySymmetricMatrix & operator=(double a)
Set all elements of the Matrix equal to a.
virtual MyMatrix & operator+=(double a)
MATRIX - SCALAR operator.
virtual MySymmetricMatrix & operator/=(double b)
SYMMETRICMATRIX - SCALAR operator.
virtual unsigned int size() const
Ask Number of Rows.
virtual MySymmetricMatrix inverse() const
get inverse
virtual MyColumnVector columnCopy(unsigned int c) const
Get column from matrix.
virtual double & operator()(unsigned int, unsigned int)
Operator ()
virtual double determinant() const
get determinant
virtual double determinant() const
get determinant
virtual MySymmetricMatrix operator-(double b) const
SYMMETRICMATRIX - SCALAR operator.
virtual unsigned int columns() const
Ask Number of Columns.
virtual MyMatrix operator+(double b) const
MATRIX - SCALAR operator.
virtual bool operator==(const MyMatrix &a) const
Operator ==.
virtual MyRowVector rowCopy(unsigned int r) const
Get row from matrix.
Class SymmetricMatrixWrapper.
virtual unsigned int rows() const
Ask Number of Rows.
virtual unsigned int capacity() const
Ask Number of Rows.
virtual MySymmetricMatrix operator/(double b) const
SYMMETRICMATRIX - SCALAR operator.
virtual void resize(unsigned int i, unsigned int j, bool copy=true, bool initialize=true)
resize matrix
virtual MyMatrix operator*(double b) const
MATRIX - SCALAR operator.
virtual MySymmetricMatrix transpose() const
get transpose
virtual unsigned int columns() const
Ask Number of Columns.
virtual int convertToSymmetricMatrix(MySymmetricMatrix &sym)
Turn matrix into Symmetric one.
virtual MySymmetricMatrix operator+(double b) const
SYMMETRICMATRIX - SCALAR operator.
virtual MyMatrix & operator=(double a)
Set all elements of the Matrix equal to a.
virtual MyMatrix operator-(double b) const
MATRIX - SCALAR operator.
virtual MySymmetricMatrix & operator+=(double a)
SYMMETRICMATRIX - SCALAR operator.
virtual unsigned int rows() const
Ask Number of Rows.
virtual MyMatrix & operator/=(double b)
MATRIX - SCALAR operator.
virtual MyMatrix operator/(double b) const
MATRIX - SCALAR operator.
virtual void multiply(const MyColumnVector &b, MyColumnVector &result) const
SYMMETRICMATRIX - VECTOR operator.
virtual MyMatrix & operator-=(double a)
MATRIX - SCALAR operator.
virtual MyMatrix & operator*=(double b)
MATRIX - SCALAR operator.
virtual double & operator()(unsigned int, unsigned int)
Operator ()
virtual MyMatrix sub(int i_start, int i_end, int j_start, int j_end) const
get sub matrix
virtual MyMatrix inverse() const
get inverse
virtual MySymmetricMatrix operator*(double b) const
SYMMETRICMATRIX - SCALAR operator.
virtual unsigned int capacity() const
Ask Number of Rows.
virtual MySymmetricMatrix & operator-=(double a)
SYMMETRICMATRIX - SCALAR operator.
virtual MyMatrix transpose() const
get transpose
virtual void resize(unsigned int i, bool copy=true, bool initialize=true)
resize symmetric matrix
virtual bool operator==(const MySymmetricMatrix &a) const
Operator ==.
virtual unsigned int size() const
Ask Number of Rows.
virtual MyMatrix sub(int i_start, int i_end, int j_start, int j_end) const
get sub matrix