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

#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

// Ckmeans_1d_dp
List Ckmeans_1d_dp(const NumericVector& x, const size_t length, const NumericVector& y, const size_t ylength, const size_t minK, const size_t maxK, IntegerVector& cluster, NumericVector& centers, NumericVector& withinss, NumericVector& size, NumericVector& BICs, const std::string& estimate_k, const std::string& method);
RcppExport SEXP _Ckmeans_1d_dp_Ckmeans_1d_dp(SEXP xSEXP, SEXP lengthSEXP, SEXP ySEXP, SEXP ylengthSEXP, SEXP minKSEXP, SEXP maxKSEXP, SEXP clusterSEXP, SEXP centersSEXP, SEXP withinssSEXP, SEXP sizeSEXP, SEXP BICsSEXP, SEXP estimate_kSEXP, SEXP methodSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const NumericVector& >::type x(xSEXP);
    Rcpp::traits::input_parameter< const size_t >::type length(lengthSEXP);
    Rcpp::traits::input_parameter< const NumericVector& >::type y(ySEXP);
    Rcpp::traits::input_parameter< const size_t >::type ylength(ylengthSEXP);
    Rcpp::traits::input_parameter< const size_t >::type minK(minKSEXP);
    Rcpp::traits::input_parameter< const size_t >::type maxK(maxKSEXP);
    Rcpp::traits::input_parameter< IntegerVector& >::type cluster(clusterSEXP);
    Rcpp::traits::input_parameter< NumericVector& >::type centers(centersSEXP);
    Rcpp::traits::input_parameter< NumericVector& >::type withinss(withinssSEXP);
    Rcpp::traits::input_parameter< NumericVector& >::type size(sizeSEXP);
    Rcpp::traits::input_parameter< NumericVector& >::type BICs(BICsSEXP);
    Rcpp::traits::input_parameter< const std::string& >::type estimate_k(estimate_kSEXP);
    Rcpp::traits::input_parameter< const std::string& >::type method(methodSEXP);
    rcpp_result_gen = Rcpp::wrap(Ckmeans_1d_dp(x, length, y, ylength, minK, maxK, cluster, centers, withinss, size, BICs, estimate_k, method));
    return rcpp_result_gen;
END_RCPP
}
// Ckmedian_1d_dp
List Ckmedian_1d_dp(const NumericVector& x, const size_t length, const NumericVector& y, const size_t ylength, const size_t minK, const size_t maxK, IntegerVector& cluster, NumericVector& centers, NumericVector& withinss, NumericVector& size, NumericVector& BICs, const std::string& estimate_k, const std::string& method);
RcppExport SEXP _Ckmeans_1d_dp_Ckmedian_1d_dp(SEXP xSEXP, SEXP lengthSEXP, SEXP ySEXP, SEXP ylengthSEXP, SEXP minKSEXP, SEXP maxKSEXP, SEXP clusterSEXP, SEXP centersSEXP, SEXP withinssSEXP, SEXP sizeSEXP, SEXP BICsSEXP, SEXP estimate_kSEXP, SEXP methodSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const NumericVector& >::type x(xSEXP);
    Rcpp::traits::input_parameter< const size_t >::type length(lengthSEXP);
    Rcpp::traits::input_parameter< const NumericVector& >::type y(ySEXP);
    Rcpp::traits::input_parameter< const size_t >::type ylength(ylengthSEXP);
    Rcpp::traits::input_parameter< const size_t >::type minK(minKSEXP);
    Rcpp::traits::input_parameter< const size_t >::type maxK(maxKSEXP);
    Rcpp::traits::input_parameter< IntegerVector& >::type cluster(clusterSEXP);
    Rcpp::traits::input_parameter< NumericVector& >::type centers(centersSEXP);
    Rcpp::traits::input_parameter< NumericVector& >::type withinss(withinssSEXP);
    Rcpp::traits::input_parameter< NumericVector& >::type size(sizeSEXP);
    Rcpp::traits::input_parameter< NumericVector& >::type BICs(BICsSEXP);
    Rcpp::traits::input_parameter< const std::string& >::type estimate_k(estimate_kSEXP);
    Rcpp::traits::input_parameter< const std::string& >::type method(methodSEXP);
    rcpp_result_gen = Rcpp::wrap(Ckmedian_1d_dp(x, length, y, ylength, minK, maxK, cluster, centers, withinss, size, BICs, estimate_k, method));
    return rcpp_result_gen;
END_RCPP
}
// Cksegs_1d_dp
List Cksegs_1d_dp(const NumericVector& x, const size_t length, const NumericVector& y, const size_t ylength, const size_t minK, const size_t maxK, IntegerVector& cluster, NumericVector& centers, NumericVector& withinss, NumericVector& size, NumericVector& BICs, const std::string& estimate_k, const std::string& method);
RcppExport SEXP _Ckmeans_1d_dp_Cksegs_1d_dp(SEXP xSEXP, SEXP lengthSEXP, SEXP ySEXP, SEXP ylengthSEXP, SEXP minKSEXP, SEXP maxKSEXP, SEXP clusterSEXP, SEXP centersSEXP, SEXP withinssSEXP, SEXP sizeSEXP, SEXP BICsSEXP, SEXP estimate_kSEXP, SEXP methodSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const NumericVector& >::type x(xSEXP);
    Rcpp::traits::input_parameter< const size_t >::type length(lengthSEXP);
    Rcpp::traits::input_parameter< const NumericVector& >::type y(ySEXP);
    Rcpp::traits::input_parameter< const size_t >::type ylength(ylengthSEXP);
    Rcpp::traits::input_parameter< const size_t >::type minK(minKSEXP);
    Rcpp::traits::input_parameter< const size_t >::type maxK(maxKSEXP);
    Rcpp::traits::input_parameter< IntegerVector& >::type cluster(clusterSEXP);
    Rcpp::traits::input_parameter< NumericVector& >::type centers(centersSEXP);
    Rcpp::traits::input_parameter< NumericVector& >::type withinss(withinssSEXP);
    Rcpp::traits::input_parameter< NumericVector& >::type size(sizeSEXP);
    Rcpp::traits::input_parameter< NumericVector& >::type BICs(BICsSEXP);
    Rcpp::traits::input_parameter< const std::string& >::type estimate_k(estimate_kSEXP);
    Rcpp::traits::input_parameter< const std::string& >::type method(methodSEXP);
    rcpp_result_gen = Rcpp::wrap(Cksegs_1d_dp(x, length, y, ylength, minK, maxK, cluster, centers, withinss, size, BICs, estimate_k, method));
    return rcpp_result_gen;
END_RCPP
}
// MCW_main
List MCW_main(const NumericVector& x, const NumericMatrix& y, size_t Kmin, size_t Kmax, const std::string estimate_k, const std::string method);
RcppExport SEXP _Ckmeans_1d_dp_MCW_main(SEXP xSEXP, SEXP ySEXP, SEXP KminSEXP, SEXP KmaxSEXP, SEXP estimate_kSEXP, SEXP methodSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const NumericVector& >::type x(xSEXP);
    Rcpp::traits::input_parameter< const NumericMatrix& >::type y(ySEXP);
    Rcpp::traits::input_parameter< size_t >::type Kmin(KminSEXP);
    Rcpp::traits::input_parameter< size_t >::type Kmax(KmaxSEXP);
    Rcpp::traits::input_parameter< const std::string >::type estimate_k(estimate_kSEXP);
    Rcpp::traits::input_parameter< const std::string >::type method(methodSEXP);
    rcpp_result_gen = Rcpp::wrap(MCW_main(x, y, Kmin, Kmax, estimate_k, method));
    return rcpp_result_gen;
END_RCPP
}

static const R_CallMethodDef CallEntries[] = {
    {"_Ckmeans_1d_dp_Ckmeans_1d_dp", (DL_FUNC) &_Ckmeans_1d_dp_Ckmeans_1d_dp, 13},
    {"_Ckmeans_1d_dp_Ckmedian_1d_dp", (DL_FUNC) &_Ckmeans_1d_dp_Ckmedian_1d_dp, 13},
    {"_Ckmeans_1d_dp_Cksegs_1d_dp", (DL_FUNC) &_Ckmeans_1d_dp_Cksegs_1d_dp, 13},
    {"_Ckmeans_1d_dp_MCW_main", (DL_FUNC) &_Ckmeans_1d_dp_MCW_main, 6},
    {NULL, NULL, 0}
};

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