/* Copyright (C) 2010 Marius Hofert and Martin Maechler This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, see . */ #ifndef NACOPULA_DEFS_H #define NACOPULA_DEFS_H #include #include /**< For internationalized messages */ #ifdef ENABLE_NLS #include #define _(String) dgettext ("Matrix", String) #else #define _(String) (String) #define dngettext(pkg, String, StringP, N) (N > 1 ? StringP : String) #endif SEXP sinc_c(SEXP x_); SEXP A__c(SEXP x_, SEXP alpha, SEXP I_alpha); SEXP rstable_c(SEXP n, SEXP alpha); SEXP retstable_c(SEXP V0_, SEXP h, SEXP alpha, SEXP method); SEXP rLog_vec_c(SEXP n_, SEXP p_, SEXP Ip_); SEXP rSibuya_vec_c(SEXP n_, SEXP alpha_); SEXP rF01Frank_vec_c(SEXP V0_, SEXP theta_0_, SEXP theta_1_, SEXP rej_, SEXP approx_); SEXP rF01Joe_vec_c(SEXP V0_, SEXP alpha_, SEXP approx_); /** * C API---for "us" but maybe also other R packages * "export" it via ../inst/include/ */ SEXP polyn_eval(SEXP coef, SEXP x); double sinc_MM(double x); double A_(double x, double alpha); double BdB0(double x, double alpha); double rstable0(double alpha); double rstable (double alpha); void rstable_vec(double S[], const int n, const double alpha); void retstable_MH(double *St, const double V0[], double h, double alpha, int n); void retstable_LD(double *St, const double V0[], double h, double alpha, int n); double rLog(double p, double Ip); double rSibuya(double alpha, double gamma_1_a /**< == Gamma(1 - alpha) */); double rSibuya_sum(int n, double alpha, double gamma_1_a /**< == Gamma(1 - alpha) */); void rSibuya_vec(double* V, int n, double alpha); double rF01Frank(double V0, double theta0, double theta1, double p0, double p1, double gamma_1_a, double rej, int approx); void rF01Frank_vec(double *V01, const double *V0, int n, double theta_0, double theta_1, double rej, int approx); double rF01Joe(double V0, double alpha, double gamma_1_a /**< == Gamma(1 - alpha) */, int approx); void rF01Joe_vec(double* V01, const double *V0, int n, double alpha, double approx); #endif