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

#include <Rcpp.h>

using namespace Rcpp;

// adjust_shift_variance
Rcpp::NumericVector adjust_shift_variance(Rcpp::NumericMatrix data1, Rcpp::NumericMatrix data2, Rcpp::NumericMatrix vect, double sigma2, Rcpp::IntegerVector restrict1, Rcpp::IntegerVector restrict2);
RcppExport SEXP _batchelor_adjust_shift_variance(SEXP data1SEXP, SEXP data2SEXP, SEXP vectSEXP, SEXP sigma2SEXP, SEXP restrict1SEXP, SEXP restrict2SEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type data1(data1SEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type data2(data2SEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type vect(vectSEXP);
    Rcpp::traits::input_parameter< double >::type sigma2(sigma2SEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type restrict1(restrict1SEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type restrict2(restrict2SEXP);
    rcpp_result_gen = Rcpp::wrap(adjust_shift_variance(data1, data2, vect, sigma2, restrict1, restrict2));
    return rcpp_result_gen;
END_RCPP
}
// find_mutual_nns
Rcpp::List find_mutual_nns(Rcpp::IntegerMatrix left, Rcpp::IntegerMatrix right);
RcppExport SEXP _batchelor_find_mutual_nns(SEXP leftSEXP, SEXP rightSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< Rcpp::IntegerMatrix >::type left(leftSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerMatrix >::type right(rightSEXP);
    rcpp_result_gen = Rcpp::wrap(find_mutual_nns(left, right));
    return rcpp_result_gen;
END_RCPP
}
// smooth_gaussian_kernel
SEXP smooth_gaussian_kernel(Rcpp::NumericMatrix averaged, Rcpp::IntegerVector index, Rcpp::NumericMatrix mat, double sigma2);
RcppExport SEXP _batchelor_smooth_gaussian_kernel(SEXP averagedSEXP, SEXP indexSEXP, SEXP matSEXP, SEXP sigma2SEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type averaged(averagedSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type index(indexSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type mat(matSEXP);
    Rcpp::traits::input_parameter< double >::type sigma2(sigma2SEXP);
    rcpp_result_gen = Rcpp::wrap(smooth_gaussian_kernel(averaged, index, mat, sigma2));
    return rcpp_result_gen;
END_RCPP
}

static const R_CallMethodDef CallEntries[] = {
    {"_batchelor_adjust_shift_variance", (DL_FUNC) &_batchelor_adjust_shift_variance, 6},
    {"_batchelor_find_mutual_nns", (DL_FUNC) &_batchelor_find_mutual_nns, 2},
    {"_batchelor_smooth_gaussian_kernel", (DL_FUNC) &_batchelor_smooth_gaussian_kernel, 4},
    {NULL, NULL, 0}
};

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