7static void reulermultinom_multi (
int m,
int n,
double *size,
double *rate,
double *deltat,
double *trans) {
9 for (k = 0; k < n; k++) {
7static void reulermultinom_multi (
int m,
int n,
double *size,
double *rate,
double *deltat,
double *trans) {
…}
15static void deulermultinom_multi (
int m,
int n,
double *size,
double *rate,
double *deltat,
double *trans,
int *give_log,
double *f) {
17 for (k = 0; k < n; k++) {
15static void deulermultinom_multi (
int m,
int n,
double *size,
double *rate,
double *deltat,
double *trans,
int *give_log,
double *f) {
…}
24 int ntrans = length(rate);
28 warn(
"in 'reulermultinom': only the first element of 'size' is meaningful");
30 warn(
"in 'reulermultinom': only the first element of 'dt' is meaningful");
31 PROTECT(n = AS_INTEGER(n));
32 PROTECT(size = AS_NUMERIC(size));
33 PROTECT(rate = AS_NUMERIC(rate));
34 PROTECT(deltat = AS_NUMERIC(deltat));
37 if (dim[1] == NA_INTEGER || dim[1] < 0)
38 err(
"in 'reulermultinom': 'n' must be a non-negative integer.");
40 PROTECT(nm = GET_NAMES(rate));
50 int ntrans = length(rate);
53 dim = INTEGER(GET_DIM(x));
55 err(
"NROW('x') should match length of 'rate'");
58 warn(
"in 'deulermultinom': only the first element of 'size' is meaningful");
60 warn(
"in 'deulermultinom': only the first element of 'dt' is meaningful");
61 PROTECT(f = NEW_NUMERIC(n));
62 PROTECT(size = AS_NUMERIC(size));
63 PROTECT(rate = AS_NUMERIC(rate));
64 PROTECT(deltat = AS_NUMERIC(deltat));
65 PROTECT(log = AS_LOGICAL(log));
72 int ntrans = length(rate);
75 warn(
"in 'eeulermultinom': only the first element of 'size' is meaningful");
77 warn(
"in 'eeulermultinom': only the first element of 'dt' is meaningful");
78 PROTECT(size = AS_NUMERIC(size));
79 PROTECT(rate = AS_NUMERIC(rate));
80 PROTECT(deltat = AS_NUMERIC(deltat));
81 PROTECT(x = duplicate(rate));
82 eeulermultinom(ntrans,*REAL(size),REAL(rate),*REAL(deltat),REAL(x));
94 int k, nval, nsig, ndt;
97 PROTECT(n = AS_INTEGER(n));
100 nsig = LENGTH(
sigma);
102 PROTECT(deltat = AS_NUMERIC(deltat));
103 ndt = LENGTH(deltat);
105 PROTECT(ans = NEW_NUMERIC(nval));
108 for (k = 0; k < nval; k++) {
109 x[k] =
rgammawn(sig[k%nsig],dt[k%ndt]);
120 int k, nval, ns, np, nt;
121 double *
X, *S, *P, *T;
123 PROTECT(n = AS_INTEGER(n)); nval = INTEGER(n)[0];
124 PROTECT(size = AS_NUMERIC(size)); ns = LENGTH(size); S = REAL(size);
125 PROTECT(prob = AS_NUMERIC(prob)); np = LENGTH(prob); P = REAL(prob);
126 PROTECT(theta = AS_NUMERIC(theta)); nt = LENGTH(theta); T = REAL(theta);
127 PROTECT(ans = NEW_NUMERIC(nval));
X = REAL(ans);
129 for (k = 0; k < nval; k++) {
137SEXP
D_BetaBinom (SEXP x, SEXP size, SEXP prob, SEXP theta, SEXP log) {
138 int k, n, nx, ns, np, nt;
139 double *F, *
X, *S, *P, *T;
141 PROTECT(x = AS_NUMERIC(x)); nx = LENGTH(x);
X = REAL(x);
142 PROTECT(size = AS_NUMERIC(size)); ns = LENGTH(size); S = REAL(size);
143 PROTECT(prob = AS_NUMERIC(prob)); np = LENGTH(prob); P = REAL(prob);
144 PROTECT(theta = AS_NUMERIC(theta)); nt = LENGTH(theta); T = REAL(theta);
145 PROTECT(log = AS_INTEGER(log));
146 n = (nx > ns) ? nx : ns;
147 n = (n > np) ? n : np;
148 n = (n > nt) ? n : nt;
149 PROTECT(f = NEW_NUMERIC(n)); F = REAL(f);
150 for (k = 0; k < n; k++) {
151 F[k] =
dbetabinom(
X[k%nx],S[k%ns],P[k%np],T[k%nt],INTEGER(log)[0]);
137SEXP
D_BetaBinom (SEXP x, SEXP size, SEXP prob, SEXP theta, SEXP log) {
…}
SEXP R_GammaWN(SEXP n, SEXP sigma, SEXP deltat)
static void reulermultinom_multi(int m, int n, double *size, double *rate, double *deltat, double *trans)
SEXP D_BetaBinom(SEXP x, SEXP size, SEXP prob, SEXP theta, SEXP log)
static void deulermultinom_multi(int m, int n, double *size, double *rate, double *deltat, double *trans, int *give_log, double *f)
SEXP D_Euler_Multinom(SEXP x, SEXP size, SEXP rate, SEXP deltat, SEXP log)
SEXP R_BetaBinom(SEXP n, SEXP size, SEXP prob, SEXP theta)
SEXP R_Euler_Multinom(SEXP n, SEXP size, SEXP rate, SEXP deltat)
SEXP E_Euler_Multinom(SEXP size, SEXP rate, SEXP deltat)
static R_INLINE double deulermultinom(int m, double size, const double *rate, double dt, double *trans, int give_log)
static R_INLINE void eeulermultinom(int m, double size, const double *rate, double dt, double *trans)
static R_INLINE double rbetabinom(double size, double prob, double theta)
static R_INLINE double rgammawn(double sigma, double dt)
static R_INLINE double dbetabinom(double x, double size, double prob, double theta, int give_log)
static R_INLINE void reulermultinom(int m, double size, const double *rate, double dt, double *trans)
static R_INLINE void setrownames(SEXP x, SEXP names, int rank)
static R_INLINE SEXP makearray(int rank, const int *dim)