Program Listing for File matrix_element.hpp¶
↰ Return to documentation for file (src_ed/matrix_element.hpp)
#ifndef matrix_element_h
#define matrix_element_h
#include <iostream>
#include <string>
using namespace std;
//Moise: this definition is compliant with Eigen Triplet class
template<typename T>
struct matrix_element
{
size_t r;
size_t c;
T v;
matrix_element() : r(0), c(0), v(0) {}
matrix_element(size_t _r, size_t _c, T _v) : r(_r), c(_c), v(_v) {}
friend std::ostream & operator<<(std::ostream &s, const matrix_element &e)
{
s << '(' << e.r+1 << ',' << e.c+1 << ") : " << e.v;
return s;
}
string str() const{
ostringstream sout;
sout << *this;
return sout.str();
}
friend inline bool operator<(const matrix_element &x, const matrix_element &y){
if(x.r < y.r) return true;
else if(x.r > y.r) return false;
else if(x.c < y.c) return true;
else return false;
}
const size_t& row() const { return r; }
const size_t& col() const { return c; }
const T& value() const { return v; }
};
struct diagonal_matrix_element{
uint32_t r;
double v;
diagonal_matrix_element(uint32_t _r, double _v) : r(_r), v(_v) {}
friend inline bool operator<(const diagonal_matrix_element &x, const diagonal_matrix_element &y){
if(x.r < y.r) return true;
else return false;
}
} ;
#endif