// 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

// cvode
NumericMatrix cvode(NumericVector time_vector, NumericVector IC, SEXP input_function, NumericVector Parameters, double reltolerance, NumericVector abstolerance);
RcppExport SEXP _sundialr_cvode(SEXP time_vectorSEXP, SEXP ICSEXP, SEXP input_functionSEXP, SEXP ParametersSEXP, SEXP reltoleranceSEXP, SEXP abstoleranceSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type time_vector(time_vectorSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type IC(ICSEXP);
    Rcpp::traits::input_parameter< SEXP >::type input_function(input_functionSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Parameters(ParametersSEXP);
    Rcpp::traits::input_parameter< double >::type reltolerance(reltoleranceSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type abstolerance(abstoleranceSEXP);
    rcpp_result_gen = Rcpp::wrap(cvode(time_vector, IC, input_function, Parameters, reltolerance, abstolerance));
    return rcpp_result_gen;
END_RCPP
}
// cvodes
NumericMatrix cvodes(NumericVector time_vector, NumericVector IC, SEXP input_function, NumericVector Parameters, double reltolerance, NumericVector abstolerance, std::string SensType, bool ErrCon);
RcppExport SEXP _sundialr_cvodes(SEXP time_vectorSEXP, SEXP ICSEXP, SEXP input_functionSEXP, SEXP ParametersSEXP, SEXP reltoleranceSEXP, SEXP abstoleranceSEXP, SEXP SensTypeSEXP, SEXP ErrConSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type time_vector(time_vectorSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type IC(ICSEXP);
    Rcpp::traits::input_parameter< SEXP >::type input_function(input_functionSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Parameters(ParametersSEXP);
    Rcpp::traits::input_parameter< double >::type reltolerance(reltoleranceSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type abstolerance(abstoleranceSEXP);
    Rcpp::traits::input_parameter< std::string >::type SensType(SensTypeSEXP);
    Rcpp::traits::input_parameter< bool >::type ErrCon(ErrConSEXP);
    rcpp_result_gen = Rcpp::wrap(cvodes(time_vector, IC, input_function, Parameters, reltolerance, abstolerance, SensType, ErrCon));
    return rcpp_result_gen;
END_RCPP
}
// cvsolve
NumericMatrix cvsolve(NumericVector time_vector, NumericVector IC, SEXP input_function, NumericVector Parameters, Nullable<DataFrame> Events, double reltolerance, NumericVector abstolerance);
RcppExport SEXP _sundialr_cvsolve(SEXP time_vectorSEXP, SEXP ICSEXP, SEXP input_functionSEXP, SEXP ParametersSEXP, SEXP EventsSEXP, SEXP reltoleranceSEXP, SEXP abstoleranceSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type time_vector(time_vectorSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type IC(ICSEXP);
    Rcpp::traits::input_parameter< SEXP >::type input_function(input_functionSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Parameters(ParametersSEXP);
    Rcpp::traits::input_parameter< Nullable<DataFrame> >::type Events(EventsSEXP);
    Rcpp::traits::input_parameter< double >::type reltolerance(reltoleranceSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type abstolerance(abstoleranceSEXP);
    rcpp_result_gen = Rcpp::wrap(cvsolve(time_vector, IC, input_function, Parameters, Events, reltolerance, abstolerance));
    return rcpp_result_gen;
END_RCPP
}
// ida
NumericMatrix ida(NumericVector time_vector, NumericVector IC, NumericVector IRes, SEXP input_function, NumericVector Parameters, double reltolerance, NumericVector abstolerance);
RcppExport SEXP _sundialr_ida(SEXP time_vectorSEXP, SEXP ICSEXP, SEXP IResSEXP, SEXP input_functionSEXP, SEXP ParametersSEXP, SEXP reltoleranceSEXP, SEXP abstoleranceSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type time_vector(time_vectorSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type IC(ICSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type IRes(IResSEXP);
    Rcpp::traits::input_parameter< SEXP >::type input_function(input_functionSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Parameters(ParametersSEXP);
    Rcpp::traits::input_parameter< double >::type reltolerance(reltoleranceSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type abstolerance(abstoleranceSEXP);
    rcpp_result_gen = Rcpp::wrap(ida(time_vector, IC, IRes, input_function, Parameters, reltolerance, abstolerance));
    return rcpp_result_gen;
END_RCPP
}

static const R_CallMethodDef CallEntries[] = {
    {"_sundialr_cvode", (DL_FUNC) &_sundialr_cvode, 6},
    {"_sundialr_cvodes", (DL_FUNC) &_sundialr_cvodes, 8},
    {"_sundialr_cvsolve", (DL_FUNC) &_sundialr_cvsolve, 7},
    {"_sundialr_ida", (DL_FUNC) &_sundialr_ida, 7},
    {NULL, NULL, 0}
};

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