// Generated by using Rcpp::compileAttributes() -> do not edit by hand
// Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393

#ifndef RCPP_oeli_RCPPEXPORTS_H_GEN_
#define RCPP_oeli_RCPPEXPORTS_H_GEN_

#include <RcppArmadillo.h>
#include <Rcpp.h>

namespace oeli {

    using namespace Rcpp;

    namespace {
        void validateSignature(const char* sig) {
            Rcpp::Function require = Rcpp::Environment::base_env()["require"];
            require("oeli", Rcpp::Named("quietly") = true);
            typedef int(*Ptr_validate)(const char*);
            static Ptr_validate p_validate = (Ptr_validate)
                R_GetCCallable("oeli", "_oeli_RcppExport_validate");
            if (!p_validate(sig)) {
                throw Rcpp::function_not_exported(
                    "C++ function with signature '" + std::string(sig) + "' not found in oeli");
            }
        }
    }

    inline double ddirichlet(arma::vec const& x, arma::vec const& concentration, bool log = false) {
        typedef SEXP(*Ptr_ddirichlet)(SEXP,SEXP,SEXP);
        static Ptr_ddirichlet p_ddirichlet = NULL;
        if (p_ddirichlet == NULL) {
            validateSignature("double(*ddirichlet)(arma::vec const&,arma::vec const&,bool)");
            p_ddirichlet = (Ptr_ddirichlet)R_GetCCallable("oeli", "_oeli_ddirichlet");
        }
        RObject rcpp_result_gen;
        {
            RNGScope RCPP_rngScope_gen;
            rcpp_result_gen = p_ddirichlet(Shield<SEXP>(Rcpp::wrap(x)), Shield<SEXP>(Rcpp::wrap(concentration)), Shield<SEXP>(Rcpp::wrap(log)));
        }
        if (rcpp_result_gen.inherits("interrupted-error"))
            throw Rcpp::internal::InterruptedException();
        if (Rcpp::internal::isLongjumpSentinel(rcpp_result_gen))
            throw Rcpp::LongjumpException(rcpp_result_gen);
        if (rcpp_result_gen.inherits("try-error"))
            throw Rcpp::exception(Rcpp::as<std::string>(rcpp_result_gen).c_str());
        return Rcpp::as<double >(rcpp_result_gen);
    }

    inline arma::vec rdirichlet(arma::vec const& concentration) {
        typedef SEXP(*Ptr_rdirichlet)(SEXP);
        static Ptr_rdirichlet p_rdirichlet = NULL;
        if (p_rdirichlet == NULL) {
            validateSignature("arma::vec(*rdirichlet)(arma::vec const&)");
            p_rdirichlet = (Ptr_rdirichlet)R_GetCCallable("oeli", "_oeli_rdirichlet");
        }
        RObject rcpp_result_gen;
        {
            RNGScope RCPP_rngScope_gen;
            rcpp_result_gen = p_rdirichlet(Shield<SEXP>(Rcpp::wrap(concentration)));
        }
        if (rcpp_result_gen.inherits("interrupted-error"))
            throw Rcpp::internal::InterruptedException();
        if (Rcpp::internal::isLongjumpSentinel(rcpp_result_gen))
            throw Rcpp::LongjumpException(rcpp_result_gen);
        if (rcpp_result_gen.inherits("try-error"))
            throw Rcpp::exception(Rcpp::as<std::string>(rcpp_result_gen).c_str());
        return Rcpp::as<arma::vec >(rcpp_result_gen);
    }

    inline double dmixnorm(arma::vec const& x, arma::mat const& mean, arma::mat const& Sigma, arma::vec proportions) {
        typedef SEXP(*Ptr_dmixnorm)(SEXP,SEXP,SEXP,SEXP);
        static Ptr_dmixnorm p_dmixnorm = NULL;
        if (p_dmixnorm == NULL) {
            validateSignature("double(*dmixnorm)(arma::vec const&,arma::mat const&,arma::mat const&,arma::vec)");
            p_dmixnorm = (Ptr_dmixnorm)R_GetCCallable("oeli", "_oeli_dmixnorm");
        }
        RObject rcpp_result_gen;
        {
            RNGScope RCPP_rngScope_gen;
            rcpp_result_gen = p_dmixnorm(Shield<SEXP>(Rcpp::wrap(x)), Shield<SEXP>(Rcpp::wrap(mean)), Shield<SEXP>(Rcpp::wrap(Sigma)), Shield<SEXP>(Rcpp::wrap(proportions)));
        }
        if (rcpp_result_gen.inherits("interrupted-error"))
            throw Rcpp::internal::InterruptedException();
        if (Rcpp::internal::isLongjumpSentinel(rcpp_result_gen))
            throw Rcpp::LongjumpException(rcpp_result_gen);
        if (rcpp_result_gen.inherits("try-error"))
            throw Rcpp::exception(Rcpp::as<std::string>(rcpp_result_gen).c_str());
        return Rcpp::as<double >(rcpp_result_gen);
    }

    inline double pmixnorm(arma::vec const& x, arma::mat const& mean, arma::mat const& Sigma, arma::vec proportions, double abseps = 1e-3) {
        typedef SEXP(*Ptr_pmixnorm)(SEXP,SEXP,SEXP,SEXP,SEXP);
        static Ptr_pmixnorm p_pmixnorm = NULL;
        if (p_pmixnorm == NULL) {
            validateSignature("double(*pmixnorm)(arma::vec const&,arma::mat const&,arma::mat const&,arma::vec,double)");
            p_pmixnorm = (Ptr_pmixnorm)R_GetCCallable("oeli", "_oeli_pmixnorm");
        }
        RObject rcpp_result_gen;
        {
            RNGScope RCPP_rngScope_gen;
            rcpp_result_gen = p_pmixnorm(Shield<SEXP>(Rcpp::wrap(x)), Shield<SEXP>(Rcpp::wrap(mean)), Shield<SEXP>(Rcpp::wrap(Sigma)), Shield<SEXP>(Rcpp::wrap(proportions)), Shield<SEXP>(Rcpp::wrap(abseps)));
        }
        if (rcpp_result_gen.inherits("interrupted-error"))
            throw Rcpp::internal::InterruptedException();
        if (Rcpp::internal::isLongjumpSentinel(rcpp_result_gen))
            throw Rcpp::LongjumpException(rcpp_result_gen);
        if (rcpp_result_gen.inherits("try-error"))
            throw Rcpp::exception(Rcpp::as<std::string>(rcpp_result_gen).c_str());
        return Rcpp::as<double >(rcpp_result_gen);
    }

    inline arma::vec rmixnorm(arma::mat const& mean, arma::mat const& Sigma, arma::vec proportions) {
        typedef SEXP(*Ptr_rmixnorm)(SEXP,SEXP,SEXP);
        static Ptr_rmixnorm p_rmixnorm = NULL;
        if (p_rmixnorm == NULL) {
            validateSignature("arma::vec(*rmixnorm)(arma::mat const&,arma::mat const&,arma::vec)");
            p_rmixnorm = (Ptr_rmixnorm)R_GetCCallable("oeli", "_oeli_rmixnorm");
        }
        RObject rcpp_result_gen;
        {
            RNGScope RCPP_rngScope_gen;
            rcpp_result_gen = p_rmixnorm(Shield<SEXP>(Rcpp::wrap(mean)), Shield<SEXP>(Rcpp::wrap(Sigma)), Shield<SEXP>(Rcpp::wrap(proportions)));
        }
        if (rcpp_result_gen.inherits("interrupted-error"))
            throw Rcpp::internal::InterruptedException();
        if (Rcpp::internal::isLongjumpSentinel(rcpp_result_gen))
            throw Rcpp::LongjumpException(rcpp_result_gen);
        if (rcpp_result_gen.inherits("try-error"))
            throw Rcpp::exception(Rcpp::as<std::string>(rcpp_result_gen).c_str());
        return Rcpp::as<arma::vec >(rcpp_result_gen);
    }

    inline double dmvnorm(arma::vec const& x, arma::vec const& mean, arma::mat const& Sigma, bool log = false) {
        typedef SEXP(*Ptr_dmvnorm)(SEXP,SEXP,SEXP,SEXP);
        static Ptr_dmvnorm p_dmvnorm = NULL;
        if (p_dmvnorm == NULL) {
            validateSignature("double(*dmvnorm)(arma::vec const&,arma::vec const&,arma::mat const&,bool)");
            p_dmvnorm = (Ptr_dmvnorm)R_GetCCallable("oeli", "_oeli_dmvnorm");
        }
        RObject rcpp_result_gen;
        {
            RNGScope RCPP_rngScope_gen;
            rcpp_result_gen = p_dmvnorm(Shield<SEXP>(Rcpp::wrap(x)), Shield<SEXP>(Rcpp::wrap(mean)), Shield<SEXP>(Rcpp::wrap(Sigma)), Shield<SEXP>(Rcpp::wrap(log)));
        }
        if (rcpp_result_gen.inherits("interrupted-error"))
            throw Rcpp::internal::InterruptedException();
        if (Rcpp::internal::isLongjumpSentinel(rcpp_result_gen))
            throw Rcpp::LongjumpException(rcpp_result_gen);
        if (rcpp_result_gen.inherits("try-error"))
            throw Rcpp::exception(Rcpp::as<std::string>(rcpp_result_gen).c_str());
        return Rcpp::as<double >(rcpp_result_gen);
    }

    inline double pmvnorm(arma::vec const& x, arma::vec const& mean, arma::mat const& Sigma, double abseps = 1e-3, Rcpp::Nullable<Rcpp::NumericVector> lower = R_NilValue, std::string method = "genz", int draws = 500) {
        typedef SEXP(*Ptr_pmvnorm)(SEXP,SEXP,SEXP,SEXP,SEXP,SEXP,SEXP);
        static Ptr_pmvnorm p_pmvnorm = NULL;
        if (p_pmvnorm == NULL) {
            validateSignature("double(*pmvnorm)(arma::vec const&,arma::vec const&,arma::mat const&,double,Rcpp::Nullable<Rcpp::NumericVector>,std::string,int)");
            p_pmvnorm = (Ptr_pmvnorm)R_GetCCallable("oeli", "_oeli_pmvnorm");
        }
        RObject rcpp_result_gen;
        {
            RNGScope RCPP_rngScope_gen;
            rcpp_result_gen = p_pmvnorm(Shield<SEXP>(Rcpp::wrap(x)), Shield<SEXP>(Rcpp::wrap(mean)), Shield<SEXP>(Rcpp::wrap(Sigma)), Shield<SEXP>(Rcpp::wrap(abseps)), Shield<SEXP>(Rcpp::wrap(lower)), Shield<SEXP>(Rcpp::wrap(method)), Shield<SEXP>(Rcpp::wrap(draws)));
        }
        if (rcpp_result_gen.inherits("interrupted-error"))
            throw Rcpp::internal::InterruptedException();
        if (Rcpp::internal::isLongjumpSentinel(rcpp_result_gen))
            throw Rcpp::LongjumpException(rcpp_result_gen);
        if (rcpp_result_gen.inherits("try-error"))
            throw Rcpp::exception(Rcpp::as<std::string>(rcpp_result_gen).c_str());
        return Rcpp::as<double >(rcpp_result_gen);
    }

    inline arma::vec rmvnorm(arma::vec const& mean, arma::mat const& Sigma, bool log = false) {
        typedef SEXP(*Ptr_rmvnorm)(SEXP,SEXP,SEXP);
        static Ptr_rmvnorm p_rmvnorm = NULL;
        if (p_rmvnorm == NULL) {
            validateSignature("arma::vec(*rmvnorm)(arma::vec const&,arma::mat const&,bool)");
            p_rmvnorm = (Ptr_rmvnorm)R_GetCCallable("oeli", "_oeli_rmvnorm");
        }
        RObject rcpp_result_gen;
        {
            RNGScope RCPP_rngScope_gen;
            rcpp_result_gen = p_rmvnorm(Shield<SEXP>(Rcpp::wrap(mean)), Shield<SEXP>(Rcpp::wrap(Sigma)), Shield<SEXP>(Rcpp::wrap(log)));
        }
        if (rcpp_result_gen.inherits("interrupted-error"))
            throw Rcpp::internal::InterruptedException();
        if (Rcpp::internal::isLongjumpSentinel(rcpp_result_gen))
            throw Rcpp::LongjumpException(rcpp_result_gen);
        if (rcpp_result_gen.inherits("try-error"))
            throw Rcpp::exception(Rcpp::as<std::string>(rcpp_result_gen).c_str());
        return Rcpp::as<arma::vec >(rcpp_result_gen);
    }

    inline double dtnorm(double x, double mean, double sd, double point, bool above, bool log = false) {
        typedef SEXP(*Ptr_dtnorm)(SEXP,SEXP,SEXP,SEXP,SEXP,SEXP);
        static Ptr_dtnorm p_dtnorm = NULL;
        if (p_dtnorm == NULL) {
            validateSignature("double(*dtnorm)(double,double,double,double,bool,bool)");
            p_dtnorm = (Ptr_dtnorm)R_GetCCallable("oeli", "_oeli_dtnorm");
        }
        RObject rcpp_result_gen;
        {
            RNGScope RCPP_rngScope_gen;
            rcpp_result_gen = p_dtnorm(Shield<SEXP>(Rcpp::wrap(x)), Shield<SEXP>(Rcpp::wrap(mean)), Shield<SEXP>(Rcpp::wrap(sd)), Shield<SEXP>(Rcpp::wrap(point)), Shield<SEXP>(Rcpp::wrap(above)), Shield<SEXP>(Rcpp::wrap(log)));
        }
        if (rcpp_result_gen.inherits("interrupted-error"))
            throw Rcpp::internal::InterruptedException();
        if (Rcpp::internal::isLongjumpSentinel(rcpp_result_gen))
            throw Rcpp::LongjumpException(rcpp_result_gen);
        if (rcpp_result_gen.inherits("try-error"))
            throw Rcpp::exception(Rcpp::as<std::string>(rcpp_result_gen).c_str());
        return Rcpp::as<double >(rcpp_result_gen);
    }

    inline double dttnorm(double x, double mean, double sd, double lower, double upper, bool log = false) {
        typedef SEXP(*Ptr_dttnorm)(SEXP,SEXP,SEXP,SEXP,SEXP,SEXP);
        static Ptr_dttnorm p_dttnorm = NULL;
        if (p_dttnorm == NULL) {
            validateSignature("double(*dttnorm)(double,double,double,double,double,bool)");
            p_dttnorm = (Ptr_dttnorm)R_GetCCallable("oeli", "_oeli_dttnorm");
        }
        RObject rcpp_result_gen;
        {
            RNGScope RCPP_rngScope_gen;
            rcpp_result_gen = p_dttnorm(Shield<SEXP>(Rcpp::wrap(x)), Shield<SEXP>(Rcpp::wrap(mean)), Shield<SEXP>(Rcpp::wrap(sd)), Shield<SEXP>(Rcpp::wrap(lower)), Shield<SEXP>(Rcpp::wrap(upper)), Shield<SEXP>(Rcpp::wrap(log)));
        }
        if (rcpp_result_gen.inherits("interrupted-error"))
            throw Rcpp::internal::InterruptedException();
        if (Rcpp::internal::isLongjumpSentinel(rcpp_result_gen))
            throw Rcpp::LongjumpException(rcpp_result_gen);
        if (rcpp_result_gen.inherits("try-error"))
            throw Rcpp::exception(Rcpp::as<std::string>(rcpp_result_gen).c_str());
        return Rcpp::as<double >(rcpp_result_gen);
    }

    inline double rtnorm(double mean, double sd, double point, bool above, bool log = false) {
        typedef SEXP(*Ptr_rtnorm)(SEXP,SEXP,SEXP,SEXP,SEXP);
        static Ptr_rtnorm p_rtnorm = NULL;
        if (p_rtnorm == NULL) {
            validateSignature("double(*rtnorm)(double,double,double,bool,bool)");
            p_rtnorm = (Ptr_rtnorm)R_GetCCallable("oeli", "_oeli_rtnorm");
        }
        RObject rcpp_result_gen;
        {
            RNGScope RCPP_rngScope_gen;
            rcpp_result_gen = p_rtnorm(Shield<SEXP>(Rcpp::wrap(mean)), Shield<SEXP>(Rcpp::wrap(sd)), Shield<SEXP>(Rcpp::wrap(point)), Shield<SEXP>(Rcpp::wrap(above)), Shield<SEXP>(Rcpp::wrap(log)));
        }
        if (rcpp_result_gen.inherits("interrupted-error"))
            throw Rcpp::internal::InterruptedException();
        if (Rcpp::internal::isLongjumpSentinel(rcpp_result_gen))
            throw Rcpp::LongjumpException(rcpp_result_gen);
        if (rcpp_result_gen.inherits("try-error"))
            throw Rcpp::exception(Rcpp::as<std::string>(rcpp_result_gen).c_str());
        return Rcpp::as<double >(rcpp_result_gen);
    }

    inline double rttnorm(double mean, double sd, double lower, double upper, bool log = false) {
        typedef SEXP(*Ptr_rttnorm)(SEXP,SEXP,SEXP,SEXP,SEXP);
        static Ptr_rttnorm p_rttnorm = NULL;
        if (p_rttnorm == NULL) {
            validateSignature("double(*rttnorm)(double,double,double,double,bool)");
            p_rttnorm = (Ptr_rttnorm)R_GetCCallable("oeli", "_oeli_rttnorm");
        }
        RObject rcpp_result_gen;
        {
            RNGScope RCPP_rngScope_gen;
            rcpp_result_gen = p_rttnorm(Shield<SEXP>(Rcpp::wrap(mean)), Shield<SEXP>(Rcpp::wrap(sd)), Shield<SEXP>(Rcpp::wrap(lower)), Shield<SEXP>(Rcpp::wrap(upper)), Shield<SEXP>(Rcpp::wrap(log)));
        }
        if (rcpp_result_gen.inherits("interrupted-error"))
            throw Rcpp::internal::InterruptedException();
        if (Rcpp::internal::isLongjumpSentinel(rcpp_result_gen))
            throw Rcpp::LongjumpException(rcpp_result_gen);
        if (rcpp_result_gen.inherits("try-error"))
            throw Rcpp::exception(Rcpp::as<std::string>(rcpp_result_gen).c_str());
        return Rcpp::as<double >(rcpp_result_gen);
    }

    inline double dwishart(arma::mat const& x, int const& df, arma::mat const& scale, bool log = false, bool inv = false) {
        typedef SEXP(*Ptr_dwishart)(SEXP,SEXP,SEXP,SEXP,SEXP);
        static Ptr_dwishart p_dwishart = NULL;
        if (p_dwishart == NULL) {
            validateSignature("double(*dwishart)(arma::mat const&,int const&,arma::mat const&,bool,bool)");
            p_dwishart = (Ptr_dwishart)R_GetCCallable("oeli", "_oeli_dwishart");
        }
        RObject rcpp_result_gen;
        {
            RNGScope RCPP_rngScope_gen;
            rcpp_result_gen = p_dwishart(Shield<SEXP>(Rcpp::wrap(x)), Shield<SEXP>(Rcpp::wrap(df)), Shield<SEXP>(Rcpp::wrap(scale)), Shield<SEXP>(Rcpp::wrap(log)), Shield<SEXP>(Rcpp::wrap(inv)));
        }
        if (rcpp_result_gen.inherits("interrupted-error"))
            throw Rcpp::internal::InterruptedException();
        if (Rcpp::internal::isLongjumpSentinel(rcpp_result_gen))
            throw Rcpp::LongjumpException(rcpp_result_gen);
        if (rcpp_result_gen.inherits("try-error"))
            throw Rcpp::exception(Rcpp::as<std::string>(rcpp_result_gen).c_str());
        return Rcpp::as<double >(rcpp_result_gen);
    }

    inline arma::mat rwishart(double df, arma::mat const& scale, bool inv = false) {
        typedef SEXP(*Ptr_rwishart)(SEXP,SEXP,SEXP);
        static Ptr_rwishart p_rwishart = NULL;
        if (p_rwishart == NULL) {
            validateSignature("arma::mat(*rwishart)(double,arma::mat const&,bool)");
            p_rwishart = (Ptr_rwishart)R_GetCCallable("oeli", "_oeli_rwishart");
        }
        RObject rcpp_result_gen;
        {
            RNGScope RCPP_rngScope_gen;
            rcpp_result_gen = p_rwishart(Shield<SEXP>(Rcpp::wrap(df)), Shield<SEXP>(Rcpp::wrap(scale)), Shield<SEXP>(Rcpp::wrap(inv)));
        }
        if (rcpp_result_gen.inherits("interrupted-error"))
            throw Rcpp::internal::InterruptedException();
        if (Rcpp::internal::isLongjumpSentinel(rcpp_result_gen))
            throw Rcpp::LongjumpException(rcpp_result_gen);
        if (rcpp_result_gen.inherits("try-error"))
            throw Rcpp::exception(Rcpp::as<std::string>(rcpp_result_gen).c_str());
        return Rcpp::as<arma::mat >(rcpp_result_gen);
    }

}

#endif // RCPP_oeli_RCPPEXPORTS_H_GEN_
