text: // Generated by using Rcpp::compileAttributes() -> do not edit by hand
  // Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393
  
  #include <RcppArmadillo.h>
  #include <Rcpp.h>
  
  using namespace Rcpp;
  
  // cluster_py_C
  double cluster_py_C(int n, double sigma, double theta);
  RcppExport SEXP _BNPvegan_cluster_py_C(SEXP nSEXP, SEXP sigmaSEXP, SEXP thetaSEXP) {
  BEGIN_RCPP
      Rcpp::RObject rcpp_result_gen;
      Rcpp::RNGScope rcpp_rngScope_gen;
      Rcpp::traits::input_parameter< int >::type n(nSEXP);
      Rcpp::traits::input_parameter< double >::type sigma(sigmaSEXP);
      Rcpp::traits::input_parameter< double >::type theta(thetaSEXP);
      rcpp_result_gen = Rcpp::wrap(cluster_py_C(n, sigma, theta));
      return rcpp_result_gen;
  END_RCPP
  }
  // rarefy_C
  arma::vec rarefy_C(arma::vec freq, int n, int K, bool verbose);
  RcppExport SEXP _BNPvegan_rarefy_C(SEXP freqSEXP, SEXP nSEXP, SEXP KSEXP, SEXP verboseSEXP) {
  BEGIN_RCPP
      Rcpp::RObject rcpp_result_gen;
      Rcpp::RNGScope rcpp_rngScope_gen;
      Rcpp::traits::input_parameter< arma::vec >::type freq(freqSEXP);
      Rcpp::traits::input_parameter< int >::type n(nSEXP);
      Rcpp::traits::input_parameter< int >::type K(KSEXP);
      Rcpp::traits::input_parameter< bool >::type verbose(verboseSEXP);
      rcpp_result_gen = Rcpp::wrap(rarefy_C(freq, n, K, verbose));
      return rcpp_result_gen;
  END_RCPP
  }
  // prob_LL3_Cpp
  double prob_LL3_Cpp(double n, double alpha, double sigma, double phi);
  RcppExport SEXP _BNPvegan_prob_LL3_Cpp(SEXP nSEXP, SEXP alphaSEXP, SEXP sigmaSEXP, SEXP phiSEXP) {
  BEGIN_RCPP
      Rcpp::RObject rcpp_result_gen;
      Rcpp::RNGScope rcpp_rngScope_gen;
      Rcpp::traits::input_parameter< double >::type n(nSEXP);
      Rcpp::traits::input_parameter< double >::type alpha(alphaSEXP);
      Rcpp::traits::input_parameter< double >::type sigma(sigmaSEXP);
      Rcpp::traits::input_parameter< double >::type phi(phiSEXP);
      rcpp_result_gen = Rcpp::wrap(prob_LL3_Cpp(n, alpha, sigma, phi));
      return rcpp_result_gen;
  END_RCPP
  }
  // prob_Weibull_Cpp
  double prob_Weibull_Cpp(double n, double phi, double lambda);
  RcppExport SEXP _BNPvegan_prob_Weibull_Cpp(SEXP nSEXP, SEXP phiSEXP, SEXP lambdaSEXP) {
  BEGIN_RCPP
      Rcpp::RObject rcpp_result_gen;
      Rcpp::RNGScope rcpp_rngScope_gen;
      Rcpp::traits::input_parameter< double >::type n(nSEXP);
      Rcpp::traits::input_parameter< double >::type phi(phiSEXP);
      Rcpp::traits::input_parameter< double >::type lambda(lambdaSEXP);
      rcpp_result_gen = Rcpp::wrap(prob_Weibull_Cpp(n, phi, lambda));
      return rcpp_result_gen;
  END_RCPP
  }
  // truncationpoint_LL3_Cpp
  double truncationpoint_LL3_Cpp(double n, double alpha, double sigma, double phi, double tolerance);
  RcppExport SEXP _BNPvegan_truncationpoint_LL3_Cpp(SEXP nSEXP, SEXP alphaSEXP, SEXP sigmaSEXP, SEXP phiSEXP, SEXP toleranceSEXP) {
  BEGIN_RCPP
      Rcpp::RObject rcpp_result_gen;
      Rcpp::RNGScope rcpp_rngScope_gen;
      Rcpp::traits::input_parameter< double >::type n(nSEXP);
      Rcpp::traits::input_parameter< double >::type alpha(alphaSEXP);
      Rcpp::traits::input_parameter< double >::type sigma(sigmaSEXP);
      Rcpp::traits::input_parameter< double >::type phi(phiSEXP);
      Rcpp::traits::input_parameter< double >::type tolerance(toleranceSEXP);
      rcpp_result_gen = Rcpp::wrap(truncationpoint_LL3_Cpp(n, alpha, sigma, phi, tolerance));
      return rcpp_result_gen;
  END_RCPP
  }
  // truncationpoint_Weibull_Cpp
  double truncationpoint_Weibull_Cpp(double n, double phi, double lambda, double tolerance);
  RcppExport SEXP _BNPvegan_truncationpoint_Weibull_Cpp(SEXP nSEXP, SEXP phiSEXP, SEXP lambdaSEXP, SEXP toleranceSEXP) {
  BEGIN_RCPP
      Rcpp::RObject rcpp_result_gen;
      Rcpp::RNGScope rcpp_rngScope_gen;
      Rcpp::traits::input_parameter< double >::type n(nSEXP);
      Rcpp::traits::input_parameter< double >::type phi(phiSEXP);
      Rcpp::traits::input_parameter< double >::type lambda(lambdaSEXP);
      Rcpp::traits::input_parameter< double >::type tolerance(toleranceSEXP);
      rcpp_result_gen = Rcpp::wrap(truncationpoint_Weibull_Cpp(n, phi, lambda, tolerance));
      return rcpp_result_gen;
  END_RCPP
  }
  // sample_Kinf_LL3_Cpp
  arma::vec sample_Kinf_LL3_Cpp(int n_samples, double n, double k, double alpha, double sigma, double phi, double tolerance);
  RcppExport SEXP _BNPvegan_sample_Kinf_LL3_Cpp(SEXP n_samplesSEXP, SEXP nSEXP, SEXP kSEXP, SEXP alphaSEXP, SEXP sigmaSEXP, SEXP phiSEXP, SEXP toleranceSEXP) {
  BEGIN_RCPP
      Rcpp::RObject rcpp_result_gen;
      Rcpp::RNGScope rcpp_rngScope_gen;
      Rcpp::traits::input_parameter< int >::type n_samples(n_samplesSEXP);
      Rcpp::traits::input_parameter< double >::type n(nSEXP);
      Rcpp::traits::input_parameter< double >::type k(kSEXP);
      Rcpp::traits::input_parameter< double >::type alpha(alphaSEXP);
      Rcpp::traits::input_parameter< double >::type sigma(sigmaSEXP);
      Rcpp::traits::input_parameter< double >::type phi(phiSEXP);
      Rcpp::traits::input_parameter< double >::type tolerance(toleranceSEXP);
      rcpp_result_gen = Rcpp::wrap(sample_Kinf_LL3_Cpp(n_samples, n, k, alpha, sigma, phi, tolerance));
      return rcpp_result_gen;
  END_RCPP
  }
  // sample_Kinf_Weibull_Cpp
  arma::vec sample_Kinf_Weibull_Cpp(int n_samples, double n, double k, double phi, double lambda, double tolerance);
  RcppExport SEXP _BNPvegan_sample_Kinf_Weibull_Cpp(SEXP n_samplesSEXP, SEXP nSEXP, SEXP kSEXP, SEXP phiSEXP, SEXP lambdaSEXP, SEXP toleranceSEXP) {
  BEGIN_RCPP
      Rcpp::RObject rcpp_result_gen;
      Rcpp::RNGScope rcpp_rngScope_gen;
      Rcpp::traits::input_parameter< int >::type n_samples(n_samplesSEXP);
      Rcpp::traits::input_parameter< double >::type n(nSEXP);
      Rcpp::traits::input_parameter< double >::type k(kSEXP);
      Rcpp::traits::input_parameter< double >::type phi(phiSEXP);
      Rcpp::traits::input_parameter< double >::type lambda(lambdaSEXP);
      Rcpp::traits::input_parameter< double >::type tolerance(toleranceSEXP);
      rcpp_result_gen = Rcpp::wrap(sample_Kinf_Weibull_Cpp(n_samples, n, k, phi, lambda, tolerance));
      return rcpp_result_gen;
  END_RCPP
  }
  // get_n_target_saturation_LL3
  double get_n_target_saturation_LL3(double n, double k, double alpha, double sigma, double phi, double Kinf, double target);
  RcppExport SEXP _BNPvegan_get_n_target_saturation_LL3(SEXP nSEXP, SEXP kSEXP, SEXP alphaSEXP, SEXP sigmaSEXP, SEXP phiSEXP, SEXP KinfSEXP, SEXP targetSEXP) {
  BEGIN_RCPP
      Rcpp::RObject rcpp_result_gen;
      Rcpp::RNGScope rcpp_rngScope_gen;
      Rcpp::traits::input_parameter< double >::type n(nSEXP);
      Rcpp::traits::input_parameter< double >::type k(kSEXP);
      Rcpp::traits::input_parameter< double >::type alpha(alphaSEXP);
      Rcpp::traits::input_parameter< double >::type sigma(sigmaSEXP);
      Rcpp::traits::input_parameter< double >::type phi(phiSEXP);
      Rcpp::traits::input_parameter< double >::type Kinf(KinfSEXP);
      Rcpp::traits::input_parameter< double >::type target(targetSEXP);
      rcpp_result_gen = Rcpp::wrap(get_n_target_saturation_LL3(n, k, alpha, sigma, phi, Kinf, target));
      return rcpp_result_gen;
  END_RCPP
  }
  // get_n_target_saturation_Weibull
  double get_n_target_saturation_Weibull(double n, double k, double phi, double lambda, double Kinf, double target);
  RcppExport SEXP _BNPvegan_get_n_target_saturation_Weibull(SEXP nSEXP, SEXP kSEXP, SEXP phiSEXP, SEXP lambdaSEXP, SEXP KinfSEXP, SEXP targetSEXP) {
  BEGIN_RCPP
      Rcpp::RObject rcpp_result_gen;
      Rcpp::RNGScope rcpp_rngScope_gen;
      Rcpp::traits::input_parameter< double >::type n(nSEXP);
      Rcpp::traits::input_parameter< double >::type k(kSEXP);
      Rcpp::traits::input_parameter< double >::type phi(phiSEXP);
      Rcpp::traits::input_parameter< double >::type lambda(lambdaSEXP);
      Rcpp::traits::input_parameter< double >::type Kinf(KinfSEXP);
      Rcpp::traits::input_parameter< double >::type target(targetSEXP);
      rcpp_result_gen = Rcpp::wrap(get_n_target_saturation_Weibull(n, k, phi, lambda, Kinf, target));
      return rcpp_result_gen;
  END_RCPP
  }
  
  static const R_CallMethodDef CallEntries[] = {
      {"_BNPvegan_cluster_py_C", (DL_FUNC) &_BNPvegan_cluster_py_C, 3},
      {"_BNPvegan_rarefy_C", (DL_FUNC) &_BNPvegan_rarefy_C, 4},
      {"_BNPvegan_prob_LL3_Cpp", (DL_FUNC) &_BNPvegan_prob_LL3_Cpp, 4},
      {"_BNPvegan_prob_Weibull_Cpp", (DL_FUNC) &_BNPvegan_prob_Weibull_Cpp, 3},
      {"_BNPvegan_truncationpoint_LL3_Cpp", (DL_FUNC) &_BNPvegan_truncationpoint_LL3_Cpp, 5},
      {"_BNPvegan_truncationpoint_Weibull_Cpp", (DL_FUNC) &_BNPvegan_truncationpoint_Weibull_Cpp, 4},
      {"_BNPvegan_sample_Kinf_LL3_Cpp", (DL_FUNC) &_BNPvegan_sample_Kinf_LL3_Cpp, 7},
      {"_BNPvegan_sample_Kinf_Weibull_Cpp", (DL_FUNC) &_BNPvegan_sample_Kinf_Weibull_Cpp, 6},
      {"_BNPvegan_get_n_target_saturation_LL3", (DL_FUNC) &_BNPvegan_get_n_target_saturation_LL3, 7},
      {"_BNPvegan_get_n_target_saturation_Weibull", (DL_FUNC) &_BNPvegan_get_n_target_saturation_Weibull, 6},
      {NULL, NULL, 0}
  };
  
  RcppExport void R_init_BNPvegan(DllInfo *dll) {
      R_registerRoutines(dll, NULL, CallEntries, NULL, NULL);
      R_useDynamicSymbols(dll, FALSE);
  }
  