From f7cbafde031c1b707adb3dd8391deb9db33feab9 Mon Sep 17 00:00:00 2001 From: Daniel Lee Date: Fri, 13 Dec 2013 18:25:09 -0500 Subject: [PATCH] refactored init_adapt function to call a simpler init_adapt function that can be called through tests --- src/stan/gm/command.hpp | 42 ++++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/src/stan/gm/command.hpp b/src/stan/gm/command.hpp index 7e864f887eb..1ab4e180e77 100644 --- a/src/stan/gm/command.hpp +++ b/src/stan/gm/command.hpp @@ -208,34 +208,42 @@ namespace stan { } template - bool init_adapt(stan::mcmc::base_mcmc* sampler, categorical_argument* adapt) { - - double delta = dynamic_cast(adapt->arg("delta"))->value(); - double gamma = dynamic_cast(adapt->arg("gamma"))->value(); - double kappa = dynamic_cast(adapt->arg("kappa"))->value(); - double t0 = dynamic_cast(adapt->arg("t0"))->value(); - - double epsilon = dynamic_cast(sampler)->get_nominal_stepsize(); + bool init_adapt(Sampler* sampler, + const double delta, + const double gamma, + const double kappa, + const double t0) { + const double epsilon = sampler->get_nominal_stepsize(); - Sampler* s = dynamic_cast(sampler); + sampler->get_stepsize_adaptation().set_mu(log(10 * epsilon)); + sampler->get_stepsize_adaptation().set_delta(delta); + sampler->get_stepsize_adaptation().set_gamma(gamma); + sampler->get_stepsize_adaptation().set_kappa(kappa); + sampler->get_stepsize_adaptation().set_t0(t0); - s->get_stepsize_adaptation().set_mu(log(10 * epsilon)); - s->get_stepsize_adaptation().set_delta(delta); - s->get_stepsize_adaptation().set_gamma(gamma); - s->get_stepsize_adaptation().set_kappa(kappa); - s->get_stepsize_adaptation().set_t0(t0); - - s->engage_adaptation(); + sampler->engage_adaptation(); try { - s->init_stepsize(); + sampler->init_stepsize(); } catch (std::runtime_error e) { std::cout << e.what() << std::endl; return false; } return true; + } + + template + bool init_adapt(stan::mcmc::base_mcmc* sampler, categorical_argument* adapt) { + + double delta = dynamic_cast(adapt->arg("delta"))->value(); + double gamma = dynamic_cast(adapt->arg("gamma"))->value(); + double kappa = dynamic_cast(adapt->arg("kappa"))->value(); + double t0 = dynamic_cast(adapt->arg("t0"))->value(); + Sampler* s = dynamic_cast(sampler); + + return init_adapt(s, delta, gamma, kappa, t0); } template