Morpheus 1.0.0
Dynamic matrix type and algorithms for sparse matrices
Loading...
Searching...
No Matches
Csr/Morpheus_Print_Impl.hpp
1
24#ifndef MORPHEUS_CSR_PRINT_IMPL_HPP
25#define MORPHEUS_CSR_PRINT_IMPL_HPP
26
27#include <Morpheus_FormatTags.hpp>
28#include <impl/Morpheus_Utils.hpp>
29
30#include <iostream>
31#include <iomanip> // setw, setprecision
32
33namespace Morpheus {
34namespace Impl {
35
36template <typename Printable, typename Stream>
37void print(const Printable& p, Stream& s,
38 typename std::enable_if<
39 Morpheus::is_csr_matrix_format_container_v<Printable>>::type* =
40 nullptr) {
41 using size_type = typename Printable::size_type;
42 using index_type = typename Printable::index_type;
43 print_matrix_header(p, s);
44
45 for (size_type i = 0; i < p.nrows(); i++) {
46 for (index_type jj = p.crow_offsets(i); jj < p.crow_offsets(i + 1); jj++) {
47 s << " " << std::setw(14) << i;
48 s << " " << std::setw(14) << p.ccolumn_indices(jj);
49 s << " " << std::setprecision(4) << std::setw(8) << "(" << p.cvalues(jj)
50 << ")\n";
51 }
52 }
53}
54
55} // namespace Impl
56} // namespace Morpheus
57
58#endif // MORPHEUS_CSR_PRINT_IMPL_HPP
Generic Morpheus interfaces.
Definition: dummy.cpp:24