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

// NNS_dep_pair_cpp
List NNS_dep_pair_cpp(NumericVector x, NumericVector y, CharacterVector quad_xy, CharacterVector quad_yx, bool asym);
RcppExport SEXP _NNS_NNS_dep_pair_cpp(SEXP xSEXP, SEXP ySEXP, SEXP quad_xySEXP, SEXP quad_yxSEXP, SEXP asymSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type x(xSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type y(ySEXP);
    Rcpp::traits::input_parameter< CharacterVector >::type quad_xy(quad_xySEXP);
    Rcpp::traits::input_parameter< CharacterVector >::type quad_yx(quad_yxSEXP);
    Rcpp::traits::input_parameter< bool >::type asym(asymSEXP);
    rcpp_result_gen = Rcpp::wrap(NNS_dep_pair_cpp(x, y, quad_xy, quad_yx, asym));
    return rcpp_result_gen;
END_RCPP
}
// NNS_dep_matrix_cpp
List NNS_dep_matrix_cpp(NumericMatrix X, bool asym);
RcppExport SEXP _NNS_NNS_dep_matrix_cpp(SEXP XSEXP, SEXP asymSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericMatrix >::type X(XSEXP);
    Rcpp::traits::input_parameter< bool >::type asym(asymSEXP);
    rcpp_result_gen = Rcpp::wrap(NNS_dep_matrix_cpp(X, asym));
    return rcpp_result_gen;
END_RCPP
}
// NNS_distance_cpp
SEXP NNS_distance_cpp(NumericMatrix X, NumericVector yhat, NumericVector dest, int k, bool use_class);
RcppExport SEXP _NNS_NNS_distance_cpp(SEXP XSEXP, SEXP yhatSEXP, SEXP destSEXP, SEXP kSEXP, SEXP use_classSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericMatrix >::type X(XSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type yhat(yhatSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type dest(destSEXP);
    Rcpp::traits::input_parameter< int >::type k(kSEXP);
    Rcpp::traits::input_parameter< bool >::type use_class(use_classSEXP);
    rcpp_result_gen = Rcpp::wrap(NNS_distance_cpp(X, yhat, dest, k, use_class));
    return rcpp_result_gen;
END_RCPP
}
// NNS_distance_path_cpp
Rcpp::NumericMatrix NNS_distance_path_cpp(const Rcpp::NumericMatrix& RPM, const Rcpp::NumericVector& yhat, const Rcpp::NumericMatrix& Xtest, int kmax, bool is_class);
RcppExport SEXP _NNS_NNS_distance_path_cpp(SEXP RPMSEXP, SEXP yhatSEXP, SEXP XtestSEXP, SEXP kmaxSEXP, SEXP is_classSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const Rcpp::NumericMatrix& >::type RPM(RPMSEXP);
    Rcpp::traits::input_parameter< const Rcpp::NumericVector& >::type yhat(yhatSEXP);
    Rcpp::traits::input_parameter< const Rcpp::NumericMatrix& >::type Xtest(XtestSEXP);
    Rcpp::traits::input_parameter< int >::type kmax(kmaxSEXP);
    Rcpp::traits::input_parameter< bool >::type is_class(is_classSEXP);
    rcpp_result_gen = Rcpp::wrap(NNS_distance_path_cpp(RPM, yhat, Xtest, kmax, is_class));
    return rcpp_result_gen;
END_RCPP
}
// NNS_distance_bulk_cpp
Rcpp::NumericVector NNS_distance_bulk_cpp(const Rcpp::NumericMatrix& RPM, const Rcpp::NumericVector& yhat, const Rcpp::NumericMatrix& Xtest, int k, bool is_class);
RcppExport SEXP _NNS_NNS_distance_bulk_cpp(SEXP RPMSEXP, SEXP yhatSEXP, SEXP XtestSEXP, SEXP kSEXP, SEXP is_classSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const Rcpp::NumericMatrix& >::type RPM(RPMSEXP);
    Rcpp::traits::input_parameter< const Rcpp::NumericVector& >::type yhat(yhatSEXP);
    Rcpp::traits::input_parameter< const Rcpp::NumericMatrix& >::type Xtest(XtestSEXP);
    Rcpp::traits::input_parameter< int >::type k(kSEXP);
    Rcpp::traits::input_parameter< bool >::type is_class(is_classSEXP);
    rcpp_result_gen = Rcpp::wrap(NNS_distance_bulk_cpp(RPM, yhat, Xtest, k, is_class));
    return rcpp_result_gen;
END_RCPP
}
// NNS_distance_path_parallel_cpp
NumericMatrix NNS_distance_path_parallel_cpp(NumericMatrix RPM, NumericVector yhat, NumericMatrix Xtest, int kmax, bool is_class, int nthreads);
RcppExport SEXP _NNS_NNS_distance_path_parallel_cpp(SEXP RPMSEXP, SEXP yhatSEXP, SEXP XtestSEXP, SEXP kmaxSEXP, SEXP is_classSEXP, SEXP nthreadsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericMatrix >::type RPM(RPMSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type yhat(yhatSEXP);
    Rcpp::traits::input_parameter< NumericMatrix >::type Xtest(XtestSEXP);
    Rcpp::traits::input_parameter< int >::type kmax(kmaxSEXP);
    Rcpp::traits::input_parameter< bool >::type is_class(is_classSEXP);
    Rcpp::traits::input_parameter< int >::type nthreads(nthreadsSEXP);
    rcpp_result_gen = Rcpp::wrap(NNS_distance_path_parallel_cpp(RPM, yhat, Xtest, kmax, is_class, nthreads));
    return rcpp_result_gen;
END_RCPP
}
// NNS_part_cpp
List NNS_part_cpp(NumericVector x, NumericVector y, Nullable<std::string> type, Nullable<int> order_in, int obs_req, bool min_obs_stop, std::string noise_reduction);
RcppExport SEXP _NNS_NNS_part_cpp(SEXP xSEXP, SEXP ySEXP, SEXP typeSEXP, SEXP order_inSEXP, SEXP obs_reqSEXP, SEXP min_obs_stopSEXP, SEXP noise_reductionSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type x(xSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type y(ySEXP);
    Rcpp::traits::input_parameter< Nullable<std::string> >::type type(typeSEXP);
    Rcpp::traits::input_parameter< Nullable<int> >::type order_in(order_inSEXP);
    Rcpp::traits::input_parameter< int >::type obs_req(obs_reqSEXP);
    Rcpp::traits::input_parameter< bool >::type min_obs_stop(min_obs_stopSEXP);
    Rcpp::traits::input_parameter< std::string >::type noise_reduction(noise_reductionSEXP);
    rcpp_result_gen = Rcpp::wrap(NNS_part_cpp(x, y, type, order_in, obs_req, min_obs_stop, noise_reduction));
    return rcpp_result_gen;
END_RCPP
}
// NNS_seas_cpp
Rcpp::List NNS_seas_cpp(NumericVector variable, Nullable<IntegerVector> modulo, bool mod_only);
RcppExport SEXP _NNS_NNS_seas_cpp(SEXP variableSEXP, SEXP moduloSEXP, SEXP mod_onlySEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type variable(variableSEXP);
    Rcpp::traits::input_parameter< Nullable<IntegerVector> >::type modulo(moduloSEXP);
    Rcpp::traits::input_parameter< bool >::type mod_only(mod_onlySEXP);
    rcpp_result_gen = Rcpp::wrap(NNS_seas_cpp(variable, modulo, mod_only));
    return rcpp_result_gen;
END_RCPP
}
// sd_dom_matrix_prefix_parallel
IntegerMatrix sd_dom_matrix_prefix_parallel(const NumericMatrix& X, int degree, std::string type);
RcppExport SEXP _NNS_sd_dom_matrix_prefix_parallel(SEXP XSEXP, SEXP degreeSEXP, SEXP typeSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const NumericMatrix& >::type X(XSEXP);
    Rcpp::traits::input_parameter< int >::type degree(degreeSEXP);
    Rcpp::traits::input_parameter< std::string >::type type(typeSEXP);
    rcpp_result_gen = Rcpp::wrap(sd_dom_matrix_prefix_parallel(X, degree, type));
    return rcpp_result_gen;
END_RCPP
}
// NNS_SD_efficient_set_parallel_cpp
CharacterVector NNS_SD_efficient_set_parallel_cpp(NumericMatrix X, int degree, std::string type, bool status);
RcppExport SEXP _NNS_NNS_SD_efficient_set_parallel_cpp(SEXP XSEXP, SEXP degreeSEXP, SEXP typeSEXP, SEXP statusSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericMatrix >::type X(XSEXP);
    Rcpp::traits::input_parameter< int >::type degree(degreeSEXP);
    Rcpp::traits::input_parameter< std::string >::type type(typeSEXP);
    Rcpp::traits::input_parameter< bool >::type status(statusSEXP);
    rcpp_result_gen = Rcpp::wrap(NNS_SD_efficient_set_parallel_cpp(X, degree, type, status));
    return rcpp_result_gen;
END_RCPP
}
// NNS_FSD_uni_cpp
int NNS_FSD_uni_cpp(const NumericVector& x, const NumericVector& y, std::string type);
RcppExport SEXP _NNS_NNS_FSD_uni_cpp(SEXP xSEXP, SEXP ySEXP, SEXP typeSEXP) {
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 NumericVector& >::type y(ySEXP);
    Rcpp::traits::input_parameter< std::string >::type type(typeSEXP);
    rcpp_result_gen = Rcpp::wrap(NNS_FSD_uni_cpp(x, y, type));
    return rcpp_result_gen;
END_RCPP
}
// NNS_SSD_uni_cpp
int NNS_SSD_uni_cpp(const NumericVector& x, const NumericVector& y);
RcppExport SEXP _NNS_NNS_SSD_uni_cpp(SEXP xSEXP, SEXP ySEXP) {
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 NumericVector& >::type y(ySEXP);
    rcpp_result_gen = Rcpp::wrap(NNS_SSD_uni_cpp(x, y));
    return rcpp_result_gen;
END_RCPP
}
// NNS_TSD_uni_cpp
int NNS_TSD_uni_cpp(const NumericVector& x, const NumericVector& y);
RcppExport SEXP _NNS_NNS_TSD_uni_cpp(SEXP xSEXP, SEXP ySEXP) {
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 NumericVector& >::type y(ySEXP);
    rcpp_result_gen = Rcpp::wrap(NNS_TSD_uni_cpp(x, y));
    return rcpp_result_gen;
END_RCPP
}
// NNS_gravity_cpp
SEXP NNS_gravity_cpp(SEXP xSEXP, bool discrete);
RcppExport SEXP _NNS_NNS_gravity_cpp(SEXP xSEXPSEXP, SEXP discreteSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type xSEXP(xSEXPSEXP);
    Rcpp::traits::input_parameter< bool >::type discrete(discreteSEXP);
    rcpp_result_gen = Rcpp::wrap(NNS_gravity_cpp(xSEXP, discrete));
    return rcpp_result_gen;
END_RCPP
}
// NNS_rescale_cpp
NumericVector NNS_rescale_cpp(SEXP xSEXP, double a, double b, std::string method, Rcpp::Nullable<double> T_, std::string type);
RcppExport SEXP _NNS_NNS_rescale_cpp(SEXP xSEXPSEXP, SEXP aSEXP, SEXP bSEXP, SEXP methodSEXP, SEXP T_SEXP, SEXP typeSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type xSEXP(xSEXPSEXP);
    Rcpp::traits::input_parameter< double >::type a(aSEXP);
    Rcpp::traits::input_parameter< double >::type b(bSEXP);
    Rcpp::traits::input_parameter< std::string >::type method(methodSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<double> >::type T_(T_SEXP);
    Rcpp::traits::input_parameter< std::string >::type type(typeSEXP);
    rcpp_result_gen = Rcpp::wrap(NNS_rescale_cpp(xSEXP, a, b, method, T_, type));
    return rcpp_result_gen;
END_RCPP
}
// NNS_mode_cpp
SEXP NNS_mode_cpp(SEXP xSEXP, bool discrete, bool multi);
RcppExport SEXP _NNS_NNS_mode_cpp(SEXP xSEXPSEXP, SEXP discreteSEXP, SEXP multiSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type xSEXP(xSEXPSEXP);
    Rcpp::traits::input_parameter< bool >::type discrete(discreteSEXP);
    Rcpp::traits::input_parameter< bool >::type multi(multiSEXP);
    rcpp_result_gen = Rcpp::wrap(NNS_mode_cpp(xSEXP, discrete, multi));
    return rcpp_result_gen;
END_RCPP
}
// fast_lm
List fast_lm(NumericVector x, NumericVector y);
RcppExport SEXP _NNS_fast_lm(SEXP xSEXP, SEXP ySEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type x(xSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type y(ySEXP);
    rcpp_result_gen = Rcpp::wrap(fast_lm(x, y));
    return rcpp_result_gen;
END_RCPP
}
// fast_lm_mult
List fast_lm_mult(NumericMatrix x, NumericVector y);
RcppExport SEXP _NNS_fast_lm_mult(SEXP xSEXP, SEXP ySEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericMatrix >::type x(xSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type y(ySEXP);
    rcpp_result_gen = Rcpp::wrap(fast_lm_mult(x, y));
    return rcpp_result_gen;
END_RCPP
}
// is_fcl
bool is_fcl(SEXP x);
RcppExport SEXP _NNS_is_fcl(SEXP xSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type x(xSEXP);
    rcpp_result_gen = Rcpp::wrap(is_fcl(x));
    return rcpp_result_gen;
END_RCPP
}
// is_discrete
bool is_discrete(SEXP x);
RcppExport SEXP _NNS_is_discrete(SEXP xSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type x(xSEXP);
    rcpp_result_gen = Rcpp::wrap(is_discrete(x));
    return rcpp_result_gen;
END_RCPP
}
// factor_2_dummy
SEXP factor_2_dummy(SEXP x);
RcppExport SEXP _NNS_factor_2_dummy(SEXP xSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type x(xSEXP);
    rcpp_result_gen = Rcpp::wrap(factor_2_dummy(x));
    return rcpp_result_gen;
END_RCPP
}
// factor_2_dummy_FR
SEXP factor_2_dummy_FR(SEXP x);
RcppExport SEXP _NNS_factor_2_dummy_FR(SEXP xSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type x(xSEXP);
    rcpp_result_gen = Rcpp::wrap(factor_2_dummy_FR(x));
    return rcpp_result_gen;
END_RCPP
}
// generate_vectors
List generate_vectors(NumericVector x, IntegerVector l);
RcppExport SEXP _NNS_generate_vectors(SEXP xSEXP, SEXP lSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type x(xSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type l(lSEXP);
    rcpp_result_gen = Rcpp::wrap(generate_vectors(x, l));
    return rcpp_result_gen;
END_RCPP
}
// generate_lin_vectors
List generate_lin_vectors(NumericVector x, int l, int h);
RcppExport SEXP _NNS_generate_lin_vectors(SEXP xSEXP, SEXP lSEXP, SEXP hSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type x(xSEXP);
    Rcpp::traits::input_parameter< int >::type l(lSEXP);
    Rcpp::traits::input_parameter< int >::type h(hSEXP);
    rcpp_result_gen = Rcpp::wrap(generate_lin_vectors(x, l, h));
    return rcpp_result_gen;
END_RCPP
}
// ARMA_seas_weighting
List ARMA_seas_weighting(bool sf, SEXP mat);
RcppExport SEXP _NNS_ARMA_seas_weighting(SEXP sfSEXP, SEXP matSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< bool >::type sf(sfSEXP);
    Rcpp::traits::input_parameter< SEXP >::type mat(matSEXP);
    rcpp_result_gen = Rcpp::wrap(ARMA_seas_weighting(sf, mat));
    return rcpp_result_gen;
END_RCPP
}
// NNS_meboot_part
NumericVector NNS_meboot_part(NumericVector xx, int n, NumericVector z, double xmin, double xmax, NumericVector desintxb, bool reachbnd);
RcppExport SEXP _NNS_NNS_meboot_part(SEXP xxSEXP, SEXP nSEXP, SEXP zSEXP, SEXP xminSEXP, SEXP xmaxSEXP, SEXP desintxbSEXP, SEXP reachbndSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type xx(xxSEXP);
    Rcpp::traits::input_parameter< int >::type n(nSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type z(zSEXP);
    Rcpp::traits::input_parameter< double >::type xmin(xminSEXP);
    Rcpp::traits::input_parameter< double >::type xmax(xmaxSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type desintxb(desintxbSEXP);
    Rcpp::traits::input_parameter< bool >::type reachbnd(reachbndSEXP);
    rcpp_result_gen = Rcpp::wrap(NNS_meboot_part(xx, n, z, xmin, xmax, desintxb, reachbnd));
    return rcpp_result_gen;
END_RCPP
}
// NNS_meboot_expand_sd
SEXP NNS_meboot_expand_sd(SEXP x, NumericMatrix ensemble, double fiv);
RcppExport SEXP _NNS_NNS_meboot_expand_sd(SEXP xSEXP, SEXP ensembleSEXP, SEXP fivSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type x(xSEXP);
    Rcpp::traits::input_parameter< NumericMatrix >::type ensemble(ensembleSEXP);
    Rcpp::traits::input_parameter< double >::type fiv(fivSEXP);
    rcpp_result_gen = Rcpp::wrap(NNS_meboot_expand_sd(x, ensemble, fiv));
    return rcpp_result_gen;
END_RCPP
}
// force_clt
SEXP force_clt(SEXP x, NumericMatrix ensemble);
RcppExport SEXP _NNS_force_clt(SEXP xSEXP, SEXP ensembleSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type x(xSEXP);
    Rcpp::traits::input_parameter< NumericMatrix >::type ensemble(ensembleSEXP);
    rcpp_result_gen = Rcpp::wrap(force_clt(x, ensemble));
    return rcpp_result_gen;
END_RCPP
}
// downSample
SEXP downSample(SEXP x, SEXP y, bool list, std::string yname);
RcppExport SEXP _NNS_downSample(SEXP xSEXP, SEXP ySEXP, SEXP listSEXP, SEXP ynameSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type x(xSEXP);
    Rcpp::traits::input_parameter< SEXP >::type y(ySEXP);
    Rcpp::traits::input_parameter< bool >::type list(listSEXP);
    Rcpp::traits::input_parameter< std::string >::type yname(ynameSEXP);
    rcpp_result_gen = Rcpp::wrap(downSample(x, y, list, yname));
    return rcpp_result_gen;
END_RCPP
}
// upSample
SEXP upSample(SEXP x, SEXP y, bool list, std::string yname);
RcppExport SEXP _NNS_upSample(SEXP xSEXP, SEXP ySEXP, SEXP listSEXP, SEXP ynameSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type x(xSEXP);
    Rcpp::traits::input_parameter< SEXP >::type y(ySEXP);
    Rcpp::traits::input_parameter< bool >::type list(listSEXP);
    Rcpp::traits::input_parameter< std::string >::type yname(ynameSEXP);
    rcpp_result_gen = Rcpp::wrap(upSample(x, y, list, yname));
    return rcpp_result_gen;
END_RCPP
}
// LPM_CPv
NumericVector LPM_CPv(const double& degree, const NumericVector& target, const NumericVector& variable);
RcppExport SEXP _NNS_LPM_CPv(SEXP degreeSEXP, SEXP targetSEXP, SEXP variableSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const double& >::type degree(degreeSEXP);
    Rcpp::traits::input_parameter< const NumericVector& >::type target(targetSEXP);
    Rcpp::traits::input_parameter< const NumericVector& >::type variable(variableSEXP);
    rcpp_result_gen = Rcpp::wrap(LPM_CPv(degree, target, variable));
    return rcpp_result_gen;
END_RCPP
}
// UPM_CPv
NumericVector UPM_CPv(const double& degree, const NumericVector& target, const NumericVector& variable);
RcppExport SEXP _NNS_UPM_CPv(SEXP degreeSEXP, SEXP targetSEXP, SEXP variableSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const double& >::type degree(degreeSEXP);
    Rcpp::traits::input_parameter< const NumericVector& >::type target(targetSEXP);
    Rcpp::traits::input_parameter< const NumericVector& >::type variable(variableSEXP);
    rcpp_result_gen = Rcpp::wrap(UPM_CPv(degree, target, variable));
    return rcpp_result_gen;
END_RCPP
}
// CoLPM_nD_RCPP
double CoLPM_nD_RCPP(const NumericMatrix& data, const NumericVector& target, const double& degree, const bool& norm);
RcppExport SEXP _NNS_CoLPM_nD_RCPP(SEXP dataSEXP, SEXP targetSEXP, SEXP degreeSEXP, SEXP normSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const NumericMatrix& >::type data(dataSEXP);
    Rcpp::traits::input_parameter< const NumericVector& >::type target(targetSEXP);
    Rcpp::traits::input_parameter< const double& >::type degree(degreeSEXP);
    Rcpp::traits::input_parameter< const bool& >::type norm(normSEXP);
    rcpp_result_gen = Rcpp::wrap(CoLPM_nD_RCPP(data, target, degree, norm));
    return rcpp_result_gen;
END_RCPP
}
// CoUPM_nD_RCPP
double CoUPM_nD_RCPP(const NumericMatrix& data, const NumericVector& target, const double& degree, const bool& norm);
RcppExport SEXP _NNS_CoUPM_nD_RCPP(SEXP dataSEXP, SEXP targetSEXP, SEXP degreeSEXP, SEXP normSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const NumericMatrix& >::type data(dataSEXP);
    Rcpp::traits::input_parameter< const NumericVector& >::type target(targetSEXP);
    Rcpp::traits::input_parameter< const double& >::type degree(degreeSEXP);
    Rcpp::traits::input_parameter< const bool& >::type norm(normSEXP);
    rcpp_result_gen = Rcpp::wrap(CoUPM_nD_RCPP(data, target, degree, norm));
    return rcpp_result_gen;
END_RCPP
}
// DPM_nD_RCPP
double DPM_nD_RCPP(const NumericMatrix& data, const NumericVector& target, const double& degree, const bool& norm);
RcppExport SEXP _NNS_DPM_nD_RCPP(SEXP dataSEXP, SEXP targetSEXP, SEXP degreeSEXP, SEXP normSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const NumericMatrix& >::type data(dataSEXP);
    Rcpp::traits::input_parameter< const NumericVector& >::type target(targetSEXP);
    Rcpp::traits::input_parameter< const double& >::type degree(degreeSEXP);
    Rcpp::traits::input_parameter< const bool& >::type norm(normSEXP);
    rcpp_result_gen = Rcpp::wrap(DPM_nD_RCPP(data, target, degree, norm));
    return rcpp_result_gen;
END_RCPP
}
// LPM_RCPP
NumericVector LPM_RCPP(const double& degree, const RObject& target, const RObject& variable, const bool& excess_ret);
RcppExport SEXP _NNS_LPM_RCPP(SEXP degreeSEXP, SEXP targetSEXP, SEXP variableSEXP, SEXP excess_retSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const double& >::type degree(degreeSEXP);
    Rcpp::traits::input_parameter< const RObject& >::type target(targetSEXP);
    Rcpp::traits::input_parameter< const RObject& >::type variable(variableSEXP);
    Rcpp::traits::input_parameter< const bool& >::type excess_ret(excess_retSEXP);
    rcpp_result_gen = Rcpp::wrap(LPM_RCPP(degree, target, variable, excess_ret));
    return rcpp_result_gen;
END_RCPP
}
// UPM_RCPP
NumericVector UPM_RCPP(const double& degree, const RObject& target, const RObject& variable, const bool& excess_ret);
RcppExport SEXP _NNS_UPM_RCPP(SEXP degreeSEXP, SEXP targetSEXP, SEXP variableSEXP, SEXP excess_retSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const double& >::type degree(degreeSEXP);
    Rcpp::traits::input_parameter< const RObject& >::type target(targetSEXP);
    Rcpp::traits::input_parameter< const RObject& >::type variable(variableSEXP);
    Rcpp::traits::input_parameter< const bool& >::type excess_ret(excess_retSEXP);
    rcpp_result_gen = Rcpp::wrap(UPM_RCPP(degree, target, variable, excess_ret));
    return rcpp_result_gen;
END_RCPP
}
// LPM_ratio_RCPP
NumericVector LPM_ratio_RCPP(const double& degree, const RObject& target, const RObject& variable);
RcppExport SEXP _NNS_LPM_ratio_RCPP(SEXP degreeSEXP, SEXP targetSEXP, SEXP variableSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const double& >::type degree(degreeSEXP);
    Rcpp::traits::input_parameter< const RObject& >::type target(targetSEXP);
    Rcpp::traits::input_parameter< const RObject& >::type variable(variableSEXP);
    rcpp_result_gen = Rcpp::wrap(LPM_ratio_RCPP(degree, target, variable));
    return rcpp_result_gen;
END_RCPP
}
// UPM_ratio_RCPP
NumericVector UPM_ratio_RCPP(const double& degree, const RObject& target, const RObject& variable);
RcppExport SEXP _NNS_UPM_ratio_RCPP(SEXP degreeSEXP, SEXP targetSEXP, SEXP variableSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const double& >::type degree(degreeSEXP);
    Rcpp::traits::input_parameter< const RObject& >::type target(targetSEXP);
    Rcpp::traits::input_parameter< const RObject& >::type variable(variableSEXP);
    rcpp_result_gen = Rcpp::wrap(UPM_ratio_RCPP(degree, target, variable));
    return rcpp_result_gen;
END_RCPP
}
// CoLPM_RCPP
NumericVector CoLPM_RCPP(const double& degree_lpm, const RObject& x, const RObject& y, const RObject& target_x, const RObject& target_y, const double& degree_y);
RcppExport SEXP _NNS_CoLPM_RCPP(SEXP degree_lpmSEXP, SEXP xSEXP, SEXP ySEXP, SEXP target_xSEXP, SEXP target_ySEXP, SEXP degree_ySEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const double& >::type degree_lpm(degree_lpmSEXP);
    Rcpp::traits::input_parameter< const RObject& >::type x(xSEXP);
    Rcpp::traits::input_parameter< const RObject& >::type y(ySEXP);
    Rcpp::traits::input_parameter< const RObject& >::type target_x(target_xSEXP);
    Rcpp::traits::input_parameter< const RObject& >::type target_y(target_ySEXP);
    Rcpp::traits::input_parameter< const double& >::type degree_y(degree_ySEXP);
    rcpp_result_gen = Rcpp::wrap(CoLPM_RCPP(degree_lpm, x, y, target_x, target_y, degree_y));
    return rcpp_result_gen;
END_RCPP
}
// CoUPM_RCPP
NumericVector CoUPM_RCPP(const double& degree_upm, const RObject& x, const RObject& y, const RObject& target_x, const RObject& target_y, const double& degree_y);
RcppExport SEXP _NNS_CoUPM_RCPP(SEXP degree_upmSEXP, SEXP xSEXP, SEXP ySEXP, SEXP target_xSEXP, SEXP target_ySEXP, SEXP degree_ySEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const double& >::type degree_upm(degree_upmSEXP);
    Rcpp::traits::input_parameter< const RObject& >::type x(xSEXP);
    Rcpp::traits::input_parameter< const RObject& >::type y(ySEXP);
    Rcpp::traits::input_parameter< const RObject& >::type target_x(target_xSEXP);
    Rcpp::traits::input_parameter< const RObject& >::type target_y(target_ySEXP);
    Rcpp::traits::input_parameter< const double& >::type degree_y(degree_ySEXP);
    rcpp_result_gen = Rcpp::wrap(CoUPM_RCPP(degree_upm, x, y, target_x, target_y, degree_y));
    return rcpp_result_gen;
END_RCPP
}
// DLPM_RCPP
NumericVector DLPM_RCPP(const double& degree_lpm, const double& degree_upm, const RObject& x, const RObject& y, const RObject& target_x, const RObject& target_y);
RcppExport SEXP _NNS_DLPM_RCPP(SEXP degree_lpmSEXP, SEXP degree_upmSEXP, SEXP xSEXP, SEXP ySEXP, SEXP target_xSEXP, SEXP target_ySEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const double& >::type degree_lpm(degree_lpmSEXP);
    Rcpp::traits::input_parameter< const double& >::type degree_upm(degree_upmSEXP);
    Rcpp::traits::input_parameter< const RObject& >::type x(xSEXP);
    Rcpp::traits::input_parameter< const RObject& >::type y(ySEXP);
    Rcpp::traits::input_parameter< const RObject& >::type target_x(target_xSEXP);
    Rcpp::traits::input_parameter< const RObject& >::type target_y(target_ySEXP);
    rcpp_result_gen = Rcpp::wrap(DLPM_RCPP(degree_lpm, degree_upm, x, y, target_x, target_y));
    return rcpp_result_gen;
END_RCPP
}
// DUPM_RCPP
NumericVector DUPM_RCPP(const double& degree_lpm, const double& degree_upm, const RObject& x, const RObject& y, const RObject& target_x, const RObject& target_y);
RcppExport SEXP _NNS_DUPM_RCPP(SEXP degree_lpmSEXP, SEXP degree_upmSEXP, SEXP xSEXP, SEXP ySEXP, SEXP target_xSEXP, SEXP target_ySEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const double& >::type degree_lpm(degree_lpmSEXP);
    Rcpp::traits::input_parameter< const double& >::type degree_upm(degree_upmSEXP);
    Rcpp::traits::input_parameter< const RObject& >::type x(xSEXP);
    Rcpp::traits::input_parameter< const RObject& >::type y(ySEXP);
    Rcpp::traits::input_parameter< const RObject& >::type target_x(target_xSEXP);
    Rcpp::traits::input_parameter< const RObject& >::type target_y(target_ySEXP);
    rcpp_result_gen = Rcpp::wrap(DUPM_RCPP(degree_lpm, degree_upm, x, y, target_x, target_y));
    return rcpp_result_gen;
END_RCPP
}
// PMMatrix_RCPP
List PMMatrix_RCPP(const double& LPM_degree, const double& UPM_degree, const RObject& target, const RObject& variable, const bool pop_adj, const bool norm);
RcppExport SEXP _NNS_PMMatrix_RCPP(SEXP LPM_degreeSEXP, SEXP UPM_degreeSEXP, SEXP targetSEXP, SEXP variableSEXP, SEXP pop_adjSEXP, SEXP normSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const double& >::type LPM_degree(LPM_degreeSEXP);
    Rcpp::traits::input_parameter< const double& >::type UPM_degree(UPM_degreeSEXP);
    Rcpp::traits::input_parameter< const RObject& >::type target(targetSEXP);
    Rcpp::traits::input_parameter< const RObject& >::type variable(variableSEXP);
    Rcpp::traits::input_parameter< const bool >::type pop_adj(pop_adjSEXP);
    Rcpp::traits::input_parameter< const bool >::type norm(normSEXP);
    rcpp_result_gen = Rcpp::wrap(PMMatrix_RCPP(LPM_degree, UPM_degree, target, variable, pop_adj, norm));
    return rcpp_result_gen;
END_RCPP
}
// NNS_bin
List NNS_bin(NumericVector x, double width, double origin, bool missinglast);
RcppExport SEXP _NNS_NNS_bin(SEXP xSEXP, SEXP widthSEXP, SEXP originSEXP, SEXP missinglastSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type x(xSEXP);
    Rcpp::traits::input_parameter< double >::type width(widthSEXP);
    Rcpp::traits::input_parameter< double >::type origin(originSEXP);
    Rcpp::traits::input_parameter< bool >::type missinglast(missinglastSEXP);
    rcpp_result_gen = Rcpp::wrap(NNS_bin(x, width, origin, missinglast));
    return rcpp_result_gen;
END_RCPP
}
// stoch_superiority_cpp
List stoch_superiority_cpp(NumericVector x, NumericVector y);
RcppExport SEXP _NNS_stoch_superiority_cpp(SEXP xSEXP, SEXP ySEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type x(xSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type y(ySEXP);
    rcpp_result_gen = Rcpp::wrap(stoch_superiority_cpp(x, y));
    return rcpp_result_gen;
END_RCPP
}

static const R_CallMethodDef CallEntries[] = {
    {"_NNS_NNS_dep_pair_cpp", (DL_FUNC) &_NNS_NNS_dep_pair_cpp, 5},
    {"_NNS_NNS_dep_matrix_cpp", (DL_FUNC) &_NNS_NNS_dep_matrix_cpp, 2},
    {"_NNS_NNS_distance_cpp", (DL_FUNC) &_NNS_NNS_distance_cpp, 5},
    {"_NNS_NNS_distance_path_cpp", (DL_FUNC) &_NNS_NNS_distance_path_cpp, 5},
    {"_NNS_NNS_distance_bulk_cpp", (DL_FUNC) &_NNS_NNS_distance_bulk_cpp, 5},
    {"_NNS_NNS_distance_path_parallel_cpp", (DL_FUNC) &_NNS_NNS_distance_path_parallel_cpp, 6},
    {"_NNS_NNS_part_cpp", (DL_FUNC) &_NNS_NNS_part_cpp, 7},
    {"_NNS_NNS_seas_cpp", (DL_FUNC) &_NNS_NNS_seas_cpp, 3},
    {"_NNS_sd_dom_matrix_prefix_parallel", (DL_FUNC) &_NNS_sd_dom_matrix_prefix_parallel, 3},
    {"_NNS_NNS_SD_efficient_set_parallel_cpp", (DL_FUNC) &_NNS_NNS_SD_efficient_set_parallel_cpp, 4},
    {"_NNS_NNS_FSD_uni_cpp", (DL_FUNC) &_NNS_NNS_FSD_uni_cpp, 3},
    {"_NNS_NNS_SSD_uni_cpp", (DL_FUNC) &_NNS_NNS_SSD_uni_cpp, 2},
    {"_NNS_NNS_TSD_uni_cpp", (DL_FUNC) &_NNS_NNS_TSD_uni_cpp, 2},
    {"_NNS_NNS_gravity_cpp", (DL_FUNC) &_NNS_NNS_gravity_cpp, 2},
    {"_NNS_NNS_rescale_cpp", (DL_FUNC) &_NNS_NNS_rescale_cpp, 6},
    {"_NNS_NNS_mode_cpp", (DL_FUNC) &_NNS_NNS_mode_cpp, 3},
    {"_NNS_fast_lm", (DL_FUNC) &_NNS_fast_lm, 2},
    {"_NNS_fast_lm_mult", (DL_FUNC) &_NNS_fast_lm_mult, 2},
    {"_NNS_is_fcl", (DL_FUNC) &_NNS_is_fcl, 1},
    {"_NNS_is_discrete", (DL_FUNC) &_NNS_is_discrete, 1},
    {"_NNS_factor_2_dummy", (DL_FUNC) &_NNS_factor_2_dummy, 1},
    {"_NNS_factor_2_dummy_FR", (DL_FUNC) &_NNS_factor_2_dummy_FR, 1},
    {"_NNS_generate_vectors", (DL_FUNC) &_NNS_generate_vectors, 2},
    {"_NNS_generate_lin_vectors", (DL_FUNC) &_NNS_generate_lin_vectors, 3},
    {"_NNS_ARMA_seas_weighting", (DL_FUNC) &_NNS_ARMA_seas_weighting, 2},
    {"_NNS_NNS_meboot_part", (DL_FUNC) &_NNS_NNS_meboot_part, 7},
    {"_NNS_NNS_meboot_expand_sd", (DL_FUNC) &_NNS_NNS_meboot_expand_sd, 3},
    {"_NNS_force_clt", (DL_FUNC) &_NNS_force_clt, 2},
    {"_NNS_downSample", (DL_FUNC) &_NNS_downSample, 4},
    {"_NNS_upSample", (DL_FUNC) &_NNS_upSample, 4},
    {"_NNS_LPM_CPv", (DL_FUNC) &_NNS_LPM_CPv, 3},
    {"_NNS_UPM_CPv", (DL_FUNC) &_NNS_UPM_CPv, 3},
    {"_NNS_CoLPM_nD_RCPP", (DL_FUNC) &_NNS_CoLPM_nD_RCPP, 4},
    {"_NNS_CoUPM_nD_RCPP", (DL_FUNC) &_NNS_CoUPM_nD_RCPP, 4},
    {"_NNS_DPM_nD_RCPP", (DL_FUNC) &_NNS_DPM_nD_RCPP, 4},
    {"_NNS_LPM_RCPP", (DL_FUNC) &_NNS_LPM_RCPP, 4},
    {"_NNS_UPM_RCPP", (DL_FUNC) &_NNS_UPM_RCPP, 4},
    {"_NNS_LPM_ratio_RCPP", (DL_FUNC) &_NNS_LPM_ratio_RCPP, 3},
    {"_NNS_UPM_ratio_RCPP", (DL_FUNC) &_NNS_UPM_ratio_RCPP, 3},
    {"_NNS_CoLPM_RCPP", (DL_FUNC) &_NNS_CoLPM_RCPP, 6},
    {"_NNS_CoUPM_RCPP", (DL_FUNC) &_NNS_CoUPM_RCPP, 6},
    {"_NNS_DLPM_RCPP", (DL_FUNC) &_NNS_DLPM_RCPP, 6},
    {"_NNS_DUPM_RCPP", (DL_FUNC) &_NNS_DUPM_RCPP, 6},
    {"_NNS_PMMatrix_RCPP", (DL_FUNC) &_NNS_PMMatrix_RCPP, 6},
    {"_NNS_NNS_bin", (DL_FUNC) &_NNS_NNS_bin, 4},
    {"_NNS_stoch_superiority_cpp", (DL_FUNC) &_NNS_stoch_superiority_cpp, 2},
    {NULL, NULL, 0}
};

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