48 #ifndef MUI_SPARSE_MATRIX_H_
49 #define MUI_SPARSE_MATRIX_H_
60 template<
typename ITYPE,
typename VTYPE>
70 sparse_matrix<ITYPE,VTYPE>(ITYPE, ITYPE,
const std::string & =
"CSR",
const std::vector<VTYPE> & = {},
const std::vector<ITYPE> & = {},
const std::vector<ITYPE> & = {});
91 void write_vectors_to_file(
const std::string &,
const std::string & = {},
const std::string & = {},
const std::string & = {})
const;
93 void read_vectors_from_file(
const std::string &,
const std::string & = {},
const std::string & = {},
const std::string & = {});
109 bool is_sorted_unique(
const std::string & = {},
const std::string & = {})
const;
116 void resize(ITYPE, ITYPE);
122 void set_value(ITYPE, ITYPE, VTYPE,
bool =
true);
130 void add_scalar(ITYPE, ITYPE, VTYPE,
bool =
true);
138 void format_conversion(
const std::string & =
"COO",
bool =
true,
bool =
false,
const std::string & =
"overwrite");
140 void sort_deduplication(
bool =
true,
bool =
true,
const std::string & =
"overwrite",
bool =
true);
153 template <
typename STYPE>
193 void sort_coo(
bool =
true,
bool =
false,
const std::string & =
"overwrite");
195 void sort_csr(
bool =
false,
const std::string & =
"overwrite");
197 void sort_csc(
bool =
false,
const std::string & =
"overwrite");
199 void coo_element_operation(ITYPE, ITYPE, VTYPE,
const std::string &,
const std::string & = {},
const std::string & = {});
201 void csr_element_operation(ITYPE, ITYPE, VTYPE,
const std::string &,
const std::string & = {},
const std::string & = {});
203 void csc_element_operation(ITYPE, ITYPE, VTYPE,
const std::string &,
const std::string & = {},
const std::string & = {});
257 std::vector<VTYPE> values_;
259 std::vector<ITYPE> row_indices_;
261 std::vector<ITYPE> col_indices_;
267 std::vector<VTYPE> values_;
269 std::vector<ITYPE> row_ptrs_;
271 std::vector<ITYPE> col_indices_;
277 std::vector<VTYPE> values_;
279 std::vector<ITYPE> row_indices_;
281 std::vector<ITYPE> col_ptrs_;
295 format matrix_format_ = format::CSR;
314 #include "../linear_algebra/matrix_ctor_dtor.h"
315 #include "../linear_algebra/matrix_io_info.h"
316 #include "../linear_algebra/matrix_manipulation.h"
317 #include "../linear_algebra/matrix_arithmetic.h"
318 #include "../linear_algebra/matrix_asserts.h"
void clear_vectors()
Definition: matrix_manipulation.h:2002
void index_reinterpretation()
Definition: matrix_arithmetic.h:1202
ITYPE get_rows() const
Definition: matrix_io_info.h:579
void set_matrix_format(const std::string &="CSR")
Definition: matrix_ctor_dtor.h:343
void sort_deduplication(bool=true, bool=true, const std::string &="overwrite", bool=true)
Definition: matrix_manipulation.h:764
bool is_sorted_unique(const std::string &={}, const std::string &={}) const
Definition: matrix_io_info.h:701
void csr_to_csc()
Definition: matrix_manipulation.h:1852
sparse_matrix< ITYPE, VTYPE > operator*(sparse_matrix< ITYPE, VTYPE > &)
Definition: matrix_arithmetic.h:521
void csc_element_operation(ITYPE, ITYPE, VTYPE, const std::string &, const std::string &={}, const std::string &={})
Definition: matrix_manipulation.h:1585
VTYPE dot_product(sparse_matrix< ITYPE, VTYPE > &) const
Definition: matrix_arithmetic.h:759
void print() const
Definition: matrix_io_info.h:66
bool is_csc_sorted_unique(const std::string &={}, const std::string &={}) const
Definition: matrix_io_info.h:837
void coo_element_operation(ITYPE, ITYPE, VTYPE, const std::string &, const std::string &={}, const std::string &={})
Definition: matrix_manipulation.h:1299
void sort_csr(bool=false, const std::string &="overwrite")
Definition: matrix_manipulation.h:1037
void set_zero()
Definition: matrix_manipulation.h:418
sparse_matrix< ITYPE, VTYPE > transpose(bool=true) const
Definition: matrix_arithmetic.h:943
ITYPE non_zero_elements_count() const
Definition: matrix_io_info.h:635
void print_vectors() const
Definition: matrix_io_info.h:78
bool is_csr_sorted_unique(const std::string &={}, const std::string &={}) const
Definition: matrix_io_info.h:787
void qr_decomposition(sparse_matrix< ITYPE, VTYPE > &, sparse_matrix< ITYPE, VTYPE > &) const
Definition: matrix_arithmetic.h:1043
void set_value(ITYPE, ITYPE, VTYPE, bool=true)
Definition: matrix_manipulation.h:292
bool is_coo_sorted_unique(const std::string &={}, const std::string &={}) const
Definition: matrix_io_info.h:736
sparse_matrix< ITYPE, VTYPE > operator+(sparse_matrix< ITYPE, VTYPE > &)
Definition: matrix_arithmetic.h:62
VTYPE get_value(ITYPE, ITYPE) const
Definition: matrix_io_info.h:523
sparse_matrix< ITYPE, VTYPE > & operator=(const sparse_matrix< ITYPE, VTYPE > &)
Definition: matrix_manipulation.h:587
sparse_matrix< ITYPE, VTYPE > segment(ITYPE, ITYPE, ITYPE, ITYPE, bool=true)
Definition: matrix_manipulation.h:153
void write_vectors_to_file(const std::string &, const std::string &={}, const std::string &={}, const std::string &={}) const
Definition: matrix_io_info.h:154
void assert_csc_sorted_unique(const std::string &={}, const std::string &={}) const
Definition: matrix_asserts.h:318
void csc_to_coo()
Definition: matrix_manipulation.h:1912
std::string get_format() const
Definition: matrix_io_info.h:681
void coo_to_csc()
Definition: matrix_manipulation.h:1772
void assert_valid_vector_size(const std::string &={}, const std::string &={}) const
Definition: matrix_asserts.h:61
sparse_matrix< ITYPE, VTYPE > hadamard_product(sparse_matrix< ITYPE, VTYPE > &)
Definition: matrix_arithmetic.h:772
void read_vectors_from_file(const std::string &, const std::string &={}, const std::string &={}, const std::string &={})
Definition: matrix_io_info.h:252
void resize(ITYPE, ITYPE)
Definition: matrix_manipulation.h:62
void assert_csr_sorted_unique(const std::string &={}, const std::string &={}) const
Definition: matrix_asserts.h:278
void add_scalar(ITYPE, ITYPE, VTYPE, bool=true)
Definition: matrix_manipulation.h:447
ITYPE get_cols() const
Definition: matrix_io_info.h:585
sparse_matrix< ITYPE, VTYPE > inverse() const
Definition: matrix_arithmetic.h:1134
void swap_elements(ITYPE, ITYPE, ITYPE, ITYPE)
Definition: matrix_manipulation.h:407
void multiply_scalar(ITYPE, ITYPE, VTYPE, bool=true)
Definition: matrix_manipulation.h:540
void csr_element_operation(ITYPE, ITYPE, VTYPE, const std::string &, const std::string &={}, const std::string &={})
Definition: matrix_manipulation.h:1451
void copy(const sparse_matrix< ITYPE, VTYPE > &)
Definition: matrix_manipulation.h:79
void coo_to_csr()
Definition: matrix_manipulation.h:1720
void sort_coo(bool=true, bool=false, const std::string &="overwrite")
Definition: matrix_manipulation.h:808
void format_conversion(const std::string &="COO", bool=true, bool=false, const std::string &="overwrite")
Definition: matrix_manipulation.h:639
void csc_to_csr()
Definition: matrix_manipulation.h:1946
void format_reinterpretation()
Definition: matrix_arithmetic.h:1215
sparse_matrix< ITYPE, VTYPE > operator-(sparse_matrix< ITYPE, VTYPE > &)
Definition: matrix_arithmetic.h:289
bool empty() const
Definition: matrix_io_info.h:665
void assert_coo_sorted_unique(const std::string &={}, const std::string &={}) const
Definition: matrix_asserts.h:237
void csr_to_coo()
Definition: matrix_manipulation.h:1818
std::vector< std::pair< ITYPE, ITYPE > > get_non_zero_elements() const
Definition: matrix_io_info.h:591
void lu_decomposition(sparse_matrix< ITYPE, VTYPE > &, sparse_matrix< ITYPE, VTYPE > &) const
Definition: matrix_arithmetic.h:984
void subtract_scalar(ITYPE, ITYPE, VTYPE, bool=true)
Definition: matrix_manipulation.h:494
void sort_csc(bool=false, const std::string &="overwrite")
Definition: matrix_manipulation.h:1168
Utility functions for mui::linalg.