00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "../config.h"
00021 #ifdef __MATRIXWRAPPER_BOOST__
00022
00023 #ifndef __VECTOR_BOOST__
00024 #define __VECTOR_BOOST__
00025
00026 #include "matrix_wrapper.h"
00027 #include "vector_wrapper.h"
00028 #include <boost/numeric/ublas/vector.hpp>
00029 #include <boost/numeric/ublas/vector_proxy.hpp>
00030 #include <boost/numeric/ublas/io.hpp>
00031
00032
00033 #define BoostColumnVector boost::numeric::ublas::vector<double>
00034 #define BoostRowVector boost::numeric::ublas::vector<double>
00035
00036
00037 namespace MatrixWrapper
00038 {
00039
00041 class ColumnVector : public BoostColumnVector, public ColumnVector_Wrapper
00042 {
00043 public:
00044
00046 ColumnVector();
00047
00049 ColumnVector(int nrows);
00050
00052 ColumnVector(const MyColumnVector& a, const MyColumnVector& b);
00053
00055 virtual ~ColumnVector();
00056
00058 ColumnVector (const MyColumnVector& a);
00059
00061 ColumnVector (const BoostColumnVector& a);
00062
00063 virtual void resize(int num_rows);
00064 virtual unsigned int rows() const;
00065 virtual unsigned int columns() const;
00066 virtual ColumnVector vectorAdd(const MyColumnVector& v2) const;
00067 virtual ColumnVector& operator =(const MyColumnVector& a);
00068 virtual ColumnVector& operator =(double a);
00069
00070 virtual MyColumnVector & operator+= (const MyColumnVector& a);
00071 virtual MyColumnVector & operator-= (const MyColumnVector& a);
00072 virtual MyColumnVector operator+ (const MyColumnVector &a) const;
00073 virtual MyColumnVector operator- (const MyColumnVector &a) const;
00074
00075 virtual MyColumnVector& operator+= (double b);
00076 virtual MyColumnVector& operator-= (double b);
00077 virtual MyColumnVector& operator*= (double b);
00078 virtual MyColumnVector& operator/= (double b);
00079 virtual MyColumnVector operator+ (double b) const;
00080 virtual MyColumnVector operator- (double b) const;
00081 virtual MyColumnVector operator* (double b) const;
00082 virtual MyColumnVector operator/ (double b) const;
00083
00084 virtual const double operator()(unsigned int) const;
00085 virtual const bool operator==(const MyColumnVector& a) const;
00086 virtual double& operator()(unsigned int);
00087 virtual MyMatrix operator* (const MyRowVector &a) const;
00088 virtual MyColumnVector sub(int j_start , int j_end) const;
00089 virtual MyRowVector transpose() const;
00090
00091
00092 };
00093
00095 class RowVector : public BoostRowVector, public RowVector_Wrapper
00096 {
00097
00098
00099
00100 public:
00101 RowVector();
00102 RowVector(int ncols);
00103
00104
00105
00106
00107 RowVector (const MyRowVector& a);
00108
00109 RowVector (const BoostRowVector& a);
00110
00111 virtual ~RowVector();
00112
00113 virtual void resize(int num_cols);
00114 virtual RowVector vectorAdd(const MyRowVector& v2) const;
00115 virtual unsigned int rows() const;
00116 virtual unsigned int columns() const;
00117 virtual RowVector& operator =(double a);
00118 virtual RowVector& operator =(const MyRowVector& a);
00119
00120 virtual MyRowVector & operator+= (const MyRowVector& a);
00121 virtual MyRowVector & operator-= (const MyRowVector& a);
00122 virtual MyRowVector operator+ (const MyRowVector &a) const;
00123 virtual MyRowVector operator- (const MyRowVector &a) const;
00124
00125 virtual MyRowVector& operator+= (double b);
00126 virtual MyRowVector& operator-= (double b);
00127 virtual MyRowVector& operator*= (double b);
00128 virtual MyRowVector& operator/= (double b);
00129 virtual MyRowVector operator+ (double b) const;
00130 virtual MyRowVector operator- (double b) const;
00131 virtual MyRowVector operator* (double b) const;
00132 virtual MyRowVector operator/ (double b) const;
00133
00134 virtual const double operator()(unsigned int) const;
00135 virtual const bool operator==(const MyRowVector& a) const;
00136 virtual double& operator()(unsigned int);
00137 virtual MyRowVector sub(int j_start , int j_end) const;
00138 virtual MyColumnVector transpose() const;
00139 virtual double operator*(const MyColumnVector& a) const;
00140
00141 };
00142
00143 }
00144
00145 #endif
00146
00147 #endif