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

// fsd_rcpp_fourier
arma::cx_cube fsd_rcpp_fourier(const arma::cx_cube& A, const arma::mat& lags, const arma::mat& freq);
RcppExport SEXP _MFSD_fsd_rcpp_fourier(SEXP ASEXP, SEXP lagsSEXP, SEXP freqSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::cx_cube& >::type A(ASEXP);
    Rcpp::traits::input_parameter< const arma::mat& >::type lags(lagsSEXP);
    Rcpp::traits::input_parameter< const arma::mat& >::type freq(freqSEXP);
    rcpp_result_gen = Rcpp::wrap(fsd_rcpp_fourier(A, lags, freq));
    return rcpp_result_gen;
END_RCPP
}
// fsd_rcpp_fourier_inverse
arma::cx_cube fsd_rcpp_fourier_inverse(const arma::cx_cube& B, const arma::mat& freq, const arma::mat& lags);
RcppExport SEXP _MFSD_fsd_rcpp_fourier_inverse(SEXP BSEXP, SEXP freqSEXP, SEXP lagsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::cx_cube& >::type B(BSEXP);
    Rcpp::traits::input_parameter< const arma::mat& >::type freq(freqSEXP);
    Rcpp::traits::input_parameter< const arma::mat& >::type lags(lagsSEXP);
    rcpp_result_gen = Rcpp::wrap(fsd_rcpp_fourier_inverse(B, freq, lags));
    return rcpp_result_gen;
END_RCPP
}

static const R_CallMethodDef CallEntries[] = {
    {"_MFSD_fsd_rcpp_fourier", (DL_FUNC) &_MFSD_fsd_rcpp_fourier, 3},
    {"_MFSD_fsd_rcpp_fourier_inverse", (DL_FUNC) &_MFSD_fsd_rcpp_fourier_inverse, 3},
    {NULL, NULL, 0}
};

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