1 #ifndef _fei_CSVec_hpp_
2 #define _fei_CSVec_hpp_
58 std::vector<int>& v_ind = vec.
indices();
59 std::vector<double>& v_coef = vec.
coefs();
61 std::vector<int>::iterator
62 iter = std::lower_bound(v_ind.begin(), v_ind.end(), eqn);
64 size_t offset = iter - v_ind.begin();
66 if (iter == v_ind.end() || *iter != eqn) {
67 v_ind.insert(iter, eqn);
68 v_coef.insert(v_coef.begin()+offset, coef);
71 v_coef[offset] += coef;
76 void add_entries(CSVec& vec,
int num,
const int* eqns,
const double* coefs);
78 void put_entry(CSVec& vec,
int eqn,
double coef);
80 double get_entry(
const CSVec& vec,
int eqn);
void remove_entry(CSVec &vec, int eqn)
void add_entries(CSVec &vec, int num, const int *eqns, const double *coefs)
void subtract(const CSVec &rhs)
std::vector< int > & indices()
void set_values(CSVec &vec, double scalar)
std::vector< int > indices_
bool operator!=(const CSVec &rhs) const
std::vector< double > coefs_
void put_entry(CSVec &vec, int eqn, double coef)
const std::vector< int > & indices() const
CSVec & operator=(const CSVec &invec)
double get_entry(const CSVec &vec, int eqn)
bool operator==(const CSVec &rhs) const
void add_entry(CSVec &vec, int eqn, double coef)
void add_CSVec_CSVec(const CSVec &u, CSVec &v)
const std::vector< double > & coefs() const
std::vector< double > & coefs()