10#define Beta1 (__p[__parindex[0]])
11#define Beta2 (__p[__parindex[1]])
12#define Beta3 (__p[__parindex[2]])
13#define gamma (__p[__parindex[3]])
14#define psi1 (__p[__parindex[4]])
15#define psi2 (__p[__parindex[5]])
16#define psi3 (__p[__parindex[6]])
17#define S_0 (__p[__parindex[7]])
18#define I1_0 (__p[__parindex[8]])
19#define I2_0 (__p[__parindex[9]])
20#define I3_0 (__p[__parindex[10]])
21#define R_0 (__p[__parindex[11]])
22#define N (__p[__parindex[12]])
23#define S (__x[__stateindex[0]])
24#define I1 (__x[__stateindex[1]])
25#define I2 (__x[__stateindex[2]])
26#define I3 (__x[__stateindex[3]])
27#define R (__x[__stateindex[4]])
28#define ll (__x[__stateindex[5]])
29#define ellI1 (__x[__stateindex[6]])
30#define ellI2 (__x[__stateindex[7]])
31#define ellI3 (__x[__stateindex[8]])
32#define node (__x[__stateindex[9]])
35 event_rates(__x,__p,t, \
36 __stateindex,__parindex,__covindex, \
37 __covars,rate,&penalty) \
44 const int *__stateindex,
45 const int *__parindex,
46 const int *__covindex,
47 const double *__covars,
51 double event_rate = 0;
64 event_rate += (*rate = alpha*(1-disc)); rate++;
65 *penalty += alpha*disc;
69 event_rate += (*rate = alpha); rate++;
80 event_rate += (*rate = alpha*(1-disc)); rate++;
81 *penalty += alpha*disc;
85 event_rate += (*rate = alpha); rate++;
96 event_rate += (*rate = alpha*(1-disc)); rate++;
97 *penalty += alpha*disc;
101 event_rate += (*rate = alpha); rate++;
109 assert(R_FINITE(event_rate));
119 const int *__stateindex,
120 const int *__parindex,
121 const int *__covindex,
122 const double *__covars
125 S = nearbyint(
S_0*m);
129 R = nearbyint(
R_0*m);
144 const int *__stateindex,
145 const int *__parindex,
146 const int *__covindex,
147 const double *__covars,
151 double tstep = 0.0, tmax = t + dt;
156 int parent = (int) nearbyint(
node);
161 assert(parent<=nnode);
167 switch (nodetype[parent]) {
171 switch (
deme[parent]) {
183 assert(sat[parent]==0);
184 switch (
deme[parent]) {
209 if (sat[parent]!=2)
break;
210 switch (
deme[parent]) {
248 tstep = exp_rand()/event_rate;
250 while (t + tstep < tmax) {
252 assert(event>=0 && event<
nrate);
279 tstep = exp_rand()/event_rate;
287# define lik (__lik[0])
297 const int *__obsindex,
298 const int *__stateindex,
299 const int *__parindex,
300 const int *__covindex,
301 const double *__covars,
305 lik = (give_log) ?
ll : exp(
ll);
get_userdata_int_t * get_userdata_int
static int rcateg(double erate, double *rate, int nrate)
static double event_rates(double *__x, const double *__p, double t, const int *__stateindex, const int *__parindex, const int *__covindex, const double *__covars, double *rate, double *penalty)
void strains_gill(double *__x, const double *__p, const int *__stateindex, const int *__parindex, const int *__covindex, const double *__covars, double t, double dt)
void strains_dmeas(double *__lik, const double *__y, const double *__x, const double *__p, int give_log, const int *__obsindex, const int *__stateindex, const int *__parindex, const int *__covindex, const double *__covars, double t)
Measurement model likelihood (dmeasure).
void strains_rinit(double *__x, const double *__p, double t, const int *__stateindex, const int *__parindex, const int *__covindex, const double *__covars)
Latent-state initializer (rinit).