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

#include "../inst/include/mvbernoulli.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

// ising_log_odds_sum
double ising_log_odds_sum(uint32_t y, const VechView& theta);
RcppExport SEXP _mvbernoulli_ising_log_odds_sum(SEXP ySEXP, SEXP thetaSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< uint32_t >::type y(ySEXP);
    Rcpp::traits::input_parameter< const VechView& >::type theta(thetaSEXP);
    rcpp_result_gen = Rcpp::wrap(ising_log_odds_sum(y, theta));
    return rcpp_result_gen;
END_RCPP
}
// ising_prob0
double ising_prob0(const VechView& theta);
RcppExport SEXP _mvbernoulli_ising_prob0(SEXP thetaSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const VechView& >::type theta(thetaSEXP);
    rcpp_result_gen = Rcpp::wrap(ising_prob0(theta));
    return rcpp_result_gen;
END_RCPP
}
// ising_probs
Rcpp::NumericVector ising_probs(const VechView& theta);
RcppExport SEXP _mvbernoulli_ising_probs(SEXP thetaSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const VechView& >::type theta(thetaSEXP);
    rcpp_result_gen = Rcpp::wrap(ising_probs(theta));
    return rcpp_result_gen;
END_RCPP
}
// ising_cond_probs
Rcpp::NumericVector ising_cond_probs(const VechView& theta);
RcppExport SEXP _mvbernoulli_ising_cond_probs(SEXP thetaSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const VechView& >::type theta(thetaSEXP);
    rcpp_result_gen = Rcpp::wrap(ising_cond_probs(theta));
    return rcpp_result_gen;
END_RCPP
}
// ising_expectation
Rcpp::NumericVector ising_expectation(const VechView& theta);
RcppExport SEXP _mvbernoulli_ising_expectation(SEXP thetaSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const VechView& >::type theta(thetaSEXP);
    rcpp_result_gen = Rcpp::wrap(ising_expectation(theta));
    return rcpp_result_gen;
END_RCPP
}
// ising_cov
Rcpp::NumericMatrix ising_cov(const VechView& theta);
RcppExport SEXP _mvbernoulli_ising_cov(SEXP thetaSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const VechView& >::type theta(thetaSEXP);
    rcpp_result_gen = Rcpp::wrap(ising_cov(theta));
    return rcpp_result_gen;
END_RCPP
}
// ising_marginal_probs
Rcpp::NumericVector ising_marginal_probs(const VechView& theta);
RcppExport SEXP _mvbernoulli_ising_marginal_probs(SEXP thetaSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const VechView& >::type theta(thetaSEXP);
    rcpp_result_gen = Rcpp::wrap(ising_marginal_probs(theta));
    return rcpp_result_gen;
END_RCPP
}
// ising_theta_from_cond_prob
Rcpp::NumericVector ising_theta_from_cond_prob(const VechView& pi);
RcppExport SEXP _mvbernoulli_ising_theta_from_cond_prob(SEXP piSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const VechView& >::type pi(piSEXP);
    rcpp_result_gen = Rcpp::wrap(ising_theta_from_cond_prob(pi));
    return rcpp_result_gen;
END_RCPP
}
// ising_log_likelihood
double ising_log_likelihood(const VechView& theta, const MVBinary& Y);
RcppExport SEXP _mvbernoulli_ising_log_likelihood(SEXP thetaSEXP, SEXP YSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const VechView& >::type theta(thetaSEXP);
    Rcpp::traits::input_parameter< const MVBinary& >::type Y(YSEXP);
    rcpp_result_gen = Rcpp::wrap(ising_log_likelihood(theta, Y));
    return rcpp_result_gen;
END_RCPP
}
// ising_score
Rcpp::NumericVector ising_score(const VechView& theta, const MVBinary& Y);
RcppExport SEXP _mvbernoulli_ising_score(SEXP thetaSEXP, SEXP YSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const VechView& >::type theta(thetaSEXP);
    Rcpp::traits::input_parameter< const MVBinary& >::type Y(YSEXP);
    rcpp_result_gen = Rcpp::wrap(ising_score(theta, Y));
    return rcpp_result_gen;
END_RCPP
}
// ising_conditional_log_likelihood
double ising_conditional_log_likelihood(const Rcpp::NumericMatrix& alpha, const Rcpp::NumericMatrix& X, const MVBinary& Y);
RcppExport SEXP _mvbernoulli_ising_conditional_log_likelihood(SEXP alphaSEXP, SEXP XSEXP, SEXP YSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const Rcpp::NumericMatrix& >::type alpha(alphaSEXP);
    Rcpp::traits::input_parameter< const Rcpp::NumericMatrix& >::type X(XSEXP);
    Rcpp::traits::input_parameter< const MVBinary& >::type Y(YSEXP);
    rcpp_result_gen = Rcpp::wrap(ising_conditional_log_likelihood(alpha, X, Y));
    return rcpp_result_gen;
END_RCPP
}
// ising_conditional_score
Rcpp::NumericVector ising_conditional_score(const Rcpp::NumericMatrix& alpha, const Rcpp::NumericMatrix& X, const MVBinary& Y);
RcppExport SEXP _mvbernoulli_ising_conditional_score(SEXP alphaSEXP, SEXP XSEXP, SEXP YSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const Rcpp::NumericMatrix& >::type alpha(alphaSEXP);
    Rcpp::traits::input_parameter< const Rcpp::NumericMatrix& >::type X(XSEXP);
    Rcpp::traits::input_parameter< const MVBinary& >::type Y(YSEXP);
    rcpp_result_gen = Rcpp::wrap(ising_conditional_score(alpha, X, Y));
    return rcpp_result_gen;
END_RCPP
}
// ising_fisher_info
Rcpp::NumericMatrix ising_fisher_info(const VechView& theta);
RcppExport SEXP _mvbernoulli_ising_fisher_info(SEXP thetaSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const VechView& >::type theta(thetaSEXP);
    rcpp_result_gen = Rcpp::wrap(ising_fisher_info(theta));
    return rcpp_result_gen;
END_RCPP
}
// ising_sample
MVBinary ising_sample(const std::size_t n, const VechView& theta, const std::size_t warmup);
RcppExport SEXP _mvbernoulli_ising_sample(SEXP nSEXP, SEXP thetaSEXP, SEXP warmupSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const std::size_t >::type n(nSEXP);
    Rcpp::traits::input_parameter< const VechView& >::type theta(thetaSEXP);
    Rcpp::traits::input_parameter< const std::size_t >::type warmup(warmupSEXP);
    rcpp_result_gen = Rcpp::wrap(ising_sample(n, theta, warmup));
    return rcpp_result_gen;
END_RCPP
}
// print_mvbinary
void print_mvbinary(const MVBinary& binary, int nrLines);
RcppExport SEXP _mvbernoulli_print_mvbinary(SEXP binarySEXP, SEXP nrLinesSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const MVBinary& >::type binary(binarySEXP);
    Rcpp::traits::input_parameter< int >::type nrLines(nrLinesSEXP);
    print_mvbinary(binary, nrLines);
    return R_NilValue;
END_RCPP
}
// printBits
void printBits(const Rcpp::IntegerVector& ints);
RcppExport SEXP _mvbernoulli_printBits(SEXP intsSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const Rcpp::IntegerVector& >::type ints(intsSEXP);
    printBits(ints);
    return R_NilValue;
END_RCPP
}
// as_mvbinary
MVBinary as_mvbinary(const MVBinary& Y);
RcppExport SEXP _mvbernoulli_as_mvbinary(SEXP YSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const MVBinary& >::type Y(YSEXP);
    rcpp_result_gen = Rcpp::wrap(as_mvbinary(Y));
    return rcpp_result_gen;
END_RCPP
}
// as_mvbmatrix
Rcpp::LogicalMatrix as_mvbmatrix(const MVBinary& Y);
RcppExport SEXP _mvbernoulli_as_mvbmatrix(SEXP YSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const MVBinary& >::type Y(YSEXP);
    rcpp_result_gen = Rcpp::wrap(as_mvbmatrix(Y));
    return rcpp_result_gen;
END_RCPP
}
// mean_mvbinary
Rcpp::NumericVector mean_mvbinary(const MVBinary& Y, const bool twoway);
RcppExport SEXP _mvbernoulli_mean_mvbinary(SEXP YSEXP, SEXP twowaySEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const MVBinary& >::type Y(YSEXP);
    Rcpp::traits::input_parameter< const bool >::type twoway(twowaySEXP);
    rcpp_result_gen = Rcpp::wrap(mean_mvbinary(Y, twoway));
    return rcpp_result_gen;
END_RCPP
}
// cov_mvbinary
Rcpp::NumericMatrix cov_mvbinary(const MVBinary& Y);
RcppExport SEXP _mvbernoulli_cov_mvbinary(SEXP YSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const MVBinary& >::type Y(YSEXP);
    rcpp_result_gen = Rcpp::wrap(cov_mvbinary(Y));
    return rcpp_result_gen;
END_RCPP
}

static const R_CallMethodDef CallEntries[] = {
    {"_mvbernoulli_ising_log_odds_sum", (DL_FUNC) &_mvbernoulli_ising_log_odds_sum, 2},
    {"_mvbernoulli_ising_prob0", (DL_FUNC) &_mvbernoulli_ising_prob0, 1},
    {"_mvbernoulli_ising_probs", (DL_FUNC) &_mvbernoulli_ising_probs, 1},
    {"_mvbernoulli_ising_cond_probs", (DL_FUNC) &_mvbernoulli_ising_cond_probs, 1},
    {"_mvbernoulli_ising_expectation", (DL_FUNC) &_mvbernoulli_ising_expectation, 1},
    {"_mvbernoulli_ising_cov", (DL_FUNC) &_mvbernoulli_ising_cov, 1},
    {"_mvbernoulli_ising_marginal_probs", (DL_FUNC) &_mvbernoulli_ising_marginal_probs, 1},
    {"_mvbernoulli_ising_theta_from_cond_prob", (DL_FUNC) &_mvbernoulli_ising_theta_from_cond_prob, 1},
    {"_mvbernoulli_ising_log_likelihood", (DL_FUNC) &_mvbernoulli_ising_log_likelihood, 2},
    {"_mvbernoulli_ising_score", (DL_FUNC) &_mvbernoulli_ising_score, 2},
    {"_mvbernoulli_ising_conditional_log_likelihood", (DL_FUNC) &_mvbernoulli_ising_conditional_log_likelihood, 3},
    {"_mvbernoulli_ising_conditional_score", (DL_FUNC) &_mvbernoulli_ising_conditional_score, 3},
    {"_mvbernoulli_ising_fisher_info", (DL_FUNC) &_mvbernoulli_ising_fisher_info, 1},
    {"_mvbernoulli_ising_sample", (DL_FUNC) &_mvbernoulli_ising_sample, 3},
    {"_mvbernoulli_print_mvbinary", (DL_FUNC) &_mvbernoulli_print_mvbinary, 2},
    {"_mvbernoulli_printBits", (DL_FUNC) &_mvbernoulli_printBits, 1},
    {"_mvbernoulli_as_mvbinary", (DL_FUNC) &_mvbernoulli_as_mvbinary, 1},
    {"_mvbernoulli_as_mvbmatrix", (DL_FUNC) &_mvbernoulli_as_mvbmatrix, 1},
    {"_mvbernoulli_mean_mvbinary", (DL_FUNC) &_mvbernoulli_mean_mvbinary, 2},
    {"_mvbernoulli_cov_mvbinary", (DL_FUNC) &_mvbernoulli_cov_mvbinary, 1},
    {NULL, NULL, 0}
};

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