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

// compute_center
Rcpp::NumericVector compute_center(Rcpp::RObject mat, int nthreads);
RcppExport SEXP _BiocSingular_compute_center(SEXP matSEXP, SEXP nthreadsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< Rcpp::RObject >::type mat(matSEXP);
    Rcpp::traits::input_parameter< int >::type nthreads(nthreadsSEXP);
    rcpp_result_gen = Rcpp::wrap(compute_center(mat, nthreads));
    return rcpp_result_gen;
END_RCPP
}
// compute_center_and_scale
Rcpp::List compute_center_and_scale(Rcpp::RObject mat, int nthreads);
RcppExport SEXP _BiocSingular_compute_center_and_scale(SEXP matSEXP, SEXP nthreadsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< Rcpp::RObject >::type mat(matSEXP);
    Rcpp::traits::input_parameter< int >::type nthreads(nthreadsSEXP);
    rcpp_result_gen = Rcpp::wrap(compute_center_and_scale(mat, nthreads));
    return rcpp_result_gen;
END_RCPP
}
// compute_scale
Rcpp::NumericVector compute_scale(Rcpp::RObject mat, Rcpp::NumericVector centers, int nthreads);
RcppExport SEXP _BiocSingular_compute_scale(SEXP matSEXP, SEXP centersSEXP, SEXP nthreadsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< Rcpp::RObject >::type mat(matSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type centers(centersSEXP);
    Rcpp::traits::input_parameter< int >::type nthreads(nthreadsSEXP);
    rcpp_result_gen = Rcpp::wrap(compute_scale(mat, centers, nthreads));
    return rcpp_result_gen;
END_RCPP
}

static const R_CallMethodDef CallEntries[] = {
    {"_BiocSingular_compute_center", (DL_FUNC) &_BiocSingular_compute_center, 2},
    {"_BiocSingular_compute_center_and_scale", (DL_FUNC) &_BiocSingular_compute_center_and_scale, 2},
    {"_BiocSingular_compute_scale", (DL_FUNC) &_BiocSingular_compute_scale, 3},
    {NULL, NULL, 0}
};

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