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

// bin_drop
arma::uvec bin_drop(int bin_size, int bin_number, arma::rowvec res_std_max);
RcppExport SEXP _DegNorm_bin_drop(SEXP bin_sizeSEXP, SEXP bin_numberSEXP, SEXP res_std_maxSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< int >::type bin_size(bin_sizeSEXP);
    Rcpp::traits::input_parameter< int >::type bin_number(bin_numberSEXP);
    Rcpp::traits::input_parameter< arma::rowvec >::type res_std_max(res_std_maxSEXP);
    rcpp_result_gen = Rcpp::wrap(bin_drop(bin_size, bin_number, res_std_max));
    return rcpp_result_gen;
END_RCPP
}
// NMFCPP
List NMFCPP(const arma::mat f, int loop);
RcppExport SEXP _DegNorm_NMFCPP(SEXP fSEXP, SEXP loopSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::mat >::type f(fSEXP);
    Rcpp::traits::input_parameter< int >::type loop(loopSEXP);
    rcpp_result_gen = Rcpp::wrap(NMFCPP(f, loop));
    return rcpp_result_gen;
END_RCPP
}
// optiNMFCPP
List optiNMFCPP(arma::mat f, arma::vec normFactor, int loop, int baseline);
RcppExport SEXP _DegNorm_optiNMFCPP(SEXP fSEXP, SEXP normFactorSEXP, SEXP loopSEXP, SEXP baselineSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< arma::mat >::type f(fSEXP);
    Rcpp::traits::input_parameter< arma::vec >::type normFactor(normFactorSEXP);
    Rcpp::traits::input_parameter< int >::type loop(loopSEXP);
    Rcpp::traits::input_parameter< int >::type baseline(baselineSEXP);
    rcpp_result_gen = Rcpp::wrap(optiNMFCPP(f, normFactor, loop, baseline));
    return rcpp_result_gen;
END_RCPP
}
// optiNMFCPP_grid
List optiNMFCPP_grid(arma::mat f, arma::vec normFactor, int loop, int grid_size);
RcppExport SEXP _DegNorm_optiNMFCPP_grid(SEXP fSEXP, SEXP normFactorSEXP, SEXP loopSEXP, SEXP grid_sizeSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< arma::mat >::type f(fSEXP);
    Rcpp::traits::input_parameter< arma::vec >::type normFactor(normFactorSEXP);
    Rcpp::traits::input_parameter< int >::type loop(loopSEXP);
    Rcpp::traits::input_parameter< int >::type grid_size(grid_sizeSEXP);
    rcpp_result_gen = Rcpp::wrap(optiNMFCPP_grid(f, normFactor, loop, grid_size));
    return rcpp_result_gen;
END_RCPP
}

static const R_CallMethodDef CallEntries[] = {
    {"_DegNorm_bin_drop", (DL_FUNC) &_DegNorm_bin_drop, 3},
    {"_DegNorm_NMFCPP", (DL_FUNC) &_DegNorm_NMFCPP, 2},
    {"_DegNorm_optiNMFCPP", (DL_FUNC) &_DegNorm_optiNMFCPP, 4},
    {"_DegNorm_optiNMFCPP_grid", (DL_FUNC) &_DegNorm_optiNMFCPP_grid, 4},
    {NULL, NULL, 0}
};

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