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

// einsum_impl_fast
NumericVector einsum_impl_fast(IntegerVector lengths_vec, ListOf<IntegerVector> array_vars_list, IntegerVector not_result_vars_vec, IntegerVector result_vars_vec, ListOf<NumericVector> arrays);
RcppExport SEXP _einsum_einsum_impl_fast(SEXP lengths_vecSEXP, SEXP array_vars_listSEXP, SEXP not_result_vars_vecSEXP, SEXP result_vars_vecSEXP, SEXP arraysSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< IntegerVector >::type lengths_vec(lengths_vecSEXP);
    Rcpp::traits::input_parameter< ListOf<IntegerVector> >::type array_vars_list(array_vars_listSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type not_result_vars_vec(not_result_vars_vecSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type result_vars_vec(result_vars_vecSEXP);
    Rcpp::traits::input_parameter< ListOf<NumericVector> >::type arrays(arraysSEXP);
    rcpp_result_gen = Rcpp::wrap(einsum_impl_fast(lengths_vec, array_vars_list, not_result_vars_vec, result_vars_vec, arrays));
    return rcpp_result_gen;
END_RCPP
}

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

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