18 #ifndef BAND_SOLVER_HPP
19 #define BAND_SOLVER_HPP
21 #include "abstract_solver.hpp"
23 namespace ezp::detail {
28 template<band_container_t CT>
auto to_band(CT&& custom) {
29 if constexpr(has_mem<CT>)
return band_mat<DT, IT>{custom.n_rows, custom.n_cols, custom.kl, custom.ku, custom.mem()};
30 else if constexpr(has_memptr<CT>)
return band_mat<DT, IT>{custom.n_rows, custom.n_cols, custom.kl, custom.ku, custom.memptr()};
31 else if constexpr(has_data_method<CT>)
return band_mat<DT, IT>{custom.n_rows, custom.n_cols, custom.kl, custom.ku, custom.data()};
32 else if constexpr(has_iterator<CT>)
return band_mat<DT, IT>{custom.n_rows, custom.n_cols, custom.kl, custom.ku, &(*custom.begin())};
33 else static_assert(always_false_v<CT>,
"invalid container type");
36 template<band_symm_container_t CT>
auto to_band_symm(CT&& custom) {
37 if constexpr(has_mem<CT>)
return band_symm_mat<DT, IT>{custom.n_rows, custom.n_cols, custom.klu, custom.mem()};
38 else if constexpr(has_memptr<CT>)
return band_symm_mat<DT, IT>{custom.n_rows, custom.n_cols, custom.klu, custom.memptr()};
39 else if constexpr(has_data_method<CT>)
return band_symm_mat<DT, IT>{custom.n_rows, custom.n_cols, custom.klu, custom.data()};
40 else if constexpr(has_iterator<CT>)
return band_symm_mat<DT, IT>{custom.n_rows, custom.n_cols, custom.klu, &(*custom.begin())};
41 else static_assert(always_false_v<CT>,
"invalid container type");
48 , trans_ctx(1, rows,
'R') {}
Definition: traits.hpp:176
Definition: abstract_solver.hpp:24
Definition: band_solver.hpp:24
Definition: traits.hpp:89
Definition: traits.hpp:100