X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=src%2FrTrait.c;h=11cc63e2a0bdb2a66105873e690ab1e03d115074;hb=52008daf7f708f3fcdc735f22af308dd1a461670;hp=2e7371f850f808ec54abcfef8479f2d0629b3778;hpb=2419de65ffb4f7c45eb8c2448bcba3d0df64744f;p=ape.git diff --git a/src/rTrait.c b/src/rTrait.c index 2e7371f..11cc63e 100644 --- a/src/rTrait.c +++ b/src/rTrait.c @@ -1,4 +1,4 @@ -/* rTrait.c 2010-05-26 */ +/* rTrait.c 2010-07-26 */ /* Copyright 2010 Emmanuel Paradis */ @@ -22,7 +22,13 @@ void rTraitCont(int *model, int *Nedge, int *edge1, int *edge2, double *el, break; case 2 : for (i = *Nedge - 1; i >= 0; i--) { GetRNGstate(); - x[edge2[i]] = x[edge1[i]] + (sigma[i]*norm_rand() - alpha[i]*(x[edge1[i]] - theta[i])) * el[i]; /* need sqrt(el[i]) ? */ + x[edge2[i]] = x[edge1[i]] - alpha[i]*el[i]*(x[edge1[i]] - theta[i]) + sqrt(el[i])*sigma[i]*norm_rand(); + PutRNGstate(); + } + break; + case 3 : for (i = *Nedge - 1; i >= 0; i--) { + GetRNGstate(); + x[edge2[i]] = x[edge1[i]] - (1 - exp(alpha[i]*el[i]))*(x[edge1[i]] - theta[i]) + sqrt(el[i])*sigma[i]*norm_rand(); PutRNGstate(); } break;