// 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
}
// 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;
}
// 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
}
// resample3D
SEXP resample3D(const SEXP& arrayDim, const SEXP& fromArray, const SEXP& newVoxToWorldTransposed, const SEXP& oldVoxToWorldTransposed, const SEXP& na);
RcppExport SEXP _ravetools_resample3D(SEXP arrayDimSEXP, SEXP fromArraySEXP, SEXP newVoxToWorldTransposedSEXP, SEXP oldVoxToWorldTransposedSEXP, SEXP naSEXP) {
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_result_gen = Rcpp::wrap(resample3D(arrayDim, fromArray, newVoxToWorldTransposed, oldVoxToWorldTransposed, na));
    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
}
// 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
}
// 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
}

// 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_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_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_resample3D", (DL_FUNC) &_ravetools_resample3D, 5},
    {"_ravetools_shiftArray", (DL_FUNC) &_ravetools_shiftArray, 4},
    {"_ravetools_getDefaultNumThreads", (DL_FUNC) &_ravetools_getDefaultNumThreads, 0},
    {"_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_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_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);
}
