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

#include "../inst/include/ravetools.h"
#include <RcppEigen.h>
#include <Rcpp.h>
#include <string>
#include <set>

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

// baselineArray
Rcpp::NumericVector baselineArray(const Rcpp::NumericVector& x, const Rcpp::NumericVector& bl, const Rcpp::IntegerVector dims, const Rcpp::IntegerVector bldims, const int tidx, const Rcpp::IntegerVector& per, const Rcpp::IntegerVector& rest, const int method);
RcppExport SEXP _ravetools_baselineArray(SEXP xSEXP, SEXP blSEXP, SEXP dimsSEXP, SEXP bldimsSEXP, SEXP tidxSEXP, SEXP perSEXP, SEXP restSEXP, SEXP methodSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const Rcpp::NumericVector& >::type x(xSEXP);
    Rcpp::traits::input_parameter< const Rcpp::NumericVector& >::type bl(blSEXP);
    Rcpp::traits::input_parameter< const Rcpp::IntegerVector >::type dims(dimsSEXP);
    Rcpp::traits::input_parameter< const Rcpp::IntegerVector >::type bldims(bldimsSEXP);
    Rcpp::traits::input_parameter< const int >::type tidx(tidxSEXP);
    Rcpp::traits::input_parameter< const Rcpp::IntegerVector& >::type per(perSEXP);
    Rcpp::traits::input_parameter< const Rcpp::IntegerVector& >::type rest(restSEXP);
    Rcpp::traits::input_parameter< const int >::type method(methodSEXP);
    rcpp_result_gen = Rcpp::wrap(baselineArray(x, bl, dims, bldims, tidx, per, rest, method));
    return rcpp_result_gen;
END_RCPP
}
// bucketFillVolume
SEXP bucketFillVolume(SEXP volume, R_xlen_t x, R_xlen_t y, R_xlen_t z, int fill);
RcppExport SEXP _ravetools_bucketFillVolume(SEXP volumeSEXP, SEXP xSEXP, SEXP ySEXP, SEXP zSEXP, SEXP fillSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type volume(volumeSEXP);
    Rcpp::traits::input_parameter< R_xlen_t >::type x(xSEXP);
    Rcpp::traits::input_parameter< R_xlen_t >::type y(ySEXP);
    Rcpp::traits::input_parameter< R_xlen_t >::type z(zSEXP);
    Rcpp::traits::input_parameter< int >::type fill(fillSEXP);
    rcpp_result_gen = Rcpp::wrap(bucketFillVolume(volume, x, y, z, fill));
    return rcpp_result_gen;
END_RCPP
}
// carla_zmin_all
SEXP carla_zmin_all(SEXP x_ord, SEXP ind);
RcppExport SEXP _ravetools_carla_zmin_all(SEXP x_ordSEXP, SEXP indSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< SEXP >::type x_ord(x_ordSEXP);
    Rcpp::traits::input_parameter< SEXP >::type ind(indSEXP);
    rcpp_result_gen = Rcpp::wrap(carla_zmin_all(x_ord, ind));
    return rcpp_result_gen;
END_RCPP
}
// collapser_cplx
SEXP collapser_cplx(SEXP x, SEXP keep, const int method, const int average);
static SEXP _ravetools_collapser_cplx_try(SEXP xSEXP, SEXP keepSEXP, SEXP methodSEXP, SEXP averageSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< SEXP >::type x(xSEXP);
    Rcpp::traits::input_parameter< SEXP >::type keep(keepSEXP);
    Rcpp::traits::input_parameter< const int >::type method(methodSEXP);
    Rcpp::traits::input_parameter< const int >::type average(averageSEXP);
    rcpp_result_gen = Rcpp::wrap(collapser_cplx(x, keep, method, average));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_collapser_cplx(SEXP xSEXP, SEXP keepSEXP, SEXP methodSEXP, SEXP averageSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_collapser_cplx_try(xSEXP, keepSEXP, methodSEXP, averageSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// collapser_real
SEXP collapser_real(SEXP x, SEXP keep, const int method, const int average);
static SEXP _ravetools_collapser_real_try(SEXP xSEXP, SEXP keepSEXP, SEXP methodSEXP, SEXP averageSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< SEXP >::type x(xSEXP);
    Rcpp::traits::input_parameter< SEXP >::type keep(keepSEXP);
    Rcpp::traits::input_parameter< const int >::type method(methodSEXP);
    Rcpp::traits::input_parameter< const int >::type average(averageSEXP);
    rcpp_result_gen = Rcpp::wrap(collapser_real(x, keep, method, average));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_collapser_real(SEXP xSEXP, SEXP keepSEXP, SEXP methodSEXP, SEXP averageSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_collapser_real_try(xSEXP, keepSEXP, methodSEXP, averageSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// columnQuantile
SEXP columnQuantile(SEXP& x, const double& prob, const bool& naRm);
static SEXP _ravetools_columnQuantile_try(SEXP xSEXP, SEXP probSEXP, SEXP naRmSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< SEXP& >::type x(xSEXP);
    Rcpp::traits::input_parameter< const double& >::type prob(probSEXP);
    Rcpp::traits::input_parameter< const bool& >::type naRm(naRmSEXP);
    rcpp_result_gen = Rcpp::wrap(columnQuantile(x, prob, naRm));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_columnQuantile(SEXP xSEXP, SEXP probSEXP, SEXP naRmSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_columnQuantile_try(xSEXP, probSEXP, naRmSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// columnMedian
SEXP columnMedian(SEXP& x, const bool& naRm);
static SEXP _ravetools_columnMedian_try(SEXP xSEXP, SEXP naRmSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< SEXP& >::type x(xSEXP);
    Rcpp::traits::input_parameter< const bool& >::type naRm(naRmSEXP);
    rcpp_result_gen = Rcpp::wrap(columnMedian(x, naRm));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_columnMedian(SEXP xSEXP, SEXP naRmSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_columnMedian_try(xSEXP, naRmSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// fastColMeans
SEXP fastColMeans(const SEXP& x, const SEXP& col, const SEXP& xDim);
static SEXP _ravetools_fastColMeans_try(SEXP xSEXP, SEXP colSEXP, SEXP xDimSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type x(xSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type col(colSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type xDim(xDimSEXP);
    rcpp_result_gen = Rcpp::wrap(fastColMeans(x, col, xDim));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_fastColMeans(SEXP xSEXP, SEXP colSEXP, SEXP xDimSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_fastColMeans_try(xSEXP, colSEXP, xDimSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// quickQuantile
SEXP quickQuantile(const SEXP& x, const double& prob, const bool& naRm);
static SEXP _ravetools_quickQuantile_try(SEXP xSEXP, SEXP probSEXP, SEXP naRmSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type x(xSEXP);
    Rcpp::traits::input_parameter< const double& >::type prob(probSEXP);
    Rcpp::traits::input_parameter< const bool& >::type naRm(naRmSEXP);
    rcpp_result_gen = Rcpp::wrap(quickQuantile(x, prob, naRm));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_quickQuantile(SEXP xSEXP, SEXP probSEXP, SEXP naRmSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_quickQuantile_try(xSEXP, probSEXP, naRmSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// quickMedian
SEXP quickMedian(const SEXP& x, const bool& naRm);
static SEXP _ravetools_quickMedian_try(SEXP xSEXP, SEXP naRmSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type x(xSEXP);
    Rcpp::traits::input_parameter< const bool& >::type naRm(naRmSEXP);
    rcpp_result_gen = Rcpp::wrap(quickMedian(x, naRm));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_quickMedian(SEXP xSEXP, SEXP naRmSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_quickMedian_try(xSEXP, naRmSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// fastcov
SEXP fastcov(const SEXP& x1, const SEXP& x2, const SEXP& col1, const SEXP& col2, const double& df);
static SEXP _ravetools_fastcov_try(SEXP x1SEXP, SEXP x2SEXP, SEXP col1SEXP, SEXP col2SEXP, SEXP dfSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type x1(x1SEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type x2(x2SEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type col1(col1SEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type col2(col2SEXP);
    Rcpp::traits::input_parameter< const double& >::type df(dfSEXP);
    rcpp_result_gen = Rcpp::wrap(fastcov(x1, x2, col1, col2, df));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_fastcov(SEXP x1SEXP, SEXP x2SEXP, SEXP col1SEXP, SEXP col2SEXP, SEXP dfSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_fastcov_try(x1SEXP, x2SEXP, col1SEXP, col2SEXP, dfSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// fftw_r2c
SEXP fftw_r2c(SEXP data, int HermConj, int fftwplanopt, SEXP ret);
static SEXP _ravetools_fftw_r2c_try(SEXP dataSEXP, SEXP HermConjSEXP, SEXP fftwplanoptSEXP, SEXP retSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< SEXP >::type data(dataSEXP);
    Rcpp::traits::input_parameter< int >::type HermConj(HermConjSEXP);
    Rcpp::traits::input_parameter< int >::type fftwplanopt(fftwplanoptSEXP);
    Rcpp::traits::input_parameter< SEXP >::type ret(retSEXP);
    rcpp_result_gen = Rcpp::wrap(fftw_r2c(data, HermConj, fftwplanopt, ret));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_fftw_r2c(SEXP dataSEXP, SEXP HermConjSEXP, SEXP fftwplanoptSEXP, SEXP retSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_fftw_r2c_try(dataSEXP, HermConjSEXP, fftwplanoptSEXP, retSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// fftw_c2c
SEXP fftw_c2c(SEXP data, int inverse, int fftwplanopt, SEXP ret);
static SEXP _ravetools_fftw_c2c_try(SEXP dataSEXP, SEXP inverseSEXP, SEXP fftwplanoptSEXP, SEXP retSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< SEXP >::type data(dataSEXP);
    Rcpp::traits::input_parameter< int >::type inverse(inverseSEXP);
    Rcpp::traits::input_parameter< int >::type fftwplanopt(fftwplanoptSEXP);
    Rcpp::traits::input_parameter< SEXP >::type ret(retSEXP);
    rcpp_result_gen = Rcpp::wrap(fftw_c2c(data, inverse, fftwplanopt, ret));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_fftw_c2c(SEXP dataSEXP, SEXP inverseSEXP, SEXP fftwplanoptSEXP, SEXP retSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_fftw_c2c_try(dataSEXP, inverseSEXP, fftwplanoptSEXP, retSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// fftw_c2r
SEXP fftw_c2r(SEXP data, int HermConj, int fftwplanopt, SEXP ret);
static SEXP _ravetools_fftw_c2r_try(SEXP dataSEXP, SEXP HermConjSEXP, SEXP fftwplanoptSEXP, SEXP retSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< SEXP >::type data(dataSEXP);
    Rcpp::traits::input_parameter< int >::type HermConj(HermConjSEXP);
    Rcpp::traits::input_parameter< int >::type fftwplanopt(fftwplanoptSEXP);
    Rcpp::traits::input_parameter< SEXP >::type ret(retSEXP);
    rcpp_result_gen = Rcpp::wrap(fftw_c2r(data, HermConj, fftwplanopt, ret));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_fftw_c2r(SEXP dataSEXP, SEXP HermConjSEXP, SEXP fftwplanoptSEXP, SEXP retSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_fftw_c2r_try(dataSEXP, HermConjSEXP, fftwplanoptSEXP, retSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// mvfftw_r2c
SEXP mvfftw_r2c(SEXP data, int fftwplanopt, int HermConj, SEXP ret);
static SEXP _ravetools_mvfftw_r2c_try(SEXP dataSEXP, SEXP fftwplanoptSEXP, SEXP HermConjSEXP, SEXP retSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< SEXP >::type data(dataSEXP);
    Rcpp::traits::input_parameter< int >::type fftwplanopt(fftwplanoptSEXP);
    Rcpp::traits::input_parameter< int >::type HermConj(HermConjSEXP);
    Rcpp::traits::input_parameter< SEXP >::type ret(retSEXP);
    rcpp_result_gen = Rcpp::wrap(mvfftw_r2c(data, fftwplanopt, HermConj, ret));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_mvfftw_r2c(SEXP dataSEXP, SEXP fftwplanoptSEXP, SEXP HermConjSEXP, SEXP retSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_mvfftw_r2c_try(dataSEXP, fftwplanoptSEXP, HermConjSEXP, retSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// mvfftw_c2c
SEXP mvfftw_c2c(SEXP data, int inverse, int fftwplanopt, SEXP ret);
static SEXP _ravetools_mvfftw_c2c_try(SEXP dataSEXP, SEXP inverseSEXP, SEXP fftwplanoptSEXP, SEXP retSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< SEXP >::type data(dataSEXP);
    Rcpp::traits::input_parameter< int >::type inverse(inverseSEXP);
    Rcpp::traits::input_parameter< int >::type fftwplanopt(fftwplanoptSEXP);
    Rcpp::traits::input_parameter< SEXP >::type ret(retSEXP);
    rcpp_result_gen = Rcpp::wrap(mvfftw_c2c(data, inverse, fftwplanopt, ret));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_mvfftw_c2c(SEXP dataSEXP, SEXP inverseSEXP, SEXP fftwplanoptSEXP, SEXP retSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_mvfftw_c2c_try(dataSEXP, inverseSEXP, fftwplanoptSEXP, retSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// mvfftw_c2r
SEXP mvfftw_c2r(SEXP data, int fftwplanopt, int retrows, SEXP ret);
static SEXP _ravetools_mvfftw_c2r_try(SEXP dataSEXP, SEXP fftwplanoptSEXP, SEXP retrowsSEXP, SEXP retSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< SEXP >::type data(dataSEXP);
    Rcpp::traits::input_parameter< int >::type fftwplanopt(fftwplanoptSEXP);
    Rcpp::traits::input_parameter< int >::type retrows(retrowsSEXP);
    Rcpp::traits::input_parameter< SEXP >::type ret(retSEXP);
    rcpp_result_gen = Rcpp::wrap(mvfftw_c2r(data, fftwplanopt, retrows, ret));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_mvfftw_c2r(SEXP dataSEXP, SEXP fftwplanoptSEXP, SEXP retrowsSEXP, SEXP retSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_mvfftw_c2r_try(dataSEXP, fftwplanoptSEXP, retrowsSEXP, retSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// fftw_r2c_2d
SEXP fftw_r2c_2d(SEXP data, int HermConj, int fftwplanopt, SEXP ret);
static SEXP _ravetools_fftw_r2c_2d_try(SEXP dataSEXP, SEXP HermConjSEXP, SEXP fftwplanoptSEXP, SEXP retSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< SEXP >::type data(dataSEXP);
    Rcpp::traits::input_parameter< int >::type HermConj(HermConjSEXP);
    Rcpp::traits::input_parameter< int >::type fftwplanopt(fftwplanoptSEXP);
    Rcpp::traits::input_parameter< SEXP >::type ret(retSEXP);
    rcpp_result_gen = Rcpp::wrap(fftw_r2c_2d(data, HermConj, fftwplanopt, ret));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_fftw_r2c_2d(SEXP dataSEXP, SEXP HermConjSEXP, SEXP fftwplanoptSEXP, SEXP retSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_fftw_r2c_2d_try(dataSEXP, HermConjSEXP, fftwplanoptSEXP, retSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// fftw_c2c_2d
SEXP fftw_c2c_2d(SEXP data, int inverse, int fftwplanopt, SEXP ret);
static SEXP _ravetools_fftw_c2c_2d_try(SEXP dataSEXP, SEXP inverseSEXP, SEXP fftwplanoptSEXP, SEXP retSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< SEXP >::type data(dataSEXP);
    Rcpp::traits::input_parameter< int >::type inverse(inverseSEXP);
    Rcpp::traits::input_parameter< int >::type fftwplanopt(fftwplanoptSEXP);
    Rcpp::traits::input_parameter< SEXP >::type ret(retSEXP);
    rcpp_result_gen = Rcpp::wrap(fftw_c2c_2d(data, inverse, fftwplanopt, ret));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_fftw_c2c_2d(SEXP dataSEXP, SEXP inverseSEXP, SEXP fftwplanoptSEXP, SEXP retSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_fftw_c2c_2d_try(dataSEXP, inverseSEXP, fftwplanoptSEXP, retSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// fftw_r2c_3d
SEXP fftw_r2c_3d(SEXP data, int HermConj, int fftwplanopt, SEXP ret);
static SEXP _ravetools_fftw_r2c_3d_try(SEXP dataSEXP, SEXP HermConjSEXP, SEXP fftwplanoptSEXP, SEXP retSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< SEXP >::type data(dataSEXP);
    Rcpp::traits::input_parameter< int >::type HermConj(HermConjSEXP);
    Rcpp::traits::input_parameter< int >::type fftwplanopt(fftwplanoptSEXP);
    Rcpp::traits::input_parameter< SEXP >::type ret(retSEXP);
    rcpp_result_gen = Rcpp::wrap(fftw_r2c_3d(data, HermConj, fftwplanopt, ret));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_fftw_r2c_3d(SEXP dataSEXP, SEXP HermConjSEXP, SEXP fftwplanoptSEXP, SEXP retSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_fftw_r2c_3d_try(dataSEXP, HermConjSEXP, fftwplanoptSEXP, retSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// fftw_c2c_3d
SEXP fftw_c2c_3d(SEXP data, int inverse, int fftwplanopt, SEXP ret);
static SEXP _ravetools_fftw_c2c_3d_try(SEXP dataSEXP, SEXP inverseSEXP, SEXP fftwplanoptSEXP, SEXP retSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< SEXP >::type data(dataSEXP);
    Rcpp::traits::input_parameter< int >::type inverse(inverseSEXP);
    Rcpp::traits::input_parameter< int >::type fftwplanopt(fftwplanoptSEXP);
    Rcpp::traits::input_parameter< SEXP >::type ret(retSEXP);
    rcpp_result_gen = Rcpp::wrap(fftw_c2c_3d(data, inverse, fftwplanopt, ret));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_fftw_c2c_3d(SEXP dataSEXP, SEXP inverseSEXP, SEXP fftwplanoptSEXP, SEXP retSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_fftw_c2c_3d_try(dataSEXP, inverseSEXP, fftwplanoptSEXP, retSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// conjugate
SEXP conjugate(SEXP data);
static SEXP _ravetools_conjugate_try(SEXP dataSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< SEXP >::type data(dataSEXP);
    rcpp_result_gen = Rcpp::wrap(conjugate(data));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_conjugate(SEXP dataSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_conjugate_try(dataSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// cpp_filter
SEXP cpp_filter(SEXP b, SEXP a, SEXP x, SEXP z);
static SEXP _ravetools_cpp_filter_try(SEXP bSEXP, SEXP aSEXP, SEXP xSEXP, SEXP zSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< SEXP >::type b(bSEXP);
    Rcpp::traits::input_parameter< SEXP >::type a(aSEXP);
    Rcpp::traits::input_parameter< SEXP >::type x(xSEXP);
    Rcpp::traits::input_parameter< SEXP >::type z(zSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_filter(b, a, x, z));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_cpp_filter(SEXP bSEXP, SEXP aSEXP, SEXP xSEXP, SEXP zSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_cpp_filter_try(bSEXP, aSEXP, xSEXP, zSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Matrix4__new
SEXP Matrix4__new();
RcppExport SEXP _ravetools_Matrix4__new() {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    rcpp_result_gen = Rcpp::wrap(Matrix4__new());
    return rcpp_result_gen;
END_RCPP
}
// Matrix4__to_array
SEXP Matrix4__to_array(const SEXP& self);
RcppExport SEXP _ravetools_Matrix4__to_array(SEXP selfSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    rcpp_result_gen = Rcpp::wrap(Matrix4__to_array(self));
    return rcpp_result_gen;
END_RCPP
}
// Matrix4__from_array
void Matrix4__from_array(const SEXP& self, const std::vector<double>& array, size_t offset);
RcppExport SEXP _ravetools_Matrix4__from_array(SEXP selfSEXP, SEXP arraySEXP, SEXP offsetSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const std::vector<double>& >::type array(arraySEXP);
    Rcpp::traits::input_parameter< size_t >::type offset(offsetSEXP);
    Matrix4__from_array(self, array, offset);
    return R_NilValue;
END_RCPP
}
// Matrix4__identity
void Matrix4__identity(const SEXP& self);
RcppExport SEXP _ravetools_Matrix4__identity(SEXP selfSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Matrix4__identity(self);
    return R_NilValue;
END_RCPP
}
// Matrix4__copy
void Matrix4__copy(const SEXP& self, const SEXP& m);
RcppExport SEXP _ravetools_Matrix4__copy(SEXP selfSEXP, SEXP mSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type m(mSEXP);
    Matrix4__copy(self, m);
    return R_NilValue;
END_RCPP
}
// Matrix4__copy_position
void Matrix4__copy_position(const SEXP& self, const SEXP& m);
RcppExport SEXP _ravetools_Matrix4__copy_position(SEXP selfSEXP, SEXP mSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type m(mSEXP);
    Matrix4__copy_position(self, m);
    return R_NilValue;
END_RCPP
}
// Matrix4__extract_basis
void Matrix4__extract_basis(const SEXP& self, const SEXP& x, const SEXP& y, const SEXP& z);
RcppExport SEXP _ravetools_Matrix4__extract_basis(SEXP selfSEXP, SEXP xSEXP, SEXP ySEXP, SEXP zSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type x(xSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type y(ySEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type z(zSEXP);
    Matrix4__extract_basis(self, x, y, z);
    return R_NilValue;
END_RCPP
}
// Matrix4__make_basis
void Matrix4__make_basis(const SEXP& self, const SEXP& x, const SEXP& y, const SEXP& z);
RcppExport SEXP _ravetools_Matrix4__make_basis(SEXP selfSEXP, SEXP xSEXP, SEXP ySEXP, SEXP zSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type x(xSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type y(ySEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type z(zSEXP);
    Matrix4__make_basis(self, x, y, z);
    return R_NilValue;
END_RCPP
}
// Matrix4__extract_rotation
void Matrix4__extract_rotation(const SEXP& self, const SEXP& m);
RcppExport SEXP _ravetools_Matrix4__extract_rotation(SEXP selfSEXP, SEXP mSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type m(mSEXP);
    Matrix4__extract_rotation(self, m);
    return R_NilValue;
END_RCPP
}
// Matrix4__look_at
void Matrix4__look_at(const SEXP& self, const SEXP& eye, const SEXP& target, const SEXP& up);
RcppExport SEXP _ravetools_Matrix4__look_at(SEXP selfSEXP, SEXP eyeSEXP, SEXP targetSEXP, SEXP upSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type eye(eyeSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type target(targetSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type up(upSEXP);
    Matrix4__look_at(self, eye, target, up);
    return R_NilValue;
END_RCPP
}
// Matrix4__multiply_matrices
void Matrix4__multiply_matrices(const SEXP& self, const SEXP& a, const SEXP& b);
RcppExport SEXP _ravetools_Matrix4__multiply_matrices(SEXP selfSEXP, SEXP aSEXP, SEXP bSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type a(aSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type b(bSEXP);
    Matrix4__multiply_matrices(self, a, b);
    return R_NilValue;
END_RCPP
}
// Matrix4__multiply_scalar
void Matrix4__multiply_scalar(const SEXP& self, const double& s);
RcppExport SEXP _ravetools_Matrix4__multiply_scalar(SEXP selfSEXP, SEXP sSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const double& >::type s(sSEXP);
    Matrix4__multiply_scalar(self, s);
    return R_NilValue;
END_RCPP
}
// Matrix4__determinant
double Matrix4__determinant(const SEXP& self);
RcppExport SEXP _ravetools_Matrix4__determinant(SEXP selfSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    rcpp_result_gen = Rcpp::wrap(Matrix4__determinant(self));
    return rcpp_result_gen;
END_RCPP
}
// Matrix4__transpose
void Matrix4__transpose(const SEXP& self);
RcppExport SEXP _ravetools_Matrix4__transpose(SEXP selfSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Matrix4__transpose(self);
    return R_NilValue;
END_RCPP
}
// Matrix4__set_position
void Matrix4__set_position(const SEXP& self, const double& x, const double& y, const double& z);
RcppExport SEXP _ravetools_Matrix4__set_position(SEXP selfSEXP, SEXP xSEXP, SEXP ySEXP, SEXP zSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const double& >::type x(xSEXP);
    Rcpp::traits::input_parameter< const double& >::type y(ySEXP);
    Rcpp::traits::input_parameter< const double& >::type z(zSEXP);
    Matrix4__set_position(self, x, y, z);
    return R_NilValue;
END_RCPP
}
// Matrix4__invert
void Matrix4__invert(const SEXP& self);
RcppExport SEXP _ravetools_Matrix4__invert(SEXP selfSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Matrix4__invert(self);
    return R_NilValue;
END_RCPP
}
// Matrix4__scale
void Matrix4__scale(const SEXP& self, const SEXP& v);
RcppExport SEXP _ravetools_Matrix4__scale(SEXP selfSEXP, SEXP vSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type v(vSEXP);
    Matrix4__scale(self, v);
    return R_NilValue;
END_RCPP
}
// Matrix4__get_max_scale_on_axis
double Matrix4__get_max_scale_on_axis(const SEXP& self);
RcppExport SEXP _ravetools_Matrix4__get_max_scale_on_axis(SEXP selfSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    rcpp_result_gen = Rcpp::wrap(Matrix4__get_max_scale_on_axis(self));
    return rcpp_result_gen;
END_RCPP
}
// Matrix4__make_translation
void Matrix4__make_translation(const SEXP& self, const double& x, const double& y, const double& z);
RcppExport SEXP _ravetools_Matrix4__make_translation(SEXP selfSEXP, SEXP xSEXP, SEXP ySEXP, SEXP zSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const double& >::type x(xSEXP);
    Rcpp::traits::input_parameter< const double& >::type y(ySEXP);
    Rcpp::traits::input_parameter< const double& >::type z(zSEXP);
    Matrix4__make_translation(self, x, y, z);
    return R_NilValue;
END_RCPP
}
// Matrix4__make_rotation_x
void Matrix4__make_rotation_x(const SEXP& self, const double& theta);
RcppExport SEXP _ravetools_Matrix4__make_rotation_x(SEXP selfSEXP, SEXP thetaSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const double& >::type theta(thetaSEXP);
    Matrix4__make_rotation_x(self, theta);
    return R_NilValue;
END_RCPP
}
// Matrix4__make_rotation_y
void Matrix4__make_rotation_y(const SEXP& self, const double& theta);
RcppExport SEXP _ravetools_Matrix4__make_rotation_y(SEXP selfSEXP, SEXP thetaSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const double& >::type theta(thetaSEXP);
    Matrix4__make_rotation_y(self, theta);
    return R_NilValue;
END_RCPP
}
// Matrix4__make_rotation_z
void Matrix4__make_rotation_z(const SEXP& self, const double& theta);
RcppExport SEXP _ravetools_Matrix4__make_rotation_z(SEXP selfSEXP, SEXP thetaSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const double& >::type theta(thetaSEXP);
    Matrix4__make_rotation_z(self, theta);
    return R_NilValue;
END_RCPP
}
// Matrix4__make_rotation_axis
void Matrix4__make_rotation_axis(const SEXP& self, const SEXP& axis, const double& angle);
RcppExport SEXP _ravetools_Matrix4__make_rotation_axis(SEXP selfSEXP, SEXP axisSEXP, SEXP angleSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type axis(axisSEXP);
    Rcpp::traits::input_parameter< const double& >::type angle(angleSEXP);
    Matrix4__make_rotation_axis(self, axis, angle);
    return R_NilValue;
END_RCPP
}
// Matrix4__make_scale
void Matrix4__make_scale(const SEXP& self, const double& x, const double& y, const double& z);
RcppExport SEXP _ravetools_Matrix4__make_scale(SEXP selfSEXP, SEXP xSEXP, SEXP ySEXP, SEXP zSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const double& >::type x(xSEXP);
    Rcpp::traits::input_parameter< const double& >::type y(ySEXP);
    Rcpp::traits::input_parameter< const double& >::type z(zSEXP);
    Matrix4__make_scale(self, x, y, z);
    return R_NilValue;
END_RCPP
}
// Matrix4__make_shear
void Matrix4__make_shear(const SEXP& self, const double& xy, const double& xz, const double& yx, const double& yz, const double& zx, const double& zy);
RcppExport SEXP _ravetools_Matrix4__make_shear(SEXP selfSEXP, SEXP xySEXP, SEXP xzSEXP, SEXP yxSEXP, SEXP yzSEXP, SEXP zxSEXP, SEXP zySEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const double& >::type xy(xySEXP);
    Rcpp::traits::input_parameter< const double& >::type xz(xzSEXP);
    Rcpp::traits::input_parameter< const double& >::type yx(yxSEXP);
    Rcpp::traits::input_parameter< const double& >::type yz(yzSEXP);
    Rcpp::traits::input_parameter< const double& >::type zx(zxSEXP);
    Rcpp::traits::input_parameter< const double& >::type zy(zySEXP);
    Matrix4__make_shear(self, xy, xz, yx, yz, zx, zy);
    return R_NilValue;
END_RCPP
}
// Matrix4__make_perspective
void Matrix4__make_perspective(const SEXP& self, const double& left, const double& right, const double& top, const double& bottom, const double& near, const double& far);
RcppExport SEXP _ravetools_Matrix4__make_perspective(SEXP selfSEXP, SEXP leftSEXP, SEXP rightSEXP, SEXP topSEXP, SEXP bottomSEXP, SEXP nearSEXP, SEXP farSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const double& >::type left(leftSEXP);
    Rcpp::traits::input_parameter< const double& >::type right(rightSEXP);
    Rcpp::traits::input_parameter< const double& >::type top(topSEXP);
    Rcpp::traits::input_parameter< const double& >::type bottom(bottomSEXP);
    Rcpp::traits::input_parameter< const double& >::type near(nearSEXP);
    Rcpp::traits::input_parameter< const double& >::type far(farSEXP);
    Matrix4__make_perspective(self, left, right, top, bottom, near, far);
    return R_NilValue;
END_RCPP
}
// Matrix4__make_orthographic
void Matrix4__make_orthographic(const SEXP& self, const double& left, const double& right, const double& top, const double& bottom, const double& near, const double& far);
RcppExport SEXP _ravetools_Matrix4__make_orthographic(SEXP selfSEXP, SEXP leftSEXP, SEXP rightSEXP, SEXP topSEXP, SEXP bottomSEXP, SEXP nearSEXP, SEXP farSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const double& >::type left(leftSEXP);
    Rcpp::traits::input_parameter< const double& >::type right(rightSEXP);
    Rcpp::traits::input_parameter< const double& >::type top(topSEXP);
    Rcpp::traits::input_parameter< const double& >::type bottom(bottomSEXP);
    Rcpp::traits::input_parameter< const double& >::type near(nearSEXP);
    Rcpp::traits::input_parameter< const double& >::type far(farSEXP);
    Matrix4__make_orthographic(self, left, right, top, bottom, near, far);
    return R_NilValue;
END_RCPP
}
// Quaternion__new
SEXP Quaternion__new();
RcppExport SEXP _ravetools_Quaternion__new() {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    rcpp_result_gen = Rcpp::wrap(Quaternion__new());
    return rcpp_result_gen;
END_RCPP
}
// Quaternion__set
void Quaternion__set(SEXP& self, const double& x, const double& y, const double& z, const double& w);
RcppExport SEXP _ravetools_Quaternion__set(SEXP selfSEXP, SEXP xSEXP, SEXP ySEXP, SEXP zSEXP, SEXP wSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const double& >::type x(xSEXP);
    Rcpp::traits::input_parameter< const double& >::type y(ySEXP);
    Rcpp::traits::input_parameter< const double& >::type z(zSEXP);
    Rcpp::traits::input_parameter< const double& >::type w(wSEXP);
    Quaternion__set(self, x, y, z, w);
    return R_NilValue;
END_RCPP
}
// Quaternion__copy
void Quaternion__copy(SEXP& self, SEXP& quaternion);
RcppExport SEXP _ravetools_Quaternion__copy(SEXP selfSEXP, SEXP quaternionSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< SEXP& >::type quaternion(quaternionSEXP);
    Quaternion__copy(self, quaternion);
    return R_NilValue;
END_RCPP
}
// Quaternion__to_array
SEXP Quaternion__to_array(SEXP& self);
RcppExport SEXP _ravetools_Quaternion__to_array(SEXP selfSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP& >::type self(selfSEXP);
    rcpp_result_gen = Rcpp::wrap(Quaternion__to_array(self));
    return rcpp_result_gen;
END_RCPP
}
// Quaternion__getX
double Quaternion__getX(SEXP& self);
RcppExport SEXP _ravetools_Quaternion__getX(SEXP selfSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP& >::type self(selfSEXP);
    rcpp_result_gen = Rcpp::wrap(Quaternion__getX(self));
    return rcpp_result_gen;
END_RCPP
}
// Quaternion__setX
void Quaternion__setX(SEXP& self, const double& v);
RcppExport SEXP _ravetools_Quaternion__setX(SEXP selfSEXP, SEXP vSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const double& >::type v(vSEXP);
    Quaternion__setX(self, v);
    return R_NilValue;
END_RCPP
}
// Quaternion__getY
double Quaternion__getY(SEXP& self);
RcppExport SEXP _ravetools_Quaternion__getY(SEXP selfSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP& >::type self(selfSEXP);
    rcpp_result_gen = Rcpp::wrap(Quaternion__getY(self));
    return rcpp_result_gen;
END_RCPP
}
// Quaternion__setY
void Quaternion__setY(SEXP& self, const double& v);
RcppExport SEXP _ravetools_Quaternion__setY(SEXP selfSEXP, SEXP vSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const double& >::type v(vSEXP);
    Quaternion__setY(self, v);
    return R_NilValue;
END_RCPP
}
// Quaternion__getZ
double Quaternion__getZ(SEXP& self);
RcppExport SEXP _ravetools_Quaternion__getZ(SEXP selfSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP& >::type self(selfSEXP);
    rcpp_result_gen = Rcpp::wrap(Quaternion__getZ(self));
    return rcpp_result_gen;
END_RCPP
}
// Quaternion__setZ
void Quaternion__setZ(SEXP& self, const double& v);
RcppExport SEXP _ravetools_Quaternion__setZ(SEXP selfSEXP, SEXP vSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const double& >::type v(vSEXP);
    Quaternion__setZ(self, v);
    return R_NilValue;
END_RCPP
}
// Quaternion__getW
double Quaternion__getW(SEXP& self);
RcppExport SEXP _ravetools_Quaternion__getW(SEXP selfSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP& >::type self(selfSEXP);
    rcpp_result_gen = Rcpp::wrap(Quaternion__getW(self));
    return rcpp_result_gen;
END_RCPP
}
// Quaternion__setW
void Quaternion__setW(SEXP& self, const double& v);
RcppExport SEXP _ravetools_Quaternion__setW(SEXP selfSEXP, SEXP vSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const double& >::type v(vSEXP);
    Quaternion__setW(self, v);
    return R_NilValue;
END_RCPP
}
// Quaternion__set_from_axis_angle
void Quaternion__set_from_axis_angle(SEXP& self, SEXP& axis, const double& angle);
RcppExport SEXP _ravetools_Quaternion__set_from_axis_angle(SEXP selfSEXP, SEXP axisSEXP, SEXP angleSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< SEXP& >::type axis(axisSEXP);
    Rcpp::traits::input_parameter< const double& >::type angle(angleSEXP);
    Quaternion__set_from_axis_angle(self, axis, angle);
    return R_NilValue;
END_RCPP
}
// Quaternion__set_from_rotation_matrix
void Quaternion__set_from_rotation_matrix(SEXP& self, SEXP& m, int& fix_qfac);
RcppExport SEXP _ravetools_Quaternion__set_from_rotation_matrix(SEXP selfSEXP, SEXP mSEXP, SEXP fix_qfacSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< SEXP& >::type m(mSEXP);
    Rcpp::traits::input_parameter< int& >::type fix_qfac(fix_qfacSEXP);
    Quaternion__set_from_rotation_matrix(self, m, fix_qfac);
    return R_NilValue;
END_RCPP
}
// Quaternion__set_from_unit_vectors
void Quaternion__set_from_unit_vectors(SEXP& self, SEXP& v_from, SEXP& v_to);
RcppExport SEXP _ravetools_Quaternion__set_from_unit_vectors(SEXP selfSEXP, SEXP v_fromSEXP, SEXP v_toSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< SEXP& >::type v_from(v_fromSEXP);
    Rcpp::traits::input_parameter< SEXP& >::type v_to(v_toSEXP);
    Quaternion__set_from_unit_vectors(self, v_from, v_to);
    return R_NilValue;
END_RCPP
}
// Quaternion__angle_to
double Quaternion__angle_to(SEXP& self, SEXP& q);
RcppExport SEXP _ravetools_Quaternion__angle_to(SEXP selfSEXP, SEXP qSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< SEXP& >::type q(qSEXP);
    rcpp_result_gen = Rcpp::wrap(Quaternion__angle_to(self, q));
    return rcpp_result_gen;
END_RCPP
}
// Quaternion__rotate_towards
void Quaternion__rotate_towards(SEXP& self, SEXP& q, const double& step);
RcppExport SEXP _ravetools_Quaternion__rotate_towards(SEXP selfSEXP, SEXP qSEXP, SEXP stepSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< SEXP& >::type q(qSEXP);
    Rcpp::traits::input_parameter< const double& >::type step(stepSEXP);
    Quaternion__rotate_towards(self, q, step);
    return R_NilValue;
END_RCPP
}
// Quaternion__slerp
void Quaternion__slerp(SEXP& self, SEXP& qb, const double& t);
RcppExport SEXP _ravetools_Quaternion__slerp(SEXP selfSEXP, SEXP qbSEXP, SEXP tSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< SEXP& >::type qb(qbSEXP);
    Rcpp::traits::input_parameter< const double& >::type t(tSEXP);
    Quaternion__slerp(self, qb, t);
    return R_NilValue;
END_RCPP
}
// Quaternion__identity
void Quaternion__identity(SEXP& self);
RcppExport SEXP _ravetools_Quaternion__identity(SEXP selfSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP& >::type self(selfSEXP);
    Quaternion__identity(self);
    return R_NilValue;
END_RCPP
}
// Quaternion__invert
void Quaternion__invert(SEXP& self);
RcppExport SEXP _ravetools_Quaternion__invert(SEXP selfSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP& >::type self(selfSEXP);
    Quaternion__invert(self);
    return R_NilValue;
END_RCPP
}
// Quaternion__conjugate
void Quaternion__conjugate(SEXP& self);
RcppExport SEXP _ravetools_Quaternion__conjugate(SEXP selfSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP& >::type self(selfSEXP);
    Quaternion__conjugate(self);
    return R_NilValue;
END_RCPP
}
// Quaternion__dot
double Quaternion__dot(SEXP& self, SEXP& v);
RcppExport SEXP _ravetools_Quaternion__dot(SEXP selfSEXP, SEXP vSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< SEXP& >::type v(vSEXP);
    rcpp_result_gen = Rcpp::wrap(Quaternion__dot(self, v));
    return rcpp_result_gen;
END_RCPP
}
// Quaternion__length_squared
double Quaternion__length_squared(SEXP& self);
RcppExport SEXP _ravetools_Quaternion__length_squared(SEXP selfSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP& >::type self(selfSEXP);
    rcpp_result_gen = Rcpp::wrap(Quaternion__length_squared(self));
    return rcpp_result_gen;
END_RCPP
}
// Quaternion__length
double Quaternion__length(SEXP& self);
RcppExport SEXP _ravetools_Quaternion__length(SEXP selfSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP& >::type self(selfSEXP);
    rcpp_result_gen = Rcpp::wrap(Quaternion__length(self));
    return rcpp_result_gen;
END_RCPP
}
// Quaternion__normalize
void Quaternion__normalize(SEXP& self);
RcppExport SEXP _ravetools_Quaternion__normalize(SEXP selfSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP& >::type self(selfSEXP);
    Quaternion__normalize(self);
    return R_NilValue;
END_RCPP
}
// Quaternion__multiply
void Quaternion__multiply(SEXP& self, SEXP& q);
RcppExport SEXP _ravetools_Quaternion__multiply(SEXP selfSEXP, SEXP qSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< SEXP& >::type q(qSEXP);
    Quaternion__multiply(self, q);
    return R_NilValue;
END_RCPP
}
// Quaternion__premultiply
void Quaternion__premultiply(SEXP& self, SEXP& q);
RcppExport SEXP _ravetools_Quaternion__premultiply(SEXP selfSEXP, SEXP qSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< SEXP& >::type q(qSEXP);
    Quaternion__premultiply(self, q);
    return R_NilValue;
END_RCPP
}
// Quaternion__multiply_quaternions
void Quaternion__multiply_quaternions(SEXP& self, SEXP& a, SEXP& b);
RcppExport SEXP _ravetools_Quaternion__multiply_quaternions(SEXP selfSEXP, SEXP aSEXP, SEXP bSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< SEXP& >::type a(aSEXP);
    Rcpp::traits::input_parameter< SEXP& >::type b(bSEXP);
    Quaternion__multiply_quaternions(self, a, b);
    return R_NilValue;
END_RCPP
}
// Vector3__new
SEXP Vector3__new();
static SEXP _ravetools_Vector3__new_try() {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    rcpp_result_gen = Rcpp::wrap(Vector3__new());
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__new() {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__new_try());
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__from_array
void Vector3__from_array(const SEXP& self, std::vector<double>& array, const int& offset, const int& n_elems);
static SEXP _ravetools_Vector3__from_array_try(SEXP selfSEXP, SEXP arraySEXP, SEXP offsetSEXP, SEXP n_elemsSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< std::vector<double>& >::type array(arraySEXP);
    Rcpp::traits::input_parameter< const int& >::type offset(offsetSEXP);
    Rcpp::traits::input_parameter< const int& >::type n_elems(n_elemsSEXP);
    Vector3__from_array(self, array, offset, n_elems);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__from_array(SEXP selfSEXP, SEXP arraySEXP, SEXP offsetSEXP, SEXP n_elemsSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__from_array_try(selfSEXP, arraySEXP, offsetSEXP, n_elemsSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__resize
void Vector3__resize(const SEXP& self, const int& n_elems);
static SEXP _ravetools_Vector3__resize_try(SEXP selfSEXP, SEXP n_elemsSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const int& >::type n_elems(n_elemsSEXP);
    Vector3__resize(self, n_elems);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__resize(SEXP selfSEXP, SEXP n_elemsSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__resize_try(selfSEXP, n_elemsSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__get_size
size_t Vector3__get_size(const SEXP& self);
static SEXP _ravetools_Vector3__get_size_try(SEXP selfSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    rcpp_result_gen = Rcpp::wrap(Vector3__get_size(self));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__get_size(SEXP selfSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__get_size_try(selfSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__to_array
SEXP Vector3__to_array(const SEXP& self, const int& n_skip, const int& max_n_elems);
static SEXP _ravetools_Vector3__to_array_try(SEXP selfSEXP, SEXP n_skipSEXP, SEXP max_n_elemsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const int& >::type n_skip(n_skipSEXP);
    Rcpp::traits::input_parameter< const int& >::type max_n_elems(max_n_elemsSEXP);
    rcpp_result_gen = Rcpp::wrap(Vector3__to_array(self, n_skip, max_n_elems));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__to_array(SEXP selfSEXP, SEXP n_skipSEXP, SEXP max_n_elemsSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__to_array_try(selfSEXP, n_skipSEXP, max_n_elemsSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__set_scalar
void Vector3__set_scalar(const SEXP& self, double& value);
static SEXP _ravetools_Vector3__set_scalar_try(SEXP selfSEXP, SEXP valueSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< double& >::type value(valueSEXP);
    Vector3__set_scalar(self, value);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__set_scalar(SEXP selfSEXP, SEXP valueSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__set_scalar_try(selfSEXP, valueSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__set_x
void Vector3__set_x(const SEXP& self, double& value);
static SEXP _ravetools_Vector3__set_x_try(SEXP selfSEXP, SEXP valueSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< double& >::type value(valueSEXP);
    Vector3__set_x(self, value);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__set_x(SEXP selfSEXP, SEXP valueSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__set_x_try(selfSEXP, valueSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__set_y
void Vector3__set_y(const SEXP& self, double& value);
static SEXP _ravetools_Vector3__set_y_try(SEXP selfSEXP, SEXP valueSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< double& >::type value(valueSEXP);
    Vector3__set_y(self, value);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__set_y(SEXP selfSEXP, SEXP valueSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__set_y_try(selfSEXP, valueSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__set_z
void Vector3__set_z(const SEXP& self, double& value);
static SEXP _ravetools_Vector3__set_z_try(SEXP selfSEXP, SEXP valueSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< double& >::type value(valueSEXP);
    Vector3__set_z(self, value);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__set_z(SEXP selfSEXP, SEXP valueSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__set_z_try(selfSEXP, valueSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__get_x
double Vector3__get_x(const SEXP& self, const size_t& i);
static SEXP _ravetools_Vector3__get_x_try(SEXP selfSEXP, SEXP iSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const size_t& >::type i(iSEXP);
    rcpp_result_gen = Rcpp::wrap(Vector3__get_x(self, i));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__get_x(SEXP selfSEXP, SEXP iSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__get_x_try(selfSEXP, iSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__get_y
double Vector3__get_y(const SEXP& self, const size_t& i);
static SEXP _ravetools_Vector3__get_y_try(SEXP selfSEXP, SEXP iSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const size_t& >::type i(iSEXP);
    rcpp_result_gen = Rcpp::wrap(Vector3__get_y(self, i));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__get_y(SEXP selfSEXP, SEXP iSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__get_y_try(selfSEXP, iSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__get_z
double Vector3__get_z(const SEXP& self, const size_t& i);
static SEXP _ravetools_Vector3__get_z_try(SEXP selfSEXP, SEXP iSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const size_t& >::type i(iSEXP);
    rcpp_result_gen = Rcpp::wrap(Vector3__get_z(self, i));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__get_z(SEXP selfSEXP, SEXP iSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__get_z_try(selfSEXP, iSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__get_item
SEXP Vector3__get_item(const SEXP& self, const size_t& i);
static SEXP _ravetools_Vector3__get_item_try(SEXP selfSEXP, SEXP iSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const size_t& >::type i(iSEXP);
    rcpp_result_gen = Rcpp::wrap(Vector3__get_item(self, i));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__get_item(SEXP selfSEXP, SEXP iSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__get_item_try(selfSEXP, iSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__copy
void Vector3__copy(const SEXP& self, const SEXP& v);
static SEXP _ravetools_Vector3__copy_try(SEXP selfSEXP, SEXP vSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type v(vSEXP);
    Vector3__copy(self, v);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__copy(SEXP selfSEXP, SEXP vSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__copy_try(selfSEXP, vSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__add
void Vector3__add(const SEXP& self, const SEXP& v);
static SEXP _ravetools_Vector3__add_try(SEXP selfSEXP, SEXP vSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type v(vSEXP);
    Vector3__add(self, v);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__add(SEXP selfSEXP, SEXP vSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__add_try(selfSEXP, vSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__add_scalar
void Vector3__add_scalar(const SEXP& self, std::vector<double>& s);
static SEXP _ravetools_Vector3__add_scalar_try(SEXP selfSEXP, SEXP sSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< std::vector<double>& >::type s(sSEXP);
    Vector3__add_scalar(self, s);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__add_scalar(SEXP selfSEXP, SEXP sSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__add_scalar_try(selfSEXP, sSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__add_vectors
void Vector3__add_vectors(const SEXP& self, const SEXP& a, const SEXP& b);
static SEXP _ravetools_Vector3__add_vectors_try(SEXP selfSEXP, SEXP aSEXP, SEXP bSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type a(aSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type b(bSEXP);
    Vector3__add_vectors(self, a, b);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__add_vectors(SEXP selfSEXP, SEXP aSEXP, SEXP bSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__add_vectors_try(selfSEXP, aSEXP, bSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__add_scaled
void Vector3__add_scaled(const SEXP& self, const SEXP& v, const double& s);
static SEXP _ravetools_Vector3__add_scaled_try(SEXP selfSEXP, SEXP vSEXP, SEXP sSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type v(vSEXP);
    Rcpp::traits::input_parameter< const double& >::type s(sSEXP);
    Vector3__add_scaled(self, v, s);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__add_scaled(SEXP selfSEXP, SEXP vSEXP, SEXP sSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__add_scaled_try(selfSEXP, vSEXP, sSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__sub
void Vector3__sub(const SEXP& self, const SEXP& v);
static SEXP _ravetools_Vector3__sub_try(SEXP selfSEXP, SEXP vSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type v(vSEXP);
    Vector3__sub(self, v);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__sub(SEXP selfSEXP, SEXP vSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__sub_try(selfSEXP, vSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__sub_scalar
void Vector3__sub_scalar(const SEXP& self, std::vector<double>& s);
static SEXP _ravetools_Vector3__sub_scalar_try(SEXP selfSEXP, SEXP sSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< std::vector<double>& >::type s(sSEXP);
    Vector3__sub_scalar(self, s);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__sub_scalar(SEXP selfSEXP, SEXP sSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__sub_scalar_try(selfSEXP, sSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__sub_vectors
void Vector3__sub_vectors(const SEXP& self, const SEXP& a, const SEXP& b);
static SEXP _ravetools_Vector3__sub_vectors_try(SEXP selfSEXP, SEXP aSEXP, SEXP bSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type a(aSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type b(bSEXP);
    Vector3__sub_vectors(self, a, b);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__sub_vectors(SEXP selfSEXP, SEXP aSEXP, SEXP bSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__sub_vectors_try(selfSEXP, aSEXP, bSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__multiply
void Vector3__multiply(const SEXP& self, const SEXP& v);
static SEXP _ravetools_Vector3__multiply_try(SEXP selfSEXP, SEXP vSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type v(vSEXP);
    Vector3__multiply(self, v);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__multiply(SEXP selfSEXP, SEXP vSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__multiply_try(selfSEXP, vSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__multiply_scalar
void Vector3__multiply_scalar(const SEXP& self, std::vector<double>& s);
static SEXP _ravetools_Vector3__multiply_scalar_try(SEXP selfSEXP, SEXP sSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< std::vector<double>& >::type s(sSEXP);
    Vector3__multiply_scalar(self, s);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__multiply_scalar(SEXP selfSEXP, SEXP sSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__multiply_scalar_try(selfSEXP, sSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__multiply_vectors
void Vector3__multiply_vectors(const SEXP& self, const SEXP& a, const SEXP& b);
static SEXP _ravetools_Vector3__multiply_vectors_try(SEXP selfSEXP, SEXP aSEXP, SEXP bSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type a(aSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type b(bSEXP);
    Vector3__multiply_vectors(self, a, b);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__multiply_vectors(SEXP selfSEXP, SEXP aSEXP, SEXP bSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__multiply_vectors_try(selfSEXP, aSEXP, bSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__apply_matrix3
void Vector3__apply_matrix3(const SEXP& self, const std::vector<double>& m);
static SEXP _ravetools_Vector3__apply_matrix3_try(SEXP selfSEXP, SEXP mSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const std::vector<double>& >::type m(mSEXP);
    Vector3__apply_matrix3(self, m);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__apply_matrix3(SEXP selfSEXP, SEXP mSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__apply_matrix3_try(selfSEXP, mSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__apply_matrix4
void Vector3__apply_matrix4(const SEXP& self, const SEXP& m);
static SEXP _ravetools_Vector3__apply_matrix4_try(SEXP selfSEXP, SEXP mSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type m(mSEXP);
    Vector3__apply_matrix4(self, m);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__apply_matrix4(SEXP selfSEXP, SEXP mSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__apply_matrix4_try(selfSEXP, mSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__apply_quaternion
void Vector3__apply_quaternion(const SEXP& self, const SEXP& q);
static SEXP _ravetools_Vector3__apply_quaternion_try(SEXP selfSEXP, SEXP qSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type q(qSEXP);
    Vector3__apply_quaternion(self, q);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__apply_quaternion(SEXP selfSEXP, SEXP qSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__apply_quaternion_try(selfSEXP, qSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__transform_direction
void Vector3__transform_direction(const SEXP& self, const SEXP& m);
static SEXP _ravetools_Vector3__transform_direction_try(SEXP selfSEXP, SEXP mSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type m(mSEXP);
    Vector3__transform_direction(self, m);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__transform_direction(SEXP selfSEXP, SEXP mSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__transform_direction_try(selfSEXP, mSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__divide
void Vector3__divide(const SEXP& self, const SEXP& v);
static SEXP _ravetools_Vector3__divide_try(SEXP selfSEXP, SEXP vSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type v(vSEXP);
    Vector3__divide(self, v);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__divide(SEXP selfSEXP, SEXP vSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__divide_try(selfSEXP, vSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__divide_scalar
void Vector3__divide_scalar(const SEXP& self, std::vector<double>& s);
static SEXP _ravetools_Vector3__divide_scalar_try(SEXP selfSEXP, SEXP sSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< std::vector<double>& >::type s(sSEXP);
    Vector3__divide_scalar(self, s);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__divide_scalar(SEXP selfSEXP, SEXP sSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__divide_scalar_try(selfSEXP, sSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__min
void Vector3__min(const SEXP& self, const SEXP& v);
static SEXP _ravetools_Vector3__min_try(SEXP selfSEXP, SEXP vSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type v(vSEXP);
    Vector3__min(self, v);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__min(SEXP selfSEXP, SEXP vSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__min_try(selfSEXP, vSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__max
void Vector3__max(const SEXP& self, const SEXP& v);
static SEXP _ravetools_Vector3__max_try(SEXP selfSEXP, SEXP vSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type v(vSEXP);
    Vector3__max(self, v);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__max(SEXP selfSEXP, SEXP vSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__max_try(selfSEXP, vSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__clamp
void Vector3__clamp(const SEXP& self, const SEXP& min, const SEXP& max);
static SEXP _ravetools_Vector3__clamp_try(SEXP selfSEXP, SEXP minSEXP, SEXP maxSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type min(minSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type max(maxSEXP);
    Vector3__clamp(self, min, max);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__clamp(SEXP selfSEXP, SEXP minSEXP, SEXP maxSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__clamp_try(selfSEXP, minSEXP, maxSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__floor
void Vector3__floor(const SEXP& self);
static SEXP _ravetools_Vector3__floor_try(SEXP selfSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Vector3__floor(self);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__floor(SEXP selfSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__floor_try(selfSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__ceil
void Vector3__ceil(const SEXP& self);
static SEXP _ravetools_Vector3__ceil_try(SEXP selfSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Vector3__ceil(self);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__ceil(SEXP selfSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__ceil_try(selfSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__round
void Vector3__round(const SEXP& self);
static SEXP _ravetools_Vector3__round_try(SEXP selfSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Vector3__round(self);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__round(SEXP selfSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__round_try(selfSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__round_to_zero
void Vector3__round_to_zero(const SEXP& self);
static SEXP _ravetools_Vector3__round_to_zero_try(SEXP selfSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Vector3__round_to_zero(self);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__round_to_zero(SEXP selfSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__round_to_zero_try(selfSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__negate
void Vector3__negate(const SEXP& self);
static SEXP _ravetools_Vector3__negate_try(SEXP selfSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Vector3__negate(self);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__negate(SEXP selfSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__negate_try(selfSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__dot
std::vector<double> Vector3__dot(const SEXP& self, const SEXP& v);
static SEXP _ravetools_Vector3__dot_try(SEXP selfSEXP, SEXP vSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type v(vSEXP);
    rcpp_result_gen = Rcpp::wrap(Vector3__dot(self, v));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__dot(SEXP selfSEXP, SEXP vSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__dot_try(selfSEXP, vSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__length_squared
std::vector<double> Vector3__length_squared(const SEXP& self);
static SEXP _ravetools_Vector3__length_squared_try(SEXP selfSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    rcpp_result_gen = Rcpp::wrap(Vector3__length_squared(self));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__length_squared(SEXP selfSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__length_squared_try(selfSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__length
std::vector<double> Vector3__length(const SEXP& self);
static SEXP _ravetools_Vector3__length_try(SEXP selfSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    rcpp_result_gen = Rcpp::wrap(Vector3__length(self));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__length(SEXP selfSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__length_try(selfSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__length_manhattan
std::vector<double> Vector3__length_manhattan(const SEXP& self);
static SEXP _ravetools_Vector3__length_manhattan_try(SEXP selfSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    rcpp_result_gen = Rcpp::wrap(Vector3__length_manhattan(self));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__length_manhattan(SEXP selfSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__length_manhattan_try(selfSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__normalize
void Vector3__normalize(const SEXP& self);
static SEXP _ravetools_Vector3__normalize_try(SEXP selfSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Vector3__normalize(self);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__normalize(SEXP selfSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__normalize_try(selfSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__set_length
void Vector3__set_length(const SEXP& self, std::vector<double>& length);
static SEXP _ravetools_Vector3__set_length_try(SEXP selfSEXP, SEXP lengthSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< std::vector<double>& >::type length(lengthSEXP);
    Vector3__set_length(self, length);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__set_length(SEXP selfSEXP, SEXP lengthSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__set_length_try(selfSEXP, lengthSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__lerp
void Vector3__lerp(const SEXP& self, const SEXP& v, std::vector<double>& alpha);
static SEXP _ravetools_Vector3__lerp_try(SEXP selfSEXP, SEXP vSEXP, SEXP alphaSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type v(vSEXP);
    Rcpp::traits::input_parameter< std::vector<double>& >::type alpha(alphaSEXP);
    Vector3__lerp(self, v, alpha);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__lerp(SEXP selfSEXP, SEXP vSEXP, SEXP alphaSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__lerp_try(selfSEXP, vSEXP, alphaSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__lerp_vectors
void Vector3__lerp_vectors(const SEXP& self, const SEXP& v1, const SEXP& v2, std::vector<double>& alpha);
static SEXP _ravetools_Vector3__lerp_vectors_try(SEXP selfSEXP, SEXP v1SEXP, SEXP v2SEXP, SEXP alphaSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type v1(v1SEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type v2(v2SEXP);
    Rcpp::traits::input_parameter< std::vector<double>& >::type alpha(alphaSEXP);
    Vector3__lerp_vectors(self, v1, v2, alpha);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__lerp_vectors(SEXP selfSEXP, SEXP v1SEXP, SEXP v2SEXP, SEXP alphaSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__lerp_vectors_try(selfSEXP, v1SEXP, v2SEXP, alphaSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__cross
void Vector3__cross(const SEXP& self, const SEXP& v);
static SEXP _ravetools_Vector3__cross_try(SEXP selfSEXP, SEXP vSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type v(vSEXP);
    Vector3__cross(self, v);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__cross(SEXP selfSEXP, SEXP vSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__cross_try(selfSEXP, vSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__cross_vectors
void Vector3__cross_vectors(const SEXP& self, const SEXP& a, const SEXP& b);
static SEXP _ravetools_Vector3__cross_vectors_try(SEXP selfSEXP, SEXP aSEXP, SEXP bSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type a(aSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type b(bSEXP);
    Vector3__cross_vectors(self, a, b);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__cross_vectors(SEXP selfSEXP, SEXP aSEXP, SEXP bSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__cross_vectors_try(selfSEXP, aSEXP, bSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__project_on_vector
void Vector3__project_on_vector(const SEXP& self, const SEXP& v);
static SEXP _ravetools_Vector3__project_on_vector_try(SEXP selfSEXP, SEXP vSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type v(vSEXP);
    Vector3__project_on_vector(self, v);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__project_on_vector(SEXP selfSEXP, SEXP vSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__project_on_vector_try(selfSEXP, vSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__project_on_plane
void Vector3__project_on_plane(const SEXP& self, const SEXP& planeNormal);
static SEXP _ravetools_Vector3__project_on_plane_try(SEXP selfSEXP, SEXP planeNormalSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type planeNormal(planeNormalSEXP);
    Vector3__project_on_plane(self, planeNormal);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__project_on_plane(SEXP selfSEXP, SEXP planeNormalSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__project_on_plane_try(selfSEXP, planeNormalSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__reflect
void Vector3__reflect(const SEXP& self, const SEXP& normal);
static SEXP _ravetools_Vector3__reflect_try(SEXP selfSEXP, SEXP normalSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type normal(normalSEXP);
    Vector3__reflect(self, normal);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__reflect(SEXP selfSEXP, SEXP normalSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__reflect_try(selfSEXP, normalSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__angle_to
std::vector<double> Vector3__angle_to(const SEXP& self, const SEXP& v);
static SEXP _ravetools_Vector3__angle_to_try(SEXP selfSEXP, SEXP vSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type v(vSEXP);
    rcpp_result_gen = Rcpp::wrap(Vector3__angle_to(self, v));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__angle_to(SEXP selfSEXP, SEXP vSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__angle_to_try(selfSEXP, vSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__distance_to
std::vector<double> Vector3__distance_to(const SEXP& self, const SEXP& v);
static SEXP _ravetools_Vector3__distance_to_try(SEXP selfSEXP, SEXP vSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type v(vSEXP);
    rcpp_result_gen = Rcpp::wrap(Vector3__distance_to(self, v));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__distance_to(SEXP selfSEXP, SEXP vSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__distance_to_try(selfSEXP, vSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__distance_to_squared
std::vector<double> Vector3__distance_to_squared(const SEXP& self, const SEXP& v);
static SEXP _ravetools_Vector3__distance_to_squared_try(SEXP selfSEXP, SEXP vSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type v(vSEXP);
    rcpp_result_gen = Rcpp::wrap(Vector3__distance_to_squared(self, v));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__distance_to_squared(SEXP selfSEXP, SEXP vSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__distance_to_squared_try(selfSEXP, vSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__distance_to_manhattan
std::vector<double> Vector3__distance_to_manhattan(const SEXP& self, const SEXP& v);
static SEXP _ravetools_Vector3__distance_to_manhattan_try(SEXP selfSEXP, SEXP vSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type v(vSEXP);
    rcpp_result_gen = Rcpp::wrap(Vector3__distance_to_manhattan(self, v));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__distance_to_manhattan(SEXP selfSEXP, SEXP vSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__distance_to_manhattan_try(selfSEXP, vSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__set_from_spherical_coords
void Vector3__set_from_spherical_coords(const SEXP& self, const double& radius, const double& phi, const double& theta);
static SEXP _ravetools_Vector3__set_from_spherical_coords_try(SEXP selfSEXP, SEXP radiusSEXP, SEXP phiSEXP, SEXP thetaSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const double& >::type radius(radiusSEXP);
    Rcpp::traits::input_parameter< const double& >::type phi(phiSEXP);
    Rcpp::traits::input_parameter< const double& >::type theta(thetaSEXP);
    Vector3__set_from_spherical_coords(self, radius, phi, theta);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__set_from_spherical_coords(SEXP selfSEXP, SEXP radiusSEXP, SEXP phiSEXP, SEXP thetaSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__set_from_spherical_coords_try(selfSEXP, radiusSEXP, phiSEXP, thetaSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__set_from_matrix_position
void Vector3__set_from_matrix_position(const SEXP& self, const SEXP& m);
static SEXP _ravetools_Vector3__set_from_matrix_position_try(SEXP selfSEXP, SEXP mSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type m(mSEXP);
    Vector3__set_from_matrix_position(self, m);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__set_from_matrix_position(SEXP selfSEXP, SEXP mSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__set_from_matrix_position_try(selfSEXP, mSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// Vector3__set_from_matrix_scale
void Vector3__set_from_matrix_scale(const SEXP& self, const SEXP& m);
static SEXP _ravetools_Vector3__set_from_matrix_scale_try(SEXP selfSEXP, SEXP mSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< const SEXP& >::type self(selfSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type m(mSEXP);
    Vector3__set_from_matrix_scale(self, m);
    return R_NilValue;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _ravetools_Vector3__set_from_matrix_scale(SEXP selfSEXP, SEXP mSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_ravetools_Vector3__set_from_matrix_scale_try(selfSEXP, mSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        (Rf_error)("%s", CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// mrisSmooth
Rcpp::List mrisSmooth(SEXP vb_, SEXP it_, int niterations, int npasses, bool rescale, bool verbose);
RcppExport SEXP _ravetools_mrisSmooth(SEXP vb_SEXP, SEXP it_SEXP, SEXP niterationsSEXP, SEXP npassesSEXP, SEXP rescaleSEXP, SEXP verboseSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type vb_(vb_SEXP);
    Rcpp::traits::input_parameter< SEXP >::type it_(it_SEXP);
    Rcpp::traits::input_parameter< int >::type niterations(niterationsSEXP);
    Rcpp::traits::input_parameter< int >::type npasses(npassesSEXP);
    Rcpp::traits::input_parameter< bool >::type rescale(rescaleSEXP);
    Rcpp::traits::input_parameter< bool >::type verbose(verboseSEXP);
    rcpp_result_gen = Rcpp::wrap(mrisSmooth(vb_, it_, niterations, npasses, rescale, verbose));
    return rcpp_result_gen;
END_RCPP
}
// mrisInflate
Rcpp::List mrisInflate(SEXP vb_, SEXP it_, int n_averages, int niterations, double l_spring_norm, double l_dist, double momentum, double dt, double desired_rms, bool scale_brain, bool verbose);
RcppExport SEXP _ravetools_mrisInflate(SEXP vb_SEXP, SEXP it_SEXP, SEXP n_averagesSEXP, SEXP niterationsSEXP, SEXP l_spring_normSEXP, SEXP l_distSEXP, SEXP momentumSEXP, SEXP dtSEXP, SEXP desired_rmsSEXP, SEXP scale_brainSEXP, SEXP verboseSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type vb_(vb_SEXP);
    Rcpp::traits::input_parameter< SEXP >::type it_(it_SEXP);
    Rcpp::traits::input_parameter< int >::type n_averages(n_averagesSEXP);
    Rcpp::traits::input_parameter< int >::type niterations(niterationsSEXP);
    Rcpp::traits::input_parameter< double >::type l_spring_norm(l_spring_normSEXP);
    Rcpp::traits::input_parameter< double >::type l_dist(l_distSEXP);
    Rcpp::traits::input_parameter< double >::type momentum(momentumSEXP);
    Rcpp::traits::input_parameter< double >::type dt(dtSEXP);
    Rcpp::traits::input_parameter< double >::type desired_rms(desired_rmsSEXP);
    Rcpp::traits::input_parameter< bool >::type scale_brain(scale_brainSEXP);
    Rcpp::traits::input_parameter< bool >::type verbose(verboseSEXP);
    rcpp_result_gen = Rcpp::wrap(mrisInflate(vb_, it_, n_averages, niterations, l_spring_norm, l_dist, momentum, dt, desired_rms, scale_brain, verbose));
    return rcpp_result_gen;
END_RCPP
}
// mrisSphere
Rcpp::List mrisSphere(SEXP vb_, SEXP it_, double target_radius, int n_averages, int niterations, double l_dist, double l_area, double momentum, double dt, bool verbose);
RcppExport SEXP _ravetools_mrisSphere(SEXP vb_SEXP, SEXP it_SEXP, SEXP target_radiusSEXP, SEXP n_averagesSEXP, SEXP niterationsSEXP, SEXP l_distSEXP, SEXP l_areaSEXP, SEXP momentumSEXP, SEXP dtSEXP, SEXP verboseSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type vb_(vb_SEXP);
    Rcpp::traits::input_parameter< SEXP >::type it_(it_SEXP);
    Rcpp::traits::input_parameter< double >::type target_radius(target_radiusSEXP);
    Rcpp::traits::input_parameter< int >::type n_averages(n_averagesSEXP);
    Rcpp::traits::input_parameter< int >::type niterations(niterationsSEXP);
    Rcpp::traits::input_parameter< double >::type l_dist(l_distSEXP);
    Rcpp::traits::input_parameter< double >::type l_area(l_areaSEXP);
    Rcpp::traits::input_parameter< double >::type momentum(momentumSEXP);
    Rcpp::traits::input_parameter< double >::type dt(dtSEXP);
    Rcpp::traits::input_parameter< bool >::type verbose(verboseSEXP);
    rcpp_result_gen = Rcpp::wrap(mrisSphere(vb_, it_, target_radius, n_averages, niterations, l_dist, l_area, momentum, dt, verbose));
    return rcpp_result_gen;
END_RCPP
}
// mrisMakeSurfaces
Rcpp::List mrisMakeSurfaces(SEXP vb_, SEXP it_, SEXP volume_, SEXP ras2ijk_, double white_intensity, double pial_intensity, double max_thickness, double step_size, int n_averages, int niterations, double l_intensity, double l_spring, double momentum, double dt, bool verbose);
RcppExport SEXP _ravetools_mrisMakeSurfaces(SEXP vb_SEXP, SEXP it_SEXP, SEXP volume_SEXP, SEXP ras2ijk_SEXP, SEXP white_intensitySEXP, SEXP pial_intensitySEXP, SEXP max_thicknessSEXP, SEXP step_sizeSEXP, SEXP n_averagesSEXP, SEXP niterationsSEXP, SEXP l_intensitySEXP, SEXP l_springSEXP, SEXP momentumSEXP, SEXP dtSEXP, SEXP verboseSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type vb_(vb_SEXP);
    Rcpp::traits::input_parameter< SEXP >::type it_(it_SEXP);
    Rcpp::traits::input_parameter< SEXP >::type volume_(volume_SEXP);
    Rcpp::traits::input_parameter< SEXP >::type ras2ijk_(ras2ijk_SEXP);
    Rcpp::traits::input_parameter< double >::type white_intensity(white_intensitySEXP);
    Rcpp::traits::input_parameter< double >::type pial_intensity(pial_intensitySEXP);
    Rcpp::traits::input_parameter< double >::type max_thickness(max_thicknessSEXP);
    Rcpp::traits::input_parameter< double >::type step_size(step_sizeSEXP);
    Rcpp::traits::input_parameter< int >::type n_averages(n_averagesSEXP);
    Rcpp::traits::input_parameter< int >::type niterations(niterationsSEXP);
    Rcpp::traits::input_parameter< double >::type l_intensity(l_intensitySEXP);
    Rcpp::traits::input_parameter< double >::type l_spring(l_springSEXP);
    Rcpp::traits::input_parameter< double >::type momentum(momentumSEXP);
    Rcpp::traits::input_parameter< double >::type dt(dtSEXP);
    Rcpp::traits::input_parameter< bool >::type verbose(verboseSEXP);
    rcpp_result_gen = Rcpp::wrap(mrisMakeSurfaces(vb_, it_, volume_, ras2ijk_, white_intensity, pial_intensity, max_thickness, step_size, n_averages, niterations, l_intensity, l_spring, momentum, dt, verbose));
    return rcpp_result_gen;
END_RCPP
}
// mrisCurvature
Rcpp::List mrisCurvature(SEXP vb_, SEXP it_, bool verbose);
RcppExport SEXP _ravetools_mrisCurvature(SEXP vb_SEXP, SEXP it_SEXP, SEXP verboseSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type vb_(vb_SEXP);
    Rcpp::traits::input_parameter< SEXP >::type it_(it_SEXP);
    Rcpp::traits::input_parameter< bool >::type verbose(verboseSEXP);
    rcpp_result_gen = Rcpp::wrap(mrisCurvature(vb_, it_, verbose));
    return rcpp_result_gen;
END_RCPP
}
// mrisRemesh
Rcpp::List mrisRemesh(SEXP vb_, SEXP it_, float target_edge_len, int niterations, int n_smooth, float damping, bool verbose);
RcppExport SEXP _ravetools_mrisRemesh(SEXP vb_SEXP, SEXP it_SEXP, SEXP target_edge_lenSEXP, SEXP niterationsSEXP, SEXP n_smoothSEXP, SEXP dampingSEXP, SEXP verboseSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type vb_(vb_SEXP);
    Rcpp::traits::input_parameter< SEXP >::type it_(it_SEXP);
    Rcpp::traits::input_parameter< float >::type target_edge_len(target_edge_lenSEXP);
    Rcpp::traits::input_parameter< int >::type niterations(niterationsSEXP);
    Rcpp::traits::input_parameter< int >::type n_smooth(n_smoothSEXP);
    Rcpp::traits::input_parameter< float >::type damping(dampingSEXP);
    Rcpp::traits::input_parameter< bool >::type verbose(verboseSEXP);
    rcpp_result_gen = Rcpp::wrap(mrisRemesh(vb_, it_, target_edge_len, niterations, n_smooth, damping, verbose));
    return rcpp_result_gen;
END_RCPP
}
// rawToUInt8
SEXP rawToUInt8(SEXP x);
RcppExport SEXP _ravetools_rawToUInt8(SEXP xSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type x(xSEXP);
    rcpp_result_gen = Rcpp::wrap(rawToUInt8(x));
    return rcpp_result_gen;
END_RCPP
}
// rawToInt8
SEXP rawToInt8(SEXP x);
RcppExport SEXP _ravetools_rawToInt8(SEXP xSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type x(xSEXP);
    rcpp_result_gen = Rcpp::wrap(rawToInt8(x));
    return rcpp_result_gen;
END_RCPP
}
// rawToUInt16
SEXP rawToUInt16(SEXP x);
RcppExport SEXP _ravetools_rawToUInt16(SEXP xSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type x(xSEXP);
    rcpp_result_gen = Rcpp::wrap(rawToUInt16(x));
    return rcpp_result_gen;
END_RCPP
}
// rawToInt16
SEXP rawToInt16(SEXP x);
RcppExport SEXP _ravetools_rawToInt16(SEXP xSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type x(xSEXP);
    rcpp_result_gen = Rcpp::wrap(rawToInt16(x));
    return rcpp_result_gen;
END_RCPP
}
// rawToUInt32
SEXP rawToUInt32(SEXP x);
RcppExport SEXP _ravetools_rawToUInt32(SEXP xSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type x(xSEXP);
    rcpp_result_gen = Rcpp::wrap(rawToUInt32(x));
    return rcpp_result_gen;
END_RCPP
}
// rawToInt32
SEXP rawToInt32(SEXP x);
RcppExport SEXP _ravetools_rawToInt32(SEXP xSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type x(xSEXP);
    rcpp_result_gen = Rcpp::wrap(rawToInt32(x));
    return rcpp_result_gen;
END_RCPP
}
// rawToInt64
SEXP rawToInt64(SEXP x);
RcppExport SEXP _ravetools_rawToInt64(SEXP xSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type x(xSEXP);
    rcpp_result_gen = Rcpp::wrap(rawToInt64(x));
    return rcpp_result_gen;
END_RCPP
}
// rawToFloat
SEXP rawToFloat(SEXP x);
RcppExport SEXP _ravetools_rawToFloat(SEXP xSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type x(xSEXP);
    rcpp_result_gen = Rcpp::wrap(rawToFloat(x));
    return rcpp_result_gen;
END_RCPP
}
// rawToString
SEXP rawToString(SEXP x);
RcppExport SEXP _ravetools_rawToString(SEXP xSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type x(xSEXP);
    rcpp_result_gen = Rcpp::wrap(rawToString(x));
    return rcpp_result_gen;
END_RCPP
}
// register_linear_cpp
Rcpp::List register_linear_cpp(const Rcpp::NumericVector& fixed, const Rcpp::IntegerVector& fixedDim, const Rcpp::NumericMatrix& fixedVox2Ras, const Rcpp::NumericVector& moving, const Rcpp::IntegerVector& movingDim, const Rcpp::NumericMatrix& movingVox2Ras, const std::string& type, const std::string& metric, const Rcpp::IntegerVector& shrinkFactors, const Rcpp::NumericVector& smoothingSigmas, const Rcpp::IntegerVector& iterations, const double samplingRate, const double learningRate, const int numberOfBins, const unsigned int seed, const Rcpp::Nullable<Rcpp::NumericMatrix>& initTransform, const Rcpp::Nullable<Rcpp::NumericVector>& fixedMask, const Rcpp::Nullable<Rcpp::NumericVector>& movingMask, const bool verbose);
RcppExport SEXP _ravetools_register_linear_cpp(SEXP fixedSEXP, SEXP fixedDimSEXP, SEXP fixedVox2RasSEXP, SEXP movingSEXP, SEXP movingDimSEXP, SEXP movingVox2RasSEXP, SEXP typeSEXP, SEXP metricSEXP, SEXP shrinkFactorsSEXP, SEXP smoothingSigmasSEXP, SEXP iterationsSEXP, SEXP samplingRateSEXP, SEXP learningRateSEXP, SEXP numberOfBinsSEXP, SEXP seedSEXP, SEXP initTransformSEXP, SEXP fixedMaskSEXP, SEXP movingMaskSEXP, SEXP verboseSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const Rcpp::NumericVector& >::type fixed(fixedSEXP);
    Rcpp::traits::input_parameter< const Rcpp::IntegerVector& >::type fixedDim(fixedDimSEXP);
    Rcpp::traits::input_parameter< const Rcpp::NumericMatrix& >::type fixedVox2Ras(fixedVox2RasSEXP);
    Rcpp::traits::input_parameter< const Rcpp::NumericVector& >::type moving(movingSEXP);
    Rcpp::traits::input_parameter< const Rcpp::IntegerVector& >::type movingDim(movingDimSEXP);
    Rcpp::traits::input_parameter< const Rcpp::NumericMatrix& >::type movingVox2Ras(movingVox2RasSEXP);
    Rcpp::traits::input_parameter< const std::string& >::type type(typeSEXP);
    Rcpp::traits::input_parameter< const std::string& >::type metric(metricSEXP);
    Rcpp::traits::input_parameter< const Rcpp::IntegerVector& >::type shrinkFactors(shrinkFactorsSEXP);
    Rcpp::traits::input_parameter< const Rcpp::NumericVector& >::type smoothingSigmas(smoothingSigmasSEXP);
    Rcpp::traits::input_parameter< const Rcpp::IntegerVector& >::type iterations(iterationsSEXP);
    Rcpp::traits::input_parameter< const double >::type samplingRate(samplingRateSEXP);
    Rcpp::traits::input_parameter< const double >::type learningRate(learningRateSEXP);
    Rcpp::traits::input_parameter< const int >::type numberOfBins(numberOfBinsSEXP);
    Rcpp::traits::input_parameter< const unsigned int >::type seed(seedSEXP);
    Rcpp::traits::input_parameter< const Rcpp::Nullable<Rcpp::NumericMatrix>& >::type initTransform(initTransformSEXP);
    Rcpp::traits::input_parameter< const Rcpp::Nullable<Rcpp::NumericVector>& >::type fixedMask(fixedMaskSEXP);
    Rcpp::traits::input_parameter< const Rcpp::Nullable<Rcpp::NumericVector>& >::type movingMask(movingMaskSEXP);
    Rcpp::traits::input_parameter< const bool >::type verbose(verboseSEXP);
    rcpp_result_gen = Rcpp::wrap(register_linear_cpp(fixed, fixedDim, fixedVox2Ras, moving, movingDim, movingVox2Ras, type, metric, shrinkFactors, smoothingSigmas, iterations, samplingRate, learningRate, numberOfBins, seed, initTransform, fixedMask, movingMask, verbose));
    return rcpp_result_gen;
END_RCPP
}
// register_syn_cpp
Rcpp::List register_syn_cpp(const Rcpp::List& fixedList, const Rcpp::IntegerVector& fixedDim, const Rcpp::NumericMatrix& fixedVox2Ras, const Rcpp::List& movingList, const Rcpp::IntegerVector& movingDim, const Rcpp::NumericMatrix& movingVox2Ras, const Rcpp::NumericMatrix& affineTransform, const Rcpp::CharacterVector& metricNames, const Rcpp::NumericVector& weights, const Rcpp::IntegerVector& shrinkFactors, const Rcpp::NumericVector& smoothingSigmas, const Rcpp::IntegerVector& iterations, const double gradStep, const Rcpp::NumericVector& flowSigma, const double totalSigma, const int ccRadius, const Rcpp::IntegerVector& interpCodes, const Rcpp::Nullable<Rcpp::NumericVector>& fixedMask, const Rcpp::Nullable<Rcpp::NumericVector>& movingMask, const Rcpp::NumericMatrix& fixedPoints, const Rcpp::NumericMatrix& movingPoints, const double pointsWeight, const bool verbose);
RcppExport SEXP _ravetools_register_syn_cpp(SEXP fixedListSEXP, SEXP fixedDimSEXP, SEXP fixedVox2RasSEXP, SEXP movingListSEXP, SEXP movingDimSEXP, SEXP movingVox2RasSEXP, SEXP affineTransformSEXP, SEXP metricNamesSEXP, SEXP weightsSEXP, SEXP shrinkFactorsSEXP, SEXP smoothingSigmasSEXP, SEXP iterationsSEXP, SEXP gradStepSEXP, SEXP flowSigmaSEXP, SEXP totalSigmaSEXP, SEXP ccRadiusSEXP, SEXP interpCodesSEXP, SEXP fixedMaskSEXP, SEXP movingMaskSEXP, SEXP fixedPointsSEXP, SEXP movingPointsSEXP, SEXP pointsWeightSEXP, SEXP verboseSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const Rcpp::List& >::type fixedList(fixedListSEXP);
    Rcpp::traits::input_parameter< const Rcpp::IntegerVector& >::type fixedDim(fixedDimSEXP);
    Rcpp::traits::input_parameter< const Rcpp::NumericMatrix& >::type fixedVox2Ras(fixedVox2RasSEXP);
    Rcpp::traits::input_parameter< const Rcpp::List& >::type movingList(movingListSEXP);
    Rcpp::traits::input_parameter< const Rcpp::IntegerVector& >::type movingDim(movingDimSEXP);
    Rcpp::traits::input_parameter< const Rcpp::NumericMatrix& >::type movingVox2Ras(movingVox2RasSEXP);
    Rcpp::traits::input_parameter< const Rcpp::NumericMatrix& >::type affineTransform(affineTransformSEXP);
    Rcpp::traits::input_parameter< const Rcpp::CharacterVector& >::type metricNames(metricNamesSEXP);
    Rcpp::traits::input_parameter< const Rcpp::NumericVector& >::type weights(weightsSEXP);
    Rcpp::traits::input_parameter< const Rcpp::IntegerVector& >::type shrinkFactors(shrinkFactorsSEXP);
    Rcpp::traits::input_parameter< const Rcpp::NumericVector& >::type smoothingSigmas(smoothingSigmasSEXP);
    Rcpp::traits::input_parameter< const Rcpp::IntegerVector& >::type iterations(iterationsSEXP);
    Rcpp::traits::input_parameter< const double >::type gradStep(gradStepSEXP);
    Rcpp::traits::input_parameter< const Rcpp::NumericVector& >::type flowSigma(flowSigmaSEXP);
    Rcpp::traits::input_parameter< const double >::type totalSigma(totalSigmaSEXP);
    Rcpp::traits::input_parameter< const int >::type ccRadius(ccRadiusSEXP);
    Rcpp::traits::input_parameter< const Rcpp::IntegerVector& >::type interpCodes(interpCodesSEXP);
    Rcpp::traits::input_parameter< const Rcpp::Nullable<Rcpp::NumericVector>& >::type fixedMask(fixedMaskSEXP);
    Rcpp::traits::input_parameter< const Rcpp::Nullable<Rcpp::NumericVector>& >::type movingMask(movingMaskSEXP);
    Rcpp::traits::input_parameter< const Rcpp::NumericMatrix& >::type fixedPoints(fixedPointsSEXP);
    Rcpp::traits::input_parameter< const Rcpp::NumericMatrix& >::type movingPoints(movingPointsSEXP);
    Rcpp::traits::input_parameter< const double >::type pointsWeight(pointsWeightSEXP);
    Rcpp::traits::input_parameter< const bool >::type verbose(verboseSEXP);
    rcpp_result_gen = Rcpp::wrap(register_syn_cpp(fixedList, fixedDim, fixedVox2Ras, movingList, movingDim, movingVox2Ras, affineTransform, metricNames, weights, shrinkFactors, smoothingSigmas, iterations, gradStep, flowSigma, totalSigma, ccRadius, interpCodes, fixedMask, movingMask, fixedPoints, movingPoints, pointsWeight, verbose));
    return rcpp_result_gen;
END_RCPP
}
// resample3D
SEXP resample3D(const SEXP& arrayDim, const SEXP& fromArray, const SEXP& newVoxToWorldTransposed, const SEXP& oldVoxToWorldTransposed, const SEXP& na, const int interpolation);
RcppExport SEXP _ravetools_resample3D(SEXP arrayDimSEXP, SEXP fromArraySEXP, SEXP newVoxToWorldTransposedSEXP, SEXP oldVoxToWorldTransposedSEXP, SEXP naSEXP, SEXP interpolationSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type arrayDim(arrayDimSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type fromArray(fromArraySEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type newVoxToWorldTransposed(newVoxToWorldTransposedSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type oldVoxToWorldTransposed(oldVoxToWorldTransposedSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type na(naSEXP);
    Rcpp::traits::input_parameter< const int >::type interpolation(interpolationSEXP);
    rcpp_result_gen = Rcpp::wrap(resample3D(arrayDim, fromArray, newVoxToWorldTransposed, oldVoxToWorldTransposed, na, interpolation));
    return rcpp_result_gen;
END_RCPP
}
// shiftArray
SEXP shiftArray(const SEXP& x, const R_xlen_t& alongIdx, const R_xlen_t& unitIdx, const SEXP& shiftAmount);
RcppExport SEXP _ravetools_shiftArray(SEXP xSEXP, SEXP alongIdxSEXP, SEXP unitIdxSEXP, SEXP shiftAmountSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type x(xSEXP);
    Rcpp::traits::input_parameter< const R_xlen_t& >::type alongIdx(alongIdxSEXP);
    Rcpp::traits::input_parameter< const R_xlen_t& >::type unitIdx(unitIdxSEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type shiftAmount(shiftAmountSEXP);
    rcpp_result_gen = Rcpp::wrap(shiftArray(x, alongIdx, unitIdx, shiftAmount));
    return rcpp_result_gen;
END_RCPP
}
// getDefaultNumThreads
SEXP getDefaultNumThreads();
RcppExport SEXP _ravetools_getDefaultNumThreads() {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    rcpp_result_gen = Rcpp::wrap(getDefaultNumThreads());
    return rcpp_result_gen;
END_RCPP
}
// vcgDetectCollision
SEXP vcgDetectCollision(const Rcpp::NumericMatrix& x_, SEXP x_it_, const Rcpp::NumericMatrix& y_, SEXP y_it_, int mode_x, int mode_y, double radius, bool early_stop, bool include_interior);
RcppExport SEXP _ravetools_vcgDetectCollision(SEXP x_SEXP, SEXP x_it_SEXP, SEXP y_SEXP, SEXP y_it_SEXP, SEXP mode_xSEXP, SEXP mode_ySEXP, SEXP radiusSEXP, SEXP early_stopSEXP, SEXP include_interiorSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const Rcpp::NumericMatrix& >::type x_(x_SEXP);
    Rcpp::traits::input_parameter< SEXP >::type x_it_(x_it_SEXP);
    Rcpp::traits::input_parameter< const Rcpp::NumericMatrix& >::type y_(y_SEXP);
    Rcpp::traits::input_parameter< SEXP >::type y_it_(y_it_SEXP);
    Rcpp::traits::input_parameter< int >::type mode_x(mode_xSEXP);
    Rcpp::traits::input_parameter< int >::type mode_y(mode_ySEXP);
    Rcpp::traits::input_parameter< double >::type radius(radiusSEXP);
    Rcpp::traits::input_parameter< bool >::type early_stop(early_stopSEXP);
    Rcpp::traits::input_parameter< bool >::type include_interior(include_interiorSEXP);
    rcpp_result_gen = Rcpp::wrap(vcgDetectCollision(x_, x_it_, y_, y_it_, mode_x, mode_y, radius, early_stop, include_interior));
    return rcpp_result_gen;
END_RCPP
}
// vcgIsoSurface
SEXP vcgIsoSurface(SEXP array_, double thresh);
RcppExport SEXP _ravetools_vcgIsoSurface(SEXP array_SEXP, SEXP threshSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type array_(array_SEXP);
    Rcpp::traits::input_parameter< double >::type thresh(threshSEXP);
    rcpp_result_gen = Rcpp::wrap(vcgIsoSurface(array_, thresh));
    return rcpp_result_gen;
END_RCPP
}
// vcgSmoothImplicit
SEXP vcgSmoothImplicit(SEXP vb_, SEXP it_, float lambda_, bool useMassMatrix, bool fixBorder, bool useCotWeight, int degree, float lapWeight_, bool SmoothQ);
RcppExport SEXP _ravetools_vcgSmoothImplicit(SEXP vb_SEXP, SEXP it_SEXP, SEXP lambda_SEXP, SEXP useMassMatrixSEXP, SEXP fixBorderSEXP, SEXP useCotWeightSEXP, SEXP degreeSEXP, SEXP lapWeight_SEXP, SEXP SmoothQSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type vb_(vb_SEXP);
    Rcpp::traits::input_parameter< SEXP >::type it_(it_SEXP);
    Rcpp::traits::input_parameter< float >::type lambda_(lambda_SEXP);
    Rcpp::traits::input_parameter< bool >::type useMassMatrix(useMassMatrixSEXP);
    Rcpp::traits::input_parameter< bool >::type fixBorder(fixBorderSEXP);
    Rcpp::traits::input_parameter< bool >::type useCotWeight(useCotWeightSEXP);
    Rcpp::traits::input_parameter< int >::type degree(degreeSEXP);
    Rcpp::traits::input_parameter< float >::type lapWeight_(lapWeight_SEXP);
    Rcpp::traits::input_parameter< bool >::type SmoothQ(SmoothQSEXP);
    rcpp_result_gen = Rcpp::wrap(vcgSmoothImplicit(vb_, it_, lambda_, useMassMatrix, fixBorder, useCotWeight, degree, lapWeight_, SmoothQ));
    return rcpp_result_gen;
END_RCPP
}
// vcgSmooth
SEXP vcgSmooth(SEXP vb_, SEXP it_, int iter, int method, float lambda, float mu, float delta_);
RcppExport SEXP _ravetools_vcgSmooth(SEXP vb_SEXP, SEXP it_SEXP, SEXP iterSEXP, SEXP methodSEXP, SEXP lambdaSEXP, SEXP muSEXP, SEXP delta_SEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type vb_(vb_SEXP);
    Rcpp::traits::input_parameter< SEXP >::type it_(it_SEXP);
    Rcpp::traits::input_parameter< int >::type iter(iterSEXP);
    Rcpp::traits::input_parameter< int >::type method(methodSEXP);
    Rcpp::traits::input_parameter< float >::type lambda(lambdaSEXP);
    Rcpp::traits::input_parameter< float >::type mu(muSEXP);
    Rcpp::traits::input_parameter< float >::type delta_(delta_SEXP);
    rcpp_result_gen = Rcpp::wrap(vcgSmooth(vb_, it_, iter, method, lambda, mu, delta_));
    return rcpp_result_gen;
END_RCPP
}
// vcgUniformResample
SEXP vcgUniformResample(const SEXP& vb_, const SEXP& it_, const float& voxelSize, const float& offsetThr, const bool& discretizeFlag, const bool& multiSampleFlag, const bool& absDistFlag, const bool& mergeCloseVert, const bool& silent);
RcppExport SEXP _ravetools_vcgUniformResample(SEXP vb_SEXP, SEXP it_SEXP, SEXP voxelSizeSEXP, SEXP offsetThrSEXP, SEXP discretizeFlagSEXP, SEXP multiSampleFlagSEXP, SEXP absDistFlagSEXP, SEXP mergeCloseVertSEXP, SEXP silentSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const SEXP& >::type vb_(vb_SEXP);
    Rcpp::traits::input_parameter< const SEXP& >::type it_(it_SEXP);
    Rcpp::traits::input_parameter< const float& >::type voxelSize(voxelSizeSEXP);
    Rcpp::traits::input_parameter< const float& >::type offsetThr(offsetThrSEXP);
    Rcpp::traits::input_parameter< const bool& >::type discretizeFlag(discretizeFlagSEXP);
    Rcpp::traits::input_parameter< const bool& >::type multiSampleFlag(multiSampleFlagSEXP);
    Rcpp::traits::input_parameter< const bool& >::type absDistFlag(absDistFlagSEXP);
    Rcpp::traits::input_parameter< const bool& >::type mergeCloseVert(mergeCloseVertSEXP);
    Rcpp::traits::input_parameter< const bool& >::type silent(silentSEXP);
    rcpp_result_gen = Rcpp::wrap(vcgUniformResample(vb_, it_, voxelSize, offsetThr, discretizeFlag, multiSampleFlag, absDistFlag, mergeCloseVert, silent));
    return rcpp_result_gen;
END_RCPP
}
// vcgUpdateNormals
SEXP vcgUpdateNormals(SEXP vb_, SEXP it_, const int& select, const Rcpp::IntegerVector& pointcloud, const bool& silent);
RcppExport SEXP _ravetools_vcgUpdateNormals(SEXP vb_SEXP, SEXP it_SEXP, SEXP selectSEXP, SEXP pointcloudSEXP, SEXP silentSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type vb_(vb_SEXP);
    Rcpp::traits::input_parameter< SEXP >::type it_(it_SEXP);
    Rcpp::traits::input_parameter< const int& >::type select(selectSEXP);
    Rcpp::traits::input_parameter< const Rcpp::IntegerVector& >::type pointcloud(pointcloudSEXP);
    Rcpp::traits::input_parameter< const bool& >::type silent(silentSEXP);
    rcpp_result_gen = Rcpp::wrap(vcgUpdateNormals(vb_, it_, select, pointcloud, silent));
    return rcpp_result_gen;
END_RCPP
}
// vcgEdgeSubdivision
SEXP vcgEdgeSubdivision(SEXP vb_, SEXP it_);
RcppExport SEXP _ravetools_vcgEdgeSubdivision(SEXP vb_SEXP, SEXP it_SEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type vb_(vb_SEXP);
    Rcpp::traits::input_parameter< SEXP >::type it_(it_SEXP);
    rcpp_result_gen = Rcpp::wrap(vcgEdgeSubdivision(vb_, it_));
    return rcpp_result_gen;
END_RCPP
}
// vcgEdgeLengthSubdivision
SEXP vcgEdgeLengthSubdivision(SEXP vb_, SEXP it_, double maxEdgeLen, int maxIter);
RcppExport SEXP _ravetools_vcgEdgeLengthSubdivision(SEXP vb_SEXP, SEXP it_SEXP, SEXP maxEdgeLenSEXP, SEXP maxIterSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type vb_(vb_SEXP);
    Rcpp::traits::input_parameter< SEXP >::type it_(it_SEXP);
    Rcpp::traits::input_parameter< double >::type maxEdgeLen(maxEdgeLenSEXP);
    Rcpp::traits::input_parameter< int >::type maxIter(maxIterSEXP);
    rcpp_result_gen = Rcpp::wrap(vcgEdgeLengthSubdivision(vb_, it_, maxEdgeLen, maxIter));
    return rcpp_result_gen;
END_RCPP
}
// vcgVolume
SEXP vcgVolume(SEXP mesh_);
RcppExport SEXP _ravetools_vcgVolume(SEXP mesh_SEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type mesh_(mesh_SEXP);
    rcpp_result_gen = Rcpp::wrap(vcgVolume(mesh_));
    return rcpp_result_gen;
END_RCPP
}
// vcgSphere
SEXP vcgSphere(const int& subdiv, bool normals);
RcppExport SEXP _ravetools_vcgSphere(SEXP subdivSEXP, SEXP normalsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const int& >::type subdiv(subdivSEXP);
    Rcpp::traits::input_parameter< bool >::type normals(normalsSEXP);
    rcpp_result_gen = Rcpp::wrap(vcgSphere(subdiv, normals));
    return rcpp_result_gen;
END_RCPP
}
// vcgDijkstra
SEXP vcgDijkstra(SEXP vb_, SEXP it_, const Rcpp::IntegerVector& source, const double& maxdist_);
RcppExport SEXP _ravetools_vcgDijkstra(SEXP vb_SEXP, SEXP it_SEXP, SEXP sourceSEXP, SEXP maxdist_SEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type vb_(vb_SEXP);
    Rcpp::traits::input_parameter< SEXP >::type it_(it_SEXP);
    Rcpp::traits::input_parameter< const Rcpp::IntegerVector& >::type source(sourceSEXP);
    Rcpp::traits::input_parameter< const double& >::type maxdist_(maxdist_SEXP);
    rcpp_result_gen = Rcpp::wrap(vcgDijkstra(vb_, it_, source, maxdist_));
    return rcpp_result_gen;
END_RCPP
}
// vcgRaycaster
SEXP vcgRaycaster(SEXP vb_, SEXP it_, const Rcpp::NumericVector& rayOrigin, const Rcpp::NumericVector& rayDirection, const float& maxDistance, const bool& bothSides, const int& threads);
RcppExport SEXP _ravetools_vcgRaycaster(SEXP vb_SEXP, SEXP it_SEXP, SEXP rayOriginSEXP, SEXP rayDirectionSEXP, SEXP maxDistanceSEXP, SEXP bothSidesSEXP, SEXP threadsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type vb_(vb_SEXP);
    Rcpp::traits::input_parameter< SEXP >::type it_(it_SEXP);
    Rcpp::traits::input_parameter< const Rcpp::NumericVector& >::type rayOrigin(rayOriginSEXP);
    Rcpp::traits::input_parameter< const Rcpp::NumericVector& >::type rayDirection(rayDirectionSEXP);
    Rcpp::traits::input_parameter< const float& >::type maxDistance(maxDistanceSEXP);
    Rcpp::traits::input_parameter< const bool& >::type bothSides(bothSidesSEXP);
    Rcpp::traits::input_parameter< const int& >::type threads(threadsSEXP);
    rcpp_result_gen = Rcpp::wrap(vcgRaycaster(vb_, it_, rayOrigin, rayDirection, maxDistance, bothSides, threads));
    return rcpp_result_gen;
END_RCPP
}
// vcgKDTreeSearch
SEXP vcgKDTreeSearch(SEXP target_, SEXP query_, unsigned int k, unsigned int nPointsPerCell, unsigned int maxDepth);
RcppExport SEXP _ravetools_vcgKDTreeSearch(SEXP target_SEXP, SEXP query_SEXP, SEXP kSEXP, SEXP nPointsPerCellSEXP, SEXP maxDepthSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type target_(target_SEXP);
    Rcpp::traits::input_parameter< SEXP >::type query_(query_SEXP);
    Rcpp::traits::input_parameter< unsigned int >::type k(kSEXP);
    Rcpp::traits::input_parameter< unsigned int >::type nPointsPerCell(nPointsPerCellSEXP);
    Rcpp::traits::input_parameter< unsigned int >::type maxDepth(maxDepthSEXP);
    rcpp_result_gen = Rcpp::wrap(vcgKDTreeSearch(target_, query_, k, nPointsPerCell, maxDepth));
    return rcpp_result_gen;
END_RCPP
}
// vcgSubset
SEXP vcgSubset(SEXP vb_, SEXP it_, const Rcpp::LogicalVector selector_);
RcppExport SEXP _ravetools_vcgSubset(SEXP vb_SEXP, SEXP it_SEXP, SEXP selector_SEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type vb_(vb_SEXP);
    Rcpp::traits::input_parameter< SEXP >::type it_(it_SEXP);
    Rcpp::traits::input_parameter< const Rcpp::LogicalVector >::type selector_(selector_SEXP);
    rcpp_result_gen = Rcpp::wrap(vcgSubset(vb_, it_, selector_));
    return rcpp_result_gen;
END_RCPP
}
// vcgCountEdgeDefects
Rcpp::List vcgCountEdgeDefects(SEXP vb_, SEXP it_);
RcppExport SEXP _ravetools_vcgCountEdgeDefects(SEXP vb_SEXP, SEXP it_SEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type vb_(vb_SEXP);
    Rcpp::traits::input_parameter< SEXP >::type it_(it_SEXP);
    rcpp_result_gen = Rcpp::wrap(vcgCountEdgeDefects(vb_, it_));
    return rcpp_result_gen;
END_RCPP
}
// vcgAverageEdgeLength
double vcgAverageEdgeLength(SEXP vb_, SEXP it_);
RcppExport SEXP _ravetools_vcgAverageEdgeLength(SEXP vb_SEXP, SEXP it_SEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type vb_(vb_SEXP);
    Rcpp::traits::input_parameter< SEXP >::type it_(it_SEXP);
    rcpp_result_gen = Rcpp::wrap(vcgAverageEdgeLength(vb_, it_));
    return rcpp_result_gen;
END_RCPP
}
// vcgMaxEdgeLength
double vcgMaxEdgeLength(SEXP vb_, SEXP it_);
RcppExport SEXP _ravetools_vcgMaxEdgeLength(SEXP vb_SEXP, SEXP it_SEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type vb_(vb_SEXP);
    Rcpp::traits::input_parameter< SEXP >::type it_(it_SEXP);
    rcpp_result_gen = Rcpp::wrap(vcgMaxEdgeLength(vb_, it_));
    return rcpp_result_gen;
END_RCPP
}
// vcgMeshPatchFaces
Rcpp::IntegerVector vcgMeshPatchFaces(SEXP vb_, SEXP it_, Rcpp::IntegerVector boundary_seq, int seed_face);
RcppExport SEXP _ravetools_vcgMeshPatchFaces(SEXP vb_SEXP, SEXP it_SEXP, SEXP boundary_seqSEXP, SEXP seed_faceSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type vb_(vb_SEXP);
    Rcpp::traits::input_parameter< SEXP >::type it_(it_SEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type boundary_seq(boundary_seqSEXP);
    Rcpp::traits::input_parameter< int >::type seed_face(seed_faceSEXP);
    rcpp_result_gen = Rcpp::wrap(vcgMeshPatchFaces(vb_, it_, boundary_seq, seed_face));
    return rcpp_result_gen;
END_RCPP
}
// vcgFixDefects
Rcpp::List vcgFixDefects(SEXP vb_, SEXP it_, double merge_tolerance, int max_hole_size, bool verbose);
RcppExport SEXP _ravetools_vcgFixDefects(SEXP vb_SEXP, SEXP it_SEXP, SEXP merge_toleranceSEXP, SEXP max_hole_sizeSEXP, SEXP verboseSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type vb_(vb_SEXP);
    Rcpp::traits::input_parameter< SEXP >::type it_(it_SEXP);
    Rcpp::traits::input_parameter< double >::type merge_tolerance(merge_toleranceSEXP);
    Rcpp::traits::input_parameter< int >::type max_hole_size(max_hole_sizeSEXP);
    Rcpp::traits::input_parameter< bool >::type verbose(verboseSEXP);
    rcpp_result_gen = Rcpp::wrap(vcgFixDefects(vb_, it_, merge_tolerance, max_hole_size, verbose));
    return rcpp_result_gen;
END_RCPP
}

// validate (ensure exported C++ functions exist before calling them)
static int _ravetools_RcppExport_validate(const char* sig) { 
    static std::set<std::string> signatures;
    if (signatures.empty()) {
        signatures.insert("SEXP(*collapser_cplx)(SEXP,SEXP,const int,const int)");
        signatures.insert("SEXP(*collapser_real)(SEXP,SEXP,const int,const int)");
        signatures.insert("SEXP(*columnQuantile)(SEXP&,const double&,const bool&)");
        signatures.insert("SEXP(*columnMedian)(SEXP&,const bool&)");
        signatures.insert("SEXP(*fastColMeans)(const SEXP&,const SEXP&,const SEXP&)");
        signatures.insert("SEXP(*quickQuantile)(const SEXP&,const double&,const bool&)");
        signatures.insert("SEXP(*quickMedian)(const SEXP&,const bool&)");
        signatures.insert("SEXP(*fastcov)(const SEXP&,const SEXP&,const SEXP&,const SEXP&,const double&)");
        signatures.insert("SEXP(*fftw_r2c)(SEXP,int,int,SEXP)");
        signatures.insert("SEXP(*fftw_c2c)(SEXP,int,int,SEXP)");
        signatures.insert("SEXP(*fftw_c2r)(SEXP,int,int,SEXP)");
        signatures.insert("SEXP(*mvfftw_r2c)(SEXP,int,int,SEXP)");
        signatures.insert("SEXP(*mvfftw_c2c)(SEXP,int,int,SEXP)");
        signatures.insert("SEXP(*mvfftw_c2r)(SEXP,int,int,SEXP)");
        signatures.insert("SEXP(*fftw_r2c_2d)(SEXP,int,int,SEXP)");
        signatures.insert("SEXP(*fftw_c2c_2d)(SEXP,int,int,SEXP)");
        signatures.insert("SEXP(*fftw_r2c_3d)(SEXP,int,int,SEXP)");
        signatures.insert("SEXP(*fftw_c2c_3d)(SEXP,int,int,SEXP)");
        signatures.insert("SEXP(*conjugate)(SEXP)");
        signatures.insert("SEXP(*cpp_filter)(SEXP,SEXP,SEXP,SEXP)");
        signatures.insert("SEXP(*Vector3__new)()");
        signatures.insert("void(*Vector3__from_array)(const SEXP&,std::vector<double>&,const int&,const int&)");
        signatures.insert("void(*Vector3__resize)(const SEXP&,const int&)");
        signatures.insert("size_t(*Vector3__get_size)(const SEXP&)");
        signatures.insert("SEXP(*Vector3__to_array)(const SEXP&,const int&,const int&)");
        signatures.insert("void(*Vector3__set_scalar)(const SEXP&,double&)");
        signatures.insert("void(*Vector3__set_x)(const SEXP&,double&)");
        signatures.insert("void(*Vector3__set_y)(const SEXP&,double&)");
        signatures.insert("void(*Vector3__set_z)(const SEXP&,double&)");
        signatures.insert("double(*Vector3__get_x)(const SEXP&,const size_t&)");
        signatures.insert("double(*Vector3__get_y)(const SEXP&,const size_t&)");
        signatures.insert("double(*Vector3__get_z)(const SEXP&,const size_t&)");
        signatures.insert("SEXP(*Vector3__get_item)(const SEXP&,const size_t&)");
        signatures.insert("void(*Vector3__copy)(const SEXP&,const SEXP&)");
        signatures.insert("void(*Vector3__add)(const SEXP&,const SEXP&)");
        signatures.insert("void(*Vector3__add_scalar)(const SEXP&,std::vector<double>&)");
        signatures.insert("void(*Vector3__add_vectors)(const SEXP&,const SEXP&,const SEXP&)");
        signatures.insert("void(*Vector3__add_scaled)(const SEXP&,const SEXP&,const double&)");
        signatures.insert("void(*Vector3__sub)(const SEXP&,const SEXP&)");
        signatures.insert("void(*Vector3__sub_scalar)(const SEXP&,std::vector<double>&)");
        signatures.insert("void(*Vector3__sub_vectors)(const SEXP&,const SEXP&,const SEXP&)");
        signatures.insert("void(*Vector3__multiply)(const SEXP&,const SEXP&)");
        signatures.insert("void(*Vector3__multiply_scalar)(const SEXP&,std::vector<double>&)");
        signatures.insert("void(*Vector3__multiply_vectors)(const SEXP&,const SEXP&,const SEXP&)");
        signatures.insert("void(*Vector3__apply_matrix3)(const SEXP&,const std::vector<double>&)");
        signatures.insert("void(*Vector3__apply_matrix4)(const SEXP&,const SEXP&)");
        signatures.insert("void(*Vector3__apply_quaternion)(const SEXP&,const SEXP&)");
        signatures.insert("void(*Vector3__transform_direction)(const SEXP&,const SEXP&)");
        signatures.insert("void(*Vector3__divide)(const SEXP&,const SEXP&)");
        signatures.insert("void(*Vector3__divide_scalar)(const SEXP&,std::vector<double>&)");
        signatures.insert("void(*Vector3__min)(const SEXP&,const SEXP&)");
        signatures.insert("void(*Vector3__max)(const SEXP&,const SEXP&)");
        signatures.insert("void(*Vector3__clamp)(const SEXP&,const SEXP&,const SEXP&)");
        signatures.insert("void(*Vector3__floor)(const SEXP&)");
        signatures.insert("void(*Vector3__ceil)(const SEXP&)");
        signatures.insert("void(*Vector3__round)(const SEXP&)");
        signatures.insert("void(*Vector3__round_to_zero)(const SEXP&)");
        signatures.insert("void(*Vector3__negate)(const SEXP&)");
        signatures.insert("std::vector<double>(*Vector3__dot)(const SEXP&,const SEXP&)");
        signatures.insert("std::vector<double>(*Vector3__length_squared)(const SEXP&)");
        signatures.insert("std::vector<double>(*Vector3__length)(const SEXP&)");
        signatures.insert("std::vector<double>(*Vector3__length_manhattan)(const SEXP&)");
        signatures.insert("void(*Vector3__normalize)(const SEXP&)");
        signatures.insert("void(*Vector3__set_length)(const SEXP&,std::vector<double>&)");
        signatures.insert("void(*Vector3__lerp)(const SEXP&,const SEXP&,std::vector<double>&)");
        signatures.insert("void(*Vector3__lerp_vectors)(const SEXP&,const SEXP&,const SEXP&,std::vector<double>&)");
        signatures.insert("void(*Vector3__cross)(const SEXP&,const SEXP&)");
        signatures.insert("void(*Vector3__cross_vectors)(const SEXP&,const SEXP&,const SEXP&)");
        signatures.insert("void(*Vector3__project_on_vector)(const SEXP&,const SEXP&)");
        signatures.insert("void(*Vector3__project_on_plane)(const SEXP&,const SEXP&)");
        signatures.insert("void(*Vector3__reflect)(const SEXP&,const SEXP&)");
        signatures.insert("std::vector<double>(*Vector3__angle_to)(const SEXP&,const SEXP&)");
        signatures.insert("std::vector<double>(*Vector3__distance_to)(const SEXP&,const SEXP&)");
        signatures.insert("std::vector<double>(*Vector3__distance_to_squared)(const SEXP&,const SEXP&)");
        signatures.insert("std::vector<double>(*Vector3__distance_to_manhattan)(const SEXP&,const SEXP&)");
        signatures.insert("void(*Vector3__set_from_spherical_coords)(const SEXP&,const double&,const double&,const double&)");
        signatures.insert("void(*Vector3__set_from_matrix_position)(const SEXP&,const SEXP&)");
        signatures.insert("void(*Vector3__set_from_matrix_scale)(const SEXP&,const SEXP&)");
    }
    return signatures.find(sig) != signatures.end();
}

// registerCCallable (register entry points for exported C++ functions)
RcppExport SEXP _ravetools_RcppExport_registerCCallable() { 
    R_RegisterCCallable("ravetools", "_ravetools_collapser_cplx", (DL_FUNC)_ravetools_collapser_cplx_try);
    R_RegisterCCallable("ravetools", "_ravetools_collapser_real", (DL_FUNC)_ravetools_collapser_real_try);
    R_RegisterCCallable("ravetools", "_ravetools_columnQuantile", (DL_FUNC)_ravetools_columnQuantile_try);
    R_RegisterCCallable("ravetools", "_ravetools_columnMedian", (DL_FUNC)_ravetools_columnMedian_try);
    R_RegisterCCallable("ravetools", "_ravetools_fastColMeans", (DL_FUNC)_ravetools_fastColMeans_try);
    R_RegisterCCallable("ravetools", "_ravetools_quickQuantile", (DL_FUNC)_ravetools_quickQuantile_try);
    R_RegisterCCallable("ravetools", "_ravetools_quickMedian", (DL_FUNC)_ravetools_quickMedian_try);
    R_RegisterCCallable("ravetools", "_ravetools_fastcov", (DL_FUNC)_ravetools_fastcov_try);
    R_RegisterCCallable("ravetools", "_ravetools_fftw_r2c", (DL_FUNC)_ravetools_fftw_r2c_try);
    R_RegisterCCallable("ravetools", "_ravetools_fftw_c2c", (DL_FUNC)_ravetools_fftw_c2c_try);
    R_RegisterCCallable("ravetools", "_ravetools_fftw_c2r", (DL_FUNC)_ravetools_fftw_c2r_try);
    R_RegisterCCallable("ravetools", "_ravetools_mvfftw_r2c", (DL_FUNC)_ravetools_mvfftw_r2c_try);
    R_RegisterCCallable("ravetools", "_ravetools_mvfftw_c2c", (DL_FUNC)_ravetools_mvfftw_c2c_try);
    R_RegisterCCallable("ravetools", "_ravetools_mvfftw_c2r", (DL_FUNC)_ravetools_mvfftw_c2r_try);
    R_RegisterCCallable("ravetools", "_ravetools_fftw_r2c_2d", (DL_FUNC)_ravetools_fftw_r2c_2d_try);
    R_RegisterCCallable("ravetools", "_ravetools_fftw_c2c_2d", (DL_FUNC)_ravetools_fftw_c2c_2d_try);
    R_RegisterCCallable("ravetools", "_ravetools_fftw_r2c_3d", (DL_FUNC)_ravetools_fftw_r2c_3d_try);
    R_RegisterCCallable("ravetools", "_ravetools_fftw_c2c_3d", (DL_FUNC)_ravetools_fftw_c2c_3d_try);
    R_RegisterCCallable("ravetools", "_ravetools_conjugate", (DL_FUNC)_ravetools_conjugate_try);
    R_RegisterCCallable("ravetools", "_ravetools_cpp_filter", (DL_FUNC)_ravetools_cpp_filter_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__new", (DL_FUNC)_ravetools_Vector3__new_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__from_array", (DL_FUNC)_ravetools_Vector3__from_array_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__resize", (DL_FUNC)_ravetools_Vector3__resize_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__get_size", (DL_FUNC)_ravetools_Vector3__get_size_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__to_array", (DL_FUNC)_ravetools_Vector3__to_array_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__set_scalar", (DL_FUNC)_ravetools_Vector3__set_scalar_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__set_x", (DL_FUNC)_ravetools_Vector3__set_x_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__set_y", (DL_FUNC)_ravetools_Vector3__set_y_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__set_z", (DL_FUNC)_ravetools_Vector3__set_z_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__get_x", (DL_FUNC)_ravetools_Vector3__get_x_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__get_y", (DL_FUNC)_ravetools_Vector3__get_y_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__get_z", (DL_FUNC)_ravetools_Vector3__get_z_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__get_item", (DL_FUNC)_ravetools_Vector3__get_item_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__copy", (DL_FUNC)_ravetools_Vector3__copy_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__add", (DL_FUNC)_ravetools_Vector3__add_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__add_scalar", (DL_FUNC)_ravetools_Vector3__add_scalar_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__add_vectors", (DL_FUNC)_ravetools_Vector3__add_vectors_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__add_scaled", (DL_FUNC)_ravetools_Vector3__add_scaled_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__sub", (DL_FUNC)_ravetools_Vector3__sub_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__sub_scalar", (DL_FUNC)_ravetools_Vector3__sub_scalar_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__sub_vectors", (DL_FUNC)_ravetools_Vector3__sub_vectors_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__multiply", (DL_FUNC)_ravetools_Vector3__multiply_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__multiply_scalar", (DL_FUNC)_ravetools_Vector3__multiply_scalar_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__multiply_vectors", (DL_FUNC)_ravetools_Vector3__multiply_vectors_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__apply_matrix3", (DL_FUNC)_ravetools_Vector3__apply_matrix3_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__apply_matrix4", (DL_FUNC)_ravetools_Vector3__apply_matrix4_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__apply_quaternion", (DL_FUNC)_ravetools_Vector3__apply_quaternion_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__transform_direction", (DL_FUNC)_ravetools_Vector3__transform_direction_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__divide", (DL_FUNC)_ravetools_Vector3__divide_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__divide_scalar", (DL_FUNC)_ravetools_Vector3__divide_scalar_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__min", (DL_FUNC)_ravetools_Vector3__min_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__max", (DL_FUNC)_ravetools_Vector3__max_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__clamp", (DL_FUNC)_ravetools_Vector3__clamp_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__floor", (DL_FUNC)_ravetools_Vector3__floor_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__ceil", (DL_FUNC)_ravetools_Vector3__ceil_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__round", (DL_FUNC)_ravetools_Vector3__round_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__round_to_zero", (DL_FUNC)_ravetools_Vector3__round_to_zero_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__negate", (DL_FUNC)_ravetools_Vector3__negate_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__dot", (DL_FUNC)_ravetools_Vector3__dot_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__length_squared", (DL_FUNC)_ravetools_Vector3__length_squared_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__length", (DL_FUNC)_ravetools_Vector3__length_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__length_manhattan", (DL_FUNC)_ravetools_Vector3__length_manhattan_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__normalize", (DL_FUNC)_ravetools_Vector3__normalize_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__set_length", (DL_FUNC)_ravetools_Vector3__set_length_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__lerp", (DL_FUNC)_ravetools_Vector3__lerp_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__lerp_vectors", (DL_FUNC)_ravetools_Vector3__lerp_vectors_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__cross", (DL_FUNC)_ravetools_Vector3__cross_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__cross_vectors", (DL_FUNC)_ravetools_Vector3__cross_vectors_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__project_on_vector", (DL_FUNC)_ravetools_Vector3__project_on_vector_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__project_on_plane", (DL_FUNC)_ravetools_Vector3__project_on_plane_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__reflect", (DL_FUNC)_ravetools_Vector3__reflect_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__angle_to", (DL_FUNC)_ravetools_Vector3__angle_to_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__distance_to", (DL_FUNC)_ravetools_Vector3__distance_to_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__distance_to_squared", (DL_FUNC)_ravetools_Vector3__distance_to_squared_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__distance_to_manhattan", (DL_FUNC)_ravetools_Vector3__distance_to_manhattan_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__set_from_spherical_coords", (DL_FUNC)_ravetools_Vector3__set_from_spherical_coords_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__set_from_matrix_position", (DL_FUNC)_ravetools_Vector3__set_from_matrix_position_try);
    R_RegisterCCallable("ravetools", "_ravetools_Vector3__set_from_matrix_scale", (DL_FUNC)_ravetools_Vector3__set_from_matrix_scale_try);
    R_RegisterCCallable("ravetools", "_ravetools_RcppExport_validate", (DL_FUNC)_ravetools_RcppExport_validate);
    return R_NilValue;
}

static const R_CallMethodDef CallEntries[] = {
    {"_ravetools_baselineArray", (DL_FUNC) &_ravetools_baselineArray, 8},
    {"_ravetools_bucketFillVolume", (DL_FUNC) &_ravetools_bucketFillVolume, 5},
    {"_ravetools_carla_zmin_all", (DL_FUNC) &_ravetools_carla_zmin_all, 2},
    {"_ravetools_collapser_cplx", (DL_FUNC) &_ravetools_collapser_cplx, 4},
    {"_ravetools_collapser_real", (DL_FUNC) &_ravetools_collapser_real, 4},
    {"_ravetools_columnQuantile", (DL_FUNC) &_ravetools_columnQuantile, 3},
    {"_ravetools_columnMedian", (DL_FUNC) &_ravetools_columnMedian, 2},
    {"_ravetools_fastColMeans", (DL_FUNC) &_ravetools_fastColMeans, 3},
    {"_ravetools_quickQuantile", (DL_FUNC) &_ravetools_quickQuantile, 3},
    {"_ravetools_quickMedian", (DL_FUNC) &_ravetools_quickMedian, 2},
    {"_ravetools_fastcov", (DL_FUNC) &_ravetools_fastcov, 5},
    {"_ravetools_fftw_r2c", (DL_FUNC) &_ravetools_fftw_r2c, 4},
    {"_ravetools_fftw_c2c", (DL_FUNC) &_ravetools_fftw_c2c, 4},
    {"_ravetools_fftw_c2r", (DL_FUNC) &_ravetools_fftw_c2r, 4},
    {"_ravetools_mvfftw_r2c", (DL_FUNC) &_ravetools_mvfftw_r2c, 4},
    {"_ravetools_mvfftw_c2c", (DL_FUNC) &_ravetools_mvfftw_c2c, 4},
    {"_ravetools_mvfftw_c2r", (DL_FUNC) &_ravetools_mvfftw_c2r, 4},
    {"_ravetools_fftw_r2c_2d", (DL_FUNC) &_ravetools_fftw_r2c_2d, 4},
    {"_ravetools_fftw_c2c_2d", (DL_FUNC) &_ravetools_fftw_c2c_2d, 4},
    {"_ravetools_fftw_r2c_3d", (DL_FUNC) &_ravetools_fftw_r2c_3d, 4},
    {"_ravetools_fftw_c2c_3d", (DL_FUNC) &_ravetools_fftw_c2c_3d, 4},
    {"_ravetools_conjugate", (DL_FUNC) &_ravetools_conjugate, 1},
    {"_ravetools_cpp_filter", (DL_FUNC) &_ravetools_cpp_filter, 4},
    {"_ravetools_Matrix4__new", (DL_FUNC) &_ravetools_Matrix4__new, 0},
    {"_ravetools_Matrix4__to_array", (DL_FUNC) &_ravetools_Matrix4__to_array, 1},
    {"_ravetools_Matrix4__from_array", (DL_FUNC) &_ravetools_Matrix4__from_array, 3},
    {"_ravetools_Matrix4__identity", (DL_FUNC) &_ravetools_Matrix4__identity, 1},
    {"_ravetools_Matrix4__copy", (DL_FUNC) &_ravetools_Matrix4__copy, 2},
    {"_ravetools_Matrix4__copy_position", (DL_FUNC) &_ravetools_Matrix4__copy_position, 2},
    {"_ravetools_Matrix4__extract_basis", (DL_FUNC) &_ravetools_Matrix4__extract_basis, 4},
    {"_ravetools_Matrix4__make_basis", (DL_FUNC) &_ravetools_Matrix4__make_basis, 4},
    {"_ravetools_Matrix4__extract_rotation", (DL_FUNC) &_ravetools_Matrix4__extract_rotation, 2},
    {"_ravetools_Matrix4__look_at", (DL_FUNC) &_ravetools_Matrix4__look_at, 4},
    {"_ravetools_Matrix4__multiply_matrices", (DL_FUNC) &_ravetools_Matrix4__multiply_matrices, 3},
    {"_ravetools_Matrix4__multiply_scalar", (DL_FUNC) &_ravetools_Matrix4__multiply_scalar, 2},
    {"_ravetools_Matrix4__determinant", (DL_FUNC) &_ravetools_Matrix4__determinant, 1},
    {"_ravetools_Matrix4__transpose", (DL_FUNC) &_ravetools_Matrix4__transpose, 1},
    {"_ravetools_Matrix4__set_position", (DL_FUNC) &_ravetools_Matrix4__set_position, 4},
    {"_ravetools_Matrix4__invert", (DL_FUNC) &_ravetools_Matrix4__invert, 1},
    {"_ravetools_Matrix4__scale", (DL_FUNC) &_ravetools_Matrix4__scale, 2},
    {"_ravetools_Matrix4__get_max_scale_on_axis", (DL_FUNC) &_ravetools_Matrix4__get_max_scale_on_axis, 1},
    {"_ravetools_Matrix4__make_translation", (DL_FUNC) &_ravetools_Matrix4__make_translation, 4},
    {"_ravetools_Matrix4__make_rotation_x", (DL_FUNC) &_ravetools_Matrix4__make_rotation_x, 2},
    {"_ravetools_Matrix4__make_rotation_y", (DL_FUNC) &_ravetools_Matrix4__make_rotation_y, 2},
    {"_ravetools_Matrix4__make_rotation_z", (DL_FUNC) &_ravetools_Matrix4__make_rotation_z, 2},
    {"_ravetools_Matrix4__make_rotation_axis", (DL_FUNC) &_ravetools_Matrix4__make_rotation_axis, 3},
    {"_ravetools_Matrix4__make_scale", (DL_FUNC) &_ravetools_Matrix4__make_scale, 4},
    {"_ravetools_Matrix4__make_shear", (DL_FUNC) &_ravetools_Matrix4__make_shear, 7},
    {"_ravetools_Matrix4__make_perspective", (DL_FUNC) &_ravetools_Matrix4__make_perspective, 7},
    {"_ravetools_Matrix4__make_orthographic", (DL_FUNC) &_ravetools_Matrix4__make_orthographic, 7},
    {"_ravetools_Quaternion__new", (DL_FUNC) &_ravetools_Quaternion__new, 0},
    {"_ravetools_Quaternion__set", (DL_FUNC) &_ravetools_Quaternion__set, 5},
    {"_ravetools_Quaternion__copy", (DL_FUNC) &_ravetools_Quaternion__copy, 2},
    {"_ravetools_Quaternion__to_array", (DL_FUNC) &_ravetools_Quaternion__to_array, 1},
    {"_ravetools_Quaternion__getX", (DL_FUNC) &_ravetools_Quaternion__getX, 1},
    {"_ravetools_Quaternion__setX", (DL_FUNC) &_ravetools_Quaternion__setX, 2},
    {"_ravetools_Quaternion__getY", (DL_FUNC) &_ravetools_Quaternion__getY, 1},
    {"_ravetools_Quaternion__setY", (DL_FUNC) &_ravetools_Quaternion__setY, 2},
    {"_ravetools_Quaternion__getZ", (DL_FUNC) &_ravetools_Quaternion__getZ, 1},
    {"_ravetools_Quaternion__setZ", (DL_FUNC) &_ravetools_Quaternion__setZ, 2},
    {"_ravetools_Quaternion__getW", (DL_FUNC) &_ravetools_Quaternion__getW, 1},
    {"_ravetools_Quaternion__setW", (DL_FUNC) &_ravetools_Quaternion__setW, 2},
    {"_ravetools_Quaternion__set_from_axis_angle", (DL_FUNC) &_ravetools_Quaternion__set_from_axis_angle, 3},
    {"_ravetools_Quaternion__set_from_rotation_matrix", (DL_FUNC) &_ravetools_Quaternion__set_from_rotation_matrix, 3},
    {"_ravetools_Quaternion__set_from_unit_vectors", (DL_FUNC) &_ravetools_Quaternion__set_from_unit_vectors, 3},
    {"_ravetools_Quaternion__angle_to", (DL_FUNC) &_ravetools_Quaternion__angle_to, 2},
    {"_ravetools_Quaternion__rotate_towards", (DL_FUNC) &_ravetools_Quaternion__rotate_towards, 3},
    {"_ravetools_Quaternion__slerp", (DL_FUNC) &_ravetools_Quaternion__slerp, 3},
    {"_ravetools_Quaternion__identity", (DL_FUNC) &_ravetools_Quaternion__identity, 1},
    {"_ravetools_Quaternion__invert", (DL_FUNC) &_ravetools_Quaternion__invert, 1},
    {"_ravetools_Quaternion__conjugate", (DL_FUNC) &_ravetools_Quaternion__conjugate, 1},
    {"_ravetools_Quaternion__dot", (DL_FUNC) &_ravetools_Quaternion__dot, 2},
    {"_ravetools_Quaternion__length_squared", (DL_FUNC) &_ravetools_Quaternion__length_squared, 1},
    {"_ravetools_Quaternion__length", (DL_FUNC) &_ravetools_Quaternion__length, 1},
    {"_ravetools_Quaternion__normalize", (DL_FUNC) &_ravetools_Quaternion__normalize, 1},
    {"_ravetools_Quaternion__multiply", (DL_FUNC) &_ravetools_Quaternion__multiply, 2},
    {"_ravetools_Quaternion__premultiply", (DL_FUNC) &_ravetools_Quaternion__premultiply, 2},
    {"_ravetools_Quaternion__multiply_quaternions", (DL_FUNC) &_ravetools_Quaternion__multiply_quaternions, 3},
    {"_ravetools_Vector3__new", (DL_FUNC) &_ravetools_Vector3__new, 0},
    {"_ravetools_Vector3__from_array", (DL_FUNC) &_ravetools_Vector3__from_array, 4},
    {"_ravetools_Vector3__resize", (DL_FUNC) &_ravetools_Vector3__resize, 2},
    {"_ravetools_Vector3__get_size", (DL_FUNC) &_ravetools_Vector3__get_size, 1},
    {"_ravetools_Vector3__to_array", (DL_FUNC) &_ravetools_Vector3__to_array, 3},
    {"_ravetools_Vector3__set_scalar", (DL_FUNC) &_ravetools_Vector3__set_scalar, 2},
    {"_ravetools_Vector3__set_x", (DL_FUNC) &_ravetools_Vector3__set_x, 2},
    {"_ravetools_Vector3__set_y", (DL_FUNC) &_ravetools_Vector3__set_y, 2},
    {"_ravetools_Vector3__set_z", (DL_FUNC) &_ravetools_Vector3__set_z, 2},
    {"_ravetools_Vector3__get_x", (DL_FUNC) &_ravetools_Vector3__get_x, 2},
    {"_ravetools_Vector3__get_y", (DL_FUNC) &_ravetools_Vector3__get_y, 2},
    {"_ravetools_Vector3__get_z", (DL_FUNC) &_ravetools_Vector3__get_z, 2},
    {"_ravetools_Vector3__get_item", (DL_FUNC) &_ravetools_Vector3__get_item, 2},
    {"_ravetools_Vector3__copy", (DL_FUNC) &_ravetools_Vector3__copy, 2},
    {"_ravetools_Vector3__add", (DL_FUNC) &_ravetools_Vector3__add, 2},
    {"_ravetools_Vector3__add_scalar", (DL_FUNC) &_ravetools_Vector3__add_scalar, 2},
    {"_ravetools_Vector3__add_vectors", (DL_FUNC) &_ravetools_Vector3__add_vectors, 3},
    {"_ravetools_Vector3__add_scaled", (DL_FUNC) &_ravetools_Vector3__add_scaled, 3},
    {"_ravetools_Vector3__sub", (DL_FUNC) &_ravetools_Vector3__sub, 2},
    {"_ravetools_Vector3__sub_scalar", (DL_FUNC) &_ravetools_Vector3__sub_scalar, 2},
    {"_ravetools_Vector3__sub_vectors", (DL_FUNC) &_ravetools_Vector3__sub_vectors, 3},
    {"_ravetools_Vector3__multiply", (DL_FUNC) &_ravetools_Vector3__multiply, 2},
    {"_ravetools_Vector3__multiply_scalar", (DL_FUNC) &_ravetools_Vector3__multiply_scalar, 2},
    {"_ravetools_Vector3__multiply_vectors", (DL_FUNC) &_ravetools_Vector3__multiply_vectors, 3},
    {"_ravetools_Vector3__apply_matrix3", (DL_FUNC) &_ravetools_Vector3__apply_matrix3, 2},
    {"_ravetools_Vector3__apply_matrix4", (DL_FUNC) &_ravetools_Vector3__apply_matrix4, 2},
    {"_ravetools_Vector3__apply_quaternion", (DL_FUNC) &_ravetools_Vector3__apply_quaternion, 2},
    {"_ravetools_Vector3__transform_direction", (DL_FUNC) &_ravetools_Vector3__transform_direction, 2},
    {"_ravetools_Vector3__divide", (DL_FUNC) &_ravetools_Vector3__divide, 2},
    {"_ravetools_Vector3__divide_scalar", (DL_FUNC) &_ravetools_Vector3__divide_scalar, 2},
    {"_ravetools_Vector3__min", (DL_FUNC) &_ravetools_Vector3__min, 2},
    {"_ravetools_Vector3__max", (DL_FUNC) &_ravetools_Vector3__max, 2},
    {"_ravetools_Vector3__clamp", (DL_FUNC) &_ravetools_Vector3__clamp, 3},
    {"_ravetools_Vector3__floor", (DL_FUNC) &_ravetools_Vector3__floor, 1},
    {"_ravetools_Vector3__ceil", (DL_FUNC) &_ravetools_Vector3__ceil, 1},
    {"_ravetools_Vector3__round", (DL_FUNC) &_ravetools_Vector3__round, 1},
    {"_ravetools_Vector3__round_to_zero", (DL_FUNC) &_ravetools_Vector3__round_to_zero, 1},
    {"_ravetools_Vector3__negate", (DL_FUNC) &_ravetools_Vector3__negate, 1},
    {"_ravetools_Vector3__dot", (DL_FUNC) &_ravetools_Vector3__dot, 2},
    {"_ravetools_Vector3__length_squared", (DL_FUNC) &_ravetools_Vector3__length_squared, 1},
    {"_ravetools_Vector3__length", (DL_FUNC) &_ravetools_Vector3__length, 1},
    {"_ravetools_Vector3__length_manhattan", (DL_FUNC) &_ravetools_Vector3__length_manhattan, 1},
    {"_ravetools_Vector3__normalize", (DL_FUNC) &_ravetools_Vector3__normalize, 1},
    {"_ravetools_Vector3__set_length", (DL_FUNC) &_ravetools_Vector3__set_length, 2},
    {"_ravetools_Vector3__lerp", (DL_FUNC) &_ravetools_Vector3__lerp, 3},
    {"_ravetools_Vector3__lerp_vectors", (DL_FUNC) &_ravetools_Vector3__lerp_vectors, 4},
    {"_ravetools_Vector3__cross", (DL_FUNC) &_ravetools_Vector3__cross, 2},
    {"_ravetools_Vector3__cross_vectors", (DL_FUNC) &_ravetools_Vector3__cross_vectors, 3},
    {"_ravetools_Vector3__project_on_vector", (DL_FUNC) &_ravetools_Vector3__project_on_vector, 2},
    {"_ravetools_Vector3__project_on_plane", (DL_FUNC) &_ravetools_Vector3__project_on_plane, 2},
    {"_ravetools_Vector3__reflect", (DL_FUNC) &_ravetools_Vector3__reflect, 2},
    {"_ravetools_Vector3__angle_to", (DL_FUNC) &_ravetools_Vector3__angle_to, 2},
    {"_ravetools_Vector3__distance_to", (DL_FUNC) &_ravetools_Vector3__distance_to, 2},
    {"_ravetools_Vector3__distance_to_squared", (DL_FUNC) &_ravetools_Vector3__distance_to_squared, 2},
    {"_ravetools_Vector3__distance_to_manhattan", (DL_FUNC) &_ravetools_Vector3__distance_to_manhattan, 2},
    {"_ravetools_Vector3__set_from_spherical_coords", (DL_FUNC) &_ravetools_Vector3__set_from_spherical_coords, 4},
    {"_ravetools_Vector3__set_from_matrix_position", (DL_FUNC) &_ravetools_Vector3__set_from_matrix_position, 2},
    {"_ravetools_Vector3__set_from_matrix_scale", (DL_FUNC) &_ravetools_Vector3__set_from_matrix_scale, 2},
    {"_ravetools_mrisSmooth", (DL_FUNC) &_ravetools_mrisSmooth, 6},
    {"_ravetools_mrisInflate", (DL_FUNC) &_ravetools_mrisInflate, 11},
    {"_ravetools_mrisSphere", (DL_FUNC) &_ravetools_mrisSphere, 10},
    {"_ravetools_mrisMakeSurfaces", (DL_FUNC) &_ravetools_mrisMakeSurfaces, 15},
    {"_ravetools_mrisCurvature", (DL_FUNC) &_ravetools_mrisCurvature, 3},
    {"_ravetools_mrisRemesh", (DL_FUNC) &_ravetools_mrisRemesh, 7},
    {"_ravetools_rawToUInt8", (DL_FUNC) &_ravetools_rawToUInt8, 1},
    {"_ravetools_rawToInt8", (DL_FUNC) &_ravetools_rawToInt8, 1},
    {"_ravetools_rawToUInt16", (DL_FUNC) &_ravetools_rawToUInt16, 1},
    {"_ravetools_rawToInt16", (DL_FUNC) &_ravetools_rawToInt16, 1},
    {"_ravetools_rawToUInt32", (DL_FUNC) &_ravetools_rawToUInt32, 1},
    {"_ravetools_rawToInt32", (DL_FUNC) &_ravetools_rawToInt32, 1},
    {"_ravetools_rawToInt64", (DL_FUNC) &_ravetools_rawToInt64, 1},
    {"_ravetools_rawToFloat", (DL_FUNC) &_ravetools_rawToFloat, 1},
    {"_ravetools_rawToString", (DL_FUNC) &_ravetools_rawToString, 1},
    {"_ravetools_register_linear_cpp", (DL_FUNC) &_ravetools_register_linear_cpp, 19},
    {"_ravetools_register_syn_cpp", (DL_FUNC) &_ravetools_register_syn_cpp, 23},
    {"_ravetools_resample3D", (DL_FUNC) &_ravetools_resample3D, 6},
    {"_ravetools_shiftArray", (DL_FUNC) &_ravetools_shiftArray, 4},
    {"_ravetools_getDefaultNumThreads", (DL_FUNC) &_ravetools_getDefaultNumThreads, 0},
    {"_ravetools_vcgDetectCollision", (DL_FUNC) &_ravetools_vcgDetectCollision, 9},
    {"_ravetools_vcgIsoSurface", (DL_FUNC) &_ravetools_vcgIsoSurface, 2},
    {"_ravetools_vcgSmoothImplicit", (DL_FUNC) &_ravetools_vcgSmoothImplicit, 9},
    {"_ravetools_vcgSmooth", (DL_FUNC) &_ravetools_vcgSmooth, 7},
    {"_ravetools_vcgUniformResample", (DL_FUNC) &_ravetools_vcgUniformResample, 9},
    {"_ravetools_vcgUpdateNormals", (DL_FUNC) &_ravetools_vcgUpdateNormals, 5},
    {"_ravetools_vcgEdgeSubdivision", (DL_FUNC) &_ravetools_vcgEdgeSubdivision, 2},
    {"_ravetools_vcgEdgeLengthSubdivision", (DL_FUNC) &_ravetools_vcgEdgeLengthSubdivision, 4},
    {"_ravetools_vcgVolume", (DL_FUNC) &_ravetools_vcgVolume, 1},
    {"_ravetools_vcgSphere", (DL_FUNC) &_ravetools_vcgSphere, 2},
    {"_ravetools_vcgDijkstra", (DL_FUNC) &_ravetools_vcgDijkstra, 4},
    {"_ravetools_vcgRaycaster", (DL_FUNC) &_ravetools_vcgRaycaster, 7},
    {"_ravetools_vcgKDTreeSearch", (DL_FUNC) &_ravetools_vcgKDTreeSearch, 5},
    {"_ravetools_vcgSubset", (DL_FUNC) &_ravetools_vcgSubset, 3},
    {"_ravetools_vcgCountEdgeDefects", (DL_FUNC) &_ravetools_vcgCountEdgeDefects, 2},
    {"_ravetools_vcgAverageEdgeLength", (DL_FUNC) &_ravetools_vcgAverageEdgeLength, 2},
    {"_ravetools_vcgMaxEdgeLength", (DL_FUNC) &_ravetools_vcgMaxEdgeLength, 2},
    {"_ravetools_vcgMeshPatchFaces", (DL_FUNC) &_ravetools_vcgMeshPatchFaces, 4},
    {"_ravetools_vcgFixDefects", (DL_FUNC) &_ravetools_vcgFixDefects, 5},
    {"_ravetools_RcppExport_registerCCallable", (DL_FUNC) &_ravetools_RcppExport_registerCCallable, 0},
    {NULL, NULL, 0}
};

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