void utest_binom_transform(double r, double s) { double rs[2]; rs[0] = r; rs[1] = s; double fq[2] = {0, 0}; double out[2]; binom_transform(rs, fq, out); Rprintf("r=%g, s=%g, f=%g, q=%g\n", rs[0], rs[1], out[0], out[1]); }
void binom_post(const double* prior, double* post, double y, double n, double epsrel, int max_iter) { double rs[2]; double fq[2] = {0, 0}; binom_solver(prior, rs, 0.0, epsrel, max_iter); rs[0] = rs[0] + y; rs[1] = rs[1] + n - y; binom_transform(rs, fq, post); }
// Update void BinomUpdate::update(const double* prior, double* post, double y, double n, double epsrel, int max_iter) { double rs[2]; double zero[2] = {0, 0}; cs.solve(prior, rs, 0.0, epsrel, max_iter); rs[0] = rs[0] + y; rs[1] = rs[1] + n - y; binom_transform(rs, zero, post); // Rprintf("fq: %g, %g; rs: %g, %g\n", post[0], post[1], rs[0], rs[1]); // Rprintf("epsrel: %g, max_iter, %i\n", epsrel, max_iter); }
void NBinomUpdate::update(const double* prior, double* post, double y, double n, double epsrel, int max_iter) { double rs[2]; double zero[2] = {0, 0}; double fq[2]; memmove(fq, prior, 2 * sizeof(double)); fq[0] = fq[0] - log(n); cs.solve(fq, rs, 0.0, epsrel, max_iter); rs[0] = rs[0] + y; rs[1] = rs[1] + n; binom_transform(rs, zero, post); post[0] = post[0] + log(n); }
void binom_post(const double* prior, double* post, double y, double n, const double* ival, double epsrel, int max_iter) { double rs[2]; double zero[2] = {0, 0}; // solver(prior, rs, ival, 0.0, epsrel, max_iter, &binom_transform_gsl); binom_solver(prior, rs, ival, 0.0, epsrel, max_iter); rs[0] = rs[0] + y; rs[1] = rs[1] + n - y; binom_transform(rs, zero, post); // Rprintf("fq: %g, %g; rs: %g, %g\n", post[0], post[1], rs[0], rs[1]); // Rprintf("epsrel: %g, max_iter, %i\n", epsrel, max_iter); }
void nbinom_post(const double* prior, double* post, double y, double n, const double* ival, double epsrel, int max_iter) { double rs[2]; double zero[2] = {0, 0}; double fq[2]; memmove(fq, prior, 2 * sizeof(double)); fq[0] = fq[0] - log(n); // solver(fq, rs, ival, 0.0, epsrel, max_iter, &binom_transform_gsl); binom_solver(fq, rs, ival, 0.0, epsrel, max_iter); rs[0] = rs[0] + y; rs[1] = rs[1] + n; binom_transform(rs, zero, post); post[0] = post[0] + log(n); }
int binom_transform_gsl (const gsl_vector* x, void* p, gsl_vector* f) { double rs[2]; double out[2]; double* fq = (double *)p; rs[0] = gsl_vector_get(x, 0); rs[1] = gsl_vector_get(x, 1); binom_transform(rs, fq, out); gsl_vector_set (f, 0, out[0]); gsl_vector_set (f, 1, out[1]); return GSL_SUCCESS; }