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

#include <RcppEigen.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

// rcpp_distance
NumericMatrix rcpp_distance(NumericMatrix l, int m, int N);
RcppExport SEXP _FastGP_rcpp_distance(SEXP lSEXP, SEXP mSEXP, SEXP NSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericMatrix >::type l(lSEXP);
    Rcpp::traits::input_parameter< int >::type m(mSEXP);
    Rcpp::traits::input_parameter< int >::type N(NSEXP);
    rcpp_result_gen = Rcpp::wrap(rcpp_distance(l, m, N));
    return rcpp_result_gen;
END_RCPP
}
// durbin
NumericVector durbin(NumericVector r, int N);
RcppExport SEXP _FastGP_durbin(SEXP rSEXP, SEXP NSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type r(rSEXP);
    Rcpp::traits::input_parameter< int >::type N(NSEXP);
    rcpp_result_gen = Rcpp::wrap(durbin(r, N));
    return rcpp_result_gen;
END_RCPP
}
// trench
NumericVector trench(NumericVector r, NumericVector y, int N);
RcppExport SEXP _FastGP_trench(SEXP rSEXP, SEXP ySEXP, SEXP NSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type r(rSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type y(ySEXP);
    Rcpp::traits::input_parameter< int >::type N(NSEXP);
    rcpp_result_gen = Rcpp::wrap(trench(r, y, N));
    return rcpp_result_gen;
END_RCPP
}
// rcppeigen_invert_matrix
Eigen::MatrixXd rcppeigen_invert_matrix(const Eigen::Map<Eigen::MatrixXd>& A);
RcppExport SEXP _FastGP_rcppeigen_invert_matrix(SEXP ASEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const Eigen::Map<Eigen::MatrixXd>& >::type A(ASEXP);
    rcpp_result_gen = Rcpp::wrap(rcppeigen_invert_matrix(A));
    return rcpp_result_gen;
END_RCPP
}
// rcppeigen_get_diag
Eigen::MatrixXd rcppeigen_get_diag(const Eigen::Map<Eigen::MatrixXd>& A);
RcppExport SEXP _FastGP_rcppeigen_get_diag(SEXP ASEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const Eigen::Map<Eigen::MatrixXd>& >::type A(ASEXP);
    rcpp_result_gen = Rcpp::wrap(rcppeigen_get_diag(A));
    return rcpp_result_gen;
END_RCPP
}
// rcppeigen_get_det
double rcppeigen_get_det(const Eigen::Map<Eigen::MatrixXd>& A);
RcppExport SEXP _FastGP_rcppeigen_get_det(SEXP ASEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const Eigen::Map<Eigen::MatrixXd>& >::type A(ASEXP);
    rcpp_result_gen = Rcpp::wrap(rcppeigen_get_det(A));
    return rcpp_result_gen;
END_RCPP
}
// rcppeigen_get_chol
Eigen::MatrixXd rcppeigen_get_chol(const Eigen::Map<Eigen::MatrixXd>& A);
RcppExport SEXP _FastGP_rcppeigen_get_chol(SEXP ASEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const Eigen::Map<Eigen::MatrixXd>& >::type A(ASEXP);
    rcpp_result_gen = Rcpp::wrap(rcppeigen_get_chol(A));
    return rcpp_result_gen;
END_RCPP
}
// rcppeigen_get_chol_stable
Eigen::MatrixXd rcppeigen_get_chol_stable(const Eigen::Map<Eigen::MatrixXd>& A);
RcppExport SEXP _FastGP_rcppeigen_get_chol_stable(SEXP ASEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const Eigen::Map<Eigen::MatrixXd>& >::type A(ASEXP);
    rcpp_result_gen = Rcpp::wrap(rcppeigen_get_chol_stable(A));
    return rcpp_result_gen;
END_RCPP
}
// rcppeigen_get_chol_diag
Eigen::VectorXd rcppeigen_get_chol_diag(const Eigen::Map<Eigen::MatrixXd>& A);
RcppExport SEXP _FastGP_rcppeigen_get_chol_diag(SEXP ASEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const Eigen::Map<Eigen::MatrixXd>& >::type A(ASEXP);
    rcpp_result_gen = Rcpp::wrap(rcppeigen_get_chol_diag(A));
    return rcpp_result_gen;
END_RCPP
}

static const R_CallMethodDef CallEntries[] = {
    {"_FastGP_rcpp_distance", (DL_FUNC) &_FastGP_rcpp_distance, 3},
    {"_FastGP_durbin", (DL_FUNC) &_FastGP_durbin, 2},
    {"_FastGP_trench", (DL_FUNC) &_FastGP_trench, 3},
    {"_FastGP_rcppeigen_invert_matrix", (DL_FUNC) &_FastGP_rcppeigen_invert_matrix, 1},
    {"_FastGP_rcppeigen_get_diag", (DL_FUNC) &_FastGP_rcppeigen_get_diag, 1},
    {"_FastGP_rcppeigen_get_det", (DL_FUNC) &_FastGP_rcppeigen_get_det, 1},
    {"_FastGP_rcppeigen_get_chol", (DL_FUNC) &_FastGP_rcppeigen_get_chol, 1},
    {"_FastGP_rcppeigen_get_chol_stable", (DL_FUNC) &_FastGP_rcppeigen_get_chol_stable, 1},
    {"_FastGP_rcppeigen_get_chol_diag", (DL_FUNC) &_FastGP_rcppeigen_get_chol_diag, 1},
    {NULL, NULL, 0}
};

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