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

// sparse_k_means
List sparse_k_means(NumericMatrix X, const unsigned int k, const double reg, const bool no_zero, const unsigned long seed_off_set);
RcppExport SEXP _DepecheR_sparse_k_means(SEXP XSEXP, SEXP kSEXP, SEXP regSEXP, SEXP no_zeroSEXP, SEXP seed_off_setSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericMatrix >::type X(XSEXP);
    Rcpp::traits::input_parameter< const unsigned int >::type k(kSEXP);
    Rcpp::traits::input_parameter< const double >::type reg(regSEXP);
    Rcpp::traits::input_parameter< const bool >::type no_zero(no_zeroSEXP);
    Rcpp::traits::input_parameter< const unsigned long >::type seed_off_set(seed_off_setSEXP);
    rcpp_result_gen = Rcpp::wrap(sparse_k_means(X, k, reg, no_zero, seed_off_set));
    return rcpp_result_gen;
END_RCPP
}
// grid_search
List grid_search(NumericMatrix X, IntegerVector k, NumericVector reg, const unsigned int iterations, const unsigned int bootstrapSamples, const unsigned long seed_off_set);
RcppExport SEXP _DepecheR_grid_search(SEXP XSEXP, SEXP kSEXP, SEXP regSEXP, SEXP iterationsSEXP, SEXP bootstrapSamplesSEXP, SEXP seed_off_setSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericMatrix >::type X(XSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type k(kSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type reg(regSEXP);
    Rcpp::traits::input_parameter< const unsigned int >::type iterations(iterationsSEXP);
    Rcpp::traits::input_parameter< const unsigned int >::type bootstrapSamples(bootstrapSamplesSEXP);
    Rcpp::traits::input_parameter< const unsigned long >::type seed_off_set(seed_off_setSEXP);
    rcpp_result_gen = Rcpp::wrap(grid_search(X, k, reg, iterations, bootstrapSamples, seed_off_set));
    return rcpp_result_gen;
END_RCPP
}
// allocate_points
List allocate_points(NumericMatrix X, NumericMatrix mu, const bool no_zero);
RcppExport SEXP _DepecheR_allocate_points(SEXP XSEXP, SEXP muSEXP, SEXP no_zeroSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericMatrix >::type X(XSEXP);
    Rcpp::traits::input_parameter< NumericMatrix >::type mu(muSEXP);
    Rcpp::traits::input_parameter< const bool >::type no_zero(no_zeroSEXP);
    rcpp_result_gen = Rcpp::wrap(allocate_points(X, mu, no_zero));
    return rcpp_result_gen;
END_RCPP
}
// rand_index
const double rand_index(IntegerVector inds1, IntegerVector inds2, unsigned int k);
RcppExport SEXP _DepecheR_rand_index(SEXP inds1SEXP, SEXP inds2SEXP, SEXP kSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< IntegerVector >::type inds1(inds1SEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type inds2(inds2SEXP);
    Rcpp::traits::input_parameter< unsigned int >::type k(kSEXP);
    rcpp_result_gen = Rcpp::wrap(rand_index(inds1, inds2, k));
    return rcpp_result_gen;
END_RCPP
}

static const R_CallMethodDef CallEntries[] = {
    {"_DepecheR_sparse_k_means", (DL_FUNC) &_DepecheR_sparse_k_means, 5},
    {"_DepecheR_grid_search", (DL_FUNC) &_DepecheR_grid_search, 6},
    {"_DepecheR_allocate_points", (DL_FUNC) &_DepecheR_allocate_points, 3},
    {"_DepecheR_rand_index", (DL_FUNC) &_DepecheR_rand_index, 3},
    {NULL, NULL, 0}
};

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