29#ifndef SPARSEMATMPILIS_HPP
30#define SPARSEMATMPILIS_HPP
32#include "../SparseMat.hpp"
34#include <ezp/ezp/lis.hpp>
41 int solve_full(Mat<T>&);
44 int direct_solve(Mat<T>& X, Mat<T>&& B)
override {
return this->solve_full(X = std::move(B)); }
46 int direct_solve(Mat<T>& X,
const Mat<T>& B)
override {
return this->solve_full(X = B); }
51 unique_ptr<MetaMat<T>>
unique_copy()
override {
return std::make_unique<SparseMatClusterLIS>(*
this); }
54#pragma GCC diagnostic push
55#pragma GCC diagnostic ignored "-Wnarrowing"
59 solver.set_option(this->setting.option.c_str());
61 if(this->factored)
info = solver.solve({X.n_rows, X.n_cols, X.memptr()});
63 this->factored =
true;
67 info = solver.solve({csr_mat.n_rows, csr_mat.n_elem, csr_mat.row_mem(), csr_mat.col_mem(), csr_mat.val_mem()}, {X.n_rows, X.n_cols, X.memptr()});
75#pragma GCC diagnostic pop
A SparseMatClusterLIS class that holds matrices.
Definition SparseMatClusterLIS.hpp:36
int direct_solve(Mat< T > &X, const Mat< T > &B) override
Definition SparseMatClusterLIS.hpp:46
unique_ptr< MetaMat< T > > unique_copy() override
Definition SparseMatClusterLIS.hpp:51
int direct_solve(Mat< T > &X, Mat< T > &&B) override
Definition SparseMatClusterLIS.hpp:44
A SparseMat class that holds matrices.
Definition SparseMat.hpp:34
void info(const std::string_view format_sv, const T &... args)
Definition suanPan.h:295
auto bcast_from_root(T &&object)
Definition suanPan.h:238
#define suanpan_error(...)
Definition suanPan.h:349