4#define lambda (__p[__parindex[0]])
5#define mu (__p[__parindex[1]])
6#define psi (__p[__parindex[2]])
7#define chi (__p[__parindex[3]])
8#define n0 (__p[__parindex[4]])
9#define n (__x[__stateindex[0]])
10#define ll (__x[__stateindex[1]])
11#define ell (__x[__stateindex[2]])
12#define node (__x[__stateindex[3]])
15 event_rates(__x,__p,t, \
16 __stateindex,__parindex,rate,&penalty) \
23 const int *__stateindex,
24 const int *__parindex,
28 double event_rate = 0;
36 event_rate += (*rate = alpha*(1-disc)); rate++;
37 *penalty += alpha*disc;
41 event_rate += (*rate = alpha); rate++;
48 assert(R_FINITE(event_rate));
58 const int *__stateindex,
59 const int *__parindex,
60 const int *__covindex,
61 const double *__covars
77 const int *__stateindex,
78 const int *__parindex,
79 const int *__covindex,
80 const double *__covars,
84 double tstep = 0.0, tmax = t + dt;
87 int parent = (int) nearbyint(
node);
92 assert(parent<=nnode);
98 switch (nodetype[parent]) {
107 if (sat[parent] == 1) {
109 }
else if (sat[parent] == 0) {
111 double drate =
chi*
n;
112 double trate = drate+
psi*(
n-
ell);
113 ll += (trate > 0) ? log(trate) : R_NegInf;
114 if (trate > 0 && unif_rand() < drate/trate)
n -= 1;
124 assert(sat[parent]==2);
138 tstep = exp_rand()/event_rate;
140 while (t + tstep < tmax) {
141 event =
rcateg(event_rate,rate,2);
142 assert(event>=0 && event<2);
157 tstep = exp_rand()/event_rate;
165# define lik (__lik[0])
175 const int *__obsindex,
176 const int *__stateindex,
177 const int *__parindex,
178 const int *__covindex,
179 const double *__covars,
183 lik = (give_log) ?
ll : exp(
ll);
get_userdata_int_t * get_userdata_int
static int rcateg(double erate, double *rate, int nrate)
void lbdp_rinit(double *__x, const double *__p, double t, const int *__stateindex, const int *__parindex, const int *__covindex, const double *__covars)
Latent-state initializer (rinit).
void lbdp_gill(double *__x, const double *__p, const int *__stateindex, const int *__parindex, const int *__covindex, const double *__covars, double t, double dt)
static double event_rates(double *__x, const double *__p, double t, const int *__stateindex, const int *__parindex, double *rate, double *penalty)
void lbdp_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).