33 #ifndef STRUMPACK_ITERATIVE_SOLVERS_HPP
34 #define STRUMPACK_ITERATIVE_SOLVERS_HPP
46 template<
typename T>
using SPMV = std::function<void(
const T*, T*)>;
47 template<
typename T>
using PREC = std::function<void(T*)>;
54 template<
typename scalar_t,
55 typename real_t =
typename RealType<scalar_t>::value_type>
57 (
const SPMV<scalar_t>& A,
const PREC<scalar_t>& M, std::size_t n,
58 scalar_t* x,
const scalar_t* b, real_t rtol, real_t atol,
60 bool non_zero_guess,
bool verbose);
66 template<
typename scalar_t,
67 typename real_t =
typename RealType<scalar_t>::value_type>
69 (
const SPMV<scalar_t>& A,
const PREC<scalar_t>& M, std::size_t n,
70 scalar_t* x,
const scalar_t* b, real_t rtol, real_t atol,
71 int& totit,
int maxit,
bool non_zero_guess,
bool verbose);
94 template<
typename scalar_t,
typename integer_t,
95 typename real_t =
typename RealType<scalar_t>::value_type>
97 (
const CompressedSparseMatrix<scalar_t,integer_t>& A,
98 const std::function<
void(DenseMatrix<scalar_t>&)>& M,
99 DenseMatrix<scalar_t>& x,
const DenseMatrix<scalar_t>& b,
100 real_t rtol, real_t atol,
int& totit,
int maxit,
101 bool non_zero_guess,
bool verbose);
124 template<
typename scalar_t,
125 typename real_t =
typename RealType<scalar_t>::value_type>
127 (
const DenseMatrix<scalar_t>& A,
128 const std::function<
void(DenseMatrix<scalar_t>&)>& M,
129 DenseMatrix<scalar_t>& x,
const DenseMatrix<scalar_t>& b,
130 real_t rtol, real_t atol,
int& totit,
int maxit,
131 bool non_zero_guess,
bool verbose);
137 #endif // STRUMPACK_ITERATIVE_SOLVERS_HPP