2 #ifdef __MATRIXWRAPPER_EIGEN__
4 #ifndef __MATRIX_EIGEN__
5 #define __MATRIX_EIGEN__
6 #include "../../bfl_constants.h"
7 #include "matrix_wrapper.h"
8 #include "vector_wrapper.h"
13 typedef Eigen::MatrixXd EigenMatrix;
14 typedef Eigen::MatrixXd EigenSymmetricMatrix;
15 typedef Eigen::MatrixXd::ConstSelfAdjointViewReturnType<Eigen::Upper>::Type EigenSymmetricView;
17 namespace MatrixWrapper
21 class Matrix :
public EigenMatrix,
public Matrix_Wrapper
35 Matrix (
const MyMatrix& a);
36 Matrix(
const EigenMatrix & a);
38 Matrix(
int num_rows,
const RowVector& v);
41 virtual unsigned int size()
const;
42 virtual unsigned int capacity()
const;
43 virtual unsigned int rows()
const;
44 virtual unsigned int columns()
const;
45 virtual double& operator()(
unsigned int,
unsigned int);
46 virtual double operator()(
unsigned int,
unsigned int)
const;
47 virtual RowVector operator[](
unsigned int)
const;
49 using EigenMatrix::operator ==;
50 using EigenMatrix::operator =;
51 using EigenMatrix::operator +=;
52 using EigenMatrix::operator -=;
53 using EigenMatrix::operator +;
54 using EigenMatrix::operator -;
56 virtual bool operator==(
const MyMatrix& a)
const;
58 virtual MyMatrix& operator =(
double a);
60 virtual MyMatrix& operator +=(
double a);
61 virtual MyMatrix& operator -=(
double a);
62 virtual MyMatrix& operator *=(
double b);
63 virtual MyMatrix& operator /=(
double b);
64 virtual MyMatrix operator+ (
double b)
const;
65 virtual MyMatrix operator- (
double b)
const;
66 virtual MyMatrix operator* (
double b)
const;
67 virtual MyMatrix operator/ (
double b)
const;
69 virtual MyMatrix& operator =(
const MySymmetricMatrix& a);
70 virtual MyMatrix& operator +=(
const MyMatrix& a);
71 virtual MyMatrix& operator -=(
const MyMatrix& a);
72 virtual MyMatrix operator+ (
const MyMatrix &a)
const;
73 virtual MyMatrix operator- (
const MyMatrix &a)
const;
74 virtual MyMatrix operator* (
const MyMatrix &a)
const;
76 virtual MyColumnVector operator* (
const MyColumnVector &b)
const;
78 virtual MyRowVector rowCopy(
unsigned int r)
const;
79 virtual MyColumnVector columnCopy(
unsigned int c)
const;
81 virtual void resize(
unsigned int i,
unsigned int j,
82 bool copy=
true,
bool initialize=
true);
83 virtual MyMatrix inverse()
const;
84 virtual MyMatrix transpose()
const;
85 virtual double determinant()
const;
86 virtual int convertToSymmetricMatrix(MySymmetricMatrix& sym);
87 virtual MyMatrix sub(
int i_start,
int i_end,
int j_start ,
int j_end)
const;
91 class SymmetricMatrix :
public EigenSymmetricMatrix,
public SymmetricMatrix_Wrapper
98 SymmetricMatrix(
int n);
101 SymmetricMatrix(
const MySymmetricMatrix& a);
102 SymmetricMatrix(
const EigenSymmetricMatrix& a);
103 SymmetricMatrix(
const EigenSymmetricView & a);
105 SymmetricMatrix(
int num_rows,
const RowVector& v);
108 virtual ~SymmetricMatrix();
110 virtual unsigned int size()
const;
111 virtual unsigned int capacity()
const;
112 virtual unsigned int rows()
const;
113 virtual unsigned int columns()
const;
114 virtual MySymmetricMatrix inverse()
const;
115 virtual MySymmetricMatrix transpose()
const;
116 virtual double determinant()
const;
118 virtual double& operator()(
unsigned int,
unsigned int);
119 virtual double operator()(
unsigned int,
unsigned int)
const;
120 virtual RowVector operator[](
unsigned int)
const;
122 using EigenSymmetricMatrix::operator ==;
123 using EigenSymmetricMatrix::operator =;
124 using EigenSymmetricMatrix::operator +=;
125 using EigenSymmetricMatrix::operator -=;
126 using EigenSymmetricMatrix::operator +;
127 using EigenSymmetricMatrix::operator -;
129 virtual bool operator==(
const MySymmetricMatrix& a)
const;
131 virtual MySymmetricMatrix& operator=(
double a);
133 virtual MySymmetricMatrix& operator +=(
double a);
134 virtual MySymmetricMatrix& operator -=(
double a);
135 virtual MySymmetricMatrix& operator *=(
double b);
136 virtual MySymmetricMatrix& operator /=(
double b);
137 virtual MySymmetricMatrix operator + (
double b)
const;
138 virtual MySymmetricMatrix operator - (
double b)
const;
139 virtual MySymmetricMatrix operator * (
double b)
const;
140 virtual MySymmetricMatrix operator / (
double b)
const;
142 virtual MyRowVector rowCopy(
unsigned int r)
const;
144 virtual MyMatrix& operator +=(
const MyMatrix& a);
145 virtual MyMatrix& operator -=(
const MyMatrix& a);
146 virtual MyMatrix operator + (
const MyMatrix &a)
const;
147 virtual MyMatrix operator - (
const MyMatrix &a)
const;
148 virtual MyMatrix operator * (
const MyMatrix &a)
const;
150 virtual MySymmetricMatrix& operator +=(
const MySymmetricMatrix& a);
151 virtual MySymmetricMatrix& operator -=(
const MySymmetricMatrix& a);
152 virtual MySymmetricMatrix operator + (
const MySymmetricMatrix &a)
const;
153 virtual MySymmetricMatrix operator - (
const MySymmetricMatrix &a)
const;
154 virtual MyMatrix operator * (
const MySymmetricMatrix& a)
const;
156 virtual MyColumnVector operator* (
const MyColumnVector &b)
const;
157 virtual void multiply (
const MyColumnVector &b, MyColumnVector &result)
const;
159 virtual void resize(
unsigned int i,
bool copy=
true,
bool initialize=
true);
160 virtual MyMatrix sub(
int i_start,
int i_end,
int j_start ,
int j_end)
const;