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;
158 int parent = (int) nearbyint(
node);
159 int c = child[index[parent]];
165 assert(parent<=nnode);
171 switch (nodetype[parent]) {
175 assert(sat[parent]==1);
176 assert(lineage[parent]==lineage[c]);
189 assert(sat[parent]==0);
190 switch (
deme[parent]) {
215 if (sat[parent]!=2)
break;
216 switch (
deme[parent]) {
253 tstep = exp_rand()/event_rate;
255 while (t + tstep < tmax) {
257 assert(event>=0 && event<
nrate);
283 tstep = exp_rand()/event_rate;
291# define lik (__lik[0])
301 const int *__obsindex,
302 const int *__stateindex,
303 const int *__parindex,
304 const int *__covindex,
305 const double *__covars,
309 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).