/* Metropolis-within-Gibbs algorithm for Guadeloupe sugar cane data */ #include #include #include #include #include #define MAXN 1742 #define K 30 #define infinity 999999999.0 #define PI 3.1415926536 double drand48(); int L[MAXN], U[MAXN]; double lambda[MAXN][K], D[MAXN][MAXN], sq(); int N; /* BEGIN MAIN PROGRAM. */ int main(int argc, char **argv) { /* Initial declarations. */ FILE *fp; int M, B, i, j, k, t; char tmpstring[20]; double x[MAXN], y[MAXN]; int S6[MAXN], S10[MAXN], S14[MAXN], S19[MAXN], S23[MAXN], S30[MAXN]; double uniform(), exponential(), normal(), logpi(); void seedrand(); double curtheta, curmu, curlogpi, newlogpi, newmu, newtheta, summu, sumtheta; int curtau[MAXN], newtau[MAXN], sumtau[MAXN]; int propmu, propth, proptau, accmu, accth, acctau; /* Seed the random number generator. */ seedrand(); /* Read in the data. */ printf("Reading data ...\n"); if ((fp = fopen("canedata","r")) == NULL) { fprintf(stderr, "Unable to read file 'canedata'.\n"); exit(1); } N = 0; for (i=0; i B) { sumtheta = sumtheta + curtheta; summu = summu + curmu; for (j=0; j U[ii]) ) { /* printf("out of range: ii=%d, L=%d, tau=%d, U=%d\n", ii, L[ii], thetau[ii], U[ii]); */ return(-infinity); } for (kk=0; kk