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

// IsingProcess
NumericMatrix IsingProcess(int nSample, NumericMatrix graph, NumericVector thresholds, double beta, NumericVector responses, Nullable<NumericVector> delta);
RcppExport SEXP _IsingSampler_IsingProcess(SEXP nSampleSEXP, SEXP graphSEXP, SEXP thresholdsSEXP, SEXP betaSEXP, SEXP responsesSEXP, SEXP deltaSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< int >::type nSample(nSampleSEXP);
    Rcpp::traits::input_parameter< NumericMatrix >::type graph(graphSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type thresholds(thresholdsSEXP);
    Rcpp::traits::input_parameter< double >::type beta(betaSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type responses(responsesSEXP);
    Rcpp::traits::input_parameter< Nullable<NumericVector> >::type delta(deltaSEXP);
    rcpp_result_gen = Rcpp::wrap(IsingProcess(nSample, graph, thresholds, beta, responses, delta));
    return rcpp_result_gen;
END_RCPP
}
// IsingSamplerCpp
NumericMatrix IsingSamplerCpp(int n, NumericMatrix graph, NumericVector thresholds, double beta, int nIter, NumericVector responses, bool exact, NumericMatrix constrain, Nullable<NumericVector> delta);
RcppExport SEXP _IsingSampler_IsingSamplerCpp(SEXP nSEXP, SEXP graphSEXP, SEXP thresholdsSEXP, SEXP betaSEXP, SEXP nIterSEXP, SEXP responsesSEXP, SEXP exactSEXP, SEXP constrainSEXP, SEXP deltaSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< int >::type n(nSEXP);
    Rcpp::traits::input_parameter< NumericMatrix >::type graph(graphSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type thresholds(thresholdsSEXP);
    Rcpp::traits::input_parameter< double >::type beta(betaSEXP);
    Rcpp::traits::input_parameter< int >::type nIter(nIterSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type responses(responsesSEXP);
    Rcpp::traits::input_parameter< bool >::type exact(exactSEXP);
    Rcpp::traits::input_parameter< NumericMatrix >::type constrain(constrainSEXP);
    Rcpp::traits::input_parameter< Nullable<NumericVector> >::type delta(deltaSEXP);
    rcpp_result_gen = Rcpp::wrap(IsingSamplerCpp(n, graph, thresholds, beta, nIter, responses, exact, constrain, delta));
    return rcpp_result_gen;
END_RCPP
}
// H
double H(NumericMatrix J, NumericVector s, NumericVector h, Nullable<NumericVector> delta);
RcppExport SEXP _IsingSampler_H(SEXP JSEXP, SEXP sSEXP, SEXP hSEXP, SEXP deltaSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericMatrix >::type J(JSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type s(sSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type h(hSEXP);
    Rcpp::traits::input_parameter< Nullable<NumericVector> >::type delta(deltaSEXP);
    rcpp_result_gen = Rcpp::wrap(H(J, s, h, delta));
    return rcpp_result_gen;
END_RCPP
}
// f
double f(NumericMatrix Y, NumericMatrix J, NumericVector h, Nullable<NumericVector> delta);
RcppExport SEXP _IsingSampler_f(SEXP YSEXP, SEXP JSEXP, SEXP hSEXP, SEXP deltaSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericMatrix >::type Y(YSEXP);
    Rcpp::traits::input_parameter< NumericMatrix >::type J(JSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type h(hSEXP);
    Rcpp::traits::input_parameter< Nullable<NumericVector> >::type delta(deltaSEXP);
    rcpp_result_gen = Rcpp::wrap(f(Y, J, h, delta));
    return rcpp_result_gen;
END_RCPP
}
// Hvec
double Hvec(IntegerVector s, NumericVector Theta, int N);
RcppExport SEXP _IsingSampler_Hvec(SEXP sSEXP, SEXP ThetaSEXP, SEXP NSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< IntegerVector >::type s(sSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type Theta(ThetaSEXP);
    Rcpp::traits::input_parameter< int >::type N(NSEXP);
    rcpp_result_gen = Rcpp::wrap(Hvec(s, Theta, N));
    return rcpp_result_gen;
END_RCPP
}
// PseudoLikelihood
double PseudoLikelihood(NumericMatrix x, NumericMatrix graph, NumericVector thresholds, double beta, NumericVector responses, bool logis);
RcppExport SEXP _IsingSampler_PseudoLikelihood(SEXP xSEXP, SEXP graphSEXP, SEXP thresholdsSEXP, SEXP betaSEXP, SEXP responsesSEXP, SEXP logisSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericMatrix >::type x(xSEXP);
    Rcpp::traits::input_parameter< NumericMatrix >::type graph(graphSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type thresholds(thresholdsSEXP);
    Rcpp::traits::input_parameter< double >::type beta(betaSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type responses(responsesSEXP);
    Rcpp::traits::input_parameter< bool >::type logis(logisSEXP);
    rcpp_result_gen = Rcpp::wrap(PseudoLikelihood(x, graph, thresholds, beta, responses, logis));
    return rcpp_result_gen;
END_RCPP
}

static const R_CallMethodDef CallEntries[] = {
    {"_IsingSampler_IsingProcess", (DL_FUNC) &_IsingSampler_IsingProcess, 6},
    {"_IsingSampler_IsingSamplerCpp", (DL_FUNC) &_IsingSampler_IsingSamplerCpp, 9},
    {"_IsingSampler_H", (DL_FUNC) &_IsingSampler_H, 4},
    {"_IsingSampler_f", (DL_FUNC) &_IsingSampler_f, 4},
    {"_IsingSampler_Hvec", (DL_FUNC) &_IsingSampler_Hvec, 3},
    {"_IsingSampler_PseudoLikelihood", (DL_FUNC) &_IsingSampler_PseudoLikelihood, 6},
    {NULL, NULL, 0}
};

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