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

// calcSESimpleSlopes
arma::vec calcSESimpleSlopes(arma::mat const& X, arma::mat const& V);
RcppExport SEXP _modsem_calcSESimpleSlopes(SEXP XSEXP, SEXP VSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< arma::mat const& >::type X(XSEXP);
    Rcpp::traits::input_parameter< arma::mat const& >::type V(VSEXP);
    rcpp_result_gen = Rcpp::wrap(calcSESimpleSlopes(X, V));
    return rcpp_result_gen;
END_RCPP
}
// muSigmaLmsCpp
Rcpp::List muSigmaLmsCpp(Rcpp::List model, arma::vec z);
RcppExport SEXP _modsem_muSigmaLmsCpp(SEXP modelSEXP, SEXP zSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type model(modelSEXP);
    Rcpp::traits::input_parameter< arma::vec >::type z(zSEXP);
    rcpp_result_gen = Rcpp::wrap(muSigmaLmsCpp(model, z));
    return rcpp_result_gen;
END_RCPP
}
// completeLogLikLmsCpp
double completeLogLikLmsCpp(const Rcpp::List& modelR, const Rcpp::List& P, const Rcpp::List& quad, const Rcpp::List& colidxR, const arma::uvec& n, const arma::uvec& d, const int npatterns);
RcppExport SEXP _modsem_completeLogLikLmsCpp(SEXP modelRSEXP, SEXP PSEXP, SEXP quadSEXP, SEXP colidxRSEXP, SEXP nSEXP, SEXP dSEXP, SEXP npatternsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const Rcpp::List& >::type modelR(modelRSEXP);
    Rcpp::traits::input_parameter< const Rcpp::List& >::type P(PSEXP);
    Rcpp::traits::input_parameter< const Rcpp::List& >::type quad(quadSEXP);
    Rcpp::traits::input_parameter< const Rcpp::List& >::type colidxR(colidxRSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type n(nSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type d(dSEXP);
    Rcpp::traits::input_parameter< const int >::type npatterns(npatternsSEXP);
    rcpp_result_gen = Rcpp::wrap(completeLogLikLmsCpp(modelR, P, quad, colidxR, n, d, npatterns));
    return rcpp_result_gen;
END_RCPP
}
// gradLogLikLmsCpp
arma::vec gradLogLikLmsCpp(const Rcpp::List& modelR, const Rcpp::List& P, const arma::uvec& block, const arma::uvec& row, const arma::uvec& col, const arma::uvec& symmetric, const Rcpp::List& colidxR, const arma::uvec& n, const arma::uvec& d, const int npatterns, const double eps, const int ncores);
RcppExport SEXP _modsem_gradLogLikLmsCpp(SEXP modelRSEXP, SEXP PSEXP, SEXP blockSEXP, SEXP rowSEXP, SEXP colSEXP, SEXP symmetricSEXP, SEXP colidxRSEXP, SEXP nSEXP, SEXP dSEXP, SEXP npatternsSEXP, SEXP epsSEXP, SEXP ncoresSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const Rcpp::List& >::type modelR(modelRSEXP);
    Rcpp::traits::input_parameter< const Rcpp::List& >::type P(PSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type block(blockSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type row(rowSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type col(colSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type symmetric(symmetricSEXP);
    Rcpp::traits::input_parameter< const Rcpp::List& >::type colidxR(colidxRSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type n(nSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type d(dSEXP);
    Rcpp::traits::input_parameter< const int >::type npatterns(npatternsSEXP);
    Rcpp::traits::input_parameter< const double >::type eps(epsSEXP);
    Rcpp::traits::input_parameter< const int >::type ncores(ncoresSEXP);
    rcpp_result_gen = Rcpp::wrap(gradLogLikLmsCpp(modelR, P, block, row, col, symmetric, colidxR, n, d, npatterns, eps, ncores));
    return rcpp_result_gen;
END_RCPP
}
// gradObsLogLikLmsCpp
arma::vec gradObsLogLikLmsCpp(const Rcpp::List& modelR, const Rcpp::List& dataR, const Rcpp::List& colidxR, const Rcpp::List& P, const arma::uvec& block, const arma::uvec& row, const arma::uvec& col, const arma::uvec& symmetric, const arma::uvec& n, const double eps, const int npatterns, const int ncores);
RcppExport SEXP _modsem_gradObsLogLikLmsCpp(SEXP modelRSEXP, SEXP dataRSEXP, SEXP colidxRSEXP, SEXP PSEXP, SEXP blockSEXP, SEXP rowSEXP, SEXP colSEXP, SEXP symmetricSEXP, SEXP nSEXP, SEXP epsSEXP, SEXP npatternsSEXP, SEXP ncoresSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const Rcpp::List& >::type modelR(modelRSEXP);
    Rcpp::traits::input_parameter< const Rcpp::List& >::type dataR(dataRSEXP);
    Rcpp::traits::input_parameter< const Rcpp::List& >::type colidxR(colidxRSEXP);
    Rcpp::traits::input_parameter< const Rcpp::List& >::type P(PSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type block(blockSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type row(rowSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type col(colSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type symmetric(symmetricSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type n(nSEXP);
    Rcpp::traits::input_parameter< const double >::type eps(epsSEXP);
    Rcpp::traits::input_parameter< const int >::type npatterns(npatternsSEXP);
    Rcpp::traits::input_parameter< const int >::type ncores(ncoresSEXP);
    rcpp_result_gen = Rcpp::wrap(gradObsLogLikLmsCpp(modelR, dataR, colidxR, P, block, row, col, symmetric, n, eps, npatterns, ncores));
    return rcpp_result_gen;
END_RCPP
}
// observedLogLikLmsCpp
double observedLogLikLmsCpp(const Rcpp::List& modelR, const Rcpp::List& dataR, const Rcpp::List& colidxR, const Rcpp::List& P, const arma::uvec& n, const int npatterns, const int ncores);
RcppExport SEXP _modsem_observedLogLikLmsCpp(SEXP modelRSEXP, SEXP dataRSEXP, SEXP colidxRSEXP, SEXP PSEXP, SEXP nSEXP, SEXP npatternsSEXP, SEXP ncoresSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const Rcpp::List& >::type modelR(modelRSEXP);
    Rcpp::traits::input_parameter< const Rcpp::List& >::type dataR(dataRSEXP);
    Rcpp::traits::input_parameter< const Rcpp::List& >::type colidxR(colidxRSEXP);
    Rcpp::traits::input_parameter< const Rcpp::List& >::type P(PSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type n(nSEXP);
    Rcpp::traits::input_parameter< const int >::type npatterns(npatternsSEXP);
    Rcpp::traits::input_parameter< const int >::type ncores(ncoresSEXP);
    rcpp_result_gen = Rcpp::wrap(observedLogLikLmsCpp(modelR, dataR, colidxR, P, n, npatterns, ncores));
    return rcpp_result_gen;
END_RCPP
}
// hessObsLogLikLmsCpp
Rcpp::List hessObsLogLikLmsCpp(const Rcpp::List& modelR, const Rcpp::List& dataR, const Rcpp::List& P, const arma::uvec& block, const arma::uvec& row, const arma::uvec& col, const arma::uvec& symmetric, const Rcpp::List& colidxR, const arma::uvec& n, const int npatterns, const double relStep, const double minAbs, const int ncores);
RcppExport SEXP _modsem_hessObsLogLikLmsCpp(SEXP modelRSEXP, SEXP dataRSEXP, SEXP PSEXP, SEXP blockSEXP, SEXP rowSEXP, SEXP colSEXP, SEXP symmetricSEXP, SEXP colidxRSEXP, SEXP nSEXP, SEXP npatternsSEXP, SEXP relStepSEXP, SEXP minAbsSEXP, SEXP ncoresSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const Rcpp::List& >::type modelR(modelRSEXP);
    Rcpp::traits::input_parameter< const Rcpp::List& >::type dataR(dataRSEXP);
    Rcpp::traits::input_parameter< const Rcpp::List& >::type P(PSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type block(blockSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type row(rowSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type col(colSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type symmetric(symmetricSEXP);
    Rcpp::traits::input_parameter< const Rcpp::List& >::type colidxR(colidxRSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type n(nSEXP);
    Rcpp::traits::input_parameter< const int >::type npatterns(npatternsSEXP);
    Rcpp::traits::input_parameter< const double >::type relStep(relStepSEXP);
    Rcpp::traits::input_parameter< const double >::type minAbs(minAbsSEXP);
    Rcpp::traits::input_parameter< const int >::type ncores(ncoresSEXP);
    rcpp_result_gen = Rcpp::wrap(hessObsLogLikLmsCpp(modelR, dataR, P, block, row, col, symmetric, colidxR, n, npatterns, relStep, minAbs, ncores));
    return rcpp_result_gen;
END_RCPP
}
// hessCompLogLikLmsCpp
Rcpp::List hessCompLogLikLmsCpp(const Rcpp::List& modelR, const Rcpp::List& P, const arma::uvec& block, const arma::uvec& row, const arma::uvec& col, const arma::uvec& symmetric, const Rcpp::List& colidxR, const arma::uvec& n, const arma::uvec& d, const int npatterns, const double relStep, const double minAbs, const int ncores);
RcppExport SEXP _modsem_hessCompLogLikLmsCpp(SEXP modelRSEXP, SEXP PSEXP, SEXP blockSEXP, SEXP rowSEXP, SEXP colSEXP, SEXP symmetricSEXP, SEXP colidxRSEXP, SEXP nSEXP, SEXP dSEXP, SEXP npatternsSEXP, SEXP relStepSEXP, SEXP minAbsSEXP, SEXP ncoresSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const Rcpp::List& >::type modelR(modelRSEXP);
    Rcpp::traits::input_parameter< const Rcpp::List& >::type P(PSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type block(blockSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type row(rowSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type col(colSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type symmetric(symmetricSEXP);
    Rcpp::traits::input_parameter< const Rcpp::List& >::type colidxR(colidxRSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type n(nSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type d(dSEXP);
    Rcpp::traits::input_parameter< const int >::type npatterns(npatternsSEXP);
    Rcpp::traits::input_parameter< const double >::type relStep(relStepSEXP);
    Rcpp::traits::input_parameter< const double >::type minAbs(minAbsSEXP);
    Rcpp::traits::input_parameter< const int >::type ncores(ncoresSEXP);
    rcpp_result_gen = Rcpp::wrap(hessCompLogLikLmsCpp(modelR, P, block, row, col, symmetric, colidxR, n, d, npatterns, relStep, minAbs, ncores));
    return rcpp_result_gen;
END_RCPP
}
// densityMatrixLmsCpp
arma::mat densityMatrixLmsCpp(const Rcpp::List& modelR, const arma::mat& V, const Rcpp::List& dataR, const Rcpp::List& colidxR, const arma::uvec& n, const arma::vec& samplingWeights, const int npatterns, const int ncores);
RcppExport SEXP _modsem_densityMatrixLmsCpp(SEXP modelRSEXP, SEXP VSEXP, SEXP dataRSEXP, SEXP colidxRSEXP, SEXP nSEXP, SEXP samplingWeightsSEXP, SEXP npatternsSEXP, SEXP ncoresSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const Rcpp::List& >::type modelR(modelRSEXP);
    Rcpp::traits::input_parameter< const arma::mat& >::type V(VSEXP);
    Rcpp::traits::input_parameter< const Rcpp::List& >::type dataR(dataRSEXP);
    Rcpp::traits::input_parameter< const Rcpp::List& >::type colidxR(colidxRSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type n(nSEXP);
    Rcpp::traits::input_parameter< const arma::vec& >::type samplingWeights(samplingWeightsSEXP);
    Rcpp::traits::input_parameter< const int >::type npatterns(npatternsSEXP);
    Rcpp::traits::input_parameter< const int >::type ncores(ncoresSEXP);
    rcpp_result_gen = Rcpp::wrap(densityMatrixLmsCpp(modelR, V, dataR, colidxR, n, samplingWeights, npatterns, ncores));
    return rcpp_result_gen;
END_RCPP
}
// estepSuffStatLmsCpp
Rcpp::List estepSuffStatLmsCpp(const arma::mat& P, const Rcpp::List& dataR, const arma::uvec& n, const int npatterns, const int ncores);
RcppExport SEXP _modsem_estepSuffStatLmsCpp(SEXP PSEXP, SEXP dataRSEXP, SEXP nSEXP, SEXP npatternsSEXP, SEXP ncoresSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::mat& >::type P(PSEXP);
    Rcpp::traits::input_parameter< const Rcpp::List& >::type dataR(dataRSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type n(nSEXP);
    Rcpp::traits::input_parameter< const int >::type npatterns(npatternsSEXP);
    Rcpp::traits::input_parameter< const int >::type ncores(ncoresSEXP);
    rcpp_result_gen = Rcpp::wrap(estepSuffStatLmsCpp(P, dataR, n, npatterns, ncores));
    return rcpp_result_gen;
END_RCPP
}
// muQmlCpp
arma::mat muQmlCpp(Rcpp::List m, int t, int ncores);
RcppExport SEXP _modsem_muQmlCpp(SEXP mSEXP, SEXP tSEXP, SEXP ncoresSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type m(mSEXP);
    Rcpp::traits::input_parameter< int >::type t(tSEXP);
    Rcpp::traits::input_parameter< int >::type ncores(ncoresSEXP);
    rcpp_result_gen = Rcpp::wrap(muQmlCpp(m, t, ncores));
    return rcpp_result_gen;
END_RCPP
}
// sigmaQmlCpp
arma::mat sigmaQmlCpp(Rcpp::List m, int t, int ncores);
RcppExport SEXP _modsem_sigmaQmlCpp(SEXP mSEXP, SEXP tSEXP, SEXP ncoresSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type m(mSEXP);
    Rcpp::traits::input_parameter< int >::type t(tSEXP);
    Rcpp::traits::input_parameter< int >::type ncores(ncoresSEXP);
    rcpp_result_gen = Rcpp::wrap(sigmaQmlCpp(m, t, ncores));
    return rcpp_result_gen;
END_RCPP
}
// calcKronXi
arma::mat calcKronXi(Rcpp::List m, int t, int ncores);
RcppExport SEXP _modsem_calcKronXi(SEXP mSEXP, SEXP tSEXP, SEXP ncoresSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type m(mSEXP);
    Rcpp::traits::input_parameter< int >::type t(tSEXP);
    Rcpp::traits::input_parameter< int >::type ncores(ncoresSEXP);
    rcpp_result_gen = Rcpp::wrap(calcKronXi(m, t, ncores));
    return rcpp_result_gen;
END_RCPP
}
// calcBinvCpp
arma::mat calcBinvCpp(Rcpp::List m, int t, int ncores);
RcppExport SEXP _modsem_calcBinvCpp(SEXP mSEXP, SEXP tSEXP, SEXP ncoresSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type m(mSEXP);
    Rcpp::traits::input_parameter< int >::type t(tSEXP);
    Rcpp::traits::input_parameter< int >::type ncores(ncoresSEXP);
    rcpp_result_gen = Rcpp::wrap(calcBinvCpp(m, t, ncores));
    return rcpp_result_gen;
END_RCPP
}
// dnormCpp
arma::vec dnormCpp(const arma::vec& x, const arma::vec& mu, const arma::vec& sigma, int ncores);
RcppExport SEXP _modsem_dnormCpp(SEXP xSEXP, SEXP muSEXP, SEXP sigmaSEXP, SEXP ncoresSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::vec& >::type x(xSEXP);
    Rcpp::traits::input_parameter< const arma::vec& >::type mu(muSEXP);
    Rcpp::traits::input_parameter< const arma::vec& >::type sigma(sigmaSEXP);
    Rcpp::traits::input_parameter< int >::type ncores(ncoresSEXP);
    rcpp_result_gen = Rcpp::wrap(dnormCpp(x, mu, sigma, ncores));
    return rcpp_result_gen;
END_RCPP
}
// varZCpp
arma::mat varZCpp(arma::mat Omega, arma::mat Sigma1, int numEta);
RcppExport SEXP _modsem_varZCpp(SEXP OmegaSEXP, SEXP Sigma1SEXP, SEXP numEtaSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< arma::mat >::type Omega(OmegaSEXP);
    Rcpp::traits::input_parameter< arma::mat >::type Sigma1(Sigma1SEXP);
    Rcpp::traits::input_parameter< int >::type numEta(numEtaSEXP);
    rcpp_result_gen = Rcpp::wrap(varZCpp(Omega, Sigma1, numEta));
    return rcpp_result_gen;
END_RCPP
}
// logLikQmlCpp
double logLikQmlCpp(const Rcpp::List& submodel, const int ncores);
RcppExport SEXP _modsem_logLikQmlCpp(SEXP submodelSEXP, SEXP ncoresSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const Rcpp::List& >::type submodel(submodelSEXP);
    Rcpp::traits::input_parameter< const int >::type ncores(ncoresSEXP);
    rcpp_result_gen = Rcpp::wrap(logLikQmlCpp(submodel, ncores));
    return rcpp_result_gen;
END_RCPP
}
// analyticalObsGradQmlCpp
arma::mat analyticalObsGradQmlCpp(const Rcpp::List& submodel, const arma::uvec& block, const arma::uvec& row, const arma::uvec& col, const arma::uvec& symmetric);
RcppExport SEXP _modsem_analyticalObsGradQmlCpp(SEXP submodelSEXP, SEXP blockSEXP, SEXP rowSEXP, SEXP colSEXP, SEXP symmetricSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const Rcpp::List& >::type submodel(submodelSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type block(blockSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type row(rowSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type col(colSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type symmetric(symmetricSEXP);
    rcpp_result_gen = Rcpp::wrap(analyticalObsGradQmlCpp(submodel, block, row, col, symmetric));
    return rcpp_result_gen;
END_RCPP
}
// analyticalGradQmlCpp
arma::vec analyticalGradQmlCpp(const Rcpp::List& submodel, const arma::uvec& block, const arma::uvec& row, const arma::uvec& col, const arma::uvec& symmetric);
RcppExport SEXP _modsem_analyticalGradQmlCpp(SEXP submodelSEXP, SEXP blockSEXP, SEXP rowSEXP, SEXP colSEXP, SEXP symmetricSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const Rcpp::List& >::type submodel(submodelSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type block(blockSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type row(rowSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type col(colSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type symmetric(symmetricSEXP);
    rcpp_result_gen = Rcpp::wrap(analyticalGradQmlCpp(submodel, block, row, col, symmetric));
    return rcpp_result_gen;
END_RCPP
}
// gradLogLikQmlFDCpp
arma::vec gradLogLikQmlFDCpp(const Rcpp::List& submodel, const arma::uvec& block, const arma::uvec& row, const arma::uvec& col, const arma::uvec& symmetric, const double eps, const int ncores);
RcppExport SEXP _modsem_gradLogLikQmlFDCpp(SEXP submodelSEXP, SEXP blockSEXP, SEXP rowSEXP, SEXP colSEXP, SEXP symmetricSEXP, SEXP epsSEXP, SEXP ncoresSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const Rcpp::List& >::type submodel(submodelSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type block(blockSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type row(rowSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type col(colSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type symmetric(symmetricSEXP);
    Rcpp::traits::input_parameter< const double >::type eps(epsSEXP);
    Rcpp::traits::input_parameter< const int >::type ncores(ncoresSEXP);
    rcpp_result_gen = Rcpp::wrap(gradLogLikQmlFDCpp(submodel, block, row, col, symmetric, eps, ncores));
    return rcpp_result_gen;
END_RCPP
}
// gradObsLogLikQmlFDCpp
arma::mat gradObsLogLikQmlFDCpp(const Rcpp::List& submodel, const arma::uvec& block, const arma::uvec& row, const arma::uvec& col, const arma::uvec& symmetric, const double eps, const int ncores);
RcppExport SEXP _modsem_gradObsLogLikQmlFDCpp(SEXP submodelSEXP, SEXP blockSEXP, SEXP rowSEXP, SEXP colSEXP, SEXP symmetricSEXP, SEXP epsSEXP, SEXP ncoresSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const Rcpp::List& >::type submodel(submodelSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type block(blockSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type row(rowSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type col(colSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type symmetric(symmetricSEXP);
    Rcpp::traits::input_parameter< const double >::type eps(epsSEXP);
    Rcpp::traits::input_parameter< const int >::type ncores(ncoresSEXP);
    rcpp_result_gen = Rcpp::wrap(gradObsLogLikQmlFDCpp(submodel, block, row, col, symmetric, eps, ncores));
    return rcpp_result_gen;
END_RCPP
}
// hessLogLikQmlCpp
Rcpp::List hessLogLikQmlCpp(const Rcpp::List& submodel, const arma::uvec& block, const arma::uvec& row, const arma::uvec& col, const arma::uvec& symmetric, const double relStep, const double minAbs, const int ncores);
RcppExport SEXP _modsem_hessLogLikQmlCpp(SEXP submodelSEXP, SEXP blockSEXP, SEXP rowSEXP, SEXP colSEXP, SEXP symmetricSEXP, SEXP relStepSEXP, SEXP minAbsSEXP, SEXP ncoresSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const Rcpp::List& >::type submodel(submodelSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type block(blockSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type row(rowSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type col(colSEXP);
    Rcpp::traits::input_parameter< const arma::uvec& >::type symmetric(symmetricSEXP);
    Rcpp::traits::input_parameter< const double >::type relStep(relStepSEXP);
    Rcpp::traits::input_parameter< const double >::type minAbs(minAbsSEXP);
    Rcpp::traits::input_parameter< const int >::type ncores(ncoresSEXP);
    rcpp_result_gen = Rcpp::wrap(hessLogLikQmlCpp(submodel, block, row, col, symmetric, relStep, minAbs, ncores));
    return rcpp_result_gen;
END_RCPP
}
// multiplyIndicatorsCpp
Rcpp::NumericVector multiplyIndicatorsCpp(Rcpp::DataFrame df);
RcppExport SEXP _modsem_multiplyIndicatorsCpp(SEXP dfSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::DataFrame >::type df(dfSEXP);
    rcpp_result_gen = Rcpp::wrap(multiplyIndicatorsCpp(df));
    return rcpp_result_gen;
END_RCPP
}
// checkOpenMP_Cpp
bool checkOpenMP_Cpp();
RcppExport SEXP _modsem_checkOpenMP_Cpp() {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    rcpp_result_gen = Rcpp::wrap(checkOpenMP_Cpp());
    return rcpp_result_gen;
END_RCPP
}
// dmvnrmArmaMc
arma::vec dmvnrmArmaMc(const arma::mat& x, const arma::rowvec& mean, const arma::mat& sigma, const bool log, const int ncores);
RcppExport SEXP _modsem_dmvnrmArmaMc(SEXP xSEXP, SEXP meanSEXP, SEXP sigmaSEXP, SEXP logSEXP, SEXP ncoresSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::mat& >::type x(xSEXP);
    Rcpp::traits::input_parameter< const arma::rowvec& >::type mean(meanSEXP);
    Rcpp::traits::input_parameter< const arma::mat& >::type sigma(sigmaSEXP);
    Rcpp::traits::input_parameter< const bool >::type log(logSEXP);
    Rcpp::traits::input_parameter< const int >::type ncores(ncoresSEXP);
    rcpp_result_gen = Rcpp::wrap(dmvnrmArmaMc(x, mean, sigma, log, ncores));
    return rcpp_result_gen;
END_RCPP
}
// repDmvnormCpp
arma::vec repDmvnormCpp(const arma::mat& x, const arma::mat& expected, const arma::mat& sigma, const int t, const int ncores);
RcppExport SEXP _modsem_repDmvnormCpp(SEXP xSEXP, SEXP expectedSEXP, SEXP sigmaSEXP, SEXP tSEXP, SEXP ncoresSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::mat& >::type x(xSEXP);
    Rcpp::traits::input_parameter< const arma::mat& >::type expected(expectedSEXP);
    Rcpp::traits::input_parameter< const arma::mat& >::type sigma(sigmaSEXP);
    Rcpp::traits::input_parameter< const int >::type t(tSEXP);
    Rcpp::traits::input_parameter< const int >::type ncores(ncoresSEXP);
    rcpp_result_gen = Rcpp::wrap(repDmvnormCpp(x, expected, sigma, t, ncores));
    return rcpp_result_gen;
END_RCPP
}
// totalDmvnWeighted
double totalDmvnWeighted(const arma::vec& mu, const arma::mat& sigma, const arma::vec& nu, const arma::mat& S, const double tgamma, const int d);
RcppExport SEXP _modsem_totalDmvnWeighted(SEXP muSEXP, SEXP sigmaSEXP, SEXP nuSEXP, SEXP SSEXP, SEXP tgammaSEXP, SEXP dSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::vec& >::type mu(muSEXP);
    Rcpp::traits::input_parameter< const arma::mat& >::type sigma(sigmaSEXP);
    Rcpp::traits::input_parameter< const arma::vec& >::type nu(nuSEXP);
    Rcpp::traits::input_parameter< const arma::mat& >::type S(SSEXP);
    Rcpp::traits::input_parameter< const double >::type tgamma(tgammaSEXP);
    Rcpp::traits::input_parameter< const int >::type d(dSEXP);
    rcpp_result_gen = Rcpp::wrap(totalDmvnWeighted(mu, sigma, nu, S, tgamma, d));
    return rcpp_result_gen;
END_RCPP
}
// dmvnfast
arma::vec dmvnfast(arma::mat X, arma::vec mu, arma::mat sigma, const bool log, const int ncores, const bool isChol);
RcppExport SEXP _modsem_dmvnfast(SEXP XSEXP, SEXP muSEXP, SEXP sigmaSEXP, SEXP logSEXP, SEXP ncoresSEXP, SEXP isCholSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< arma::mat >::type X(XSEXP);
    Rcpp::traits::input_parameter< arma::vec >::type mu(muSEXP);
    Rcpp::traits::input_parameter< arma::mat >::type sigma(sigmaSEXP);
    Rcpp::traits::input_parameter< const bool >::type log(logSEXP);
    Rcpp::traits::input_parameter< const int >::type ncores(ncoresSEXP);
    Rcpp::traits::input_parameter< const bool >::type isChol(isCholSEXP);
    rcpp_result_gen = Rcpp::wrap(dmvnfast(X, mu, sigma, log, ncores, isChol));
    return rcpp_result_gen;
END_RCPP
}
// modelMatrixCacheCpp
SEXP modelMatrixCacheCpp(Rcpp::List matrices);
RcppExport SEXP _modsem_modelMatrixCacheCpp(SEXP matricesSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type matrices(matricesSEXP);
    rcpp_result_gen = Rcpp::wrap(modelMatrixCacheCpp(matrices));
    return rcpp_result_gen;
END_RCPP
}
// impliedEtaFromZetaCpp
arma::vec impliedEtaFromZetaCpp(const arma::vec zeta, const SEXP xptr);
RcppExport SEXP _modsem_impliedEtaFromZetaCpp(SEXP zetaSEXP, SEXP xptrSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::vec >::type zeta(zetaSEXP);
    Rcpp::traits::input_parameter< const SEXP >::type xptr(xptrSEXP);
    rcpp_result_gen = Rcpp::wrap(impliedEtaFromZetaCpp(zeta, xptr));
    return rcpp_result_gen;
END_RCPP
}
// impliedYFromEtaCpp
arma::vec impliedYFromEtaCpp(const arma::vec eta, const SEXP xptr);
RcppExport SEXP _modsem_impliedYFromEtaCpp(SEXP etaSEXP, SEXP xptrSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::vec >::type eta(etaSEXP);
    Rcpp::traits::input_parameter< const SEXP >::type xptr(xptrSEXP);
    rcpp_result_gen = Rcpp::wrap(impliedYFromEtaCpp(eta, xptr));
    return rcpp_result_gen;
END_RCPP
}
// logLikFromZetaMLCpp
double logLikFromZetaMLCpp(const arma::vec zeta, const arma::vec y, const SEXP xptr, const arma::uvec idx);
RcppExport SEXP _modsem_logLikFromZetaMLCpp(SEXP zetaSEXP, SEXP ySEXP, SEXP xptrSEXP, SEXP idxSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::vec >::type zeta(zetaSEXP);
    Rcpp::traits::input_parameter< const arma::vec >::type y(ySEXP);
    Rcpp::traits::input_parameter< const SEXP >::type xptr(xptrSEXP);
    Rcpp::traits::input_parameter< const arma::uvec >::type idx(idxSEXP);
    rcpp_result_gen = Rcpp::wrap(logLikFromZetaMLCpp(zeta, y, xptr, idx));
    return rcpp_result_gen;
END_RCPP
}
// gradLogLikFromZetaMLCpp
arma::vec gradLogLikFromZetaMLCpp(const arma::vec zeta, const arma::vec y, const SEXP xptr, const arma::uvec idx, const double eps);
RcppExport SEXP _modsem_gradLogLikFromZetaMLCpp(SEXP zetaSEXP, SEXP ySEXP, SEXP xptrSEXP, SEXP idxSEXP, SEXP epsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::vec >::type zeta(zetaSEXP);
    Rcpp::traits::input_parameter< const arma::vec >::type y(ySEXP);
    Rcpp::traits::input_parameter< const SEXP >::type xptr(xptrSEXP);
    Rcpp::traits::input_parameter< const arma::uvec >::type idx(idxSEXP);
    Rcpp::traits::input_parameter< const double >::type eps(epsSEXP);
    rcpp_result_gen = Rcpp::wrap(gradLogLikFromZetaMLCpp(zeta, y, xptr, idx, eps));
    return rcpp_result_gen;
END_RCPP
}
// hessLogLikFromZetaMLCpp
Rcpp::List hessLogLikFromZetaMLCpp(const arma::vec zeta, const arma::vec y, const SEXP xptr, const arma::uvec idx, const double relStep, const double minAbsPar);
RcppExport SEXP _modsem_hessLogLikFromZetaMLCpp(SEXP zetaSEXP, SEXP ySEXP, SEXP xptrSEXP, SEXP idxSEXP, SEXP relStepSEXP, SEXP minAbsParSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::vec >::type zeta(zetaSEXP);
    Rcpp::traits::input_parameter< const arma::vec >::type y(ySEXP);
    Rcpp::traits::input_parameter< const SEXP >::type xptr(xptrSEXP);
    Rcpp::traits::input_parameter< const arma::uvec >::type idx(idxSEXP);
    Rcpp::traits::input_parameter< const double >::type relStep(relStepSEXP);
    Rcpp::traits::input_parameter< const double >::type minAbsPar(minAbsParSEXP);
    rcpp_result_gen = Rcpp::wrap(hessLogLikFromZetaMLCpp(zeta, y, xptr, idx, relStep, minAbsPar));
    return rcpp_result_gen;
END_RCPP
}
// logLikFromZetaEBMCpp
double logLikFromZetaEBMCpp(const arma::vec zeta, const arma::vec y, const SEXP xptr, const arma::uvec idx);
RcppExport SEXP _modsem_logLikFromZetaEBMCpp(SEXP zetaSEXP, SEXP ySEXP, SEXP xptrSEXP, SEXP idxSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::vec >::type zeta(zetaSEXP);
    Rcpp::traits::input_parameter< const arma::vec >::type y(ySEXP);
    Rcpp::traits::input_parameter< const SEXP >::type xptr(xptrSEXP);
    Rcpp::traits::input_parameter< const arma::uvec >::type idx(idxSEXP);
    rcpp_result_gen = Rcpp::wrap(logLikFromZetaEBMCpp(zeta, y, xptr, idx));
    return rcpp_result_gen;
END_RCPP
}
// gradLogLikFromZetaEBMCpp
arma::vec gradLogLikFromZetaEBMCpp(const arma::vec zeta, const arma::vec y, const SEXP xptr, const arma::uvec idx, const double eps);
RcppExport SEXP _modsem_gradLogLikFromZetaEBMCpp(SEXP zetaSEXP, SEXP ySEXP, SEXP xptrSEXP, SEXP idxSEXP, SEXP epsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::vec >::type zeta(zetaSEXP);
    Rcpp::traits::input_parameter< const arma::vec >::type y(ySEXP);
    Rcpp::traits::input_parameter< const SEXP >::type xptr(xptrSEXP);
    Rcpp::traits::input_parameter< const arma::uvec >::type idx(idxSEXP);
    Rcpp::traits::input_parameter< const double >::type eps(epsSEXP);
    rcpp_result_gen = Rcpp::wrap(gradLogLikFromZetaEBMCpp(zeta, y, xptr, idx, eps));
    return rcpp_result_gen;
END_RCPP
}
// hessLogLikFromZetaEBMCpp
Rcpp::List hessLogLikFromZetaEBMCpp(const arma::vec zeta, const arma::vec y, const SEXP xptr, const arma::uvec idx, const double relStep, const double minAbsPar);
RcppExport SEXP _modsem_hessLogLikFromZetaEBMCpp(SEXP zetaSEXP, SEXP ySEXP, SEXP xptrSEXP, SEXP idxSEXP, SEXP relStepSEXP, SEXP minAbsParSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const arma::vec >::type zeta(zetaSEXP);
    Rcpp::traits::input_parameter< const arma::vec >::type y(ySEXP);
    Rcpp::traits::input_parameter< const SEXP >::type xptr(xptrSEXP);
    Rcpp::traits::input_parameter< const arma::uvec >::type idx(idxSEXP);
    Rcpp::traits::input_parameter< const double >::type relStep(relStepSEXP);
    Rcpp::traits::input_parameter< const double >::type minAbsPar(minAbsParSEXP);
    rcpp_result_gen = Rcpp::wrap(hessLogLikFromZetaEBMCpp(zeta, y, xptr, idx, relStep, minAbsPar));
    return rcpp_result_gen;
END_RCPP
}
// tracePathsNumericCpp
Rcpp::NumericVector tracePathsNumericCpp(Rcpp::CharacterVector x, Rcpp::CharacterVector y, Rcpp::DataFrame parTable, int maxlen);
RcppExport SEXP _modsem_tracePathsNumericCpp(SEXP xSEXP, SEXP ySEXP, SEXP parTableSEXP, SEXP maxlenSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type x(xSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type y(ySEXP);
    Rcpp::traits::input_parameter< Rcpp::DataFrame >::type parTable(parTableSEXP);
    Rcpp::traits::input_parameter< int >::type maxlen(maxlenSEXP);
    rcpp_result_gen = Rcpp::wrap(tracePathsNumericCpp(x, y, parTable, maxlen));
    return rcpp_result_gen;
END_RCPP
}
// tracePathsCharacterCpp
Rcpp::List tracePathsCharacterCpp(Rcpp::CharacterVector x, Rcpp::CharacterVector y, Rcpp::DataFrame parTable, std::string paramCol, int maxlen);
RcppExport SEXP _modsem_tracePathsCharacterCpp(SEXP xSEXP, SEXP ySEXP, SEXP parTableSEXP, SEXP paramColSEXP, SEXP maxlenSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type x(xSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type y(ySEXP);
    Rcpp::traits::input_parameter< Rcpp::DataFrame >::type parTable(parTableSEXP);
    Rcpp::traits::input_parameter< std::string >::type paramCol(paramColSEXP);
    Rcpp::traits::input_parameter< int >::type maxlen(maxlenSEXP);
    rcpp_result_gen = Rcpp::wrap(tracePathsCharacterCpp(x, y, parTable, paramCol, maxlen));
    return rcpp_result_gen;
END_RCPP
}

static const R_CallMethodDef CallEntries[] = {
    {"_modsem_calcSESimpleSlopes", (DL_FUNC) &_modsem_calcSESimpleSlopes, 2},
    {"_modsem_muSigmaLmsCpp", (DL_FUNC) &_modsem_muSigmaLmsCpp, 2},
    {"_modsem_completeLogLikLmsCpp", (DL_FUNC) &_modsem_completeLogLikLmsCpp, 7},
    {"_modsem_gradLogLikLmsCpp", (DL_FUNC) &_modsem_gradLogLikLmsCpp, 12},
    {"_modsem_gradObsLogLikLmsCpp", (DL_FUNC) &_modsem_gradObsLogLikLmsCpp, 12},
    {"_modsem_observedLogLikLmsCpp", (DL_FUNC) &_modsem_observedLogLikLmsCpp, 7},
    {"_modsem_hessObsLogLikLmsCpp", (DL_FUNC) &_modsem_hessObsLogLikLmsCpp, 13},
    {"_modsem_hessCompLogLikLmsCpp", (DL_FUNC) &_modsem_hessCompLogLikLmsCpp, 13},
    {"_modsem_densityMatrixLmsCpp", (DL_FUNC) &_modsem_densityMatrixLmsCpp, 8},
    {"_modsem_estepSuffStatLmsCpp", (DL_FUNC) &_modsem_estepSuffStatLmsCpp, 5},
    {"_modsem_muQmlCpp", (DL_FUNC) &_modsem_muQmlCpp, 3},
    {"_modsem_sigmaQmlCpp", (DL_FUNC) &_modsem_sigmaQmlCpp, 3},
    {"_modsem_calcKronXi", (DL_FUNC) &_modsem_calcKronXi, 3},
    {"_modsem_calcBinvCpp", (DL_FUNC) &_modsem_calcBinvCpp, 3},
    {"_modsem_dnormCpp", (DL_FUNC) &_modsem_dnormCpp, 4},
    {"_modsem_varZCpp", (DL_FUNC) &_modsem_varZCpp, 3},
    {"_modsem_logLikQmlCpp", (DL_FUNC) &_modsem_logLikQmlCpp, 2},
    {"_modsem_analyticalObsGradQmlCpp", (DL_FUNC) &_modsem_analyticalObsGradQmlCpp, 5},
    {"_modsem_analyticalGradQmlCpp", (DL_FUNC) &_modsem_analyticalGradQmlCpp, 5},
    {"_modsem_gradLogLikQmlFDCpp", (DL_FUNC) &_modsem_gradLogLikQmlFDCpp, 7},
    {"_modsem_gradObsLogLikQmlFDCpp", (DL_FUNC) &_modsem_gradObsLogLikQmlFDCpp, 7},
    {"_modsem_hessLogLikQmlCpp", (DL_FUNC) &_modsem_hessLogLikQmlCpp, 8},
    {"_modsem_multiplyIndicatorsCpp", (DL_FUNC) &_modsem_multiplyIndicatorsCpp, 1},
    {"_modsem_checkOpenMP_Cpp", (DL_FUNC) &_modsem_checkOpenMP_Cpp, 0},
    {"_modsem_dmvnrmArmaMc", (DL_FUNC) &_modsem_dmvnrmArmaMc, 5},
    {"_modsem_repDmvnormCpp", (DL_FUNC) &_modsem_repDmvnormCpp, 5},
    {"_modsem_totalDmvnWeighted", (DL_FUNC) &_modsem_totalDmvnWeighted, 6},
    {"_modsem_dmvnfast", (DL_FUNC) &_modsem_dmvnfast, 6},
    {"_modsem_modelMatrixCacheCpp", (DL_FUNC) &_modsem_modelMatrixCacheCpp, 1},
    {"_modsem_impliedEtaFromZetaCpp", (DL_FUNC) &_modsem_impliedEtaFromZetaCpp, 2},
    {"_modsem_impliedYFromEtaCpp", (DL_FUNC) &_modsem_impliedYFromEtaCpp, 2},
    {"_modsem_logLikFromZetaMLCpp", (DL_FUNC) &_modsem_logLikFromZetaMLCpp, 4},
    {"_modsem_gradLogLikFromZetaMLCpp", (DL_FUNC) &_modsem_gradLogLikFromZetaMLCpp, 5},
    {"_modsem_hessLogLikFromZetaMLCpp", (DL_FUNC) &_modsem_hessLogLikFromZetaMLCpp, 6},
    {"_modsem_logLikFromZetaEBMCpp", (DL_FUNC) &_modsem_logLikFromZetaEBMCpp, 4},
    {"_modsem_gradLogLikFromZetaEBMCpp", (DL_FUNC) &_modsem_gradLogLikFromZetaEBMCpp, 5},
    {"_modsem_hessLogLikFromZetaEBMCpp", (DL_FUNC) &_modsem_hessLogLikFromZetaEBMCpp, 6},
    {"_modsem_tracePathsNumericCpp", (DL_FUNC) &_modsem_tracePathsNumericCpp, 4},
    {"_modsem_tracePathsCharacterCpp", (DL_FUNC) &_modsem_tracePathsCharacterCpp, 5},
    {NULL, NULL, 0}
};

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