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

// ols_fit_cpp
List ols_fit_cpp(NumericMatrix X, NumericVector y);
RcppExport SEXP _texanshootR_ols_fit_cpp(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(ols_fit_cpp(X, y));
    return rcpp_result_gen;
END_RCPP
}
// ols_fit_batch_cpp
List ols_fit_batch_cpp(List Xs, List ys);
RcppExport SEXP _texanshootR_ols_fit_batch_cpp(SEXP XsSEXP, SEXP ysSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< List >::type Xs(XsSEXP);
    Rcpp::traits::input_parameter< List >::type ys(ysSEXP);
    rcpp_result_gen = Rcpp::wrap(ols_fit_batch_cpp(Xs, ys));
    return rcpp_result_gen;
END_RCPP
}
// pls_gcv_cpp
List pls_gcv_cpp(NumericMatrix X, NumericVector y, NumericMatrix S, NumericVector log_lambdas);
RcppExport SEXP _texanshootR_pls_gcv_cpp(SEXP XSEXP, SEXP ySEXP, SEXP SSEXP, SEXP log_lambdasSEXP) {
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::traits::input_parameter< NumericMatrix >::type S(SSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type log_lambdas(log_lambdasSEXP);
    rcpp_result_gen = Rcpp::wrap(pls_gcv_cpp(X, y, S, log_lambdas));
    return rcpp_result_gen;
END_RCPP
}
// lmm_profile_cpp
List lmm_profile_cpp(NumericMatrix X, NumericVector y, IntegerVector group, int n_groups, NumericVector log_thetas);
RcppExport SEXP _texanshootR_lmm_profile_cpp(SEXP XSEXP, SEXP ySEXP, SEXP groupSEXP, SEXP n_groupsSEXP, SEXP log_thetasSEXP) {
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::traits::input_parameter< IntegerVector >::type group(groupSEXP);
    Rcpp::traits::input_parameter< int >::type n_groups(n_groupsSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type log_thetas(log_thetasSEXP);
    rcpp_result_gen = Rcpp::wrap(lmm_profile_cpp(X, y, group, n_groups, log_thetas));
    return rcpp_result_gen;
END_RCPP
}

static const R_CallMethodDef CallEntries[] = {
    {"_texanshootR_ols_fit_cpp", (DL_FUNC) &_texanshootR_ols_fit_cpp, 2},
    {"_texanshootR_ols_fit_batch_cpp", (DL_FUNC) &_texanshootR_ols_fit_batch_cpp, 2},
    {"_texanshootR_pls_gcv_cpp", (DL_FUNC) &_texanshootR_pls_gcv_cpp, 4},
    {"_texanshootR_lmm_profile_cpp", (DL_FUNC) &_texanshootR_lmm_profile_cpp, 5},
    {NULL, NULL, 0}
};

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