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

// qubic_d
List qubic_d(const IntegerMatrix matrix, const double c, const int o, const double f, const int k, const bool P, const bool S, const bool C, const bool verbose);
RcppExport SEXP _QUBIC_qubic_d(SEXP matrixSEXP, SEXP cSEXP, SEXP oSEXP, SEXP fSEXP, SEXP kSEXP, SEXP PSEXP, SEXP SSEXP, SEXP CSEXP, SEXP verboseSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const IntegerMatrix >::type matrix(matrixSEXP);
    Rcpp::traits::input_parameter< const double >::type c(cSEXP);
    Rcpp::traits::input_parameter< const int >::type o(oSEXP);
    Rcpp::traits::input_parameter< const double >::type f(fSEXP);
    Rcpp::traits::input_parameter< const int >::type k(kSEXP);
    Rcpp::traits::input_parameter< const bool >::type P(PSEXP);
    Rcpp::traits::input_parameter< const bool >::type S(SSEXP);
    Rcpp::traits::input_parameter< const bool >::type C(CSEXP);
    Rcpp::traits::input_parameter< const bool >::type verbose(verboseSEXP);
    rcpp_result_gen = Rcpp::wrap(qubic_d(matrix, c, o, f, k, P, S, C, verbose));
    return rcpp_result_gen;
END_RCPP
}
// qubic_de
List qubic_de(const IntegerMatrix matrix, const double c, const bool verbose, const LogicalMatrix RowxNumber, const LogicalMatrix NumberxCol);
RcppExport SEXP _QUBIC_qubic_de(SEXP matrixSEXP, SEXP cSEXP, SEXP verboseSEXP, SEXP RowxNumberSEXP, SEXP NumberxColSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const IntegerMatrix >::type matrix(matrixSEXP);
    Rcpp::traits::input_parameter< const double >::type c(cSEXP);
    Rcpp::traits::input_parameter< const bool >::type verbose(verboseSEXP);
    Rcpp::traits::input_parameter< const LogicalMatrix >::type RowxNumber(RowxNumberSEXP);
    Rcpp::traits::input_parameter< const LogicalMatrix >::type NumberxCol(NumberxColSEXP);
    rcpp_result_gen = Rcpp::wrap(qubic_de(matrix, c, verbose, RowxNumber, NumberxCol));
    return rcpp_result_gen;
END_RCPP
}
// qubic_dw
List qubic_dw(const IntegerMatrix matrix, const double c, const int o, const double f, const int k, const bool P, const bool S, const bool C, const bool verbose, const arma::sp_mat weight);
RcppExport SEXP _QUBIC_qubic_dw(SEXP matrixSEXP, SEXP cSEXP, SEXP oSEXP, SEXP fSEXP, SEXP kSEXP, SEXP PSEXP, SEXP SSEXP, SEXP CSEXP, SEXP verboseSEXP, SEXP weightSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const IntegerMatrix >::type matrix(matrixSEXP);
    Rcpp::traits::input_parameter< const double >::type c(cSEXP);
    Rcpp::traits::input_parameter< const int >::type o(oSEXP);
    Rcpp::traits::input_parameter< const double >::type f(fSEXP);
    Rcpp::traits::input_parameter< const int >::type k(kSEXP);
    Rcpp::traits::input_parameter< const bool >::type P(PSEXP);
    Rcpp::traits::input_parameter< const bool >::type S(SSEXP);
    Rcpp::traits::input_parameter< const bool >::type C(CSEXP);
    Rcpp::traits::input_parameter< const bool >::type verbose(verboseSEXP);
    Rcpp::traits::input_parameter< const arma::sp_mat >::type weight(weightSEXP);
    rcpp_result_gen = Rcpp::wrap(qubic_dw(matrix, c, o, f, k, P, S, C, verbose, weight));
    return rcpp_result_gen;
END_RCPP
}
// qudiscretize
NumericMatrix qudiscretize(const NumericMatrix x, const short r, const double q);
RcppExport SEXP _QUBIC_qudiscretize(SEXP xSEXP, SEXP rSEXP, SEXP qSEXP) {
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< const short >::type r(rSEXP);
    Rcpp::traits::input_parameter< const double >::type q(qSEXP);
    rcpp_result_gen = Rcpp::wrap(qudiscretize(x, r, q));
    return rcpp_result_gen;
END_RCPP
}

static const R_CallMethodDef CallEntries[] = {
    {"_QUBIC_qubic_d", (DL_FUNC) &_QUBIC_qubic_d, 9},
    {"_QUBIC_qubic_de", (DL_FUNC) &_QUBIC_qubic_de, 5},
    {"_QUBIC_qubic_dw", (DL_FUNC) &_QUBIC_qubic_dw, 10},
    {"_QUBIC_qudiscretize", (DL_FUNC) &_QUBIC_qudiscretize, 3},
    {NULL, NULL, 0}
};

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