matrices.h

00001 #ifndef MATRICES_H
00002 #define MATRICES_H
00003 
00004 #include <vector>
00005 
00006 class lower_triangular_matrix {
00007 
00008     unsigned n;
00009     std::vector<double> data;
00010 
00011     public:
00012 
00013     lower_triangular_matrix(unsigned n_ = 0) : n(n_), data(n * (n+1) / 2) {};
00014     
00015     void resize(unsigned n_) {
00016         n = n_;
00017         data.resize(n*(n+1)/2);
00018     }
00019     
00020     std::vector<double>::iterator operator[](unsigned i) { return data.begin() + i * (i+1) / 2; }
00021     std::vector<double>::const_iterator operator[](unsigned i) const { return data.begin() + i*(i+1)/2; }
00022 };
00023 
00024 class square_matrix {
00025     unsigned n;
00026     std::vector<double> data;
00027 
00028     public:
00029 
00030     square_matrix(unsigned n_ = 0) : n(n_), data(n * n) {};
00031     
00032     void resize(unsigned n_) {
00033         n = n_;
00034         data.resize(n*n);
00035     }
00036     
00037     std::vector<double>::iterator operator[](unsigned i) { return data.begin() + i * n; }
00038     std::vector<double>::const_iterator operator[](unsigned i) const { return data.begin() + i*n; }
00039 };
00040 
00041 #endif
00042 

Generated on Thu Oct 19 05:06:41 2006 for EO by  doxygen 1.3.9.1