// Generated by using Rcpp::compileAttributes() -> do not edit by hand
// Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393

#include <RcppArmadillo.h>
#include <Rcpp.h>

using namespace Rcpp;

#ifdef RCPP_USE_GLOBAL_ROSTREAM
Rcpp::Rostream<true>&  Rcpp::Rcout = Rcpp::Rcpp_cout_get();
Rcpp::Rostream<false>& Rcpp::Rcerr = Rcpp::Rcpp_cerr_get();
#endif

// single_bicg
Rcpp::List single_bicg(const arma::mat& A, const arma::colvec& b, arma::colvec& xinit, const double reltol, const int maxiter, const arma::mat& M);
RcppExport SEXP _Rlinsolve_single_bicg(SEXP ASEXP, SEXP bSEXP, SEXP xinitSEXP, SEXP reltolSEXP, SEXP maxiterSEXP, SEXP MSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::mat& >::type A(ASEXP);
    Rcpp::traits::input_parameter< const arma::colvec& >::type b(bSEXP);
    Rcpp::traits::input_parameter< arma::colvec& >::type xinit(xinitSEXP);
    Rcpp::traits::input_parameter< const double >::type reltol(reltolSEXP);
    Rcpp::traits::input_parameter< const int >::type maxiter(maxiterSEXP);
    Rcpp::traits::input_parameter< const arma::mat& >::type M(MSEXP);
    rcpp_result_gen = Rcpp::wrap(single_bicg(A, b, xinit, reltol, maxiter, M));
    return rcpp_result_gen;
END_RCPP
}
// single_bicg_sparse
Rcpp::List single_bicg_sparse(const arma::sp_mat A, const arma::sp_mat b, arma::colvec& xinit, const double reltol, const int maxiter, const arma::sp_mat M);
RcppExport SEXP _Rlinsolve_single_bicg_sparse(SEXP ASEXP, SEXP bSEXP, SEXP xinitSEXP, SEXP reltolSEXP, SEXP maxiterSEXP, SEXP MSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::sp_mat >::type A(ASEXP);
    Rcpp::traits::input_parameter< const arma::sp_mat >::type b(bSEXP);
    Rcpp::traits::input_parameter< arma::colvec& >::type xinit(xinitSEXP);
    Rcpp::traits::input_parameter< const double >::type reltol(reltolSEXP);
    Rcpp::traits::input_parameter< const int >::type maxiter(maxiterSEXP);
    Rcpp::traits::input_parameter< const arma::sp_mat >::type M(MSEXP);
    rcpp_result_gen = Rcpp::wrap(single_bicg_sparse(A, b, xinit, reltol, maxiter, M));
    return rcpp_result_gen;
END_RCPP
}
// single_bicgstab
Rcpp::List single_bicgstab(const arma::mat& A, const arma::colvec& b, arma::colvec& xinit, const double reltol, const int maxiter, const arma::mat& M);
RcppExport SEXP _Rlinsolve_single_bicgstab(SEXP ASEXP, SEXP bSEXP, SEXP xinitSEXP, SEXP reltolSEXP, SEXP maxiterSEXP, SEXP MSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::mat& >::type A(ASEXP);
    Rcpp::traits::input_parameter< const arma::colvec& >::type b(bSEXP);
    Rcpp::traits::input_parameter< arma::colvec& >::type xinit(xinitSEXP);
    Rcpp::traits::input_parameter< const double >::type reltol(reltolSEXP);
    Rcpp::traits::input_parameter< const int >::type maxiter(maxiterSEXP);
    Rcpp::traits::input_parameter< const arma::mat& >::type M(MSEXP);
    rcpp_result_gen = Rcpp::wrap(single_bicgstab(A, b, xinit, reltol, maxiter, M));
    return rcpp_result_gen;
END_RCPP
}
// single_bicgstab_sparse
Rcpp::List single_bicgstab_sparse(const arma::sp_mat A, const arma::sp_mat b, arma::colvec& xinit, const double reltol, const int maxiter, const arma::sp_mat M);
RcppExport SEXP _Rlinsolve_single_bicgstab_sparse(SEXP ASEXP, SEXP bSEXP, SEXP xinitSEXP, SEXP reltolSEXP, SEXP maxiterSEXP, SEXP MSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::sp_mat >::type A(ASEXP);
    Rcpp::traits::input_parameter< const arma::sp_mat >::type b(bSEXP);
    Rcpp::traits::input_parameter< arma::colvec& >::type xinit(xinitSEXP);
    Rcpp::traits::input_parameter< const double >::type reltol(reltolSEXP);
    Rcpp::traits::input_parameter< const int >::type maxiter(maxiterSEXP);
    Rcpp::traits::input_parameter< const arma::sp_mat >::type M(MSEXP);
    rcpp_result_gen = Rcpp::wrap(single_bicgstab_sparse(A, b, xinit, reltol, maxiter, M));
    return rcpp_result_gen;
END_RCPP
}
// single_cg
Rcpp::List single_cg(const arma::mat& A, const arma::colvec& b, arma::colvec& xinit, const double reltol, const int maxiter, const arma::mat& M);
RcppExport SEXP _Rlinsolve_single_cg(SEXP ASEXP, SEXP bSEXP, SEXP xinitSEXP, SEXP reltolSEXP, SEXP maxiterSEXP, SEXP MSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::mat& >::type A(ASEXP);
    Rcpp::traits::input_parameter< const arma::colvec& >::type b(bSEXP);
    Rcpp::traits::input_parameter< arma::colvec& >::type xinit(xinitSEXP);
    Rcpp::traits::input_parameter< const double >::type reltol(reltolSEXP);
    Rcpp::traits::input_parameter< const int >::type maxiter(maxiterSEXP);
    Rcpp::traits::input_parameter< const arma::mat& >::type M(MSEXP);
    rcpp_result_gen = Rcpp::wrap(single_cg(A, b, xinit, reltol, maxiter, M));
    return rcpp_result_gen;
END_RCPP
}
// single_cg_sparse
Rcpp::List single_cg_sparse(const arma::sp_mat A, const arma::sp_mat b, arma::colvec& xinit, const double reltol, const int maxiter, const arma::sp_mat M);
RcppExport SEXP _Rlinsolve_single_cg_sparse(SEXP ASEXP, SEXP bSEXP, SEXP xinitSEXP, SEXP reltolSEXP, SEXP maxiterSEXP, SEXP MSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::sp_mat >::type A(ASEXP);
    Rcpp::traits::input_parameter< const arma::sp_mat >::type b(bSEXP);
    Rcpp::traits::input_parameter< arma::colvec& >::type xinit(xinitSEXP);
    Rcpp::traits::input_parameter< const double >::type reltol(reltolSEXP);
    Rcpp::traits::input_parameter< const int >::type maxiter(maxiterSEXP);
    Rcpp::traits::input_parameter< const arma::sp_mat >::type M(MSEXP);
    rcpp_result_gen = Rcpp::wrap(single_cg_sparse(A, b, xinit, reltol, maxiter, M));
    return rcpp_result_gen;
END_RCPP
}
// single_cgs
Rcpp::List single_cgs(const arma::mat& A, const arma::colvec& b, arma::colvec& xinit, const double reltol, const int maxiter, const arma::mat& M);
RcppExport SEXP _Rlinsolve_single_cgs(SEXP ASEXP, SEXP bSEXP, SEXP xinitSEXP, SEXP reltolSEXP, SEXP maxiterSEXP, SEXP MSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::mat& >::type A(ASEXP);
    Rcpp::traits::input_parameter< const arma::colvec& >::type b(bSEXP);
    Rcpp::traits::input_parameter< arma::colvec& >::type xinit(xinitSEXP);
    Rcpp::traits::input_parameter< const double >::type reltol(reltolSEXP);
    Rcpp::traits::input_parameter< const int >::type maxiter(maxiterSEXP);
    Rcpp::traits::input_parameter< const arma::mat& >::type M(MSEXP);
    rcpp_result_gen = Rcpp::wrap(single_cgs(A, b, xinit, reltol, maxiter, M));
    return rcpp_result_gen;
END_RCPP
}
// single_cgs_sparse
Rcpp::List single_cgs_sparse(const arma::sp_mat A, const arma::sp_mat b, arma::colvec& xinit, const double reltol, const int maxiter, const arma::sp_mat M);
RcppExport SEXP _Rlinsolve_single_cgs_sparse(SEXP ASEXP, SEXP bSEXP, SEXP xinitSEXP, SEXP reltolSEXP, SEXP maxiterSEXP, SEXP MSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::sp_mat >::type A(ASEXP);
    Rcpp::traits::input_parameter< const arma::sp_mat >::type b(bSEXP);
    Rcpp::traits::input_parameter< arma::colvec& >::type xinit(xinitSEXP);
    Rcpp::traits::input_parameter< const double >::type reltol(reltolSEXP);
    Rcpp::traits::input_parameter< const int >::type maxiter(maxiterSEXP);
    Rcpp::traits::input_parameter< const arma::sp_mat >::type M(MSEXP);
    rcpp_result_gen = Rcpp::wrap(single_cgs_sparse(A, b, xinit, reltol, maxiter, M));
    return rcpp_result_gen;
END_RCPP
}
// single_cheby
Rcpp::List single_cheby(const arma::mat& A, const arma::colvec& b, arma::colvec& xinit, const double reltol, const int maxiter, arma::mat& M, const double eigmax, const double eigmin);
RcppExport SEXP _Rlinsolve_single_cheby(SEXP ASEXP, SEXP bSEXP, SEXP xinitSEXP, SEXP reltolSEXP, SEXP maxiterSEXP, SEXP MSEXP, SEXP eigmaxSEXP, SEXP eigminSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::mat& >::type A(ASEXP);
    Rcpp::traits::input_parameter< const arma::colvec& >::type b(bSEXP);
    Rcpp::traits::input_parameter< arma::colvec& >::type xinit(xinitSEXP);
    Rcpp::traits::input_parameter< const double >::type reltol(reltolSEXP);
    Rcpp::traits::input_parameter< const int >::type maxiter(maxiterSEXP);
    Rcpp::traits::input_parameter< arma::mat& >::type M(MSEXP);
    Rcpp::traits::input_parameter< const double >::type eigmax(eigmaxSEXP);
    Rcpp::traits::input_parameter< const double >::type eigmin(eigminSEXP);
    rcpp_result_gen = Rcpp::wrap(single_cheby(A, b, xinit, reltol, maxiter, M, eigmax, eigmin));
    return rcpp_result_gen;
END_RCPP
}
// single_cheby_sparse
Rcpp::List single_cheby_sparse(const arma::sp_mat A, const arma::sp_mat b, arma::colvec& xinit, const double reltol, const int maxiter, arma::sp_mat M, const double eigmax, const double eigmin);
RcppExport SEXP _Rlinsolve_single_cheby_sparse(SEXP ASEXP, SEXP bSEXP, SEXP xinitSEXP, SEXP reltolSEXP, SEXP maxiterSEXP, SEXP MSEXP, SEXP eigmaxSEXP, SEXP eigminSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::sp_mat >::type A(ASEXP);
    Rcpp::traits::input_parameter< const arma::sp_mat >::type b(bSEXP);
    Rcpp::traits::input_parameter< arma::colvec& >::type xinit(xinitSEXP);
    Rcpp::traits::input_parameter< const double >::type reltol(reltolSEXP);
    Rcpp::traits::input_parameter< const int >::type maxiter(maxiterSEXP);
    Rcpp::traits::input_parameter< arma::sp_mat >::type M(MSEXP);
    Rcpp::traits::input_parameter< const double >::type eigmax(eigmaxSEXP);
    Rcpp::traits::input_parameter< const double >::type eigmin(eigminSEXP);
    rcpp_result_gen = Rcpp::wrap(single_cheby_sparse(A, b, xinit, reltol, maxiter, M, eigmax, eigmin));
    return rcpp_result_gen;
END_RCPP
}
// single_gmres
Rcpp::List single_gmres(const arma::mat& A, const arma::colvec& b, arma::colvec& xinit, const double reltol, const int maxiter, arma::mat& M, const int restrt);
RcppExport SEXP _Rlinsolve_single_gmres(SEXP ASEXP, SEXP bSEXP, SEXP xinitSEXP, SEXP reltolSEXP, SEXP maxiterSEXP, SEXP MSEXP, SEXP restrtSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::mat& >::type A(ASEXP);
    Rcpp::traits::input_parameter< const arma::colvec& >::type b(bSEXP);
    Rcpp::traits::input_parameter< arma::colvec& >::type xinit(xinitSEXP);
    Rcpp::traits::input_parameter< const double >::type reltol(reltolSEXP);
    Rcpp::traits::input_parameter< const int >::type maxiter(maxiterSEXP);
    Rcpp::traits::input_parameter< arma::mat& >::type M(MSEXP);
    Rcpp::traits::input_parameter< const int >::type restrt(restrtSEXP);
    rcpp_result_gen = Rcpp::wrap(single_gmres(A, b, xinit, reltol, maxiter, M, restrt));
    return rcpp_result_gen;
END_RCPP
}
// single_gmres_sparse
Rcpp::List single_gmres_sparse(const arma::sp_mat A, const arma::sp_mat b, arma::colvec& xinit, const double reltol, const int maxiter, arma::sp_mat M, const int restrt);
RcppExport SEXP _Rlinsolve_single_gmres_sparse(SEXP ASEXP, SEXP bSEXP, SEXP xinitSEXP, SEXP reltolSEXP, SEXP maxiterSEXP, SEXP MSEXP, SEXP restrtSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::sp_mat >::type A(ASEXP);
    Rcpp::traits::input_parameter< const arma::sp_mat >::type b(bSEXP);
    Rcpp::traits::input_parameter< arma::colvec& >::type xinit(xinitSEXP);
    Rcpp::traits::input_parameter< const double >::type reltol(reltolSEXP);
    Rcpp::traits::input_parameter< const int >::type maxiter(maxiterSEXP);
    Rcpp::traits::input_parameter< arma::sp_mat >::type M(MSEXP);
    Rcpp::traits::input_parameter< const int >::type restrt(restrtSEXP);
    rcpp_result_gen = Rcpp::wrap(single_gmres_sparse(A, b, xinit, reltol, maxiter, M, restrt));
    return rcpp_result_gen;
END_RCPP
}
// single_qmr
Rcpp::List single_qmr(const arma::mat& A, const arma::colvec& b, arma::colvec& xinit, const double reltol, const int maxiter, const arma::mat& M);
RcppExport SEXP _Rlinsolve_single_qmr(SEXP ASEXP, SEXP bSEXP, SEXP xinitSEXP, SEXP reltolSEXP, SEXP maxiterSEXP, SEXP MSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::mat& >::type A(ASEXP);
    Rcpp::traits::input_parameter< const arma::colvec& >::type b(bSEXP);
    Rcpp::traits::input_parameter< arma::colvec& >::type xinit(xinitSEXP);
    Rcpp::traits::input_parameter< const double >::type reltol(reltolSEXP);
    Rcpp::traits::input_parameter< const int >::type maxiter(maxiterSEXP);
    Rcpp::traits::input_parameter< const arma::mat& >::type M(MSEXP);
    rcpp_result_gen = Rcpp::wrap(single_qmr(A, b, xinit, reltol, maxiter, M));
    return rcpp_result_gen;
END_RCPP
}
// single_qmr_sparse
Rcpp::List single_qmr_sparse(const arma::sp_mat A, const arma::sp_mat b, arma::colvec& xinit, const double reltol, const int maxiter, const arma::sp_mat M, const arma::sp_mat M1, const arma::sp_mat M2);
RcppExport SEXP _Rlinsolve_single_qmr_sparse(SEXP ASEXP, SEXP bSEXP, SEXP xinitSEXP, SEXP reltolSEXP, SEXP maxiterSEXP, SEXP MSEXP, SEXP M1SEXP, SEXP M2SEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::sp_mat >::type A(ASEXP);
    Rcpp::traits::input_parameter< const arma::sp_mat >::type b(bSEXP);
    Rcpp::traits::input_parameter< arma::colvec& >::type xinit(xinitSEXP);
    Rcpp::traits::input_parameter< const double >::type reltol(reltolSEXP);
    Rcpp::traits::input_parameter< const int >::type maxiter(maxiterSEXP);
    Rcpp::traits::input_parameter< const arma::sp_mat >::type M(MSEXP);
    Rcpp::traits::input_parameter< const arma::sp_mat >::type M1(M1SEXP);
    Rcpp::traits::input_parameter< const arma::sp_mat >::type M2(M2SEXP);
    rcpp_result_gen = Rcpp::wrap(single_qmr_sparse(A, b, xinit, reltol, maxiter, M, M1, M2));
    return rcpp_result_gen;
END_RCPP
}
// single_gs
Rcpp::List single_gs(const arma::mat& A, const arma::colvec& b, arma::colvec& xinit, const double reltol, const int maxiter, const int dflagval);
RcppExport SEXP _Rlinsolve_single_gs(SEXP ASEXP, SEXP bSEXP, SEXP xinitSEXP, SEXP reltolSEXP, SEXP maxiterSEXP, SEXP dflagvalSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::mat& >::type A(ASEXP);
    Rcpp::traits::input_parameter< const arma::colvec& >::type b(bSEXP);
    Rcpp::traits::input_parameter< arma::colvec& >::type xinit(xinitSEXP);
    Rcpp::traits::input_parameter< const double >::type reltol(reltolSEXP);
    Rcpp::traits::input_parameter< const int >::type maxiter(maxiterSEXP);
    Rcpp::traits::input_parameter< const int >::type dflagval(dflagvalSEXP);
    rcpp_result_gen = Rcpp::wrap(single_gs(A, b, xinit, reltol, maxiter, dflagval));
    return rcpp_result_gen;
END_RCPP
}
// single_gs_sparse
Rcpp::List single_gs_sparse(const arma::sp_mat A, const arma::sp_mat b, arma::colvec& xinit, const double reltol, const int maxiter, const int dflagval);
RcppExport SEXP _Rlinsolve_single_gs_sparse(SEXP ASEXP, SEXP bSEXP, SEXP xinitSEXP, SEXP reltolSEXP, SEXP maxiterSEXP, SEXP dflagvalSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::sp_mat >::type A(ASEXP);
    Rcpp::traits::input_parameter< const arma::sp_mat >::type b(bSEXP);
    Rcpp::traits::input_parameter< arma::colvec& >::type xinit(xinitSEXP);
    Rcpp::traits::input_parameter< const double >::type reltol(reltolSEXP);
    Rcpp::traits::input_parameter< const int >::type maxiter(maxiterSEXP);
    Rcpp::traits::input_parameter< const int >::type dflagval(dflagvalSEXP);
    rcpp_result_gen = Rcpp::wrap(single_gs_sparse(A, b, xinit, reltol, maxiter, dflagval));
    return rcpp_result_gen;
END_RCPP
}
// single_jacobi
Rcpp::List single_jacobi(const arma::mat& A, const arma::colvec& b, arma::colvec& xinit, const double reltol, const int maxiter, const double weight);
RcppExport SEXP _Rlinsolve_single_jacobi(SEXP ASEXP, SEXP bSEXP, SEXP xinitSEXP, SEXP reltolSEXP, SEXP maxiterSEXP, SEXP weightSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::mat& >::type A(ASEXP);
    Rcpp::traits::input_parameter< const arma::colvec& >::type b(bSEXP);
    Rcpp::traits::input_parameter< arma::colvec& >::type xinit(xinitSEXP);
    Rcpp::traits::input_parameter< const double >::type reltol(reltolSEXP);
    Rcpp::traits::input_parameter< const int >::type maxiter(maxiterSEXP);
    Rcpp::traits::input_parameter< const double >::type weight(weightSEXP);
    rcpp_result_gen = Rcpp::wrap(single_jacobi(A, b, xinit, reltol, maxiter, weight));
    return rcpp_result_gen;
END_RCPP
}
// single_jacobi_sparse
Rcpp::List single_jacobi_sparse(const arma::sp_mat A, const arma::sp_mat b, arma::colvec& xinit, const double reltol, const int maxiter, const double weight);
RcppExport SEXP _Rlinsolve_single_jacobi_sparse(SEXP ASEXP, SEXP bSEXP, SEXP xinitSEXP, SEXP reltolSEXP, SEXP maxiterSEXP, SEXP weightSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::sp_mat >::type A(ASEXP);
    Rcpp::traits::input_parameter< const arma::sp_mat >::type b(bSEXP);
    Rcpp::traits::input_parameter< arma::colvec& >::type xinit(xinitSEXP);
    Rcpp::traits::input_parameter< const double >::type reltol(reltolSEXP);
    Rcpp::traits::input_parameter< const int >::type maxiter(maxiterSEXP);
    Rcpp::traits::input_parameter< const double >::type weight(weightSEXP);
    rcpp_result_gen = Rcpp::wrap(single_jacobi_sparse(A, b, xinit, reltol, maxiter, weight));
    return rcpp_result_gen;
END_RCPP
}
// single_sor
Rcpp::List single_sor(const arma::mat& A, const arma::colvec& b, arma::colvec& xinit, const double reltol, const int maxiter, const double w);
RcppExport SEXP _Rlinsolve_single_sor(SEXP ASEXP, SEXP bSEXP, SEXP xinitSEXP, SEXP reltolSEXP, SEXP maxiterSEXP, SEXP wSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::mat& >::type A(ASEXP);
    Rcpp::traits::input_parameter< const arma::colvec& >::type b(bSEXP);
    Rcpp::traits::input_parameter< arma::colvec& >::type xinit(xinitSEXP);
    Rcpp::traits::input_parameter< const double >::type reltol(reltolSEXP);
    Rcpp::traits::input_parameter< const int >::type maxiter(maxiterSEXP);
    Rcpp::traits::input_parameter< const double >::type w(wSEXP);
    rcpp_result_gen = Rcpp::wrap(single_sor(A, b, xinit, reltol, maxiter, w));
    return rcpp_result_gen;
END_RCPP
}
// single_sor_sparse
Rcpp::List single_sor_sparse(const arma::sp_mat A, const arma::sp_mat b, arma::colvec& xinit, const double reltol, const int maxiter, const double w);
RcppExport SEXP _Rlinsolve_single_sor_sparse(SEXP ASEXP, SEXP bSEXP, SEXP xinitSEXP, SEXP reltolSEXP, SEXP maxiterSEXP, SEXP wSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::sp_mat >::type A(ASEXP);
    Rcpp::traits::input_parameter< const arma::sp_mat >::type b(bSEXP);
    Rcpp::traits::input_parameter< arma::colvec& >::type xinit(xinitSEXP);
    Rcpp::traits::input_parameter< const double >::type reltol(reltolSEXP);
    Rcpp::traits::input_parameter< const int >::type maxiter(maxiterSEXP);
    Rcpp::traits::input_parameter< const double >::type w(wSEXP);
    rcpp_result_gen = Rcpp::wrap(single_sor_sparse(A, b, xinit, reltol, maxiter, w));
    return rcpp_result_gen;
END_RCPP
}
// single_ssor
Rcpp::List single_ssor(const arma::mat& A, const arma::colvec& b, arma::colvec& xinit, const double reltol, const int maxiter, const double w);
RcppExport SEXP _Rlinsolve_single_ssor(SEXP ASEXP, SEXP bSEXP, SEXP xinitSEXP, SEXP reltolSEXP, SEXP maxiterSEXP, SEXP wSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::mat& >::type A(ASEXP);
    Rcpp::traits::input_parameter< const arma::colvec& >::type b(bSEXP);
    Rcpp::traits::input_parameter< arma::colvec& >::type xinit(xinitSEXP);
    Rcpp::traits::input_parameter< const double >::type reltol(reltolSEXP);
    Rcpp::traits::input_parameter< const int >::type maxiter(maxiterSEXP);
    Rcpp::traits::input_parameter< const double >::type w(wSEXP);
    rcpp_result_gen = Rcpp::wrap(single_ssor(A, b, xinit, reltol, maxiter, w));
    return rcpp_result_gen;
END_RCPP
}
// single_ssor_sparse
Rcpp::List single_ssor_sparse(const arma::sp_mat A, const arma::sp_mat b, arma::colvec& xinit, const double reltol, const int maxiter, const double w);
RcppExport SEXP _Rlinsolve_single_ssor_sparse(SEXP ASEXP, SEXP bSEXP, SEXP xinitSEXP, SEXP reltolSEXP, SEXP maxiterSEXP, SEXP wSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::sp_mat >::type A(ASEXP);
    Rcpp::traits::input_parameter< const arma::sp_mat >::type b(bSEXP);
    Rcpp::traits::input_parameter< arma::colvec& >::type xinit(xinitSEXP);
    Rcpp::traits::input_parameter< const double >::type reltol(reltolSEXP);
    Rcpp::traits::input_parameter< const int >::type maxiter(maxiterSEXP);
    Rcpp::traits::input_parameter< const double >::type w(wSEXP);
    rcpp_result_gen = Rcpp::wrap(single_ssor_sparse(A, b, xinit, reltol, maxiter, w));
    return rcpp_result_gen;
END_RCPP
}

static const R_CallMethodDef CallEntries[] = {
    {"_Rlinsolve_single_bicg", (DL_FUNC) &_Rlinsolve_single_bicg, 6},
    {"_Rlinsolve_single_bicg_sparse", (DL_FUNC) &_Rlinsolve_single_bicg_sparse, 6},
    {"_Rlinsolve_single_bicgstab", (DL_FUNC) &_Rlinsolve_single_bicgstab, 6},
    {"_Rlinsolve_single_bicgstab_sparse", (DL_FUNC) &_Rlinsolve_single_bicgstab_sparse, 6},
    {"_Rlinsolve_single_cg", (DL_FUNC) &_Rlinsolve_single_cg, 6},
    {"_Rlinsolve_single_cg_sparse", (DL_FUNC) &_Rlinsolve_single_cg_sparse, 6},
    {"_Rlinsolve_single_cgs", (DL_FUNC) &_Rlinsolve_single_cgs, 6},
    {"_Rlinsolve_single_cgs_sparse", (DL_FUNC) &_Rlinsolve_single_cgs_sparse, 6},
    {"_Rlinsolve_single_cheby", (DL_FUNC) &_Rlinsolve_single_cheby, 8},
    {"_Rlinsolve_single_cheby_sparse", (DL_FUNC) &_Rlinsolve_single_cheby_sparse, 8},
    {"_Rlinsolve_single_gmres", (DL_FUNC) &_Rlinsolve_single_gmres, 7},
    {"_Rlinsolve_single_gmres_sparse", (DL_FUNC) &_Rlinsolve_single_gmres_sparse, 7},
    {"_Rlinsolve_single_qmr", (DL_FUNC) &_Rlinsolve_single_qmr, 6},
    {"_Rlinsolve_single_qmr_sparse", (DL_FUNC) &_Rlinsolve_single_qmr_sparse, 8},
    {"_Rlinsolve_single_gs", (DL_FUNC) &_Rlinsolve_single_gs, 6},
    {"_Rlinsolve_single_gs_sparse", (DL_FUNC) &_Rlinsolve_single_gs_sparse, 6},
    {"_Rlinsolve_single_jacobi", (DL_FUNC) &_Rlinsolve_single_jacobi, 6},
    {"_Rlinsolve_single_jacobi_sparse", (DL_FUNC) &_Rlinsolve_single_jacobi_sparse, 6},
    {"_Rlinsolve_single_sor", (DL_FUNC) &_Rlinsolve_single_sor, 6},
    {"_Rlinsolve_single_sor_sparse", (DL_FUNC) &_Rlinsolve_single_sor_sparse, 6},
    {"_Rlinsolve_single_ssor", (DL_FUNC) &_Rlinsolve_single_ssor, 6},
    {"_Rlinsolve_single_ssor_sparse", (DL_FUNC) &_Rlinsolve_single_ssor_sparse, 6},
    {NULL, NULL, 0}
};

RcppExport void R_init_Rlinsolve(DllInfo *dll) {
    R_registerRoutines(dll, NULL, CallEntries, NULL, NULL);
    R_useDynamicSymbols(dll, FALSE);
}
