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

// SQUIC_R
List SQUIC_R(arma::mat& Y, double lambda, int max_iter, double inv_tol, double term_tol, int verbose, int mode, arma::sp_mat& M, arma::sp_mat& X0, arma::sp_mat& W0);
RcppExport SEXP _SQUIC_SQUIC_R(SEXP YSEXP, SEXP lambdaSEXP, SEXP max_iterSEXP, SEXP inv_tolSEXP, SEXP term_tolSEXP, SEXP verboseSEXP, SEXP modeSEXP, SEXP MSEXP, SEXP X0SEXP, SEXP W0SEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< arma::mat& >::type Y(YSEXP);
    Rcpp::traits::input_parameter< double >::type lambda(lambdaSEXP);
    Rcpp::traits::input_parameter< int >::type max_iter(max_iterSEXP);
    Rcpp::traits::input_parameter< double >::type inv_tol(inv_tolSEXP);
    Rcpp::traits::input_parameter< double >::type term_tol(term_tolSEXP);
    Rcpp::traits::input_parameter< int >::type verbose(verboseSEXP);
    Rcpp::traits::input_parameter< int >::type mode(modeSEXP);
    Rcpp::traits::input_parameter< arma::sp_mat& >::type M(MSEXP);
    Rcpp::traits::input_parameter< arma::sp_mat& >::type X0(X0SEXP);
    Rcpp::traits::input_parameter< arma::sp_mat& >::type W0(W0SEXP);
    rcpp_result_gen = Rcpp::wrap(SQUIC_R(Y, lambda, max_iter, inv_tol, term_tol, verbose, mode, M, X0, W0));
    return rcpp_result_gen;
END_RCPP
}

static const R_CallMethodDef CallEntries[] = {
    {"_SQUIC_SQUIC_R", (DL_FUNC) &_SQUIC_SQUIC_R, 10},
    {NULL, NULL, 0}
};

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