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

// fitBeta2
Rcpp::List fitBeta2(SEXP ySEXP, SEXP xSEXP, SEXP nfSEXP, SEXP alpha_hatSEXP, SEXP contrastSEXP, SEXP beta_matSEXP, SEXP lambdaSEXP, SEXP tolSEXP, SEXP maxitSEXP, SEXP useQRSEXP);
RcppExport SEXP _xtail_fitBeta2(SEXP ySEXPSEXP, SEXP xSEXPSEXP, SEXP nfSEXPSEXP, SEXP alpha_hatSEXPSEXP, SEXP contrastSEXPSEXP, SEXP beta_matSEXPSEXP, SEXP lambdaSEXPSEXP, SEXP tolSEXPSEXP, SEXP maxitSEXPSEXP, SEXP useQRSEXPSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type ySEXP(ySEXPSEXP);
    Rcpp::traits::input_parameter< SEXP >::type xSEXP(xSEXPSEXP);
    Rcpp::traits::input_parameter< SEXP >::type nfSEXP(nfSEXPSEXP);
    Rcpp::traits::input_parameter< SEXP >::type alpha_hatSEXP(alpha_hatSEXPSEXP);
    Rcpp::traits::input_parameter< SEXP >::type contrastSEXP(contrastSEXPSEXP);
    Rcpp::traits::input_parameter< SEXP >::type beta_matSEXP(beta_matSEXPSEXP);
    Rcpp::traits::input_parameter< SEXP >::type lambdaSEXP(lambdaSEXPSEXP);
    Rcpp::traits::input_parameter< SEXP >::type tolSEXP(tolSEXPSEXP);
    Rcpp::traits::input_parameter< SEXP >::type maxitSEXP(maxitSEXPSEXP);
    Rcpp::traits::input_parameter< SEXP >::type useQRSEXP(useQRSEXPSEXP);
    rcpp_result_gen = Rcpp::wrap(fitBeta2(ySEXP, xSEXP, nfSEXP, alpha_hatSEXP, contrastSEXP, beta_matSEXP, lambdaSEXP, tolSEXP, maxitSEXP, useQRSEXP));
    return rcpp_result_gen;
END_RCPP
}
// probDensity
NumericVector probDensity(NumericVector k, NumericVector alpha, NumericVector intercept, NumericVector sf, NumericVector betas, NumericVector cond);
RcppExport SEXP _xtail_probDensity(SEXP kSEXP, SEXP alphaSEXP, SEXP interceptSEXP, SEXP sfSEXP, SEXP betasSEXP, SEXP condSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type k(kSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type alpha(alphaSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type intercept(interceptSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type sf(sfSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type betas(betasSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type cond(condSEXP);
    rcpp_result_gen = Rcpp::wrap(probDensity(k, alpha, intercept, sf, betas, cond));
    return rcpp_result_gen;
END_RCPP
}
// probMatrix
Rcpp::NumericVector probMatrix(Rcpp::NumericVector x, Rcpp::NumericVector y, Rcpp::NumericVector side);
RcppExport SEXP _xtail_probMatrix(SEXP xSEXP, SEXP ySEXP, SEXP sideSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type x(xSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type y(ySEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type side(sideSEXP);
    rcpp_result_gen = Rcpp::wrap(probMatrix(x, y, side));
    return rcpp_result_gen;
END_RCPP
}
// probMatrixCI
NumericVector probMatrixCI(NumericVector x, NumericVector y, NumericVector side, NumericVector ci);
RcppExport SEXP _xtail_probMatrixCI(SEXP xSEXP, SEXP ySEXP, SEXP sideSEXP, SEXP ciSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type x(xSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type y(ySEXP);
    Rcpp::traits::input_parameter< NumericVector >::type side(sideSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type ci(ciSEXP);
    rcpp_result_gen = Rcpp::wrap(probMatrixCI(x, y, side, ci));
    return rcpp_result_gen;
END_RCPP
}
// boundFC
NumericVector boundFC(NumericVector k1, NumericVector alpha1, NumericVector intercept1, NumericVector sf1, NumericVector FC1, NumericVector cond1, NumericVector k2, NumericVector alpha2, NumericVector intercept2, NumericVector sf2, NumericVector FC2, NumericVector cond2, NumericVector stepFC, NumericVector toleration);
RcppExport SEXP _xtail_boundFC(SEXP k1SEXP, SEXP alpha1SEXP, SEXP intercept1SEXP, SEXP sf1SEXP, SEXP FC1SEXP, SEXP cond1SEXP, SEXP k2SEXP, SEXP alpha2SEXP, SEXP intercept2SEXP, SEXP sf2SEXP, SEXP FC2SEXP, SEXP cond2SEXP, SEXP stepFCSEXP, SEXP tolerationSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type k1(k1SEXP);
    Rcpp::traits::input_parameter< NumericVector >::type alpha1(alpha1SEXP);
    Rcpp::traits::input_parameter< NumericVector >::type intercept1(intercept1SEXP);
    Rcpp::traits::input_parameter< NumericVector >::type sf1(sf1SEXP);
    Rcpp::traits::input_parameter< NumericVector >::type FC1(FC1SEXP);
    Rcpp::traits::input_parameter< NumericVector >::type cond1(cond1SEXP);
    Rcpp::traits::input_parameter< NumericVector >::type k2(k2SEXP);
    Rcpp::traits::input_parameter< NumericVector >::type alpha2(alpha2SEXP);
    Rcpp::traits::input_parameter< NumericVector >::type intercept2(intercept2SEXP);
    Rcpp::traits::input_parameter< NumericVector >::type sf2(sf2SEXP);
    Rcpp::traits::input_parameter< NumericVector >::type FC2(FC2SEXP);
    Rcpp::traits::input_parameter< NumericVector >::type cond2(cond2SEXP);
    Rcpp::traits::input_parameter< NumericVector >::type stepFC(stepFCSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type toleration(tolerationSEXP);
    rcpp_result_gen = Rcpp::wrap(boundFC(k1, alpha1, intercept1, sf1, FC1, cond1, k2, alpha2, intercept2, sf2, FC2, cond2, stepFC, toleration));
    return rcpp_result_gen;
END_RCPP
}
// xtail_test
NumericVector xtail_test(NumericVector k1, NumericVector k2, NumericVector ints1, NumericVector ints2, NumericVector log2FC_1, NumericVector log2FC_2, NumericVector disper1, NumericVector disper2, NumericVector sf1, NumericVector sf2, NumericVector cond1, NumericVector cond2, IntegerVector bin, NumericVector ci);
RcppExport SEXP _xtail_xtail_test(SEXP k1SEXP, SEXP k2SEXP, SEXP ints1SEXP, SEXP ints2SEXP, SEXP log2FC_1SEXP, SEXP log2FC_2SEXP, SEXP disper1SEXP, SEXP disper2SEXP, SEXP sf1SEXP, SEXP sf2SEXP, SEXP cond1SEXP, SEXP cond2SEXP, SEXP binSEXP, SEXP ciSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type k1(k1SEXP);
    Rcpp::traits::input_parameter< NumericVector >::type k2(k2SEXP);
    Rcpp::traits::input_parameter< NumericVector >::type ints1(ints1SEXP);
    Rcpp::traits::input_parameter< NumericVector >::type ints2(ints2SEXP);
    Rcpp::traits::input_parameter< NumericVector >::type log2FC_1(log2FC_1SEXP);
    Rcpp::traits::input_parameter< NumericVector >::type log2FC_2(log2FC_2SEXP);
    Rcpp::traits::input_parameter< NumericVector >::type disper1(disper1SEXP);
    Rcpp::traits::input_parameter< NumericVector >::type disper2(disper2SEXP);
    Rcpp::traits::input_parameter< NumericVector >::type sf1(sf1SEXP);
    Rcpp::traits::input_parameter< NumericVector >::type sf2(sf2SEXP);
    Rcpp::traits::input_parameter< NumericVector >::type cond1(cond1SEXP);
    Rcpp::traits::input_parameter< NumericVector >::type cond2(cond2SEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type bin(binSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type ci(ciSEXP);
    rcpp_result_gen = Rcpp::wrap(xtail_test(k1, k2, ints1, ints2, log2FC_1, log2FC_2, disper1, disper2, sf1, sf2, cond1, cond2, bin, ci));
    return rcpp_result_gen;
END_RCPP
}

static const R_CallMethodDef CallEntries[] = {
    {"_xtail_fitBeta2", (DL_FUNC) &_xtail_fitBeta2, 10},
    {"_xtail_probDensity", (DL_FUNC) &_xtail_probDensity, 6},
    {"_xtail_probMatrix", (DL_FUNC) &_xtail_probMatrix, 3},
    {"_xtail_probMatrixCI", (DL_FUNC) &_xtail_probMatrixCI, 4},
    {"_xtail_boundFC", (DL_FUNC) &_xtail_boundFC, 14},
    {"_xtail_xtail_test", (DL_FUNC) &_xtail_xtail_test, 14},
    {NULL, NULL, 0}
};

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