-/* rTrait.c 2010-01-11 */
+/* rTrait.c 2010-07-26 */
/* Copyright 2010 Emmanuel Paradis */
switch(*model) {
case 1 : for (i = *Nedge - 1; i >= 0; i--) {
GetRNGstate();
- x[edge2[i]] = x[edge1[i]] + el[i] * sigma[i] * norm_rand();
+ x[edge2[i]] = x[edge1[i]] + sqrt(el[i]) * sigma[i] * norm_rand();
PutRNGstate();
}
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];
+ 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;