From 37693f7c5f65a2b116c771befca111bfbc9eea9e Mon Sep 17 00:00:00 2001 From: Theresa O'Brien Date: Mon, 22 Apr 2024 13:34:30 +1000 Subject: [PATCH] Vb model add (#18) Added von Bertalanffy model, testing suite. * Added code for von Bertalanffy model. Currently has problems with estimating a max size smaller than the starting size. * Updated von Butterfly test, everything runs locally so here goes. --- R/rmot_models.R | 34 +- R/rmot_run.R | 4 +- R/stanmodels.R | 4 +- inst/stan/vb_multi_ind.stan | 147 ++ inst/stan/vb_single_ind.stan | 127 ++ src/RcppExports.cpp | 4 + src/stanExports_canham_multi_ind.h | 1984 ++++++++--------- src/stanExports_canham_single_ind.h | 1339 ++++++----- src/stanExports_constant_multi_ind.h | 1246 +++++------ src/stanExports_constant_single_ind.h | 962 ++++---- src/stanExports_linear.h | 661 +++--- src/stanExports_power_multi_ind.h | 1705 +++++++------- src/stanExports_power_single_ind.h | 1272 +++++------ src/stanExports_vb_multi_ind.cc | 32 + src/stanExports_vb_multi_ind.h | 1054 +++++++++ src/stanExports_vb_single_ind.cc | 32 + src/stanExports_vb_single_ind.h | 811 +++++++ tests/testthat/fixtures/vb/make_vb.R | 59 + .../fixtures/vb/vb_data_multi_ind.rds | Bin 0 -> 1044 bytes .../fixtures/vb/vb_data_single_ind.rds | Bin 0 -> 588 bytes tests/testthat/test-rmot_models_vb.R | 44 + 21 files changed, 6602 insertions(+), 4919 deletions(-) create mode 100644 inst/stan/vb_multi_ind.stan create mode 100644 inst/stan/vb_single_ind.stan create mode 100644 src/stanExports_vb_multi_ind.cc create mode 100644 src/stanExports_vb_multi_ind.h create mode 100644 src/stanExports_vb_single_ind.cc create mode 100644 src/stanExports_vb_single_ind.h create mode 100644 tests/testthat/fixtures/vb/make_vb.R create mode 100644 tests/testthat/fixtures/vb/vb_data_multi_ind.rds create mode 100644 tests/testthat/fixtures/vb/vb_data_single_ind.rds create mode 100644 tests/testthat/test-rmot_models_vb.R diff --git a/R/rmot_models.R b/R/rmot_models.R index bd8d5a6..f053888 100644 --- a/R/rmot_models.R +++ b/R/rmot_models.R @@ -19,7 +19,9 @@ rmot_model <- function(model=NULL){ canham_single_ind = rmot_canham_single_ind(), canham_multi_ind = rmot_canham_multi_ind(), power_single_ind = rmot_power_single_ind(), - power_multi_ind = rmot_power_multi_ind()) + power_multi_ind = rmot_power_multi_ind(), + vb_single_ind = rmot_vb_single_ind(), + vb_multi_ind = rmot_vb_multi_ind()) class(output) <- "rmot_object" @@ -126,3 +128,33 @@ rmot_power_multi_ind <- function(){ y_0_obs = NULL, model = "power_multi_ind") } + +#' Data configuration template for von Bertalanffy growth single individual model +#' @keywords internal +#' @noRd + +rmot_vb_single_ind <- function(){ + list(step_size = NULL, + n_obs = NULL, + y_obs = NULL, + obs_index = NULL, + time = NULL, + y_0_obs = NULL, + model = "vb_single_ind") +} + +#' Data configuration template for von Bertalanffy growth single species model +#' @keywords internal +#' @noRd + +rmot_vb_multi_ind <- function(){ + list(step_size = NULL, + n_obs = NULL, + n_ind = NULL, + y_obs = NULL, + obs_index = NULL, + time = NULL, + ind_id = NULL, + y_0_obs = NULL, + model = "vb_multi_ind") +} diff --git a/R/rmot_run.R b/R/rmot_run.R index 181164a..76b3791 100644 --- a/R/rmot_run.R +++ b/R/rmot_run.R @@ -22,7 +22,9 @@ rmot_run <- function(model_template, ...) { canham_single_ind = rstan::sampling(stanmodels$canham_single_ind, data = model_template, ...), canham_multi_ind = rstan::sampling(stanmodels$canham_multi_ind, data = model_template, ...), power_single_ind = rstan::sampling(stanmodels$power_single_ind, data = model_template, ...), - power_multi_ind = rstan::sampling(stanmodels$power_multi_ind, data = model_template, ...)) + power_multi_ind = rstan::sampling(stanmodels$power_multi_ind, data = model_template, ...), + vb_single_ind = rstan::sampling(stanmodels$vb_single_ind, data = model_template, ...), + vb_multi_ind = rstan::sampling(stanmodels$vb_multi_ind, data = model_template, ...)) return(out) } diff --git a/R/stanmodels.R b/R/stanmodels.R index 258969d..0d9d9a8 100644 --- a/R/stanmodels.R +++ b/R/stanmodels.R @@ -1,7 +1,7 @@ # Generated by rstantools. Do not edit by hand. # names of stan models -stanmodels <- c("canham_multi_ind", "canham_single_ind", "constant_multi_ind", "constant_single_ind", "linear", "power_multi_ind", "power_single_ind") +stanmodels <- c("canham_multi_ind", "canham_single_ind", "constant_multi_ind", "constant_single_ind", "linear", "power_multi_ind", "power_single_ind", "vb_multi_ind", "vb_single_ind") # load each stan module Rcpp::loadModule("stan_fit4canham_multi_ind_mod", what = TRUE) @@ -11,6 +11,8 @@ Rcpp::loadModule("stan_fit4constant_single_ind_mod", what = TRUE) Rcpp::loadModule("stan_fit4linear_mod", what = TRUE) Rcpp::loadModule("stan_fit4power_multi_ind_mod", what = TRUE) Rcpp::loadModule("stan_fit4power_single_ind_mod", what = TRUE) +Rcpp::loadModule("stan_fit4vb_multi_ind_mod", what = TRUE) +Rcpp::loadModule("stan_fit4vb_single_ind_mod", what = TRUE) # instantiate each stanmodel object stanmodels <- sapply(stanmodels, function(model_name) { diff --git a/inst/stan/vb_multi_ind.stan b/inst/stan/vb_multi_ind.stan new file mode 100644 index 0000000..1e24003 --- /dev/null +++ b/inst/stan/vb_multi_ind.stan @@ -0,0 +1,147 @@ +//Growth function +functions{ + //Growth function for use with Runge-Kutta method + //pars = (growth_par, max_size) + real DE(real y, vector pars){ //change number of pars + return pars[1] * (pars[2] - y); //growth function + } + + real rk4_step(real y, vector pars, real interval){ + real k1; + real k2; + real k3; + real k4; + real y_hat; + + k1 = DE(y, pars); + k2 = DE(y+interval*k1/2.0, pars); + k3 = DE(y+interval*k2/2.0, pars); + k4 = DE(y+interval*k3, pars); + + y_hat = y + (1.0/6.0) * (k1 + 2.0*k2 + 2.0*k3 + k4) * interval; + + return y_hat; + } + + real rk4(real y, vector pars, real interval, real step_size){ + int steps; + real duration; + real y_hat; + real step_size_temp; + + duration = 0; + y_hat = y; + + while(duration < interval){ + //Determine the relevant step size + step_size_temp = min([step_size, interval-duration]); + + //Get next size estimate + y_hat = rk4_step(y_hat, pars, step_size_temp); + + //Increment observed duration + duration = duration + step_size_temp; + } + + return y_hat; + } +} + +// Data structure +data { + real step_size; + int n_obs; + int n_ind; + real y_obs[n_obs]; + int obs_index[n_obs]; + real time[n_obs]; + int ind_id[n_obs]; + real y_0_obs[n_ind]; +} + +// The parameters accepted by the model. +parameters { + //Individual level + real ind_y_0[n_ind]; + real ind_growth_par[n_ind]; + real ind_max_size[n_ind]; + + //Species level + real species_growth_par_mean; + real species_growth_par_sd; + real species_max_size_mean; + real species_max_size_sd; + + //Global level + real global_error_sigma; +} + +// The model to be estimated. +model { + real y_hat[n_obs]; + vector[2] pars; + + for(i in 1:n_obs){ + // Initialise the parameters for the observation + pars[1] = ind_growth_par[ind_id[i]]; + pars[2] = ind_max_size[ind_id[i]]; + + if(obs_index[i]==1){//Fits the first size + y_hat[i] = ind_y_0[ind_id[i]]; + } + + if(i < n_obs){ + if(ind_id[i+1]==ind_id[i]){ + //Estimate next size + y_hat[i+1] = rk4(y_hat[i], pars, (time[i+1] - time[i]), step_size); + } + } + } + + //Likelihood + y_obs ~normal(y_hat, global_error_sigma); + + //Priors + //Individual level + ind_y_0 ~normal(y_0_obs, global_error_sigma); + ind_growth_par ~lognormal(species_growth_par_mean, species_growth_par_sd); + ind_max_size ~lognormal(species_max_size_mean, species_max_size_sd); + + //Species level + species_growth_par_mean ~normal(0, 2); + species_growth_par_sd ~cauchy(0, 2); + species_max_size_mean ~normal(max(log(y_obs)), 2); + species_max_size_sd ~cauchy(0, 2); + + //Global level + global_error_sigma ~cauchy(0, 5); +} + +generated quantities{ + real y_hat[n_obs]; + real Delta_hat[n_obs]; + vector[2] pars; + + for(i in 1:n_obs){ + // Initialise the parameters for the observation + pars[1] = ind_growth_par[ind_id[i]]; + pars[2] = ind_max_size[ind_id[i]]; + + if(obs_index[i]==1){//Fits the first size + y_hat[i] = ind_y_0[ind_id[i]]; + } + + if(i < n_obs){ + if(ind_id[i+1]==ind_id[i]){ + //Estimate next size + y_hat[i+1] = rk4(y_hat[i], pars, (time[i+1] - time[i]), step_size); + Delta_hat[i] = y_hat[i+1] - y_hat[i]; + + } else { + Delta_hat[i] = DE(y_hat[i], pars)*(time[i] - time[i-1]); + } + } else { + Delta_hat[i] = DE(y_hat[i], pars)*(time[i] - time[i-1]); + } + } +} diff --git a/inst/stan/vb_single_ind.stan b/inst/stan/vb_single_ind.stan new file mode 100644 index 0000000..e28eada --- /dev/null +++ b/inst/stan/vb_single_ind.stan @@ -0,0 +1,127 @@ +//Growth function +functions{ + //Growth function for use with Runge-Kutta method + //pars = (growth_par, max_size) + real DE(real y, vector pars){ //change number of pars + return pars[1] * (pars[2] - y); //growth function + } + + real rk4_step(real y, vector pars, real interval){ + real k1; + real k2; + real k3; + real k4; + real y_hat; + + k1 = DE(y, pars); + k2 = DE(y+interval*k1/2.0, pars); + k3 = DE(y+interval*k2/2.0, pars); + k4 = DE(y+interval*k3, pars); + + y_hat = y + (1.0/6.0) * (k1 + 2.0*k2 + 2.0*k3 + k4) * interval; + + return y_hat; + } + + real rk4(real y, vector pars, real interval, real step_size){ + int steps; + real duration; + real y_hat; + real step_size_temp; + + duration = 0; + y_hat = y; + + while(duration < interval){ + //Determine the relevant step size + step_size_temp = min([step_size, interval-duration]); + + //Get next size estimate + y_hat = rk4_step(y_hat, pars, step_size_temp); + + //Increment observed duration + duration = duration + step_size_temp; + } + + return y_hat; + } +} + +// Data structure +data { + real step_size; + int n_obs; + real y_obs[n_obs]; + int obs_index[n_obs]; + real time[n_obs]; + real y_0_obs; +} + +// The parameters accepted by the model. +parameters { + //Individual level + real ind_y_0; + real ind_growth_par; + real ind_max_size; + + //Global level + real global_error_sigma; +} + +// The model to be estimated. +model { + real y_hat[n_obs]; + vector[2] pars; + + pars[1] = ind_growth_par; + pars[2] = ind_max_size; + + for(i in 1:n_obs){ + + if(obs_index[i]==1){//Fits the first size + y_hat[i] = ind_y_0; + } + + if(i < n_obs){ + //Estimate growth rate + y_hat[i+1] = rk4(y_hat[i], pars, (time[i+1] - time[i]), step_size); + } + } + + //Likelihood + y_obs ~ normal(y_hat, global_error_sigma); + + //Priors + //Individual level + ind_y_0 ~ normal(y_0_obs, global_error_sigma); + ind_growth_par ~lognormal(0, 1); + ind_max_size ~lognormal(max(log(y_obs)), 1); //Take max obs. size as average value + + //Global level + global_error_sigma ~cauchy(1,5); +} + +generated quantities{ + real y_hat[n_obs]; + real Delta_hat[n_obs]; + vector[2] pars; + + pars[1] = ind_growth_par; + pars[2] = ind_max_size; + + for(i in 1:n_obs){ + + if(obs_index[i]==1){//Fits the first size + y_hat[i] = ind_y_0; + } + + if(i < n_obs){ + //Estimate next size + y_hat[i+1] = rk4(y_hat[i], pars, (time[i+1] - time[i]), step_size); + Delta_hat[i] = y_hat[i+1] - y_hat[i]; + + } else { + Delta_hat[i] = DE(y_hat[i], pars)*(time[i] - time[i-1]); + } + } +} diff --git a/src/RcppExports.cpp b/src/RcppExports.cpp index 0935fcf..6dfbd08 100644 --- a/src/RcppExports.cpp +++ b/src/RcppExports.cpp @@ -19,6 +19,8 @@ RcppExport SEXP _rcpp_module_boot_stan_fit4constant_single_ind_mod(); RcppExport SEXP _rcpp_module_boot_stan_fit4linear_mod(); RcppExport SEXP _rcpp_module_boot_stan_fit4power_multi_ind_mod(); RcppExport SEXP _rcpp_module_boot_stan_fit4power_single_ind_mod(); +RcppExport SEXP _rcpp_module_boot_stan_fit4vb_multi_ind_mod(); +RcppExport SEXP _rcpp_module_boot_stan_fit4vb_single_ind_mod(); static const R_CallMethodDef CallEntries[] = { {"_rcpp_module_boot_stan_fit4canham_multi_ind_mod", (DL_FUNC) &_rcpp_module_boot_stan_fit4canham_multi_ind_mod, 0}, @@ -28,6 +30,8 @@ static const R_CallMethodDef CallEntries[] = { {"_rcpp_module_boot_stan_fit4linear_mod", (DL_FUNC) &_rcpp_module_boot_stan_fit4linear_mod, 0}, {"_rcpp_module_boot_stan_fit4power_multi_ind_mod", (DL_FUNC) &_rcpp_module_boot_stan_fit4power_multi_ind_mod, 0}, {"_rcpp_module_boot_stan_fit4power_single_ind_mod", (DL_FUNC) &_rcpp_module_boot_stan_fit4power_single_ind_mod, 0}, + {"_rcpp_module_boot_stan_fit4vb_multi_ind_mod", (DL_FUNC) &_rcpp_module_boot_stan_fit4vb_multi_ind_mod, 0}, + {"_rcpp_module_boot_stan_fit4vb_single_ind_mod", (DL_FUNC) &_rcpp_module_boot_stan_fit4vb_single_ind_mod, 0}, {NULL, NULL, 0} }; diff --git a/src/stanExports_canham_multi_ind.h b/src/stanExports_canham_multi_ind.h index d503af2..980c1ad 100644 --- a/src/stanExports_canham_multi_ind.h +++ b/src/stanExports_canham_multi_ind.h @@ -21,231 +21,197 @@ #define USE_STANC3 #endif #include -// Code generated by stanc v2.26.1-4-gd72b68b7-dirty +// Code generated by stanc v2.32.2 #include namespace model_canham_multi_ind_namespace { -inline void validate_positive_index(const char* var_name, const char* expr, - int val) { - if (val < 1) { - std::stringstream msg; - msg << "Found dimension size less than one in simplex declaration" - << "; variable=" << var_name << "; dimension size expression=" << expr - << "; expression value=" << val; - std::string msg_str(msg.str()); - throw std::invalid_argument(msg_str.c_str()); - } -} -inline void validate_unit_vector_index(const char* var_name, const char* expr, - int val) { - if (val <= 1) { - std::stringstream msg; - if (val == 1) { - msg << "Found dimension size one in unit vector declaration." - << " One-dimensional unit vector is discrete" - << " but the target distribution must be continuous." - << " variable=" << var_name << "; dimension size expression=" << expr; - } else { - msg << "Found dimension size less than one in unit vector declaration" - << "; variable=" << var_name << "; dimension size expression=" << expr - << "; expression value=" << val; - } - std::string msg_str(msg.str()); - throw std::invalid_argument(msg_str.c_str()); - } -} -using std::istream; -using std::string; -using std::stringstream; -using std::vector; -using std::pow; -using stan::io::dump; -using stan::math::lgamma; using stan::model::model_base_crtp; -using stan::model::rvalue; -using stan::model::cons_list; -using stan::model::index_uni; -using stan::model::index_max; -using stan::model::index_min; -using stan::model::index_min_max; -using stan::model::index_multi; -using stan::model::index_omni; -using stan::model::nil_index_list; using namespace stan::math; -using stan::math::pow; stan::math::profile_map profiles__; -static int current_statement__= 0; -static const std::vector locations_array__ = {" (found before start of program)", - " (in 'canham_multi_ind', line 54, column 2 to column 31)", - " (in 'canham_multi_ind', line 55, column 2 to column 38)", - " (in 'canham_multi_ind', line 56, column 2 to column 50)", - " (in 'canham_multi_ind', line 57, column 2 to column 29)", - " (in 'canham_multi_ind', line 59, column 2 to column 31)", - " (in 'canham_multi_ind', line 60, column 2 to column 38)", - " (in 'canham_multi_ind', line 61, column 2 to column 43)", - " (in 'canham_multi_ind', line 62, column 2 to column 50)", - " (in 'canham_multi_ind', line 63, column 2 to column 22)", - " (in 'canham_multi_ind', line 64, column 2 to column 29)", - " (in 'canham_multi_ind', line 66, column 2 to column 35)", - " (in 'canham_multi_ind', line 109, column 2 to column 20)", - " (in 'canham_multi_ind', line 110, column 2 to column 24)", - " (in 'canham_multi_ind', line 111, column 2 to column 17)", - " (in 'canham_multi_ind', line 114, column 4 to column 40)", - " (in 'canham_multi_ind', line 115, column 4 to column 52)", - " (in 'canham_multi_ind', line 116, column 4 to column 31)", - " (in 'canham_multi_ind', line 118, column 6 to column 36)", - " (in 'canham_multi_ind', line 117, column 23 to line 119, column 5)", - " (in 'canham_multi_ind', line 117, column 4 to line 119, column 5)", - " (in 'canham_multi_ind', line 129, column 6 to column 62)", - " (in 'canham_multi_ind', line 128, column 11 to line 130, column 5)", - " (in 'canham_multi_ind', line 126, column 8 to column 64)", - " (in 'canham_multi_ind', line 125, column 13 to line 127, column 7)", - " (in 'canham_multi_ind', line 123, column 8 to column 75)", - " (in 'canham_multi_ind', line 124, column 8 to column 45)", - " (in 'canham_multi_ind', line 121, column 32 to line 125, column 7)", - " (in 'canham_multi_ind', line 121, column 6 to line 127, column 7)", - " (in 'canham_multi_ind', line 120, column 17 to line 128, column 5)", - " (in 'canham_multi_ind', line 120, column 4 to line 130, column 5)", - " (in 'canham_multi_ind', line 112, column 19 to line 131, column 3)", - " (in 'canham_multi_ind', line 112, column 2 to line 131, column 3)", - " (in 'canham_multi_ind', line 70, column 13 to column 18)", - " (in 'canham_multi_ind', line 70, column 2 to column 20)", - " (in 'canham_multi_ind', line 71, column 2 to column 17)", - " (in 'canham_multi_ind', line 74, column 4 to column 40)", - " (in 'canham_multi_ind', line 75, column 4 to column 52)", - " (in 'canham_multi_ind', line 76, column 4 to column 31)", - " (in 'canham_multi_ind', line 78, column 6 to column 36)", - " (in 'canham_multi_ind', line 77, column 23 to line 79, column 5)", - " (in 'canham_multi_ind', line 77, column 4 to line 79, column 5)", - " (in 'canham_multi_ind', line 83, column 8 to column 75)", - " (in 'canham_multi_ind', line 81, column 32 to line 84, column 7)", - " (in 'canham_multi_ind', line 81, column 6 to line 84, column 7)", - " (in 'canham_multi_ind', line 80, column 17 to line 85, column 5)", - " (in 'canham_multi_ind', line 80, column 4 to line 85, column 5)", - " (in 'canham_multi_ind', line 72, column 19 to line 86, column 3)", - " (in 'canham_multi_ind', line 72, column 2 to line 86, column 3)", - " (in 'canham_multi_ind', line 88, column 2 to column 44)", - " (in 'canham_multi_ind', line 91, column 2 to column 48)", - " (in 'canham_multi_ind', line 92, column 2 to line 93, column 51)", - " (in 'canham_multi_ind', line 94, column 2 to line 95, column 75)", - " (in 'canham_multi_ind', line 96, column 2 to line 97, column 33)", - " (in 'canham_multi_ind', line 99, column 2 to column 40)", - " (in 'canham_multi_ind', line 100, column 2 to column 38)", - " (in 'canham_multi_ind', line 101, column 2 to column 52)", - " (in 'canham_multi_ind', line 102, column 2 to column 50)", - " (in 'canham_multi_ind', line 103, column 2 to column 31)", - " (in 'canham_multi_ind', line 104, column 2 to column 29)", - " (in 'canham_multi_ind', line 106, column 2 to column 35)", - " (in 'canham_multi_ind', line 42, column 2 to column 17)", - " (in 'canham_multi_ind', line 43, column 2 to column 12)", - " (in 'canham_multi_ind', line 44, column 2 to column 12)", - " (in 'canham_multi_ind', line 45, column 13 to column 18)", - " (in 'canham_multi_ind', line 45, column 2 to column 20)", - " (in 'canham_multi_ind', line 46, column 16 to column 21)", - " (in 'canham_multi_ind', line 46, column 2 to column 23)", - " (in 'canham_multi_ind', line 47, column 12 to column 17)", - " (in 'canham_multi_ind', line 47, column 2 to column 19)", - " (in 'canham_multi_ind', line 48, column 13 to column 18)", - " (in 'canham_multi_ind', line 48, column 2 to column 20)", - " (in 'canham_multi_ind', line 49, column 15 to column 20)", - " (in 'canham_multi_ind', line 49, column 2 to column 22)", - " (in 'canham_multi_ind', line 54, column 24 to column 29)", - " (in 'canham_multi_ind', line 55, column 31 to column 36)", - " (in 'canham_multi_ind', line 56, column 43 to column 48)", - " (in 'canham_multi_ind', line 57, column 22 to column 27)", - " (in 'canham_multi_ind', line 109, column 13 to column 18)", - " (in 'canham_multi_ind', line 110, column 17 to column 22)", - " (in 'canham_multi_ind', line 6, column 4 to line 7, column 51)", - " (in 'canham_multi_ind', line 5, column 30 to line 8, column 3)", - " (in 'canham_multi_ind', line 10, column 4 to column 12)", - " (in 'canham_multi_ind', line 11, column 4 to column 12)", - " (in 'canham_multi_ind', line 12, column 4 to column 12)", - " (in 'canham_multi_ind', line 13, column 4 to column 12)", - " (in 'canham_multi_ind', line 14, column 4 to column 15)", - " (in 'canham_multi_ind', line 15, column 4 to column 21)", - " (in 'canham_multi_ind', line 16, column 4 to column 37)", - " (in 'canham_multi_ind', line 17, column 4 to column 37)", - " (in 'canham_multi_ind', line 18, column 4 to column 33)", - " (in 'canham_multi_ind', line 19, column 4 to column 67)", - " (in 'canham_multi_ind', line 20, column 4 to column 17)", - " (in 'canham_multi_ind', line 9, column 51 to line 21, column 3)", - " (in 'canham_multi_ind', line 23, column 4 to column 14)", - " (in 'canham_multi_ind', line 24, column 4 to column 18)", - " (in 'canham_multi_ind', line 25, column 4 to column 15)", - " (in 'canham_multi_ind', line 26, column 4 to column 24)", - " (in 'canham_multi_ind', line 27, column 4 to column 17)", - " (in 'canham_multi_ind', line 28, column 4 to column 14)", - " (in 'canham_multi_ind', line 31, column 6 to column 59)", - " (in 'canham_multi_ind', line 33, column 6 to column 52)", - " (in 'canham_multi_ind', line 35, column 6 to column 43)", - " (in 'canham_multi_ind', line 29, column 30 to line 36, column 5)", - " (in 'canham_multi_ind', line 29, column 4 to line 36, column 5)", - " (in 'canham_multi_ind', line 37, column 4 to column 17)", - " (in 'canham_multi_ind', line 22, column 62 to line 38, column 3)"}; -template -stan::promote_args_t> +static constexpr std::array locations_array__ = + {" (found before start of program)", + " (in 'string', line 54, column 2 to column 31)", + " (in 'string', line 55, column 2 to column 38)", + " (in 'string', line 56, column 2 to column 50)", + " (in 'string', line 57, column 2 to column 29)", + " (in 'string', line 59, column 2 to column 31)", + " (in 'string', line 60, column 2 to column 38)", + " (in 'string', line 61, column 2 to column 43)", + " (in 'string', line 62, column 2 to column 50)", + " (in 'string', line 63, column 2 to column 22)", + " (in 'string', line 64, column 2 to column 29)", + " (in 'string', line 66, column 2 to column 35)", + " (in 'string', line 109, column 2 to column 20)", + " (in 'string', line 110, column 2 to column 24)", + " (in 'string', line 111, column 2 to column 17)", + " (in 'string', line 114, column 4 to column 40)", + " (in 'string', line 115, column 4 to column 52)", + " (in 'string', line 116, column 4 to column 31)", + " (in 'string', line 118, column 6 to column 36)", + " (in 'string', line 117, column 23 to line 119, column 5)", + " (in 'string', line 117, column 4 to line 119, column 5)", + " (in 'string', line 129, column 6 to column 62)", + " (in 'string', line 128, column 11 to line 130, column 5)", + " (in 'string', line 126, column 8 to column 64)", + " (in 'string', line 125, column 13 to line 127, column 7)", + " (in 'string', line 123, column 8 to column 75)", + " (in 'string', line 124, column 8 to column 45)", + " (in 'string', line 121, column 32 to line 125, column 7)", + " (in 'string', line 121, column 6 to line 127, column 7)", + " (in 'string', line 120, column 17 to line 128, column 5)", + " (in 'string', line 120, column 4 to line 130, column 5)", + " (in 'string', line 112, column 19 to line 131, column 3)", + " (in 'string', line 112, column 2 to line 131, column 3)", + " (in 'string', line 70, column 13 to column 18)", + " (in 'string', line 70, column 2 to column 20)", + " (in 'string', line 71, column 2 to column 17)", + " (in 'string', line 74, column 4 to column 40)", + " (in 'string', line 75, column 4 to column 52)", + " (in 'string', line 76, column 4 to column 31)", + " (in 'string', line 78, column 6 to column 36)", + " (in 'string', line 77, column 23 to line 79, column 5)", + " (in 'string', line 77, column 4 to line 79, column 5)", + " (in 'string', line 83, column 8 to column 75)", + " (in 'string', line 81, column 32 to line 84, column 7)", + " (in 'string', line 81, column 6 to line 84, column 7)", + " (in 'string', line 80, column 17 to line 85, column 5)", + " (in 'string', line 80, column 4 to line 85, column 5)", + " (in 'string', line 72, column 19 to line 86, column 3)", + " (in 'string', line 72, column 2 to line 86, column 3)", + " (in 'string', line 88, column 2 to column 44)", + " (in 'string', line 91, column 2 to column 48)", + " (in 'string', line 92, column 2 to line 93, column 51)", + " (in 'string', line 94, column 2 to line 95, column 75)", + " (in 'string', line 96, column 2 to line 97, column 33)", + " (in 'string', line 99, column 2 to column 40)", + " (in 'string', line 100, column 2 to column 38)", + " (in 'string', line 101, column 2 to column 52)", + " (in 'string', line 102, column 2 to column 50)", + " (in 'string', line 103, column 2 to column 31)", + " (in 'string', line 104, column 2 to column 29)", + " (in 'string', line 106, column 2 to column 35)", + " (in 'string', line 42, column 2 to column 17)", + " (in 'string', line 43, column 2 to column 12)", + " (in 'string', line 44, column 2 to column 12)", + " (in 'string', line 45, column 13 to column 18)", + " (in 'string', line 45, column 2 to column 20)", + " (in 'string', line 46, column 16 to column 21)", + " (in 'string', line 46, column 2 to column 23)", + " (in 'string', line 47, column 12 to column 17)", + " (in 'string', line 47, column 2 to column 19)", + " (in 'string', line 48, column 13 to column 18)", + " (in 'string', line 48, column 2 to column 20)", + " (in 'string', line 49, column 15 to column 20)", + " (in 'string', line 49, column 2 to column 22)", + " (in 'string', line 54, column 24 to column 29)", + " (in 'string', line 55, column 31 to column 36)", + " (in 'string', line 56, column 43 to column 48)", + " (in 'string', line 57, column 22 to column 27)", + " (in 'string', line 109, column 13 to column 18)", + " (in 'string', line 110, column 17 to column 22)", + " (in 'string', line 6, column 4 to line 7, column 51)", + " (in 'string', line 5, column 30 to line 8, column 3)", + " (in 'string', line 10, column 4 to column 12)", + " (in 'string', line 11, column 4 to column 12)", + " (in 'string', line 12, column 4 to column 12)", + " (in 'string', line 13, column 4 to column 12)", + " (in 'string', line 14, column 4 to column 15)", + " (in 'string', line 15, column 4 to column 21)", + " (in 'string', line 16, column 4 to column 37)", + " (in 'string', line 17, column 4 to column 37)", + " (in 'string', line 18, column 4 to column 33)", + " (in 'string', line 19, column 4 to column 67)", + " (in 'string', line 20, column 4 to column 17)", + " (in 'string', line 9, column 51 to line 21, column 3)", + " (in 'string', line 23, column 4 to column 14)", + " (in 'string', line 24, column 4 to column 18)", + " (in 'string', line 25, column 4 to column 15)", + " (in 'string', line 26, column 4 to column 24)", + " (in 'string', line 27, column 4 to column 17)", + " (in 'string', line 28, column 4 to column 14)", + " (in 'string', line 31, column 6 to column 59)", + " (in 'string', line 33, column 6 to column 52)", + " (in 'string', line 35, column 6 to column 43)", + " (in 'string', line 29, column 30 to line 36, column 5)", + " (in 'string', line 29, column 4 to line 36, column 5)", + " (in 'string', line 37, column 4 to column 17)", + " (in 'string', line 22, column 62 to line 38, column 3)"}; +template , + stan::is_col_vector, + stan::is_vt_not_complex>* = nullptr> +stan::promote_args_t> +DE(const T0__& y, const T1__& pars_arg__, std::ostream* pstream__); +template , + stan::is_col_vector, + stan::is_vt_not_complex, + stan::is_stan_scalar>* = nullptr> +stan::promote_args_t, T2__> +rk4_step(const T0__& y, const T1__& pars_arg__, const T2__& interval, + std::ostream* pstream__); +template , + stan::is_col_vector, + stan::is_vt_not_complex, + stan::is_stan_scalar, + stan::is_stan_scalar>* = nullptr> +stan::promote_args_t, T2__, T3__> +rk4(const T0__& y, const T1__& pars_arg__, const T2__& interval, const T3__& + step_size, std::ostream* pstream__); +template , + stan::is_col_vector, + stan::is_vt_not_complex>*> +stan::promote_args_t> DE(const T0__& y, const T1__& pars_arg__, std::ostream* pstream__) { using local_scalar_t__ = stan::promote_args_t>; - const auto& pars = to_ref(pars_arg__); - const static bool propto__ = true; + stan::base_type_t>; + int current_statement__ = 0; + const auto& pars = stan::math::to_ref(pars_arg__); + static constexpr bool propto__ = true; + // suppress unused var warning (void) propto__; local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); - (void) DUMMY_VAR__; // suppress unused var warning - + // suppress unused var warning + (void) DUMMY_VAR__; try { current_statement__ = 80; - return (pars[(1 - 1)] * - stan::math::exp( - (-0.5 * - pow((stan::math::log((y / pars[(2 - 1)])) / pars[(3 - 1)]), - 2)))); + return (stan::model::rvalue(pars, "pars", stan::model::index_uni(1)) * + stan::math::exp((-0.5 * + stan::math::pow( + (stan::math::log((y / + stan::model::rvalue(pars, "pars", stan::model::index_uni(2)))) + / + stan::model::rvalue(pars, "pars", stan::model::index_uni(3))), + 2)))); } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } - -} -struct DE_functor__ { -template -stan::promote_args_t> -operator()(const T0__& y, const T1__& pars, std::ostream* pstream__) const -{ -return DE(y, pars, pstream__); } -}; -template -stan::promote_args_t, -T2__> +template , + stan::is_col_vector, + stan::is_vt_not_complex, + stan::is_stan_scalar>*> +stan::promote_args_t, T2__> rk4_step(const T0__& y, const T1__& pars_arg__, const T2__& interval, std::ostream* pstream__) { using local_scalar_t__ = stan::promote_args_t, - T2__>; - const auto& pars = to_ref(pars_arg__); - const static bool propto__ = true; + stan::base_type_t, T2__>; + int current_statement__ = 0; + const auto& pars = stan::math::to_ref(pars_arg__); + static constexpr bool propto__ = true; + // suppress unused var warning (void) propto__; local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); - (void) DUMMY_VAR__; // suppress unused var warning - + // suppress unused var warning + (void) DUMMY_VAR__; try { - local_scalar_t__ k1; - k1 = DUMMY_VAR__; - - local_scalar_t__ k2; - k2 = DUMMY_VAR__; - - local_scalar_t__ k3; - k3 = DUMMY_VAR__; - - local_scalar_t__ k4; - k4 = DUMMY_VAR__; - - local_scalar_t__ y_hat; - y_hat = DUMMY_VAR__; - + local_scalar_t__ k1 = DUMMY_VAR__; + local_scalar_t__ k2 = DUMMY_VAR__; + local_scalar_t__ k3 = DUMMY_VAR__; + local_scalar_t__ k4 = DUMMY_VAR__; + local_scalar_t__ y_hat = DUMMY_VAR__; current_statement__ = 87; k1 = DE(y, pars, pstream__); current_statement__ = 88; @@ -255,65 +221,51 @@ rk4_step(const T0__& y, const T1__& pars_arg__, const T2__& interval, current_statement__ = 90; k4 = DE((y + (interval * k3)), pars, pstream__); current_statement__ = 91; - y_hat = (y + - (((1.0 / 6.0) * (((k1 + (2.0 * k2)) + (2.0 * k3)) + k4)) * - interval)); + y_hat = (y + (((1.0 / 6.0) * (((k1 + (2.0 * k2)) + (2.0 * k3)) + k4)) * + interval)); current_statement__ = 92; return y_hat; } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } - -} -struct rk4_step_functor__ { -template -stan::promote_args_t, -T2__> -operator()(const T0__& y, const T1__& pars, const T2__& interval, - std::ostream* pstream__) const -{ -return rk4_step(y, pars, interval, pstream__); } -}; -template -stan::promote_args_t, T2__, -T3__> -rk4(const T0__& y, const T1__& pars_arg__, const T2__& interval, - const T3__& step_size, std::ostream* pstream__) { +template , + stan::is_col_vector, + stan::is_vt_not_complex, + stan::is_stan_scalar, + stan::is_stan_scalar>*> +stan::promote_args_t, T2__, T3__> +rk4(const T0__& y, const T1__& pars_arg__, const T2__& interval, const T3__& + step_size, std::ostream* pstream__) { using local_scalar_t__ = stan::promote_args_t, - T2__, - T3__>; - const auto& pars = to_ref(pars_arg__); - const static bool propto__ = true; + stan::base_type_t, T2__, T3__>; + int current_statement__ = 0; + const auto& pars = stan::math::to_ref(pars_arg__); + static constexpr bool propto__ = true; + // suppress unused var warning (void) propto__; local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); - (void) DUMMY_VAR__; // suppress unused var warning - + // suppress unused var warning + (void) DUMMY_VAR__; try { - int steps; - steps = std::numeric_limits::min(); - - local_scalar_t__ duration; - duration = DUMMY_VAR__; - - local_scalar_t__ y_hat; - y_hat = DUMMY_VAR__; - - local_scalar_t__ step_size_temp; - step_size_temp = DUMMY_VAR__; - + int steps = std::numeric_limits::min(); + local_scalar_t__ duration = DUMMY_VAR__; + local_scalar_t__ y_hat = DUMMY_VAR__; + local_scalar_t__ step_size_temp = DUMMY_VAR__; current_statement__ = 98; duration = 0; current_statement__ = 99; y_hat = y; current_statement__ = 104; - while (logical_lt(duration, interval)) { + while (stan::math::logical_lt(duration, interval)) { current_statement__ = 100; - step_size_temp = min((Eigen::Matrix(2) << - step_size, (interval - duration)).finished()); + step_size_temp = stan::math::min( + (Eigen::Matrix(2) << + step_size, + (interval + - + duration)).finished()); current_statement__ = 101; y_hat = rk4_step(y_hat, pars, step_size_temp, pstream__); current_statement__ = 102; @@ -323,21 +275,8 @@ rk4(const T0__& y, const T1__& pars_arg__, const T2__& interval, return y_hat; } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } - -} -struct rk4_functor__ { -template -stan::promote_args_t, T2__, -T3__> -operator()(const T0__& y, const T1__& pars, const T2__& interval, - const T3__& step_size, std::ostream* pstream__) const -{ -return rk4(y, pars, interval, step_size, pstream__); } -}; #include class model_canham_multi_ind final : public model_base_crtp { private: @@ -349,1017 +288,896 @@ class model_canham_multi_ind final : public model_base_crtp time; std::vector ind_id; std::vector y_0_obs; - public: - ~model_canham_multi_ind() { } - - inline std::string model_name() const final { return "model_canham_multi_ind"; } - inline std::vector model_compile_info() const noexcept { - return std::vector{"stanc_version = stanc3 v2.26.1-4-gd72b68b7-dirty", "stancflags = "}; - } - - - model_canham_multi_ind(stan::io::var_context& context__, - unsigned int random_seed__ = 0, - std::ostream* pstream__ = nullptr) : model_base_crtp(0) { - using local_scalar_t__ = double ; - boost::ecuyer1988 base_rng__ = - stan::services::util::create_rng(random_seed__, 0); - (void) base_rng__; // suppress unused var warning - static const char* function__ = "model_canham_multi_ind_namespace::model_canham_multi_ind"; - (void) function__; // suppress unused var warning + ~model_canham_multi_ind() {} + model_canham_multi_ind(stan::io::var_context& context__, unsigned int + random_seed__ = 0, std::ostream* pstream__ = nullptr) + : model_base_crtp(0) { + int current_statement__ = 0; + using local_scalar_t__ = double; + boost::ecuyer1988 base_rng__ = + stan::services::util::create_rng(random_seed__, 0); + // suppress unused var warning + (void) base_rng__; + static constexpr const char* function__ = + "model_canham_multi_ind_namespace::model_canham_multi_ind"; + // suppress unused var warning + (void) function__; local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); - (void) DUMMY_VAR__; // suppress unused var warning - + // suppress unused var warning + (void) DUMMY_VAR__; try { - int pos__; - pos__ = std::numeric_limits::min(); - + int pos__ = std::numeric_limits::min(); pos__ = 1; current_statement__ = 61; - context__.validate_dims("data initialization","step_size","double", - context__.to_vec()); + context__.validate_dims("data initialization", "step_size", "double", + std::vector{}); step_size = std::numeric_limits::quiet_NaN(); - current_statement__ = 61; step_size = context__.vals_r("step_size")[(1 - 1)]; current_statement__ = 62; - context__.validate_dims("data initialization","n_obs","int", - context__.to_vec()); + context__.validate_dims("data initialization", "n_obs", "int", + std::vector{}); n_obs = std::numeric_limits::min(); - current_statement__ = 62; n_obs = context__.vals_i("n_obs")[(1 - 1)]; current_statement__ = 63; - context__.validate_dims("data initialization","n_ind","int", - context__.to_vec()); + context__.validate_dims("data initialization", "n_ind", "int", + std::vector{}); n_ind = std::numeric_limits::min(); - current_statement__ = 63; n_ind = context__.vals_i("n_ind")[(1 - 1)]; current_statement__ = 64; - validate_non_negative_index("y_obs", "n_obs", n_obs); + stan::math::validate_non_negative_index("y_obs", "n_obs", n_obs); current_statement__ = 65; - context__.validate_dims("data initialization","y_obs","double", - context__.to_vec(n_obs)); - y_obs = std::vector(n_obs, std::numeric_limits::quiet_NaN()); - + context__.validate_dims("data initialization", "y_obs", "double", + std::vector{static_cast(n_obs)}); + y_obs = std::vector(n_obs, + std::numeric_limits::quiet_NaN()); current_statement__ = 65; - assign(y_obs, nil_index_list(), context__.vals_r("y_obs"), - "assigning variable y_obs"); + y_obs = context__.vals_r("y_obs"); current_statement__ = 66; - validate_non_negative_index("obs_index", "n_obs", n_obs); + stan::math::validate_non_negative_index("obs_index", "n_obs", n_obs); current_statement__ = 67; - context__.validate_dims("data initialization","obs_index","int", - context__.to_vec(n_obs)); + context__.validate_dims("data initialization", "obs_index", "int", + std::vector{static_cast(n_obs)}); obs_index = std::vector(n_obs, std::numeric_limits::min()); - current_statement__ = 67; - assign(obs_index, nil_index_list(), context__.vals_i("obs_index"), - "assigning variable obs_index"); + obs_index = context__.vals_i("obs_index"); current_statement__ = 68; - validate_non_negative_index("time", "n_obs", n_obs); + stan::math::validate_non_negative_index("time", "n_obs", n_obs); current_statement__ = 69; - context__.validate_dims("data initialization","time","double", - context__.to_vec(n_obs)); - time = std::vector(n_obs, std::numeric_limits::quiet_NaN()); - + context__.validate_dims("data initialization", "time", "double", + std::vector{static_cast(n_obs)}); + time = std::vector(n_obs, + std::numeric_limits::quiet_NaN()); current_statement__ = 69; - assign(time, nil_index_list(), context__.vals_r("time"), - "assigning variable time"); + time = context__.vals_r("time"); current_statement__ = 70; - validate_non_negative_index("ind_id", "n_obs", n_obs); + stan::math::validate_non_negative_index("ind_id", "n_obs", n_obs); current_statement__ = 71; - context__.validate_dims("data initialization","ind_id","int", - context__.to_vec(n_obs)); + context__.validate_dims("data initialization", "ind_id", "int", + std::vector{static_cast(n_obs)}); ind_id = std::vector(n_obs, std::numeric_limits::min()); - current_statement__ = 71; - assign(ind_id, nil_index_list(), context__.vals_i("ind_id"), - "assigning variable ind_id"); + ind_id = context__.vals_i("ind_id"); current_statement__ = 72; - validate_non_negative_index("y_0_obs", "n_ind", n_ind); + stan::math::validate_non_negative_index("y_0_obs", "n_ind", n_ind); current_statement__ = 73; - context__.validate_dims("data initialization","y_0_obs","double", - context__.to_vec(n_ind)); - y_0_obs = std::vector(n_ind, std::numeric_limits::quiet_NaN()); - + context__.validate_dims("data initialization", "y_0_obs", "double", + std::vector{static_cast(n_ind)}); + y_0_obs = std::vector(n_ind, + std::numeric_limits::quiet_NaN()); current_statement__ = 73; - assign(y_0_obs, nil_index_list(), context__.vals_r("y_0_obs"), - "assigning variable y_0_obs"); + y_0_obs = context__.vals_r("y_0_obs"); current_statement__ = 74; - validate_non_negative_index("ind_y_0", "n_ind", n_ind); + stan::math::validate_non_negative_index("ind_y_0", "n_ind", n_ind); current_statement__ = 75; - validate_non_negative_index("ind_max_growth", "n_ind", n_ind); + stan::math::validate_non_negative_index("ind_max_growth", "n_ind", + n_ind); current_statement__ = 76; - validate_non_negative_index("ind_diameter_at_max_growth", "n_ind", - n_ind); + stan::math::validate_non_negative_index("ind_diameter_at_max_growth", + "n_ind", n_ind); current_statement__ = 77; - validate_non_negative_index("ind_k", "n_ind", n_ind); + stan::math::validate_non_negative_index("ind_k", "n_ind", n_ind); current_statement__ = 78; - validate_non_negative_index("y_hat", "n_obs", n_obs); + stan::math::validate_non_negative_index("y_hat", "n_obs", n_obs); current_statement__ = 79; - validate_non_negative_index("Delta_hat", "n_obs", n_obs); - } catch (const std::exception& e) { - stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); - } - num_params_r__ = 0U; - - try { - num_params_r__ += n_ind; - num_params_r__ += n_ind; - num_params_r__ += n_ind; - num_params_r__ += n_ind; - num_params_r__ += 1; - num_params_r__ += 1; - num_params_r__ += 1; - num_params_r__ += 1; - num_params_r__ += 1; - num_params_r__ += 1; - num_params_r__ += 1; + stan::math::validate_non_negative_index("Delta_hat", "n_obs", n_obs); } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } + num_params_r__ = n_ind + n_ind + n_ind + n_ind + 1 + 1 + 1 + 1 + 1 + 1 + + 1; + } + inline std::string model_name() const final { + return "model_canham_multi_ind"; } - template * = nullptr, stan::require_vector_like_vt* = nullptr> - inline stan::scalar_type_t log_prob_impl(VecR& params_r__, - VecI& params_i__, - std::ostream* pstream__ = nullptr) const { + inline std::vector model_compile_info() const noexcept { + return std::vector{"stanc_version = stanc3 v2.32.2", + "stancflags = --allow-undefined"}; + } + template * = nullptr, + stan::require_vector_like_vt* = nullptr> + inline stan::scalar_type_t + log_prob_impl(VecR& params_r__, VecI& params_i__, std::ostream* + pstream__ = nullptr) const { using T__ = stan::scalar_type_t; using local_scalar_t__ = T__; T__ lp__(0.0); stan::math::accumulator lp_accum__; - static const char* function__ = "model_canham_multi_ind_namespace::log_prob"; -(void) function__; // suppress unused var warning - stan::io::reader in__(params_r__, params_i__); + stan::io::deserializer in__(params_r__, params_i__); + int current_statement__ = 0; local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); - (void) DUMMY_VAR__; // suppress unused var warning - + // suppress unused var warning + (void) DUMMY_VAR__; + static constexpr const char* function__ = + "model_canham_multi_ind_namespace::log_prob"; + // suppress unused var warning + (void) function__; try { - std::vector ind_y_0; - ind_y_0 = std::vector(n_ind, DUMMY_VAR__); - - current_statement__ = 1; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 1; - assign(ind_y_0, cons_list(index_uni(sym1__), nil_index_list()), - in__.scalar(), "assigning variable ind_y_0");} + std::vector ind_y_0 = + std::vector(n_ind, DUMMY_VAR__); current_statement__ = 1; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 1; - if (jacobian__) { - current_statement__ = 1; - assign(ind_y_0, cons_list(index_uni(sym1__), nil_index_list()), - stan::math::lb_constrain(ind_y_0[(sym1__ - 1)], 0, lp__), - "assigning variable ind_y_0"); - } else { - current_statement__ = 1; - assign(ind_y_0, cons_list(index_uni(sym1__), nil_index_list()), - stan::math::lb_constrain(ind_y_0[(sym1__ - 1)], 0), - "assigning variable ind_y_0"); - }} - std::vector ind_max_growth; - ind_max_growth = std::vector(n_ind, DUMMY_VAR__); - - current_statement__ = 2; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 2; - assign(ind_max_growth, - cons_list(index_uni(sym1__), nil_index_list()), in__.scalar(), - "assigning variable ind_max_growth");} + ind_y_0 = in__.template read_constrain_lb< + std::vector, jacobian__>(0, lp__, n_ind); + std::vector ind_max_growth = + std::vector(n_ind, DUMMY_VAR__); current_statement__ = 2; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 2; - if (jacobian__) { - current_statement__ = 2; - assign(ind_max_growth, - cons_list(index_uni(sym1__), nil_index_list()), - stan::math::lb_constrain(ind_max_growth[(sym1__ - 1)], 0, lp__), - "assigning variable ind_max_growth"); - } else { - current_statement__ = 2; - assign(ind_max_growth, - cons_list(index_uni(sym1__), nil_index_list()), - stan::math::lb_constrain(ind_max_growth[(sym1__ - 1)], 0), - "assigning variable ind_max_growth"); - }} - std::vector ind_diameter_at_max_growth; - ind_diameter_at_max_growth = std::vector(n_ind, DUMMY_VAR__); - - current_statement__ = 3; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 3; - assign(ind_diameter_at_max_growth, - cons_list(index_uni(sym1__), nil_index_list()), in__.scalar(), - "assigning variable ind_diameter_at_max_growth");} + ind_max_growth = in__.template read_constrain_lb< + std::vector, jacobian__>(0, lp__, + n_ind); + std::vector ind_diameter_at_max_growth = + std::vector(n_ind, DUMMY_VAR__); current_statement__ = 3; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 3; - if (jacobian__) { - current_statement__ = 3; - assign(ind_diameter_at_max_growth, - cons_list(index_uni(sym1__), nil_index_list()), - stan::math::lb_constrain( - ind_diameter_at_max_growth[(sym1__ - 1)], 0, lp__), - "assigning variable ind_diameter_at_max_growth"); - } else { - current_statement__ = 3; - assign(ind_diameter_at_max_growth, - cons_list(index_uni(sym1__), nil_index_list()), - stan::math::lb_constrain( - ind_diameter_at_max_growth[(sym1__ - 1)], 0), - "assigning variable ind_diameter_at_max_growth"); - }} - std::vector ind_k; - ind_k = std::vector(n_ind, DUMMY_VAR__); - - current_statement__ = 4; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 4; - assign(ind_k, cons_list(index_uni(sym1__), nil_index_list()), - in__.scalar(), "assigning variable ind_k");} + ind_diameter_at_max_growth = in__.template read_constrain_lb< + std::vector, + jacobian__>(0, lp__, n_ind); + std::vector ind_k = + std::vector(n_ind, DUMMY_VAR__); current_statement__ = 4; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 4; - if (jacobian__) { - current_statement__ = 4; - assign(ind_k, cons_list(index_uni(sym1__), nil_index_list()), - stan::math::lb_constrain(ind_k[(sym1__ - 1)], 0, lp__), - "assigning variable ind_k"); - } else { - current_statement__ = 4; - assign(ind_k, cons_list(index_uni(sym1__), nil_index_list()), - stan::math::lb_constrain(ind_k[(sym1__ - 1)], 0), - "assigning variable ind_k"); - }} - local_scalar_t__ species_max_growth_mean; - species_max_growth_mean = DUMMY_VAR__; - + ind_k = in__.template read_constrain_lb, + jacobian__>(0, lp__, n_ind); + local_scalar_t__ species_max_growth_mean = DUMMY_VAR__; current_statement__ = 5; - species_max_growth_mean = in__.scalar(); - local_scalar_t__ species_max_growth_sd; - species_max_growth_sd = DUMMY_VAR__; - + species_max_growth_mean = in__.template read(); + local_scalar_t__ species_max_growth_sd = DUMMY_VAR__; current_statement__ = 6; - species_max_growth_sd = in__.scalar(); - current_statement__ = 6; - if (jacobian__) { - current_statement__ = 6; - species_max_growth_sd = stan::math::lb_constrain( - species_max_growth_sd, 0, lp__); - } else { - current_statement__ = 6; - species_max_growth_sd = stan::math::lb_constrain( - species_max_growth_sd, 0); - } - local_scalar_t__ species_diameter_at_max_growth_mean; - species_diameter_at_max_growth_mean = DUMMY_VAR__; - + species_max_growth_sd = in__.template read_constrain_lb< + local_scalar_t__, jacobian__>(0, lp__); + local_scalar_t__ species_diameter_at_max_growth_mean = DUMMY_VAR__; current_statement__ = 7; - species_diameter_at_max_growth_mean = in__.scalar(); - local_scalar_t__ species_diameter_at_max_growth_sd; - species_diameter_at_max_growth_sd = DUMMY_VAR__; - + species_diameter_at_max_growth_mean = in__.template read< + local_scalar_t__>(); + local_scalar_t__ species_diameter_at_max_growth_sd = DUMMY_VAR__; current_statement__ = 8; - species_diameter_at_max_growth_sd = in__.scalar(); - current_statement__ = 8; - if (jacobian__) { - current_statement__ = 8; - species_diameter_at_max_growth_sd = stan::math::lb_constrain( - species_diameter_at_max_growth_sd, - 0, lp__); - } else { - current_statement__ = 8; - species_diameter_at_max_growth_sd = stan::math::lb_constrain( - species_diameter_at_max_growth_sd, - 0); - } - local_scalar_t__ species_k_mean; - species_k_mean = DUMMY_VAR__; - + species_diameter_at_max_growth_sd = in__.template read_constrain_lb< + local_scalar_t__, jacobian__>(0, + lp__); + local_scalar_t__ species_k_mean = DUMMY_VAR__; current_statement__ = 9; - species_k_mean = in__.scalar(); - local_scalar_t__ species_k_sd; - species_k_sd = DUMMY_VAR__; - + species_k_mean = in__.template read(); + local_scalar_t__ species_k_sd = DUMMY_VAR__; current_statement__ = 10; - species_k_sd = in__.scalar(); - current_statement__ = 10; - if (jacobian__) { - current_statement__ = 10; - species_k_sd = stan::math::lb_constrain(species_k_sd, 0, lp__); - } else { - current_statement__ = 10; - species_k_sd = stan::math::lb_constrain(species_k_sd, 0); - } - local_scalar_t__ global_error_sigma; - global_error_sigma = DUMMY_VAR__; - + species_k_sd = in__.template read_constrain_lb(0, lp__); + local_scalar_t__ global_error_sigma = DUMMY_VAR__; current_statement__ = 11; - global_error_sigma = in__.scalar(); - current_statement__ = 11; - if (jacobian__) { - current_statement__ = 11; - global_error_sigma = stan::math::lb_constrain(global_error_sigma, 0, - lp__); - } else { - current_statement__ = 11; - global_error_sigma = stan::math::lb_constrain(global_error_sigma, 0); - } + global_error_sigma = in__.template read_constrain_lb(0, lp__); { current_statement__ = 33; - validate_non_negative_index("y_hat", "n_obs", n_obs); - std::vector y_hat; - y_hat = std::vector(n_obs, DUMMY_VAR__); - - Eigen::Matrix pars; - pars = Eigen::Matrix(3); - stan::math::fill(pars, DUMMY_VAR__); - + stan::math::validate_non_negative_index("y_hat", "n_obs", n_obs); + std::vector y_hat = + std::vector(n_obs, DUMMY_VAR__); + Eigen::Matrix pars = + Eigen::Matrix::Constant(3, DUMMY_VAR__); current_statement__ = 48; for (int i = 1; i <= n_obs; ++i) { current_statement__ = 36; - assign(pars, cons_list(index_uni(1), nil_index_list()), - ind_max_growth[(ind_id[(i - 1)] - 1)], "assigning variable pars"); + stan::model::assign(pars, + stan::model::rvalue(ind_max_growth, "ind_max_growth", + stan::model::index_uni( + stan::model::rvalue(ind_id, "ind_id", + stan::model::index_uni(i)))), "assigning variable pars", + stan::model::index_uni(1)); current_statement__ = 37; - assign(pars, cons_list(index_uni(2), nil_index_list()), - ind_diameter_at_max_growth[(ind_id[(i - 1)] - 1)], - "assigning variable pars"); + stan::model::assign(pars, + stan::model::rvalue(ind_diameter_at_max_growth, + "ind_diameter_at_max_growth", + stan::model::index_uni( + stan::model::rvalue(ind_id, "ind_id", + stan::model::index_uni(i)))), "assigning variable pars", + stan::model::index_uni(2)); current_statement__ = 38; - assign(pars, cons_list(index_uni(3), nil_index_list()), - ind_k[(ind_id[(i - 1)] - 1)], "assigning variable pars"); + stan::model::assign(pars, + stan::model::rvalue(ind_k, "ind_k", + stan::model::index_uni( + stan::model::rvalue(ind_id, "ind_id", + stan::model::index_uni(i)))), "assigning variable pars", + stan::model::index_uni(3)); current_statement__ = 41; - if (logical_eq(obs_index[(i - 1)], 1)) { + if (stan::math::logical_eq( + stan::model::rvalue(obs_index, "obs_index", + stan::model::index_uni(i)), 1)) { current_statement__ = 39; - assign(y_hat, cons_list(index_uni(i), nil_index_list()), - ind_y_0[(ind_id[(i - 1)] - 1)], "assigning variable y_hat"); - } + stan::model::assign(y_hat, + stan::model::rvalue(ind_y_0, "ind_y_0", + stan::model::index_uni( + stan::model::rvalue(ind_id, "ind_id", + stan::model::index_uni(i)))), "assigning variable y_hat", + stan::model::index_uni(i)); + } current_statement__ = 46; - if (logical_lt(i, n_obs)) { + if (stan::math::logical_lt(i, n_obs)) { current_statement__ = 44; - if (logical_eq(ind_id[((i + 1) - 1)], ind_id[(i - 1)])) { + if (stan::math::logical_eq( + stan::model::rvalue(ind_id, "ind_id", + stan::model::index_uni((i + 1))), + stan::model::rvalue(ind_id, "ind_id", + stan::model::index_uni(i)))) { current_statement__ = 42; - assign(y_hat, cons_list(index_uni((i + 1)), nil_index_list()), - rk4(y_hat[(i - 1)], pars, - (time[((i + 1) - 1)] - time[(i - 1)]), - step_size, pstream__), "assigning variable y_hat"); - } - } } + stan::model::assign(y_hat, + rk4( + stan::model::rvalue(y_hat, "y_hat", + stan::model::index_uni(i)), pars, + (stan::model::rvalue(time, "time", + stan::model::index_uni((i + 1))) - + stan::model::rvalue(time, "time", stan::model::index_uni(i))), + step_size, pstream__), "assigning variable y_hat", + stan::model::index_uni((i + 1))); + } + } + } current_statement__ = 49; - lp_accum__.add( - normal_lpdf(y_obs, y_hat, global_error_sigma)); + lp_accum__.add(stan::math::normal_lpdf(y_obs, y_hat, + global_error_sigma)); current_statement__ = 50; - lp_accum__.add( - normal_lpdf(ind_y_0, y_0_obs, global_error_sigma)); + lp_accum__.add(stan::math::normal_lpdf(ind_y_0, y_0_obs, + global_error_sigma)); current_statement__ = 51; - lp_accum__.add( - lognormal_lpdf(ind_max_growth, species_max_growth_mean, - species_max_growth_sd)); + lp_accum__.add(stan::math::lognormal_lpdf(ind_max_growth, + species_max_growth_mean, species_max_growth_sd)); current_statement__ = 52; - lp_accum__.add( - lognormal_lpdf(ind_diameter_at_max_growth, - species_diameter_at_max_growth_mean, - species_diameter_at_max_growth_sd)); + lp_accum__.add(stan::math::lognormal_lpdf( + ind_diameter_at_max_growth, + species_diameter_at_max_growth_mean, + species_diameter_at_max_growth_sd)); current_statement__ = 53; - lp_accum__.add( - lognormal_lpdf(ind_k, species_k_mean, species_k_sd)); + lp_accum__.add(stan::math::lognormal_lpdf(ind_k, + species_k_mean, species_k_sd)); current_statement__ = 54; - lp_accum__.add(normal_lpdf(species_max_growth_mean, 0, 1)); + lp_accum__.add(stan::math::normal_lpdf( + species_max_growth_mean, 0, 1)); current_statement__ = 55; - lp_accum__.add(cauchy_lpdf(species_max_growth_sd, 0, 1)); + lp_accum__.add(stan::math::cauchy_lpdf( + species_max_growth_sd, 0, 1)); current_statement__ = 56; - lp_accum__.add( - normal_lpdf(species_diameter_at_max_growth_mean, 0, 1)); + lp_accum__.add(stan::math::normal_lpdf( + species_diameter_at_max_growth_mean, 0, 1)); current_statement__ = 57; - lp_accum__.add( - cauchy_lpdf(species_diameter_at_max_growth_sd, 0, 1)); + lp_accum__.add(stan::math::cauchy_lpdf( + species_diameter_at_max_growth_sd, 0, 1)); current_statement__ = 58; - lp_accum__.add(normal_lpdf(species_k_mean, 0, 1)); + lp_accum__.add(stan::math::normal_lpdf(species_k_mean, 0, 1)); current_statement__ = 59; - lp_accum__.add(cauchy_lpdf(species_k_sd, 0, 1)); + lp_accum__.add(stan::math::cauchy_lpdf(species_k_sd, 0, 1)); current_statement__ = 60; - lp_accum__.add(cauchy_lpdf(global_error_sigma, 0, 2)); + lp_accum__.add(stan::math::cauchy_lpdf(global_error_sigma, + 0, 2)); } } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } lp_accum__.add(lp__); return lp_accum__.sum(); - } // log_prob_impl() - - template * = nullptr, stan::require_vector_like_vt* = nullptr, stan::require_std_vector_vt* = nullptr> - inline void write_array_impl(RNG& base_rng__, VecR& params_r__, - VecI& params_i__, VecVar& vars__, - const bool emit_transformed_parameters__ = true, - const bool emit_generated_quantities__ = true, - std::ostream* pstream__ = nullptr) const { + } + template * = nullptr, stan::require_vector_like_vt* = nullptr, stan::require_vector_vt* = nullptr> + inline void + write_array_impl(RNG& base_rng__, VecR& params_r__, VecI& params_i__, + VecVar& vars__, const bool + emit_transformed_parameters__ = true, const bool + emit_generated_quantities__ = true, std::ostream* + pstream__ = nullptr) const { using local_scalar_t__ = double; - vars__.resize(0); - stan::io::reader in__(params_r__, params_i__); - static const char* function__ = "model_canham_multi_ind_namespace::write_array"; -(void) function__; // suppress unused var warning - (void) function__; // suppress unused var warning + stan::io::deserializer in__(params_r__, params_i__); + stan::io::serializer out__(vars__); + static constexpr bool propto__ = true; + // suppress unused var warning + (void) propto__; double lp__ = 0.0; - (void) lp__; // dummy to suppress unused var warning + // suppress unused var warning + (void) lp__; + int current_statement__ = 0; stan::math::accumulator lp_accum__; local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); - (void) DUMMY_VAR__; // suppress unused var warning - + // suppress unused var warning + (void) DUMMY_VAR__; + constexpr bool jacobian__ = false; + static constexpr const char* function__ = + "model_canham_multi_ind_namespace::write_array"; + // suppress unused var warning + (void) function__; try { - std::vector ind_y_0; - ind_y_0 = std::vector(n_ind, std::numeric_limits::quiet_NaN()); - + std::vector ind_y_0 = + std::vector(n_ind, std::numeric_limits::quiet_NaN()); current_statement__ = 1; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 1; - assign(ind_y_0, cons_list(index_uni(sym1__), nil_index_list()), - in__.scalar(), "assigning variable ind_y_0");} - current_statement__ = 1; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 1; - assign(ind_y_0, cons_list(index_uni(sym1__), nil_index_list()), - stan::math::lb_constrain(ind_y_0[(sym1__ - 1)], 0), - "assigning variable ind_y_0");} - std::vector ind_max_growth; - ind_max_growth = std::vector(n_ind, std::numeric_limits::quiet_NaN()); - - current_statement__ = 2; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 2; - assign(ind_max_growth, - cons_list(index_uni(sym1__), nil_index_list()), in__.scalar(), - "assigning variable ind_max_growth");} + ind_y_0 = in__.template read_constrain_lb< + std::vector, jacobian__>(0, lp__, n_ind); + std::vector ind_max_growth = + std::vector(n_ind, std::numeric_limits::quiet_NaN()); current_statement__ = 2; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 2; - assign(ind_max_growth, - cons_list(index_uni(sym1__), nil_index_list()), - stan::math::lb_constrain(ind_max_growth[(sym1__ - 1)], 0), - "assigning variable ind_max_growth");} - std::vector ind_diameter_at_max_growth; - ind_diameter_at_max_growth = std::vector(n_ind, std::numeric_limits::quiet_NaN()); - + ind_max_growth = in__.template read_constrain_lb< + std::vector, jacobian__>(0, lp__, + n_ind); + std::vector ind_diameter_at_max_growth = + std::vector(n_ind, std::numeric_limits::quiet_NaN()); current_statement__ = 3; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 3; - assign(ind_diameter_at_max_growth, - cons_list(index_uni(sym1__), nil_index_list()), in__.scalar(), - "assigning variable ind_diameter_at_max_growth");} - current_statement__ = 3; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 3; - assign(ind_diameter_at_max_growth, - cons_list(index_uni(sym1__), nil_index_list()), - stan::math::lb_constrain(ind_diameter_at_max_growth[(sym1__ - 1)], - 0), "assigning variable ind_diameter_at_max_growth");} - std::vector ind_k; - ind_k = std::vector(n_ind, std::numeric_limits::quiet_NaN()); - - current_statement__ = 4; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 4; - assign(ind_k, cons_list(index_uni(sym1__), nil_index_list()), - in__.scalar(), "assigning variable ind_k");} + ind_diameter_at_max_growth = in__.template read_constrain_lb< + std::vector, + jacobian__>(0, lp__, n_ind); + std::vector ind_k = + std::vector(n_ind, std::numeric_limits::quiet_NaN()); current_statement__ = 4; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 4; - assign(ind_k, cons_list(index_uni(sym1__), nil_index_list()), - stan::math::lb_constrain(ind_k[(sym1__ - 1)], 0), - "assigning variable ind_k");} - double species_max_growth_mean; - species_max_growth_mean = std::numeric_limits::quiet_NaN(); - + ind_k = in__.template read_constrain_lb, + jacobian__>(0, lp__, n_ind); + double species_max_growth_mean = + std::numeric_limits::quiet_NaN(); current_statement__ = 5; - species_max_growth_mean = in__.scalar(); - double species_max_growth_sd; - species_max_growth_sd = std::numeric_limits::quiet_NaN(); - + species_max_growth_mean = in__.template read(); + double species_max_growth_sd = std::numeric_limits::quiet_NaN(); current_statement__ = 6; - species_max_growth_sd = in__.scalar(); - current_statement__ = 6; - species_max_growth_sd = stan::math::lb_constrain(species_max_growth_sd, - 0); - double species_diameter_at_max_growth_mean; - species_diameter_at_max_growth_mean = std::numeric_limits::quiet_NaN(); - + species_max_growth_sd = in__.template read_constrain_lb< + local_scalar_t__, jacobian__>(0, lp__); + double species_diameter_at_max_growth_mean = + std::numeric_limits::quiet_NaN(); current_statement__ = 7; - species_diameter_at_max_growth_mean = in__.scalar(); - double species_diameter_at_max_growth_sd; - species_diameter_at_max_growth_sd = std::numeric_limits::quiet_NaN(); - - current_statement__ = 8; - species_diameter_at_max_growth_sd = in__.scalar(); + species_diameter_at_max_growth_mean = in__.template read< + local_scalar_t__>(); + double species_diameter_at_max_growth_sd = + std::numeric_limits::quiet_NaN(); current_statement__ = 8; - species_diameter_at_max_growth_sd = stan::math::lb_constrain( - species_diameter_at_max_growth_sd, - 0); - double species_k_mean; - species_k_mean = std::numeric_limits::quiet_NaN(); - + species_diameter_at_max_growth_sd = in__.template read_constrain_lb< + local_scalar_t__, jacobian__>(0, + lp__); + double species_k_mean = std::numeric_limits::quiet_NaN(); current_statement__ = 9; - species_k_mean = in__.scalar(); - double species_k_sd; - species_k_sd = std::numeric_limits::quiet_NaN(); - - current_statement__ = 10; - species_k_sd = in__.scalar(); + species_k_mean = in__.template read(); + double species_k_sd = std::numeric_limits::quiet_NaN(); current_statement__ = 10; - species_k_sd = stan::math::lb_constrain(species_k_sd, 0); - double global_error_sigma; - global_error_sigma = std::numeric_limits::quiet_NaN(); - + species_k_sd = in__.template read_constrain_lb(0, lp__); + double global_error_sigma = std::numeric_limits::quiet_NaN(); current_statement__ = 11; - global_error_sigma = in__.scalar(); - current_statement__ = 11; - global_error_sigma = stan::math::lb_constrain(global_error_sigma, 0); - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - vars__.emplace_back(ind_y_0[(sym1__ - 1)]);} - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - vars__.emplace_back(ind_max_growth[(sym1__ - 1)]);} - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - vars__.emplace_back(ind_diameter_at_max_growth[(sym1__ - 1)]);} - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - vars__.emplace_back(ind_k[(sym1__ - 1)]);} - vars__.emplace_back(species_max_growth_mean); - vars__.emplace_back(species_max_growth_sd); - vars__.emplace_back(species_diameter_at_max_growth_mean); - vars__.emplace_back(species_diameter_at_max_growth_sd); - vars__.emplace_back(species_k_mean); - vars__.emplace_back(species_k_sd); - vars__.emplace_back(global_error_sigma); - if (logical_negation((primitive_value(emit_transformed_parameters__) || - primitive_value(emit_generated_quantities__)))) { + global_error_sigma = in__.template read_constrain_lb(0, lp__); + out__.write(ind_y_0); + out__.write(ind_max_growth); + out__.write(ind_diameter_at_max_growth); + out__.write(ind_k); + out__.write(species_max_growth_mean); + out__.write(species_max_growth_sd); + out__.write(species_diameter_at_max_growth_mean); + out__.write(species_diameter_at_max_growth_sd); + out__.write(species_k_mean); + out__.write(species_k_sd); + out__.write(global_error_sigma); + if (stan::math::logical_negation( + (stan::math::primitive_value(emit_transformed_parameters__) || + stan::math::primitive_value(emit_generated_quantities__)))) { return ; - } - if (logical_negation(emit_generated_quantities__)) { + } + if (stan::math::logical_negation(emit_generated_quantities__)) { return ; - } - std::vector y_hat; - y_hat = std::vector(n_obs, std::numeric_limits::quiet_NaN()); - - std::vector Delta_hat; - Delta_hat = std::vector(n_obs, std::numeric_limits::quiet_NaN()); - - Eigen::Matrix pars; - pars = Eigen::Matrix(3); - stan::math::fill(pars, std::numeric_limits::quiet_NaN()); - + } + std::vector y_hat = + std::vector(n_obs, std::numeric_limits::quiet_NaN()); + std::vector Delta_hat = + std::vector(n_obs, std::numeric_limits::quiet_NaN()); + Eigen::Matrix pars = + Eigen::Matrix::Constant(3, + std::numeric_limits::quiet_NaN()); current_statement__ = 32; for (int i = 1; i <= n_obs; ++i) { current_statement__ = 15; - assign(pars, cons_list(index_uni(1), nil_index_list()), - ind_max_growth[(ind_id[(i - 1)] - 1)], "assigning variable pars"); + stan::model::assign(pars, + stan::model::rvalue(ind_max_growth, "ind_max_growth", + stan::model::index_uni( + stan::model::rvalue(ind_id, "ind_id", stan::model::index_uni(i)))), + "assigning variable pars", stan::model::index_uni(1)); current_statement__ = 16; - assign(pars, cons_list(index_uni(2), nil_index_list()), - ind_diameter_at_max_growth[(ind_id[(i - 1)] - 1)], - "assigning variable pars"); + stan::model::assign(pars, + stan::model::rvalue(ind_diameter_at_max_growth, + "ind_diameter_at_max_growth", + stan::model::index_uni( + stan::model::rvalue(ind_id, "ind_id", stan::model::index_uni(i)))), + "assigning variable pars", stan::model::index_uni(2)); current_statement__ = 17; - assign(pars, cons_list(index_uni(3), nil_index_list()), - ind_k[(ind_id[(i - 1)] - 1)], "assigning variable pars"); + stan::model::assign(pars, + stan::model::rvalue(ind_k, "ind_k", + stan::model::index_uni( + stan::model::rvalue(ind_id, "ind_id", stan::model::index_uni(i)))), + "assigning variable pars", stan::model::index_uni(3)); current_statement__ = 20; - if (logical_eq(obs_index[(i - 1)], 1)) { + if (stan::math::logical_eq( + stan::model::rvalue(obs_index, "obs_index", + stan::model::index_uni(i)), 1)) { current_statement__ = 18; - assign(y_hat, cons_list(index_uni(i), nil_index_list()), - ind_y_0[(ind_id[(i - 1)] - 1)], "assigning variable y_hat"); - } + stan::model::assign(y_hat, + stan::model::rvalue(ind_y_0, "ind_y_0", + stan::model::index_uni( + stan::model::rvalue(ind_id, "ind_id", + stan::model::index_uni(i)))), "assigning variable y_hat", + stan::model::index_uni(i)); + } current_statement__ = 30; - if (logical_lt(i, n_obs)) { + if (stan::math::logical_lt(i, n_obs)) { current_statement__ = 28; - if (logical_eq(ind_id[((i + 1) - 1)], ind_id[(i - 1)])) { + if (stan::math::logical_eq( + stan::model::rvalue(ind_id, "ind_id", + stan::model::index_uni((i + 1))), + stan::model::rvalue(ind_id, "ind_id", + stan::model::index_uni(i)))) { current_statement__ = 25; - assign(y_hat, cons_list(index_uni((i + 1)), nil_index_list()), - rk4(y_hat[(i - 1)], pars, - (time[((i + 1) - 1)] - time[(i - 1)]), step_size, pstream__), - "assigning variable y_hat"); + stan::model::assign(y_hat, + rk4( + stan::model::rvalue(y_hat, "y_hat", stan::model::index_uni(i)), + pars, + (stan::model::rvalue(time, "time", + stan::model::index_uni((i + 1))) - + stan::model::rvalue(time, "time", stan::model::index_uni(i))), + step_size, pstream__), "assigning variable y_hat", + stan::model::index_uni((i + 1))); current_statement__ = 26; - assign(Delta_hat, cons_list(index_uni(i), nil_index_list()), - (y_hat[((i + 1) - 1)] - y_hat[(i - 1)]), - "assigning variable Delta_hat"); + stan::model::assign(Delta_hat, + (stan::model::rvalue(y_hat, "y_hat", + stan::model::index_uni((i + 1))) - + stan::model::rvalue(y_hat, "y_hat", stan::model::index_uni(i))), + "assigning variable Delta_hat", stan::model::index_uni(i)); } else { current_statement__ = 23; - assign(Delta_hat, cons_list(index_uni(i), nil_index_list()), - (DE(y_hat[(i - 1)], pars, pstream__) * - (time[(i - 1)] - time[((i - 1) - 1)])), - "assigning variable Delta_hat"); + stan::model::assign(Delta_hat, + (DE( + stan::model::rvalue(y_hat, "y_hat", + stan::model::index_uni(i)), pars, pstream__) * + (stan::model::rvalue(time, "time", stan::model::index_uni(i)) - + stan::model::rvalue(time, "time", + stan::model::index_uni((i - 1))))), + "assigning variable Delta_hat", stan::model::index_uni(i)); } } else { current_statement__ = 21; - assign(Delta_hat, cons_list(index_uni(i), nil_index_list()), - (DE(y_hat[(i - 1)], pars, pstream__) * - (time[(i - 1)] - time[((i - 1) - 1)])), - "assigning variable Delta_hat"); - }} - for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { - vars__.emplace_back(y_hat[(sym1__ - 1)]);} - for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { - vars__.emplace_back(Delta_hat[(sym1__ - 1)]);} - for (int sym1__ = 1; sym1__ <= 3; ++sym1__) { - vars__.emplace_back(pars[(sym1__ - 1)]);} + stan::model::assign(Delta_hat, + (DE( + stan::model::rvalue(y_hat, "y_hat", stan::model::index_uni(i)), + pars, pstream__) * + (stan::model::rvalue(time, "time", stan::model::index_uni(i)) - + stan::model::rvalue(time, "time", stan::model::index_uni((i - 1))))), + "assigning variable Delta_hat", stan::model::index_uni(i)); + } + } + out__.write(y_hat); + out__.write(Delta_hat); + out__.write(pars); } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } - } // write_array_impl() - - template * = nullptr, stan::require_vector_like_vt* = nullptr> - inline void transform_inits_impl(const stan::io::var_context& context__, - VecI& params_i__, VecVar& vars__, - std::ostream* pstream__ = nullptr) const { + } + template * = nullptr, + stan::require_vector_like_vt* = nullptr> + inline void + unconstrain_array_impl(const VecVar& params_r__, const VecI& params_i__, + VecVar& vars__, std::ostream* pstream__ = nullptr) const { using local_scalar_t__ = double; - vars__.clear(); - vars__.reserve(num_params_r__); - + stan::io::deserializer in__(params_r__, params_i__); + stan::io::serializer out__(vars__); + int current_statement__ = 0; + local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); + // suppress unused var warning + (void) DUMMY_VAR__; try { - int pos__; - pos__ = std::numeric_limits::min(); - + int pos__ = std::numeric_limits::min(); pos__ = 1; - std::vector ind_y_0; - ind_y_0 = std::vector(n_ind, std::numeric_limits::quiet_NaN()); - + std::vector ind_y_0 = + std::vector(n_ind, DUMMY_VAR__); current_statement__ = 1; - assign(ind_y_0, nil_index_list(), context__.vals_r("ind_y_0"), + stan::model::assign(ind_y_0, + in__.read>(n_ind), "assigning variable ind_y_0"); - std::vector ind_y_0_free__; - ind_y_0_free__ = std::vector(n_ind, std::numeric_limits::quiet_NaN()); - - current_statement__ = 1; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 1; - assign(ind_y_0_free__, - cons_list(index_uni(sym1__), nil_index_list()), - stan::math::lb_free(ind_y_0[(sym1__ - 1)], 0), - "assigning variable ind_y_0_free__");} - std::vector ind_max_growth; - ind_max_growth = std::vector(n_ind, std::numeric_limits::quiet_NaN()); - + out__.write_free_lb(0, ind_y_0); + std::vector ind_max_growth = + std::vector(n_ind, DUMMY_VAR__); current_statement__ = 2; - assign(ind_max_growth, nil_index_list(), - context__.vals_r("ind_max_growth"), + stan::model::assign(ind_max_growth, + in__.read>(n_ind), "assigning variable ind_max_growth"); - std::vector ind_max_growth_free__; - ind_max_growth_free__ = std::vector(n_ind, std::numeric_limits::quiet_NaN()); - - current_statement__ = 2; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 2; - assign(ind_max_growth_free__, - cons_list(index_uni(sym1__), nil_index_list()), - stan::math::lb_free(ind_max_growth[(sym1__ - 1)], 0), - "assigning variable ind_max_growth_free__");} - std::vector ind_diameter_at_max_growth; - ind_diameter_at_max_growth = std::vector(n_ind, std::numeric_limits::quiet_NaN()); - + out__.write_free_lb(0, ind_max_growth); + std::vector ind_diameter_at_max_growth = + std::vector(n_ind, DUMMY_VAR__); current_statement__ = 3; - assign(ind_diameter_at_max_growth, nil_index_list(), - context__.vals_r("ind_diameter_at_max_growth"), + stan::model::assign(ind_diameter_at_max_growth, + in__.read>(n_ind), "assigning variable ind_diameter_at_max_growth"); - std::vector ind_diameter_at_max_growth_free__; - ind_diameter_at_max_growth_free__ = std::vector(n_ind, std::numeric_limits::quiet_NaN()); - - current_statement__ = 3; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 3; - assign(ind_diameter_at_max_growth_free__, - cons_list(index_uni(sym1__), nil_index_list()), - stan::math::lb_free(ind_diameter_at_max_growth[(sym1__ - 1)], 0), - "assigning variable ind_diameter_at_max_growth_free__");} - std::vector ind_k; - ind_k = std::vector(n_ind, std::numeric_limits::quiet_NaN()); - + out__.write_free_lb(0, ind_diameter_at_max_growth); + std::vector ind_k = + std::vector(n_ind, DUMMY_VAR__); current_statement__ = 4; - assign(ind_k, nil_index_list(), context__.vals_r("ind_k"), + stan::model::assign(ind_k, + in__.read>(n_ind), "assigning variable ind_k"); - std::vector ind_k_free__; - ind_k_free__ = std::vector(n_ind, std::numeric_limits::quiet_NaN()); - - current_statement__ = 4; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 4; - assign(ind_k_free__, cons_list(index_uni(sym1__), nil_index_list()), - stan::math::lb_free(ind_k[(sym1__ - 1)], 0), - "assigning variable ind_k_free__");} - double species_max_growth_mean; - species_max_growth_mean = std::numeric_limits::quiet_NaN(); - + out__.write_free_lb(0, ind_k); + local_scalar_t__ species_max_growth_mean = DUMMY_VAR__; current_statement__ = 5; - species_max_growth_mean = context__.vals_r("species_max_growth_mean")[ - (1 - 1)]; - double species_max_growth_sd; - species_max_growth_sd = std::numeric_limits::quiet_NaN(); - + species_max_growth_mean = in__.read(); + out__.write(species_max_growth_mean); + local_scalar_t__ species_max_growth_sd = DUMMY_VAR__; current_statement__ = 6; - species_max_growth_sd = context__.vals_r("species_max_growth_sd")[ - (1 - 1)]; - double species_max_growth_sd_free__; - species_max_growth_sd_free__ = std::numeric_limits::quiet_NaN(); - + species_max_growth_sd = in__.read(); + out__.write_free_lb(0, species_max_growth_sd); + local_scalar_t__ species_diameter_at_max_growth_mean = DUMMY_VAR__; + current_statement__ = 7; + species_diameter_at_max_growth_mean = in__.read(); + out__.write(species_diameter_at_max_growth_mean); + local_scalar_t__ species_diameter_at_max_growth_sd = DUMMY_VAR__; + current_statement__ = 8; + species_diameter_at_max_growth_sd = in__.read(); + out__.write_free_lb(0, species_diameter_at_max_growth_sd); + local_scalar_t__ species_k_mean = DUMMY_VAR__; + current_statement__ = 9; + species_k_mean = in__.read(); + out__.write(species_k_mean); + local_scalar_t__ species_k_sd = DUMMY_VAR__; + current_statement__ = 10; + species_k_sd = in__.read(); + out__.write_free_lb(0, species_k_sd); + local_scalar_t__ global_error_sigma = DUMMY_VAR__; + current_statement__ = 11; + global_error_sigma = in__.read(); + out__.write_free_lb(0, global_error_sigma); + } catch (const std::exception& e) { + stan::lang::rethrow_located(e, locations_array__[current_statement__]); + } + } + template * = nullptr> + inline void + transform_inits_impl(const stan::io::var_context& context__, VecVar& + vars__, std::ostream* pstream__ = nullptr) const { + using local_scalar_t__ = double; + stan::io::serializer out__(vars__); + int current_statement__ = 0; + local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); + // suppress unused var warning + (void) DUMMY_VAR__; + try { + current_statement__ = 1; + context__.validate_dims("parameter initialization", "ind_y_0", + "double", std::vector{static_cast(n_ind)}); + current_statement__ = 2; + context__.validate_dims("parameter initialization", "ind_max_growth", + "double", std::vector{static_cast(n_ind)}); + current_statement__ = 3; + context__.validate_dims("parameter initialization", + "ind_diameter_at_max_growth", "double", + std::vector{static_cast(n_ind)}); + current_statement__ = 4; + context__.validate_dims("parameter initialization", "ind_k", "double", + std::vector{static_cast(n_ind)}); + current_statement__ = 5; + context__.validate_dims("parameter initialization", + "species_max_growth_mean", "double", std::vector{}); current_statement__ = 6; - species_max_growth_sd_free__ = stan::math::lb_free( - species_max_growth_sd, 0); - double species_diameter_at_max_growth_mean; - species_diameter_at_max_growth_mean = std::numeric_limits::quiet_NaN(); - + context__.validate_dims("parameter initialization", + "species_max_growth_sd", "double", std::vector{}); current_statement__ = 7; - species_diameter_at_max_growth_mean = context__.vals_r("species_diameter_at_max_growth_mean")[ - (1 - 1)]; - double species_diameter_at_max_growth_sd; - species_diameter_at_max_growth_sd = std::numeric_limits::quiet_NaN(); - + context__.validate_dims("parameter initialization", + "species_diameter_at_max_growth_mean", "double", + std::vector{}); current_statement__ = 8; - species_diameter_at_max_growth_sd = context__.vals_r("species_diameter_at_max_growth_sd")[ - (1 - 1)]; - double species_diameter_at_max_growth_sd_free__; - species_diameter_at_max_growth_sd_free__ = std::numeric_limits::quiet_NaN(); - + context__.validate_dims("parameter initialization", + "species_diameter_at_max_growth_sd", "double", std::vector{}); + current_statement__ = 9; + context__.validate_dims("parameter initialization", "species_k_mean", + "double", std::vector{}); + current_statement__ = 10; + context__.validate_dims("parameter initialization", "species_k_sd", + "double", std::vector{}); + current_statement__ = 11; + context__.validate_dims("parameter initialization", + "global_error_sigma", "double", std::vector{}); + int pos__ = std::numeric_limits::min(); + pos__ = 1; + std::vector ind_y_0 = + std::vector(n_ind, DUMMY_VAR__); + current_statement__ = 1; + ind_y_0 = context__.vals_r("ind_y_0"); + out__.write_free_lb(0, ind_y_0); + std::vector ind_max_growth = + std::vector(n_ind, DUMMY_VAR__); + current_statement__ = 2; + ind_max_growth = context__.vals_r("ind_max_growth"); + out__.write_free_lb(0, ind_max_growth); + std::vector ind_diameter_at_max_growth = + std::vector(n_ind, DUMMY_VAR__); + current_statement__ = 3; + ind_diameter_at_max_growth = context__.vals_r("ind_diameter_at_max_growth"); + out__.write_free_lb(0, ind_diameter_at_max_growth); + std::vector ind_k = + std::vector(n_ind, DUMMY_VAR__); + current_statement__ = 4; + ind_k = context__.vals_r("ind_k"); + out__.write_free_lb(0, ind_k); + local_scalar_t__ species_max_growth_mean = DUMMY_VAR__; + current_statement__ = 5; + species_max_growth_mean = context__.vals_r("species_max_growth_mean")[(1 + - 1)]; + out__.write(species_max_growth_mean); + local_scalar_t__ species_max_growth_sd = DUMMY_VAR__; + current_statement__ = 6; + species_max_growth_sd = context__.vals_r("species_max_growth_sd")[(1 - + 1)]; + out__.write_free_lb(0, species_max_growth_sd); + local_scalar_t__ species_diameter_at_max_growth_mean = DUMMY_VAR__; + current_statement__ = 7; + species_diameter_at_max_growth_mean = context__.vals_r("species_diameter_at_max_growth_mean")[(1 + - 1)]; + out__.write(species_diameter_at_max_growth_mean); + local_scalar_t__ species_diameter_at_max_growth_sd = DUMMY_VAR__; current_statement__ = 8; - species_diameter_at_max_growth_sd_free__ = stan::math::lb_free( - species_diameter_at_max_growth_sd, - 0); - double species_k_mean; - species_k_mean = std::numeric_limits::quiet_NaN(); - + species_diameter_at_max_growth_sd = context__.vals_r("species_diameter_at_max_growth_sd")[(1 + - 1)]; + out__.write_free_lb(0, species_diameter_at_max_growth_sd); + local_scalar_t__ species_k_mean = DUMMY_VAR__; current_statement__ = 9; species_k_mean = context__.vals_r("species_k_mean")[(1 - 1)]; - double species_k_sd; - species_k_sd = std::numeric_limits::quiet_NaN(); - + out__.write(species_k_mean); + local_scalar_t__ species_k_sd = DUMMY_VAR__; current_statement__ = 10; species_k_sd = context__.vals_r("species_k_sd")[(1 - 1)]; - double species_k_sd_free__; - species_k_sd_free__ = std::numeric_limits::quiet_NaN(); - - current_statement__ = 10; - species_k_sd_free__ = stan::math::lb_free(species_k_sd, 0); - double global_error_sigma; - global_error_sigma = std::numeric_limits::quiet_NaN(); - + out__.write_free_lb(0, species_k_sd); + local_scalar_t__ global_error_sigma = DUMMY_VAR__; current_statement__ = 11; global_error_sigma = context__.vals_r("global_error_sigma")[(1 - 1)]; - double global_error_sigma_free__; - global_error_sigma_free__ = std::numeric_limits::quiet_NaN(); - - current_statement__ = 11; - global_error_sigma_free__ = stan::math::lb_free(global_error_sigma, 0); - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - vars__.emplace_back(ind_y_0_free__[(sym1__ - 1)]);} - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - vars__.emplace_back(ind_max_growth_free__[(sym1__ - 1)]);} - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - vars__.emplace_back(ind_diameter_at_max_growth_free__[(sym1__ - 1)]); - } - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - vars__.emplace_back(ind_k_free__[(sym1__ - 1)]);} - vars__.emplace_back(species_max_growth_mean); - vars__.emplace_back(species_max_growth_sd_free__); - vars__.emplace_back(species_diameter_at_max_growth_mean); - vars__.emplace_back(species_diameter_at_max_growth_sd_free__); - vars__.emplace_back(species_k_mean); - vars__.emplace_back(species_k_sd_free__); - vars__.emplace_back(global_error_sigma_free__); + out__.write_free_lb(0, global_error_sigma); } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } - } // transform_inits_impl() - - inline void get_param_names(std::vector& names__) const { - - names__.clear(); - names__.emplace_back("ind_y_0"); - names__.emplace_back("ind_max_growth"); - names__.emplace_back("ind_diameter_at_max_growth"); - names__.emplace_back("ind_k"); - names__.emplace_back("species_max_growth_mean"); - names__.emplace_back("species_max_growth_sd"); - names__.emplace_back("species_diameter_at_max_growth_mean"); - names__.emplace_back("species_diameter_at_max_growth_sd"); - names__.emplace_back("species_k_mean"); - names__.emplace_back("species_k_sd"); - names__.emplace_back("global_error_sigma"); - names__.emplace_back("y_hat"); - names__.emplace_back("Delta_hat"); - names__.emplace_back("pars"); - } // get_param_names() - - inline void get_dims(std::vector>& dimss__) const { - dimss__.clear(); - dimss__.emplace_back(std::vector{static_cast(n_ind)}); - - dimss__.emplace_back(std::vector{static_cast(n_ind)}); - - dimss__.emplace_back(std::vector{static_cast(n_ind)}); - - dimss__.emplace_back(std::vector{static_cast(n_ind)}); - - dimss__.emplace_back(std::vector{}); - - dimss__.emplace_back(std::vector{}); - - dimss__.emplace_back(std::vector{}); - - dimss__.emplace_back(std::vector{}); - - dimss__.emplace_back(std::vector{}); - - dimss__.emplace_back(std::vector{}); - - dimss__.emplace_back(std::vector{}); - - dimss__.emplace_back(std::vector{static_cast(n_obs)}); - - dimss__.emplace_back(std::vector{static_cast(n_obs)}); - - dimss__.emplace_back(std::vector{static_cast(3)}); - - } // get_dims() - - inline void constrained_param_names( - std::vector& param_names__, - bool emit_transformed_parameters__ = true, - bool emit_generated_quantities__ = true) const - final { - + } + inline void + get_param_names(std::vector& names__, const bool + emit_transformed_parameters__ = true, const bool + emit_generated_quantities__ = true) const { + names__ = std::vector{"ind_y_0", "ind_max_growth", + "ind_diameter_at_max_growth", "ind_k", + "species_max_growth_mean", "species_max_growth_sd", + "species_diameter_at_max_growth_mean", + "species_diameter_at_max_growth_sd", "species_k_mean", + "species_k_sd", "global_error_sigma"}; + if (emit_transformed_parameters__) {} + if (emit_generated_quantities__) { + std::vector temp{"y_hat", "Delta_hat", "pars"}; + names__.reserve(names__.size() + temp.size()); + names__.insert(names__.end(), temp.begin(), temp.end()); + } + } + inline void + get_dims(std::vector>& dimss__, const bool + emit_transformed_parameters__ = true, const bool + emit_generated_quantities__ = true) const { + dimss__ = std::vector>{std::vector{static_cast< + size_t>( + n_ind)}, + std::vector{static_cast(n_ind)}, + std::vector{static_cast(n_ind)}, + std::vector{static_cast(n_ind)}, + std::vector{}, std::vector{}, + std::vector{}, std::vector{}, + std::vector{}, std::vector{}, + std::vector{}}; + if (emit_transformed_parameters__) {} + if (emit_generated_quantities__) { + std::vector> + temp{std::vector{static_cast(n_obs)}, + std::vector{static_cast(n_obs)}, + std::vector{static_cast(3)}}; + dimss__.reserve(dimss__.size() + temp.size()); + dimss__.insert(dimss__.end(), temp.begin(), temp.end()); + } + } + inline void + constrained_param_names(std::vector& param_names__, bool + emit_transformed_parameters__ = true, bool + emit_generated_quantities__ = true) const final { for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - { - param_names__.emplace_back(std::string() + "ind_y_0" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "ind_y_0" + '.' + + std::to_string(sym1__)); + } for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - { - param_names__.emplace_back(std::string() + "ind_max_growth" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "ind_max_growth" + '.' + + std::to_string(sym1__)); + } for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - { - param_names__.emplace_back(std::string() + "ind_diameter_at_max_growth" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "ind_diameter_at_max_growth" + + '.' + std::to_string(sym1__)); + } for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - { - param_names__.emplace_back(std::string() + "ind_k" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "ind_k" + '.' + + std::to_string(sym1__)); + } param_names__.emplace_back(std::string() + "species_max_growth_mean"); param_names__.emplace_back(std::string() + "species_max_growth_sd"); - param_names__.emplace_back(std::string() + "species_diameter_at_max_growth_mean"); - param_names__.emplace_back(std::string() + "species_diameter_at_max_growth_sd"); + param_names__.emplace_back(std::string() + + "species_diameter_at_max_growth_mean"); + param_names__.emplace_back(std::string() + + "species_diameter_at_max_growth_sd"); param_names__.emplace_back(std::string() + "species_k_mean"); param_names__.emplace_back(std::string() + "species_k_sd"); param_names__.emplace_back(std::string() + "global_error_sigma"); - if (emit_transformed_parameters__) { - - } - + if (emit_transformed_parameters__) {} if (emit_generated_quantities__) { for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { - { - param_names__.emplace_back(std::string() + "y_hat" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "y_hat" + '.' + + std::to_string(sym1__)); + } for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { - { - param_names__.emplace_back(std::string() + "Delta_hat" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "Delta_hat" + '.' + + std::to_string(sym1__)); + } for (int sym1__ = 1; sym1__ <= 3; ++sym1__) { - { - param_names__.emplace_back(std::string() + "pars" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "pars" + '.' + + std::to_string(sym1__)); + } } - - } // constrained_param_names() - - inline void unconstrained_param_names( - std::vector& param_names__, - bool emit_transformed_parameters__ = true, - bool emit_generated_quantities__ = true) const - final { - + } + inline void + unconstrained_param_names(std::vector& param_names__, bool + emit_transformed_parameters__ = true, bool + emit_generated_quantities__ = true) const final { for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - { - param_names__.emplace_back(std::string() + "ind_y_0" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "ind_y_0" + '.' + + std::to_string(sym1__)); + } for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - { - param_names__.emplace_back(std::string() + "ind_max_growth" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "ind_max_growth" + '.' + + std::to_string(sym1__)); + } for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - { - param_names__.emplace_back(std::string() + "ind_diameter_at_max_growth" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "ind_diameter_at_max_growth" + + '.' + std::to_string(sym1__)); + } for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - { - param_names__.emplace_back(std::string() + "ind_k" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "ind_k" + '.' + + std::to_string(sym1__)); + } param_names__.emplace_back(std::string() + "species_max_growth_mean"); param_names__.emplace_back(std::string() + "species_max_growth_sd"); - param_names__.emplace_back(std::string() + "species_diameter_at_max_growth_mean"); - param_names__.emplace_back(std::string() + "species_diameter_at_max_growth_sd"); + param_names__.emplace_back(std::string() + + "species_diameter_at_max_growth_mean"); + param_names__.emplace_back(std::string() + + "species_diameter_at_max_growth_sd"); param_names__.emplace_back(std::string() + "species_k_mean"); param_names__.emplace_back(std::string() + "species_k_sd"); param_names__.emplace_back(std::string() + "global_error_sigma"); - if (emit_transformed_parameters__) { - - } - + if (emit_transformed_parameters__) {} if (emit_generated_quantities__) { for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { - { - param_names__.emplace_back(std::string() + "y_hat" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "y_hat" + '.' + + std::to_string(sym1__)); + } for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { - { - param_names__.emplace_back(std::string() + "Delta_hat" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "Delta_hat" + '.' + + std::to_string(sym1__)); + } for (int sym1__ = 1; sym1__ <= 3; ++sym1__) { - { - param_names__.emplace_back(std::string() + "pars" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "pars" + '.' + + std::to_string(sym1__)); + } } - - } // unconstrained_param_names() - + } inline std::string get_constrained_sizedtypes() const { - stringstream s__; - s__ << "[{\"name\":\"ind_y_0\",\"type\":{\"name\":\"array\",\"length\":" << n_ind << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"ind_max_growth\",\"type\":{\"name\":\"array\",\"length\":" << n_ind << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"ind_diameter_at_max_growth\",\"type\":{\"name\":\"array\",\"length\":" << n_ind << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"ind_k\",\"type\":{\"name\":\"array\",\"length\":" << n_ind << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"species_max_growth_mean\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_max_growth_sd\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_diameter_at_max_growth_mean\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_diameter_at_max_growth_sd\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_k_mean\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_k_sd\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"global_error_sigma\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"y_hat\",\"type\":{\"name\":\"array\",\"length\":" << n_obs << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"Delta_hat\",\"type\":{\"name\":\"array\",\"length\":" << n_obs << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"pars\",\"type\":{\"name\":\"vector\",\"length\":" << 3 << "},\"block\":\"generated_quantities\"}]"; - return s__.str(); - } // get_constrained_sizedtypes() - + return std::string("[{\"name\":\"ind_y_0\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_ind) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"ind_max_growth\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_ind) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"ind_diameter_at_max_growth\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_ind) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"ind_k\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_ind) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"species_max_growth_mean\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_max_growth_sd\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_diameter_at_max_growth_mean\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_diameter_at_max_growth_sd\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_k_mean\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_k_sd\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"global_error_sigma\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"y_hat\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_obs) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"Delta_hat\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_obs) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"pars\",\"type\":{\"name\":\"vector\",\"length\":" + std::to_string(3) + "},\"block\":\"generated_quantities\"}]"); + } inline std::string get_unconstrained_sizedtypes() const { - stringstream s__; - s__ << "[{\"name\":\"ind_y_0\",\"type\":{\"name\":\"array\",\"length\":" << n_ind << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"ind_max_growth\",\"type\":{\"name\":\"array\",\"length\":" << n_ind << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"ind_diameter_at_max_growth\",\"type\":{\"name\":\"array\",\"length\":" << n_ind << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"ind_k\",\"type\":{\"name\":\"array\",\"length\":" << n_ind << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"species_max_growth_mean\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_max_growth_sd\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_diameter_at_max_growth_mean\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_diameter_at_max_growth_sd\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_k_mean\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_k_sd\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"global_error_sigma\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"y_hat\",\"type\":{\"name\":\"array\",\"length\":" << n_obs << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"Delta_hat\",\"type\":{\"name\":\"array\",\"length\":" << n_obs << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"pars\",\"type\":{\"name\":\"vector\",\"length\":" << 3 << "},\"block\":\"generated_quantities\"}]"; - return s__.str(); - } // get_unconstrained_sizedtypes() - - - // Begin method overload boilerplate - template - inline void write_array(RNG& base_rng, - Eigen::Matrix& params_r, - Eigen::Matrix& vars, - const bool emit_transformed_parameters = true, - const bool emit_generated_quantities = true, - std::ostream* pstream = nullptr) const { - std::vector vars_vec(vars.size()); - std::vector params_i; - write_array_impl(base_rng, params_r, params_i, vars_vec, - emit_transformed_parameters, emit_generated_quantities, pstream); - vars.resize(vars_vec.size()); - for (int i = 0; i < vars.size(); ++i) { - vars.coeffRef(i) = vars_vec[i]; - } - } - template - inline void write_array(RNG& base_rng, std::vector& params_r, - std::vector& params_i, - std::vector& vars, - bool emit_transformed_parameters = true, - bool emit_generated_quantities = true, - std::ostream* pstream = nullptr) const { - write_array_impl(base_rng, params_r, params_i, vars, emit_transformed_parameters, emit_generated_quantities, pstream); - } - template - inline T_ log_prob(Eigen::Matrix& params_r, - std::ostream* pstream = nullptr) const { - Eigen::Matrix params_i; - return log_prob_impl(params_r, params_i, pstream); - } - template - inline T__ log_prob(std::vector& params_r, - std::vector& params_i, - std::ostream* pstream = nullptr) const { - return log_prob_impl(params_r, params_i, pstream); - } - - inline void transform_inits(const stan::io::var_context& context, - Eigen::Matrix& params_r, - std::ostream* pstream = nullptr) const final { - std::vector params_r_vec(params_r.size()); - std::vector params_i; - transform_inits_impl(context, params_i, params_r_vec, pstream); - params_r.resize(params_r_vec.size()); - for (int i = 0; i < params_r.size(); ++i) { - params_r.coeffRef(i) = params_r_vec[i]; - } - } - inline void transform_inits(const stan::io::var_context& context, - std::vector& params_i, - std::vector& vars, - std::ostream* pstream = nullptr) const final { - transform_inits_impl(context, params_i, vars, pstream); - } + return std::string("[{\"name\":\"ind_y_0\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_ind) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"ind_max_growth\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_ind) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"ind_diameter_at_max_growth\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_ind) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"ind_k\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_ind) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"species_max_growth_mean\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_max_growth_sd\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_diameter_at_max_growth_mean\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_diameter_at_max_growth_sd\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_k_mean\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_k_sd\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"global_error_sigma\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"y_hat\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_obs) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"Delta_hat\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_obs) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"pars\",\"type\":{\"name\":\"vector\",\"length\":" + std::to_string(3) + "},\"block\":\"generated_quantities\"}]"); + } + // Begin method overload boilerplate + template inline void + write_array(RNG& base_rng, Eigen::Matrix& params_r, + Eigen::Matrix& vars, const bool + emit_transformed_parameters = true, const bool + emit_generated_quantities = true, std::ostream* + pstream = nullptr) const { + const size_t num_params__ = ((((((((((n_ind + n_ind) + n_ind) + n_ind) + + 1) + 1) + 1) + 1) + 1) + 1) + 1); + const size_t num_transformed = emit_transformed_parameters * (0); + const size_t num_gen_quantities = emit_generated_quantities * (((n_obs + + n_obs) + 3)); + const size_t num_to_write = num_params__ + num_transformed + + num_gen_quantities; + std::vector params_i; + vars = Eigen::Matrix::Constant(num_to_write, + std::numeric_limits::quiet_NaN()); + write_array_impl(base_rng, params_r, params_i, vars, + emit_transformed_parameters, emit_generated_quantities, pstream); + } + template inline void + write_array(RNG& base_rng, std::vector& params_r, std::vector& + params_i, std::vector& vars, bool + emit_transformed_parameters = true, bool + emit_generated_quantities = true, std::ostream* + pstream = nullptr) const { + const size_t num_params__ = ((((((((((n_ind + n_ind) + n_ind) + n_ind) + + 1) + 1) + 1) + 1) + 1) + 1) + 1); + const size_t num_transformed = emit_transformed_parameters * (0); + const size_t num_gen_quantities = emit_generated_quantities * (((n_obs + + n_obs) + 3)); + const size_t num_to_write = num_params__ + num_transformed + + num_gen_quantities; + vars = std::vector(num_to_write, + std::numeric_limits::quiet_NaN()); + write_array_impl(base_rng, params_r, params_i, vars, + emit_transformed_parameters, emit_generated_quantities, pstream); + } + template inline T_ + log_prob(Eigen::Matrix& params_r, std::ostream* pstream = nullptr) const { + Eigen::Matrix params_i; + return log_prob_impl(params_r, params_i, pstream); + } + template inline T_ + log_prob(std::vector& params_r, std::vector& params_i, + std::ostream* pstream = nullptr) const { + return log_prob_impl(params_r, params_i, pstream); + } + inline void + transform_inits(const stan::io::var_context& context, + Eigen::Matrix& params_r, std::ostream* + pstream = nullptr) const final { + std::vector params_r_vec(params_r.size()); + std::vector params_i; + transform_inits(context, params_i, params_r_vec, pstream); + params_r = Eigen::Map>(params_r_vec.data(), + params_r_vec.size()); + } + inline void + transform_inits(const stan::io::var_context& context, std::vector& + params_i, std::vector& vars, std::ostream* + pstream__ = nullptr) const { + vars.resize(num_params_r__); + transform_inits_impl(context, vars, pstream__); + } + inline void + unconstrain_array(const std::vector& params_constrained, + std::vector& params_unconstrained, std::ostream* + pstream = nullptr) const { + const std::vector params_i; + params_unconstrained = std::vector(num_params_r__, + std::numeric_limits::quiet_NaN()); + unconstrain_array_impl(params_constrained, params_i, + params_unconstrained, pstream); + } + inline void + unconstrain_array(const Eigen::Matrix& params_constrained, + Eigen::Matrix& params_unconstrained, + std::ostream* pstream = nullptr) const { + const std::vector params_i; + params_unconstrained = Eigen::Matrix::Constant(num_params_r__, + std::numeric_limits::quiet_NaN()); + unconstrain_array_impl(params_constrained, params_i, + params_unconstrained, pstream); + } }; } using stan_model = model_canham_multi_ind_namespace::model_canham_multi_ind; #ifndef USING_R // Boilerplate -stan::model::model_base& new_model( - stan::io::var_context& data_context, - unsigned int seed, - std::ostream* msg_stream) { +stan::model::model_base& +new_model(stan::io::var_context& data_context, unsigned int seed, + std::ostream* msg_stream) { stan_model* m = new stan_model(data_context, seed, msg_stream); return *m; } diff --git a/src/stanExports_canham_single_ind.h b/src/stanExports_canham_single_ind.h index 3d4417c..7b18ede 100644 --- a/src/stanExports_canham_single_ind.h +++ b/src/stanExports_canham_single_ind.h @@ -21,205 +21,171 @@ #define USE_STANC3 #endif #include -// Code generated by stanc v2.26.1-4-gd72b68b7-dirty +// Code generated by stanc v2.32.2 #include namespace model_canham_single_ind_namespace { -inline void validate_positive_index(const char* var_name, const char* expr, - int val) { - if (val < 1) { - std::stringstream msg; - msg << "Found dimension size less than one in simplex declaration" - << "; variable=" << var_name << "; dimension size expression=" << expr - << "; expression value=" << val; - std::string msg_str(msg.str()); - throw std::invalid_argument(msg_str.c_str()); - } -} -inline void validate_unit_vector_index(const char* var_name, const char* expr, - int val) { - if (val <= 1) { - std::stringstream msg; - if (val == 1) { - msg << "Found dimension size one in unit vector declaration." - << " One-dimensional unit vector is discrete" - << " but the target distribution must be continuous." - << " variable=" << var_name << "; dimension size expression=" << expr; - } else { - msg << "Found dimension size less than one in unit vector declaration" - << "; variable=" << var_name << "; dimension size expression=" << expr - << "; expression value=" << val; - } - std::string msg_str(msg.str()); - throw std::invalid_argument(msg_str.c_str()); - } -} -using std::istream; -using std::string; -using std::stringstream; -using std::vector; -using std::pow; -using stan::io::dump; -using stan::math::lgamma; using stan::model::model_base_crtp; -using stan::model::rvalue; -using stan::model::cons_list; -using stan::model::index_uni; -using stan::model::index_max; -using stan::model::index_min; -using stan::model::index_min_max; -using stan::model::index_multi; -using stan::model::index_omni; -using stan::model::nil_index_list; using namespace stan::math; -using stan::math::pow; stan::math::profile_map profiles__; -static int current_statement__= 0; -static const std::vector locations_array__ = {" (found before start of program)", - " (in 'canham_single_ind', line 52, column 2 to column 24)", - " (in 'canham_single_ind', line 53, column 2 to column 31)", - " (in 'canham_single_ind', line 54, column 2 to column 43)", - " (in 'canham_single_ind', line 55, column 2 to column 22)", - " (in 'canham_single_ind', line 57, column 2 to column 35)", - " (in 'canham_single_ind', line 87, column 2 to column 20)", - " (in 'canham_single_ind', line 88, column 2 to column 24)", - " (in 'canham_single_ind', line 89, column 2 to column 17)", - " (in 'canham_single_ind', line 90, column 2 to column 27)", - " (in 'canham_single_ind', line 91, column 2 to column 39)", - " (in 'canham_single_ind', line 92, column 2 to column 18)", - " (in 'canham_single_ind', line 95, column 6 to column 25)", - " (in 'canham_single_ind', line 94, column 23 to line 96, column 5)", - " (in 'canham_single_ind', line 94, column 4 to line 96, column 5)", - " (in 'canham_single_ind', line 102, column 6 to column 62)", - " (in 'canham_single_ind', line 101, column 11 to line 103, column 5)", - " (in 'canham_single_ind', line 99, column 6 to column 73)", - " (in 'canham_single_ind', line 100, column 6 to column 43)", - " (in 'canham_single_ind', line 97, column 17 to line 101, column 5)", - " (in 'canham_single_ind', line 97, column 4 to line 103, column 5)", - " (in 'canham_single_ind', line 93, column 19 to line 104, column 3)", - " (in 'canham_single_ind', line 93, column 2 to line 104, column 3)", - " (in 'canham_single_ind', line 61, column 13 to column 18)", - " (in 'canham_single_ind', line 61, column 2 to column 20)", - " (in 'canham_single_ind', line 62, column 2 to column 17)", - " (in 'canham_single_ind', line 63, column 2 to column 27)", - " (in 'canham_single_ind', line 64, column 2 to column 39)", - " (in 'canham_single_ind', line 65, column 2 to column 18)", - " (in 'canham_single_ind', line 68, column 6 to column 25)", - " (in 'canham_single_ind', line 67, column 23 to line 69, column 5)", - " (in 'canham_single_ind', line 67, column 4 to line 69, column 5)", - " (in 'canham_single_ind', line 72, column 6 to column 73)", - " (in 'canham_single_ind', line 70, column 17 to line 73, column 5)", - " (in 'canham_single_ind', line 70, column 4 to line 73, column 5)", - " (in 'canham_single_ind', line 66, column 19 to line 74, column 3)", - " (in 'canham_single_ind', line 66, column 2 to line 74, column 3)", - " (in 'canham_single_ind', line 76, column 2 to column 44)", - " (in 'canham_single_ind', line 79, column 2 to column 48)", - " (in 'canham_single_ind', line 80, column 2 to column 34)", - " (in 'canham_single_ind', line 81, column 2 to column 46)", - " (in 'canham_single_ind', line 82, column 2 to column 25)", - " (in 'canham_single_ind', line 84, column 2 to column 34)", - " (in 'canham_single_ind', line 42, column 2 to column 17)", - " (in 'canham_single_ind', line 43, column 2 to column 12)", - " (in 'canham_single_ind', line 44, column 13 to column 18)", - " (in 'canham_single_ind', line 44, column 2 to column 20)", - " (in 'canham_single_ind', line 45, column 16 to column 21)", - " (in 'canham_single_ind', line 45, column 2 to column 23)", - " (in 'canham_single_ind', line 46, column 12 to column 17)", - " (in 'canham_single_ind', line 46, column 2 to column 19)", - " (in 'canham_single_ind', line 47, column 2 to column 15)", - " (in 'canham_single_ind', line 87, column 13 to column 18)", - " (in 'canham_single_ind', line 88, column 17 to column 22)", - " (in 'canham_single_ind', line 6, column 4 to line 7, column 51)", - " (in 'canham_single_ind', line 5, column 30 to line 8, column 3)", - " (in 'canham_single_ind', line 10, column 4 to column 12)", - " (in 'canham_single_ind', line 11, column 4 to column 12)", - " (in 'canham_single_ind', line 12, column 4 to column 12)", - " (in 'canham_single_ind', line 13, column 4 to column 12)", - " (in 'canham_single_ind', line 14, column 4 to column 15)", - " (in 'canham_single_ind', line 15, column 4 to column 21)", - " (in 'canham_single_ind', line 16, column 4 to column 37)", - " (in 'canham_single_ind', line 17, column 4 to column 37)", - " (in 'canham_single_ind', line 18, column 4 to column 33)", - " (in 'canham_single_ind', line 19, column 4 to column 67)", - " (in 'canham_single_ind', line 20, column 4 to column 17)", - " (in 'canham_single_ind', line 9, column 51 to line 21, column 3)", - " (in 'canham_single_ind', line 23, column 4 to column 14)", - " (in 'canham_single_ind', line 24, column 4 to column 18)", - " (in 'canham_single_ind', line 25, column 4 to column 15)", - " (in 'canham_single_ind', line 26, column 4 to column 24)", - " (in 'canham_single_ind', line 27, column 4 to column 17)", - " (in 'canham_single_ind', line 28, column 4 to column 14)", - " (in 'canham_single_ind', line 31, column 6 to column 59)", - " (in 'canham_single_ind', line 33, column 6 to column 52)", - " (in 'canham_single_ind', line 35, column 6 to column 43)", - " (in 'canham_single_ind', line 29, column 30 to line 36, column 5)", - " (in 'canham_single_ind', line 29, column 4 to line 36, column 5)", - " (in 'canham_single_ind', line 37, column 4 to column 17)", - " (in 'canham_single_ind', line 22, column 62 to line 38, column 3)"}; -template -stan::promote_args_t> +static constexpr std::array locations_array__ = + {" (found before start of program)", + " (in 'string', line 52, column 2 to column 24)", + " (in 'string', line 53, column 2 to column 31)", + " (in 'string', line 54, column 2 to column 43)", + " (in 'string', line 55, column 2 to column 22)", + " (in 'string', line 57, column 2 to column 35)", + " (in 'string', line 87, column 2 to column 20)", + " (in 'string', line 88, column 2 to column 24)", + " (in 'string', line 89, column 2 to column 17)", + " (in 'string', line 90, column 2 to column 27)", + " (in 'string', line 91, column 2 to column 39)", + " (in 'string', line 92, column 2 to column 18)", + " (in 'string', line 95, column 6 to column 25)", + " (in 'string', line 94, column 23 to line 96, column 5)", + " (in 'string', line 94, column 4 to line 96, column 5)", + " (in 'string', line 102, column 6 to column 62)", + " (in 'string', line 101, column 11 to line 103, column 5)", + " (in 'string', line 99, column 6 to column 73)", + " (in 'string', line 100, column 6 to column 43)", + " (in 'string', line 97, column 17 to line 101, column 5)", + " (in 'string', line 97, column 4 to line 103, column 5)", + " (in 'string', line 93, column 19 to line 104, column 3)", + " (in 'string', line 93, column 2 to line 104, column 3)", + " (in 'string', line 61, column 13 to column 18)", + " (in 'string', line 61, column 2 to column 20)", + " (in 'string', line 62, column 2 to column 17)", + " (in 'string', line 63, column 2 to column 27)", + " (in 'string', line 64, column 2 to column 39)", + " (in 'string', line 65, column 2 to column 18)", + " (in 'string', line 68, column 6 to column 25)", + " (in 'string', line 67, column 23 to line 69, column 5)", + " (in 'string', line 67, column 4 to line 69, column 5)", + " (in 'string', line 72, column 6 to column 73)", + " (in 'string', line 70, column 17 to line 73, column 5)", + " (in 'string', line 70, column 4 to line 73, column 5)", + " (in 'string', line 66, column 19 to line 74, column 3)", + " (in 'string', line 66, column 2 to line 74, column 3)", + " (in 'string', line 76, column 2 to column 44)", + " (in 'string', line 79, column 2 to column 48)", + " (in 'string', line 80, column 2 to column 34)", + " (in 'string', line 81, column 2 to column 46)", + " (in 'string', line 82, column 2 to column 25)", + " (in 'string', line 84, column 2 to column 34)", + " (in 'string', line 42, column 2 to column 17)", + " (in 'string', line 43, column 2 to column 12)", + " (in 'string', line 44, column 13 to column 18)", + " (in 'string', line 44, column 2 to column 20)", + " (in 'string', line 45, column 16 to column 21)", + " (in 'string', line 45, column 2 to column 23)", + " (in 'string', line 46, column 12 to column 17)", + " (in 'string', line 46, column 2 to column 19)", + " (in 'string', line 47, column 2 to column 15)", + " (in 'string', line 87, column 13 to column 18)", + " (in 'string', line 88, column 17 to column 22)", + " (in 'string', line 6, column 4 to line 7, column 51)", + " (in 'string', line 5, column 30 to line 8, column 3)", + " (in 'string', line 10, column 4 to column 12)", + " (in 'string', line 11, column 4 to column 12)", + " (in 'string', line 12, column 4 to column 12)", + " (in 'string', line 13, column 4 to column 12)", + " (in 'string', line 14, column 4 to column 15)", + " (in 'string', line 15, column 4 to column 21)", + " (in 'string', line 16, column 4 to column 37)", + " (in 'string', line 17, column 4 to column 37)", + " (in 'string', line 18, column 4 to column 33)", + " (in 'string', line 19, column 4 to column 67)", + " (in 'string', line 20, column 4 to column 17)", + " (in 'string', line 9, column 51 to line 21, column 3)", + " (in 'string', line 23, column 4 to column 14)", + " (in 'string', line 24, column 4 to column 18)", + " (in 'string', line 25, column 4 to column 15)", + " (in 'string', line 26, column 4 to column 24)", + " (in 'string', line 27, column 4 to column 17)", + " (in 'string', line 28, column 4 to column 14)", + " (in 'string', line 31, column 6 to column 59)", + " (in 'string', line 33, column 6 to column 52)", + " (in 'string', line 35, column 6 to column 43)", + " (in 'string', line 29, column 30 to line 36, column 5)", + " (in 'string', line 29, column 4 to line 36, column 5)", + " (in 'string', line 37, column 4 to column 17)", + " (in 'string', line 22, column 62 to line 38, column 3)"}; +template , + stan::is_col_vector, + stan::is_vt_not_complex>* = nullptr> +stan::promote_args_t> +DE(const T0__& y, const T1__& pars_arg__, std::ostream* pstream__); +template , + stan::is_col_vector, + stan::is_vt_not_complex, + stan::is_stan_scalar>* = nullptr> +stan::promote_args_t, T2__> +rk4_step(const T0__& y, const T1__& pars_arg__, const T2__& interval, + std::ostream* pstream__); +template , + stan::is_col_vector, + stan::is_vt_not_complex, + stan::is_stan_scalar, + stan::is_stan_scalar>* = nullptr> +stan::promote_args_t, T2__, T3__> +rk4(const T0__& y, const T1__& pars_arg__, const T2__& interval, const T3__& + step_size, std::ostream* pstream__); +template , + stan::is_col_vector, + stan::is_vt_not_complex>*> +stan::promote_args_t> DE(const T0__& y, const T1__& pars_arg__, std::ostream* pstream__) { using local_scalar_t__ = stan::promote_args_t>; - const auto& pars = to_ref(pars_arg__); - const static bool propto__ = true; + stan::base_type_t>; + int current_statement__ = 0; + const auto& pars = stan::math::to_ref(pars_arg__); + static constexpr bool propto__ = true; + // suppress unused var warning (void) propto__; local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); - (void) DUMMY_VAR__; // suppress unused var warning - + // suppress unused var warning + (void) DUMMY_VAR__; try { current_statement__ = 54; - return (pars[(1 - 1)] * - stan::math::exp( - (-0.5 * - pow((stan::math::log((y / pars[(2 - 1)])) / pars[(3 - 1)]), - 2)))); + return (stan::model::rvalue(pars, "pars", stan::model::index_uni(1)) * + stan::math::exp((-0.5 * + stan::math::pow( + (stan::math::log((y / + stan::model::rvalue(pars, "pars", stan::model::index_uni(2)))) + / + stan::model::rvalue(pars, "pars", stan::model::index_uni(3))), + 2)))); } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } - -} -struct DE_functor__ { -template -stan::promote_args_t> -operator()(const T0__& y, const T1__& pars, std::ostream* pstream__) const -{ -return DE(y, pars, pstream__); } -}; -template -stan::promote_args_t, -T2__> +template , + stan::is_col_vector, + stan::is_vt_not_complex, + stan::is_stan_scalar>*> +stan::promote_args_t, T2__> rk4_step(const T0__& y, const T1__& pars_arg__, const T2__& interval, std::ostream* pstream__) { using local_scalar_t__ = stan::promote_args_t, - T2__>; - const auto& pars = to_ref(pars_arg__); - const static bool propto__ = true; + stan::base_type_t, T2__>; + int current_statement__ = 0; + const auto& pars = stan::math::to_ref(pars_arg__); + static constexpr bool propto__ = true; + // suppress unused var warning (void) propto__; local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); - (void) DUMMY_VAR__; // suppress unused var warning - + // suppress unused var warning + (void) DUMMY_VAR__; try { - local_scalar_t__ k1; - k1 = DUMMY_VAR__; - - local_scalar_t__ k2; - k2 = DUMMY_VAR__; - - local_scalar_t__ k3; - k3 = DUMMY_VAR__; - - local_scalar_t__ k4; - k4 = DUMMY_VAR__; - - local_scalar_t__ y_hat; - y_hat = DUMMY_VAR__; - + local_scalar_t__ k1 = DUMMY_VAR__; + local_scalar_t__ k2 = DUMMY_VAR__; + local_scalar_t__ k3 = DUMMY_VAR__; + local_scalar_t__ k4 = DUMMY_VAR__; + local_scalar_t__ y_hat = DUMMY_VAR__; current_statement__ = 61; k1 = DE(y, pars, pstream__); current_statement__ = 62; @@ -229,65 +195,51 @@ rk4_step(const T0__& y, const T1__& pars_arg__, const T2__& interval, current_statement__ = 64; k4 = DE((y + (interval * k3)), pars, pstream__); current_statement__ = 65; - y_hat = (y + - (((1.0 / 6.0) * (((k1 + (2.0 * k2)) + (2.0 * k3)) + k4)) * - interval)); + y_hat = (y + (((1.0 / 6.0) * (((k1 + (2.0 * k2)) + (2.0 * k3)) + k4)) * + interval)); current_statement__ = 66; return y_hat; } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } - -} -struct rk4_step_functor__ { -template -stan::promote_args_t, -T2__> -operator()(const T0__& y, const T1__& pars, const T2__& interval, - std::ostream* pstream__) const -{ -return rk4_step(y, pars, interval, pstream__); } -}; -template -stan::promote_args_t, T2__, -T3__> -rk4(const T0__& y, const T1__& pars_arg__, const T2__& interval, - const T3__& step_size, std::ostream* pstream__) { +template , + stan::is_col_vector, + stan::is_vt_not_complex, + stan::is_stan_scalar, + stan::is_stan_scalar>*> +stan::promote_args_t, T2__, T3__> +rk4(const T0__& y, const T1__& pars_arg__, const T2__& interval, const T3__& + step_size, std::ostream* pstream__) { using local_scalar_t__ = stan::promote_args_t, - T2__, - T3__>; - const auto& pars = to_ref(pars_arg__); - const static bool propto__ = true; + stan::base_type_t, T2__, T3__>; + int current_statement__ = 0; + const auto& pars = stan::math::to_ref(pars_arg__); + static constexpr bool propto__ = true; + // suppress unused var warning (void) propto__; local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); - (void) DUMMY_VAR__; // suppress unused var warning - + // suppress unused var warning + (void) DUMMY_VAR__; try { - int steps; - steps = std::numeric_limits::min(); - - local_scalar_t__ duration; - duration = DUMMY_VAR__; - - local_scalar_t__ y_hat; - y_hat = DUMMY_VAR__; - - local_scalar_t__ step_size_temp; - step_size_temp = DUMMY_VAR__; - + int steps = std::numeric_limits::min(); + local_scalar_t__ duration = DUMMY_VAR__; + local_scalar_t__ y_hat = DUMMY_VAR__; + local_scalar_t__ step_size_temp = DUMMY_VAR__; current_statement__ = 72; duration = 0; current_statement__ = 73; y_hat = y; current_statement__ = 78; - while (logical_lt(duration, interval)) { + while (stan::math::logical_lt(duration, interval)) { current_statement__ = 74; - step_size_temp = min((Eigen::Matrix(2) << - step_size, (interval - duration)).finished()); + step_size_temp = stan::math::min( + (Eigen::Matrix(2) << + step_size, + (interval + - + duration)).finished()); current_statement__ = 75; y_hat = rk4_step(y_hat, pars, step_size_temp, pstream__); current_statement__ = 76; @@ -297,21 +249,8 @@ rk4(const T0__& y, const T1__& pars_arg__, const T2__& interval, return y_hat; } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } - } -struct rk4_functor__ { -template -stan::promote_args_t, T2__, -T3__> -operator()(const T0__& y, const T1__& pars, const T2__& interval, - const T3__& step_size, std::ostream* pstream__) const -{ -return rk4(y, pars, interval, step_size, pstream__); -} -}; #include class model_canham_single_ind final : public model_base_crtp { private: @@ -321,626 +260,588 @@ class model_canham_single_ind final : public model_base_crtp obs_index; std::vector time; double y_0_obs; - public: - ~model_canham_single_ind() { } - - inline std::string model_name() const final { return "model_canham_single_ind"; } - inline std::vector model_compile_info() const noexcept { - return std::vector{"stanc_version = stanc3 v2.26.1-4-gd72b68b7-dirty", "stancflags = "}; - } - - - model_canham_single_ind(stan::io::var_context& context__, - unsigned int random_seed__ = 0, - std::ostream* pstream__ = nullptr) : model_base_crtp(0) { - using local_scalar_t__ = double ; - boost::ecuyer1988 base_rng__ = - stan::services::util::create_rng(random_seed__, 0); - (void) base_rng__; // suppress unused var warning - static const char* function__ = "model_canham_single_ind_namespace::model_canham_single_ind"; - (void) function__; // suppress unused var warning + ~model_canham_single_ind() {} + model_canham_single_ind(stan::io::var_context& context__, unsigned int + random_seed__ = 0, std::ostream* + pstream__ = nullptr) : model_base_crtp(0) { + int current_statement__ = 0; + using local_scalar_t__ = double; + boost::ecuyer1988 base_rng__ = + stan::services::util::create_rng(random_seed__, 0); + // suppress unused var warning + (void) base_rng__; + static constexpr const char* function__ = + "model_canham_single_ind_namespace::model_canham_single_ind"; + // suppress unused var warning + (void) function__; local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); - (void) DUMMY_VAR__; // suppress unused var warning - + // suppress unused var warning + (void) DUMMY_VAR__; try { - int pos__; - pos__ = std::numeric_limits::min(); - + int pos__ = std::numeric_limits::min(); pos__ = 1; current_statement__ = 43; - context__.validate_dims("data initialization","step_size","double", - context__.to_vec()); + context__.validate_dims("data initialization", "step_size", "double", + std::vector{}); step_size = std::numeric_limits::quiet_NaN(); - current_statement__ = 43; step_size = context__.vals_r("step_size")[(1 - 1)]; current_statement__ = 44; - context__.validate_dims("data initialization","n_obs","int", - context__.to_vec()); + context__.validate_dims("data initialization", "n_obs", "int", + std::vector{}); n_obs = std::numeric_limits::min(); - current_statement__ = 44; n_obs = context__.vals_i("n_obs")[(1 - 1)]; current_statement__ = 45; - validate_non_negative_index("y_obs", "n_obs", n_obs); + stan::math::validate_non_negative_index("y_obs", "n_obs", n_obs); current_statement__ = 46; - context__.validate_dims("data initialization","y_obs","double", - context__.to_vec(n_obs)); - y_obs = std::vector(n_obs, std::numeric_limits::quiet_NaN()); - + context__.validate_dims("data initialization", "y_obs", "double", + std::vector{static_cast(n_obs)}); + y_obs = std::vector(n_obs, + std::numeric_limits::quiet_NaN()); current_statement__ = 46; - assign(y_obs, nil_index_list(), context__.vals_r("y_obs"), - "assigning variable y_obs"); + y_obs = context__.vals_r("y_obs"); current_statement__ = 47; - validate_non_negative_index("obs_index", "n_obs", n_obs); + stan::math::validate_non_negative_index("obs_index", "n_obs", n_obs); current_statement__ = 48; - context__.validate_dims("data initialization","obs_index","int", - context__.to_vec(n_obs)); + context__.validate_dims("data initialization", "obs_index", "int", + std::vector{static_cast(n_obs)}); obs_index = std::vector(n_obs, std::numeric_limits::min()); - current_statement__ = 48; - assign(obs_index, nil_index_list(), context__.vals_i("obs_index"), - "assigning variable obs_index"); + obs_index = context__.vals_i("obs_index"); current_statement__ = 49; - validate_non_negative_index("time", "n_obs", n_obs); + stan::math::validate_non_negative_index("time", "n_obs", n_obs); current_statement__ = 50; - context__.validate_dims("data initialization","time","double", - context__.to_vec(n_obs)); - time = std::vector(n_obs, std::numeric_limits::quiet_NaN()); - + context__.validate_dims("data initialization", "time", "double", + std::vector{static_cast(n_obs)}); + time = std::vector(n_obs, + std::numeric_limits::quiet_NaN()); current_statement__ = 50; - assign(time, nil_index_list(), context__.vals_r("time"), - "assigning variable time"); + time = context__.vals_r("time"); current_statement__ = 51; - context__.validate_dims("data initialization","y_0_obs","double", - context__.to_vec()); + context__.validate_dims("data initialization", "y_0_obs", "double", + std::vector{}); y_0_obs = std::numeric_limits::quiet_NaN(); - current_statement__ = 51; y_0_obs = context__.vals_r("y_0_obs")[(1 - 1)]; current_statement__ = 52; - validate_non_negative_index("y_hat", "n_obs", n_obs); + stan::math::validate_non_negative_index("y_hat", "n_obs", n_obs); current_statement__ = 53; - validate_non_negative_index("Delta_hat", "n_obs", n_obs); + stan::math::validate_non_negative_index("Delta_hat", "n_obs", n_obs); } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); - } - num_params_r__ = 0U; - - try { - num_params_r__ += 1; - num_params_r__ += 1; - num_params_r__ += 1; - num_params_r__ += 1; - num_params_r__ += 1; - } catch (const std::exception& e) { - stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } + num_params_r__ = 1 + 1 + 1 + 1 + 1; + } + inline std::string model_name() const final { + return "model_canham_single_ind"; } - template * = nullptr, stan::require_vector_like_vt* = nullptr> - inline stan::scalar_type_t log_prob_impl(VecR& params_r__, - VecI& params_i__, - std::ostream* pstream__ = nullptr) const { + inline std::vector model_compile_info() const noexcept { + return std::vector{"stanc_version = stanc3 v2.32.2", + "stancflags = --allow-undefined"}; + } + template * = nullptr, + stan::require_vector_like_vt* = nullptr> + inline stan::scalar_type_t + log_prob_impl(VecR& params_r__, VecI& params_i__, std::ostream* + pstream__ = nullptr) const { using T__ = stan::scalar_type_t; using local_scalar_t__ = T__; T__ lp__(0.0); stan::math::accumulator lp_accum__; - static const char* function__ = "model_canham_single_ind_namespace::log_prob"; -(void) function__; // suppress unused var warning - stan::io::reader in__(params_r__, params_i__); + stan::io::deserializer in__(params_r__, params_i__); + int current_statement__ = 0; local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); - (void) DUMMY_VAR__; // suppress unused var warning - + // suppress unused var warning + (void) DUMMY_VAR__; + static constexpr const char* function__ = + "model_canham_single_ind_namespace::log_prob"; + // suppress unused var warning + (void) function__; try { - local_scalar_t__ ind_y_0; - ind_y_0 = DUMMY_VAR__; - - current_statement__ = 1; - ind_y_0 = in__.scalar(); + local_scalar_t__ ind_y_0 = DUMMY_VAR__; current_statement__ = 1; - if (jacobian__) { - current_statement__ = 1; - ind_y_0 = stan::math::lb_constrain(ind_y_0, 0, lp__); - } else { - current_statement__ = 1; - ind_y_0 = stan::math::lb_constrain(ind_y_0, 0); - } - local_scalar_t__ ind_max_growth; - ind_max_growth = DUMMY_VAR__; - - current_statement__ = 2; - ind_max_growth = in__.scalar(); + ind_y_0 = in__.template read_constrain_lb(0, lp__); + local_scalar_t__ ind_max_growth = DUMMY_VAR__; current_statement__ = 2; - if (jacobian__) { - current_statement__ = 2; - ind_max_growth = stan::math::lb_constrain(ind_max_growth, 0, lp__); - } else { - current_statement__ = 2; - ind_max_growth = stan::math::lb_constrain(ind_max_growth, 0); - } - local_scalar_t__ ind_diameter_at_max_growth; - ind_diameter_at_max_growth = DUMMY_VAR__; - + ind_max_growth = in__.template read_constrain_lb(0, lp__); + local_scalar_t__ ind_diameter_at_max_growth = DUMMY_VAR__; current_statement__ = 3; - ind_diameter_at_max_growth = in__.scalar(); - current_statement__ = 3; - if (jacobian__) { - current_statement__ = 3; - ind_diameter_at_max_growth = stan::math::lb_constrain( - ind_diameter_at_max_growth, 0, lp__); - } else { - current_statement__ = 3; - ind_diameter_at_max_growth = stan::math::lb_constrain( - ind_diameter_at_max_growth, 0); - } - local_scalar_t__ ind_k; - ind_k = DUMMY_VAR__; - + ind_diameter_at_max_growth = in__.template read_constrain_lb< + local_scalar_t__, jacobian__>(0, lp__); + local_scalar_t__ ind_k = DUMMY_VAR__; current_statement__ = 4; - ind_k = in__.scalar(); - current_statement__ = 4; - if (jacobian__) { - current_statement__ = 4; - ind_k = stan::math::lb_constrain(ind_k, 0, lp__); - } else { - current_statement__ = 4; - ind_k = stan::math::lb_constrain(ind_k, 0); - } - local_scalar_t__ global_error_sigma; - global_error_sigma = DUMMY_VAR__; - + ind_k = in__.template read_constrain_lb(0, lp__); + local_scalar_t__ global_error_sigma = DUMMY_VAR__; current_statement__ = 5; - global_error_sigma = in__.scalar(); - current_statement__ = 5; - if (jacobian__) { - current_statement__ = 5; - global_error_sigma = stan::math::lb_constrain(global_error_sigma, 0, - lp__); - } else { - current_statement__ = 5; - global_error_sigma = stan::math::lb_constrain(global_error_sigma, 0); - } + global_error_sigma = in__.template read_constrain_lb(0, lp__); { current_statement__ = 23; - validate_non_negative_index("y_hat", "n_obs", n_obs); - std::vector y_hat; - y_hat = std::vector(n_obs, DUMMY_VAR__); - - Eigen::Matrix pars; - pars = Eigen::Matrix(3); - stan::math::fill(pars, DUMMY_VAR__); - + stan::math::validate_non_negative_index("y_hat", "n_obs", n_obs); + std::vector y_hat = + std::vector(n_obs, DUMMY_VAR__); + Eigen::Matrix pars = + Eigen::Matrix::Constant(3, DUMMY_VAR__); current_statement__ = 26; - assign(pars, cons_list(index_uni(1), nil_index_list()), - ind_max_growth, "assigning variable pars"); + stan::model::assign(pars, ind_max_growth, "assigning variable pars", + stan::model::index_uni(1)); current_statement__ = 27; - assign(pars, cons_list(index_uni(2), nil_index_list()), - ind_diameter_at_max_growth, "assigning variable pars"); + stan::model::assign(pars, ind_diameter_at_max_growth, + "assigning variable pars", stan::model::index_uni(2)); current_statement__ = 28; - assign(pars, cons_list(index_uni(3), nil_index_list()), ind_k, - "assigning variable pars"); + stan::model::assign(pars, ind_k, "assigning variable pars", + stan::model::index_uni(3)); current_statement__ = 36; for (int i = 1; i <= n_obs; ++i) { current_statement__ = 31; - if (logical_eq(obs_index[(i - 1)], 1)) { + if (stan::math::logical_eq( + stan::model::rvalue(obs_index, "obs_index", + stan::model::index_uni(i)), 1)) { current_statement__ = 29; - assign(y_hat, cons_list(index_uni(i), nil_index_list()), ind_y_0, - "assigning variable y_hat"); - } + stan::model::assign(y_hat, ind_y_0, "assigning variable y_hat", + stan::model::index_uni(i)); + } current_statement__ = 34; - if (logical_lt(i, n_obs)) { + if (stan::math::logical_lt(i, n_obs)) { current_statement__ = 32; - assign(y_hat, cons_list(index_uni((i + 1)), nil_index_list()), - rk4(y_hat[(i - 1)], pars, - (time[((i + 1) - 1)] - time[(i - 1)]), step_size, pstream__), - "assigning variable y_hat"); - } } + stan::model::assign(y_hat, + rk4( + stan::model::rvalue(y_hat, "y_hat", stan::model::index_uni(i)), + pars, + (stan::model::rvalue(time, "time", + stan::model::index_uni((i + 1))) - + stan::model::rvalue(time, "time", stan::model::index_uni(i))), + step_size, pstream__), "assigning variable y_hat", + stan::model::index_uni((i + 1))); + } + } current_statement__ = 37; - lp_accum__.add( - normal_lpdf(y_obs, y_hat, global_error_sigma)); + lp_accum__.add(stan::math::normal_lpdf(y_obs, y_hat, + global_error_sigma)); current_statement__ = 38; - lp_accum__.add( - normal_lpdf(ind_y_0, y_0_obs, global_error_sigma)); + lp_accum__.add(stan::math::normal_lpdf(ind_y_0, y_0_obs, + global_error_sigma)); current_statement__ = 39; - lp_accum__.add(lognormal_lpdf(ind_max_growth, 0, 1)); + lp_accum__.add(stan::math::lognormal_lpdf(ind_max_growth, + 0, 1)); current_statement__ = 40; - lp_accum__.add( - lognormal_lpdf(ind_diameter_at_max_growth, 3, 1)); + lp_accum__.add(stan::math::lognormal_lpdf( + ind_diameter_at_max_growth, 3, 1)); current_statement__ = 41; - lp_accum__.add(lognormal_lpdf(ind_k, 0, 1)); + lp_accum__.add(stan::math::lognormal_lpdf(ind_k, 0, 1)); current_statement__ = 42; - lp_accum__.add(cauchy_lpdf(global_error_sigma, 0, 5)); + lp_accum__.add(stan::math::cauchy_lpdf(global_error_sigma, + 0, 5)); } } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } lp_accum__.add(lp__); return lp_accum__.sum(); - } // log_prob_impl() - - template * = nullptr, stan::require_vector_like_vt* = nullptr, stan::require_std_vector_vt* = nullptr> - inline void write_array_impl(RNG& base_rng__, VecR& params_r__, - VecI& params_i__, VecVar& vars__, - const bool emit_transformed_parameters__ = true, - const bool emit_generated_quantities__ = true, - std::ostream* pstream__ = nullptr) const { + } + template * = nullptr, stan::require_vector_like_vt* = nullptr, stan::require_vector_vt* = nullptr> + inline void + write_array_impl(RNG& base_rng__, VecR& params_r__, VecI& params_i__, + VecVar& vars__, const bool + emit_transformed_parameters__ = true, const bool + emit_generated_quantities__ = true, std::ostream* + pstream__ = nullptr) const { using local_scalar_t__ = double; - vars__.resize(0); - stan::io::reader in__(params_r__, params_i__); - static const char* function__ = "model_canham_single_ind_namespace::write_array"; -(void) function__; // suppress unused var warning - (void) function__; // suppress unused var warning + stan::io::deserializer in__(params_r__, params_i__); + stan::io::serializer out__(vars__); + static constexpr bool propto__ = true; + // suppress unused var warning + (void) propto__; double lp__ = 0.0; - (void) lp__; // dummy to suppress unused var warning + // suppress unused var warning + (void) lp__; + int current_statement__ = 0; stan::math::accumulator lp_accum__; local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); - (void) DUMMY_VAR__; // suppress unused var warning - + // suppress unused var warning + (void) DUMMY_VAR__; + constexpr bool jacobian__ = false; + static constexpr const char* function__ = + "model_canham_single_ind_namespace::write_array"; + // suppress unused var warning + (void) function__; try { - double ind_y_0; - ind_y_0 = std::numeric_limits::quiet_NaN(); - + double ind_y_0 = std::numeric_limits::quiet_NaN(); current_statement__ = 1; - ind_y_0 = in__.scalar(); - current_statement__ = 1; - ind_y_0 = stan::math::lb_constrain(ind_y_0, 0); - double ind_max_growth; - ind_max_growth = std::numeric_limits::quiet_NaN(); - - current_statement__ = 2; - ind_max_growth = in__.scalar(); + ind_y_0 = in__.template read_constrain_lb(0, lp__); + double ind_max_growth = std::numeric_limits::quiet_NaN(); current_statement__ = 2; - ind_max_growth = stan::math::lb_constrain(ind_max_growth, 0); - double ind_diameter_at_max_growth; - ind_diameter_at_max_growth = std::numeric_limits::quiet_NaN(); - - current_statement__ = 3; - ind_diameter_at_max_growth = in__.scalar(); + ind_max_growth = in__.template read_constrain_lb(0, lp__); + double ind_diameter_at_max_growth = + std::numeric_limits::quiet_NaN(); current_statement__ = 3; - ind_diameter_at_max_growth = stan::math::lb_constrain( - ind_diameter_at_max_growth, 0); - double ind_k; - ind_k = std::numeric_limits::quiet_NaN(); - + ind_diameter_at_max_growth = in__.template read_constrain_lb< + local_scalar_t__, jacobian__>(0, lp__); + double ind_k = std::numeric_limits::quiet_NaN(); current_statement__ = 4; - ind_k = in__.scalar(); - current_statement__ = 4; - ind_k = stan::math::lb_constrain(ind_k, 0); - double global_error_sigma; - global_error_sigma = std::numeric_limits::quiet_NaN(); - - current_statement__ = 5; - global_error_sigma = in__.scalar(); + ind_k = in__.template read_constrain_lb(0, lp__); + double global_error_sigma = std::numeric_limits::quiet_NaN(); current_statement__ = 5; - global_error_sigma = stan::math::lb_constrain(global_error_sigma, 0); - vars__.emplace_back(ind_y_0); - vars__.emplace_back(ind_max_growth); - vars__.emplace_back(ind_diameter_at_max_growth); - vars__.emplace_back(ind_k); - vars__.emplace_back(global_error_sigma); - if (logical_negation((primitive_value(emit_transformed_parameters__) || - primitive_value(emit_generated_quantities__)))) { + global_error_sigma = in__.template read_constrain_lb(0, lp__); + out__.write(ind_y_0); + out__.write(ind_max_growth); + out__.write(ind_diameter_at_max_growth); + out__.write(ind_k); + out__.write(global_error_sigma); + if (stan::math::logical_negation( + (stan::math::primitive_value(emit_transformed_parameters__) || + stan::math::primitive_value(emit_generated_quantities__)))) { return ; - } - if (logical_negation(emit_generated_quantities__)) { + } + if (stan::math::logical_negation(emit_generated_quantities__)) { return ; - } - std::vector y_hat; - y_hat = std::vector(n_obs, std::numeric_limits::quiet_NaN()); - - std::vector Delta_hat; - Delta_hat = std::vector(n_obs, std::numeric_limits::quiet_NaN()); - - Eigen::Matrix pars; - pars = Eigen::Matrix(3); - stan::math::fill(pars, std::numeric_limits::quiet_NaN()); - + } + std::vector y_hat = + std::vector(n_obs, std::numeric_limits::quiet_NaN()); + std::vector Delta_hat = + std::vector(n_obs, std::numeric_limits::quiet_NaN()); + Eigen::Matrix pars = + Eigen::Matrix::Constant(3, + std::numeric_limits::quiet_NaN()); current_statement__ = 9; - assign(pars, cons_list(index_uni(1), nil_index_list()), ind_max_growth, - "assigning variable pars"); + stan::model::assign(pars, ind_max_growth, "assigning variable pars", + stan::model::index_uni(1)); current_statement__ = 10; - assign(pars, cons_list(index_uni(2), nil_index_list()), - ind_diameter_at_max_growth, "assigning variable pars"); + stan::model::assign(pars, ind_diameter_at_max_growth, + "assigning variable pars", stan::model::index_uni(2)); current_statement__ = 11; - assign(pars, cons_list(index_uni(3), nil_index_list()), ind_k, - "assigning variable pars"); + stan::model::assign(pars, ind_k, "assigning variable pars", + stan::model::index_uni(3)); current_statement__ = 22; for (int i = 1; i <= n_obs; ++i) { current_statement__ = 14; - if (logical_eq(obs_index[(i - 1)], 1)) { + if (stan::math::logical_eq( + stan::model::rvalue(obs_index, "obs_index", + stan::model::index_uni(i)), 1)) { current_statement__ = 12; - assign(y_hat, cons_list(index_uni(i), nil_index_list()), ind_y_0, - "assigning variable y_hat"); - } + stan::model::assign(y_hat, ind_y_0, "assigning variable y_hat", + stan::model::index_uni(i)); + } current_statement__ = 20; - if (logical_lt(i, n_obs)) { + if (stan::math::logical_lt(i, n_obs)) { current_statement__ = 17; - assign(y_hat, cons_list(index_uni((i + 1)), nil_index_list()), - rk4(y_hat[(i - 1)], pars, (time[((i + 1) - 1)] - time[(i - 1)]), - step_size, pstream__), "assigning variable y_hat"); + stan::model::assign(y_hat, + rk4( + stan::model::rvalue(y_hat, "y_hat", stan::model::index_uni(i)), + pars, + (stan::model::rvalue(time, "time", + stan::model::index_uni((i + 1))) - + stan::model::rvalue(time, "time", stan::model::index_uni(i))), + step_size, pstream__), "assigning variable y_hat", + stan::model::index_uni((i + 1))); current_statement__ = 18; - assign(Delta_hat, cons_list(index_uni(i), nil_index_list()), - (y_hat[((i + 1) - 1)] - y_hat[(i - 1)]), - "assigning variable Delta_hat"); + stan::model::assign(Delta_hat, + (stan::model::rvalue(y_hat, "y_hat", + stan::model::index_uni((i + 1))) - + stan::model::rvalue(y_hat, "y_hat", stan::model::index_uni(i))), + "assigning variable Delta_hat", stan::model::index_uni(i)); } else { current_statement__ = 15; - assign(Delta_hat, cons_list(index_uni(i), nil_index_list()), - (DE(y_hat[(i - 1)], pars, pstream__) * - (time[(i - 1)] - time[((i - 1) - 1)])), - "assigning variable Delta_hat"); - }} - for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { - vars__.emplace_back(y_hat[(sym1__ - 1)]);} - for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { - vars__.emplace_back(Delta_hat[(sym1__ - 1)]);} - for (int sym1__ = 1; sym1__ <= 3; ++sym1__) { - vars__.emplace_back(pars[(sym1__ - 1)]);} + stan::model::assign(Delta_hat, + (DE( + stan::model::rvalue(y_hat, "y_hat", stan::model::index_uni(i)), + pars, pstream__) * + (stan::model::rvalue(time, "time", stan::model::index_uni(i)) - + stan::model::rvalue(time, "time", stan::model::index_uni((i - 1))))), + "assigning variable Delta_hat", stan::model::index_uni(i)); + } + } + out__.write(y_hat); + out__.write(Delta_hat); + out__.write(pars); } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } - } // write_array_impl() - - template * = nullptr, stan::require_vector_like_vt* = nullptr> - inline void transform_inits_impl(const stan::io::var_context& context__, - VecI& params_i__, VecVar& vars__, - std::ostream* pstream__ = nullptr) const { + } + template * = nullptr, + stan::require_vector_like_vt* = nullptr> + inline void + unconstrain_array_impl(const VecVar& params_r__, const VecI& params_i__, + VecVar& vars__, std::ostream* pstream__ = nullptr) const { using local_scalar_t__ = double; - vars__.clear(); - vars__.reserve(num_params_r__); - + stan::io::deserializer in__(params_r__, params_i__); + stan::io::serializer out__(vars__); + int current_statement__ = 0; + local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); + // suppress unused var warning + (void) DUMMY_VAR__; try { - int pos__; - pos__ = std::numeric_limits::min(); - + int pos__ = std::numeric_limits::min(); pos__ = 1; - double ind_y_0; - ind_y_0 = std::numeric_limits::quiet_NaN(); - + local_scalar_t__ ind_y_0 = DUMMY_VAR__; current_statement__ = 1; - ind_y_0 = context__.vals_r("ind_y_0")[(1 - 1)]; - double ind_y_0_free__; - ind_y_0_free__ = std::numeric_limits::quiet_NaN(); - - current_statement__ = 1; - ind_y_0_free__ = stan::math::lb_free(ind_y_0, 0); - double ind_max_growth; - ind_max_growth = std::numeric_limits::quiet_NaN(); - + ind_y_0 = in__.read(); + out__.write_free_lb(0, ind_y_0); + local_scalar_t__ ind_max_growth = DUMMY_VAR__; current_statement__ = 2; - ind_max_growth = context__.vals_r("ind_max_growth")[(1 - 1)]; - double ind_max_growth_free__; - ind_max_growth_free__ = std::numeric_limits::quiet_NaN(); - + ind_max_growth = in__.read(); + out__.write_free_lb(0, ind_max_growth); + local_scalar_t__ ind_diameter_at_max_growth = DUMMY_VAR__; + current_statement__ = 3; + ind_diameter_at_max_growth = in__.read(); + out__.write_free_lb(0, ind_diameter_at_max_growth); + local_scalar_t__ ind_k = DUMMY_VAR__; + current_statement__ = 4; + ind_k = in__.read(); + out__.write_free_lb(0, ind_k); + local_scalar_t__ global_error_sigma = DUMMY_VAR__; + current_statement__ = 5; + global_error_sigma = in__.read(); + out__.write_free_lb(0, global_error_sigma); + } catch (const std::exception& e) { + stan::lang::rethrow_located(e, locations_array__[current_statement__]); + } + } + template * = nullptr> + inline void + transform_inits_impl(const stan::io::var_context& context__, VecVar& + vars__, std::ostream* pstream__ = nullptr) const { + using local_scalar_t__ = double; + stan::io::serializer out__(vars__); + int current_statement__ = 0; + local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); + // suppress unused var warning + (void) DUMMY_VAR__; + try { + current_statement__ = 1; + context__.validate_dims("parameter initialization", "ind_y_0", + "double", std::vector{}); current_statement__ = 2; - ind_max_growth_free__ = stan::math::lb_free(ind_max_growth, 0); - double ind_diameter_at_max_growth; - ind_diameter_at_max_growth = std::numeric_limits::quiet_NaN(); - + context__.validate_dims("parameter initialization", "ind_max_growth", + "double", std::vector{}); current_statement__ = 3; - ind_diameter_at_max_growth = context__.vals_r("ind_diameter_at_max_growth")[ - (1 - 1)]; - double ind_diameter_at_max_growth_free__; - ind_diameter_at_max_growth_free__ = std::numeric_limits::quiet_NaN(); - + context__.validate_dims("parameter initialization", + "ind_diameter_at_max_growth", "double", std::vector{}); + current_statement__ = 4; + context__.validate_dims("parameter initialization", "ind_k", "double", + std::vector{}); + current_statement__ = 5; + context__.validate_dims("parameter initialization", + "global_error_sigma", "double", std::vector{}); + int pos__ = std::numeric_limits::min(); + pos__ = 1; + local_scalar_t__ ind_y_0 = DUMMY_VAR__; + current_statement__ = 1; + ind_y_0 = context__.vals_r("ind_y_0")[(1 - 1)]; + out__.write_free_lb(0, ind_y_0); + local_scalar_t__ ind_max_growth = DUMMY_VAR__; + current_statement__ = 2; + ind_max_growth = context__.vals_r("ind_max_growth")[(1 - 1)]; + out__.write_free_lb(0, ind_max_growth); + local_scalar_t__ ind_diameter_at_max_growth = DUMMY_VAR__; current_statement__ = 3; - ind_diameter_at_max_growth_free__ = stan::math::lb_free( - ind_diameter_at_max_growth, 0); - double ind_k; - ind_k = std::numeric_limits::quiet_NaN(); - + ind_diameter_at_max_growth = context__.vals_r("ind_diameter_at_max_growth")[(1 + - 1)]; + out__.write_free_lb(0, ind_diameter_at_max_growth); + local_scalar_t__ ind_k = DUMMY_VAR__; current_statement__ = 4; ind_k = context__.vals_r("ind_k")[(1 - 1)]; - double ind_k_free__; - ind_k_free__ = std::numeric_limits::quiet_NaN(); - - current_statement__ = 4; - ind_k_free__ = stan::math::lb_free(ind_k, 0); - double global_error_sigma; - global_error_sigma = std::numeric_limits::quiet_NaN(); - + out__.write_free_lb(0, ind_k); + local_scalar_t__ global_error_sigma = DUMMY_VAR__; current_statement__ = 5; global_error_sigma = context__.vals_r("global_error_sigma")[(1 - 1)]; - double global_error_sigma_free__; - global_error_sigma_free__ = std::numeric_limits::quiet_NaN(); - - current_statement__ = 5; - global_error_sigma_free__ = stan::math::lb_free(global_error_sigma, 0); - vars__.emplace_back(ind_y_0_free__); - vars__.emplace_back(ind_max_growth_free__); - vars__.emplace_back(ind_diameter_at_max_growth_free__); - vars__.emplace_back(ind_k_free__); - vars__.emplace_back(global_error_sigma_free__); + out__.write_free_lb(0, global_error_sigma); } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } - } // transform_inits_impl() - - inline void get_param_names(std::vector& names__) const { - - names__.clear(); - names__.emplace_back("ind_y_0"); - names__.emplace_back("ind_max_growth"); - names__.emplace_back("ind_diameter_at_max_growth"); - names__.emplace_back("ind_k"); - names__.emplace_back("global_error_sigma"); - names__.emplace_back("y_hat"); - names__.emplace_back("Delta_hat"); - names__.emplace_back("pars"); - } // get_param_names() - - inline void get_dims(std::vector>& dimss__) const { - dimss__.clear(); - dimss__.emplace_back(std::vector{}); - - dimss__.emplace_back(std::vector{}); - - dimss__.emplace_back(std::vector{}); - - dimss__.emplace_back(std::vector{}); - - dimss__.emplace_back(std::vector{}); - - dimss__.emplace_back(std::vector{static_cast(n_obs)}); - - dimss__.emplace_back(std::vector{static_cast(n_obs)}); - - dimss__.emplace_back(std::vector{static_cast(3)}); - - } // get_dims() - - inline void constrained_param_names( - std::vector& param_names__, - bool emit_transformed_parameters__ = true, - bool emit_generated_quantities__ = true) const - final { - + } + inline void + get_param_names(std::vector& names__, const bool + emit_transformed_parameters__ = true, const bool + emit_generated_quantities__ = true) const { + names__ = std::vector{"ind_y_0", "ind_max_growth", + "ind_diameter_at_max_growth", "ind_k", "global_error_sigma"}; + if (emit_transformed_parameters__) {} + if (emit_generated_quantities__) { + std::vector temp{"y_hat", "Delta_hat", "pars"}; + names__.reserve(names__.size() + temp.size()); + names__.insert(names__.end(), temp.begin(), temp.end()); + } + } + inline void + get_dims(std::vector>& dimss__, const bool + emit_transformed_parameters__ = true, const bool + emit_generated_quantities__ = true) const { + dimss__ = std::vector>{std::vector{}, + std::vector{}, std::vector{}, + std::vector{}, std::vector{}}; + if (emit_transformed_parameters__) {} + if (emit_generated_quantities__) { + std::vector> + temp{std::vector{static_cast(n_obs)}, + std::vector{static_cast(n_obs)}, + std::vector{static_cast(3)}}; + dimss__.reserve(dimss__.size() + temp.size()); + dimss__.insert(dimss__.end(), temp.begin(), temp.end()); + } + } + inline void + constrained_param_names(std::vector& param_names__, bool + emit_transformed_parameters__ = true, bool + emit_generated_quantities__ = true) const final { param_names__.emplace_back(std::string() + "ind_y_0"); param_names__.emplace_back(std::string() + "ind_max_growth"); param_names__.emplace_back(std::string() + "ind_diameter_at_max_growth"); param_names__.emplace_back(std::string() + "ind_k"); param_names__.emplace_back(std::string() + "global_error_sigma"); - if (emit_transformed_parameters__) { - - } - + if (emit_transformed_parameters__) {} if (emit_generated_quantities__) { for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { - { - param_names__.emplace_back(std::string() + "y_hat" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "y_hat" + '.' + + std::to_string(sym1__)); + } for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { - { - param_names__.emplace_back(std::string() + "Delta_hat" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "Delta_hat" + '.' + + std::to_string(sym1__)); + } for (int sym1__ = 1; sym1__ <= 3; ++sym1__) { - { - param_names__.emplace_back(std::string() + "pars" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "pars" + '.' + + std::to_string(sym1__)); + } } - - } // constrained_param_names() - - inline void unconstrained_param_names( - std::vector& param_names__, - bool emit_transformed_parameters__ = true, - bool emit_generated_quantities__ = true) const - final { - + } + inline void + unconstrained_param_names(std::vector& param_names__, bool + emit_transformed_parameters__ = true, bool + emit_generated_quantities__ = true) const final { param_names__.emplace_back(std::string() + "ind_y_0"); param_names__.emplace_back(std::string() + "ind_max_growth"); param_names__.emplace_back(std::string() + "ind_diameter_at_max_growth"); param_names__.emplace_back(std::string() + "ind_k"); param_names__.emplace_back(std::string() + "global_error_sigma"); - if (emit_transformed_parameters__) { - - } - + if (emit_transformed_parameters__) {} if (emit_generated_quantities__) { for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { - { - param_names__.emplace_back(std::string() + "y_hat" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "y_hat" + '.' + + std::to_string(sym1__)); + } for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { - { - param_names__.emplace_back(std::string() + "Delta_hat" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "Delta_hat" + '.' + + std::to_string(sym1__)); + } for (int sym1__ = 1; sym1__ <= 3; ++sym1__) { - { - param_names__.emplace_back(std::string() + "pars" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "pars" + '.' + + std::to_string(sym1__)); + } } - - } // unconstrained_param_names() - + } inline std::string get_constrained_sizedtypes() const { - stringstream s__; - s__ << "[{\"name\":\"ind_y_0\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"ind_max_growth\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"ind_diameter_at_max_growth\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"ind_k\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"global_error_sigma\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"y_hat\",\"type\":{\"name\":\"array\",\"length\":" << n_obs << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"Delta_hat\",\"type\":{\"name\":\"array\",\"length\":" << n_obs << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"pars\",\"type\":{\"name\":\"vector\",\"length\":" << 3 << "},\"block\":\"generated_quantities\"}]"; - return s__.str(); - } // get_constrained_sizedtypes() - + return std::string("[{\"name\":\"ind_y_0\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"ind_max_growth\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"ind_diameter_at_max_growth\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"ind_k\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"global_error_sigma\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"y_hat\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_obs) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"Delta_hat\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_obs) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"pars\",\"type\":{\"name\":\"vector\",\"length\":" + std::to_string(3) + "},\"block\":\"generated_quantities\"}]"); + } inline std::string get_unconstrained_sizedtypes() const { - stringstream s__; - s__ << "[{\"name\":\"ind_y_0\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"ind_max_growth\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"ind_diameter_at_max_growth\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"ind_k\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"global_error_sigma\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"y_hat\",\"type\":{\"name\":\"array\",\"length\":" << n_obs << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"Delta_hat\",\"type\":{\"name\":\"array\",\"length\":" << n_obs << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"pars\",\"type\":{\"name\":\"vector\",\"length\":" << 3 << "},\"block\":\"generated_quantities\"}]"; - return s__.str(); - } // get_unconstrained_sizedtypes() - - - // Begin method overload boilerplate - template - inline void write_array(RNG& base_rng, - Eigen::Matrix& params_r, - Eigen::Matrix& vars, - const bool emit_transformed_parameters = true, - const bool emit_generated_quantities = true, - std::ostream* pstream = nullptr) const { - std::vector vars_vec(vars.size()); - std::vector params_i; - write_array_impl(base_rng, params_r, params_i, vars_vec, - emit_transformed_parameters, emit_generated_quantities, pstream); - vars.resize(vars_vec.size()); - for (int i = 0; i < vars.size(); ++i) { - vars.coeffRef(i) = vars_vec[i]; - } - } - template - inline void write_array(RNG& base_rng, std::vector& params_r, - std::vector& params_i, - std::vector& vars, - bool emit_transformed_parameters = true, - bool emit_generated_quantities = true, - std::ostream* pstream = nullptr) const { - write_array_impl(base_rng, params_r, params_i, vars, emit_transformed_parameters, emit_generated_quantities, pstream); - } - template - inline T_ log_prob(Eigen::Matrix& params_r, - std::ostream* pstream = nullptr) const { - Eigen::Matrix params_i; - return log_prob_impl(params_r, params_i, pstream); - } - template - inline T__ log_prob(std::vector& params_r, - std::vector& params_i, - std::ostream* pstream = nullptr) const { - return log_prob_impl(params_r, params_i, pstream); - } - - inline void transform_inits(const stan::io::var_context& context, - Eigen::Matrix& params_r, - std::ostream* pstream = nullptr) const final { - std::vector params_r_vec(params_r.size()); - std::vector params_i; - transform_inits_impl(context, params_i, params_r_vec, pstream); - params_r.resize(params_r_vec.size()); - for (int i = 0; i < params_r.size(); ++i) { - params_r.coeffRef(i) = params_r_vec[i]; - } - } - inline void transform_inits(const stan::io::var_context& context, - std::vector& params_i, - std::vector& vars, - std::ostream* pstream = nullptr) const final { - transform_inits_impl(context, params_i, vars, pstream); - } + return std::string("[{\"name\":\"ind_y_0\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"ind_max_growth\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"ind_diameter_at_max_growth\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"ind_k\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"global_error_sigma\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"y_hat\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_obs) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"Delta_hat\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_obs) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"pars\",\"type\":{\"name\":\"vector\",\"length\":" + std::to_string(3) + "},\"block\":\"generated_quantities\"}]"); + } + // Begin method overload boilerplate + template inline void + write_array(RNG& base_rng, Eigen::Matrix& params_r, + Eigen::Matrix& vars, const bool + emit_transformed_parameters = true, const bool + emit_generated_quantities = true, std::ostream* + pstream = nullptr) const { + const size_t num_params__ = ((((1 + 1) + 1) + 1) + 1); + const size_t num_transformed = emit_transformed_parameters * (0); + const size_t num_gen_quantities = emit_generated_quantities * (((n_obs + + n_obs) + 3)); + const size_t num_to_write = num_params__ + num_transformed + + num_gen_quantities; + std::vector params_i; + vars = Eigen::Matrix::Constant(num_to_write, + std::numeric_limits::quiet_NaN()); + write_array_impl(base_rng, params_r, params_i, vars, + emit_transformed_parameters, emit_generated_quantities, pstream); + } + template inline void + write_array(RNG& base_rng, std::vector& params_r, std::vector& + params_i, std::vector& vars, bool + emit_transformed_parameters = true, bool + emit_generated_quantities = true, std::ostream* + pstream = nullptr) const { + const size_t num_params__ = ((((1 + 1) + 1) + 1) + 1); + const size_t num_transformed = emit_transformed_parameters * (0); + const size_t num_gen_quantities = emit_generated_quantities * (((n_obs + + n_obs) + 3)); + const size_t num_to_write = num_params__ + num_transformed + + num_gen_quantities; + vars = std::vector(num_to_write, + std::numeric_limits::quiet_NaN()); + write_array_impl(base_rng, params_r, params_i, vars, + emit_transformed_parameters, emit_generated_quantities, pstream); + } + template inline T_ + log_prob(Eigen::Matrix& params_r, std::ostream* pstream = nullptr) const { + Eigen::Matrix params_i; + return log_prob_impl(params_r, params_i, pstream); + } + template inline T_ + log_prob(std::vector& params_r, std::vector& params_i, + std::ostream* pstream = nullptr) const { + return log_prob_impl(params_r, params_i, pstream); + } + inline void + transform_inits(const stan::io::var_context& context, + Eigen::Matrix& params_r, std::ostream* + pstream = nullptr) const final { + std::vector params_r_vec(params_r.size()); + std::vector params_i; + transform_inits(context, params_i, params_r_vec, pstream); + params_r = Eigen::Map>(params_r_vec.data(), + params_r_vec.size()); + } + inline void + transform_inits(const stan::io::var_context& context, std::vector& + params_i, std::vector& vars, std::ostream* + pstream__ = nullptr) const { + vars.resize(num_params_r__); + transform_inits_impl(context, vars, pstream__); + } + inline void + unconstrain_array(const std::vector& params_constrained, + std::vector& params_unconstrained, std::ostream* + pstream = nullptr) const { + const std::vector params_i; + params_unconstrained = std::vector(num_params_r__, + std::numeric_limits::quiet_NaN()); + unconstrain_array_impl(params_constrained, params_i, + params_unconstrained, pstream); + } + inline void + unconstrain_array(const Eigen::Matrix& params_constrained, + Eigen::Matrix& params_unconstrained, + std::ostream* pstream = nullptr) const { + const std::vector params_i; + params_unconstrained = Eigen::Matrix::Constant(num_params_r__, + std::numeric_limits::quiet_NaN()); + unconstrain_array_impl(params_constrained, params_i, + params_unconstrained, pstream); + } }; } using stan_model = model_canham_single_ind_namespace::model_canham_single_ind; #ifndef USING_R // Boilerplate -stan::model::model_base& new_model( - stan::io::var_context& data_context, - unsigned int seed, - std::ostream* msg_stream) { +stan::model::model_base& +new_model(stan::io::var_context& data_context, unsigned int seed, + std::ostream* msg_stream) { stan_model* m = new stan_model(data_context, seed, msg_stream); return *m; } diff --git a/src/stanExports_constant_multi_ind.h b/src/stanExports_constant_multi_ind.h index 23d9d57..7aa8005 100644 --- a/src/stanExports_constant_multi_ind.h +++ b/src/stanExports_constant_multi_ind.h @@ -21,178 +21,123 @@ #define USE_STANC3 #endif #include -// Code generated by stanc v2.26.1-4-gd72b68b7-dirty +// Code generated by stanc v2.32.2 #include namespace model_constant_multi_ind_namespace { -inline void validate_positive_index(const char* var_name, const char* expr, - int val) { - if (val < 1) { - std::stringstream msg; - msg << "Found dimension size less than one in simplex declaration" - << "; variable=" << var_name << "; dimension size expression=" << expr - << "; expression value=" << val; - std::string msg_str(msg.str()); - throw std::invalid_argument(msg_str.c_str()); - } -} -inline void validate_unit_vector_index(const char* var_name, const char* expr, - int val) { - if (val <= 1) { - std::stringstream msg; - if (val == 1) { - msg << "Found dimension size one in unit vector declaration." - << " One-dimensional unit vector is discrete" - << " but the target distribution must be continuous." - << " variable=" << var_name << "; dimension size expression=" << expr; - } else { - msg << "Found dimension size less than one in unit vector declaration" - << "; variable=" << var_name << "; dimension size expression=" << expr - << "; expression value=" << val; - } - std::string msg_str(msg.str()); - throw std::invalid_argument(msg_str.c_str()); - } -} -using std::istream; -using std::string; -using std::stringstream; -using std::vector; -using std::pow; -using stan::io::dump; -using stan::math::lgamma; using stan::model::model_base_crtp; -using stan::model::rvalue; -using stan::model::cons_list; -using stan::model::index_uni; -using stan::model::index_max; -using stan::model::index_min; -using stan::model::index_min_max; -using stan::model::index_multi; -using stan::model::index_omni; -using stan::model::nil_index_list; using namespace stan::math; -using stan::math::pow; stan::math::profile_map profiles__; -static int current_statement__= 0; -static const std::vector locations_array__ = {" (found before start of program)", - " (in 'constant_multi_ind', line 24, column 2 to column 31)", - " (in 'constant_multi_ind', line 25, column 2 to column 32)", - " (in 'constant_multi_ind', line 26, column 2 to column 23)", - " (in 'constant_multi_ind', line 27, column 2 to column 35)", - " (in 'constant_multi_ind', line 29, column 2 to column 35)", - " (in 'constant_multi_ind', line 61, column 2 to column 20)", - " (in 'constant_multi_ind', line 62, column 2 to column 24)", - " (in 'constant_multi_ind', line 66, column 6 to column 36)", - " (in 'constant_multi_ind', line 65, column 23 to line 67, column 5)", - " (in 'constant_multi_ind', line 65, column 4 to line 67, column 5)", - " (in 'constant_multi_ind', line 77, column 6 to column 67)", - " (in 'constant_multi_ind', line 76, column 11 to line 78, column 5)", - " (in 'constant_multi_ind', line 74, column 8 to column 69)", - " (in 'constant_multi_ind', line 73, column 13 to line 75, column 7)", - " (in 'constant_multi_ind', line 71, column 8 to column 83)", - " (in 'constant_multi_ind', line 72, column 8 to column 45)", - " (in 'constant_multi_ind', line 70, column 32 to line 73, column 7)", - " (in 'constant_multi_ind', line 70, column 6 to line 75, column 7)", - " (in 'constant_multi_ind', line 69, column 17 to line 76, column 5)", - " (in 'constant_multi_ind', line 69, column 4 to line 78, column 5)", - " (in 'constant_multi_ind', line 63, column 19 to line 79, column 3)", - " (in 'constant_multi_ind', line 63, column 2 to line 79, column 3)", - " (in 'constant_multi_ind', line 33, column 13 to column 18)", - " (in 'constant_multi_ind', line 33, column 2 to column 20)", - " (in 'constant_multi_ind', line 37, column 6 to column 36)", - " (in 'constant_multi_ind', line 36, column 23 to line 38, column 5)", - " (in 'constant_multi_ind', line 36, column 4 to line 38, column 5)", - " (in 'constant_multi_ind', line 42, column 8 to column 83)", - " (in 'constant_multi_ind', line 41, column 32 to line 43, column 7)", - " (in 'constant_multi_ind', line 41, column 6 to line 43, column 7)", - " (in 'constant_multi_ind', line 40, column 17 to line 44, column 5)", - " (in 'constant_multi_ind', line 40, column 4 to line 44, column 5)", - " (in 'constant_multi_ind', line 34, column 19 to line 45, column 3)", - " (in 'constant_multi_ind', line 34, column 2 to line 45, column 3)", - " (in 'constant_multi_ind', line 47, column 2 to column 44)", - " (in 'constant_multi_ind', line 50, column 2 to column 48)", - " (in 'constant_multi_ind', line 51, column 2 to line 52, column 40)", - " (in 'constant_multi_ind', line 54, column 2 to column 35)", - " (in 'constant_multi_ind', line 55, column 2 to column 37)", - " (in 'constant_multi_ind', line 57, column 2 to column 37)", - " (in 'constant_multi_ind', line 13, column 2 to column 12)", - " (in 'constant_multi_ind', line 14, column 2 to column 12)", - " (in 'constant_multi_ind', line 15, column 13 to column 18)", - " (in 'constant_multi_ind', line 15, column 2 to column 20)", - " (in 'constant_multi_ind', line 16, column 16 to column 21)", - " (in 'constant_multi_ind', line 16, column 2 to column 23)", - " (in 'constant_multi_ind', line 17, column 12 to column 17)", - " (in 'constant_multi_ind', line 17, column 2 to column 19)", - " (in 'constant_multi_ind', line 18, column 13 to column 18)", - " (in 'constant_multi_ind', line 18, column 2 to column 20)", - " (in 'constant_multi_ind', line 19, column 15 to column 20)", - " (in 'constant_multi_ind', line 19, column 2 to column 22)", - " (in 'constant_multi_ind', line 24, column 24 to column 29)", - " (in 'constant_multi_ind', line 25, column 25 to column 30)", - " (in 'constant_multi_ind', line 61, column 13 to column 18)", - " (in 'constant_multi_ind', line 62, column 17 to column 22)", - " (in 'constant_multi_ind', line 5, column 4 to column 16)", - " (in 'constant_multi_ind', line 4, column 20 to line 6, column 3)", - " (in 'constant_multi_ind', line 8, column 4 to column 31)", - " (in 'constant_multi_ind', line 7, column 46 to line 9, column 3)"}; -template -stan::promote_args_t -DE(const T0__& beta, std::ostream* pstream__) { +static constexpr std::array locations_array__ = + {" (found before start of program)", + " (in 'string', line 24, column 2 to column 31)", + " (in 'string', line 25, column 2 to column 32)", + " (in 'string', line 26, column 2 to column 23)", + " (in 'string', line 27, column 2 to column 35)", + " (in 'string', line 29, column 2 to column 35)", + " (in 'string', line 61, column 2 to column 20)", + " (in 'string', line 62, column 2 to column 24)", + " (in 'string', line 66, column 6 to column 36)", + " (in 'string', line 65, column 23 to line 67, column 5)", + " (in 'string', line 65, column 4 to line 67, column 5)", + " (in 'string', line 77, column 6 to column 67)", + " (in 'string', line 76, column 11 to line 78, column 5)", + " (in 'string', line 74, column 8 to column 69)", + " (in 'string', line 73, column 13 to line 75, column 7)", + " (in 'string', line 71, column 8 to column 83)", + " (in 'string', line 72, column 8 to column 45)", + " (in 'string', line 70, column 32 to line 73, column 7)", + " (in 'string', line 70, column 6 to line 75, column 7)", + " (in 'string', line 69, column 17 to line 76, column 5)", + " (in 'string', line 69, column 4 to line 78, column 5)", + " (in 'string', line 63, column 19 to line 79, column 3)", + " (in 'string', line 63, column 2 to line 79, column 3)", + " (in 'string', line 33, column 13 to column 18)", + " (in 'string', line 33, column 2 to column 20)", + " (in 'string', line 37, column 6 to column 36)", + " (in 'string', line 36, column 23 to line 38, column 5)", + " (in 'string', line 36, column 4 to line 38, column 5)", + " (in 'string', line 42, column 8 to column 83)", + " (in 'string', line 41, column 32 to line 43, column 7)", + " (in 'string', line 41, column 6 to line 43, column 7)", + " (in 'string', line 40, column 17 to line 44, column 5)", + " (in 'string', line 40, column 4 to line 44, column 5)", + " (in 'string', line 34, column 19 to line 45, column 3)", + " (in 'string', line 34, column 2 to line 45, column 3)", + " (in 'string', line 47, column 2 to column 44)", + " (in 'string', line 50, column 2 to column 48)", + " (in 'string', line 51, column 2 to line 52, column 40)", + " (in 'string', line 54, column 2 to column 35)", + " (in 'string', line 55, column 2 to column 37)", + " (in 'string', line 57, column 2 to column 37)", + " (in 'string', line 13, column 2 to column 12)", + " (in 'string', line 14, column 2 to column 12)", + " (in 'string', line 15, column 13 to column 18)", + " (in 'string', line 15, column 2 to column 20)", + " (in 'string', line 16, column 16 to column 21)", + " (in 'string', line 16, column 2 to column 23)", + " (in 'string', line 17, column 12 to column 17)", + " (in 'string', line 17, column 2 to column 19)", + " (in 'string', line 18, column 13 to column 18)", + " (in 'string', line 18, column 2 to column 20)", + " (in 'string', line 19, column 15 to column 20)", + " (in 'string', line 19, column 2 to column 22)", + " (in 'string', line 24, column 24 to column 29)", + " (in 'string', line 25, column 25 to column 30)", + " (in 'string', line 61, column 13 to column 18)", + " (in 'string', line 62, column 17 to column 22)", + " (in 'string', line 5, column 4 to column 16)", + " (in 'string', line 4, column 20 to line 6, column 3)", + " (in 'string', line 8, column 4 to column 31)", + " (in 'string', line 7, column 46 to line 9, column 3)"}; +template >* = nullptr> +stan::promote_args_t DE(const T0__& beta, std::ostream* pstream__); +template , + stan::is_stan_scalar, + stan::is_stan_scalar>* = nullptr> +stan::promote_args_t +size_step(const T0__& y, const T1__& beta, const T2__& time, std::ostream* + pstream__); +template >*> +stan::promote_args_t DE(const T0__& beta, std::ostream* pstream__) { using local_scalar_t__ = stan::promote_args_t; - const static bool propto__ = true; + int current_statement__ = 0; + static constexpr bool propto__ = true; + // suppress unused var warning (void) propto__; local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); - (void) DUMMY_VAR__; // suppress unused var warning - + // suppress unused var warning + (void) DUMMY_VAR__; try { current_statement__ = 57; return beta; } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } - -} -struct DE_functor__ { -template -stan::promote_args_t -operator()(const T0__& beta, std::ostream* pstream__) const -{ -return DE(beta, pstream__); } -}; -template -stan::promote_args_t -size_step(const T0__& y, const T1__& beta, const T2__& time, - std::ostream* pstream__) { +template , + stan::is_stan_scalar, + stan::is_stan_scalar>*> +stan::promote_args_t +size_step(const T0__& y, const T1__& beta, const T2__& time, std::ostream* + pstream__) { using local_scalar_t__ = stan::promote_args_t; - const static bool propto__ = true; + int current_statement__ = 0; + static constexpr bool propto__ = true; + // suppress unused var warning (void) propto__; local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); - (void) DUMMY_VAR__; // suppress unused var warning - + // suppress unused var warning + (void) DUMMY_VAR__; try { current_statement__ = 59; return (y + (DE(beta, pstream__) * time)); } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } - } -struct size_step_functor__ { -template -stan::promote_args_t -operator()(const T0__& y, const T1__& beta, const T2__& time, - std::ostream* pstream__) const -{ -return size_step(y, beta, time, pstream__); -} -}; #include class model_constant_multi_ind final : public model_base_crtp { private: @@ -203,659 +148,638 @@ class model_constant_multi_ind final : public model_base_crtp time; std::vector ind_id; std::vector y_0_obs; - public: - ~model_constant_multi_ind() { } - - inline std::string model_name() const final { return "model_constant_multi_ind"; } - inline std::vector model_compile_info() const noexcept { - return std::vector{"stanc_version = stanc3 v2.26.1-4-gd72b68b7-dirty", "stancflags = "}; - } - - - model_constant_multi_ind(stan::io::var_context& context__, - unsigned int random_seed__ = 0, - std::ostream* pstream__ = nullptr) : model_base_crtp(0) { - using local_scalar_t__ = double ; - boost::ecuyer1988 base_rng__ = - stan::services::util::create_rng(random_seed__, 0); - (void) base_rng__; // suppress unused var warning - static const char* function__ = "model_constant_multi_ind_namespace::model_constant_multi_ind"; - (void) function__; // suppress unused var warning + ~model_constant_multi_ind() {} + model_constant_multi_ind(stan::io::var_context& context__, unsigned int + random_seed__ = 0, std::ostream* + pstream__ = nullptr) : model_base_crtp(0) { + int current_statement__ = 0; + using local_scalar_t__ = double; + boost::ecuyer1988 base_rng__ = + stan::services::util::create_rng(random_seed__, 0); + // suppress unused var warning + (void) base_rng__; + static constexpr const char* function__ = + "model_constant_multi_ind_namespace::model_constant_multi_ind"; + // suppress unused var warning + (void) function__; local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); - (void) DUMMY_VAR__; // suppress unused var warning - + // suppress unused var warning + (void) DUMMY_VAR__; try { - int pos__; - pos__ = std::numeric_limits::min(); - + int pos__ = std::numeric_limits::min(); pos__ = 1; current_statement__ = 41; - context__.validate_dims("data initialization","n_obs","int", - context__.to_vec()); + context__.validate_dims("data initialization", "n_obs", "int", + std::vector{}); n_obs = std::numeric_limits::min(); - current_statement__ = 41; n_obs = context__.vals_i("n_obs")[(1 - 1)]; current_statement__ = 42; - context__.validate_dims("data initialization","n_ind","int", - context__.to_vec()); + context__.validate_dims("data initialization", "n_ind", "int", + std::vector{}); n_ind = std::numeric_limits::min(); - current_statement__ = 42; n_ind = context__.vals_i("n_ind")[(1 - 1)]; current_statement__ = 43; - validate_non_negative_index("y_obs", "n_obs", n_obs); + stan::math::validate_non_negative_index("y_obs", "n_obs", n_obs); current_statement__ = 44; - context__.validate_dims("data initialization","y_obs","double", - context__.to_vec(n_obs)); - y_obs = std::vector(n_obs, std::numeric_limits::quiet_NaN()); - + context__.validate_dims("data initialization", "y_obs", "double", + std::vector{static_cast(n_obs)}); + y_obs = std::vector(n_obs, + std::numeric_limits::quiet_NaN()); current_statement__ = 44; - assign(y_obs, nil_index_list(), context__.vals_r("y_obs"), - "assigning variable y_obs"); + y_obs = context__.vals_r("y_obs"); current_statement__ = 45; - validate_non_negative_index("obs_index", "n_obs", n_obs); + stan::math::validate_non_negative_index("obs_index", "n_obs", n_obs); current_statement__ = 46; - context__.validate_dims("data initialization","obs_index","int", - context__.to_vec(n_obs)); + context__.validate_dims("data initialization", "obs_index", "int", + std::vector{static_cast(n_obs)}); obs_index = std::vector(n_obs, std::numeric_limits::min()); - current_statement__ = 46; - assign(obs_index, nil_index_list(), context__.vals_i("obs_index"), - "assigning variable obs_index"); + obs_index = context__.vals_i("obs_index"); current_statement__ = 47; - validate_non_negative_index("time", "n_obs", n_obs); + stan::math::validate_non_negative_index("time", "n_obs", n_obs); current_statement__ = 48; - context__.validate_dims("data initialization","time","double", - context__.to_vec(n_obs)); - time = std::vector(n_obs, std::numeric_limits::quiet_NaN()); - + context__.validate_dims("data initialization", "time", "double", + std::vector{static_cast(n_obs)}); + time = std::vector(n_obs, + std::numeric_limits::quiet_NaN()); current_statement__ = 48; - assign(time, nil_index_list(), context__.vals_r("time"), - "assigning variable time"); + time = context__.vals_r("time"); current_statement__ = 49; - validate_non_negative_index("ind_id", "n_obs", n_obs); + stan::math::validate_non_negative_index("ind_id", "n_obs", n_obs); current_statement__ = 50; - context__.validate_dims("data initialization","ind_id","int", - context__.to_vec(n_obs)); + context__.validate_dims("data initialization", "ind_id", "int", + std::vector{static_cast(n_obs)}); ind_id = std::vector(n_obs, std::numeric_limits::min()); - current_statement__ = 50; - assign(ind_id, nil_index_list(), context__.vals_i("ind_id"), - "assigning variable ind_id"); + ind_id = context__.vals_i("ind_id"); current_statement__ = 51; - validate_non_negative_index("y_0_obs", "n_ind", n_ind); + stan::math::validate_non_negative_index("y_0_obs", "n_ind", n_ind); current_statement__ = 52; - context__.validate_dims("data initialization","y_0_obs","double", - context__.to_vec(n_ind)); - y_0_obs = std::vector(n_ind, std::numeric_limits::quiet_NaN()); - + context__.validate_dims("data initialization", "y_0_obs", "double", + std::vector{static_cast(n_ind)}); + y_0_obs = std::vector(n_ind, + std::numeric_limits::quiet_NaN()); current_statement__ = 52; - assign(y_0_obs, nil_index_list(), context__.vals_r("y_0_obs"), - "assigning variable y_0_obs"); + y_0_obs = context__.vals_r("y_0_obs"); current_statement__ = 53; - validate_non_negative_index("ind_y_0", "n_ind", n_ind); + stan::math::validate_non_negative_index("ind_y_0", "n_ind", n_ind); current_statement__ = 54; - validate_non_negative_index("ind_beta", "n_ind", n_ind); + stan::math::validate_non_negative_index("ind_beta", "n_ind", n_ind); current_statement__ = 55; - validate_non_negative_index("y_hat", "n_obs", n_obs); + stan::math::validate_non_negative_index("y_hat", "n_obs", n_obs); current_statement__ = 56; - validate_non_negative_index("Delta_hat", "n_obs", n_obs); - } catch (const std::exception& e) { - stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); - } - num_params_r__ = 0U; - - try { - num_params_r__ += n_ind; - num_params_r__ += n_ind; - num_params_r__ += 1; - num_params_r__ += 1; - num_params_r__ += 1; + stan::math::validate_non_negative_index("Delta_hat", "n_obs", n_obs); } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } + num_params_r__ = n_ind + n_ind + 1 + 1 + 1; + } + inline std::string model_name() const final { + return "model_constant_multi_ind"; } - template * = nullptr, stan::require_vector_like_vt* = nullptr> - inline stan::scalar_type_t log_prob_impl(VecR& params_r__, - VecI& params_i__, - std::ostream* pstream__ = nullptr) const { + inline std::vector model_compile_info() const noexcept { + return std::vector{"stanc_version = stanc3 v2.32.2", + "stancflags = --allow-undefined"}; + } + template * = nullptr, + stan::require_vector_like_vt* = nullptr> + inline stan::scalar_type_t + log_prob_impl(VecR& params_r__, VecI& params_i__, std::ostream* + pstream__ = nullptr) const { using T__ = stan::scalar_type_t; using local_scalar_t__ = T__; T__ lp__(0.0); stan::math::accumulator lp_accum__; - static const char* function__ = "model_constant_multi_ind_namespace::log_prob"; -(void) function__; // suppress unused var warning - stan::io::reader in__(params_r__, params_i__); + stan::io::deserializer in__(params_r__, params_i__); + int current_statement__ = 0; local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); - (void) DUMMY_VAR__; // suppress unused var warning - + // suppress unused var warning + (void) DUMMY_VAR__; + static constexpr const char* function__ = + "model_constant_multi_ind_namespace::log_prob"; + // suppress unused var warning + (void) function__; try { - std::vector ind_y_0; - ind_y_0 = std::vector(n_ind, DUMMY_VAR__); - - current_statement__ = 1; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 1; - assign(ind_y_0, cons_list(index_uni(sym1__), nil_index_list()), - in__.scalar(), "assigning variable ind_y_0");} + std::vector ind_y_0 = + std::vector(n_ind, DUMMY_VAR__); current_statement__ = 1; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 1; - if (jacobian__) { - current_statement__ = 1; - assign(ind_y_0, cons_list(index_uni(sym1__), nil_index_list()), - stan::math::lb_constrain(ind_y_0[(sym1__ - 1)], 0, lp__), - "assigning variable ind_y_0"); - } else { - current_statement__ = 1; - assign(ind_y_0, cons_list(index_uni(sym1__), nil_index_list()), - stan::math::lb_constrain(ind_y_0[(sym1__ - 1)], 0), - "assigning variable ind_y_0"); - }} - std::vector ind_beta; - ind_beta = std::vector(n_ind, DUMMY_VAR__); - - current_statement__ = 2; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 2; - assign(ind_beta, cons_list(index_uni(sym1__), nil_index_list()), - in__.scalar(), "assigning variable ind_beta");} + ind_y_0 = in__.template read_constrain_lb< + std::vector, jacobian__>(0, lp__, n_ind); + std::vector ind_beta = + std::vector(n_ind, DUMMY_VAR__); current_statement__ = 2; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 2; - if (jacobian__) { - current_statement__ = 2; - assign(ind_beta, cons_list(index_uni(sym1__), nil_index_list()), - stan::math::lb_constrain(ind_beta[(sym1__ - 1)], 0, lp__), - "assigning variable ind_beta"); - } else { - current_statement__ = 2; - assign(ind_beta, cons_list(index_uni(sym1__), nil_index_list()), - stan::math::lb_constrain(ind_beta[(sym1__ - 1)], 0), - "assigning variable ind_beta"); - }} - local_scalar_t__ species_beta_mu; - species_beta_mu = DUMMY_VAR__; - + ind_beta = in__.template read_constrain_lb< + std::vector, jacobian__>(0, lp__, n_ind); + local_scalar_t__ species_beta_mu = DUMMY_VAR__; current_statement__ = 3; - species_beta_mu = in__.scalar(); - local_scalar_t__ species_beta_sigma; - species_beta_sigma = DUMMY_VAR__; - + species_beta_mu = in__.template read(); + local_scalar_t__ species_beta_sigma = DUMMY_VAR__; current_statement__ = 4; - species_beta_sigma = in__.scalar(); - current_statement__ = 4; - if (jacobian__) { - current_statement__ = 4; - species_beta_sigma = stan::math::lb_constrain(species_beta_sigma, 0, - lp__); - } else { - current_statement__ = 4; - species_beta_sigma = stan::math::lb_constrain(species_beta_sigma, 0); - } - local_scalar_t__ global_error_sigma; - global_error_sigma = DUMMY_VAR__; - - current_statement__ = 5; - global_error_sigma = in__.scalar(); + species_beta_sigma = in__.template read_constrain_lb(0, lp__); + local_scalar_t__ global_error_sigma = DUMMY_VAR__; current_statement__ = 5; - if (jacobian__) { - current_statement__ = 5; - global_error_sigma = stan::math::lb_constrain(global_error_sigma, 0, - lp__); - } else { - current_statement__ = 5; - global_error_sigma = stan::math::lb_constrain(global_error_sigma, 0); - } + global_error_sigma = in__.template read_constrain_lb(0, lp__); { current_statement__ = 23; - validate_non_negative_index("y_hat", "n_obs", n_obs); - std::vector y_hat; - y_hat = std::vector(n_obs, DUMMY_VAR__); - + stan::math::validate_non_negative_index("y_hat", "n_obs", n_obs); + std::vector y_hat = + std::vector(n_obs, DUMMY_VAR__); current_statement__ = 34; for (int i = 1; i <= n_obs; ++i) { current_statement__ = 27; - if (logical_eq(obs_index[(i - 1)], 1)) { + if (stan::math::logical_eq( + stan::model::rvalue(obs_index, "obs_index", + stan::model::index_uni(i)), 1)) { current_statement__ = 25; - assign(y_hat, cons_list(index_uni(i), nil_index_list()), - ind_y_0[(ind_id[(i - 1)] - 1)], "assigning variable y_hat"); - } + stan::model::assign(y_hat, + stan::model::rvalue(ind_y_0, "ind_y_0", + stan::model::index_uni( + stan::model::rvalue(ind_id, "ind_id", + stan::model::index_uni(i)))), "assigning variable y_hat", + stan::model::index_uni(i)); + } current_statement__ = 32; - if (logical_lt(i, n_obs)) { + if (stan::math::logical_lt(i, n_obs)) { current_statement__ = 30; - if (logical_eq(ind_id[((i + 1) - 1)], ind_id[(i - 1)])) { + if (stan::math::logical_eq( + stan::model::rvalue(ind_id, "ind_id", + stan::model::index_uni((i + 1))), + stan::model::rvalue(ind_id, "ind_id", + stan::model::index_uni(i)))) { current_statement__ = 28; - assign(y_hat, cons_list(index_uni((i + 1)), nil_index_list()), - size_step(y_hat[(i - 1)], ind_beta[(ind_id[(i - 1)] - 1)], - (time[((i + 1) - 1)] - time[(i - 1)]), pstream__), - "assigning variable y_hat"); - } - } } + stan::model::assign(y_hat, + size_step( + stan::model::rvalue(y_hat, "y_hat", + stan::model::index_uni(i)), + stan::model::rvalue(ind_beta, "ind_beta", + stan::model::index_uni( + stan::model::rvalue(ind_id, "ind_id", + stan::model::index_uni(i)))), + (stan::model::rvalue(time, "time", + stan::model::index_uni((i + 1))) - + stan::model::rvalue(time, "time", stan::model::index_uni(i))), + pstream__), "assigning variable y_hat", + stan::model::index_uni((i + 1))); + } + } + } current_statement__ = 35; - lp_accum__.add( - normal_lpdf(y_obs, y_hat, global_error_sigma)); + lp_accum__.add(stan::math::normal_lpdf(y_obs, y_hat, + global_error_sigma)); current_statement__ = 36; - lp_accum__.add( - normal_lpdf(ind_y_0, y_0_obs, global_error_sigma)); + lp_accum__.add(stan::math::normal_lpdf(ind_y_0, y_0_obs, + global_error_sigma)); current_statement__ = 37; - lp_accum__.add( - lognormal_lpdf(ind_beta, species_beta_mu, - species_beta_sigma)); + lp_accum__.add(stan::math::lognormal_lpdf(ind_beta, + species_beta_mu, species_beta_sigma)); current_statement__ = 38; - lp_accum__.add(normal_lpdf(species_beta_mu, 0.1, 1)); + lp_accum__.add(stan::math::normal_lpdf(species_beta_mu, + 0.1, 1)); current_statement__ = 39; - lp_accum__.add(cauchy_lpdf(species_beta_sigma, 0.1, 1)); + lp_accum__.add(stan::math::cauchy_lpdf(species_beta_sigma, + 0.1, 1)); current_statement__ = 40; - lp_accum__.add(cauchy_lpdf(global_error_sigma, 0.1, 1)); + lp_accum__.add(stan::math::cauchy_lpdf(global_error_sigma, + 0.1, 1)); } } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } lp_accum__.add(lp__); return lp_accum__.sum(); - } // log_prob_impl() - - template * = nullptr, stan::require_vector_like_vt* = nullptr, stan::require_std_vector_vt* = nullptr> - inline void write_array_impl(RNG& base_rng__, VecR& params_r__, - VecI& params_i__, VecVar& vars__, - const bool emit_transformed_parameters__ = true, - const bool emit_generated_quantities__ = true, - std::ostream* pstream__ = nullptr) const { + } + template * = nullptr, stan::require_vector_like_vt* = nullptr, stan::require_vector_vt* = nullptr> + inline void + write_array_impl(RNG& base_rng__, VecR& params_r__, VecI& params_i__, + VecVar& vars__, const bool + emit_transformed_parameters__ = true, const bool + emit_generated_quantities__ = true, std::ostream* + pstream__ = nullptr) const { using local_scalar_t__ = double; - vars__.resize(0); - stan::io::reader in__(params_r__, params_i__); - static const char* function__ = "model_constant_multi_ind_namespace::write_array"; -(void) function__; // suppress unused var warning - (void) function__; // suppress unused var warning + stan::io::deserializer in__(params_r__, params_i__); + stan::io::serializer out__(vars__); + static constexpr bool propto__ = true; + // suppress unused var warning + (void) propto__; double lp__ = 0.0; - (void) lp__; // dummy to suppress unused var warning + // suppress unused var warning + (void) lp__; + int current_statement__ = 0; stan::math::accumulator lp_accum__; local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); - (void) DUMMY_VAR__; // suppress unused var warning - + // suppress unused var warning + (void) DUMMY_VAR__; + constexpr bool jacobian__ = false; + static constexpr const char* function__ = + "model_constant_multi_ind_namespace::write_array"; + // suppress unused var warning + (void) function__; try { - std::vector ind_y_0; - ind_y_0 = std::vector(n_ind, std::numeric_limits::quiet_NaN()); - + std::vector ind_y_0 = + std::vector(n_ind, std::numeric_limits::quiet_NaN()); current_statement__ = 1; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 1; - assign(ind_y_0, cons_list(index_uni(sym1__), nil_index_list()), - in__.scalar(), "assigning variable ind_y_0");} - current_statement__ = 1; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 1; - assign(ind_y_0, cons_list(index_uni(sym1__), nil_index_list()), - stan::math::lb_constrain(ind_y_0[(sym1__ - 1)], 0), - "assigning variable ind_y_0");} - std::vector ind_beta; - ind_beta = std::vector(n_ind, std::numeric_limits::quiet_NaN()); - - current_statement__ = 2; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 2; - assign(ind_beta, cons_list(index_uni(sym1__), nil_index_list()), - in__.scalar(), "assigning variable ind_beta");} + ind_y_0 = in__.template read_constrain_lb< + std::vector, jacobian__>(0, lp__, n_ind); + std::vector ind_beta = + std::vector(n_ind, std::numeric_limits::quiet_NaN()); current_statement__ = 2; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 2; - assign(ind_beta, cons_list(index_uni(sym1__), nil_index_list()), - stan::math::lb_constrain(ind_beta[(sym1__ - 1)], 0), - "assigning variable ind_beta");} - double species_beta_mu; - species_beta_mu = std::numeric_limits::quiet_NaN(); - + ind_beta = in__.template read_constrain_lb< + std::vector, jacobian__>(0, lp__, n_ind); + double species_beta_mu = std::numeric_limits::quiet_NaN(); current_statement__ = 3; - species_beta_mu = in__.scalar(); - double species_beta_sigma; - species_beta_sigma = std::numeric_limits::quiet_NaN(); - - current_statement__ = 4; - species_beta_sigma = in__.scalar(); + species_beta_mu = in__.template read(); + double species_beta_sigma = std::numeric_limits::quiet_NaN(); current_statement__ = 4; - species_beta_sigma = stan::math::lb_constrain(species_beta_sigma, 0); - double global_error_sigma; - global_error_sigma = std::numeric_limits::quiet_NaN(); - + species_beta_sigma = in__.template read_constrain_lb(0, lp__); + double global_error_sigma = std::numeric_limits::quiet_NaN(); current_statement__ = 5; - global_error_sigma = in__.scalar(); - current_statement__ = 5; - global_error_sigma = stan::math::lb_constrain(global_error_sigma, 0); - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - vars__.emplace_back(ind_y_0[(sym1__ - 1)]);} - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - vars__.emplace_back(ind_beta[(sym1__ - 1)]);} - vars__.emplace_back(species_beta_mu); - vars__.emplace_back(species_beta_sigma); - vars__.emplace_back(global_error_sigma); - if (logical_negation((primitive_value(emit_transformed_parameters__) || - primitive_value(emit_generated_quantities__)))) { + global_error_sigma = in__.template read_constrain_lb(0, lp__); + out__.write(ind_y_0); + out__.write(ind_beta); + out__.write(species_beta_mu); + out__.write(species_beta_sigma); + out__.write(global_error_sigma); + if (stan::math::logical_negation( + (stan::math::primitive_value(emit_transformed_parameters__) || + stan::math::primitive_value(emit_generated_quantities__)))) { return ; - } - if (logical_negation(emit_generated_quantities__)) { + } + if (stan::math::logical_negation(emit_generated_quantities__)) { return ; - } - std::vector y_hat; - y_hat = std::vector(n_obs, std::numeric_limits::quiet_NaN()); - - std::vector Delta_hat; - Delta_hat = std::vector(n_obs, std::numeric_limits::quiet_NaN()); - + } + std::vector y_hat = + std::vector(n_obs, std::numeric_limits::quiet_NaN()); + std::vector Delta_hat = + std::vector(n_obs, std::numeric_limits::quiet_NaN()); current_statement__ = 22; for (int i = 1; i <= n_obs; ++i) { current_statement__ = 10; - if (logical_eq(obs_index[(i - 1)], 1)) { + if (stan::math::logical_eq( + stan::model::rvalue(obs_index, "obs_index", + stan::model::index_uni(i)), 1)) { current_statement__ = 8; - assign(y_hat, cons_list(index_uni(i), nil_index_list()), - ind_y_0[(ind_id[(i - 1)] - 1)], "assigning variable y_hat"); - } + stan::model::assign(y_hat, + stan::model::rvalue(ind_y_0, "ind_y_0", + stan::model::index_uni( + stan::model::rvalue(ind_id, "ind_id", + stan::model::index_uni(i)))), "assigning variable y_hat", + stan::model::index_uni(i)); + } current_statement__ = 20; - if (logical_lt(i, n_obs)) { + if (stan::math::logical_lt(i, n_obs)) { current_statement__ = 18; - if (logical_eq(ind_id[((i + 1) - 1)], ind_id[(i - 1)])) { + if (stan::math::logical_eq( + stan::model::rvalue(ind_id, "ind_id", + stan::model::index_uni((i + 1))), + stan::model::rvalue(ind_id, "ind_id", + stan::model::index_uni(i)))) { current_statement__ = 15; - assign(y_hat, cons_list(index_uni((i + 1)), nil_index_list()), - size_step(y_hat[(i - 1)], ind_beta[(ind_id[(i - 1)] - 1)], - (time[((i + 1) - 1)] - time[(i - 1)]), pstream__), - "assigning variable y_hat"); + stan::model::assign(y_hat, + size_step( + stan::model::rvalue(y_hat, "y_hat", stan::model::index_uni(i)), + stan::model::rvalue(ind_beta, "ind_beta", + stan::model::index_uni( + stan::model::rvalue(ind_id, "ind_id", + stan::model::index_uni(i)))), + (stan::model::rvalue(time, "time", + stan::model::index_uni((i + 1))) - + stan::model::rvalue(time, "time", stan::model::index_uni(i))), + pstream__), "assigning variable y_hat", + stan::model::index_uni((i + 1))); current_statement__ = 16; - assign(Delta_hat, cons_list(index_uni(i), nil_index_list()), - (y_hat[((i + 1) - 1)] - y_hat[(i - 1)]), - "assigning variable Delta_hat"); + stan::model::assign(Delta_hat, + (stan::model::rvalue(y_hat, "y_hat", + stan::model::index_uni((i + 1))) - + stan::model::rvalue(y_hat, "y_hat", stan::model::index_uni(i))), + "assigning variable Delta_hat", stan::model::index_uni(i)); } else { current_statement__ = 13; - assign(Delta_hat, cons_list(index_uni(i), nil_index_list()), - (DE(ind_beta[(ind_id[(i - 1)] - 1)], pstream__) * - (time[(i - 1)] - time[((i - 1) - 1)])), - "assigning variable Delta_hat"); + stan::model::assign(Delta_hat, + (DE( + stan::model::rvalue(ind_beta, "ind_beta", + stan::model::index_uni( + stan::model::rvalue(ind_id, "ind_id", + stan::model::index_uni(i)))), pstream__) * + (stan::model::rvalue(time, "time", stan::model::index_uni(i)) - + stan::model::rvalue(time, "time", + stan::model::index_uni((i - 1))))), + "assigning variable Delta_hat", stan::model::index_uni(i)); } } else { current_statement__ = 11; - assign(Delta_hat, cons_list(index_uni(i), nil_index_list()), - (DE(ind_beta[(ind_id[(i - 1)] - 1)], pstream__) * - (time[(i - 1)] - time[((i - 1) - 1)])), - "assigning variable Delta_hat"); - }} - for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { - vars__.emplace_back(y_hat[(sym1__ - 1)]);} - for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { - vars__.emplace_back(Delta_hat[(sym1__ - 1)]);} + stan::model::assign(Delta_hat, + (DE( + stan::model::rvalue(ind_beta, "ind_beta", + stan::model::index_uni( + stan::model::rvalue(ind_id, "ind_id", + stan::model::index_uni(i)))), pstream__) * + (stan::model::rvalue(time, "time", stan::model::index_uni(i)) - + stan::model::rvalue(time, "time", stan::model::index_uni((i - 1))))), + "assigning variable Delta_hat", stan::model::index_uni(i)); + } + } + out__.write(y_hat); + out__.write(Delta_hat); } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } - } // write_array_impl() - - template * = nullptr, stan::require_vector_like_vt* = nullptr> - inline void transform_inits_impl(const stan::io::var_context& context__, - VecI& params_i__, VecVar& vars__, - std::ostream* pstream__ = nullptr) const { + } + template * = nullptr, + stan::require_vector_like_vt* = nullptr> + inline void + unconstrain_array_impl(const VecVar& params_r__, const VecI& params_i__, + VecVar& vars__, std::ostream* pstream__ = nullptr) const { using local_scalar_t__ = double; - vars__.clear(); - vars__.reserve(num_params_r__); - + stan::io::deserializer in__(params_r__, params_i__); + stan::io::serializer out__(vars__); + int current_statement__ = 0; + local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); + // suppress unused var warning + (void) DUMMY_VAR__; try { - int pos__; - pos__ = std::numeric_limits::min(); - + int pos__ = std::numeric_limits::min(); pos__ = 1; - std::vector ind_y_0; - ind_y_0 = std::vector(n_ind, std::numeric_limits::quiet_NaN()); - + std::vector ind_y_0 = + std::vector(n_ind, DUMMY_VAR__); current_statement__ = 1; - assign(ind_y_0, nil_index_list(), context__.vals_r("ind_y_0"), + stan::model::assign(ind_y_0, + in__.read>(n_ind), "assigning variable ind_y_0"); - std::vector ind_y_0_free__; - ind_y_0_free__ = std::vector(n_ind, std::numeric_limits::quiet_NaN()); - - current_statement__ = 1; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 1; - assign(ind_y_0_free__, - cons_list(index_uni(sym1__), nil_index_list()), - stan::math::lb_free(ind_y_0[(sym1__ - 1)], 0), - "assigning variable ind_y_0_free__");} - std::vector ind_beta; - ind_beta = std::vector(n_ind, std::numeric_limits::quiet_NaN()); - + out__.write_free_lb(0, ind_y_0); + std::vector ind_beta = + std::vector(n_ind, DUMMY_VAR__); current_statement__ = 2; - assign(ind_beta, nil_index_list(), context__.vals_r("ind_beta"), + stan::model::assign(ind_beta, + in__.read>(n_ind), "assigning variable ind_beta"); - std::vector ind_beta_free__; - ind_beta_free__ = std::vector(n_ind, std::numeric_limits::quiet_NaN()); - + out__.write_free_lb(0, ind_beta); + local_scalar_t__ species_beta_mu = DUMMY_VAR__; + current_statement__ = 3; + species_beta_mu = in__.read(); + out__.write(species_beta_mu); + local_scalar_t__ species_beta_sigma = DUMMY_VAR__; + current_statement__ = 4; + species_beta_sigma = in__.read(); + out__.write_free_lb(0, species_beta_sigma); + local_scalar_t__ global_error_sigma = DUMMY_VAR__; + current_statement__ = 5; + global_error_sigma = in__.read(); + out__.write_free_lb(0, global_error_sigma); + } catch (const std::exception& e) { + stan::lang::rethrow_located(e, locations_array__[current_statement__]); + } + } + template * = nullptr> + inline void + transform_inits_impl(const stan::io::var_context& context__, VecVar& + vars__, std::ostream* pstream__ = nullptr) const { + using local_scalar_t__ = double; + stan::io::serializer out__(vars__); + int current_statement__ = 0; + local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); + // suppress unused var warning + (void) DUMMY_VAR__; + try { + current_statement__ = 1; + context__.validate_dims("parameter initialization", "ind_y_0", + "double", std::vector{static_cast(n_ind)}); current_statement__ = 2; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 2; - assign(ind_beta_free__, - cons_list(index_uni(sym1__), nil_index_list()), - stan::math::lb_free(ind_beta[(sym1__ - 1)], 0), - "assigning variable ind_beta_free__");} - double species_beta_mu; - species_beta_mu = std::numeric_limits::quiet_NaN(); - + context__.validate_dims("parameter initialization", "ind_beta", + "double", std::vector{static_cast(n_ind)}); + current_statement__ = 3; + context__.validate_dims("parameter initialization", "species_beta_mu", + "double", std::vector{}); + current_statement__ = 4; + context__.validate_dims("parameter initialization", + "species_beta_sigma", "double", std::vector{}); + current_statement__ = 5; + context__.validate_dims("parameter initialization", + "global_error_sigma", "double", std::vector{}); + int pos__ = std::numeric_limits::min(); + pos__ = 1; + std::vector ind_y_0 = + std::vector(n_ind, DUMMY_VAR__); + current_statement__ = 1; + ind_y_0 = context__.vals_r("ind_y_0"); + out__.write_free_lb(0, ind_y_0); + std::vector ind_beta = + std::vector(n_ind, DUMMY_VAR__); + current_statement__ = 2; + ind_beta = context__.vals_r("ind_beta"); + out__.write_free_lb(0, ind_beta); + local_scalar_t__ species_beta_mu = DUMMY_VAR__; current_statement__ = 3; species_beta_mu = context__.vals_r("species_beta_mu")[(1 - 1)]; - double species_beta_sigma; - species_beta_sigma = std::numeric_limits::quiet_NaN(); - + out__.write(species_beta_mu); + local_scalar_t__ species_beta_sigma = DUMMY_VAR__; current_statement__ = 4; species_beta_sigma = context__.vals_r("species_beta_sigma")[(1 - 1)]; - double species_beta_sigma_free__; - species_beta_sigma_free__ = std::numeric_limits::quiet_NaN(); - - current_statement__ = 4; - species_beta_sigma_free__ = stan::math::lb_free(species_beta_sigma, 0); - double global_error_sigma; - global_error_sigma = std::numeric_limits::quiet_NaN(); - + out__.write_free_lb(0, species_beta_sigma); + local_scalar_t__ global_error_sigma = DUMMY_VAR__; current_statement__ = 5; global_error_sigma = context__.vals_r("global_error_sigma")[(1 - 1)]; - double global_error_sigma_free__; - global_error_sigma_free__ = std::numeric_limits::quiet_NaN(); - - current_statement__ = 5; - global_error_sigma_free__ = stan::math::lb_free(global_error_sigma, 0); - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - vars__.emplace_back(ind_y_0_free__[(sym1__ - 1)]);} - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - vars__.emplace_back(ind_beta_free__[(sym1__ - 1)]);} - vars__.emplace_back(species_beta_mu); - vars__.emplace_back(species_beta_sigma_free__); - vars__.emplace_back(global_error_sigma_free__); + out__.write_free_lb(0, global_error_sigma); } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } - } // transform_inits_impl() - - inline void get_param_names(std::vector& names__) const { - - names__.clear(); - names__.emplace_back("ind_y_0"); - names__.emplace_back("ind_beta"); - names__.emplace_back("species_beta_mu"); - names__.emplace_back("species_beta_sigma"); - names__.emplace_back("global_error_sigma"); - names__.emplace_back("y_hat"); - names__.emplace_back("Delta_hat"); - } // get_param_names() - - inline void get_dims(std::vector>& dimss__) const { - dimss__.clear(); - dimss__.emplace_back(std::vector{static_cast(n_ind)}); - - dimss__.emplace_back(std::vector{static_cast(n_ind)}); - - dimss__.emplace_back(std::vector{}); - - dimss__.emplace_back(std::vector{}); - - dimss__.emplace_back(std::vector{}); - - dimss__.emplace_back(std::vector{static_cast(n_obs)}); - - dimss__.emplace_back(std::vector{static_cast(n_obs)}); - - } // get_dims() - - inline void constrained_param_names( - std::vector& param_names__, - bool emit_transformed_parameters__ = true, - bool emit_generated_quantities__ = true) const - final { - + } + inline void + get_param_names(std::vector& names__, const bool + emit_transformed_parameters__ = true, const bool + emit_generated_quantities__ = true) const { + names__ = std::vector{"ind_y_0", "ind_beta", + "species_beta_mu", "species_beta_sigma", + "global_error_sigma"}; + if (emit_transformed_parameters__) {} + if (emit_generated_quantities__) { + std::vector temp{"y_hat", "Delta_hat"}; + names__.reserve(names__.size() + temp.size()); + names__.insert(names__.end(), temp.begin(), temp.end()); + } + } + inline void + get_dims(std::vector>& dimss__, const bool + emit_transformed_parameters__ = true, const bool + emit_generated_quantities__ = true) const { + dimss__ = std::vector>{std::vector{static_cast< + size_t>( + n_ind)}, + std::vector{static_cast(n_ind)}, + std::vector{}, std::vector{}, + std::vector{}}; + if (emit_transformed_parameters__) {} + if (emit_generated_quantities__) { + std::vector> + temp{std::vector{static_cast(n_obs)}, + std::vector{static_cast(n_obs)}}; + dimss__.reserve(dimss__.size() + temp.size()); + dimss__.insert(dimss__.end(), temp.begin(), temp.end()); + } + } + inline void + constrained_param_names(std::vector& param_names__, bool + emit_transformed_parameters__ = true, bool + emit_generated_quantities__ = true) const final { for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - { - param_names__.emplace_back(std::string() + "ind_y_0" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "ind_y_0" + '.' + + std::to_string(sym1__)); + } for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - { - param_names__.emplace_back(std::string() + "ind_beta" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "ind_beta" + '.' + + std::to_string(sym1__)); + } param_names__.emplace_back(std::string() + "species_beta_mu"); param_names__.emplace_back(std::string() + "species_beta_sigma"); param_names__.emplace_back(std::string() + "global_error_sigma"); - if (emit_transformed_parameters__) { - - } - + if (emit_transformed_parameters__) {} if (emit_generated_quantities__) { for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { - { - param_names__.emplace_back(std::string() + "y_hat" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "y_hat" + '.' + + std::to_string(sym1__)); + } for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { - { - param_names__.emplace_back(std::string() + "Delta_hat" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "Delta_hat" + '.' + + std::to_string(sym1__)); + } } - - } // constrained_param_names() - - inline void unconstrained_param_names( - std::vector& param_names__, - bool emit_transformed_parameters__ = true, - bool emit_generated_quantities__ = true) const - final { - + } + inline void + unconstrained_param_names(std::vector& param_names__, bool + emit_transformed_parameters__ = true, bool + emit_generated_quantities__ = true) const final { for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - { - param_names__.emplace_back(std::string() + "ind_y_0" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "ind_y_0" + '.' + + std::to_string(sym1__)); + } for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - { - param_names__.emplace_back(std::string() + "ind_beta" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "ind_beta" + '.' + + std::to_string(sym1__)); + } param_names__.emplace_back(std::string() + "species_beta_mu"); param_names__.emplace_back(std::string() + "species_beta_sigma"); param_names__.emplace_back(std::string() + "global_error_sigma"); - if (emit_transformed_parameters__) { - - } - + if (emit_transformed_parameters__) {} if (emit_generated_quantities__) { for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { - { - param_names__.emplace_back(std::string() + "y_hat" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "y_hat" + '.' + + std::to_string(sym1__)); + } for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { - { - param_names__.emplace_back(std::string() + "Delta_hat" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "Delta_hat" + '.' + + std::to_string(sym1__)); + } } - - } // unconstrained_param_names() - + } inline std::string get_constrained_sizedtypes() const { - stringstream s__; - s__ << "[{\"name\":\"ind_y_0\",\"type\":{\"name\":\"array\",\"length\":" << n_ind << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"ind_beta\",\"type\":{\"name\":\"array\",\"length\":" << n_ind << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"species_beta_mu\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_beta_sigma\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"global_error_sigma\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"y_hat\",\"type\":{\"name\":\"array\",\"length\":" << n_obs << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"Delta_hat\",\"type\":{\"name\":\"array\",\"length\":" << n_obs << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"}]"; - return s__.str(); - } // get_constrained_sizedtypes() - + return std::string("[{\"name\":\"ind_y_0\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_ind) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"ind_beta\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_ind) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"species_beta_mu\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_beta_sigma\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"global_error_sigma\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"y_hat\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_obs) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"Delta_hat\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_obs) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"}]"); + } inline std::string get_unconstrained_sizedtypes() const { - stringstream s__; - s__ << "[{\"name\":\"ind_y_0\",\"type\":{\"name\":\"array\",\"length\":" << n_ind << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"ind_beta\",\"type\":{\"name\":\"array\",\"length\":" << n_ind << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"species_beta_mu\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_beta_sigma\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"global_error_sigma\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"y_hat\",\"type\":{\"name\":\"array\",\"length\":" << n_obs << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"Delta_hat\",\"type\":{\"name\":\"array\",\"length\":" << n_obs << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"}]"; - return s__.str(); - } // get_unconstrained_sizedtypes() - - - // Begin method overload boilerplate - template - inline void write_array(RNG& base_rng, - Eigen::Matrix& params_r, - Eigen::Matrix& vars, - const bool emit_transformed_parameters = true, - const bool emit_generated_quantities = true, - std::ostream* pstream = nullptr) const { - std::vector vars_vec(vars.size()); - std::vector params_i; - write_array_impl(base_rng, params_r, params_i, vars_vec, - emit_transformed_parameters, emit_generated_quantities, pstream); - vars.resize(vars_vec.size()); - for (int i = 0; i < vars.size(); ++i) { - vars.coeffRef(i) = vars_vec[i]; - } - } - template - inline void write_array(RNG& base_rng, std::vector& params_r, - std::vector& params_i, - std::vector& vars, - bool emit_transformed_parameters = true, - bool emit_generated_quantities = true, - std::ostream* pstream = nullptr) const { - write_array_impl(base_rng, params_r, params_i, vars, emit_transformed_parameters, emit_generated_quantities, pstream); - } - template - inline T_ log_prob(Eigen::Matrix& params_r, - std::ostream* pstream = nullptr) const { - Eigen::Matrix params_i; - return log_prob_impl(params_r, params_i, pstream); - } - template - inline T__ log_prob(std::vector& params_r, - std::vector& params_i, - std::ostream* pstream = nullptr) const { - return log_prob_impl(params_r, params_i, pstream); - } - - inline void transform_inits(const stan::io::var_context& context, - Eigen::Matrix& params_r, - std::ostream* pstream = nullptr) const final { - std::vector params_r_vec(params_r.size()); - std::vector params_i; - transform_inits_impl(context, params_i, params_r_vec, pstream); - params_r.resize(params_r_vec.size()); - for (int i = 0; i < params_r.size(); ++i) { - params_r.coeffRef(i) = params_r_vec[i]; - } - } - inline void transform_inits(const stan::io::var_context& context, - std::vector& params_i, - std::vector& vars, - std::ostream* pstream = nullptr) const final { - transform_inits_impl(context, params_i, vars, pstream); - } + return std::string("[{\"name\":\"ind_y_0\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_ind) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"ind_beta\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_ind) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"species_beta_mu\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_beta_sigma\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"global_error_sigma\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"y_hat\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_obs) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"Delta_hat\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_obs) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"}]"); + } + // Begin method overload boilerplate + template inline void + write_array(RNG& base_rng, Eigen::Matrix& params_r, + Eigen::Matrix& vars, const bool + emit_transformed_parameters = true, const bool + emit_generated_quantities = true, std::ostream* + pstream = nullptr) const { + const size_t num_params__ = ((((n_ind + n_ind) + 1) + 1) + 1); + const size_t num_transformed = emit_transformed_parameters * (0); + const size_t num_gen_quantities = emit_generated_quantities * ((n_obs + + n_obs)); + const size_t num_to_write = num_params__ + num_transformed + + num_gen_quantities; + std::vector params_i; + vars = Eigen::Matrix::Constant(num_to_write, + std::numeric_limits::quiet_NaN()); + write_array_impl(base_rng, params_r, params_i, vars, + emit_transformed_parameters, emit_generated_quantities, pstream); + } + template inline void + write_array(RNG& base_rng, std::vector& params_r, std::vector& + params_i, std::vector& vars, bool + emit_transformed_parameters = true, bool + emit_generated_quantities = true, std::ostream* + pstream = nullptr) const { + const size_t num_params__ = ((((n_ind + n_ind) + 1) + 1) + 1); + const size_t num_transformed = emit_transformed_parameters * (0); + const size_t num_gen_quantities = emit_generated_quantities * ((n_obs + + n_obs)); + const size_t num_to_write = num_params__ + num_transformed + + num_gen_quantities; + vars = std::vector(num_to_write, + std::numeric_limits::quiet_NaN()); + write_array_impl(base_rng, params_r, params_i, vars, + emit_transformed_parameters, emit_generated_quantities, pstream); + } + template inline T_ + log_prob(Eigen::Matrix& params_r, std::ostream* pstream = nullptr) const { + Eigen::Matrix params_i; + return log_prob_impl(params_r, params_i, pstream); + } + template inline T_ + log_prob(std::vector& params_r, std::vector& params_i, + std::ostream* pstream = nullptr) const { + return log_prob_impl(params_r, params_i, pstream); + } + inline void + transform_inits(const stan::io::var_context& context, + Eigen::Matrix& params_r, std::ostream* + pstream = nullptr) const final { + std::vector params_r_vec(params_r.size()); + std::vector params_i; + transform_inits(context, params_i, params_r_vec, pstream); + params_r = Eigen::Map>(params_r_vec.data(), + params_r_vec.size()); + } + inline void + transform_inits(const stan::io::var_context& context, std::vector& + params_i, std::vector& vars, std::ostream* + pstream__ = nullptr) const { + vars.resize(num_params_r__); + transform_inits_impl(context, vars, pstream__); + } + inline void + unconstrain_array(const std::vector& params_constrained, + std::vector& params_unconstrained, std::ostream* + pstream = nullptr) const { + const std::vector params_i; + params_unconstrained = std::vector(num_params_r__, + std::numeric_limits::quiet_NaN()); + unconstrain_array_impl(params_constrained, params_i, + params_unconstrained, pstream); + } + inline void + unconstrain_array(const Eigen::Matrix& params_constrained, + Eigen::Matrix& params_unconstrained, + std::ostream* pstream = nullptr) const { + const std::vector params_i; + params_unconstrained = Eigen::Matrix::Constant(num_params_r__, + std::numeric_limits::quiet_NaN()); + unconstrain_array_impl(params_constrained, params_i, + params_unconstrained, pstream); + } }; } using stan_model = model_constant_multi_ind_namespace::model_constant_multi_ind; #ifndef USING_R // Boilerplate -stan::model::model_base& new_model( - stan::io::var_context& data_context, - unsigned int seed, - std::ostream* msg_stream) { +stan::model::model_base& +new_model(stan::io::var_context& data_context, unsigned int seed, + std::ostream* msg_stream) { stan_model* m = new stan_model(data_context, seed, msg_stream); return *m; } diff --git a/src/stanExports_constant_single_ind.h b/src/stanExports_constant_single_ind.h index 44e96ec..f34a511 100644 --- a/src/stanExports_constant_single_ind.h +++ b/src/stanExports_constant_single_ind.h @@ -21,162 +21,107 @@ #define USE_STANC3 #endif #include -// Code generated by stanc v2.26.1-4-gd72b68b7-dirty +// Code generated by stanc v2.32.2 #include namespace model_constant_single_ind_namespace { -inline void validate_positive_index(const char* var_name, const char* expr, - int val) { - if (val < 1) { - std::stringstream msg; - msg << "Found dimension size less than one in simplex declaration" - << "; variable=" << var_name << "; dimension size expression=" << expr - << "; expression value=" << val; - std::string msg_str(msg.str()); - throw std::invalid_argument(msg_str.c_str()); - } -} -inline void validate_unit_vector_index(const char* var_name, const char* expr, - int val) { - if (val <= 1) { - std::stringstream msg; - if (val == 1) { - msg << "Found dimension size one in unit vector declaration." - << " One-dimensional unit vector is discrete" - << " but the target distribution must be continuous." - << " variable=" << var_name << "; dimension size expression=" << expr; - } else { - msg << "Found dimension size less than one in unit vector declaration" - << "; variable=" << var_name << "; dimension size expression=" << expr - << "; expression value=" << val; - } - std::string msg_str(msg.str()); - throw std::invalid_argument(msg_str.c_str()); - } -} -using std::istream; -using std::string; -using std::stringstream; -using std::vector; -using std::pow; -using stan::io::dump; -using stan::math::lgamma; using stan::model::model_base_crtp; -using stan::model::rvalue; -using stan::model::cons_list; -using stan::model::index_uni; -using stan::model::index_max; -using stan::model::index_min; -using stan::model::index_min_max; -using stan::model::index_multi; -using stan::model::index_omni; -using stan::model::nil_index_list; using namespace stan::math; -using stan::math::pow; stan::math::profile_map profiles__; -static int current_statement__= 0; -static const std::vector locations_array__ = {" (found before start of program)", - " (in 'constant_single_ind', line 22, column 2 to column 24)", - " (in 'constant_single_ind', line 23, column 2 to column 25)", - " (in 'constant_single_ind', line 25, column 2 to column 35)", - " (in 'constant_single_ind', line 51, column 2 to column 20)", - " (in 'constant_single_ind', line 52, column 2 to column 24)", - " (in 'constant_single_ind', line 56, column 6 to column 25)", - " (in 'constant_single_ind', line 55, column 23 to line 57, column 5)", - " (in 'constant_single_ind', line 55, column 4 to line 57, column 5)", - " (in 'constant_single_ind', line 63, column 6 to column 56)", - " (in 'constant_single_ind', line 62, column 11 to line 64, column 5)", - " (in 'constant_single_ind', line 60, column 6 to column 70)", - " (in 'constant_single_ind', line 61, column 6 to column 43)", - " (in 'constant_single_ind', line 59, column 17 to line 62, column 5)", - " (in 'constant_single_ind', line 59, column 4 to line 64, column 5)", - " (in 'constant_single_ind', line 53, column 19 to line 65, column 3)", - " (in 'constant_single_ind', line 53, column 2 to line 65, column 3)", - " (in 'constant_single_ind', line 29, column 13 to column 18)", - " (in 'constant_single_ind', line 29, column 2 to column 20)", - " (in 'constant_single_ind', line 33, column 6 to column 25)", - " (in 'constant_single_ind', line 32, column 23 to line 34, column 5)", - " (in 'constant_single_ind', line 32, column 4 to line 34, column 5)", - " (in 'constant_single_ind', line 37, column 6 to column 70)", - " (in 'constant_single_ind', line 36, column 17 to line 38, column 5)", - " (in 'constant_single_ind', line 36, column 4 to line 38, column 5)", - " (in 'constant_single_ind', line 30, column 19 to line 39, column 3)", - " (in 'constant_single_ind', line 30, column 2 to line 39, column 3)", - " (in 'constant_single_ind', line 41, column 2 to column 44)", - " (in 'constant_single_ind', line 44, column 2 to column 48)", - " (in 'constant_single_ind', line 45, column 2 to column 31)", - " (in 'constant_single_ind', line 47, column 2 to column 37)", - " (in 'constant_single_ind', line 13, column 2 to column 12)", - " (in 'constant_single_ind', line 14, column 13 to column 18)", - " (in 'constant_single_ind', line 14, column 2 to column 20)", - " (in 'constant_single_ind', line 15, column 16 to column 21)", - " (in 'constant_single_ind', line 15, column 2 to column 23)", - " (in 'constant_single_ind', line 16, column 12 to column 17)", - " (in 'constant_single_ind', line 16, column 2 to column 19)", - " (in 'constant_single_ind', line 17, column 2 to column 15)", - " (in 'constant_single_ind', line 51, column 13 to column 18)", - " (in 'constant_single_ind', line 52, column 17 to column 22)", - " (in 'constant_single_ind', line 5, column 4 to column 16)", - " (in 'constant_single_ind', line 4, column 20 to line 6, column 3)", - " (in 'constant_single_ind', line 8, column 4 to column 31)", - " (in 'constant_single_ind', line 7, column 46 to line 9, column 3)"}; -template -stan::promote_args_t -DE(const T0__& beta, std::ostream* pstream__) { +static constexpr std::array locations_array__ = + {" (found before start of program)", + " (in 'string', line 22, column 2 to column 24)", + " (in 'string', line 23, column 2 to column 25)", + " (in 'string', line 25, column 2 to column 35)", + " (in 'string', line 51, column 2 to column 20)", + " (in 'string', line 52, column 2 to column 24)", + " (in 'string', line 56, column 6 to column 25)", + " (in 'string', line 55, column 23 to line 57, column 5)", + " (in 'string', line 55, column 4 to line 57, column 5)", + " (in 'string', line 63, column 6 to column 56)", + " (in 'string', line 62, column 11 to line 64, column 5)", + " (in 'string', line 60, column 6 to column 70)", + " (in 'string', line 61, column 6 to column 43)", + " (in 'string', line 59, column 17 to line 62, column 5)", + " (in 'string', line 59, column 4 to line 64, column 5)", + " (in 'string', line 53, column 19 to line 65, column 3)", + " (in 'string', line 53, column 2 to line 65, column 3)", + " (in 'string', line 29, column 13 to column 18)", + " (in 'string', line 29, column 2 to column 20)", + " (in 'string', line 33, column 6 to column 25)", + " (in 'string', line 32, column 23 to line 34, column 5)", + " (in 'string', line 32, column 4 to line 34, column 5)", + " (in 'string', line 37, column 6 to column 70)", + " (in 'string', line 36, column 17 to line 38, column 5)", + " (in 'string', line 36, column 4 to line 38, column 5)", + " (in 'string', line 30, column 19 to line 39, column 3)", + " (in 'string', line 30, column 2 to line 39, column 3)", + " (in 'string', line 41, column 2 to column 44)", + " (in 'string', line 44, column 2 to column 48)", + " (in 'string', line 45, column 2 to column 31)", + " (in 'string', line 47, column 2 to column 37)", + " (in 'string', line 13, column 2 to column 12)", + " (in 'string', line 14, column 13 to column 18)", + " (in 'string', line 14, column 2 to column 20)", + " (in 'string', line 15, column 16 to column 21)", + " (in 'string', line 15, column 2 to column 23)", + " (in 'string', line 16, column 12 to column 17)", + " (in 'string', line 16, column 2 to column 19)", + " (in 'string', line 17, column 2 to column 15)", + " (in 'string', line 51, column 13 to column 18)", + " (in 'string', line 52, column 17 to column 22)", + " (in 'string', line 5, column 4 to column 16)", + " (in 'string', line 4, column 20 to line 6, column 3)", + " (in 'string', line 8, column 4 to column 31)", + " (in 'string', line 7, column 46 to line 9, column 3)"}; +template >* = nullptr> +stan::promote_args_t DE(const T0__& beta, std::ostream* pstream__); +template , + stan::is_stan_scalar, + stan::is_stan_scalar>* = nullptr> +stan::promote_args_t +size_step(const T0__& y, const T1__& beta, const T2__& time, std::ostream* + pstream__); +template >*> +stan::promote_args_t DE(const T0__& beta, std::ostream* pstream__) { using local_scalar_t__ = stan::promote_args_t; - const static bool propto__ = true; + int current_statement__ = 0; + static constexpr bool propto__ = true; + // suppress unused var warning (void) propto__; local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); - (void) DUMMY_VAR__; // suppress unused var warning - + // suppress unused var warning + (void) DUMMY_VAR__; try { current_statement__ = 41; return beta; } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } - -} -struct DE_functor__ { -template -stan::promote_args_t -operator()(const T0__& beta, std::ostream* pstream__) const -{ -return DE(beta, pstream__); } -}; -template -stan::promote_args_t -size_step(const T0__& y, const T1__& beta, const T2__& time, - std::ostream* pstream__) { +template , + stan::is_stan_scalar, + stan::is_stan_scalar>*> +stan::promote_args_t +size_step(const T0__& y, const T1__& beta, const T2__& time, std::ostream* + pstream__) { using local_scalar_t__ = stan::promote_args_t; - const static bool propto__ = true; + int current_statement__ = 0; + static constexpr bool propto__ = true; + // suppress unused var warning (void) propto__; local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); - (void) DUMMY_VAR__; // suppress unused var warning - + // suppress unused var warning + (void) DUMMY_VAR__; try { current_statement__ = 43; return (y + (DE(beta, pstream__) * time)); } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } - -} -struct size_step_functor__ { -template -stan::promote_args_t -operator()(const T0__& y, const T1__& beta, const T2__& time, - std::ostream* pstream__) const -{ -return size_step(y, beta, time, pstream__); } -}; #include class model_constant_single_ind final : public model_base_crtp { private: @@ -185,494 +130,493 @@ class model_constant_single_ind final : public model_base_crtp obs_index; std::vector time; double y_0_obs; - public: - ~model_constant_single_ind() { } - - inline std::string model_name() const final { return "model_constant_single_ind"; } - inline std::vector model_compile_info() const noexcept { - return std::vector{"stanc_version = stanc3 v2.26.1-4-gd72b68b7-dirty", "stancflags = "}; - } - - - model_constant_single_ind(stan::io::var_context& context__, - unsigned int random_seed__ = 0, - std::ostream* pstream__ = nullptr) : model_base_crtp(0) { - using local_scalar_t__ = double ; - boost::ecuyer1988 base_rng__ = - stan::services::util::create_rng(random_seed__, 0); - (void) base_rng__; // suppress unused var warning - static const char* function__ = "model_constant_single_ind_namespace::model_constant_single_ind"; - (void) function__; // suppress unused var warning + ~model_constant_single_ind() {} + model_constant_single_ind(stan::io::var_context& context__, unsigned int + random_seed__ = 0, std::ostream* + pstream__ = nullptr) : model_base_crtp(0) { + int current_statement__ = 0; + using local_scalar_t__ = double; + boost::ecuyer1988 base_rng__ = + stan::services::util::create_rng(random_seed__, 0); + // suppress unused var warning + (void) base_rng__; + static constexpr const char* function__ = + "model_constant_single_ind_namespace::model_constant_single_ind"; + // suppress unused var warning + (void) function__; local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); - (void) DUMMY_VAR__; // suppress unused var warning - + // suppress unused var warning + (void) DUMMY_VAR__; try { - int pos__; - pos__ = std::numeric_limits::min(); - + int pos__ = std::numeric_limits::min(); pos__ = 1; current_statement__ = 31; - context__.validate_dims("data initialization","n_obs","int", - context__.to_vec()); + context__.validate_dims("data initialization", "n_obs", "int", + std::vector{}); n_obs = std::numeric_limits::min(); - current_statement__ = 31; n_obs = context__.vals_i("n_obs")[(1 - 1)]; current_statement__ = 32; - validate_non_negative_index("y_obs", "n_obs", n_obs); + stan::math::validate_non_negative_index("y_obs", "n_obs", n_obs); current_statement__ = 33; - context__.validate_dims("data initialization","y_obs","double", - context__.to_vec(n_obs)); - y_obs = std::vector(n_obs, std::numeric_limits::quiet_NaN()); - + context__.validate_dims("data initialization", "y_obs", "double", + std::vector{static_cast(n_obs)}); + y_obs = std::vector(n_obs, + std::numeric_limits::quiet_NaN()); current_statement__ = 33; - assign(y_obs, nil_index_list(), context__.vals_r("y_obs"), - "assigning variable y_obs"); + y_obs = context__.vals_r("y_obs"); current_statement__ = 34; - validate_non_negative_index("obs_index", "n_obs", n_obs); + stan::math::validate_non_negative_index("obs_index", "n_obs", n_obs); current_statement__ = 35; - context__.validate_dims("data initialization","obs_index","int", - context__.to_vec(n_obs)); + context__.validate_dims("data initialization", "obs_index", "int", + std::vector{static_cast(n_obs)}); obs_index = std::vector(n_obs, std::numeric_limits::min()); - current_statement__ = 35; - assign(obs_index, nil_index_list(), context__.vals_i("obs_index"), - "assigning variable obs_index"); + obs_index = context__.vals_i("obs_index"); current_statement__ = 36; - validate_non_negative_index("time", "n_obs", n_obs); + stan::math::validate_non_negative_index("time", "n_obs", n_obs); current_statement__ = 37; - context__.validate_dims("data initialization","time","double", - context__.to_vec(n_obs)); - time = std::vector(n_obs, std::numeric_limits::quiet_NaN()); - + context__.validate_dims("data initialization", "time", "double", + std::vector{static_cast(n_obs)}); + time = std::vector(n_obs, + std::numeric_limits::quiet_NaN()); current_statement__ = 37; - assign(time, nil_index_list(), context__.vals_r("time"), - "assigning variable time"); + time = context__.vals_r("time"); current_statement__ = 38; - context__.validate_dims("data initialization","y_0_obs","double", - context__.to_vec()); + context__.validate_dims("data initialization", "y_0_obs", "double", + std::vector{}); y_0_obs = std::numeric_limits::quiet_NaN(); - current_statement__ = 38; y_0_obs = context__.vals_r("y_0_obs")[(1 - 1)]; current_statement__ = 39; - validate_non_negative_index("y_hat", "n_obs", n_obs); + stan::math::validate_non_negative_index("y_hat", "n_obs", n_obs); current_statement__ = 40; - validate_non_negative_index("Delta_hat", "n_obs", n_obs); - } catch (const std::exception& e) { - stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); - } - num_params_r__ = 0U; - - try { - num_params_r__ += 1; - num_params_r__ += 1; - num_params_r__ += 1; + stan::math::validate_non_negative_index("Delta_hat", "n_obs", n_obs); } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } + num_params_r__ = 1 + 1 + 1; + } + inline std::string model_name() const final { + return "model_constant_single_ind"; } - template * = nullptr, stan::require_vector_like_vt* = nullptr> - inline stan::scalar_type_t log_prob_impl(VecR& params_r__, - VecI& params_i__, - std::ostream* pstream__ = nullptr) const { + inline std::vector model_compile_info() const noexcept { + return std::vector{"stanc_version = stanc3 v2.32.2", + "stancflags = --allow-undefined"}; + } + template * = nullptr, + stan::require_vector_like_vt* = nullptr> + inline stan::scalar_type_t + log_prob_impl(VecR& params_r__, VecI& params_i__, std::ostream* + pstream__ = nullptr) const { using T__ = stan::scalar_type_t; using local_scalar_t__ = T__; T__ lp__(0.0); stan::math::accumulator lp_accum__; - static const char* function__ = "model_constant_single_ind_namespace::log_prob"; -(void) function__; // suppress unused var warning - stan::io::reader in__(params_r__, params_i__); + stan::io::deserializer in__(params_r__, params_i__); + int current_statement__ = 0; local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); - (void) DUMMY_VAR__; // suppress unused var warning - + // suppress unused var warning + (void) DUMMY_VAR__; + static constexpr const char* function__ = + "model_constant_single_ind_namespace::log_prob"; + // suppress unused var warning + (void) function__; try { - local_scalar_t__ ind_y_0; - ind_y_0 = DUMMY_VAR__; - - current_statement__ = 1; - ind_y_0 = in__.scalar(); + local_scalar_t__ ind_y_0 = DUMMY_VAR__; current_statement__ = 1; - if (jacobian__) { - current_statement__ = 1; - ind_y_0 = stan::math::lb_constrain(ind_y_0, 0, lp__); - } else { - current_statement__ = 1; - ind_y_0 = stan::math::lb_constrain(ind_y_0, 0); - } - local_scalar_t__ ind_beta; - ind_beta = DUMMY_VAR__; - - current_statement__ = 2; - ind_beta = in__.scalar(); + ind_y_0 = in__.template read_constrain_lb(0, lp__); + local_scalar_t__ ind_beta = DUMMY_VAR__; current_statement__ = 2; - if (jacobian__) { - current_statement__ = 2; - ind_beta = stan::math::lb_constrain(ind_beta, 0, lp__); - } else { - current_statement__ = 2; - ind_beta = stan::math::lb_constrain(ind_beta, 0); - } - local_scalar_t__ global_error_sigma; - global_error_sigma = DUMMY_VAR__; - - current_statement__ = 3; - global_error_sigma = in__.scalar(); + ind_beta = in__.template read_constrain_lb(0, lp__); + local_scalar_t__ global_error_sigma = DUMMY_VAR__; current_statement__ = 3; - if (jacobian__) { - current_statement__ = 3; - global_error_sigma = stan::math::lb_constrain(global_error_sigma, 0, - lp__); - } else { - current_statement__ = 3; - global_error_sigma = stan::math::lb_constrain(global_error_sigma, 0); - } + global_error_sigma = in__.template read_constrain_lb(0, lp__); { current_statement__ = 17; - validate_non_negative_index("y_hat", "n_obs", n_obs); - std::vector y_hat; - y_hat = std::vector(n_obs, DUMMY_VAR__); - + stan::math::validate_non_negative_index("y_hat", "n_obs", n_obs); + std::vector y_hat = + std::vector(n_obs, DUMMY_VAR__); current_statement__ = 26; for (int i = 1; i <= n_obs; ++i) { current_statement__ = 21; - if (logical_eq(obs_index[(i - 1)], 1)) { + if (stan::math::logical_eq( + stan::model::rvalue(obs_index, "obs_index", + stan::model::index_uni(i)), 1)) { current_statement__ = 19; - assign(y_hat, cons_list(index_uni(i), nil_index_list()), ind_y_0, - "assigning variable y_hat"); - } + stan::model::assign(y_hat, ind_y_0, "assigning variable y_hat", + stan::model::index_uni(i)); + } current_statement__ = 24; - if (logical_lt(i, n_obs)) { + if (stan::math::logical_lt(i, n_obs)) { current_statement__ = 22; - assign(y_hat, cons_list(index_uni((i + 1)), nil_index_list()), - size_step(y_hat[(i - 1)], ind_beta, - (time[((i + 1) - 1)] - time[(i - 1)]), pstream__), - "assigning variable y_hat"); - } } + stan::model::assign(y_hat, + size_step( + stan::model::rvalue(y_hat, "y_hat", stan::model::index_uni(i)), + ind_beta, + (stan::model::rvalue(time, "time", + stan::model::index_uni((i + 1))) - + stan::model::rvalue(time, "time", stan::model::index_uni(i))), + pstream__), "assigning variable y_hat", + stan::model::index_uni((i + 1))); + } + } current_statement__ = 27; - lp_accum__.add( - normal_lpdf(y_obs, y_hat, global_error_sigma)); + lp_accum__.add(stan::math::normal_lpdf(y_obs, y_hat, + global_error_sigma)); current_statement__ = 28; - lp_accum__.add( - normal_lpdf(ind_y_0, y_0_obs, global_error_sigma)); + lp_accum__.add(stan::math::normal_lpdf(ind_y_0, y_0_obs, + global_error_sigma)); current_statement__ = 29; - lp_accum__.add(lognormal_lpdf(ind_beta, 0.1, 1)); + lp_accum__.add(stan::math::lognormal_lpdf(ind_beta, 0.1, 1)); current_statement__ = 30; - lp_accum__.add(cauchy_lpdf(global_error_sigma, 0.1, 1)); + lp_accum__.add(stan::math::cauchy_lpdf(global_error_sigma, + 0.1, 1)); } } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } lp_accum__.add(lp__); return lp_accum__.sum(); - } // log_prob_impl() - - template * = nullptr, stan::require_vector_like_vt* = nullptr, stan::require_std_vector_vt* = nullptr> - inline void write_array_impl(RNG& base_rng__, VecR& params_r__, - VecI& params_i__, VecVar& vars__, - const bool emit_transformed_parameters__ = true, - const bool emit_generated_quantities__ = true, - std::ostream* pstream__ = nullptr) const { + } + template * = nullptr, stan::require_vector_like_vt* = nullptr, stan::require_vector_vt* = nullptr> + inline void + write_array_impl(RNG& base_rng__, VecR& params_r__, VecI& params_i__, + VecVar& vars__, const bool + emit_transformed_parameters__ = true, const bool + emit_generated_quantities__ = true, std::ostream* + pstream__ = nullptr) const { using local_scalar_t__ = double; - vars__.resize(0); - stan::io::reader in__(params_r__, params_i__); - static const char* function__ = "model_constant_single_ind_namespace::write_array"; -(void) function__; // suppress unused var warning - (void) function__; // suppress unused var warning + stan::io::deserializer in__(params_r__, params_i__); + stan::io::serializer out__(vars__); + static constexpr bool propto__ = true; + // suppress unused var warning + (void) propto__; double lp__ = 0.0; - (void) lp__; // dummy to suppress unused var warning + // suppress unused var warning + (void) lp__; + int current_statement__ = 0; stan::math::accumulator lp_accum__; local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); - (void) DUMMY_VAR__; // suppress unused var warning - + // suppress unused var warning + (void) DUMMY_VAR__; + constexpr bool jacobian__ = false; + static constexpr const char* function__ = + "model_constant_single_ind_namespace::write_array"; + // suppress unused var warning + (void) function__; try { - double ind_y_0; - ind_y_0 = std::numeric_limits::quiet_NaN(); - - current_statement__ = 1; - ind_y_0 = in__.scalar(); + double ind_y_0 = std::numeric_limits::quiet_NaN(); current_statement__ = 1; - ind_y_0 = stan::math::lb_constrain(ind_y_0, 0); - double ind_beta; - ind_beta = std::numeric_limits::quiet_NaN(); - - current_statement__ = 2; - ind_beta = in__.scalar(); + ind_y_0 = in__.template read_constrain_lb(0, lp__); + double ind_beta = std::numeric_limits::quiet_NaN(); current_statement__ = 2; - ind_beta = stan::math::lb_constrain(ind_beta, 0); - double global_error_sigma; - global_error_sigma = std::numeric_limits::quiet_NaN(); - + ind_beta = in__.template read_constrain_lb(0, lp__); + double global_error_sigma = std::numeric_limits::quiet_NaN(); current_statement__ = 3; - global_error_sigma = in__.scalar(); - current_statement__ = 3; - global_error_sigma = stan::math::lb_constrain(global_error_sigma, 0); - vars__.emplace_back(ind_y_0); - vars__.emplace_back(ind_beta); - vars__.emplace_back(global_error_sigma); - if (logical_negation((primitive_value(emit_transformed_parameters__) || - primitive_value(emit_generated_quantities__)))) { + global_error_sigma = in__.template read_constrain_lb(0, lp__); + out__.write(ind_y_0); + out__.write(ind_beta); + out__.write(global_error_sigma); + if (stan::math::logical_negation( + (stan::math::primitive_value(emit_transformed_parameters__) || + stan::math::primitive_value(emit_generated_quantities__)))) { return ; - } - if (logical_negation(emit_generated_quantities__)) { + } + if (stan::math::logical_negation(emit_generated_quantities__)) { return ; - } - std::vector y_hat; - y_hat = std::vector(n_obs, std::numeric_limits::quiet_NaN()); - - std::vector Delta_hat; - Delta_hat = std::vector(n_obs, std::numeric_limits::quiet_NaN()); - + } + std::vector y_hat = + std::vector(n_obs, std::numeric_limits::quiet_NaN()); + std::vector Delta_hat = + std::vector(n_obs, std::numeric_limits::quiet_NaN()); current_statement__ = 16; for (int i = 1; i <= n_obs; ++i) { current_statement__ = 8; - if (logical_eq(obs_index[(i - 1)], 1)) { + if (stan::math::logical_eq( + stan::model::rvalue(obs_index, "obs_index", + stan::model::index_uni(i)), 1)) { current_statement__ = 6; - assign(y_hat, cons_list(index_uni(i), nil_index_list()), ind_y_0, - "assigning variable y_hat"); - } + stan::model::assign(y_hat, ind_y_0, "assigning variable y_hat", + stan::model::index_uni(i)); + } current_statement__ = 14; - if (logical_lt(i, n_obs)) { + if (stan::math::logical_lt(i, n_obs)) { current_statement__ = 11; - assign(y_hat, cons_list(index_uni((i + 1)), nil_index_list()), - size_step(y_hat[(i - 1)], ind_beta, - (time[((i + 1) - 1)] - time[(i - 1)]), pstream__), - "assigning variable y_hat"); + stan::model::assign(y_hat, + size_step( + stan::model::rvalue(y_hat, "y_hat", stan::model::index_uni(i)), + ind_beta, + (stan::model::rvalue(time, "time", + stan::model::index_uni((i + 1))) - + stan::model::rvalue(time, "time", stan::model::index_uni(i))), + pstream__), "assigning variable y_hat", + stan::model::index_uni((i + 1))); current_statement__ = 12; - assign(Delta_hat, cons_list(index_uni(i), nil_index_list()), - (y_hat[((i + 1) - 1)] - y_hat[(i - 1)]), - "assigning variable Delta_hat"); + stan::model::assign(Delta_hat, + (stan::model::rvalue(y_hat, "y_hat", + stan::model::index_uni((i + 1))) - + stan::model::rvalue(y_hat, "y_hat", stan::model::index_uni(i))), + "assigning variable Delta_hat", stan::model::index_uni(i)); } else { current_statement__ = 9; - assign(Delta_hat, cons_list(index_uni(i), nil_index_list()), - (DE(ind_beta, pstream__) * (time[(i - 1)] - time[((i - 1) - 1)])), - "assigning variable Delta_hat"); - }} - for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { - vars__.emplace_back(y_hat[(sym1__ - 1)]);} - for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { - vars__.emplace_back(Delta_hat[(sym1__ - 1)]);} + stan::model::assign(Delta_hat, (DE(ind_beta, pstream__) * + (stan::model::rvalue(time, "time", stan::model::index_uni(i)) - + stan::model::rvalue(time, "time", stan::model::index_uni((i - 1))))), + "assigning variable Delta_hat", stan::model::index_uni(i)); + } + } + out__.write(y_hat); + out__.write(Delta_hat); } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } - } // write_array_impl() - - template * = nullptr, stan::require_vector_like_vt* = nullptr> - inline void transform_inits_impl(const stan::io::var_context& context__, - VecI& params_i__, VecVar& vars__, - std::ostream* pstream__ = nullptr) const { + } + template * = nullptr, + stan::require_vector_like_vt* = nullptr> + inline void + unconstrain_array_impl(const VecVar& params_r__, const VecI& params_i__, + VecVar& vars__, std::ostream* pstream__ = nullptr) const { using local_scalar_t__ = double; - vars__.clear(); - vars__.reserve(num_params_r__); - + stan::io::deserializer in__(params_r__, params_i__); + stan::io::serializer out__(vars__); + int current_statement__ = 0; + local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); + // suppress unused var warning + (void) DUMMY_VAR__; try { - int pos__; - pos__ = std::numeric_limits::min(); - + int pos__ = std::numeric_limits::min(); pos__ = 1; - double ind_y_0; - ind_y_0 = std::numeric_limits::quiet_NaN(); - + local_scalar_t__ ind_y_0 = DUMMY_VAR__; current_statement__ = 1; - ind_y_0 = context__.vals_r("ind_y_0")[(1 - 1)]; - double ind_y_0_free__; - ind_y_0_free__ = std::numeric_limits::quiet_NaN(); - + ind_y_0 = in__.read(); + out__.write_free_lb(0, ind_y_0); + local_scalar_t__ ind_beta = DUMMY_VAR__; + current_statement__ = 2; + ind_beta = in__.read(); + out__.write_free_lb(0, ind_beta); + local_scalar_t__ global_error_sigma = DUMMY_VAR__; + current_statement__ = 3; + global_error_sigma = in__.read(); + out__.write_free_lb(0, global_error_sigma); + } catch (const std::exception& e) { + stan::lang::rethrow_located(e, locations_array__[current_statement__]); + } + } + template * = nullptr> + inline void + transform_inits_impl(const stan::io::var_context& context__, VecVar& + vars__, std::ostream* pstream__ = nullptr) const { + using local_scalar_t__ = double; + stan::io::serializer out__(vars__); + int current_statement__ = 0; + local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); + // suppress unused var warning + (void) DUMMY_VAR__; + try { current_statement__ = 1; - ind_y_0_free__ = stan::math::lb_free(ind_y_0, 0); - double ind_beta; - ind_beta = std::numeric_limits::quiet_NaN(); - + context__.validate_dims("parameter initialization", "ind_y_0", + "double", std::vector{}); current_statement__ = 2; - ind_beta = context__.vals_r("ind_beta")[(1 - 1)]; - double ind_beta_free__; - ind_beta_free__ = std::numeric_limits::quiet_NaN(); - + context__.validate_dims("parameter initialization", "ind_beta", + "double", std::vector{}); + current_statement__ = 3; + context__.validate_dims("parameter initialization", + "global_error_sigma", "double", std::vector{}); + int pos__ = std::numeric_limits::min(); + pos__ = 1; + local_scalar_t__ ind_y_0 = DUMMY_VAR__; + current_statement__ = 1; + ind_y_0 = context__.vals_r("ind_y_0")[(1 - 1)]; + out__.write_free_lb(0, ind_y_0); + local_scalar_t__ ind_beta = DUMMY_VAR__; current_statement__ = 2; - ind_beta_free__ = stan::math::lb_free(ind_beta, 0); - double global_error_sigma; - global_error_sigma = std::numeric_limits::quiet_NaN(); - + ind_beta = context__.vals_r("ind_beta")[(1 - 1)]; + out__.write_free_lb(0, ind_beta); + local_scalar_t__ global_error_sigma = DUMMY_VAR__; current_statement__ = 3; global_error_sigma = context__.vals_r("global_error_sigma")[(1 - 1)]; - double global_error_sigma_free__; - global_error_sigma_free__ = std::numeric_limits::quiet_NaN(); - - current_statement__ = 3; - global_error_sigma_free__ = stan::math::lb_free(global_error_sigma, 0); - vars__.emplace_back(ind_y_0_free__); - vars__.emplace_back(ind_beta_free__); - vars__.emplace_back(global_error_sigma_free__); + out__.write_free_lb(0, global_error_sigma); } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } - } // transform_inits_impl() - - inline void get_param_names(std::vector& names__) const { - - names__.clear(); - names__.emplace_back("ind_y_0"); - names__.emplace_back("ind_beta"); - names__.emplace_back("global_error_sigma"); - names__.emplace_back("y_hat"); - names__.emplace_back("Delta_hat"); - } // get_param_names() - - inline void get_dims(std::vector>& dimss__) const { - dimss__.clear(); - dimss__.emplace_back(std::vector{}); - - dimss__.emplace_back(std::vector{}); - - dimss__.emplace_back(std::vector{}); - - dimss__.emplace_back(std::vector{static_cast(n_obs)}); - - dimss__.emplace_back(std::vector{static_cast(n_obs)}); - - } // get_dims() - - inline void constrained_param_names( - std::vector& param_names__, - bool emit_transformed_parameters__ = true, - bool emit_generated_quantities__ = true) const - final { - + } + inline void + get_param_names(std::vector& names__, const bool + emit_transformed_parameters__ = true, const bool + emit_generated_quantities__ = true) const { + names__ = std::vector{"ind_y_0", "ind_beta", + "global_error_sigma"}; + if (emit_transformed_parameters__) {} + if (emit_generated_quantities__) { + std::vector temp{"y_hat", "Delta_hat"}; + names__.reserve(names__.size() + temp.size()); + names__.insert(names__.end(), temp.begin(), temp.end()); + } + } + inline void + get_dims(std::vector>& dimss__, const bool + emit_transformed_parameters__ = true, const bool + emit_generated_quantities__ = true) const { + dimss__ = std::vector>{std::vector{}, + std::vector{}, std::vector{}}; + if (emit_transformed_parameters__) {} + if (emit_generated_quantities__) { + std::vector> + temp{std::vector{static_cast(n_obs)}, + std::vector{static_cast(n_obs)}}; + dimss__.reserve(dimss__.size() + temp.size()); + dimss__.insert(dimss__.end(), temp.begin(), temp.end()); + } + } + inline void + constrained_param_names(std::vector& param_names__, bool + emit_transformed_parameters__ = true, bool + emit_generated_quantities__ = true) const final { param_names__.emplace_back(std::string() + "ind_y_0"); param_names__.emplace_back(std::string() + "ind_beta"); param_names__.emplace_back(std::string() + "global_error_sigma"); - if (emit_transformed_parameters__) { - - } - + if (emit_transformed_parameters__) {} if (emit_generated_quantities__) { for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { - { - param_names__.emplace_back(std::string() + "y_hat" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "y_hat" + '.' + + std::to_string(sym1__)); + } for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { - { - param_names__.emplace_back(std::string() + "Delta_hat" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "Delta_hat" + '.' + + std::to_string(sym1__)); + } } - - } // constrained_param_names() - - inline void unconstrained_param_names( - std::vector& param_names__, - bool emit_transformed_parameters__ = true, - bool emit_generated_quantities__ = true) const - final { - + } + inline void + unconstrained_param_names(std::vector& param_names__, bool + emit_transformed_parameters__ = true, bool + emit_generated_quantities__ = true) const final { param_names__.emplace_back(std::string() + "ind_y_0"); param_names__.emplace_back(std::string() + "ind_beta"); param_names__.emplace_back(std::string() + "global_error_sigma"); - if (emit_transformed_parameters__) { - - } - + if (emit_transformed_parameters__) {} if (emit_generated_quantities__) { for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { - { - param_names__.emplace_back(std::string() + "y_hat" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "y_hat" + '.' + + std::to_string(sym1__)); + } for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { - { - param_names__.emplace_back(std::string() + "Delta_hat" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "Delta_hat" + '.' + + std::to_string(sym1__)); + } } - - } // unconstrained_param_names() - + } inline std::string get_constrained_sizedtypes() const { - stringstream s__; - s__ << "[{\"name\":\"ind_y_0\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"ind_beta\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"global_error_sigma\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"y_hat\",\"type\":{\"name\":\"array\",\"length\":" << n_obs << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"Delta_hat\",\"type\":{\"name\":\"array\",\"length\":" << n_obs << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"}]"; - return s__.str(); - } // get_constrained_sizedtypes() - + return std::string("[{\"name\":\"ind_y_0\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"ind_beta\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"global_error_sigma\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"y_hat\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_obs) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"Delta_hat\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_obs) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"}]"); + } inline std::string get_unconstrained_sizedtypes() const { - stringstream s__; - s__ << "[{\"name\":\"ind_y_0\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"ind_beta\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"global_error_sigma\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"y_hat\",\"type\":{\"name\":\"array\",\"length\":" << n_obs << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"Delta_hat\",\"type\":{\"name\":\"array\",\"length\":" << n_obs << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"}]"; - return s__.str(); - } // get_unconstrained_sizedtypes() - - - // Begin method overload boilerplate - template - inline void write_array(RNG& base_rng, - Eigen::Matrix& params_r, - Eigen::Matrix& vars, - const bool emit_transformed_parameters = true, - const bool emit_generated_quantities = true, - std::ostream* pstream = nullptr) const { - std::vector vars_vec(vars.size()); - std::vector params_i; - write_array_impl(base_rng, params_r, params_i, vars_vec, - emit_transformed_parameters, emit_generated_quantities, pstream); - vars.resize(vars_vec.size()); - for (int i = 0; i < vars.size(); ++i) { - vars.coeffRef(i) = vars_vec[i]; - } - } - template - inline void write_array(RNG& base_rng, std::vector& params_r, - std::vector& params_i, - std::vector& vars, - bool emit_transformed_parameters = true, - bool emit_generated_quantities = true, - std::ostream* pstream = nullptr) const { - write_array_impl(base_rng, params_r, params_i, vars, emit_transformed_parameters, emit_generated_quantities, pstream); - } - template - inline T_ log_prob(Eigen::Matrix& params_r, - std::ostream* pstream = nullptr) const { - Eigen::Matrix params_i; - return log_prob_impl(params_r, params_i, pstream); - } - template - inline T__ log_prob(std::vector& params_r, - std::vector& params_i, - std::ostream* pstream = nullptr) const { - return log_prob_impl(params_r, params_i, pstream); - } - - inline void transform_inits(const stan::io::var_context& context, - Eigen::Matrix& params_r, - std::ostream* pstream = nullptr) const final { - std::vector params_r_vec(params_r.size()); - std::vector params_i; - transform_inits_impl(context, params_i, params_r_vec, pstream); - params_r.resize(params_r_vec.size()); - for (int i = 0; i < params_r.size(); ++i) { - params_r.coeffRef(i) = params_r_vec[i]; - } - } - inline void transform_inits(const stan::io::var_context& context, - std::vector& params_i, - std::vector& vars, - std::ostream* pstream = nullptr) const final { - transform_inits_impl(context, params_i, vars, pstream); - } + return std::string("[{\"name\":\"ind_y_0\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"ind_beta\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"global_error_sigma\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"y_hat\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_obs) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"Delta_hat\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_obs) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"}]"); + } + // Begin method overload boilerplate + template inline void + write_array(RNG& base_rng, Eigen::Matrix& params_r, + Eigen::Matrix& vars, const bool + emit_transformed_parameters = true, const bool + emit_generated_quantities = true, std::ostream* + pstream = nullptr) const { + const size_t num_params__ = ((1 + 1) + 1); + const size_t num_transformed = emit_transformed_parameters * (0); + const size_t num_gen_quantities = emit_generated_quantities * ((n_obs + + n_obs)); + const size_t num_to_write = num_params__ + num_transformed + + num_gen_quantities; + std::vector params_i; + vars = Eigen::Matrix::Constant(num_to_write, + std::numeric_limits::quiet_NaN()); + write_array_impl(base_rng, params_r, params_i, vars, + emit_transformed_parameters, emit_generated_quantities, pstream); + } + template inline void + write_array(RNG& base_rng, std::vector& params_r, std::vector& + params_i, std::vector& vars, bool + emit_transformed_parameters = true, bool + emit_generated_quantities = true, std::ostream* + pstream = nullptr) const { + const size_t num_params__ = ((1 + 1) + 1); + const size_t num_transformed = emit_transformed_parameters * (0); + const size_t num_gen_quantities = emit_generated_quantities * ((n_obs + + n_obs)); + const size_t num_to_write = num_params__ + num_transformed + + num_gen_quantities; + vars = std::vector(num_to_write, + std::numeric_limits::quiet_NaN()); + write_array_impl(base_rng, params_r, params_i, vars, + emit_transformed_parameters, emit_generated_quantities, pstream); + } + template inline T_ + log_prob(Eigen::Matrix& params_r, std::ostream* pstream = nullptr) const { + Eigen::Matrix params_i; + return log_prob_impl(params_r, params_i, pstream); + } + template inline T_ + log_prob(std::vector& params_r, std::vector& params_i, + std::ostream* pstream = nullptr) const { + return log_prob_impl(params_r, params_i, pstream); + } + inline void + transform_inits(const stan::io::var_context& context, + Eigen::Matrix& params_r, std::ostream* + pstream = nullptr) const final { + std::vector params_r_vec(params_r.size()); + std::vector params_i; + transform_inits(context, params_i, params_r_vec, pstream); + params_r = Eigen::Map>(params_r_vec.data(), + params_r_vec.size()); + } + inline void + transform_inits(const stan::io::var_context& context, std::vector& + params_i, std::vector& vars, std::ostream* + pstream__ = nullptr) const { + vars.resize(num_params_r__); + transform_inits_impl(context, vars, pstream__); + } + inline void + unconstrain_array(const std::vector& params_constrained, + std::vector& params_unconstrained, std::ostream* + pstream = nullptr) const { + const std::vector params_i; + params_unconstrained = std::vector(num_params_r__, + std::numeric_limits::quiet_NaN()); + unconstrain_array_impl(params_constrained, params_i, + params_unconstrained, pstream); + } + inline void + unconstrain_array(const Eigen::Matrix& params_constrained, + Eigen::Matrix& params_unconstrained, + std::ostream* pstream = nullptr) const { + const std::vector params_i; + params_unconstrained = Eigen::Matrix::Constant(num_params_r__, + std::numeric_limits::quiet_NaN()); + unconstrain_array_impl(params_constrained, params_i, + params_unconstrained, pstream); + } }; } using stan_model = model_constant_single_ind_namespace::model_constant_single_ind; #ifndef USING_R // Boilerplate -stan::model::model_base& new_model( - stan::io::var_context& data_context, - unsigned int seed, - std::ostream* msg_stream) { +stan::model::model_base& +new_model(stan::io::var_context& data_context, unsigned int seed, + std::ostream* msg_stream) { stan_model* m = new stan_model(data_context, seed, msg_stream); return *m; } diff --git a/src/stanExports_linear.h b/src/stanExports_linear.h index b072723..108d8fe 100644 --- a/src/stanExports_linear.h +++ b/src/stanExports_linear.h @@ -21,457 +21,418 @@ #define USE_STANC3 #endif #include -// Code generated by stanc v2.26.1-4-gd72b68b7-dirty +// Code generated by stanc v2.32.2 #include namespace model_linear_namespace { -inline void validate_positive_index(const char* var_name, const char* expr, - int val) { - if (val < 1) { - std::stringstream msg; - msg << "Found dimension size less than one in simplex declaration" - << "; variable=" << var_name << "; dimension size expression=" << expr - << "; expression value=" << val; - std::string msg_str(msg.str()); - throw std::invalid_argument(msg_str.c_str()); - } -} -inline void validate_unit_vector_index(const char* var_name, const char* expr, - int val) { - if (val <= 1) { - std::stringstream msg; - if (val == 1) { - msg << "Found dimension size one in unit vector declaration." - << " One-dimensional unit vector is discrete" - << " but the target distribution must be continuous." - << " variable=" << var_name << "; dimension size expression=" << expr; - } else { - msg << "Found dimension size less than one in unit vector declaration" - << "; variable=" << var_name << "; dimension size expression=" << expr - << "; expression value=" << val; - } - std::string msg_str(msg.str()); - throw std::invalid_argument(msg_str.c_str()); - } -} -using std::istream; -using std::string; -using std::stringstream; -using std::vector; -using std::pow; -using stan::io::dump; -using stan::math::lgamma; using stan::model::model_base_crtp; -using stan::model::rvalue; -using stan::model::cons_list; -using stan::model::index_uni; -using stan::model::index_max; -using stan::model::index_min; -using stan::model::index_min_max; -using stan::model::index_multi; -using stan::model::index_omni; -using stan::model::nil_index_list; using namespace stan::math; -using stan::math::pow; stan::math::profile_map profiles__; -static int current_statement__= 0; -static const std::vector locations_array__ = {" (found before start of program)", - " (in 'linear', line 8, column 2 to column 17)", - " (in 'linear', line 9, column 2 to column 12)", - " (in 'linear', line 10, column 2 to column 22)", - " (in 'linear', line 14, column 2 to column 42)", - " (in 'linear', line 3, column 2 to column 17)", - " (in 'linear', line 4, column 9 to column 10)", - " (in 'linear', line 4, column 2 to column 14)", - " (in 'linear', line 5, column 9 to column 10)", - " (in 'linear', line 5, column 2 to column 14)"}; +static constexpr std::array locations_array__ = + {" (found before start of program)", + " (in 'string', line 8, column 2 to column 17)", + " (in 'string', line 9, column 2 to column 12)", + " (in 'string', line 10, column 2 to column 22)", + " (in 'string', line 14, column 2 to column 42)", + " (in 'string', line 3, column 2 to column 17)", + " (in 'string', line 4, column 9 to column 10)", + " (in 'string', line 4, column 2 to column 14)", + " (in 'string', line 5, column 9 to column 10)", + " (in 'string', line 5, column 2 to column 14)"}; #include class model_linear final : public model_base_crtp { private: int N; - Eigen::Matrix X; - Eigen::Matrix Y; - + Eigen::Matrix X_data__; + Eigen::Matrix Y_data__; + Eigen::Map> X{nullptr, 0}; + Eigen::Map> Y{nullptr, 0}; public: - ~model_linear() { } - - inline std::string model_name() const final { return "model_linear"; } - inline std::vector model_compile_info() const noexcept { - return std::vector{"stanc_version = stanc3 v2.26.1-4-gd72b68b7-dirty", "stancflags = "}; - } - - - model_linear(stan::io::var_context& context__, - unsigned int random_seed__ = 0, - std::ostream* pstream__ = nullptr) : model_base_crtp(0) { - using local_scalar_t__ = double ; - boost::ecuyer1988 base_rng__ = - stan::services::util::create_rng(random_seed__, 0); - (void) base_rng__; // suppress unused var warning - static const char* function__ = "model_linear_namespace::model_linear"; - (void) function__; // suppress unused var warning + ~model_linear() {} + model_linear(stan::io::var_context& context__, unsigned int + random_seed__ = 0, std::ostream* pstream__ = nullptr) + : model_base_crtp(0) { + int current_statement__ = 0; + using local_scalar_t__ = double; + boost::ecuyer1988 base_rng__ = + stan::services::util::create_rng(random_seed__, 0); + // suppress unused var warning + (void) base_rng__; + static constexpr const char* function__ = + "model_linear_namespace::model_linear"; + // suppress unused var warning + (void) function__; local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); - (void) DUMMY_VAR__; // suppress unused var warning - + // suppress unused var warning + (void) DUMMY_VAR__; try { - int pos__; - pos__ = std::numeric_limits::min(); - + int pos__ = std::numeric_limits::min(); pos__ = 1; current_statement__ = 5; - context__.validate_dims("data initialization","N","int", - context__.to_vec()); + context__.validate_dims("data initialization", "N", "int", + std::vector{}); N = std::numeric_limits::min(); - current_statement__ = 5; N = context__.vals_i("N")[(1 - 1)]; current_statement__ = 5; - current_statement__ = 5; - check_greater_or_equal(function__, "N", N, 1); + stan::math::check_greater_or_equal(function__, "N", N, 1); current_statement__ = 6; - validate_non_negative_index("X", "N", N); + stan::math::validate_non_negative_index("X", "N", N); current_statement__ = 7; - context__.validate_dims("data initialization","X","double", - context__.to_vec(N)); - X = Eigen::Matrix(N); - stan::math::fill(X, std::numeric_limits::quiet_NaN()); - + context__.validate_dims("data initialization", "X", "double", + std::vector{static_cast(N)}); + X_data__ = Eigen::Matrix::Constant(N, + std::numeric_limits::quiet_NaN()); + new (&X) Eigen::Map>(X_data__.data(), N); { std::vector X_flat__; current_statement__ = 7; - assign(X_flat__, nil_index_list(), context__.vals_r("X"), - "assigning variable X_flat__"); + X_flat__ = context__.vals_r("X"); current_statement__ = 7; pos__ = 1; current_statement__ = 7; for (int sym1__ = 1; sym1__ <= N; ++sym1__) { current_statement__ = 7; - assign(X, cons_list(index_uni(sym1__), nil_index_list()), - X_flat__[(pos__ - 1)], "assigning variable X"); + stan::model::assign(X, X_flat__[(pos__ - 1)], + "assigning variable X", stan::model::index_uni(sym1__)); current_statement__ = 7; - pos__ = (pos__ + 1);} + pos__ = (pos__ + 1); + } } current_statement__ = 8; - validate_non_negative_index("Y", "N", N); + stan::math::validate_non_negative_index("Y", "N", N); current_statement__ = 9; - context__.validate_dims("data initialization","Y","double", - context__.to_vec(N)); - Y = Eigen::Matrix(N); - stan::math::fill(Y, std::numeric_limits::quiet_NaN()); - + context__.validate_dims("data initialization", "Y", "double", + std::vector{static_cast(N)}); + Y_data__ = Eigen::Matrix::Constant(N, + std::numeric_limits::quiet_NaN()); + new (&Y) Eigen::Map>(Y_data__.data(), N); { std::vector Y_flat__; current_statement__ = 9; - assign(Y_flat__, nil_index_list(), context__.vals_r("Y"), - "assigning variable Y_flat__"); + Y_flat__ = context__.vals_r("Y"); current_statement__ = 9; pos__ = 1; current_statement__ = 9; for (int sym1__ = 1; sym1__ <= N; ++sym1__) { current_statement__ = 9; - assign(Y, cons_list(index_uni(sym1__), nil_index_list()), - Y_flat__[(pos__ - 1)], "assigning variable Y"); + stan::model::assign(Y, Y_flat__[(pos__ - 1)], + "assigning variable Y", stan::model::index_uni(sym1__)); current_statement__ = 9; - pos__ = (pos__ + 1);} + pos__ = (pos__ + 1); + } } } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); - } - num_params_r__ = 0U; - - try { - num_params_r__ += 1; - num_params_r__ += 1; - num_params_r__ += 1; - } catch (const std::exception& e) { - stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } + num_params_r__ = 1 + 1 + 1; } - template * = nullptr, stan::require_vector_like_vt* = nullptr> - inline stan::scalar_type_t log_prob_impl(VecR& params_r__, - VecI& params_i__, - std::ostream* pstream__ = nullptr) const { + inline std::string model_name() const final { + return "model_linear"; + } + inline std::vector model_compile_info() const noexcept { + return std::vector{"stanc_version = stanc3 v2.32.2", + "stancflags = --allow-undefined"}; + } + template * = nullptr, + stan::require_vector_like_vt* = nullptr> + inline stan::scalar_type_t + log_prob_impl(VecR& params_r__, VecI& params_i__, std::ostream* + pstream__ = nullptr) const { using T__ = stan::scalar_type_t; using local_scalar_t__ = T__; T__ lp__(0.0); stan::math::accumulator lp_accum__; - static const char* function__ = "model_linear_namespace::log_prob"; -(void) function__; // suppress unused var warning - stan::io::reader in__(params_r__, params_i__); + stan::io::deserializer in__(params_r__, params_i__); + int current_statement__ = 0; local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); - (void) DUMMY_VAR__; // suppress unused var warning - + // suppress unused var warning + (void) DUMMY_VAR__; + static constexpr const char* function__ = + "model_linear_namespace::log_prob"; + // suppress unused var warning + (void) function__; try { - local_scalar_t__ intercept; - intercept = DUMMY_VAR__; - + local_scalar_t__ intercept = DUMMY_VAR__; current_statement__ = 1; - intercept = in__.scalar(); - local_scalar_t__ beta; - beta = DUMMY_VAR__; - + intercept = in__.template read(); + local_scalar_t__ beta = DUMMY_VAR__; current_statement__ = 2; - beta = in__.scalar(); - local_scalar_t__ sigma; - sigma = DUMMY_VAR__; - - current_statement__ = 3; - sigma = in__.scalar(); + beta = in__.template read(); + local_scalar_t__ sigma = DUMMY_VAR__; current_statement__ = 3; - if (jacobian__) { - current_statement__ = 3; - sigma = stan::math::lb_constrain(sigma, 0, lp__); - } else { - current_statement__ = 3; - sigma = stan::math::lb_constrain(sigma, 0); - } + sigma = in__.template read_constrain_lb(0, lp__); { current_statement__ = 4; - lp_accum__.add( - normal_lpdf(Y, add(intercept, multiply(beta, X)), sigma)); + lp_accum__.add(stan::math::normal_lpdf(Y, + stan::math::add(intercept, + stan::math::multiply(beta, X)), sigma)); } } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } lp_accum__.add(lp__); return lp_accum__.sum(); - } // log_prob_impl() - - template * = nullptr, stan::require_vector_like_vt* = nullptr, stan::require_std_vector_vt* = nullptr> - inline void write_array_impl(RNG& base_rng__, VecR& params_r__, - VecI& params_i__, VecVar& vars__, - const bool emit_transformed_parameters__ = true, - const bool emit_generated_quantities__ = true, - std::ostream* pstream__ = nullptr) const { + } + template * = nullptr, stan::require_vector_like_vt* = nullptr, stan::require_vector_vt* = nullptr> + inline void + write_array_impl(RNG& base_rng__, VecR& params_r__, VecI& params_i__, + VecVar& vars__, const bool + emit_transformed_parameters__ = true, const bool + emit_generated_quantities__ = true, std::ostream* + pstream__ = nullptr) const { using local_scalar_t__ = double; - vars__.resize(0); - stan::io::reader in__(params_r__, params_i__); - static const char* function__ = "model_linear_namespace::write_array"; -(void) function__; // suppress unused var warning - (void) function__; // suppress unused var warning + stan::io::deserializer in__(params_r__, params_i__); + stan::io::serializer out__(vars__); + static constexpr bool propto__ = true; + // suppress unused var warning + (void) propto__; double lp__ = 0.0; - (void) lp__; // dummy to suppress unused var warning + // suppress unused var warning + (void) lp__; + int current_statement__ = 0; stan::math::accumulator lp_accum__; local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); - (void) DUMMY_VAR__; // suppress unused var warning - + // suppress unused var warning + (void) DUMMY_VAR__; + constexpr bool jacobian__ = false; + static constexpr const char* function__ = + "model_linear_namespace::write_array"; + // suppress unused var warning + (void) function__; try { - double intercept; - intercept = std::numeric_limits::quiet_NaN(); - + double intercept = std::numeric_limits::quiet_NaN(); current_statement__ = 1; - intercept = in__.scalar(); - double beta; - beta = std::numeric_limits::quiet_NaN(); - + intercept = in__.template read(); + double beta = std::numeric_limits::quiet_NaN(); current_statement__ = 2; - beta = in__.scalar(); - double sigma; - sigma = std::numeric_limits::quiet_NaN(); - + beta = in__.template read(); + double sigma = std::numeric_limits::quiet_NaN(); current_statement__ = 3; - sigma = in__.scalar(); - current_statement__ = 3; - sigma = stan::math::lb_constrain(sigma, 0); - vars__.emplace_back(intercept); - vars__.emplace_back(beta); - vars__.emplace_back(sigma); - if (logical_negation((primitive_value(emit_transformed_parameters__) || - primitive_value(emit_generated_quantities__)))) { + sigma = in__.template read_constrain_lb(0, lp__); + out__.write(intercept); + out__.write(beta); + out__.write(sigma); + if (stan::math::logical_negation( + (stan::math::primitive_value(emit_transformed_parameters__) || + stan::math::primitive_value(emit_generated_quantities__)))) { return ; - } - if (logical_negation(emit_generated_quantities__)) { + } + if (stan::math::logical_negation(emit_generated_quantities__)) { return ; - } + } } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } - } // write_array_impl() - - template * = nullptr, stan::require_vector_like_vt* = nullptr> - inline void transform_inits_impl(const stan::io::var_context& context__, - VecI& params_i__, VecVar& vars__, - std::ostream* pstream__ = nullptr) const { + } + template * = nullptr, + stan::require_vector_like_vt* = nullptr> + inline void + unconstrain_array_impl(const VecVar& params_r__, const VecI& params_i__, + VecVar& vars__, std::ostream* pstream__ = nullptr) const { using local_scalar_t__ = double; - vars__.clear(); - vars__.reserve(num_params_r__); - + stan::io::deserializer in__(params_r__, params_i__); + stan::io::serializer out__(vars__); + int current_statement__ = 0; + local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); + // suppress unused var warning + (void) DUMMY_VAR__; try { - int pos__; - pos__ = std::numeric_limits::min(); - + int pos__ = std::numeric_limits::min(); pos__ = 1; - double intercept; - intercept = std::numeric_limits::quiet_NaN(); - + local_scalar_t__ intercept = DUMMY_VAR__; + current_statement__ = 1; + intercept = in__.read(); + out__.write(intercept); + local_scalar_t__ beta = DUMMY_VAR__; + current_statement__ = 2; + beta = in__.read(); + out__.write(beta); + local_scalar_t__ sigma = DUMMY_VAR__; + current_statement__ = 3; + sigma = in__.read(); + out__.write_free_lb(0, sigma); + } catch (const std::exception& e) { + stan::lang::rethrow_located(e, locations_array__[current_statement__]); + } + } + template * = nullptr> + inline void + transform_inits_impl(const stan::io::var_context& context__, VecVar& + vars__, std::ostream* pstream__ = nullptr) const { + using local_scalar_t__ = double; + stan::io::serializer out__(vars__); + int current_statement__ = 0; + local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); + // suppress unused var warning + (void) DUMMY_VAR__; + try { + current_statement__ = 1; + context__.validate_dims("parameter initialization", "intercept", + "double", std::vector{}); + current_statement__ = 2; + context__.validate_dims("parameter initialization", "beta", "double", + std::vector{}); + current_statement__ = 3; + context__.validate_dims("parameter initialization", "sigma", "double", + std::vector{}); + int pos__ = std::numeric_limits::min(); + pos__ = 1; + local_scalar_t__ intercept = DUMMY_VAR__; current_statement__ = 1; intercept = context__.vals_r("intercept")[(1 - 1)]; - double beta; - beta = std::numeric_limits::quiet_NaN(); - + out__.write(intercept); + local_scalar_t__ beta = DUMMY_VAR__; current_statement__ = 2; beta = context__.vals_r("beta")[(1 - 1)]; - double sigma; - sigma = std::numeric_limits::quiet_NaN(); - + out__.write(beta); + local_scalar_t__ sigma = DUMMY_VAR__; current_statement__ = 3; sigma = context__.vals_r("sigma")[(1 - 1)]; - double sigma_free__; - sigma_free__ = std::numeric_limits::quiet_NaN(); - - current_statement__ = 3; - sigma_free__ = stan::math::lb_free(sigma, 0); - vars__.emplace_back(intercept); - vars__.emplace_back(beta); - vars__.emplace_back(sigma_free__); + out__.write_free_lb(0, sigma); } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } - } // transform_inits_impl() - - inline void get_param_names(std::vector& names__) const { - - names__.clear(); - names__.emplace_back("intercept"); - names__.emplace_back("beta"); - names__.emplace_back("sigma"); - } // get_param_names() - - inline void get_dims(std::vector>& dimss__) const { - dimss__.clear(); - dimss__.emplace_back(std::vector{}); - - dimss__.emplace_back(std::vector{}); - - dimss__.emplace_back(std::vector{}); - - } // get_dims() - - inline void constrained_param_names( - std::vector& param_names__, - bool emit_transformed_parameters__ = true, - bool emit_generated_quantities__ = true) const - final { - + } + inline void + get_param_names(std::vector& names__, const bool + emit_transformed_parameters__ = true, const bool + emit_generated_quantities__ = true) const { + names__ = std::vector{"intercept", "beta", "sigma"}; + if (emit_transformed_parameters__) {} + if (emit_generated_quantities__) {} + } + inline void + get_dims(std::vector>& dimss__, const bool + emit_transformed_parameters__ = true, const bool + emit_generated_quantities__ = true) const { + dimss__ = std::vector>{std::vector{}, + std::vector{}, std::vector{}}; + if (emit_transformed_parameters__) {} + if (emit_generated_quantities__) {} + } + inline void + constrained_param_names(std::vector& param_names__, bool + emit_transformed_parameters__ = true, bool + emit_generated_quantities__ = true) const final { param_names__.emplace_back(std::string() + "intercept"); param_names__.emplace_back(std::string() + "beta"); param_names__.emplace_back(std::string() + "sigma"); - if (emit_transformed_parameters__) { - - } - - if (emit_generated_quantities__) { - - } - - } // constrained_param_names() - - inline void unconstrained_param_names( - std::vector& param_names__, - bool emit_transformed_parameters__ = true, - bool emit_generated_quantities__ = true) const - final { - + if (emit_transformed_parameters__) {} + if (emit_generated_quantities__) {} + } + inline void + unconstrained_param_names(std::vector& param_names__, bool + emit_transformed_parameters__ = true, bool + emit_generated_quantities__ = true) const final { param_names__.emplace_back(std::string() + "intercept"); param_names__.emplace_back(std::string() + "beta"); param_names__.emplace_back(std::string() + "sigma"); - if (emit_transformed_parameters__) { - - } - - if (emit_generated_quantities__) { - - } - - } // unconstrained_param_names() - + if (emit_transformed_parameters__) {} + if (emit_generated_quantities__) {} + } inline std::string get_constrained_sizedtypes() const { - stringstream s__; - s__ << "[{\"name\":\"intercept\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"beta\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"sigma\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"}]"; - return s__.str(); - } // get_constrained_sizedtypes() - + return std::string("[{\"name\":\"intercept\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"beta\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"sigma\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"}]"); + } inline std::string get_unconstrained_sizedtypes() const { - stringstream s__; - s__ << "[{\"name\":\"intercept\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"beta\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"sigma\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"}]"; - return s__.str(); - } // get_unconstrained_sizedtypes() - - - // Begin method overload boilerplate - template - inline void write_array(RNG& base_rng, - Eigen::Matrix& params_r, - Eigen::Matrix& vars, - const bool emit_transformed_parameters = true, - const bool emit_generated_quantities = true, - std::ostream* pstream = nullptr) const { - std::vector vars_vec(vars.size()); - std::vector params_i; - write_array_impl(base_rng, params_r, params_i, vars_vec, - emit_transformed_parameters, emit_generated_quantities, pstream); - vars.resize(vars_vec.size()); - for (int i = 0; i < vars.size(); ++i) { - vars.coeffRef(i) = vars_vec[i]; - } - } - template - inline void write_array(RNG& base_rng, std::vector& params_r, - std::vector& params_i, - std::vector& vars, - bool emit_transformed_parameters = true, - bool emit_generated_quantities = true, - std::ostream* pstream = nullptr) const { - write_array_impl(base_rng, params_r, params_i, vars, emit_transformed_parameters, emit_generated_quantities, pstream); - } - template - inline T_ log_prob(Eigen::Matrix& params_r, - std::ostream* pstream = nullptr) const { - Eigen::Matrix params_i; - return log_prob_impl(params_r, params_i, pstream); - } - template - inline T__ log_prob(std::vector& params_r, - std::vector& params_i, - std::ostream* pstream = nullptr) const { - return log_prob_impl(params_r, params_i, pstream); - } - - inline void transform_inits(const stan::io::var_context& context, - Eigen::Matrix& params_r, - std::ostream* pstream = nullptr) const final { - std::vector params_r_vec(params_r.size()); - std::vector params_i; - transform_inits_impl(context, params_i, params_r_vec, pstream); - params_r.resize(params_r_vec.size()); - for (int i = 0; i < params_r.size(); ++i) { - params_r.coeffRef(i) = params_r_vec[i]; - } - } - inline void transform_inits(const stan::io::var_context& context, - std::vector& params_i, - std::vector& vars, - std::ostream* pstream = nullptr) const final { - transform_inits_impl(context, params_i, vars, pstream); - } + return std::string("[{\"name\":\"intercept\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"beta\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"sigma\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"}]"); + } + // Begin method overload boilerplate + template inline void + write_array(RNG& base_rng, Eigen::Matrix& params_r, + Eigen::Matrix& vars, const bool + emit_transformed_parameters = true, const bool + emit_generated_quantities = true, std::ostream* + pstream = nullptr) const { + const size_t num_params__ = ((1 + 1) + 1); + const size_t num_transformed = emit_transformed_parameters * (0); + const size_t num_gen_quantities = emit_generated_quantities * (0); + const size_t num_to_write = num_params__ + num_transformed + + num_gen_quantities; + std::vector params_i; + vars = Eigen::Matrix::Constant(num_to_write, + std::numeric_limits::quiet_NaN()); + write_array_impl(base_rng, params_r, params_i, vars, + emit_transformed_parameters, emit_generated_quantities, pstream); + } + template inline void + write_array(RNG& base_rng, std::vector& params_r, std::vector& + params_i, std::vector& vars, bool + emit_transformed_parameters = true, bool + emit_generated_quantities = true, std::ostream* + pstream = nullptr) const { + const size_t num_params__ = ((1 + 1) + 1); + const size_t num_transformed = emit_transformed_parameters * (0); + const size_t num_gen_quantities = emit_generated_quantities * (0); + const size_t num_to_write = num_params__ + num_transformed + + num_gen_quantities; + vars = std::vector(num_to_write, + std::numeric_limits::quiet_NaN()); + write_array_impl(base_rng, params_r, params_i, vars, + emit_transformed_parameters, emit_generated_quantities, pstream); + } + template inline T_ + log_prob(Eigen::Matrix& params_r, std::ostream* pstream = nullptr) const { + Eigen::Matrix params_i; + return log_prob_impl(params_r, params_i, pstream); + } + template inline T_ + log_prob(std::vector& params_r, std::vector& params_i, + std::ostream* pstream = nullptr) const { + return log_prob_impl(params_r, params_i, pstream); + } + inline void + transform_inits(const stan::io::var_context& context, + Eigen::Matrix& params_r, std::ostream* + pstream = nullptr) const final { + std::vector params_r_vec(params_r.size()); + std::vector params_i; + transform_inits(context, params_i, params_r_vec, pstream); + params_r = Eigen::Map>(params_r_vec.data(), + params_r_vec.size()); + } + inline void + transform_inits(const stan::io::var_context& context, std::vector& + params_i, std::vector& vars, std::ostream* + pstream__ = nullptr) const { + vars.resize(num_params_r__); + transform_inits_impl(context, vars, pstream__); + } + inline void + unconstrain_array(const std::vector& params_constrained, + std::vector& params_unconstrained, std::ostream* + pstream = nullptr) const { + const std::vector params_i; + params_unconstrained = std::vector(num_params_r__, + std::numeric_limits::quiet_NaN()); + unconstrain_array_impl(params_constrained, params_i, + params_unconstrained, pstream); + } + inline void + unconstrain_array(const Eigen::Matrix& params_constrained, + Eigen::Matrix& params_unconstrained, + std::ostream* pstream = nullptr) const { + const std::vector params_i; + params_unconstrained = Eigen::Matrix::Constant(num_params_r__, + std::numeric_limits::quiet_NaN()); + unconstrain_array_impl(params_constrained, params_i, + params_unconstrained, pstream); + } }; } using stan_model = model_linear_namespace::model_linear; #ifndef USING_R // Boilerplate -stan::model::model_base& new_model( - stan::io::var_context& data_context, - unsigned int seed, - std::ostream* msg_stream) { +stan::model::model_base& +new_model(stan::io::var_context& data_context, unsigned int seed, + std::ostream* msg_stream) { stan_model* m = new stan_model(data_context, seed, msg_stream); return *m; } diff --git a/src/stanExports_power_multi_ind.h b/src/stanExports_power_multi_ind.h index 9120e17..3455b30 100644 --- a/src/stanExports_power_multi_ind.h +++ b/src/stanExports_power_multi_ind.h @@ -21,221 +21,187 @@ #define USE_STANC3 #endif #include -// Code generated by stanc v2.26.1-4-gd72b68b7-dirty +// Code generated by stanc v2.32.2 #include namespace model_power_multi_ind_namespace { -inline void validate_positive_index(const char* var_name, const char* expr, - int val) { - if (val < 1) { - std::stringstream msg; - msg << "Found dimension size less than one in simplex declaration" - << "; variable=" << var_name << "; dimension size expression=" << expr - << "; expression value=" << val; - std::string msg_str(msg.str()); - throw std::invalid_argument(msg_str.c_str()); - } -} -inline void validate_unit_vector_index(const char* var_name, const char* expr, - int val) { - if (val <= 1) { - std::stringstream msg; - if (val == 1) { - msg << "Found dimension size one in unit vector declaration." - << " One-dimensional unit vector is discrete" - << " but the target distribution must be continuous." - << " variable=" << var_name << "; dimension size expression=" << expr; - } else { - msg << "Found dimension size less than one in unit vector declaration" - << "; variable=" << var_name << "; dimension size expression=" << expr - << "; expression value=" << val; - } - std::string msg_str(msg.str()); - throw std::invalid_argument(msg_str.c_str()); - } -} -using std::istream; -using std::string; -using std::stringstream; -using std::vector; -using std::pow; -using stan::io::dump; -using stan::math::lgamma; using stan::model::model_base_crtp; -using stan::model::rvalue; -using stan::model::cons_list; -using stan::model::index_uni; -using stan::model::index_max; -using stan::model::index_min; -using stan::model::index_min_max; -using stan::model::index_multi; -using stan::model::index_omni; -using stan::model::nil_index_list; using namespace stan::math; -using stan::math::pow; stan::math::profile_map profiles__; -static int current_statement__= 0; -static const std::vector locations_array__ = {" (found before start of program)", - " (in 'power_multi_ind', line 54, column 2 to column 31)", - " (in 'power_multi_ind', line 55, column 2 to column 33)", - " (in 'power_multi_ind', line 56, column 2 to column 33)", - " (in 'power_multi_ind', line 58, column 2 to column 26)", - " (in 'power_multi_ind', line 59, column 2 to column 33)", - " (in 'power_multi_ind', line 60, column 2 to column 26)", - " (in 'power_multi_ind', line 61, column 2 to column 33)", - " (in 'power_multi_ind', line 63, column 2 to column 35)", - " (in 'power_multi_ind', line 100, column 2 to column 20)", - " (in 'power_multi_ind', line 101, column 2 to column 24)", - " (in 'power_multi_ind', line 102, column 2 to column 17)", - " (in 'power_multi_ind', line 105, column 4 to column 35)", - " (in 'power_multi_ind', line 106, column 4 to column 35)", - " (in 'power_multi_ind', line 107, column 4 to column 20)", - " (in 'power_multi_ind', line 109, column 6 to column 36)", - " (in 'power_multi_ind', line 108, column 23 to line 110, column 5)", - " (in 'power_multi_ind', line 108, column 4 to line 110, column 5)", - " (in 'power_multi_ind', line 120, column 6 to column 62)", - " (in 'power_multi_ind', line 119, column 11 to line 121, column 5)", - " (in 'power_multi_ind', line 117, column 8 to column 64)", - " (in 'power_multi_ind', line 116, column 13 to line 118, column 7)", - " (in 'power_multi_ind', line 114, column 8 to column 75)", - " (in 'power_multi_ind', line 115, column 8 to column 45)", - " (in 'power_multi_ind', line 112, column 32 to line 116, column 7)", - " (in 'power_multi_ind', line 112, column 6 to line 118, column 7)", - " (in 'power_multi_ind', line 111, column 17 to line 119, column 5)", - " (in 'power_multi_ind', line 111, column 4 to line 121, column 5)", - " (in 'power_multi_ind', line 103, column 19 to line 122, column 3)", - " (in 'power_multi_ind', line 103, column 2 to line 122, column 3)", - " (in 'power_multi_ind', line 67, column 13 to column 18)", - " (in 'power_multi_ind', line 67, column 2 to column 20)", - " (in 'power_multi_ind', line 68, column 2 to column 17)", - " (in 'power_multi_ind', line 71, column 4 to column 35)", - " (in 'power_multi_ind', line 72, column 4 to column 35)", - " (in 'power_multi_ind', line 73, column 4 to column 20)", - " (in 'power_multi_ind', line 75, column 6 to column 36)", - " (in 'power_multi_ind', line 74, column 23 to line 76, column 5)", - " (in 'power_multi_ind', line 74, column 4 to line 76, column 5)", - " (in 'power_multi_ind', line 80, column 8 to column 75)", - " (in 'power_multi_ind', line 78, column 32 to line 81, column 7)", - " (in 'power_multi_ind', line 78, column 6 to line 81, column 7)", - " (in 'power_multi_ind', line 77, column 17 to line 82, column 5)", - " (in 'power_multi_ind', line 77, column 4 to line 82, column 5)", - " (in 'power_multi_ind', line 69, column 19 to line 83, column 3)", - " (in 'power_multi_ind', line 69, column 2 to line 83, column 3)", - " (in 'power_multi_ind', line 85, column 2 to column 44)", - " (in 'power_multi_ind', line 88, column 2 to column 48)", - " (in 'power_multi_ind', line 89, column 2 to column 61)", - " (in 'power_multi_ind', line 90, column 2 to column 61)", - " (in 'power_multi_ind', line 92, column 2 to column 35)", - " (in 'power_multi_ind', line 93, column 2 to column 33)", - " (in 'power_multi_ind', line 94, column 2 to column 35)", - " (in 'power_multi_ind', line 95, column 2 to column 33)", - " (in 'power_multi_ind', line 97, column 2 to column 35)", - " (in 'power_multi_ind', line 41, column 2 to column 17)", - " (in 'power_multi_ind', line 42, column 2 to column 12)", - " (in 'power_multi_ind', line 43, column 2 to column 12)", - " (in 'power_multi_ind', line 44, column 13 to column 18)", - " (in 'power_multi_ind', line 44, column 2 to column 20)", - " (in 'power_multi_ind', line 45, column 16 to column 21)", - " (in 'power_multi_ind', line 45, column 2 to column 23)", - " (in 'power_multi_ind', line 46, column 12 to column 17)", - " (in 'power_multi_ind', line 46, column 2 to column 19)", - " (in 'power_multi_ind', line 47, column 13 to column 18)", - " (in 'power_multi_ind', line 47, column 2 to column 20)", - " (in 'power_multi_ind', line 48, column 2 to column 13)", - " (in 'power_multi_ind', line 49, column 15 to column 20)", - " (in 'power_multi_ind', line 49, column 2 to column 22)", - " (in 'power_multi_ind', line 54, column 24 to column 29)", - " (in 'power_multi_ind', line 55, column 26 to column 31)", - " (in 'power_multi_ind', line 56, column 26 to column 31)", - " (in 'power_multi_ind', line 100, column 13 to column 18)", - " (in 'power_multi_ind', line 101, column 17 to column 22)", - " (in 'power_multi_ind', line 6, column 4 to column 48)", - " (in 'power_multi_ind', line 5, column 30 to line 7, column 3)", - " (in 'power_multi_ind', line 9, column 4 to column 12)", - " (in 'power_multi_ind', line 10, column 4 to column 12)", - " (in 'power_multi_ind', line 11, column 4 to column 12)", - " (in 'power_multi_ind', line 12, column 4 to column 12)", - " (in 'power_multi_ind', line 13, column 4 to column 15)", - " (in 'power_multi_ind', line 14, column 4 to column 21)", - " (in 'power_multi_ind', line 15, column 4 to column 37)", - " (in 'power_multi_ind', line 16, column 4 to column 37)", - " (in 'power_multi_ind', line 17, column 4 to column 33)", - " (in 'power_multi_ind', line 18, column 4 to column 67)", - " (in 'power_multi_ind', line 19, column 4 to column 17)", - " (in 'power_multi_ind', line 8, column 51 to line 20, column 3)", - " (in 'power_multi_ind', line 22, column 4 to column 14)", - " (in 'power_multi_ind', line 23, column 4 to column 18)", - " (in 'power_multi_ind', line 24, column 4 to column 15)", - " (in 'power_multi_ind', line 25, column 4 to column 24)", - " (in 'power_multi_ind', line 26, column 4 to column 17)", - " (in 'power_multi_ind', line 27, column 4 to column 14)", - " (in 'power_multi_ind', line 30, column 6 to column 59)", - " (in 'power_multi_ind', line 32, column 6 to column 52)", - " (in 'power_multi_ind', line 34, column 6 to column 43)", - " (in 'power_multi_ind', line 28, column 30 to line 35, column 5)", - " (in 'power_multi_ind', line 28, column 4 to line 35, column 5)", - " (in 'power_multi_ind', line 36, column 4 to column 17)", - " (in 'power_multi_ind', line 21, column 62 to line 37, column 3)"}; -template -stan::promote_args_t> +static constexpr std::array locations_array__ = + {" (found before start of program)", + " (in 'string', line 54, column 2 to column 31)", + " (in 'string', line 55, column 2 to column 33)", + " (in 'string', line 56, column 2 to column 33)", + " (in 'string', line 58, column 2 to column 26)", + " (in 'string', line 59, column 2 to column 33)", + " (in 'string', line 60, column 2 to column 26)", + " (in 'string', line 61, column 2 to column 33)", + " (in 'string', line 63, column 2 to column 35)", + " (in 'string', line 100, column 2 to column 20)", + " (in 'string', line 101, column 2 to column 24)", + " (in 'string', line 102, column 2 to column 17)", + " (in 'string', line 105, column 4 to column 35)", + " (in 'string', line 106, column 4 to column 35)", + " (in 'string', line 107, column 4 to column 20)", + " (in 'string', line 109, column 6 to column 36)", + " (in 'string', line 108, column 23 to line 110, column 5)", + " (in 'string', line 108, column 4 to line 110, column 5)", + " (in 'string', line 120, column 6 to column 62)", + " (in 'string', line 119, column 11 to line 121, column 5)", + " (in 'string', line 117, column 8 to column 64)", + " (in 'string', line 116, column 13 to line 118, column 7)", + " (in 'string', line 114, column 8 to column 75)", + " (in 'string', line 115, column 8 to column 45)", + " (in 'string', line 112, column 32 to line 116, column 7)", + " (in 'string', line 112, column 6 to line 118, column 7)", + " (in 'string', line 111, column 17 to line 119, column 5)", + " (in 'string', line 111, column 4 to line 121, column 5)", + " (in 'string', line 103, column 19 to line 122, column 3)", + " (in 'string', line 103, column 2 to line 122, column 3)", + " (in 'string', line 67, column 13 to column 18)", + " (in 'string', line 67, column 2 to column 20)", + " (in 'string', line 68, column 2 to column 17)", + " (in 'string', line 71, column 4 to column 35)", + " (in 'string', line 72, column 4 to column 35)", + " (in 'string', line 73, column 4 to column 20)", + " (in 'string', line 75, column 6 to column 36)", + " (in 'string', line 74, column 23 to line 76, column 5)", + " (in 'string', line 74, column 4 to line 76, column 5)", + " (in 'string', line 80, column 8 to column 75)", + " (in 'string', line 78, column 32 to line 81, column 7)", + " (in 'string', line 78, column 6 to line 81, column 7)", + " (in 'string', line 77, column 17 to line 82, column 5)", + " (in 'string', line 77, column 4 to line 82, column 5)", + " (in 'string', line 69, column 19 to line 83, column 3)", + " (in 'string', line 69, column 2 to line 83, column 3)", + " (in 'string', line 85, column 2 to column 44)", + " (in 'string', line 88, column 2 to column 48)", + " (in 'string', line 89, column 2 to column 61)", + " (in 'string', line 90, column 2 to column 61)", + " (in 'string', line 92, column 2 to column 35)", + " (in 'string', line 93, column 2 to column 33)", + " (in 'string', line 94, column 2 to column 35)", + " (in 'string', line 95, column 2 to column 33)", + " (in 'string', line 97, column 2 to column 35)", + " (in 'string', line 41, column 2 to column 17)", + " (in 'string', line 42, column 2 to column 12)", + " (in 'string', line 43, column 2 to column 12)", + " (in 'string', line 44, column 13 to column 18)", + " (in 'string', line 44, column 2 to column 20)", + " (in 'string', line 45, column 16 to column 21)", + " (in 'string', line 45, column 2 to column 23)", + " (in 'string', line 46, column 12 to column 17)", + " (in 'string', line 46, column 2 to column 19)", + " (in 'string', line 47, column 13 to column 18)", + " (in 'string', line 47, column 2 to column 20)", + " (in 'string', line 48, column 2 to column 13)", + " (in 'string', line 49, column 15 to column 20)", + " (in 'string', line 49, column 2 to column 22)", + " (in 'string', line 54, column 24 to column 29)", + " (in 'string', line 55, column 26 to column 31)", + " (in 'string', line 56, column 26 to column 31)", + " (in 'string', line 100, column 13 to column 18)", + " (in 'string', line 101, column 17 to column 22)", + " (in 'string', line 6, column 4 to column 48)", + " (in 'string', line 5, column 30 to line 7, column 3)", + " (in 'string', line 9, column 4 to column 12)", + " (in 'string', line 10, column 4 to column 12)", + " (in 'string', line 11, column 4 to column 12)", + " (in 'string', line 12, column 4 to column 12)", + " (in 'string', line 13, column 4 to column 15)", + " (in 'string', line 14, column 4 to column 21)", + " (in 'string', line 15, column 4 to column 37)", + " (in 'string', line 16, column 4 to column 37)", + " (in 'string', line 17, column 4 to column 33)", + " (in 'string', line 18, column 4 to column 67)", + " (in 'string', line 19, column 4 to column 17)", + " (in 'string', line 8, column 51 to line 20, column 3)", + " (in 'string', line 22, column 4 to column 14)", + " (in 'string', line 23, column 4 to column 18)", + " (in 'string', line 24, column 4 to column 15)", + " (in 'string', line 25, column 4 to column 24)", + " (in 'string', line 26, column 4 to column 17)", + " (in 'string', line 27, column 4 to column 14)", + " (in 'string', line 30, column 6 to column 59)", + " (in 'string', line 32, column 6 to column 52)", + " (in 'string', line 34, column 6 to column 43)", + " (in 'string', line 28, column 30 to line 35, column 5)", + " (in 'string', line 28, column 4 to line 35, column 5)", + " (in 'string', line 36, column 4 to column 17)", + " (in 'string', line 21, column 62 to line 37, column 3)"}; +template , + stan::is_col_vector, + stan::is_vt_not_complex>* = nullptr> +stan::promote_args_t> +DE(const T0__& y, const T1__& pars_arg__, std::ostream* pstream__); +template , + stan::is_col_vector, + stan::is_vt_not_complex, + stan::is_stan_scalar>* = nullptr> +stan::promote_args_t, T2__> +rk4_step(const T0__& y, const T1__& pars_arg__, const T2__& interval, + std::ostream* pstream__); +template , + stan::is_col_vector, + stan::is_vt_not_complex, + stan::is_stan_scalar, + stan::is_stan_scalar>* = nullptr> +stan::promote_args_t, T2__, T3__> +rk4(const T0__& y, const T1__& pars_arg__, const T2__& interval, const T3__& + step_size, std::ostream* pstream__); +template , + stan::is_col_vector, + stan::is_vt_not_complex>*> +stan::promote_args_t> DE(const T0__& y, const T1__& pars_arg__, std::ostream* pstream__) { using local_scalar_t__ = stan::promote_args_t>; - const auto& pars = to_ref(pars_arg__); - const static bool propto__ = true; + stan::base_type_t>; + int current_statement__ = 0; + const auto& pars = stan::math::to_ref(pars_arg__); + static constexpr bool propto__ = true; + // suppress unused var warning (void) propto__; local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); - (void) DUMMY_VAR__; // suppress unused var warning - + // suppress unused var warning + (void) DUMMY_VAR__; try { current_statement__ = 74; - return (pars[(1 - 1)] * pow((y / pars[(3 - 1)]), -pars[(2 - 1)])); + return (stan::model::rvalue(pars, "pars", stan::model::index_uni(1)) * + stan::math::pow((y / + stan::model::rvalue(pars, "pars", stan::model::index_uni(3))), + -stan::model::rvalue(pars, "pars", stan::model::index_uni(2)))); } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } - } -struct DE_functor__ { -template -stan::promote_args_t> -operator()(const T0__& y, const T1__& pars, std::ostream* pstream__) const -{ -return DE(y, pars, pstream__); -} -}; -template -stan::promote_args_t, -T2__> +template , + stan::is_col_vector, + stan::is_vt_not_complex, + stan::is_stan_scalar>*> +stan::promote_args_t, T2__> rk4_step(const T0__& y, const T1__& pars_arg__, const T2__& interval, std::ostream* pstream__) { using local_scalar_t__ = stan::promote_args_t, - T2__>; - const auto& pars = to_ref(pars_arg__); - const static bool propto__ = true; + stan::base_type_t, T2__>; + int current_statement__ = 0; + const auto& pars = stan::math::to_ref(pars_arg__); + static constexpr bool propto__ = true; + // suppress unused var warning (void) propto__; local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); - (void) DUMMY_VAR__; // suppress unused var warning - + // suppress unused var warning + (void) DUMMY_VAR__; try { - local_scalar_t__ k1; - k1 = DUMMY_VAR__; - - local_scalar_t__ k2; - k2 = DUMMY_VAR__; - - local_scalar_t__ k3; - k3 = DUMMY_VAR__; - - local_scalar_t__ k4; - k4 = DUMMY_VAR__; - - local_scalar_t__ y_hat; - y_hat = DUMMY_VAR__; - + local_scalar_t__ k1 = DUMMY_VAR__; + local_scalar_t__ k2 = DUMMY_VAR__; + local_scalar_t__ k3 = DUMMY_VAR__; + local_scalar_t__ k4 = DUMMY_VAR__; + local_scalar_t__ y_hat = DUMMY_VAR__; current_statement__ = 81; k1 = DE(y, pars, pstream__); current_statement__ = 82; @@ -245,65 +211,51 @@ rk4_step(const T0__& y, const T1__& pars_arg__, const T2__& interval, current_statement__ = 84; k4 = DE((y + (interval * k3)), pars, pstream__); current_statement__ = 85; - y_hat = (y + - (((1.0 / 6.0) * (((k1 + (2.0 * k2)) + (2.0 * k3)) + k4)) * - interval)); + y_hat = (y + (((1.0 / 6.0) * (((k1 + (2.0 * k2)) + (2.0 * k3)) + k4)) * + interval)); current_statement__ = 86; return y_hat; } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } - } -struct rk4_step_functor__ { -template -stan::promote_args_t, -T2__> -operator()(const T0__& y, const T1__& pars, const T2__& interval, - std::ostream* pstream__) const -{ -return rk4_step(y, pars, interval, pstream__); -} -}; -template -stan::promote_args_t, T2__, -T3__> -rk4(const T0__& y, const T1__& pars_arg__, const T2__& interval, - const T3__& step_size, std::ostream* pstream__) { +template , + stan::is_col_vector, + stan::is_vt_not_complex, + stan::is_stan_scalar, + stan::is_stan_scalar>*> +stan::promote_args_t, T2__, T3__> +rk4(const T0__& y, const T1__& pars_arg__, const T2__& interval, const T3__& + step_size, std::ostream* pstream__) { using local_scalar_t__ = stan::promote_args_t, - T2__, - T3__>; - const auto& pars = to_ref(pars_arg__); - const static bool propto__ = true; + stan::base_type_t, T2__, T3__>; + int current_statement__ = 0; + const auto& pars = stan::math::to_ref(pars_arg__); + static constexpr bool propto__ = true; + // suppress unused var warning (void) propto__; local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); - (void) DUMMY_VAR__; // suppress unused var warning - + // suppress unused var warning + (void) DUMMY_VAR__; try { - int steps; - steps = std::numeric_limits::min(); - - local_scalar_t__ duration; - duration = DUMMY_VAR__; - - local_scalar_t__ y_hat; - y_hat = DUMMY_VAR__; - - local_scalar_t__ step_size_temp; - step_size_temp = DUMMY_VAR__; - + int steps = std::numeric_limits::min(); + local_scalar_t__ duration = DUMMY_VAR__; + local_scalar_t__ y_hat = DUMMY_VAR__; + local_scalar_t__ step_size_temp = DUMMY_VAR__; current_statement__ = 92; duration = 0; current_statement__ = 93; y_hat = y; current_statement__ = 98; - while (logical_lt(duration, interval)) { + while (stan::math::logical_lt(duration, interval)) { current_statement__ = 94; - step_size_temp = min((Eigen::Matrix(2) << - step_size, (interval - duration)).finished()); + step_size_temp = stan::math::min( + (Eigen::Matrix(2) << + step_size, + (interval + - + duration)).finished()); current_statement__ = 95; y_hat = rk4_step(y_hat, pars, step_size_temp, pstream__); current_statement__ = 96; @@ -313,21 +265,8 @@ rk4(const T0__& y, const T1__& pars_arg__, const T2__& interval, return y_hat; } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } - } -struct rk4_functor__ { -template -stan::promote_args_t, T2__, -T3__> -operator()(const T0__& y, const T1__& pars, const T2__& interval, - const T3__& step_size, std::ostream* pstream__) const -{ -return rk4(y, pars, interval, step_size, pstream__); -} -}; #include class model_power_multi_ind final : public model_base_crtp { private: @@ -340,850 +279,782 @@ class model_power_multi_ind final : public model_base_crtp ind_id; double y_bar; std::vector y_0_obs; - public: - ~model_power_multi_ind() { } - - inline std::string model_name() const final { return "model_power_multi_ind"; } - inline std::vector model_compile_info() const noexcept { - return std::vector{"stanc_version = stanc3 v2.26.1-4-gd72b68b7-dirty", "stancflags = "}; - } - - - model_power_multi_ind(stan::io::var_context& context__, - unsigned int random_seed__ = 0, - std::ostream* pstream__ = nullptr) : model_base_crtp(0) { - using local_scalar_t__ = double ; - boost::ecuyer1988 base_rng__ = - stan::services::util::create_rng(random_seed__, 0); - (void) base_rng__; // suppress unused var warning - static const char* function__ = "model_power_multi_ind_namespace::model_power_multi_ind"; - (void) function__; // suppress unused var warning + ~model_power_multi_ind() {} + model_power_multi_ind(stan::io::var_context& context__, unsigned int + random_seed__ = 0, std::ostream* pstream__ = nullptr) + : model_base_crtp(0) { + int current_statement__ = 0; + using local_scalar_t__ = double; + boost::ecuyer1988 base_rng__ = + stan::services::util::create_rng(random_seed__, 0); + // suppress unused var warning + (void) base_rng__; + static constexpr const char* function__ = + "model_power_multi_ind_namespace::model_power_multi_ind"; + // suppress unused var warning + (void) function__; local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); - (void) DUMMY_VAR__; // suppress unused var warning - + // suppress unused var warning + (void) DUMMY_VAR__; try { - int pos__; - pos__ = std::numeric_limits::min(); - + int pos__ = std::numeric_limits::min(); pos__ = 1; current_statement__ = 55; - context__.validate_dims("data initialization","step_size","double", - context__.to_vec()); + context__.validate_dims("data initialization", "step_size", "double", + std::vector{}); step_size = std::numeric_limits::quiet_NaN(); - current_statement__ = 55; step_size = context__.vals_r("step_size")[(1 - 1)]; current_statement__ = 56; - context__.validate_dims("data initialization","n_obs","int", - context__.to_vec()); + context__.validate_dims("data initialization", "n_obs", "int", + std::vector{}); n_obs = std::numeric_limits::min(); - current_statement__ = 56; n_obs = context__.vals_i("n_obs")[(1 - 1)]; current_statement__ = 57; - context__.validate_dims("data initialization","n_ind","int", - context__.to_vec()); + context__.validate_dims("data initialization", "n_ind", "int", + std::vector{}); n_ind = std::numeric_limits::min(); - current_statement__ = 57; n_ind = context__.vals_i("n_ind")[(1 - 1)]; current_statement__ = 58; - validate_non_negative_index("y_obs", "n_obs", n_obs); + stan::math::validate_non_negative_index("y_obs", "n_obs", n_obs); current_statement__ = 59; - context__.validate_dims("data initialization","y_obs","double", - context__.to_vec(n_obs)); - y_obs = std::vector(n_obs, std::numeric_limits::quiet_NaN()); - + context__.validate_dims("data initialization", "y_obs", "double", + std::vector{static_cast(n_obs)}); + y_obs = std::vector(n_obs, + std::numeric_limits::quiet_NaN()); current_statement__ = 59; - assign(y_obs, nil_index_list(), context__.vals_r("y_obs"), - "assigning variable y_obs"); + y_obs = context__.vals_r("y_obs"); current_statement__ = 60; - validate_non_negative_index("obs_index", "n_obs", n_obs); + stan::math::validate_non_negative_index("obs_index", "n_obs", n_obs); current_statement__ = 61; - context__.validate_dims("data initialization","obs_index","int", - context__.to_vec(n_obs)); + context__.validate_dims("data initialization", "obs_index", "int", + std::vector{static_cast(n_obs)}); obs_index = std::vector(n_obs, std::numeric_limits::min()); - current_statement__ = 61; - assign(obs_index, nil_index_list(), context__.vals_i("obs_index"), - "assigning variable obs_index"); + obs_index = context__.vals_i("obs_index"); current_statement__ = 62; - validate_non_negative_index("time", "n_obs", n_obs); + stan::math::validate_non_negative_index("time", "n_obs", n_obs); current_statement__ = 63; - context__.validate_dims("data initialization","time","double", - context__.to_vec(n_obs)); - time = std::vector(n_obs, std::numeric_limits::quiet_NaN()); - + context__.validate_dims("data initialization", "time", "double", + std::vector{static_cast(n_obs)}); + time = std::vector(n_obs, + std::numeric_limits::quiet_NaN()); current_statement__ = 63; - assign(time, nil_index_list(), context__.vals_r("time"), - "assigning variable time"); + time = context__.vals_r("time"); current_statement__ = 64; - validate_non_negative_index("ind_id", "n_obs", n_obs); + stan::math::validate_non_negative_index("ind_id", "n_obs", n_obs); current_statement__ = 65; - context__.validate_dims("data initialization","ind_id","int", - context__.to_vec(n_obs)); + context__.validate_dims("data initialization", "ind_id", "int", + std::vector{static_cast(n_obs)}); ind_id = std::vector(n_obs, std::numeric_limits::min()); - current_statement__ = 65; - assign(ind_id, nil_index_list(), context__.vals_i("ind_id"), - "assigning variable ind_id"); + ind_id = context__.vals_i("ind_id"); current_statement__ = 66; - context__.validate_dims("data initialization","y_bar","double", - context__.to_vec()); + context__.validate_dims("data initialization", "y_bar", "double", + std::vector{}); y_bar = std::numeric_limits::quiet_NaN(); - current_statement__ = 66; y_bar = context__.vals_r("y_bar")[(1 - 1)]; current_statement__ = 67; - validate_non_negative_index("y_0_obs", "n_ind", n_ind); + stan::math::validate_non_negative_index("y_0_obs", "n_ind", n_ind); current_statement__ = 68; - context__.validate_dims("data initialization","y_0_obs","double", - context__.to_vec(n_ind)); - y_0_obs = std::vector(n_ind, std::numeric_limits::quiet_NaN()); - + context__.validate_dims("data initialization", "y_0_obs", "double", + std::vector{static_cast(n_ind)}); + y_0_obs = std::vector(n_ind, + std::numeric_limits::quiet_NaN()); current_statement__ = 68; - assign(y_0_obs, nil_index_list(), context__.vals_r("y_0_obs"), - "assigning variable y_0_obs"); + y_0_obs = context__.vals_r("y_0_obs"); current_statement__ = 69; - validate_non_negative_index("ind_y_0", "n_ind", n_ind); + stan::math::validate_non_negative_index("ind_y_0", "n_ind", n_ind); current_statement__ = 70; - validate_non_negative_index("ind_coeff", "n_ind", n_ind); + stan::math::validate_non_negative_index("ind_coeff", "n_ind", n_ind); current_statement__ = 71; - validate_non_negative_index("ind_power", "n_ind", n_ind); + stan::math::validate_non_negative_index("ind_power", "n_ind", n_ind); current_statement__ = 72; - validate_non_negative_index("y_hat", "n_obs", n_obs); + stan::math::validate_non_negative_index("y_hat", "n_obs", n_obs); current_statement__ = 73; - validate_non_negative_index("Delta_hat", "n_obs", n_obs); - } catch (const std::exception& e) { - stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); - } - num_params_r__ = 0U; - - try { - num_params_r__ += n_ind; - num_params_r__ += n_ind; - num_params_r__ += n_ind; - num_params_r__ += 1; - num_params_r__ += 1; - num_params_r__ += 1; - num_params_r__ += 1; - num_params_r__ += 1; + stan::math::validate_non_negative_index("Delta_hat", "n_obs", n_obs); } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } + num_params_r__ = n_ind + n_ind + n_ind + 1 + 1 + 1 + 1 + 1; + } + inline std::string model_name() const final { + return "model_power_multi_ind"; } - template * = nullptr, stan::require_vector_like_vt* = nullptr> - inline stan::scalar_type_t log_prob_impl(VecR& params_r__, - VecI& params_i__, - std::ostream* pstream__ = nullptr) const { + inline std::vector model_compile_info() const noexcept { + return std::vector{"stanc_version = stanc3 v2.32.2", + "stancflags = --allow-undefined"}; + } + template * = nullptr, + stan::require_vector_like_vt* = nullptr> + inline stan::scalar_type_t + log_prob_impl(VecR& params_r__, VecI& params_i__, std::ostream* + pstream__ = nullptr) const { using T__ = stan::scalar_type_t; using local_scalar_t__ = T__; T__ lp__(0.0); stan::math::accumulator lp_accum__; - static const char* function__ = "model_power_multi_ind_namespace::log_prob"; -(void) function__; // suppress unused var warning - stan::io::reader in__(params_r__, params_i__); + stan::io::deserializer in__(params_r__, params_i__); + int current_statement__ = 0; local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); - (void) DUMMY_VAR__; // suppress unused var warning - + // suppress unused var warning + (void) DUMMY_VAR__; + static constexpr const char* function__ = + "model_power_multi_ind_namespace::log_prob"; + // suppress unused var warning + (void) function__; try { - std::vector ind_y_0; - ind_y_0 = std::vector(n_ind, DUMMY_VAR__); - + std::vector ind_y_0 = + std::vector(n_ind, DUMMY_VAR__); current_statement__ = 1; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 1; - assign(ind_y_0, cons_list(index_uni(sym1__), nil_index_list()), - in__.scalar(), "assigning variable ind_y_0");} - current_statement__ = 1; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 1; - if (jacobian__) { - current_statement__ = 1; - assign(ind_y_0, cons_list(index_uni(sym1__), nil_index_list()), - stan::math::lb_constrain(ind_y_0[(sym1__ - 1)], 0, lp__), - "assigning variable ind_y_0"); - } else { - current_statement__ = 1; - assign(ind_y_0, cons_list(index_uni(sym1__), nil_index_list()), - stan::math::lb_constrain(ind_y_0[(sym1__ - 1)], 0), - "assigning variable ind_y_0"); - }} - std::vector ind_coeff; - ind_coeff = std::vector(n_ind, DUMMY_VAR__); - + ind_y_0 = in__.template read_constrain_lb< + std::vector, jacobian__>(0, lp__, n_ind); + std::vector ind_coeff = + std::vector(n_ind, DUMMY_VAR__); current_statement__ = 2; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 2; - assign(ind_coeff, cons_list(index_uni(sym1__), nil_index_list()), - in__.scalar(), "assigning variable ind_coeff");} - current_statement__ = 2; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 2; - if (jacobian__) { - current_statement__ = 2; - assign(ind_coeff, cons_list(index_uni(sym1__), nil_index_list()), - stan::math::lb_constrain(ind_coeff[(sym1__ - 1)], 0, lp__), - "assigning variable ind_coeff"); - } else { - current_statement__ = 2; - assign(ind_coeff, cons_list(index_uni(sym1__), nil_index_list()), - stan::math::lb_constrain(ind_coeff[(sym1__ - 1)], 0), - "assigning variable ind_coeff"); - }} - std::vector ind_power; - ind_power = std::vector(n_ind, DUMMY_VAR__); - + ind_coeff = in__.template read_constrain_lb< + std::vector, jacobian__>(0, lp__, + n_ind); + std::vector ind_power = + std::vector(n_ind, DUMMY_VAR__); current_statement__ = 3; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 3; - assign(ind_power, cons_list(index_uni(sym1__), nil_index_list()), - in__.scalar(), "assigning variable ind_power");} - current_statement__ = 3; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 3; - if (jacobian__) { - current_statement__ = 3; - assign(ind_power, cons_list(index_uni(sym1__), nil_index_list()), - stan::math::lb_constrain(ind_power[(sym1__ - 1)], 0, lp__), - "assigning variable ind_power"); - } else { - current_statement__ = 3; - assign(ind_power, cons_list(index_uni(sym1__), nil_index_list()), - stan::math::lb_constrain(ind_power[(sym1__ - 1)], 0), - "assigning variable ind_power"); - }} - local_scalar_t__ species_coeff_mean; - species_coeff_mean = DUMMY_VAR__; - + ind_power = in__.template read_constrain_lb< + std::vector, jacobian__>(0, lp__, + n_ind); + local_scalar_t__ species_coeff_mean = DUMMY_VAR__; current_statement__ = 4; - species_coeff_mean = in__.scalar(); - local_scalar_t__ species_coeff_sd; - species_coeff_sd = DUMMY_VAR__; - + species_coeff_mean = in__.template read(); + local_scalar_t__ species_coeff_sd = DUMMY_VAR__; current_statement__ = 5; - species_coeff_sd = in__.scalar(); - current_statement__ = 5; - if (jacobian__) { - current_statement__ = 5; - species_coeff_sd = stan::math::lb_constrain(species_coeff_sd, 0, lp__); - } else { - current_statement__ = 5; - species_coeff_sd = stan::math::lb_constrain(species_coeff_sd, 0); - } - local_scalar_t__ species_power_mean; - species_power_mean = DUMMY_VAR__; - + species_coeff_sd = in__.template read_constrain_lb(0, lp__); + local_scalar_t__ species_power_mean = DUMMY_VAR__; current_statement__ = 6; - species_power_mean = in__.scalar(); - local_scalar_t__ species_power_sd; - species_power_sd = DUMMY_VAR__; - + species_power_mean = in__.template read(); + local_scalar_t__ species_power_sd = DUMMY_VAR__; current_statement__ = 7; - species_power_sd = in__.scalar(); - current_statement__ = 7; - if (jacobian__) { - current_statement__ = 7; - species_power_sd = stan::math::lb_constrain(species_power_sd, 0, lp__); - } else { - current_statement__ = 7; - species_power_sd = stan::math::lb_constrain(species_power_sd, 0); - } - local_scalar_t__ global_error_sigma; - global_error_sigma = DUMMY_VAR__; - + species_power_sd = in__.template read_constrain_lb(0, lp__); + local_scalar_t__ global_error_sigma = DUMMY_VAR__; current_statement__ = 8; - global_error_sigma = in__.scalar(); - current_statement__ = 8; - if (jacobian__) { - current_statement__ = 8; - global_error_sigma = stan::math::lb_constrain(global_error_sigma, 0, - lp__); - } else { - current_statement__ = 8; - global_error_sigma = stan::math::lb_constrain(global_error_sigma, 0); - } + global_error_sigma = in__.template read_constrain_lb(0, lp__); { current_statement__ = 30; - validate_non_negative_index("y_hat", "n_obs", n_obs); - std::vector y_hat; - y_hat = std::vector(n_obs, DUMMY_VAR__); - - Eigen::Matrix pars; - pars = Eigen::Matrix(3); - stan::math::fill(pars, DUMMY_VAR__); - + stan::math::validate_non_negative_index("y_hat", "n_obs", n_obs); + std::vector y_hat = + std::vector(n_obs, DUMMY_VAR__); + Eigen::Matrix pars = + Eigen::Matrix::Constant(3, DUMMY_VAR__); current_statement__ = 45; for (int i = 1; i <= n_obs; ++i) { current_statement__ = 33; - assign(pars, cons_list(index_uni(1), nil_index_list()), - ind_coeff[(ind_id[(i - 1)] - 1)], "assigning variable pars"); + stan::model::assign(pars, + stan::model::rvalue(ind_coeff, "ind_coeff", + stan::model::index_uni( + stan::model::rvalue(ind_id, "ind_id", + stan::model::index_uni(i)))), "assigning variable pars", + stan::model::index_uni(1)); current_statement__ = 34; - assign(pars, cons_list(index_uni(2), nil_index_list()), - ind_power[(ind_id[(i - 1)] - 1)], "assigning variable pars"); + stan::model::assign(pars, + stan::model::rvalue(ind_power, "ind_power", + stan::model::index_uni( + stan::model::rvalue(ind_id, "ind_id", + stan::model::index_uni(i)))), "assigning variable pars", + stan::model::index_uni(2)); current_statement__ = 35; - assign(pars, cons_list(index_uni(3), nil_index_list()), y_bar, - "assigning variable pars"); + stan::model::assign(pars, y_bar, "assigning variable pars", + stan::model::index_uni(3)); current_statement__ = 38; - if (logical_eq(obs_index[(i - 1)], 1)) { + if (stan::math::logical_eq( + stan::model::rvalue(obs_index, "obs_index", + stan::model::index_uni(i)), 1)) { current_statement__ = 36; - assign(y_hat, cons_list(index_uni(i), nil_index_list()), - ind_y_0[(ind_id[(i - 1)] - 1)], "assigning variable y_hat"); - } + stan::model::assign(y_hat, + stan::model::rvalue(ind_y_0, "ind_y_0", + stan::model::index_uni( + stan::model::rvalue(ind_id, "ind_id", + stan::model::index_uni(i)))), "assigning variable y_hat", + stan::model::index_uni(i)); + } current_statement__ = 43; - if (logical_lt(i, n_obs)) { + if (stan::math::logical_lt(i, n_obs)) { current_statement__ = 41; - if (logical_eq(ind_id[((i + 1) - 1)], ind_id[(i - 1)])) { + if (stan::math::logical_eq( + stan::model::rvalue(ind_id, "ind_id", + stan::model::index_uni((i + 1))), + stan::model::rvalue(ind_id, "ind_id", + stan::model::index_uni(i)))) { current_statement__ = 39; - assign(y_hat, cons_list(index_uni((i + 1)), nil_index_list()), - rk4(y_hat[(i - 1)], pars, - (time[((i + 1) - 1)] - time[(i - 1)]), - step_size, pstream__), "assigning variable y_hat"); - } - } } + stan::model::assign(y_hat, + rk4( + stan::model::rvalue(y_hat, "y_hat", + stan::model::index_uni(i)), pars, + (stan::model::rvalue(time, "time", + stan::model::index_uni((i + 1))) - + stan::model::rvalue(time, "time", stan::model::index_uni(i))), + step_size, pstream__), "assigning variable y_hat", + stan::model::index_uni((i + 1))); + } + } + } current_statement__ = 46; - lp_accum__.add( - normal_lpdf(y_obs, y_hat, global_error_sigma)); + lp_accum__.add(stan::math::normal_lpdf(y_obs, y_hat, + global_error_sigma)); current_statement__ = 47; - lp_accum__.add( - normal_lpdf(ind_y_0, y_0_obs, global_error_sigma)); + lp_accum__.add(stan::math::normal_lpdf(ind_y_0, y_0_obs, + global_error_sigma)); current_statement__ = 48; - lp_accum__.add( - lognormal_lpdf(ind_coeff, species_coeff_mean, - species_coeff_sd)); + lp_accum__.add(stan::math::lognormal_lpdf(ind_coeff, + species_coeff_mean, species_coeff_sd)); current_statement__ = 49; - lp_accum__.add( - lognormal_lpdf(ind_power, species_power_mean, - species_power_sd)); + lp_accum__.add(stan::math::lognormal_lpdf(ind_power, + species_power_mean, species_power_sd)); current_statement__ = 50; - lp_accum__.add(normal_lpdf(species_coeff_mean, 0, 2)); + lp_accum__.add(stan::math::normal_lpdf(species_coeff_mean, + 0, 2)); current_statement__ = 51; - lp_accum__.add(cauchy_lpdf(species_coeff_sd, 0, 2)); + lp_accum__.add(stan::math::cauchy_lpdf(species_coeff_sd, 0, + 2)); current_statement__ = 52; - lp_accum__.add(normal_lpdf(species_power_mean, 0, 2)); + lp_accum__.add(stan::math::normal_lpdf(species_power_mean, + 0, 2)); current_statement__ = 53; - lp_accum__.add(cauchy_lpdf(species_power_sd, 0, 2)); + lp_accum__.add(stan::math::cauchy_lpdf(species_power_sd, 0, + 2)); current_statement__ = 54; - lp_accum__.add(cauchy_lpdf(global_error_sigma, 0, 5)); + lp_accum__.add(stan::math::cauchy_lpdf(global_error_sigma, + 0, 5)); } } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } lp_accum__.add(lp__); return lp_accum__.sum(); - } // log_prob_impl() - - template * = nullptr, stan::require_vector_like_vt* = nullptr, stan::require_std_vector_vt* = nullptr> - inline void write_array_impl(RNG& base_rng__, VecR& params_r__, - VecI& params_i__, VecVar& vars__, - const bool emit_transformed_parameters__ = true, - const bool emit_generated_quantities__ = true, - std::ostream* pstream__ = nullptr) const { + } + template * = nullptr, stan::require_vector_like_vt* = nullptr, stan::require_vector_vt* = nullptr> + inline void + write_array_impl(RNG& base_rng__, VecR& params_r__, VecI& params_i__, + VecVar& vars__, const bool + emit_transformed_parameters__ = true, const bool + emit_generated_quantities__ = true, std::ostream* + pstream__ = nullptr) const { using local_scalar_t__ = double; - vars__.resize(0); - stan::io::reader in__(params_r__, params_i__); - static const char* function__ = "model_power_multi_ind_namespace::write_array"; -(void) function__; // suppress unused var warning - (void) function__; // suppress unused var warning + stan::io::deserializer in__(params_r__, params_i__); + stan::io::serializer out__(vars__); + static constexpr bool propto__ = true; + // suppress unused var warning + (void) propto__; double lp__ = 0.0; - (void) lp__; // dummy to suppress unused var warning + // suppress unused var warning + (void) lp__; + int current_statement__ = 0; stan::math::accumulator lp_accum__; local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); - (void) DUMMY_VAR__; // suppress unused var warning - + // suppress unused var warning + (void) DUMMY_VAR__; + constexpr bool jacobian__ = false; + static constexpr const char* function__ = + "model_power_multi_ind_namespace::write_array"; + // suppress unused var warning + (void) function__; try { - std::vector ind_y_0; - ind_y_0 = std::vector(n_ind, std::numeric_limits::quiet_NaN()); - - current_statement__ = 1; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 1; - assign(ind_y_0, cons_list(index_uni(sym1__), nil_index_list()), - in__.scalar(), "assigning variable ind_y_0");} + std::vector ind_y_0 = + std::vector(n_ind, std::numeric_limits::quiet_NaN()); current_statement__ = 1; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 1; - assign(ind_y_0, cons_list(index_uni(sym1__), nil_index_list()), - stan::math::lb_constrain(ind_y_0[(sym1__ - 1)], 0), - "assigning variable ind_y_0");} - std::vector ind_coeff; - ind_coeff = std::vector(n_ind, std::numeric_limits::quiet_NaN()); - + ind_y_0 = in__.template read_constrain_lb< + std::vector, jacobian__>(0, lp__, n_ind); + std::vector ind_coeff = + std::vector(n_ind, std::numeric_limits::quiet_NaN()); current_statement__ = 2; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 2; - assign(ind_coeff, cons_list(index_uni(sym1__), nil_index_list()), - in__.scalar(), "assigning variable ind_coeff");} - current_statement__ = 2; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 2; - assign(ind_coeff, cons_list(index_uni(sym1__), nil_index_list()), - stan::math::lb_constrain(ind_coeff[(sym1__ - 1)], 0), - "assigning variable ind_coeff");} - std::vector ind_power; - ind_power = std::vector(n_ind, std::numeric_limits::quiet_NaN()); - - current_statement__ = 3; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 3; - assign(ind_power, cons_list(index_uni(sym1__), nil_index_list()), - in__.scalar(), "assigning variable ind_power");} + ind_coeff = in__.template read_constrain_lb< + std::vector, jacobian__>(0, lp__, + n_ind); + std::vector ind_power = + std::vector(n_ind, std::numeric_limits::quiet_NaN()); current_statement__ = 3; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 3; - assign(ind_power, cons_list(index_uni(sym1__), nil_index_list()), - stan::math::lb_constrain(ind_power[(sym1__ - 1)], 0), - "assigning variable ind_power");} - double species_coeff_mean; - species_coeff_mean = std::numeric_limits::quiet_NaN(); - + ind_power = in__.template read_constrain_lb< + std::vector, jacobian__>(0, lp__, + n_ind); + double species_coeff_mean = std::numeric_limits::quiet_NaN(); current_statement__ = 4; - species_coeff_mean = in__.scalar(); - double species_coeff_sd; - species_coeff_sd = std::numeric_limits::quiet_NaN(); - + species_coeff_mean = in__.template read(); + double species_coeff_sd = std::numeric_limits::quiet_NaN(); current_statement__ = 5; - species_coeff_sd = in__.scalar(); - current_statement__ = 5; - species_coeff_sd = stan::math::lb_constrain(species_coeff_sd, 0); - double species_power_mean; - species_power_mean = std::numeric_limits::quiet_NaN(); - + species_coeff_sd = in__.template read_constrain_lb(0, lp__); + double species_power_mean = std::numeric_limits::quiet_NaN(); current_statement__ = 6; - species_power_mean = in__.scalar(); - double species_power_sd; - species_power_sd = std::numeric_limits::quiet_NaN(); - - current_statement__ = 7; - species_power_sd = in__.scalar(); + species_power_mean = in__.template read(); + double species_power_sd = std::numeric_limits::quiet_NaN(); current_statement__ = 7; - species_power_sd = stan::math::lb_constrain(species_power_sd, 0); - double global_error_sigma; - global_error_sigma = std::numeric_limits::quiet_NaN(); - + species_power_sd = in__.template read_constrain_lb(0, lp__); + double global_error_sigma = std::numeric_limits::quiet_NaN(); current_statement__ = 8; - global_error_sigma = in__.scalar(); - current_statement__ = 8; - global_error_sigma = stan::math::lb_constrain(global_error_sigma, 0); - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - vars__.emplace_back(ind_y_0[(sym1__ - 1)]);} - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - vars__.emplace_back(ind_coeff[(sym1__ - 1)]);} - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - vars__.emplace_back(ind_power[(sym1__ - 1)]);} - vars__.emplace_back(species_coeff_mean); - vars__.emplace_back(species_coeff_sd); - vars__.emplace_back(species_power_mean); - vars__.emplace_back(species_power_sd); - vars__.emplace_back(global_error_sigma); - if (logical_negation((primitive_value(emit_transformed_parameters__) || - primitive_value(emit_generated_quantities__)))) { + global_error_sigma = in__.template read_constrain_lb(0, lp__); + out__.write(ind_y_0); + out__.write(ind_coeff); + out__.write(ind_power); + out__.write(species_coeff_mean); + out__.write(species_coeff_sd); + out__.write(species_power_mean); + out__.write(species_power_sd); + out__.write(global_error_sigma); + if (stan::math::logical_negation( + (stan::math::primitive_value(emit_transformed_parameters__) || + stan::math::primitive_value(emit_generated_quantities__)))) { return ; - } - if (logical_negation(emit_generated_quantities__)) { + } + if (stan::math::logical_negation(emit_generated_quantities__)) { return ; - } - std::vector y_hat; - y_hat = std::vector(n_obs, std::numeric_limits::quiet_NaN()); - - std::vector Delta_hat; - Delta_hat = std::vector(n_obs, std::numeric_limits::quiet_NaN()); - - Eigen::Matrix pars; - pars = Eigen::Matrix(3); - stan::math::fill(pars, std::numeric_limits::quiet_NaN()); - + } + std::vector y_hat = + std::vector(n_obs, std::numeric_limits::quiet_NaN()); + std::vector Delta_hat = + std::vector(n_obs, std::numeric_limits::quiet_NaN()); + Eigen::Matrix pars = + Eigen::Matrix::Constant(3, + std::numeric_limits::quiet_NaN()); current_statement__ = 29; for (int i = 1; i <= n_obs; ++i) { current_statement__ = 12; - assign(pars, cons_list(index_uni(1), nil_index_list()), - ind_coeff[(ind_id[(i - 1)] - 1)], "assigning variable pars"); + stan::model::assign(pars, + stan::model::rvalue(ind_coeff, "ind_coeff", + stan::model::index_uni( + stan::model::rvalue(ind_id, "ind_id", stan::model::index_uni(i)))), + "assigning variable pars", stan::model::index_uni(1)); current_statement__ = 13; - assign(pars, cons_list(index_uni(2), nil_index_list()), - ind_power[(ind_id[(i - 1)] - 1)], "assigning variable pars"); + stan::model::assign(pars, + stan::model::rvalue(ind_power, "ind_power", + stan::model::index_uni( + stan::model::rvalue(ind_id, "ind_id", stan::model::index_uni(i)))), + "assigning variable pars", stan::model::index_uni(2)); current_statement__ = 14; - assign(pars, cons_list(index_uni(3), nil_index_list()), y_bar, - "assigning variable pars"); + stan::model::assign(pars, y_bar, "assigning variable pars", + stan::model::index_uni(3)); current_statement__ = 17; - if (logical_eq(obs_index[(i - 1)], 1)) { + if (stan::math::logical_eq( + stan::model::rvalue(obs_index, "obs_index", + stan::model::index_uni(i)), 1)) { current_statement__ = 15; - assign(y_hat, cons_list(index_uni(i), nil_index_list()), - ind_y_0[(ind_id[(i - 1)] - 1)], "assigning variable y_hat"); - } + stan::model::assign(y_hat, + stan::model::rvalue(ind_y_0, "ind_y_0", + stan::model::index_uni( + stan::model::rvalue(ind_id, "ind_id", + stan::model::index_uni(i)))), "assigning variable y_hat", + stan::model::index_uni(i)); + } current_statement__ = 27; - if (logical_lt(i, n_obs)) { + if (stan::math::logical_lt(i, n_obs)) { current_statement__ = 25; - if (logical_eq(ind_id[((i + 1) - 1)], ind_id[(i - 1)])) { + if (stan::math::logical_eq( + stan::model::rvalue(ind_id, "ind_id", + stan::model::index_uni((i + 1))), + stan::model::rvalue(ind_id, "ind_id", + stan::model::index_uni(i)))) { current_statement__ = 22; - assign(y_hat, cons_list(index_uni((i + 1)), nil_index_list()), - rk4(y_hat[(i - 1)], pars, - (time[((i + 1) - 1)] - time[(i - 1)]), step_size, pstream__), - "assigning variable y_hat"); + stan::model::assign(y_hat, + rk4( + stan::model::rvalue(y_hat, "y_hat", stan::model::index_uni(i)), + pars, + (stan::model::rvalue(time, "time", + stan::model::index_uni((i + 1))) - + stan::model::rvalue(time, "time", stan::model::index_uni(i))), + step_size, pstream__), "assigning variable y_hat", + stan::model::index_uni((i + 1))); current_statement__ = 23; - assign(Delta_hat, cons_list(index_uni(i), nil_index_list()), - (y_hat[((i + 1) - 1)] - y_hat[(i - 1)]), - "assigning variable Delta_hat"); + stan::model::assign(Delta_hat, + (stan::model::rvalue(y_hat, "y_hat", + stan::model::index_uni((i + 1))) - + stan::model::rvalue(y_hat, "y_hat", stan::model::index_uni(i))), + "assigning variable Delta_hat", stan::model::index_uni(i)); } else { current_statement__ = 20; - assign(Delta_hat, cons_list(index_uni(i), nil_index_list()), - (DE(y_hat[(i - 1)], pars, pstream__) * - (time[(i - 1)] - time[((i - 1) - 1)])), - "assigning variable Delta_hat"); + stan::model::assign(Delta_hat, + (DE( + stan::model::rvalue(y_hat, "y_hat", + stan::model::index_uni(i)), pars, pstream__) * + (stan::model::rvalue(time, "time", stan::model::index_uni(i)) - + stan::model::rvalue(time, "time", + stan::model::index_uni((i - 1))))), + "assigning variable Delta_hat", stan::model::index_uni(i)); } } else { current_statement__ = 18; - assign(Delta_hat, cons_list(index_uni(i), nil_index_list()), - (DE(y_hat[(i - 1)], pars, pstream__) * - (time[(i - 1)] - time[((i - 1) - 1)])), - "assigning variable Delta_hat"); - }} - for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { - vars__.emplace_back(y_hat[(sym1__ - 1)]);} - for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { - vars__.emplace_back(Delta_hat[(sym1__ - 1)]);} - for (int sym1__ = 1; sym1__ <= 3; ++sym1__) { - vars__.emplace_back(pars[(sym1__ - 1)]);} + stan::model::assign(Delta_hat, + (DE( + stan::model::rvalue(y_hat, "y_hat", stan::model::index_uni(i)), + pars, pstream__) * + (stan::model::rvalue(time, "time", stan::model::index_uni(i)) - + stan::model::rvalue(time, "time", stan::model::index_uni((i - 1))))), + "assigning variable Delta_hat", stan::model::index_uni(i)); + } + } + out__.write(y_hat); + out__.write(Delta_hat); + out__.write(pars); } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } - } // write_array_impl() - - template * = nullptr, stan::require_vector_like_vt* = nullptr> - inline void transform_inits_impl(const stan::io::var_context& context__, - VecI& params_i__, VecVar& vars__, - std::ostream* pstream__ = nullptr) const { + } + template * = nullptr, + stan::require_vector_like_vt* = nullptr> + inline void + unconstrain_array_impl(const VecVar& params_r__, const VecI& params_i__, + VecVar& vars__, std::ostream* pstream__ = nullptr) const { using local_scalar_t__ = double; - vars__.clear(); - vars__.reserve(num_params_r__); - + stan::io::deserializer in__(params_r__, params_i__); + stan::io::serializer out__(vars__); + int current_statement__ = 0; + local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); + // suppress unused var warning + (void) DUMMY_VAR__; try { - int pos__; - pos__ = std::numeric_limits::min(); - + int pos__ = std::numeric_limits::min(); pos__ = 1; - std::vector ind_y_0; - ind_y_0 = std::vector(n_ind, std::numeric_limits::quiet_NaN()); - + std::vector ind_y_0 = + std::vector(n_ind, DUMMY_VAR__); current_statement__ = 1; - assign(ind_y_0, nil_index_list(), context__.vals_r("ind_y_0"), + stan::model::assign(ind_y_0, + in__.read>(n_ind), "assigning variable ind_y_0"); - std::vector ind_y_0_free__; - ind_y_0_free__ = std::vector(n_ind, std::numeric_limits::quiet_NaN()); - - current_statement__ = 1; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 1; - assign(ind_y_0_free__, - cons_list(index_uni(sym1__), nil_index_list()), - stan::math::lb_free(ind_y_0[(sym1__ - 1)], 0), - "assigning variable ind_y_0_free__");} - std::vector ind_coeff; - ind_coeff = std::vector(n_ind, std::numeric_limits::quiet_NaN()); - + out__.write_free_lb(0, ind_y_0); + std::vector ind_coeff = + std::vector(n_ind, DUMMY_VAR__); current_statement__ = 2; - assign(ind_coeff, nil_index_list(), context__.vals_r("ind_coeff"), + stan::model::assign(ind_coeff, + in__.read>(n_ind), "assigning variable ind_coeff"); - std::vector ind_coeff_free__; - ind_coeff_free__ = std::vector(n_ind, std::numeric_limits::quiet_NaN()); - - current_statement__ = 2; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 2; - assign(ind_coeff_free__, - cons_list(index_uni(sym1__), nil_index_list()), - stan::math::lb_free(ind_coeff[(sym1__ - 1)], 0), - "assigning variable ind_coeff_free__");} - std::vector ind_power; - ind_power = std::vector(n_ind, std::numeric_limits::quiet_NaN()); - + out__.write_free_lb(0, ind_coeff); + std::vector ind_power = + std::vector(n_ind, DUMMY_VAR__); current_statement__ = 3; - assign(ind_power, nil_index_list(), context__.vals_r("ind_power"), + stan::model::assign(ind_power, + in__.read>(n_ind), "assigning variable ind_power"); - std::vector ind_power_free__; - ind_power_free__ = std::vector(n_ind, std::numeric_limits::quiet_NaN()); - + out__.write_free_lb(0, ind_power); + local_scalar_t__ species_coeff_mean = DUMMY_VAR__; + current_statement__ = 4; + species_coeff_mean = in__.read(); + out__.write(species_coeff_mean); + local_scalar_t__ species_coeff_sd = DUMMY_VAR__; + current_statement__ = 5; + species_coeff_sd = in__.read(); + out__.write_free_lb(0, species_coeff_sd); + local_scalar_t__ species_power_mean = DUMMY_VAR__; + current_statement__ = 6; + species_power_mean = in__.read(); + out__.write(species_power_mean); + local_scalar_t__ species_power_sd = DUMMY_VAR__; + current_statement__ = 7; + species_power_sd = in__.read(); + out__.write_free_lb(0, species_power_sd); + local_scalar_t__ global_error_sigma = DUMMY_VAR__; + current_statement__ = 8; + global_error_sigma = in__.read(); + out__.write_free_lb(0, global_error_sigma); + } catch (const std::exception& e) { + stan::lang::rethrow_located(e, locations_array__[current_statement__]); + } + } + template * = nullptr> + inline void + transform_inits_impl(const stan::io::var_context& context__, VecVar& + vars__, std::ostream* pstream__ = nullptr) const { + using local_scalar_t__ = double; + stan::io::serializer out__(vars__); + int current_statement__ = 0; + local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); + // suppress unused var warning + (void) DUMMY_VAR__; + try { + current_statement__ = 1; + context__.validate_dims("parameter initialization", "ind_y_0", + "double", std::vector{static_cast(n_ind)}); + current_statement__ = 2; + context__.validate_dims("parameter initialization", "ind_coeff", + "double", std::vector{static_cast(n_ind)}); + current_statement__ = 3; + context__.validate_dims("parameter initialization", "ind_power", + "double", std::vector{static_cast(n_ind)}); + current_statement__ = 4; + context__.validate_dims("parameter initialization", + "species_coeff_mean", "double", std::vector{}); + current_statement__ = 5; + context__.validate_dims("parameter initialization", "species_coeff_sd", + "double", std::vector{}); + current_statement__ = 6; + context__.validate_dims("parameter initialization", + "species_power_mean", "double", std::vector{}); + current_statement__ = 7; + context__.validate_dims("parameter initialization", "species_power_sd", + "double", std::vector{}); + current_statement__ = 8; + context__.validate_dims("parameter initialization", + "global_error_sigma", "double", std::vector{}); + int pos__ = std::numeric_limits::min(); + pos__ = 1; + std::vector ind_y_0 = + std::vector(n_ind, DUMMY_VAR__); + current_statement__ = 1; + ind_y_0 = context__.vals_r("ind_y_0"); + out__.write_free_lb(0, ind_y_0); + std::vector ind_coeff = + std::vector(n_ind, DUMMY_VAR__); + current_statement__ = 2; + ind_coeff = context__.vals_r("ind_coeff"); + out__.write_free_lb(0, ind_coeff); + std::vector ind_power = + std::vector(n_ind, DUMMY_VAR__); current_statement__ = 3; - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - current_statement__ = 3; - assign(ind_power_free__, - cons_list(index_uni(sym1__), nil_index_list()), - stan::math::lb_free(ind_power[(sym1__ - 1)], 0), - "assigning variable ind_power_free__");} - double species_coeff_mean; - species_coeff_mean = std::numeric_limits::quiet_NaN(); - + ind_power = context__.vals_r("ind_power"); + out__.write_free_lb(0, ind_power); + local_scalar_t__ species_coeff_mean = DUMMY_VAR__; current_statement__ = 4; species_coeff_mean = context__.vals_r("species_coeff_mean")[(1 - 1)]; - double species_coeff_sd; - species_coeff_sd = std::numeric_limits::quiet_NaN(); - + out__.write(species_coeff_mean); + local_scalar_t__ species_coeff_sd = DUMMY_VAR__; current_statement__ = 5; species_coeff_sd = context__.vals_r("species_coeff_sd")[(1 - 1)]; - double species_coeff_sd_free__; - species_coeff_sd_free__ = std::numeric_limits::quiet_NaN(); - - current_statement__ = 5; - species_coeff_sd_free__ = stan::math::lb_free(species_coeff_sd, 0); - double species_power_mean; - species_power_mean = std::numeric_limits::quiet_NaN(); - + out__.write_free_lb(0, species_coeff_sd); + local_scalar_t__ species_power_mean = DUMMY_VAR__; current_statement__ = 6; species_power_mean = context__.vals_r("species_power_mean")[(1 - 1)]; - double species_power_sd; - species_power_sd = std::numeric_limits::quiet_NaN(); - + out__.write(species_power_mean); + local_scalar_t__ species_power_sd = DUMMY_VAR__; current_statement__ = 7; species_power_sd = context__.vals_r("species_power_sd")[(1 - 1)]; - double species_power_sd_free__; - species_power_sd_free__ = std::numeric_limits::quiet_NaN(); - - current_statement__ = 7; - species_power_sd_free__ = stan::math::lb_free(species_power_sd, 0); - double global_error_sigma; - global_error_sigma = std::numeric_limits::quiet_NaN(); - + out__.write_free_lb(0, species_power_sd); + local_scalar_t__ global_error_sigma = DUMMY_VAR__; current_statement__ = 8; global_error_sigma = context__.vals_r("global_error_sigma")[(1 - 1)]; - double global_error_sigma_free__; - global_error_sigma_free__ = std::numeric_limits::quiet_NaN(); - - current_statement__ = 8; - global_error_sigma_free__ = stan::math::lb_free(global_error_sigma, 0); - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - vars__.emplace_back(ind_y_0_free__[(sym1__ - 1)]);} - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - vars__.emplace_back(ind_coeff_free__[(sym1__ - 1)]);} - for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - vars__.emplace_back(ind_power_free__[(sym1__ - 1)]);} - vars__.emplace_back(species_coeff_mean); - vars__.emplace_back(species_coeff_sd_free__); - vars__.emplace_back(species_power_mean); - vars__.emplace_back(species_power_sd_free__); - vars__.emplace_back(global_error_sigma_free__); + out__.write_free_lb(0, global_error_sigma); } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } - } // transform_inits_impl() - - inline void get_param_names(std::vector& names__) const { - - names__.clear(); - names__.emplace_back("ind_y_0"); - names__.emplace_back("ind_coeff"); - names__.emplace_back("ind_power"); - names__.emplace_back("species_coeff_mean"); - names__.emplace_back("species_coeff_sd"); - names__.emplace_back("species_power_mean"); - names__.emplace_back("species_power_sd"); - names__.emplace_back("global_error_sigma"); - names__.emplace_back("y_hat"); - names__.emplace_back("Delta_hat"); - names__.emplace_back("pars"); - } // get_param_names() - - inline void get_dims(std::vector>& dimss__) const { - dimss__.clear(); - dimss__.emplace_back(std::vector{static_cast(n_ind)}); - - dimss__.emplace_back(std::vector{static_cast(n_ind)}); - - dimss__.emplace_back(std::vector{static_cast(n_ind)}); - - dimss__.emplace_back(std::vector{}); - - dimss__.emplace_back(std::vector{}); - - dimss__.emplace_back(std::vector{}); - - dimss__.emplace_back(std::vector{}); - - dimss__.emplace_back(std::vector{}); - - dimss__.emplace_back(std::vector{static_cast(n_obs)}); - - dimss__.emplace_back(std::vector{static_cast(n_obs)}); - - dimss__.emplace_back(std::vector{static_cast(3)}); - - } // get_dims() - - inline void constrained_param_names( - std::vector& param_names__, - bool emit_transformed_parameters__ = true, - bool emit_generated_quantities__ = true) const - final { - + } + inline void + get_param_names(std::vector& names__, const bool + emit_transformed_parameters__ = true, const bool + emit_generated_quantities__ = true) const { + names__ = std::vector{"ind_y_0", "ind_coeff", "ind_power", + "species_coeff_mean", "species_coeff_sd", + "species_power_mean", "species_power_sd", + "global_error_sigma"}; + if (emit_transformed_parameters__) {} + if (emit_generated_quantities__) { + std::vector temp{"y_hat", "Delta_hat", "pars"}; + names__.reserve(names__.size() + temp.size()); + names__.insert(names__.end(), temp.begin(), temp.end()); + } + } + inline void + get_dims(std::vector>& dimss__, const bool + emit_transformed_parameters__ = true, const bool + emit_generated_quantities__ = true) const { + dimss__ = std::vector>{std::vector{static_cast< + size_t>( + n_ind)}, + std::vector{static_cast(n_ind)}, + std::vector{static_cast(n_ind)}, + std::vector{}, std::vector{}, + std::vector{}, std::vector{}, + std::vector{}}; + if (emit_transformed_parameters__) {} + if (emit_generated_quantities__) { + std::vector> + temp{std::vector{static_cast(n_obs)}, + std::vector{static_cast(n_obs)}, + std::vector{static_cast(3)}}; + dimss__.reserve(dimss__.size() + temp.size()); + dimss__.insert(dimss__.end(), temp.begin(), temp.end()); + } + } + inline void + constrained_param_names(std::vector& param_names__, bool + emit_transformed_parameters__ = true, bool + emit_generated_quantities__ = true) const final { for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - { - param_names__.emplace_back(std::string() + "ind_y_0" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "ind_y_0" + '.' + + std::to_string(sym1__)); + } for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - { - param_names__.emplace_back(std::string() + "ind_coeff" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "ind_coeff" + '.' + + std::to_string(sym1__)); + } for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - { - param_names__.emplace_back(std::string() + "ind_power" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "ind_power" + '.' + + std::to_string(sym1__)); + } param_names__.emplace_back(std::string() + "species_coeff_mean"); param_names__.emplace_back(std::string() + "species_coeff_sd"); param_names__.emplace_back(std::string() + "species_power_mean"); param_names__.emplace_back(std::string() + "species_power_sd"); param_names__.emplace_back(std::string() + "global_error_sigma"); - if (emit_transformed_parameters__) { - - } - + if (emit_transformed_parameters__) {} if (emit_generated_quantities__) { for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { - { - param_names__.emplace_back(std::string() + "y_hat" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "y_hat" + '.' + + std::to_string(sym1__)); + } for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { - { - param_names__.emplace_back(std::string() + "Delta_hat" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "Delta_hat" + '.' + + std::to_string(sym1__)); + } for (int sym1__ = 1; sym1__ <= 3; ++sym1__) { - { - param_names__.emplace_back(std::string() + "pars" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "pars" + '.' + + std::to_string(sym1__)); + } } - - } // constrained_param_names() - - inline void unconstrained_param_names( - std::vector& param_names__, - bool emit_transformed_parameters__ = true, - bool emit_generated_quantities__ = true) const - final { - + } + inline void + unconstrained_param_names(std::vector& param_names__, bool + emit_transformed_parameters__ = true, bool + emit_generated_quantities__ = true) const final { for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - { - param_names__.emplace_back(std::string() + "ind_y_0" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "ind_y_0" + '.' + + std::to_string(sym1__)); + } for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - { - param_names__.emplace_back(std::string() + "ind_coeff" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "ind_coeff" + '.' + + std::to_string(sym1__)); + } for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { - { - param_names__.emplace_back(std::string() + "ind_power" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "ind_power" + '.' + + std::to_string(sym1__)); + } param_names__.emplace_back(std::string() + "species_coeff_mean"); param_names__.emplace_back(std::string() + "species_coeff_sd"); param_names__.emplace_back(std::string() + "species_power_mean"); param_names__.emplace_back(std::string() + "species_power_sd"); param_names__.emplace_back(std::string() + "global_error_sigma"); - if (emit_transformed_parameters__) { - - } - + if (emit_transformed_parameters__) {} if (emit_generated_quantities__) { for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { - { - param_names__.emplace_back(std::string() + "y_hat" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "y_hat" + '.' + + std::to_string(sym1__)); + } for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { - { - param_names__.emplace_back(std::string() + "Delta_hat" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "Delta_hat" + '.' + + std::to_string(sym1__)); + } for (int sym1__ = 1; sym1__ <= 3; ++sym1__) { - { - param_names__.emplace_back(std::string() + "pars" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "pars" + '.' + + std::to_string(sym1__)); + } } - - } // unconstrained_param_names() - + } inline std::string get_constrained_sizedtypes() const { - stringstream s__; - s__ << "[{\"name\":\"ind_y_0\",\"type\":{\"name\":\"array\",\"length\":" << n_ind << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"ind_coeff\",\"type\":{\"name\":\"array\",\"length\":" << n_ind << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"ind_power\",\"type\":{\"name\":\"array\",\"length\":" << n_ind << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"species_coeff_mean\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_coeff_sd\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_power_mean\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_power_sd\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"global_error_sigma\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"y_hat\",\"type\":{\"name\":\"array\",\"length\":" << n_obs << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"Delta_hat\",\"type\":{\"name\":\"array\",\"length\":" << n_obs << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"pars\",\"type\":{\"name\":\"vector\",\"length\":" << 3 << "},\"block\":\"generated_quantities\"}]"; - return s__.str(); - } // get_constrained_sizedtypes() - + return std::string("[{\"name\":\"ind_y_0\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_ind) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"ind_coeff\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_ind) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"ind_power\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_ind) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"species_coeff_mean\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_coeff_sd\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_power_mean\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_power_sd\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"global_error_sigma\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"y_hat\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_obs) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"Delta_hat\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_obs) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"pars\",\"type\":{\"name\":\"vector\",\"length\":" + std::to_string(3) + "},\"block\":\"generated_quantities\"}]"); + } inline std::string get_unconstrained_sizedtypes() const { - stringstream s__; - s__ << "[{\"name\":\"ind_y_0\",\"type\":{\"name\":\"array\",\"length\":" << n_ind << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"ind_coeff\",\"type\":{\"name\":\"array\",\"length\":" << n_ind << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"ind_power\",\"type\":{\"name\":\"array\",\"length\":" << n_ind << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"species_coeff_mean\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_coeff_sd\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_power_mean\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_power_sd\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"global_error_sigma\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"y_hat\",\"type\":{\"name\":\"array\",\"length\":" << n_obs << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"Delta_hat\",\"type\":{\"name\":\"array\",\"length\":" << n_obs << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"pars\",\"type\":{\"name\":\"vector\",\"length\":" << 3 << "},\"block\":\"generated_quantities\"}]"; - return s__.str(); - } // get_unconstrained_sizedtypes() - - - // Begin method overload boilerplate - template - inline void write_array(RNG& base_rng, - Eigen::Matrix& params_r, - Eigen::Matrix& vars, - const bool emit_transformed_parameters = true, - const bool emit_generated_quantities = true, - std::ostream* pstream = nullptr) const { - std::vector vars_vec(vars.size()); - std::vector params_i; - write_array_impl(base_rng, params_r, params_i, vars_vec, - emit_transformed_parameters, emit_generated_quantities, pstream); - vars.resize(vars_vec.size()); - for (int i = 0; i < vars.size(); ++i) { - vars.coeffRef(i) = vars_vec[i]; - } - } - template - inline void write_array(RNG& base_rng, std::vector& params_r, - std::vector& params_i, - std::vector& vars, - bool emit_transformed_parameters = true, - bool emit_generated_quantities = true, - std::ostream* pstream = nullptr) const { - write_array_impl(base_rng, params_r, params_i, vars, emit_transformed_parameters, emit_generated_quantities, pstream); - } - template - inline T_ log_prob(Eigen::Matrix& params_r, - std::ostream* pstream = nullptr) const { - Eigen::Matrix params_i; - return log_prob_impl(params_r, params_i, pstream); - } - template - inline T__ log_prob(std::vector& params_r, - std::vector& params_i, - std::ostream* pstream = nullptr) const { - return log_prob_impl(params_r, params_i, pstream); - } - - inline void transform_inits(const stan::io::var_context& context, - Eigen::Matrix& params_r, - std::ostream* pstream = nullptr) const final { - std::vector params_r_vec(params_r.size()); - std::vector params_i; - transform_inits_impl(context, params_i, params_r_vec, pstream); - params_r.resize(params_r_vec.size()); - for (int i = 0; i < params_r.size(); ++i) { - params_r.coeffRef(i) = params_r_vec[i]; - } - } - inline void transform_inits(const stan::io::var_context& context, - std::vector& params_i, - std::vector& vars, - std::ostream* pstream = nullptr) const final { - transform_inits_impl(context, params_i, vars, pstream); - } + return std::string("[{\"name\":\"ind_y_0\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_ind) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"ind_coeff\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_ind) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"ind_power\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_ind) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"species_coeff_mean\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_coeff_sd\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_power_mean\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_power_sd\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"global_error_sigma\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"y_hat\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_obs) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"Delta_hat\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_obs) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"pars\",\"type\":{\"name\":\"vector\",\"length\":" + std::to_string(3) + "},\"block\":\"generated_quantities\"}]"); + } + // Begin method overload boilerplate + template inline void + write_array(RNG& base_rng, Eigen::Matrix& params_r, + Eigen::Matrix& vars, const bool + emit_transformed_parameters = true, const bool + emit_generated_quantities = true, std::ostream* + pstream = nullptr) const { + const size_t num_params__ = (((((((n_ind + n_ind) + n_ind) + 1) + 1) + 1) + + 1) + 1); + const size_t num_transformed = emit_transformed_parameters * (0); + const size_t num_gen_quantities = emit_generated_quantities * (((n_obs + + n_obs) + 3)); + const size_t num_to_write = num_params__ + num_transformed + + num_gen_quantities; + std::vector params_i; + vars = Eigen::Matrix::Constant(num_to_write, + std::numeric_limits::quiet_NaN()); + write_array_impl(base_rng, params_r, params_i, vars, + emit_transformed_parameters, emit_generated_quantities, pstream); + } + template inline void + write_array(RNG& base_rng, std::vector& params_r, std::vector& + params_i, std::vector& vars, bool + emit_transformed_parameters = true, bool + emit_generated_quantities = true, std::ostream* + pstream = nullptr) const { + const size_t num_params__ = (((((((n_ind + n_ind) + n_ind) + 1) + 1) + 1) + + 1) + 1); + const size_t num_transformed = emit_transformed_parameters * (0); + const size_t num_gen_quantities = emit_generated_quantities * (((n_obs + + n_obs) + 3)); + const size_t num_to_write = num_params__ + num_transformed + + num_gen_quantities; + vars = std::vector(num_to_write, + std::numeric_limits::quiet_NaN()); + write_array_impl(base_rng, params_r, params_i, vars, + emit_transformed_parameters, emit_generated_quantities, pstream); + } + template inline T_ + log_prob(Eigen::Matrix& params_r, std::ostream* pstream = nullptr) const { + Eigen::Matrix params_i; + return log_prob_impl(params_r, params_i, pstream); + } + template inline T_ + log_prob(std::vector& params_r, std::vector& params_i, + std::ostream* pstream = nullptr) const { + return log_prob_impl(params_r, params_i, pstream); + } + inline void + transform_inits(const stan::io::var_context& context, + Eigen::Matrix& params_r, std::ostream* + pstream = nullptr) const final { + std::vector params_r_vec(params_r.size()); + std::vector params_i; + transform_inits(context, params_i, params_r_vec, pstream); + params_r = Eigen::Map>(params_r_vec.data(), + params_r_vec.size()); + } + inline void + transform_inits(const stan::io::var_context& context, std::vector& + params_i, std::vector& vars, std::ostream* + pstream__ = nullptr) const { + vars.resize(num_params_r__); + transform_inits_impl(context, vars, pstream__); + } + inline void + unconstrain_array(const std::vector& params_constrained, + std::vector& params_unconstrained, std::ostream* + pstream = nullptr) const { + const std::vector params_i; + params_unconstrained = std::vector(num_params_r__, + std::numeric_limits::quiet_NaN()); + unconstrain_array_impl(params_constrained, params_i, + params_unconstrained, pstream); + } + inline void + unconstrain_array(const Eigen::Matrix& params_constrained, + Eigen::Matrix& params_unconstrained, + std::ostream* pstream = nullptr) const { + const std::vector params_i; + params_unconstrained = Eigen::Matrix::Constant(num_params_r__, + std::numeric_limits::quiet_NaN()); + unconstrain_array_impl(params_constrained, params_i, + params_unconstrained, pstream); + } }; } using stan_model = model_power_multi_ind_namespace::model_power_multi_ind; #ifndef USING_R // Boilerplate -stan::model::model_base& new_model( - stan::io::var_context& data_context, - unsigned int seed, - std::ostream* msg_stream) { +stan::model::model_base& +new_model(stan::io::var_context& data_context, unsigned int seed, + std::ostream* msg_stream) { stan_model* m = new stan_model(data_context, seed, msg_stream); return *m; } diff --git a/src/stanExports_power_single_ind.h b/src/stanExports_power_single_ind.h index 77c1f57..62be6ab 100644 --- a/src/stanExports_power_single_ind.h +++ b/src/stanExports_power_single_ind.h @@ -21,200 +21,166 @@ #define USE_STANC3 #endif #include -// Code generated by stanc v2.26.1-4-gd72b68b7-dirty +// Code generated by stanc v2.32.2 #include namespace model_power_single_ind_namespace { -inline void validate_positive_index(const char* var_name, const char* expr, - int val) { - if (val < 1) { - std::stringstream msg; - msg << "Found dimension size less than one in simplex declaration" - << "; variable=" << var_name << "; dimension size expression=" << expr - << "; expression value=" << val; - std::string msg_str(msg.str()); - throw std::invalid_argument(msg_str.c_str()); - } -} -inline void validate_unit_vector_index(const char* var_name, const char* expr, - int val) { - if (val <= 1) { - std::stringstream msg; - if (val == 1) { - msg << "Found dimension size one in unit vector declaration." - << " One-dimensional unit vector is discrete" - << " but the target distribution must be continuous." - << " variable=" << var_name << "; dimension size expression=" << expr; - } else { - msg << "Found dimension size less than one in unit vector declaration" - << "; variable=" << var_name << "; dimension size expression=" << expr - << "; expression value=" << val; - } - std::string msg_str(msg.str()); - throw std::invalid_argument(msg_str.c_str()); - } -} -using std::istream; -using std::string; -using std::stringstream; -using std::vector; -using std::pow; -using stan::io::dump; -using stan::math::lgamma; using stan::model::model_base_crtp; -using stan::model::rvalue; -using stan::model::cons_list; -using stan::model::index_uni; -using stan::model::index_max; -using stan::model::index_min; -using stan::model::index_min_max; -using stan::model::index_multi; -using stan::model::index_omni; -using stan::model::nil_index_list; using namespace stan::math; -using stan::math::pow; stan::math::profile_map profiles__; -static int current_statement__= 0; -static const std::vector locations_array__ = {" (found before start of program)", - " (in 'power_single_ind', line 52, column 2 to column 24)", - " (in 'power_single_ind', line 53, column 2 to column 26)", - " (in 'power_single_ind', line 54, column 2 to column 26)", - " (in 'power_single_ind', line 56, column 2 to column 35)", - " (in 'power_single_ind', line 85, column 2 to column 20)", - " (in 'power_single_ind', line 86, column 2 to column 24)", - " (in 'power_single_ind', line 87, column 2 to column 17)", - " (in 'power_single_ind', line 88, column 2 to column 22)", - " (in 'power_single_ind', line 89, column 2 to column 22)", - " (in 'power_single_ind', line 90, column 2 to column 18)", - " (in 'power_single_ind', line 93, column 6 to column 25)", - " (in 'power_single_ind', line 92, column 23 to line 94, column 5)", - " (in 'power_single_ind', line 92, column 4 to line 94, column 5)", - " (in 'power_single_ind', line 100, column 6 to column 62)", - " (in 'power_single_ind', line 99, column 11 to line 101, column 5)", - " (in 'power_single_ind', line 97, column 6 to column 73)", - " (in 'power_single_ind', line 98, column 6 to column 43)", - " (in 'power_single_ind', line 95, column 17 to line 99, column 5)", - " (in 'power_single_ind', line 95, column 4 to line 101, column 5)", - " (in 'power_single_ind', line 91, column 19 to line 102, column 3)", - " (in 'power_single_ind', line 91, column 2 to line 102, column 3)", - " (in 'power_single_ind', line 60, column 13 to column 18)", - " (in 'power_single_ind', line 60, column 2 to column 20)", - " (in 'power_single_ind', line 61, column 2 to column 17)", - " (in 'power_single_ind', line 62, column 2 to column 22)", - " (in 'power_single_ind', line 63, column 2 to column 22)", - " (in 'power_single_ind', line 64, column 2 to column 18)", - " (in 'power_single_ind', line 67, column 6 to column 25)", - " (in 'power_single_ind', line 66, column 23 to line 68, column 5)", - " (in 'power_single_ind', line 66, column 4 to line 68, column 5)", - " (in 'power_single_ind', line 71, column 6 to column 73)", - " (in 'power_single_ind', line 69, column 17 to line 72, column 5)", - " (in 'power_single_ind', line 69, column 4 to line 72, column 5)", - " (in 'power_single_ind', line 65, column 19 to line 73, column 3)", - " (in 'power_single_ind', line 65, column 2 to line 73, column 3)", - " (in 'power_single_ind', line 75, column 2 to column 44)", - " (in 'power_single_ind', line 78, column 2 to column 48)", - " (in 'power_single_ind', line 79, column 2 to column 29)", - " (in 'power_single_ind', line 80, column 2 to column 29)", - " (in 'power_single_ind', line 82, column 2 to column 34)", - " (in 'power_single_ind', line 41, column 2 to column 17)", - " (in 'power_single_ind', line 42, column 2 to column 12)", - " (in 'power_single_ind', line 43, column 13 to column 18)", - " (in 'power_single_ind', line 43, column 2 to column 20)", - " (in 'power_single_ind', line 44, column 16 to column 21)", - " (in 'power_single_ind', line 44, column 2 to column 23)", - " (in 'power_single_ind', line 45, column 12 to column 17)", - " (in 'power_single_ind', line 45, column 2 to column 19)", - " (in 'power_single_ind', line 46, column 2 to column 13)", - " (in 'power_single_ind', line 47, column 2 to column 15)", - " (in 'power_single_ind', line 85, column 13 to column 18)", - " (in 'power_single_ind', line 86, column 17 to column 22)", - " (in 'power_single_ind', line 6, column 4 to column 48)", - " (in 'power_single_ind', line 5, column 30 to line 7, column 3)", - " (in 'power_single_ind', line 9, column 4 to column 12)", - " (in 'power_single_ind', line 10, column 4 to column 12)", - " (in 'power_single_ind', line 11, column 4 to column 12)", - " (in 'power_single_ind', line 12, column 4 to column 12)", - " (in 'power_single_ind', line 13, column 4 to column 15)", - " (in 'power_single_ind', line 14, column 4 to column 21)", - " (in 'power_single_ind', line 15, column 4 to column 37)", - " (in 'power_single_ind', line 16, column 4 to column 37)", - " (in 'power_single_ind', line 17, column 4 to column 33)", - " (in 'power_single_ind', line 18, column 4 to column 67)", - " (in 'power_single_ind', line 19, column 4 to column 17)", - " (in 'power_single_ind', line 8, column 51 to line 20, column 3)", - " (in 'power_single_ind', line 22, column 4 to column 14)", - " (in 'power_single_ind', line 23, column 4 to column 18)", - " (in 'power_single_ind', line 24, column 4 to column 15)", - " (in 'power_single_ind', line 25, column 4 to column 24)", - " (in 'power_single_ind', line 26, column 4 to column 17)", - " (in 'power_single_ind', line 27, column 4 to column 14)", - " (in 'power_single_ind', line 30, column 6 to column 59)", - " (in 'power_single_ind', line 32, column 6 to column 52)", - " (in 'power_single_ind', line 34, column 6 to column 43)", - " (in 'power_single_ind', line 28, column 30 to line 35, column 5)", - " (in 'power_single_ind', line 28, column 4 to line 35, column 5)", - " (in 'power_single_ind', line 36, column 4 to column 17)", - " (in 'power_single_ind', line 21, column 62 to line 37, column 3)"}; -template -stan::promote_args_t> +static constexpr std::array locations_array__ = + {" (found before start of program)", + " (in 'string', line 52, column 2 to column 24)", + " (in 'string', line 53, column 2 to column 26)", + " (in 'string', line 54, column 2 to column 26)", + " (in 'string', line 56, column 2 to column 35)", + " (in 'string', line 85, column 2 to column 20)", + " (in 'string', line 86, column 2 to column 24)", + " (in 'string', line 87, column 2 to column 17)", + " (in 'string', line 88, column 2 to column 22)", + " (in 'string', line 89, column 2 to column 22)", + " (in 'string', line 90, column 2 to column 18)", + " (in 'string', line 93, column 6 to column 25)", + " (in 'string', line 92, column 23 to line 94, column 5)", + " (in 'string', line 92, column 4 to line 94, column 5)", + " (in 'string', line 100, column 6 to column 62)", + " (in 'string', line 99, column 11 to line 101, column 5)", + " (in 'string', line 97, column 6 to column 73)", + " (in 'string', line 98, column 6 to column 43)", + " (in 'string', line 95, column 17 to line 99, column 5)", + " (in 'string', line 95, column 4 to line 101, column 5)", + " (in 'string', line 91, column 19 to line 102, column 3)", + " (in 'string', line 91, column 2 to line 102, column 3)", + " (in 'string', line 60, column 13 to column 18)", + " (in 'string', line 60, column 2 to column 20)", + " (in 'string', line 61, column 2 to column 17)", + " (in 'string', line 62, column 2 to column 22)", + " (in 'string', line 63, column 2 to column 22)", + " (in 'string', line 64, column 2 to column 18)", + " (in 'string', line 67, column 6 to column 25)", + " (in 'string', line 66, column 23 to line 68, column 5)", + " (in 'string', line 66, column 4 to line 68, column 5)", + " (in 'string', line 71, column 6 to column 73)", + " (in 'string', line 69, column 17 to line 72, column 5)", + " (in 'string', line 69, column 4 to line 72, column 5)", + " (in 'string', line 65, column 19 to line 73, column 3)", + " (in 'string', line 65, column 2 to line 73, column 3)", + " (in 'string', line 75, column 2 to column 44)", + " (in 'string', line 78, column 2 to column 48)", + " (in 'string', line 79, column 2 to column 29)", + " (in 'string', line 80, column 2 to column 29)", + " (in 'string', line 82, column 2 to column 34)", + " (in 'string', line 41, column 2 to column 17)", + " (in 'string', line 42, column 2 to column 12)", + " (in 'string', line 43, column 13 to column 18)", + " (in 'string', line 43, column 2 to column 20)", + " (in 'string', line 44, column 16 to column 21)", + " (in 'string', line 44, column 2 to column 23)", + " (in 'string', line 45, column 12 to column 17)", + " (in 'string', line 45, column 2 to column 19)", + " (in 'string', line 46, column 2 to column 13)", + " (in 'string', line 47, column 2 to column 15)", + " (in 'string', line 85, column 13 to column 18)", + " (in 'string', line 86, column 17 to column 22)", + " (in 'string', line 6, column 4 to column 48)", + " (in 'string', line 5, column 30 to line 7, column 3)", + " (in 'string', line 9, column 4 to column 12)", + " (in 'string', line 10, column 4 to column 12)", + " (in 'string', line 11, column 4 to column 12)", + " (in 'string', line 12, column 4 to column 12)", + " (in 'string', line 13, column 4 to column 15)", + " (in 'string', line 14, column 4 to column 21)", + " (in 'string', line 15, column 4 to column 37)", + " (in 'string', line 16, column 4 to column 37)", + " (in 'string', line 17, column 4 to column 33)", + " (in 'string', line 18, column 4 to column 67)", + " (in 'string', line 19, column 4 to column 17)", + " (in 'string', line 8, column 51 to line 20, column 3)", + " (in 'string', line 22, column 4 to column 14)", + " (in 'string', line 23, column 4 to column 18)", + " (in 'string', line 24, column 4 to column 15)", + " (in 'string', line 25, column 4 to column 24)", + " (in 'string', line 26, column 4 to column 17)", + " (in 'string', line 27, column 4 to column 14)", + " (in 'string', line 30, column 6 to column 59)", + " (in 'string', line 32, column 6 to column 52)", + " (in 'string', line 34, column 6 to column 43)", + " (in 'string', line 28, column 30 to line 35, column 5)", + " (in 'string', line 28, column 4 to line 35, column 5)", + " (in 'string', line 36, column 4 to column 17)", + " (in 'string', line 21, column 62 to line 37, column 3)"}; +template , + stan::is_col_vector, + stan::is_vt_not_complex>* = nullptr> +stan::promote_args_t> +DE(const T0__& y, const T1__& pars_arg__, std::ostream* pstream__); +template , + stan::is_col_vector, + stan::is_vt_not_complex, + stan::is_stan_scalar>* = nullptr> +stan::promote_args_t, T2__> +rk4_step(const T0__& y, const T1__& pars_arg__, const T2__& interval, + std::ostream* pstream__); +template , + stan::is_col_vector, + stan::is_vt_not_complex, + stan::is_stan_scalar, + stan::is_stan_scalar>* = nullptr> +stan::promote_args_t, T2__, T3__> +rk4(const T0__& y, const T1__& pars_arg__, const T2__& interval, const T3__& + step_size, std::ostream* pstream__); +template , + stan::is_col_vector, + stan::is_vt_not_complex>*> +stan::promote_args_t> DE(const T0__& y, const T1__& pars_arg__, std::ostream* pstream__) { using local_scalar_t__ = stan::promote_args_t>; - const auto& pars = to_ref(pars_arg__); - const static bool propto__ = true; + stan::base_type_t>; + int current_statement__ = 0; + const auto& pars = stan::math::to_ref(pars_arg__); + static constexpr bool propto__ = true; + // suppress unused var warning (void) propto__; local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); - (void) DUMMY_VAR__; // suppress unused var warning - + // suppress unused var warning + (void) DUMMY_VAR__; try { current_statement__ = 53; - return (pars[(1 - 1)] * pow((y / pars[(3 - 1)]), -pars[(2 - 1)])); + return (stan::model::rvalue(pars, "pars", stan::model::index_uni(1)) * + stan::math::pow((y / + stan::model::rvalue(pars, "pars", stan::model::index_uni(3))), + -stan::model::rvalue(pars, "pars", stan::model::index_uni(2)))); } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } - -} -struct DE_functor__ { -template -stan::promote_args_t> -operator()(const T0__& y, const T1__& pars, std::ostream* pstream__) const -{ -return DE(y, pars, pstream__); } -}; -template -stan::promote_args_t, -T2__> +template , + stan::is_col_vector, + stan::is_vt_not_complex, + stan::is_stan_scalar>*> +stan::promote_args_t, T2__> rk4_step(const T0__& y, const T1__& pars_arg__, const T2__& interval, std::ostream* pstream__) { using local_scalar_t__ = stan::promote_args_t, - T2__>; - const auto& pars = to_ref(pars_arg__); - const static bool propto__ = true; + stan::base_type_t, T2__>; + int current_statement__ = 0; + const auto& pars = stan::math::to_ref(pars_arg__); + static constexpr bool propto__ = true; + // suppress unused var warning (void) propto__; local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); - (void) DUMMY_VAR__; // suppress unused var warning - + // suppress unused var warning + (void) DUMMY_VAR__; try { - local_scalar_t__ k1; - k1 = DUMMY_VAR__; - - local_scalar_t__ k2; - k2 = DUMMY_VAR__; - - local_scalar_t__ k3; - k3 = DUMMY_VAR__; - - local_scalar_t__ k4; - k4 = DUMMY_VAR__; - - local_scalar_t__ y_hat; - y_hat = DUMMY_VAR__; - + local_scalar_t__ k1 = DUMMY_VAR__; + local_scalar_t__ k2 = DUMMY_VAR__; + local_scalar_t__ k3 = DUMMY_VAR__; + local_scalar_t__ k4 = DUMMY_VAR__; + local_scalar_t__ y_hat = DUMMY_VAR__; current_statement__ = 60; k1 = DE(y, pars, pstream__); current_statement__ = 61; @@ -224,65 +190,51 @@ rk4_step(const T0__& y, const T1__& pars_arg__, const T2__& interval, current_statement__ = 63; k4 = DE((y + (interval * k3)), pars, pstream__); current_statement__ = 64; - y_hat = (y + - (((1.0 / 6.0) * (((k1 + (2.0 * k2)) + (2.0 * k3)) + k4)) * - interval)); + y_hat = (y + (((1.0 / 6.0) * (((k1 + (2.0 * k2)) + (2.0 * k3)) + k4)) * + interval)); current_statement__ = 65; return y_hat; } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } - -} -struct rk4_step_functor__ { -template -stan::promote_args_t, -T2__> -operator()(const T0__& y, const T1__& pars, const T2__& interval, - std::ostream* pstream__) const -{ -return rk4_step(y, pars, interval, pstream__); } -}; -template -stan::promote_args_t, T2__, -T3__> -rk4(const T0__& y, const T1__& pars_arg__, const T2__& interval, - const T3__& step_size, std::ostream* pstream__) { +template , + stan::is_col_vector, + stan::is_vt_not_complex, + stan::is_stan_scalar, + stan::is_stan_scalar>*> +stan::promote_args_t, T2__, T3__> +rk4(const T0__& y, const T1__& pars_arg__, const T2__& interval, const T3__& + step_size, std::ostream* pstream__) { using local_scalar_t__ = stan::promote_args_t, - T2__, - T3__>; - const auto& pars = to_ref(pars_arg__); - const static bool propto__ = true; + stan::base_type_t, T2__, T3__>; + int current_statement__ = 0; + const auto& pars = stan::math::to_ref(pars_arg__); + static constexpr bool propto__ = true; + // suppress unused var warning (void) propto__; local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); - (void) DUMMY_VAR__; // suppress unused var warning - + // suppress unused var warning + (void) DUMMY_VAR__; try { - int steps; - steps = std::numeric_limits::min(); - - local_scalar_t__ duration; - duration = DUMMY_VAR__; - - local_scalar_t__ y_hat; - y_hat = DUMMY_VAR__; - - local_scalar_t__ step_size_temp; - step_size_temp = DUMMY_VAR__; - + int steps = std::numeric_limits::min(); + local_scalar_t__ duration = DUMMY_VAR__; + local_scalar_t__ y_hat = DUMMY_VAR__; + local_scalar_t__ step_size_temp = DUMMY_VAR__; current_statement__ = 71; duration = 0; current_statement__ = 72; y_hat = y; current_statement__ = 77; - while (logical_lt(duration, interval)) { + while (stan::math::logical_lt(duration, interval)) { current_statement__ = 73; - step_size_temp = min((Eigen::Matrix(2) << - step_size, (interval - duration)).finished()); + step_size_temp = stan::math::min( + (Eigen::Matrix(2) << + step_size, + (interval + - + duration)).finished()); current_statement__ = 74; y_hat = rk4_step(y_hat, pars, step_size_temp, pstream__); current_statement__ = 75; @@ -292,21 +244,8 @@ rk4(const T0__& y, const T1__& pars_arg__, const T2__& interval, return y_hat; } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } - } -struct rk4_functor__ { -template -stan::promote_args_t, T2__, -T3__> -operator()(const T0__& y, const T1__& pars, const T2__& interval, - const T3__& step_size, std::ostream* pstream__) const -{ -return rk4(y, pars, interval, step_size, pstream__); -} -}; #include class model_power_single_ind final : public model_base_crtp { private: @@ -317,587 +256,566 @@ class model_power_single_ind final : public model_base_crtp time; double y_bar; double y_0_obs; - public: - ~model_power_single_ind() { } - - inline std::string model_name() const final { return "model_power_single_ind"; } - inline std::vector model_compile_info() const noexcept { - return std::vector{"stanc_version = stanc3 v2.26.1-4-gd72b68b7-dirty", "stancflags = "}; - } - - - model_power_single_ind(stan::io::var_context& context__, - unsigned int random_seed__ = 0, - std::ostream* pstream__ = nullptr) : model_base_crtp(0) { - using local_scalar_t__ = double ; - boost::ecuyer1988 base_rng__ = - stan::services::util::create_rng(random_seed__, 0); - (void) base_rng__; // suppress unused var warning - static const char* function__ = "model_power_single_ind_namespace::model_power_single_ind"; - (void) function__; // suppress unused var warning + ~model_power_single_ind() {} + model_power_single_ind(stan::io::var_context& context__, unsigned int + random_seed__ = 0, std::ostream* pstream__ = nullptr) + : model_base_crtp(0) { + int current_statement__ = 0; + using local_scalar_t__ = double; + boost::ecuyer1988 base_rng__ = + stan::services::util::create_rng(random_seed__, 0); + // suppress unused var warning + (void) base_rng__; + static constexpr const char* function__ = + "model_power_single_ind_namespace::model_power_single_ind"; + // suppress unused var warning + (void) function__; local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); - (void) DUMMY_VAR__; // suppress unused var warning - + // suppress unused var warning + (void) DUMMY_VAR__; try { - int pos__; - pos__ = std::numeric_limits::min(); - + int pos__ = std::numeric_limits::min(); pos__ = 1; current_statement__ = 41; - context__.validate_dims("data initialization","step_size","double", - context__.to_vec()); + context__.validate_dims("data initialization", "step_size", "double", + std::vector{}); step_size = std::numeric_limits::quiet_NaN(); - current_statement__ = 41; step_size = context__.vals_r("step_size")[(1 - 1)]; current_statement__ = 42; - context__.validate_dims("data initialization","n_obs","int", - context__.to_vec()); + context__.validate_dims("data initialization", "n_obs", "int", + std::vector{}); n_obs = std::numeric_limits::min(); - current_statement__ = 42; n_obs = context__.vals_i("n_obs")[(1 - 1)]; current_statement__ = 43; - validate_non_negative_index("y_obs", "n_obs", n_obs); + stan::math::validate_non_negative_index("y_obs", "n_obs", n_obs); current_statement__ = 44; - context__.validate_dims("data initialization","y_obs","double", - context__.to_vec(n_obs)); - y_obs = std::vector(n_obs, std::numeric_limits::quiet_NaN()); - + context__.validate_dims("data initialization", "y_obs", "double", + std::vector{static_cast(n_obs)}); + y_obs = std::vector(n_obs, + std::numeric_limits::quiet_NaN()); current_statement__ = 44; - assign(y_obs, nil_index_list(), context__.vals_r("y_obs"), - "assigning variable y_obs"); + y_obs = context__.vals_r("y_obs"); current_statement__ = 45; - validate_non_negative_index("obs_index", "n_obs", n_obs); + stan::math::validate_non_negative_index("obs_index", "n_obs", n_obs); current_statement__ = 46; - context__.validate_dims("data initialization","obs_index","int", - context__.to_vec(n_obs)); + context__.validate_dims("data initialization", "obs_index", "int", + std::vector{static_cast(n_obs)}); obs_index = std::vector(n_obs, std::numeric_limits::min()); - current_statement__ = 46; - assign(obs_index, nil_index_list(), context__.vals_i("obs_index"), - "assigning variable obs_index"); + obs_index = context__.vals_i("obs_index"); current_statement__ = 47; - validate_non_negative_index("time", "n_obs", n_obs); + stan::math::validate_non_negative_index("time", "n_obs", n_obs); current_statement__ = 48; - context__.validate_dims("data initialization","time","double", - context__.to_vec(n_obs)); - time = std::vector(n_obs, std::numeric_limits::quiet_NaN()); - + context__.validate_dims("data initialization", "time", "double", + std::vector{static_cast(n_obs)}); + time = std::vector(n_obs, + std::numeric_limits::quiet_NaN()); current_statement__ = 48; - assign(time, nil_index_list(), context__.vals_r("time"), - "assigning variable time"); + time = context__.vals_r("time"); current_statement__ = 49; - context__.validate_dims("data initialization","y_bar","double", - context__.to_vec()); + context__.validate_dims("data initialization", "y_bar", "double", + std::vector{}); y_bar = std::numeric_limits::quiet_NaN(); - current_statement__ = 49; y_bar = context__.vals_r("y_bar")[(1 - 1)]; current_statement__ = 50; - context__.validate_dims("data initialization","y_0_obs","double", - context__.to_vec()); + context__.validate_dims("data initialization", "y_0_obs", "double", + std::vector{}); y_0_obs = std::numeric_limits::quiet_NaN(); - current_statement__ = 50; y_0_obs = context__.vals_r("y_0_obs")[(1 - 1)]; current_statement__ = 51; - validate_non_negative_index("y_hat", "n_obs", n_obs); + stan::math::validate_non_negative_index("y_hat", "n_obs", n_obs); current_statement__ = 52; - validate_non_negative_index("Delta_hat", "n_obs", n_obs); - } catch (const std::exception& e) { - stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); - } - num_params_r__ = 0U; - - try { - num_params_r__ += 1; - num_params_r__ += 1; - num_params_r__ += 1; - num_params_r__ += 1; + stan::math::validate_non_negative_index("Delta_hat", "n_obs", n_obs); } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } + num_params_r__ = 1 + 1 + 1 + 1; } - template * = nullptr, stan::require_vector_like_vt* = nullptr> - inline stan::scalar_type_t log_prob_impl(VecR& params_r__, - VecI& params_i__, - std::ostream* pstream__ = nullptr) const { + inline std::string model_name() const final { + return "model_power_single_ind"; + } + inline std::vector model_compile_info() const noexcept { + return std::vector{"stanc_version = stanc3 v2.32.2", + "stancflags = --allow-undefined"}; + } + template * = nullptr, + stan::require_vector_like_vt* = nullptr> + inline stan::scalar_type_t + log_prob_impl(VecR& params_r__, VecI& params_i__, std::ostream* + pstream__ = nullptr) const { using T__ = stan::scalar_type_t; using local_scalar_t__ = T__; T__ lp__(0.0); stan::math::accumulator lp_accum__; - static const char* function__ = "model_power_single_ind_namespace::log_prob"; -(void) function__; // suppress unused var warning - stan::io::reader in__(params_r__, params_i__); + stan::io::deserializer in__(params_r__, params_i__); + int current_statement__ = 0; local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); - (void) DUMMY_VAR__; // suppress unused var warning - + // suppress unused var warning + (void) DUMMY_VAR__; + static constexpr const char* function__ = + "model_power_single_ind_namespace::log_prob"; + // suppress unused var warning + (void) function__; try { - local_scalar_t__ ind_y_0; - ind_y_0 = DUMMY_VAR__; - + local_scalar_t__ ind_y_0 = DUMMY_VAR__; current_statement__ = 1; - ind_y_0 = in__.scalar(); - current_statement__ = 1; - if (jacobian__) { - current_statement__ = 1; - ind_y_0 = stan::math::lb_constrain(ind_y_0, 0, lp__); - } else { - current_statement__ = 1; - ind_y_0 = stan::math::lb_constrain(ind_y_0, 0); - } - local_scalar_t__ ind_coeff; - ind_coeff = DUMMY_VAR__; - - current_statement__ = 2; - ind_coeff = in__.scalar(); + ind_y_0 = in__.template read_constrain_lb(0, lp__); + local_scalar_t__ ind_coeff = DUMMY_VAR__; current_statement__ = 2; - if (jacobian__) { - current_statement__ = 2; - ind_coeff = stan::math::lb_constrain(ind_coeff, 0, lp__); - } else { - current_statement__ = 2; - ind_coeff = stan::math::lb_constrain(ind_coeff, 0); - } - local_scalar_t__ ind_power; - ind_power = DUMMY_VAR__; - - current_statement__ = 3; - ind_power = in__.scalar(); + ind_coeff = in__.template read_constrain_lb(0, lp__); + local_scalar_t__ ind_power = DUMMY_VAR__; current_statement__ = 3; - if (jacobian__) { - current_statement__ = 3; - ind_power = stan::math::lb_constrain(ind_power, 0, lp__); - } else { - current_statement__ = 3; - ind_power = stan::math::lb_constrain(ind_power, 0); - } - local_scalar_t__ global_error_sigma; - global_error_sigma = DUMMY_VAR__; - + ind_power = in__.template read_constrain_lb(0, lp__); + local_scalar_t__ global_error_sigma = DUMMY_VAR__; current_statement__ = 4; - global_error_sigma = in__.scalar(); - current_statement__ = 4; - if (jacobian__) { - current_statement__ = 4; - global_error_sigma = stan::math::lb_constrain(global_error_sigma, 0, - lp__); - } else { - current_statement__ = 4; - global_error_sigma = stan::math::lb_constrain(global_error_sigma, 0); - } + global_error_sigma = in__.template read_constrain_lb(0, lp__); { current_statement__ = 22; - validate_non_negative_index("y_hat", "n_obs", n_obs); - std::vector y_hat; - y_hat = std::vector(n_obs, DUMMY_VAR__); - - Eigen::Matrix pars; - pars = Eigen::Matrix(3); - stan::math::fill(pars, DUMMY_VAR__); - + stan::math::validate_non_negative_index("y_hat", "n_obs", n_obs); + std::vector y_hat = + std::vector(n_obs, DUMMY_VAR__); + Eigen::Matrix pars = + Eigen::Matrix::Constant(3, DUMMY_VAR__); current_statement__ = 25; - assign(pars, cons_list(index_uni(1), nil_index_list()), ind_coeff, - "assigning variable pars"); + stan::model::assign(pars, ind_coeff, "assigning variable pars", + stan::model::index_uni(1)); current_statement__ = 26; - assign(pars, cons_list(index_uni(2), nil_index_list()), ind_power, - "assigning variable pars"); + stan::model::assign(pars, ind_power, "assigning variable pars", + stan::model::index_uni(2)); current_statement__ = 27; - assign(pars, cons_list(index_uni(3), nil_index_list()), y_bar, - "assigning variable pars"); + stan::model::assign(pars, y_bar, "assigning variable pars", + stan::model::index_uni(3)); current_statement__ = 35; for (int i = 1; i <= n_obs; ++i) { current_statement__ = 30; - if (logical_eq(obs_index[(i - 1)], 1)) { + if (stan::math::logical_eq( + stan::model::rvalue(obs_index, "obs_index", + stan::model::index_uni(i)), 1)) { current_statement__ = 28; - assign(y_hat, cons_list(index_uni(i), nil_index_list()), ind_y_0, - "assigning variable y_hat"); - } + stan::model::assign(y_hat, ind_y_0, "assigning variable y_hat", + stan::model::index_uni(i)); + } current_statement__ = 33; - if (logical_lt(i, n_obs)) { + if (stan::math::logical_lt(i, n_obs)) { current_statement__ = 31; - assign(y_hat, cons_list(index_uni((i + 1)), nil_index_list()), - rk4(y_hat[(i - 1)], pars, - (time[((i + 1) - 1)] - time[(i - 1)]), step_size, pstream__), - "assigning variable y_hat"); - } } + stan::model::assign(y_hat, + rk4( + stan::model::rvalue(y_hat, "y_hat", stan::model::index_uni(i)), + pars, + (stan::model::rvalue(time, "time", + stan::model::index_uni((i + 1))) - + stan::model::rvalue(time, "time", stan::model::index_uni(i))), + step_size, pstream__), "assigning variable y_hat", + stan::model::index_uni((i + 1))); + } + } current_statement__ = 36; - lp_accum__.add( - normal_lpdf(y_obs, y_hat, global_error_sigma)); + lp_accum__.add(stan::math::normal_lpdf(y_obs, y_hat, + global_error_sigma)); current_statement__ = 37; - lp_accum__.add( - normal_lpdf(ind_y_0, y_0_obs, global_error_sigma)); + lp_accum__.add(stan::math::normal_lpdf(ind_y_0, y_0_obs, + global_error_sigma)); current_statement__ = 38; - lp_accum__.add(lognormal_lpdf(ind_coeff, 0, 1)); + lp_accum__.add(stan::math::lognormal_lpdf(ind_coeff, 0, 1)); current_statement__ = 39; - lp_accum__.add(lognormal_lpdf(ind_power, 0, 1)); + lp_accum__.add(stan::math::lognormal_lpdf(ind_power, 0, 1)); current_statement__ = 40; - lp_accum__.add(cauchy_lpdf(global_error_sigma, 0, 5)); + lp_accum__.add(stan::math::cauchy_lpdf(global_error_sigma, + 0, 5)); } } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } lp_accum__.add(lp__); return lp_accum__.sum(); - } // log_prob_impl() - - template * = nullptr, stan::require_vector_like_vt* = nullptr, stan::require_std_vector_vt* = nullptr> - inline void write_array_impl(RNG& base_rng__, VecR& params_r__, - VecI& params_i__, VecVar& vars__, - const bool emit_transformed_parameters__ = true, - const bool emit_generated_quantities__ = true, - std::ostream* pstream__ = nullptr) const { + } + template * = nullptr, stan::require_vector_like_vt* = nullptr, stan::require_vector_vt* = nullptr> + inline void + write_array_impl(RNG& base_rng__, VecR& params_r__, VecI& params_i__, + VecVar& vars__, const bool + emit_transformed_parameters__ = true, const bool + emit_generated_quantities__ = true, std::ostream* + pstream__ = nullptr) const { using local_scalar_t__ = double; - vars__.resize(0); - stan::io::reader in__(params_r__, params_i__); - static const char* function__ = "model_power_single_ind_namespace::write_array"; -(void) function__; // suppress unused var warning - (void) function__; // suppress unused var warning + stan::io::deserializer in__(params_r__, params_i__); + stan::io::serializer out__(vars__); + static constexpr bool propto__ = true; + // suppress unused var warning + (void) propto__; double lp__ = 0.0; - (void) lp__; // dummy to suppress unused var warning + // suppress unused var warning + (void) lp__; + int current_statement__ = 0; stan::math::accumulator lp_accum__; local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); - (void) DUMMY_VAR__; // suppress unused var warning - + // suppress unused var warning + (void) DUMMY_VAR__; + constexpr bool jacobian__ = false; + static constexpr const char* function__ = + "model_power_single_ind_namespace::write_array"; + // suppress unused var warning + (void) function__; try { - double ind_y_0; - ind_y_0 = std::numeric_limits::quiet_NaN(); - + double ind_y_0 = std::numeric_limits::quiet_NaN(); current_statement__ = 1; - ind_y_0 = in__.scalar(); - current_statement__ = 1; - ind_y_0 = stan::math::lb_constrain(ind_y_0, 0); - double ind_coeff; - ind_coeff = std::numeric_limits::quiet_NaN(); - - current_statement__ = 2; - ind_coeff = in__.scalar(); + ind_y_0 = in__.template read_constrain_lb(0, lp__); + double ind_coeff = std::numeric_limits::quiet_NaN(); current_statement__ = 2; - ind_coeff = stan::math::lb_constrain(ind_coeff, 0); - double ind_power; - ind_power = std::numeric_limits::quiet_NaN(); - - current_statement__ = 3; - ind_power = in__.scalar(); + ind_coeff = in__.template read_constrain_lb(0, lp__); + double ind_power = std::numeric_limits::quiet_NaN(); current_statement__ = 3; - ind_power = stan::math::lb_constrain(ind_power, 0); - double global_error_sigma; - global_error_sigma = std::numeric_limits::quiet_NaN(); - + ind_power = in__.template read_constrain_lb(0, lp__); + double global_error_sigma = std::numeric_limits::quiet_NaN(); current_statement__ = 4; - global_error_sigma = in__.scalar(); - current_statement__ = 4; - global_error_sigma = stan::math::lb_constrain(global_error_sigma, 0); - vars__.emplace_back(ind_y_0); - vars__.emplace_back(ind_coeff); - vars__.emplace_back(ind_power); - vars__.emplace_back(global_error_sigma); - if (logical_negation((primitive_value(emit_transformed_parameters__) || - primitive_value(emit_generated_quantities__)))) { + global_error_sigma = in__.template read_constrain_lb(0, lp__); + out__.write(ind_y_0); + out__.write(ind_coeff); + out__.write(ind_power); + out__.write(global_error_sigma); + if (stan::math::logical_negation( + (stan::math::primitive_value(emit_transformed_parameters__) || + stan::math::primitive_value(emit_generated_quantities__)))) { return ; - } - if (logical_negation(emit_generated_quantities__)) { + } + if (stan::math::logical_negation(emit_generated_quantities__)) { return ; - } - std::vector y_hat; - y_hat = std::vector(n_obs, std::numeric_limits::quiet_NaN()); - - std::vector Delta_hat; - Delta_hat = std::vector(n_obs, std::numeric_limits::quiet_NaN()); - - Eigen::Matrix pars; - pars = Eigen::Matrix(3); - stan::math::fill(pars, std::numeric_limits::quiet_NaN()); - + } + std::vector y_hat = + std::vector(n_obs, std::numeric_limits::quiet_NaN()); + std::vector Delta_hat = + std::vector(n_obs, std::numeric_limits::quiet_NaN()); + Eigen::Matrix pars = + Eigen::Matrix::Constant(3, + std::numeric_limits::quiet_NaN()); current_statement__ = 8; - assign(pars, cons_list(index_uni(1), nil_index_list()), ind_coeff, - "assigning variable pars"); + stan::model::assign(pars, ind_coeff, "assigning variable pars", + stan::model::index_uni(1)); current_statement__ = 9; - assign(pars, cons_list(index_uni(2), nil_index_list()), ind_power, - "assigning variable pars"); + stan::model::assign(pars, ind_power, "assigning variable pars", + stan::model::index_uni(2)); current_statement__ = 10; - assign(pars, cons_list(index_uni(3), nil_index_list()), y_bar, - "assigning variable pars"); + stan::model::assign(pars, y_bar, "assigning variable pars", + stan::model::index_uni(3)); current_statement__ = 21; for (int i = 1; i <= n_obs; ++i) { current_statement__ = 13; - if (logical_eq(obs_index[(i - 1)], 1)) { + if (stan::math::logical_eq( + stan::model::rvalue(obs_index, "obs_index", + stan::model::index_uni(i)), 1)) { current_statement__ = 11; - assign(y_hat, cons_list(index_uni(i), nil_index_list()), ind_y_0, - "assigning variable y_hat"); - } + stan::model::assign(y_hat, ind_y_0, "assigning variable y_hat", + stan::model::index_uni(i)); + } current_statement__ = 19; - if (logical_lt(i, n_obs)) { + if (stan::math::logical_lt(i, n_obs)) { current_statement__ = 16; - assign(y_hat, cons_list(index_uni((i + 1)), nil_index_list()), - rk4(y_hat[(i - 1)], pars, (time[((i + 1) - 1)] - time[(i - 1)]), - step_size, pstream__), "assigning variable y_hat"); + stan::model::assign(y_hat, + rk4( + stan::model::rvalue(y_hat, "y_hat", stan::model::index_uni(i)), + pars, + (stan::model::rvalue(time, "time", + stan::model::index_uni((i + 1))) - + stan::model::rvalue(time, "time", stan::model::index_uni(i))), + step_size, pstream__), "assigning variable y_hat", + stan::model::index_uni((i + 1))); current_statement__ = 17; - assign(Delta_hat, cons_list(index_uni(i), nil_index_list()), - (y_hat[((i + 1) - 1)] - y_hat[(i - 1)]), - "assigning variable Delta_hat"); + stan::model::assign(Delta_hat, + (stan::model::rvalue(y_hat, "y_hat", + stan::model::index_uni((i + 1))) - + stan::model::rvalue(y_hat, "y_hat", stan::model::index_uni(i))), + "assigning variable Delta_hat", stan::model::index_uni(i)); } else { current_statement__ = 14; - assign(Delta_hat, cons_list(index_uni(i), nil_index_list()), - (DE(y_hat[(i - 1)], pars, pstream__) * - (time[(i - 1)] - time[((i - 1) - 1)])), - "assigning variable Delta_hat"); - }} - for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { - vars__.emplace_back(y_hat[(sym1__ - 1)]);} - for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { - vars__.emplace_back(Delta_hat[(sym1__ - 1)]);} - for (int sym1__ = 1; sym1__ <= 3; ++sym1__) { - vars__.emplace_back(pars[(sym1__ - 1)]);} + stan::model::assign(Delta_hat, + (DE( + stan::model::rvalue(y_hat, "y_hat", stan::model::index_uni(i)), + pars, pstream__) * + (stan::model::rvalue(time, "time", stan::model::index_uni(i)) - + stan::model::rvalue(time, "time", stan::model::index_uni((i - 1))))), + "assigning variable Delta_hat", stan::model::index_uni(i)); + } + } + out__.write(y_hat); + out__.write(Delta_hat); + out__.write(pars); } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } - } // write_array_impl() - - template * = nullptr, stan::require_vector_like_vt* = nullptr> - inline void transform_inits_impl(const stan::io::var_context& context__, - VecI& params_i__, VecVar& vars__, - std::ostream* pstream__ = nullptr) const { + } + template * = nullptr, + stan::require_vector_like_vt* = nullptr> + inline void + unconstrain_array_impl(const VecVar& params_r__, const VecI& params_i__, + VecVar& vars__, std::ostream* pstream__ = nullptr) const { using local_scalar_t__ = double; - vars__.clear(); - vars__.reserve(num_params_r__); - + stan::io::deserializer in__(params_r__, params_i__); + stan::io::serializer out__(vars__); + int current_statement__ = 0; + local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); + // suppress unused var warning + (void) DUMMY_VAR__; try { - int pos__; - pos__ = std::numeric_limits::min(); - + int pos__ = std::numeric_limits::min(); pos__ = 1; - double ind_y_0; - ind_y_0 = std::numeric_limits::quiet_NaN(); - + local_scalar_t__ ind_y_0 = DUMMY_VAR__; current_statement__ = 1; - ind_y_0 = context__.vals_r("ind_y_0")[(1 - 1)]; - double ind_y_0_free__; - ind_y_0_free__ = std::numeric_limits::quiet_NaN(); - + ind_y_0 = in__.read(); + out__.write_free_lb(0, ind_y_0); + local_scalar_t__ ind_coeff = DUMMY_VAR__; + current_statement__ = 2; + ind_coeff = in__.read(); + out__.write_free_lb(0, ind_coeff); + local_scalar_t__ ind_power = DUMMY_VAR__; + current_statement__ = 3; + ind_power = in__.read(); + out__.write_free_lb(0, ind_power); + local_scalar_t__ global_error_sigma = DUMMY_VAR__; + current_statement__ = 4; + global_error_sigma = in__.read(); + out__.write_free_lb(0, global_error_sigma); + } catch (const std::exception& e) { + stan::lang::rethrow_located(e, locations_array__[current_statement__]); + } + } + template * = nullptr> + inline void + transform_inits_impl(const stan::io::var_context& context__, VecVar& + vars__, std::ostream* pstream__ = nullptr) const { + using local_scalar_t__ = double; + stan::io::serializer out__(vars__); + int current_statement__ = 0; + local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); + // suppress unused var warning + (void) DUMMY_VAR__; + try { current_statement__ = 1; - ind_y_0_free__ = stan::math::lb_free(ind_y_0, 0); - double ind_coeff; - ind_coeff = std::numeric_limits::quiet_NaN(); - + context__.validate_dims("parameter initialization", "ind_y_0", + "double", std::vector{}); current_statement__ = 2; - ind_coeff = context__.vals_r("ind_coeff")[(1 - 1)]; - double ind_coeff_free__; - ind_coeff_free__ = std::numeric_limits::quiet_NaN(); - + context__.validate_dims("parameter initialization", "ind_coeff", + "double", std::vector{}); + current_statement__ = 3; + context__.validate_dims("parameter initialization", "ind_power", + "double", std::vector{}); + current_statement__ = 4; + context__.validate_dims("parameter initialization", + "global_error_sigma", "double", std::vector{}); + int pos__ = std::numeric_limits::min(); + pos__ = 1; + local_scalar_t__ ind_y_0 = DUMMY_VAR__; + current_statement__ = 1; + ind_y_0 = context__.vals_r("ind_y_0")[(1 - 1)]; + out__.write_free_lb(0, ind_y_0); + local_scalar_t__ ind_coeff = DUMMY_VAR__; current_statement__ = 2; - ind_coeff_free__ = stan::math::lb_free(ind_coeff, 0); - double ind_power; - ind_power = std::numeric_limits::quiet_NaN(); - + ind_coeff = context__.vals_r("ind_coeff")[(1 - 1)]; + out__.write_free_lb(0, ind_coeff); + local_scalar_t__ ind_power = DUMMY_VAR__; current_statement__ = 3; ind_power = context__.vals_r("ind_power")[(1 - 1)]; - double ind_power_free__; - ind_power_free__ = std::numeric_limits::quiet_NaN(); - - current_statement__ = 3; - ind_power_free__ = stan::math::lb_free(ind_power, 0); - double global_error_sigma; - global_error_sigma = std::numeric_limits::quiet_NaN(); - + out__.write_free_lb(0, ind_power); + local_scalar_t__ global_error_sigma = DUMMY_VAR__; current_statement__ = 4; global_error_sigma = context__.vals_r("global_error_sigma")[(1 - 1)]; - double global_error_sigma_free__; - global_error_sigma_free__ = std::numeric_limits::quiet_NaN(); - - current_statement__ = 4; - global_error_sigma_free__ = stan::math::lb_free(global_error_sigma, 0); - vars__.emplace_back(ind_y_0_free__); - vars__.emplace_back(ind_coeff_free__); - vars__.emplace_back(ind_power_free__); - vars__.emplace_back(global_error_sigma_free__); + out__.write_free_lb(0, global_error_sigma); } catch (const std::exception& e) { stan::lang::rethrow_located(e, locations_array__[current_statement__]); - // Next line prevents compiler griping about no return - throw std::runtime_error("*** IF YOU SEE THIS, PLEASE REPORT A BUG ***"); } - } // transform_inits_impl() - - inline void get_param_names(std::vector& names__) const { - - names__.clear(); - names__.emplace_back("ind_y_0"); - names__.emplace_back("ind_coeff"); - names__.emplace_back("ind_power"); - names__.emplace_back("global_error_sigma"); - names__.emplace_back("y_hat"); - names__.emplace_back("Delta_hat"); - names__.emplace_back("pars"); - } // get_param_names() - - inline void get_dims(std::vector>& dimss__) const { - dimss__.clear(); - dimss__.emplace_back(std::vector{}); - - dimss__.emplace_back(std::vector{}); - - dimss__.emplace_back(std::vector{}); - - dimss__.emplace_back(std::vector{}); - - dimss__.emplace_back(std::vector{static_cast(n_obs)}); - - dimss__.emplace_back(std::vector{static_cast(n_obs)}); - - dimss__.emplace_back(std::vector{static_cast(3)}); - - } // get_dims() - - inline void constrained_param_names( - std::vector& param_names__, - bool emit_transformed_parameters__ = true, - bool emit_generated_quantities__ = true) const - final { - + } + inline void + get_param_names(std::vector& names__, const bool + emit_transformed_parameters__ = true, const bool + emit_generated_quantities__ = true) const { + names__ = std::vector{"ind_y_0", "ind_coeff", "ind_power", + "global_error_sigma"}; + if (emit_transformed_parameters__) {} + if (emit_generated_quantities__) { + std::vector temp{"y_hat", "Delta_hat", "pars"}; + names__.reserve(names__.size() + temp.size()); + names__.insert(names__.end(), temp.begin(), temp.end()); + } + } + inline void + get_dims(std::vector>& dimss__, const bool + emit_transformed_parameters__ = true, const bool + emit_generated_quantities__ = true) const { + dimss__ = std::vector>{std::vector{}, + std::vector{}, std::vector{}, + std::vector{}}; + if (emit_transformed_parameters__) {} + if (emit_generated_quantities__) { + std::vector> + temp{std::vector{static_cast(n_obs)}, + std::vector{static_cast(n_obs)}, + std::vector{static_cast(3)}}; + dimss__.reserve(dimss__.size() + temp.size()); + dimss__.insert(dimss__.end(), temp.begin(), temp.end()); + } + } + inline void + constrained_param_names(std::vector& param_names__, bool + emit_transformed_parameters__ = true, bool + emit_generated_quantities__ = true) const final { param_names__.emplace_back(std::string() + "ind_y_0"); param_names__.emplace_back(std::string() + "ind_coeff"); param_names__.emplace_back(std::string() + "ind_power"); param_names__.emplace_back(std::string() + "global_error_sigma"); - if (emit_transformed_parameters__) { - - } - + if (emit_transformed_parameters__) {} if (emit_generated_quantities__) { for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { - { - param_names__.emplace_back(std::string() + "y_hat" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "y_hat" + '.' + + std::to_string(sym1__)); + } for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { - { - param_names__.emplace_back(std::string() + "Delta_hat" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "Delta_hat" + '.' + + std::to_string(sym1__)); + } for (int sym1__ = 1; sym1__ <= 3; ++sym1__) { - { - param_names__.emplace_back(std::string() + "pars" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "pars" + '.' + + std::to_string(sym1__)); + } } - - } // constrained_param_names() - - inline void unconstrained_param_names( - std::vector& param_names__, - bool emit_transformed_parameters__ = true, - bool emit_generated_quantities__ = true) const - final { - + } + inline void + unconstrained_param_names(std::vector& param_names__, bool + emit_transformed_parameters__ = true, bool + emit_generated_quantities__ = true) const final { param_names__.emplace_back(std::string() + "ind_y_0"); param_names__.emplace_back(std::string() + "ind_coeff"); param_names__.emplace_back(std::string() + "ind_power"); param_names__.emplace_back(std::string() + "global_error_sigma"); - if (emit_transformed_parameters__) { - - } - + if (emit_transformed_parameters__) {} if (emit_generated_quantities__) { for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { - { - param_names__.emplace_back(std::string() + "y_hat" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "y_hat" + '.' + + std::to_string(sym1__)); + } for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { - { - param_names__.emplace_back(std::string() + "Delta_hat" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "Delta_hat" + '.' + + std::to_string(sym1__)); + } for (int sym1__ = 1; sym1__ <= 3; ++sym1__) { - { - param_names__.emplace_back(std::string() + "pars" + '.' + std::to_string(sym1__)); - }} + param_names__.emplace_back(std::string() + "pars" + '.' + + std::to_string(sym1__)); + } } - - } // unconstrained_param_names() - + } inline std::string get_constrained_sizedtypes() const { - stringstream s__; - s__ << "[{\"name\":\"ind_y_0\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"ind_coeff\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"ind_power\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"global_error_sigma\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"y_hat\",\"type\":{\"name\":\"array\",\"length\":" << n_obs << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"Delta_hat\",\"type\":{\"name\":\"array\",\"length\":" << n_obs << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"pars\",\"type\":{\"name\":\"vector\",\"length\":" << 3 << "},\"block\":\"generated_quantities\"}]"; - return s__.str(); - } // get_constrained_sizedtypes() - + return std::string("[{\"name\":\"ind_y_0\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"ind_coeff\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"ind_power\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"global_error_sigma\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"y_hat\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_obs) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"Delta_hat\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_obs) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"pars\",\"type\":{\"name\":\"vector\",\"length\":" + std::to_string(3) + "},\"block\":\"generated_quantities\"}]"); + } inline std::string get_unconstrained_sizedtypes() const { - stringstream s__; - s__ << "[{\"name\":\"ind_y_0\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"ind_coeff\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"ind_power\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"global_error_sigma\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"y_hat\",\"type\":{\"name\":\"array\",\"length\":" << n_obs << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"Delta_hat\",\"type\":{\"name\":\"array\",\"length\":" << n_obs << ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"pars\",\"type\":{\"name\":\"vector\",\"length\":" << 3 << "},\"block\":\"generated_quantities\"}]"; - return s__.str(); - } // get_unconstrained_sizedtypes() - - - // Begin method overload boilerplate - template - inline void write_array(RNG& base_rng, - Eigen::Matrix& params_r, - Eigen::Matrix& vars, - const bool emit_transformed_parameters = true, - const bool emit_generated_quantities = true, - std::ostream* pstream = nullptr) const { - std::vector vars_vec(vars.size()); - std::vector params_i; - write_array_impl(base_rng, params_r, params_i, vars_vec, - emit_transformed_parameters, emit_generated_quantities, pstream); - vars.resize(vars_vec.size()); - for (int i = 0; i < vars.size(); ++i) { - vars.coeffRef(i) = vars_vec[i]; - } - } - template - inline void write_array(RNG& base_rng, std::vector& params_r, - std::vector& params_i, - std::vector& vars, - bool emit_transformed_parameters = true, - bool emit_generated_quantities = true, - std::ostream* pstream = nullptr) const { - write_array_impl(base_rng, params_r, params_i, vars, emit_transformed_parameters, emit_generated_quantities, pstream); - } - template - inline T_ log_prob(Eigen::Matrix& params_r, - std::ostream* pstream = nullptr) const { - Eigen::Matrix params_i; - return log_prob_impl(params_r, params_i, pstream); - } - template - inline T__ log_prob(std::vector& params_r, - std::vector& params_i, - std::ostream* pstream = nullptr) const { - return log_prob_impl(params_r, params_i, pstream); - } - - inline void transform_inits(const stan::io::var_context& context, - Eigen::Matrix& params_r, - std::ostream* pstream = nullptr) const final { - std::vector params_r_vec(params_r.size()); - std::vector params_i; - transform_inits_impl(context, params_i, params_r_vec, pstream); - params_r.resize(params_r_vec.size()); - for (int i = 0; i < params_r.size(); ++i) { - params_r.coeffRef(i) = params_r_vec[i]; - } - } - inline void transform_inits(const stan::io::var_context& context, - std::vector& params_i, - std::vector& vars, - std::ostream* pstream = nullptr) const final { - transform_inits_impl(context, params_i, vars, pstream); - } + return std::string("[{\"name\":\"ind_y_0\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"ind_coeff\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"ind_power\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"global_error_sigma\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"y_hat\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_obs) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"Delta_hat\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_obs) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"pars\",\"type\":{\"name\":\"vector\",\"length\":" + std::to_string(3) + "},\"block\":\"generated_quantities\"}]"); + } + // Begin method overload boilerplate + template inline void + write_array(RNG& base_rng, Eigen::Matrix& params_r, + Eigen::Matrix& vars, const bool + emit_transformed_parameters = true, const bool + emit_generated_quantities = true, std::ostream* + pstream = nullptr) const { + const size_t num_params__ = (((1 + 1) + 1) + 1); + const size_t num_transformed = emit_transformed_parameters * (0); + const size_t num_gen_quantities = emit_generated_quantities * (((n_obs + + n_obs) + 3)); + const size_t num_to_write = num_params__ + num_transformed + + num_gen_quantities; + std::vector params_i; + vars = Eigen::Matrix::Constant(num_to_write, + std::numeric_limits::quiet_NaN()); + write_array_impl(base_rng, params_r, params_i, vars, + emit_transformed_parameters, emit_generated_quantities, pstream); + } + template inline void + write_array(RNG& base_rng, std::vector& params_r, std::vector& + params_i, std::vector& vars, bool + emit_transformed_parameters = true, bool + emit_generated_quantities = true, std::ostream* + pstream = nullptr) const { + const size_t num_params__ = (((1 + 1) + 1) + 1); + const size_t num_transformed = emit_transformed_parameters * (0); + const size_t num_gen_quantities = emit_generated_quantities * (((n_obs + + n_obs) + 3)); + const size_t num_to_write = num_params__ + num_transformed + + num_gen_quantities; + vars = std::vector(num_to_write, + std::numeric_limits::quiet_NaN()); + write_array_impl(base_rng, params_r, params_i, vars, + emit_transformed_parameters, emit_generated_quantities, pstream); + } + template inline T_ + log_prob(Eigen::Matrix& params_r, std::ostream* pstream = nullptr) const { + Eigen::Matrix params_i; + return log_prob_impl(params_r, params_i, pstream); + } + template inline T_ + log_prob(std::vector& params_r, std::vector& params_i, + std::ostream* pstream = nullptr) const { + return log_prob_impl(params_r, params_i, pstream); + } + inline void + transform_inits(const stan::io::var_context& context, + Eigen::Matrix& params_r, std::ostream* + pstream = nullptr) const final { + std::vector params_r_vec(params_r.size()); + std::vector params_i; + transform_inits(context, params_i, params_r_vec, pstream); + params_r = Eigen::Map>(params_r_vec.data(), + params_r_vec.size()); + } + inline void + transform_inits(const stan::io::var_context& context, std::vector& + params_i, std::vector& vars, std::ostream* + pstream__ = nullptr) const { + vars.resize(num_params_r__); + transform_inits_impl(context, vars, pstream__); + } + inline void + unconstrain_array(const std::vector& params_constrained, + std::vector& params_unconstrained, std::ostream* + pstream = nullptr) const { + const std::vector params_i; + params_unconstrained = std::vector(num_params_r__, + std::numeric_limits::quiet_NaN()); + unconstrain_array_impl(params_constrained, params_i, + params_unconstrained, pstream); + } + inline void + unconstrain_array(const Eigen::Matrix& params_constrained, + Eigen::Matrix& params_unconstrained, + std::ostream* pstream = nullptr) const { + const std::vector params_i; + params_unconstrained = Eigen::Matrix::Constant(num_params_r__, + std::numeric_limits::quiet_NaN()); + unconstrain_array_impl(params_constrained, params_i, + params_unconstrained, pstream); + } }; } using stan_model = model_power_single_ind_namespace::model_power_single_ind; #ifndef USING_R // Boilerplate -stan::model::model_base& new_model( - stan::io::var_context& data_context, - unsigned int seed, - std::ostream* msg_stream) { +stan::model::model_base& +new_model(stan::io::var_context& data_context, unsigned int seed, + std::ostream* msg_stream) { stan_model* m = new stan_model(data_context, seed, msg_stream); return *m; } diff --git a/src/stanExports_vb_multi_ind.cc b/src/stanExports_vb_multi_ind.cc new file mode 100644 index 0000000..9180068 --- /dev/null +++ b/src/stanExports_vb_multi_ind.cc @@ -0,0 +1,32 @@ +// Generated by rstantools. Do not edit by hand. + +#include +using namespace Rcpp ; +#include "stanExports_vb_multi_ind.h" + +RCPP_MODULE(stan_fit4vb_multi_ind_mod) { + + + class_ >("rstantools_model_vb_multi_ind") + + .constructor() + + + .method("call_sampler", &rstan::stan_fit ::call_sampler) + .method("param_names", &rstan::stan_fit ::param_names) + .method("param_names_oi", &rstan::stan_fit ::param_names_oi) + .method("param_fnames_oi", &rstan::stan_fit ::param_fnames_oi) + .method("param_dims", &rstan::stan_fit ::param_dims) + .method("param_dims_oi", &rstan::stan_fit ::param_dims_oi) + .method("update_param_oi", &rstan::stan_fit ::update_param_oi) + .method("param_oi_tidx", &rstan::stan_fit ::param_oi_tidx) + .method("grad_log_prob", &rstan::stan_fit ::grad_log_prob) + .method("log_prob", &rstan::stan_fit ::log_prob) + .method("unconstrain_pars", &rstan::stan_fit ::unconstrain_pars) + .method("constrain_pars", &rstan::stan_fit ::constrain_pars) + .method("num_pars_unconstrained", &rstan::stan_fit ::num_pars_unconstrained) + .method("unconstrained_param_names", &rstan::stan_fit ::unconstrained_param_names) + .method("constrained_param_names", &rstan::stan_fit ::constrained_param_names) + .method("standalone_gqs", &rstan::stan_fit ::standalone_gqs) + ; +} diff --git a/src/stanExports_vb_multi_ind.h b/src/stanExports_vb_multi_ind.h new file mode 100644 index 0000000..1b82c02 --- /dev/null +++ b/src/stanExports_vb_multi_ind.h @@ -0,0 +1,1054 @@ +// Generated by rstantools. Do not edit by hand. + +/* + rmot is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + rmot is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with rmot. If not, see . +*/ +#ifndef MODELS_HPP +#define MODELS_HPP +#define STAN__SERVICES__COMMAND_HPP +#ifndef USE_STANC3 +#define USE_STANC3 +#endif +#include +// Code generated by stanc v2.32.2 +#include +namespace model_vb_multi_ind_namespace { +using stan::model::model_base_crtp; +using namespace stan::math; +stan::math::profile_map profiles__; +static constexpr std::array locations_array__ = + {" (found before start of program)", + " (in 'string', line 53, column 2 to column 31)", + " (in 'string', line 54, column 2 to column 38)", + " (in 'string', line 55, column 2 to column 36)", + " (in 'string', line 57, column 2 to column 31)", + " (in 'string', line 58, column 2 to column 38)", + " (in 'string', line 59, column 2 to column 29)", + " (in 'string', line 60, column 2 to column 36)", + " (in 'string', line 62, column 2 to column 35)", + " (in 'string', line 98, column 2 to column 20)", + " (in 'string', line 99, column 2 to column 24)", + " (in 'string', line 100, column 2 to column 17)", + " (in 'string', line 103, column 4 to column 40)", + " (in 'string', line 104, column 4 to column 38)", + " (in 'string', line 106, column 6 to column 36)", + " (in 'string', line 105, column 23 to line 107, column 5)", + " (in 'string', line 105, column 4 to line 107, column 5)", + " (in 'string', line 117, column 6 to column 62)", + " (in 'string', line 116, column 11 to line 118, column 5)", + " (in 'string', line 114, column 8 to column 64)", + " (in 'string', line 113, column 13 to line 115, column 7)", + " (in 'string', line 111, column 8 to column 75)", + " (in 'string', line 112, column 8 to column 45)", + " (in 'string', line 109, column 32 to line 113, column 7)", + " (in 'string', line 109, column 6 to line 115, column 7)", + " (in 'string', line 108, column 17 to line 116, column 5)", + " (in 'string', line 108, column 4 to line 118, column 5)", + " (in 'string', line 101, column 19 to line 119, column 3)", + " (in 'string', line 101, column 2 to line 119, column 3)", + " (in 'string', line 66, column 13 to column 18)", + " (in 'string', line 66, column 2 to column 20)", + " (in 'string', line 67, column 2 to column 17)", + " (in 'string', line 70, column 4 to column 40)", + " (in 'string', line 71, column 4 to column 38)", + " (in 'string', line 73, column 6 to column 36)", + " (in 'string', line 72, column 23 to line 74, column 5)", + " (in 'string', line 72, column 4 to line 74, column 5)", + " (in 'string', line 78, column 8 to column 75)", + " (in 'string', line 76, column 32 to line 79, column 7)", + " (in 'string', line 76, column 6 to line 79, column 7)", + " (in 'string', line 75, column 17 to line 80, column 5)", + " (in 'string', line 75, column 4 to line 80, column 5)", + " (in 'string', line 68, column 19 to line 81, column 3)", + " (in 'string', line 68, column 2 to line 81, column 3)", + " (in 'string', line 83, column 2 to column 43)", + " (in 'string', line 86, column 2 to column 47)", + " (in 'string', line 87, column 2 to column 76)", + " (in 'string', line 88, column 2 to column 70)", + " (in 'string', line 90, column 2 to column 40)", + " (in 'string', line 91, column 2 to column 38)", + " (in 'string', line 92, column 2 to column 52)", + " (in 'string', line 93, column 2 to column 36)", + " (in 'string', line 95, column 2 to column 35)", + " (in 'string', line 41, column 2 to column 17)", + " (in 'string', line 42, column 2 to column 12)", + " (in 'string', line 43, column 2 to column 12)", + " (in 'string', line 44, column 13 to column 18)", + " (in 'string', line 44, column 2 to column 20)", + " (in 'string', line 45, column 16 to column 21)", + " (in 'string', line 45, column 2 to column 23)", + " (in 'string', line 46, column 12 to column 17)", + " (in 'string', line 46, column 2 to column 19)", + " (in 'string', line 47, column 13 to column 18)", + " (in 'string', line 47, column 2 to column 20)", + " (in 'string', line 48, column 15 to column 20)", + " (in 'string', line 48, column 2 to column 22)", + " (in 'string', line 53, column 24 to column 29)", + " (in 'string', line 54, column 31 to column 36)", + " (in 'string', line 55, column 29 to column 34)", + " (in 'string', line 98, column 13 to column 18)", + " (in 'string', line 99, column 17 to column 22)", + " (in 'string', line 6, column 4 to column 35)", + " (in 'string', line 5, column 30 to line 7, column 3)", + " (in 'string', line 9, column 4 to column 12)", + " (in 'string', line 10, column 4 to column 12)", + " (in 'string', line 11, column 4 to column 12)", + " (in 'string', line 12, column 4 to column 12)", + " (in 'string', line 13, column 4 to column 15)", + " (in 'string', line 14, column 4 to column 21)", + " (in 'string', line 15, column 4 to column 37)", + " (in 'string', line 16, column 4 to column 37)", + " (in 'string', line 17, column 4 to column 33)", + " (in 'string', line 18, column 4 to column 67)", + " (in 'string', line 19, column 4 to column 17)", + " (in 'string', line 8, column 51 to line 20, column 3)", + " (in 'string', line 22, column 4 to column 14)", + " (in 'string', line 23, column 4 to column 18)", + " (in 'string', line 24, column 4 to column 15)", + " (in 'string', line 25, column 4 to column 24)", + " (in 'string', line 26, column 4 to column 17)", + " (in 'string', line 27, column 4 to column 14)", + " (in 'string', line 30, column 6 to column 59)", + " (in 'string', line 32, column 6 to column 52)", + " (in 'string', line 34, column 6 to column 43)", + " (in 'string', line 28, column 30 to line 35, column 5)", + " (in 'string', line 28, column 4 to line 35, column 5)", + " (in 'string', line 36, column 4 to column 17)", + " (in 'string', line 21, column 62 to line 37, column 3)"}; +template , + stan::is_col_vector, + stan::is_vt_not_complex>* = nullptr> +stan::promote_args_t> +DE(const T0__& y, const T1__& pars_arg__, std::ostream* pstream__); +template , + stan::is_col_vector, + stan::is_vt_not_complex, + stan::is_stan_scalar>* = nullptr> +stan::promote_args_t, T2__> +rk4_step(const T0__& y, const T1__& pars_arg__, const T2__& interval, + std::ostream* pstream__); +template , + stan::is_col_vector, + stan::is_vt_not_complex, + stan::is_stan_scalar, + stan::is_stan_scalar>* = nullptr> +stan::promote_args_t, T2__, T3__> +rk4(const T0__& y, const T1__& pars_arg__, const T2__& interval, const T3__& + step_size, std::ostream* pstream__); +template , + stan::is_col_vector, + stan::is_vt_not_complex>*> +stan::promote_args_t> +DE(const T0__& y, const T1__& pars_arg__, std::ostream* pstream__) { + using local_scalar_t__ = stan::promote_args_t>; + int current_statement__ = 0; + const auto& pars = stan::math::to_ref(pars_arg__); + static constexpr bool propto__ = true; + // suppress unused var warning + (void) propto__; + local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); + // suppress unused var warning + (void) DUMMY_VAR__; + try { + current_statement__ = 71; + return (stan::model::rvalue(pars, "pars", stan::model::index_uni(1)) * + (stan::model::rvalue(pars, "pars", stan::model::index_uni(2)) - + y)); + } catch (const std::exception& e) { + stan::lang::rethrow_located(e, locations_array__[current_statement__]); + } +} +template , + stan::is_col_vector, + stan::is_vt_not_complex, + stan::is_stan_scalar>*> +stan::promote_args_t, T2__> +rk4_step(const T0__& y, const T1__& pars_arg__, const T2__& interval, + std::ostream* pstream__) { + using local_scalar_t__ = stan::promote_args_t, T2__>; + int current_statement__ = 0; + const auto& pars = stan::math::to_ref(pars_arg__); + static constexpr bool propto__ = true; + // suppress unused var warning + (void) propto__; + local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); + // suppress unused var warning + (void) DUMMY_VAR__; + try { + local_scalar_t__ k1 = DUMMY_VAR__; + local_scalar_t__ k2 = DUMMY_VAR__; + local_scalar_t__ k3 = DUMMY_VAR__; + local_scalar_t__ k4 = DUMMY_VAR__; + local_scalar_t__ y_hat = DUMMY_VAR__; + current_statement__ = 78; + k1 = DE(y, pars, pstream__); + current_statement__ = 79; + k2 = DE((y + ((interval * k1) / 2.0)), pars, pstream__); + current_statement__ = 80; + k3 = DE((y + ((interval * k2) / 2.0)), pars, pstream__); + current_statement__ = 81; + k4 = DE((y + (interval * k3)), pars, pstream__); + current_statement__ = 82; + y_hat = (y + (((1.0 / 6.0) * (((k1 + (2.0 * k2)) + (2.0 * k3)) + k4)) * + interval)); + current_statement__ = 83; + return y_hat; + } catch (const std::exception& e) { + stan::lang::rethrow_located(e, locations_array__[current_statement__]); + } +} +template , + stan::is_col_vector, + stan::is_vt_not_complex, + stan::is_stan_scalar, + stan::is_stan_scalar>*> +stan::promote_args_t, T2__, T3__> +rk4(const T0__& y, const T1__& pars_arg__, const T2__& interval, const T3__& + step_size, std::ostream* pstream__) { + using local_scalar_t__ = stan::promote_args_t, T2__, T3__>; + int current_statement__ = 0; + const auto& pars = stan::math::to_ref(pars_arg__); + static constexpr bool propto__ = true; + // suppress unused var warning + (void) propto__; + local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); + // suppress unused var warning + (void) DUMMY_VAR__; + try { + int steps = std::numeric_limits::min(); + local_scalar_t__ duration = DUMMY_VAR__; + local_scalar_t__ y_hat = DUMMY_VAR__; + local_scalar_t__ step_size_temp = DUMMY_VAR__; + current_statement__ = 89; + duration = 0; + current_statement__ = 90; + y_hat = y; + current_statement__ = 95; + while (stan::math::logical_lt(duration, interval)) { + current_statement__ = 91; + step_size_temp = stan::math::min( + (Eigen::Matrix(2) << + step_size, + (interval + - + duration)).finished()); + current_statement__ = 92; + y_hat = rk4_step(y_hat, pars, step_size_temp, pstream__); + current_statement__ = 93; + duration = (duration + step_size_temp); + } + current_statement__ = 96; + return y_hat; + } catch (const std::exception& e) { + stan::lang::rethrow_located(e, locations_array__[current_statement__]); + } +} +#include +class model_vb_multi_ind final : public model_base_crtp { +private: + double step_size; + int n_obs; + int n_ind; + std::vector y_obs; + std::vector obs_index; + std::vector time; + std::vector ind_id; + std::vector y_0_obs; +public: + ~model_vb_multi_ind() {} + model_vb_multi_ind(stan::io::var_context& context__, unsigned int + random_seed__ = 0, std::ostream* pstream__ = nullptr) + : model_base_crtp(0) { + int current_statement__ = 0; + using local_scalar_t__ = double; + boost::ecuyer1988 base_rng__ = + stan::services::util::create_rng(random_seed__, 0); + // suppress unused var warning + (void) base_rng__; + static constexpr const char* function__ = + "model_vb_multi_ind_namespace::model_vb_multi_ind"; + // suppress unused var warning + (void) function__; + local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); + // suppress unused var warning + (void) DUMMY_VAR__; + try { + int pos__ = std::numeric_limits::min(); + pos__ = 1; + current_statement__ = 53; + context__.validate_dims("data initialization", "step_size", "double", + std::vector{}); + step_size = std::numeric_limits::quiet_NaN(); + current_statement__ = 53; + step_size = context__.vals_r("step_size")[(1 - 1)]; + current_statement__ = 54; + context__.validate_dims("data initialization", "n_obs", "int", + std::vector{}); + n_obs = std::numeric_limits::min(); + current_statement__ = 54; + n_obs = context__.vals_i("n_obs")[(1 - 1)]; + current_statement__ = 55; + context__.validate_dims("data initialization", "n_ind", "int", + std::vector{}); + n_ind = std::numeric_limits::min(); + current_statement__ = 55; + n_ind = context__.vals_i("n_ind")[(1 - 1)]; + current_statement__ = 56; + stan::math::validate_non_negative_index("y_obs", "n_obs", n_obs); + current_statement__ = 57; + context__.validate_dims("data initialization", "y_obs", "double", + std::vector{static_cast(n_obs)}); + y_obs = std::vector(n_obs, + std::numeric_limits::quiet_NaN()); + current_statement__ = 57; + y_obs = context__.vals_r("y_obs"); + current_statement__ = 58; + stan::math::validate_non_negative_index("obs_index", "n_obs", n_obs); + current_statement__ = 59; + context__.validate_dims("data initialization", "obs_index", "int", + std::vector{static_cast(n_obs)}); + obs_index = std::vector(n_obs, std::numeric_limits::min()); + current_statement__ = 59; + obs_index = context__.vals_i("obs_index"); + current_statement__ = 60; + stan::math::validate_non_negative_index("time", "n_obs", n_obs); + current_statement__ = 61; + context__.validate_dims("data initialization", "time", "double", + std::vector{static_cast(n_obs)}); + time = std::vector(n_obs, + std::numeric_limits::quiet_NaN()); + current_statement__ = 61; + time = context__.vals_r("time"); + current_statement__ = 62; + stan::math::validate_non_negative_index("ind_id", "n_obs", n_obs); + current_statement__ = 63; + context__.validate_dims("data initialization", "ind_id", "int", + std::vector{static_cast(n_obs)}); + ind_id = std::vector(n_obs, std::numeric_limits::min()); + current_statement__ = 63; + ind_id = context__.vals_i("ind_id"); + current_statement__ = 64; + stan::math::validate_non_negative_index("y_0_obs", "n_ind", n_ind); + current_statement__ = 65; + context__.validate_dims("data initialization", "y_0_obs", "double", + std::vector{static_cast(n_ind)}); + y_0_obs = std::vector(n_ind, + std::numeric_limits::quiet_NaN()); + current_statement__ = 65; + y_0_obs = context__.vals_r("y_0_obs"); + current_statement__ = 66; + stan::math::validate_non_negative_index("ind_y_0", "n_ind", n_ind); + current_statement__ = 67; + stan::math::validate_non_negative_index("ind_growth_par", "n_ind", + n_ind); + current_statement__ = 68; + stan::math::validate_non_negative_index("ind_max_size", "n_ind", n_ind); + current_statement__ = 69; + stan::math::validate_non_negative_index("y_hat", "n_obs", n_obs); + current_statement__ = 70; + stan::math::validate_non_negative_index("Delta_hat", "n_obs", n_obs); + } catch (const std::exception& e) { + stan::lang::rethrow_located(e, locations_array__[current_statement__]); + } + num_params_r__ = n_ind + n_ind + n_ind + 1 + 1 + 1 + 1 + 1; + } + inline std::string model_name() const final { + return "model_vb_multi_ind"; + } + inline std::vector model_compile_info() const noexcept { + return std::vector{"stanc_version = stanc3 v2.32.2", + "stancflags = --allow-undefined"}; + } + template * = nullptr, + stan::require_vector_like_vt* = nullptr> + inline stan::scalar_type_t + log_prob_impl(VecR& params_r__, VecI& params_i__, std::ostream* + pstream__ = nullptr) const { + using T__ = stan::scalar_type_t; + using local_scalar_t__ = T__; + T__ lp__(0.0); + stan::math::accumulator lp_accum__; + stan::io::deserializer in__(params_r__, params_i__); + int current_statement__ = 0; + local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); + // suppress unused var warning + (void) DUMMY_VAR__; + static constexpr const char* function__ = + "model_vb_multi_ind_namespace::log_prob"; + // suppress unused var warning + (void) function__; + try { + std::vector ind_y_0 = + std::vector(n_ind, DUMMY_VAR__); + current_statement__ = 1; + ind_y_0 = in__.template read_constrain_lb< + std::vector, jacobian__>(0, lp__, n_ind); + std::vector ind_growth_par = + std::vector(n_ind, DUMMY_VAR__); + current_statement__ = 2; + ind_growth_par = in__.template read_constrain_lb< + std::vector, jacobian__>(0, lp__, + n_ind); + std::vector ind_max_size = + std::vector(n_ind, DUMMY_VAR__); + current_statement__ = 3; + ind_max_size = in__.template read_constrain_lb< + std::vector, jacobian__>(0, lp__, + n_ind); + local_scalar_t__ species_growth_par_mean = DUMMY_VAR__; + current_statement__ = 4; + species_growth_par_mean = in__.template read(); + local_scalar_t__ species_growth_par_sd = DUMMY_VAR__; + current_statement__ = 5; + species_growth_par_sd = in__.template read_constrain_lb< + local_scalar_t__, jacobian__>(0, lp__); + local_scalar_t__ species_max_size_mean = DUMMY_VAR__; + current_statement__ = 6; + species_max_size_mean = in__.template read(); + local_scalar_t__ species_max_size_sd = DUMMY_VAR__; + current_statement__ = 7; + species_max_size_sd = in__.template read_constrain_lb(0, lp__); + local_scalar_t__ global_error_sigma = DUMMY_VAR__; + current_statement__ = 8; + global_error_sigma = in__.template read_constrain_lb(0, lp__); + { + current_statement__ = 29; + stan::math::validate_non_negative_index("y_hat", "n_obs", n_obs); + std::vector y_hat = + std::vector(n_obs, DUMMY_VAR__); + Eigen::Matrix pars = + Eigen::Matrix::Constant(2, DUMMY_VAR__); + current_statement__ = 43; + for (int i = 1; i <= n_obs; ++i) { + current_statement__ = 32; + stan::model::assign(pars, + stan::model::rvalue(ind_growth_par, "ind_growth_par", + stan::model::index_uni( + stan::model::rvalue(ind_id, "ind_id", + stan::model::index_uni(i)))), "assigning variable pars", + stan::model::index_uni(1)); + current_statement__ = 33; + stan::model::assign(pars, + stan::model::rvalue(ind_max_size, "ind_max_size", + stan::model::index_uni( + stan::model::rvalue(ind_id, "ind_id", + stan::model::index_uni(i)))), "assigning variable pars", + stan::model::index_uni(2)); + current_statement__ = 36; + if (stan::math::logical_eq( + stan::model::rvalue(obs_index, "obs_index", + stan::model::index_uni(i)), 1)) { + current_statement__ = 34; + stan::model::assign(y_hat, + stan::model::rvalue(ind_y_0, "ind_y_0", + stan::model::index_uni( + stan::model::rvalue(ind_id, "ind_id", + stan::model::index_uni(i)))), "assigning variable y_hat", + stan::model::index_uni(i)); + } + current_statement__ = 41; + if (stan::math::logical_lt(i, n_obs)) { + current_statement__ = 39; + if (stan::math::logical_eq( + stan::model::rvalue(ind_id, "ind_id", + stan::model::index_uni((i + 1))), + stan::model::rvalue(ind_id, "ind_id", + stan::model::index_uni(i)))) { + current_statement__ = 37; + stan::model::assign(y_hat, + rk4( + stan::model::rvalue(y_hat, "y_hat", + stan::model::index_uni(i)), pars, + (stan::model::rvalue(time, "time", + stan::model::index_uni((i + 1))) - + stan::model::rvalue(time, "time", stan::model::index_uni(i))), + step_size, pstream__), "assigning variable y_hat", + stan::model::index_uni((i + 1))); + } + } + } + current_statement__ = 44; + lp_accum__.add(stan::math::normal_lpdf(y_obs, y_hat, + global_error_sigma)); + current_statement__ = 45; + lp_accum__.add(stan::math::normal_lpdf(ind_y_0, y_0_obs, + global_error_sigma)); + current_statement__ = 46; + lp_accum__.add(stan::math::lognormal_lpdf(ind_growth_par, + species_growth_par_mean, species_growth_par_sd)); + current_statement__ = 47; + lp_accum__.add(stan::math::lognormal_lpdf(ind_max_size, + species_max_size_mean, species_max_size_sd)); + current_statement__ = 48; + lp_accum__.add(stan::math::normal_lpdf( + species_growth_par_mean, 0, 2)); + current_statement__ = 49; + lp_accum__.add(stan::math::cauchy_lpdf( + species_growth_par_sd, 0, 2)); + current_statement__ = 50; + lp_accum__.add(stan::math::normal_lpdf( + species_max_size_mean, + stan::math::max(stan::math::log(y_obs)), 2)); + current_statement__ = 51; + lp_accum__.add(stan::math::cauchy_lpdf(species_max_size_sd, + 0, 2)); + current_statement__ = 52; + lp_accum__.add(stan::math::cauchy_lpdf(global_error_sigma, + 0, 5)); + } + } catch (const std::exception& e) { + stan::lang::rethrow_located(e, locations_array__[current_statement__]); + } + lp_accum__.add(lp__); + return lp_accum__.sum(); + } + template * = nullptr, stan::require_vector_like_vt* = nullptr, stan::require_vector_vt* = nullptr> + inline void + write_array_impl(RNG& base_rng__, VecR& params_r__, VecI& params_i__, + VecVar& vars__, const bool + emit_transformed_parameters__ = true, const bool + emit_generated_quantities__ = true, std::ostream* + pstream__ = nullptr) const { + using local_scalar_t__ = double; + stan::io::deserializer in__(params_r__, params_i__); + stan::io::serializer out__(vars__); + static constexpr bool propto__ = true; + // suppress unused var warning + (void) propto__; + double lp__ = 0.0; + // suppress unused var warning + (void) lp__; + int current_statement__ = 0; + stan::math::accumulator lp_accum__; + local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); + // suppress unused var warning + (void) DUMMY_VAR__; + constexpr bool jacobian__ = false; + static constexpr const char* function__ = + "model_vb_multi_ind_namespace::write_array"; + // suppress unused var warning + (void) function__; + try { + std::vector ind_y_0 = + std::vector(n_ind, std::numeric_limits::quiet_NaN()); + current_statement__ = 1; + ind_y_0 = in__.template read_constrain_lb< + std::vector, jacobian__>(0, lp__, n_ind); + std::vector ind_growth_par = + std::vector(n_ind, std::numeric_limits::quiet_NaN()); + current_statement__ = 2; + ind_growth_par = in__.template read_constrain_lb< + std::vector, jacobian__>(0, lp__, + n_ind); + std::vector ind_max_size = + std::vector(n_ind, std::numeric_limits::quiet_NaN()); + current_statement__ = 3; + ind_max_size = in__.template read_constrain_lb< + std::vector, jacobian__>(0, lp__, + n_ind); + double species_growth_par_mean = + std::numeric_limits::quiet_NaN(); + current_statement__ = 4; + species_growth_par_mean = in__.template read(); + double species_growth_par_sd = std::numeric_limits::quiet_NaN(); + current_statement__ = 5; + species_growth_par_sd = in__.template read_constrain_lb< + local_scalar_t__, jacobian__>(0, lp__); + double species_max_size_mean = std::numeric_limits::quiet_NaN(); + current_statement__ = 6; + species_max_size_mean = in__.template read(); + double species_max_size_sd = std::numeric_limits::quiet_NaN(); + current_statement__ = 7; + species_max_size_sd = in__.template read_constrain_lb(0, lp__); + double global_error_sigma = std::numeric_limits::quiet_NaN(); + current_statement__ = 8; + global_error_sigma = in__.template read_constrain_lb(0, lp__); + out__.write(ind_y_0); + out__.write(ind_growth_par); + out__.write(ind_max_size); + out__.write(species_growth_par_mean); + out__.write(species_growth_par_sd); + out__.write(species_max_size_mean); + out__.write(species_max_size_sd); + out__.write(global_error_sigma); + if (stan::math::logical_negation( + (stan::math::primitive_value(emit_transformed_parameters__) || + stan::math::primitive_value(emit_generated_quantities__)))) { + return ; + } + if (stan::math::logical_negation(emit_generated_quantities__)) { + return ; + } + std::vector y_hat = + std::vector(n_obs, std::numeric_limits::quiet_NaN()); + std::vector Delta_hat = + std::vector(n_obs, std::numeric_limits::quiet_NaN()); + Eigen::Matrix pars = + Eigen::Matrix::Constant(2, + std::numeric_limits::quiet_NaN()); + current_statement__ = 28; + for (int i = 1; i <= n_obs; ++i) { + current_statement__ = 12; + stan::model::assign(pars, + stan::model::rvalue(ind_growth_par, "ind_growth_par", + stan::model::index_uni( + stan::model::rvalue(ind_id, "ind_id", stan::model::index_uni(i)))), + "assigning variable pars", stan::model::index_uni(1)); + current_statement__ = 13; + stan::model::assign(pars, + stan::model::rvalue(ind_max_size, "ind_max_size", + stan::model::index_uni( + stan::model::rvalue(ind_id, "ind_id", stan::model::index_uni(i)))), + "assigning variable pars", stan::model::index_uni(2)); + current_statement__ = 16; + if (stan::math::logical_eq( + stan::model::rvalue(obs_index, "obs_index", + stan::model::index_uni(i)), 1)) { + current_statement__ = 14; + stan::model::assign(y_hat, + stan::model::rvalue(ind_y_0, "ind_y_0", + stan::model::index_uni( + stan::model::rvalue(ind_id, "ind_id", + stan::model::index_uni(i)))), "assigning variable y_hat", + stan::model::index_uni(i)); + } + current_statement__ = 26; + if (stan::math::logical_lt(i, n_obs)) { + current_statement__ = 24; + if (stan::math::logical_eq( + stan::model::rvalue(ind_id, "ind_id", + stan::model::index_uni((i + 1))), + stan::model::rvalue(ind_id, "ind_id", + stan::model::index_uni(i)))) { + current_statement__ = 21; + stan::model::assign(y_hat, + rk4( + stan::model::rvalue(y_hat, "y_hat", stan::model::index_uni(i)), + pars, + (stan::model::rvalue(time, "time", + stan::model::index_uni((i + 1))) - + stan::model::rvalue(time, "time", stan::model::index_uni(i))), + step_size, pstream__), "assigning variable y_hat", + stan::model::index_uni((i + 1))); + current_statement__ = 22; + stan::model::assign(Delta_hat, + (stan::model::rvalue(y_hat, "y_hat", + stan::model::index_uni((i + 1))) - + stan::model::rvalue(y_hat, "y_hat", stan::model::index_uni(i))), + "assigning variable Delta_hat", stan::model::index_uni(i)); + } else { + current_statement__ = 19; + stan::model::assign(Delta_hat, + (DE( + stan::model::rvalue(y_hat, "y_hat", + stan::model::index_uni(i)), pars, pstream__) * + (stan::model::rvalue(time, "time", stan::model::index_uni(i)) - + stan::model::rvalue(time, "time", + stan::model::index_uni((i - 1))))), + "assigning variable Delta_hat", stan::model::index_uni(i)); + } + } else { + current_statement__ = 17; + stan::model::assign(Delta_hat, + (DE( + stan::model::rvalue(y_hat, "y_hat", stan::model::index_uni(i)), + pars, pstream__) * + (stan::model::rvalue(time, "time", stan::model::index_uni(i)) - + stan::model::rvalue(time, "time", stan::model::index_uni((i - 1))))), + "assigning variable Delta_hat", stan::model::index_uni(i)); + } + } + out__.write(y_hat); + out__.write(Delta_hat); + out__.write(pars); + } catch (const std::exception& e) { + stan::lang::rethrow_located(e, locations_array__[current_statement__]); + } + } + template * = nullptr, + stan::require_vector_like_vt* = nullptr> + inline void + unconstrain_array_impl(const VecVar& params_r__, const VecI& params_i__, + VecVar& vars__, std::ostream* pstream__ = nullptr) const { + using local_scalar_t__ = double; + stan::io::deserializer in__(params_r__, params_i__); + stan::io::serializer out__(vars__); + int current_statement__ = 0; + local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); + // suppress unused var warning + (void) DUMMY_VAR__; + try { + int pos__ = std::numeric_limits::min(); + pos__ = 1; + std::vector ind_y_0 = + std::vector(n_ind, DUMMY_VAR__); + current_statement__ = 1; + stan::model::assign(ind_y_0, + in__.read>(n_ind), + "assigning variable ind_y_0"); + out__.write_free_lb(0, ind_y_0); + std::vector ind_growth_par = + std::vector(n_ind, DUMMY_VAR__); + current_statement__ = 2; + stan::model::assign(ind_growth_par, + in__.read>(n_ind), + "assigning variable ind_growth_par"); + out__.write_free_lb(0, ind_growth_par); + std::vector ind_max_size = + std::vector(n_ind, DUMMY_VAR__); + current_statement__ = 3; + stan::model::assign(ind_max_size, + in__.read>(n_ind), + "assigning variable ind_max_size"); + out__.write_free_lb(0, ind_max_size); + local_scalar_t__ species_growth_par_mean = DUMMY_VAR__; + current_statement__ = 4; + species_growth_par_mean = in__.read(); + out__.write(species_growth_par_mean); + local_scalar_t__ species_growth_par_sd = DUMMY_VAR__; + current_statement__ = 5; + species_growth_par_sd = in__.read(); + out__.write_free_lb(0, species_growth_par_sd); + local_scalar_t__ species_max_size_mean = DUMMY_VAR__; + current_statement__ = 6; + species_max_size_mean = in__.read(); + out__.write(species_max_size_mean); + local_scalar_t__ species_max_size_sd = DUMMY_VAR__; + current_statement__ = 7; + species_max_size_sd = in__.read(); + out__.write_free_lb(0, species_max_size_sd); + local_scalar_t__ global_error_sigma = DUMMY_VAR__; + current_statement__ = 8; + global_error_sigma = in__.read(); + out__.write_free_lb(0, global_error_sigma); + } catch (const std::exception& e) { + stan::lang::rethrow_located(e, locations_array__[current_statement__]); + } + } + template * = nullptr> + inline void + transform_inits_impl(const stan::io::var_context& context__, VecVar& + vars__, std::ostream* pstream__ = nullptr) const { + using local_scalar_t__ = double; + stan::io::serializer out__(vars__); + int current_statement__ = 0; + local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); + // suppress unused var warning + (void) DUMMY_VAR__; + try { + current_statement__ = 1; + context__.validate_dims("parameter initialization", "ind_y_0", + "double", std::vector{static_cast(n_ind)}); + current_statement__ = 2; + context__.validate_dims("parameter initialization", "ind_growth_par", + "double", std::vector{static_cast(n_ind)}); + current_statement__ = 3; + context__.validate_dims("parameter initialization", "ind_max_size", + "double", std::vector{static_cast(n_ind)}); + current_statement__ = 4; + context__.validate_dims("parameter initialization", + "species_growth_par_mean", "double", std::vector{}); + current_statement__ = 5; + context__.validate_dims("parameter initialization", + "species_growth_par_sd", "double", std::vector{}); + current_statement__ = 6; + context__.validate_dims("parameter initialization", + "species_max_size_mean", "double", std::vector{}); + current_statement__ = 7; + context__.validate_dims("parameter initialization", + "species_max_size_sd", "double", std::vector{}); + current_statement__ = 8; + context__.validate_dims("parameter initialization", + "global_error_sigma", "double", std::vector{}); + int pos__ = std::numeric_limits::min(); + pos__ = 1; + std::vector ind_y_0 = + std::vector(n_ind, DUMMY_VAR__); + current_statement__ = 1; + ind_y_0 = context__.vals_r("ind_y_0"); + out__.write_free_lb(0, ind_y_0); + std::vector ind_growth_par = + std::vector(n_ind, DUMMY_VAR__); + current_statement__ = 2; + ind_growth_par = context__.vals_r("ind_growth_par"); + out__.write_free_lb(0, ind_growth_par); + std::vector ind_max_size = + std::vector(n_ind, DUMMY_VAR__); + current_statement__ = 3; + ind_max_size = context__.vals_r("ind_max_size"); + out__.write_free_lb(0, ind_max_size); + local_scalar_t__ species_growth_par_mean = DUMMY_VAR__; + current_statement__ = 4; + species_growth_par_mean = context__.vals_r("species_growth_par_mean")[(1 + - 1)]; + out__.write(species_growth_par_mean); + local_scalar_t__ species_growth_par_sd = DUMMY_VAR__; + current_statement__ = 5; + species_growth_par_sd = context__.vals_r("species_growth_par_sd")[(1 - + 1)]; + out__.write_free_lb(0, species_growth_par_sd); + local_scalar_t__ species_max_size_mean = DUMMY_VAR__; + current_statement__ = 6; + species_max_size_mean = context__.vals_r("species_max_size_mean")[(1 - + 1)]; + out__.write(species_max_size_mean); + local_scalar_t__ species_max_size_sd = DUMMY_VAR__; + current_statement__ = 7; + species_max_size_sd = context__.vals_r("species_max_size_sd")[(1 - 1)]; + out__.write_free_lb(0, species_max_size_sd); + local_scalar_t__ global_error_sigma = DUMMY_VAR__; + current_statement__ = 8; + global_error_sigma = context__.vals_r("global_error_sigma")[(1 - 1)]; + out__.write_free_lb(0, global_error_sigma); + } catch (const std::exception& e) { + stan::lang::rethrow_located(e, locations_array__[current_statement__]); + } + } + inline void + get_param_names(std::vector& names__, const bool + emit_transformed_parameters__ = true, const bool + emit_generated_quantities__ = true) const { + names__ = std::vector{"ind_y_0", "ind_growth_par", + "ind_max_size", "species_growth_par_mean", + "species_growth_par_sd", "species_max_size_mean", + "species_max_size_sd", "global_error_sigma"}; + if (emit_transformed_parameters__) {} + if (emit_generated_quantities__) { + std::vector temp{"y_hat", "Delta_hat", "pars"}; + names__.reserve(names__.size() + temp.size()); + names__.insert(names__.end(), temp.begin(), temp.end()); + } + } + inline void + get_dims(std::vector>& dimss__, const bool + emit_transformed_parameters__ = true, const bool + emit_generated_quantities__ = true) const { + dimss__ = std::vector>{std::vector{static_cast< + size_t>( + n_ind)}, + std::vector{static_cast(n_ind)}, + std::vector{static_cast(n_ind)}, + std::vector{}, std::vector{}, + std::vector{}, std::vector{}, + std::vector{}}; + if (emit_transformed_parameters__) {} + if (emit_generated_quantities__) { + std::vector> + temp{std::vector{static_cast(n_obs)}, + std::vector{static_cast(n_obs)}, + std::vector{static_cast(2)}}; + dimss__.reserve(dimss__.size() + temp.size()); + dimss__.insert(dimss__.end(), temp.begin(), temp.end()); + } + } + inline void + constrained_param_names(std::vector& param_names__, bool + emit_transformed_parameters__ = true, bool + emit_generated_quantities__ = true) const final { + for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { + param_names__.emplace_back(std::string() + "ind_y_0" + '.' + + std::to_string(sym1__)); + } + for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { + param_names__.emplace_back(std::string() + "ind_growth_par" + '.' + + std::to_string(sym1__)); + } + for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { + param_names__.emplace_back(std::string() + "ind_max_size" + '.' + + std::to_string(sym1__)); + } + param_names__.emplace_back(std::string() + "species_growth_par_mean"); + param_names__.emplace_back(std::string() + "species_growth_par_sd"); + param_names__.emplace_back(std::string() + "species_max_size_mean"); + param_names__.emplace_back(std::string() + "species_max_size_sd"); + param_names__.emplace_back(std::string() + "global_error_sigma"); + if (emit_transformed_parameters__) {} + if (emit_generated_quantities__) { + for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { + param_names__.emplace_back(std::string() + "y_hat" + '.' + + std::to_string(sym1__)); + } + for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { + param_names__.emplace_back(std::string() + "Delta_hat" + '.' + + std::to_string(sym1__)); + } + for (int sym1__ = 1; sym1__ <= 2; ++sym1__) { + param_names__.emplace_back(std::string() + "pars" + '.' + + std::to_string(sym1__)); + } + } + } + inline void + unconstrained_param_names(std::vector& param_names__, bool + emit_transformed_parameters__ = true, bool + emit_generated_quantities__ = true) const final { + for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { + param_names__.emplace_back(std::string() + "ind_y_0" + '.' + + std::to_string(sym1__)); + } + for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { + param_names__.emplace_back(std::string() + "ind_growth_par" + '.' + + std::to_string(sym1__)); + } + for (int sym1__ = 1; sym1__ <= n_ind; ++sym1__) { + param_names__.emplace_back(std::string() + "ind_max_size" + '.' + + std::to_string(sym1__)); + } + param_names__.emplace_back(std::string() + "species_growth_par_mean"); + param_names__.emplace_back(std::string() + "species_growth_par_sd"); + param_names__.emplace_back(std::string() + "species_max_size_mean"); + param_names__.emplace_back(std::string() + "species_max_size_sd"); + param_names__.emplace_back(std::string() + "global_error_sigma"); + if (emit_transformed_parameters__) {} + if (emit_generated_quantities__) { + for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { + param_names__.emplace_back(std::string() + "y_hat" + '.' + + std::to_string(sym1__)); + } + for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { + param_names__.emplace_back(std::string() + "Delta_hat" + '.' + + std::to_string(sym1__)); + } + for (int sym1__ = 1; sym1__ <= 2; ++sym1__) { + param_names__.emplace_back(std::string() + "pars" + '.' + + std::to_string(sym1__)); + } + } + } + inline std::string get_constrained_sizedtypes() const { + return std::string("[{\"name\":\"ind_y_0\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_ind) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"ind_growth_par\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_ind) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"ind_max_size\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_ind) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"species_growth_par_mean\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_growth_par_sd\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_max_size_mean\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_max_size_sd\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"global_error_sigma\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"y_hat\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_obs) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"Delta_hat\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_obs) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"pars\",\"type\":{\"name\":\"vector\",\"length\":" + std::to_string(2) + "},\"block\":\"generated_quantities\"}]"); + } + inline std::string get_unconstrained_sizedtypes() const { + return std::string("[{\"name\":\"ind_y_0\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_ind) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"ind_growth_par\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_ind) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"ind_max_size\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_ind) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"parameters\"},{\"name\":\"species_growth_par_mean\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_growth_par_sd\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_max_size_mean\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"species_max_size_sd\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"global_error_sigma\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"y_hat\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_obs) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"Delta_hat\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_obs) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"pars\",\"type\":{\"name\":\"vector\",\"length\":" + std::to_string(2) + "},\"block\":\"generated_quantities\"}]"); + } + // Begin method overload boilerplate + template inline void + write_array(RNG& base_rng, Eigen::Matrix& params_r, + Eigen::Matrix& vars, const bool + emit_transformed_parameters = true, const bool + emit_generated_quantities = true, std::ostream* + pstream = nullptr) const { + const size_t num_params__ = (((((((n_ind + n_ind) + n_ind) + 1) + 1) + 1) + + 1) + 1); + const size_t num_transformed = emit_transformed_parameters * (0); + const size_t num_gen_quantities = emit_generated_quantities * (((n_obs + + n_obs) + 2)); + const size_t num_to_write = num_params__ + num_transformed + + num_gen_quantities; + std::vector params_i; + vars = Eigen::Matrix::Constant(num_to_write, + std::numeric_limits::quiet_NaN()); + write_array_impl(base_rng, params_r, params_i, vars, + emit_transformed_parameters, emit_generated_quantities, pstream); + } + template inline void + write_array(RNG& base_rng, std::vector& params_r, std::vector& + params_i, std::vector& vars, bool + emit_transformed_parameters = true, bool + emit_generated_quantities = true, std::ostream* + pstream = nullptr) const { + const size_t num_params__ = (((((((n_ind + n_ind) + n_ind) + 1) + 1) + 1) + + 1) + 1); + const size_t num_transformed = emit_transformed_parameters * (0); + const size_t num_gen_quantities = emit_generated_quantities * (((n_obs + + n_obs) + 2)); + const size_t num_to_write = num_params__ + num_transformed + + num_gen_quantities; + vars = std::vector(num_to_write, + std::numeric_limits::quiet_NaN()); + write_array_impl(base_rng, params_r, params_i, vars, + emit_transformed_parameters, emit_generated_quantities, pstream); + } + template inline T_ + log_prob(Eigen::Matrix& params_r, std::ostream* pstream = nullptr) const { + Eigen::Matrix params_i; + return log_prob_impl(params_r, params_i, pstream); + } + template inline T_ + log_prob(std::vector& params_r, std::vector& params_i, + std::ostream* pstream = nullptr) const { + return log_prob_impl(params_r, params_i, pstream); + } + inline void + transform_inits(const stan::io::var_context& context, + Eigen::Matrix& params_r, std::ostream* + pstream = nullptr) const final { + std::vector params_r_vec(params_r.size()); + std::vector params_i; + transform_inits(context, params_i, params_r_vec, pstream); + params_r = Eigen::Map>(params_r_vec.data(), + params_r_vec.size()); + } + inline void + transform_inits(const stan::io::var_context& context, std::vector& + params_i, std::vector& vars, std::ostream* + pstream__ = nullptr) const { + vars.resize(num_params_r__); + transform_inits_impl(context, vars, pstream__); + } + inline void + unconstrain_array(const std::vector& params_constrained, + std::vector& params_unconstrained, std::ostream* + pstream = nullptr) const { + const std::vector params_i; + params_unconstrained = std::vector(num_params_r__, + std::numeric_limits::quiet_NaN()); + unconstrain_array_impl(params_constrained, params_i, + params_unconstrained, pstream); + } + inline void + unconstrain_array(const Eigen::Matrix& params_constrained, + Eigen::Matrix& params_unconstrained, + std::ostream* pstream = nullptr) const { + const std::vector params_i; + params_unconstrained = Eigen::Matrix::Constant(num_params_r__, + std::numeric_limits::quiet_NaN()); + unconstrain_array_impl(params_constrained, params_i, + params_unconstrained, pstream); + } +}; +} +using stan_model = model_vb_multi_ind_namespace::model_vb_multi_ind; +#ifndef USING_R +// Boilerplate +stan::model::model_base& +new_model(stan::io::var_context& data_context, unsigned int seed, + std::ostream* msg_stream) { + stan_model* m = new stan_model(data_context, seed, msg_stream); + return *m; +} +stan::math::profile_map& get_stan_profile_data() { + return model_vb_multi_ind_namespace::profiles__; +} +#endif +#endif diff --git a/src/stanExports_vb_single_ind.cc b/src/stanExports_vb_single_ind.cc new file mode 100644 index 0000000..3778fa0 --- /dev/null +++ b/src/stanExports_vb_single_ind.cc @@ -0,0 +1,32 @@ +// Generated by rstantools. Do not edit by hand. + +#include +using namespace Rcpp ; +#include "stanExports_vb_single_ind.h" + +RCPP_MODULE(stan_fit4vb_single_ind_mod) { + + + class_ >("rstantools_model_vb_single_ind") + + .constructor() + + + .method("call_sampler", &rstan::stan_fit ::call_sampler) + .method("param_names", &rstan::stan_fit ::param_names) + .method("param_names_oi", &rstan::stan_fit ::param_names_oi) + .method("param_fnames_oi", &rstan::stan_fit ::param_fnames_oi) + .method("param_dims", &rstan::stan_fit ::param_dims) + .method("param_dims_oi", &rstan::stan_fit ::param_dims_oi) + .method("update_param_oi", &rstan::stan_fit ::update_param_oi) + .method("param_oi_tidx", &rstan::stan_fit ::param_oi_tidx) + .method("grad_log_prob", &rstan::stan_fit ::grad_log_prob) + .method("log_prob", &rstan::stan_fit ::log_prob) + .method("unconstrain_pars", &rstan::stan_fit ::unconstrain_pars) + .method("constrain_pars", &rstan::stan_fit ::constrain_pars) + .method("num_pars_unconstrained", &rstan::stan_fit ::num_pars_unconstrained) + .method("unconstrained_param_names", &rstan::stan_fit ::unconstrained_param_names) + .method("constrained_param_names", &rstan::stan_fit ::constrained_param_names) + .method("standalone_gqs", &rstan::stan_fit ::standalone_gqs) + ; +} diff --git a/src/stanExports_vb_single_ind.h b/src/stanExports_vb_single_ind.h new file mode 100644 index 0000000..ac8d5aa --- /dev/null +++ b/src/stanExports_vb_single_ind.h @@ -0,0 +1,811 @@ +// Generated by rstantools. Do not edit by hand. + +/* + rmot is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + rmot is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with rmot. If not, see . +*/ +#ifndef MODELS_HPP +#define MODELS_HPP +#define STAN__SERVICES__COMMAND_HPP +#ifndef USE_STANC3 +#define USE_STANC3 +#endif +#include +// Code generated by stanc v2.32.2 +#include +namespace model_vb_single_ind_namespace { +using stan::model::model_base_crtp; +using namespace stan::math; +stan::math::profile_map profiles__; +static constexpr std::array locations_array__ = + {" (found before start of program)", + " (in 'string', line 51, column 2 to column 24)", + " (in 'string', line 52, column 2 to column 31)", + " (in 'string', line 53, column 2 to column 29)", + " (in 'string', line 55, column 2 to column 35)", + " (in 'string', line 83, column 2 to column 20)", + " (in 'string', line 84, column 2 to column 24)", + " (in 'string', line 85, column 2 to column 17)", + " (in 'string', line 86, column 2 to column 27)", + " (in 'string', line 87, column 2 to column 25)", + " (in 'string', line 90, column 6 to column 25)", + " (in 'string', line 89, column 23 to line 91, column 5)", + " (in 'string', line 89, column 4 to line 91, column 5)", + " (in 'string', line 97, column 6 to column 62)", + " (in 'string', line 96, column 11 to line 98, column 5)", + " (in 'string', line 94, column 6 to column 73)", + " (in 'string', line 95, column 6 to column 43)", + " (in 'string', line 92, column 17 to line 96, column 5)", + " (in 'string', line 92, column 4 to line 98, column 5)", + " (in 'string', line 88, column 19 to line 99, column 3)", + " (in 'string', line 88, column 2 to line 99, column 3)", + " (in 'string', line 59, column 13 to column 18)", + " (in 'string', line 59, column 2 to column 20)", + " (in 'string', line 60, column 2 to column 17)", + " (in 'string', line 61, column 2 to column 27)", + " (in 'string', line 62, column 2 to column 25)", + " (in 'string', line 65, column 6 to column 25)", + " (in 'string', line 64, column 23 to line 66, column 5)", + " (in 'string', line 64, column 4 to line 66, column 5)", + " (in 'string', line 69, column 6 to column 73)", + " (in 'string', line 67, column 17 to line 70, column 5)", + " (in 'string', line 67, column 4 to line 70, column 5)", + " (in 'string', line 63, column 19 to line 71, column 3)", + " (in 'string', line 63, column 2 to line 71, column 3)", + " (in 'string', line 73, column 2 to column 44)", + " (in 'string', line 76, column 2 to column 48)", + " (in 'string', line 77, column 2 to column 34)", + " (in 'string', line 78, column 2 to column 46)", + " (in 'string', line 80, column 2 to column 34)", + " (in 'string', line 41, column 2 to column 17)", + " (in 'string', line 42, column 2 to column 12)", + " (in 'string', line 43, column 13 to column 18)", + " (in 'string', line 43, column 2 to column 20)", + " (in 'string', line 44, column 16 to column 21)", + " (in 'string', line 44, column 2 to column 23)", + " (in 'string', line 45, column 12 to column 17)", + " (in 'string', line 45, column 2 to column 19)", + " (in 'string', line 46, column 2 to column 15)", + " (in 'string', line 83, column 13 to column 18)", + " (in 'string', line 84, column 17 to column 22)", + " (in 'string', line 6, column 4 to column 35)", + " (in 'string', line 5, column 30 to line 7, column 3)", + " (in 'string', line 9, column 4 to column 12)", + " (in 'string', line 10, column 4 to column 12)", + " (in 'string', line 11, column 4 to column 12)", + " (in 'string', line 12, column 4 to column 12)", + " (in 'string', line 13, column 4 to column 15)", + " (in 'string', line 14, column 4 to column 21)", + " (in 'string', line 15, column 4 to column 37)", + " (in 'string', line 16, column 4 to column 37)", + " (in 'string', line 17, column 4 to column 33)", + " (in 'string', line 18, column 4 to column 67)", + " (in 'string', line 19, column 4 to column 17)", + " (in 'string', line 8, column 51 to line 20, column 3)", + " (in 'string', line 22, column 4 to column 14)", + " (in 'string', line 23, column 4 to column 18)", + " (in 'string', line 24, column 4 to column 15)", + " (in 'string', line 25, column 4 to column 24)", + " (in 'string', line 26, column 4 to column 17)", + " (in 'string', line 27, column 4 to column 14)", + " (in 'string', line 30, column 6 to column 59)", + " (in 'string', line 32, column 6 to column 52)", + " (in 'string', line 34, column 6 to column 43)", + " (in 'string', line 28, column 30 to line 35, column 5)", + " (in 'string', line 28, column 4 to line 35, column 5)", + " (in 'string', line 36, column 4 to column 17)", + " (in 'string', line 21, column 62 to line 37, column 3)"}; +template , + stan::is_col_vector, + stan::is_vt_not_complex>* = nullptr> +stan::promote_args_t> +DE(const T0__& y, const T1__& pars_arg__, std::ostream* pstream__); +template , + stan::is_col_vector, + stan::is_vt_not_complex, + stan::is_stan_scalar>* = nullptr> +stan::promote_args_t, T2__> +rk4_step(const T0__& y, const T1__& pars_arg__, const T2__& interval, + std::ostream* pstream__); +template , + stan::is_col_vector, + stan::is_vt_not_complex, + stan::is_stan_scalar, + stan::is_stan_scalar>* = nullptr> +stan::promote_args_t, T2__, T3__> +rk4(const T0__& y, const T1__& pars_arg__, const T2__& interval, const T3__& + step_size, std::ostream* pstream__); +template , + stan::is_col_vector, + stan::is_vt_not_complex>*> +stan::promote_args_t> +DE(const T0__& y, const T1__& pars_arg__, std::ostream* pstream__) { + using local_scalar_t__ = stan::promote_args_t>; + int current_statement__ = 0; + const auto& pars = stan::math::to_ref(pars_arg__); + static constexpr bool propto__ = true; + // suppress unused var warning + (void) propto__; + local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); + // suppress unused var warning + (void) DUMMY_VAR__; + try { + current_statement__ = 50; + return (stan::model::rvalue(pars, "pars", stan::model::index_uni(1)) * + (stan::model::rvalue(pars, "pars", stan::model::index_uni(2)) - + y)); + } catch (const std::exception& e) { + stan::lang::rethrow_located(e, locations_array__[current_statement__]); + } +} +template , + stan::is_col_vector, + stan::is_vt_not_complex, + stan::is_stan_scalar>*> +stan::promote_args_t, T2__> +rk4_step(const T0__& y, const T1__& pars_arg__, const T2__& interval, + std::ostream* pstream__) { + using local_scalar_t__ = stan::promote_args_t, T2__>; + int current_statement__ = 0; + const auto& pars = stan::math::to_ref(pars_arg__); + static constexpr bool propto__ = true; + // suppress unused var warning + (void) propto__; + local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); + // suppress unused var warning + (void) DUMMY_VAR__; + try { + local_scalar_t__ k1 = DUMMY_VAR__; + local_scalar_t__ k2 = DUMMY_VAR__; + local_scalar_t__ k3 = DUMMY_VAR__; + local_scalar_t__ k4 = DUMMY_VAR__; + local_scalar_t__ y_hat = DUMMY_VAR__; + current_statement__ = 57; + k1 = DE(y, pars, pstream__); + current_statement__ = 58; + k2 = DE((y + ((interval * k1) / 2.0)), pars, pstream__); + current_statement__ = 59; + k3 = DE((y + ((interval * k2) / 2.0)), pars, pstream__); + current_statement__ = 60; + k4 = DE((y + (interval * k3)), pars, pstream__); + current_statement__ = 61; + y_hat = (y + (((1.0 / 6.0) * (((k1 + (2.0 * k2)) + (2.0 * k3)) + k4)) * + interval)); + current_statement__ = 62; + return y_hat; + } catch (const std::exception& e) { + stan::lang::rethrow_located(e, locations_array__[current_statement__]); + } +} +template , + stan::is_col_vector, + stan::is_vt_not_complex, + stan::is_stan_scalar, + stan::is_stan_scalar>*> +stan::promote_args_t, T2__, T3__> +rk4(const T0__& y, const T1__& pars_arg__, const T2__& interval, const T3__& + step_size, std::ostream* pstream__) { + using local_scalar_t__ = stan::promote_args_t, T2__, T3__>; + int current_statement__ = 0; + const auto& pars = stan::math::to_ref(pars_arg__); + static constexpr bool propto__ = true; + // suppress unused var warning + (void) propto__; + local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); + // suppress unused var warning + (void) DUMMY_VAR__; + try { + int steps = std::numeric_limits::min(); + local_scalar_t__ duration = DUMMY_VAR__; + local_scalar_t__ y_hat = DUMMY_VAR__; + local_scalar_t__ step_size_temp = DUMMY_VAR__; + current_statement__ = 68; + duration = 0; + current_statement__ = 69; + y_hat = y; + current_statement__ = 74; + while (stan::math::logical_lt(duration, interval)) { + current_statement__ = 70; + step_size_temp = stan::math::min( + (Eigen::Matrix(2) << + step_size, + (interval + - + duration)).finished()); + current_statement__ = 71; + y_hat = rk4_step(y_hat, pars, step_size_temp, pstream__); + current_statement__ = 72; + duration = (duration + step_size_temp); + } + current_statement__ = 75; + return y_hat; + } catch (const std::exception& e) { + stan::lang::rethrow_located(e, locations_array__[current_statement__]); + } +} +#include +class model_vb_single_ind final : public model_base_crtp { +private: + double step_size; + int n_obs; + std::vector y_obs; + std::vector obs_index; + std::vector time; + double y_0_obs; +public: + ~model_vb_single_ind() {} + model_vb_single_ind(stan::io::var_context& context__, unsigned int + random_seed__ = 0, std::ostream* pstream__ = nullptr) + : model_base_crtp(0) { + int current_statement__ = 0; + using local_scalar_t__ = double; + boost::ecuyer1988 base_rng__ = + stan::services::util::create_rng(random_seed__, 0); + // suppress unused var warning + (void) base_rng__; + static constexpr const char* function__ = + "model_vb_single_ind_namespace::model_vb_single_ind"; + // suppress unused var warning + (void) function__; + local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); + // suppress unused var warning + (void) DUMMY_VAR__; + try { + int pos__ = std::numeric_limits::min(); + pos__ = 1; + current_statement__ = 39; + context__.validate_dims("data initialization", "step_size", "double", + std::vector{}); + step_size = std::numeric_limits::quiet_NaN(); + current_statement__ = 39; + step_size = context__.vals_r("step_size")[(1 - 1)]; + current_statement__ = 40; + context__.validate_dims("data initialization", "n_obs", "int", + std::vector{}); + n_obs = std::numeric_limits::min(); + current_statement__ = 40; + n_obs = context__.vals_i("n_obs")[(1 - 1)]; + current_statement__ = 41; + stan::math::validate_non_negative_index("y_obs", "n_obs", n_obs); + current_statement__ = 42; + context__.validate_dims("data initialization", "y_obs", "double", + std::vector{static_cast(n_obs)}); + y_obs = std::vector(n_obs, + std::numeric_limits::quiet_NaN()); + current_statement__ = 42; + y_obs = context__.vals_r("y_obs"); + current_statement__ = 43; + stan::math::validate_non_negative_index("obs_index", "n_obs", n_obs); + current_statement__ = 44; + context__.validate_dims("data initialization", "obs_index", "int", + std::vector{static_cast(n_obs)}); + obs_index = std::vector(n_obs, std::numeric_limits::min()); + current_statement__ = 44; + obs_index = context__.vals_i("obs_index"); + current_statement__ = 45; + stan::math::validate_non_negative_index("time", "n_obs", n_obs); + current_statement__ = 46; + context__.validate_dims("data initialization", "time", "double", + std::vector{static_cast(n_obs)}); + time = std::vector(n_obs, + std::numeric_limits::quiet_NaN()); + current_statement__ = 46; + time = context__.vals_r("time"); + current_statement__ = 47; + context__.validate_dims("data initialization", "y_0_obs", "double", + std::vector{}); + y_0_obs = std::numeric_limits::quiet_NaN(); + current_statement__ = 47; + y_0_obs = context__.vals_r("y_0_obs")[(1 - 1)]; + current_statement__ = 48; + stan::math::validate_non_negative_index("y_hat", "n_obs", n_obs); + current_statement__ = 49; + stan::math::validate_non_negative_index("Delta_hat", "n_obs", n_obs); + } catch (const std::exception& e) { + stan::lang::rethrow_located(e, locations_array__[current_statement__]); + } + num_params_r__ = 1 + 1 + 1 + 1; + } + inline std::string model_name() const final { + return "model_vb_single_ind"; + } + inline std::vector model_compile_info() const noexcept { + return std::vector{"stanc_version = stanc3 v2.32.2", + "stancflags = --allow-undefined"}; + } + template * = nullptr, + stan::require_vector_like_vt* = nullptr> + inline stan::scalar_type_t + log_prob_impl(VecR& params_r__, VecI& params_i__, std::ostream* + pstream__ = nullptr) const { + using T__ = stan::scalar_type_t; + using local_scalar_t__ = T__; + T__ lp__(0.0); + stan::math::accumulator lp_accum__; + stan::io::deserializer in__(params_r__, params_i__); + int current_statement__ = 0; + local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); + // suppress unused var warning + (void) DUMMY_VAR__; + static constexpr const char* function__ = + "model_vb_single_ind_namespace::log_prob"; + // suppress unused var warning + (void) function__; + try { + local_scalar_t__ ind_y_0 = DUMMY_VAR__; + current_statement__ = 1; + ind_y_0 = in__.template read_constrain_lb(0, lp__); + local_scalar_t__ ind_growth_par = DUMMY_VAR__; + current_statement__ = 2; + ind_growth_par = in__.template read_constrain_lb(0, lp__); + local_scalar_t__ ind_max_size = DUMMY_VAR__; + current_statement__ = 3; + ind_max_size = in__.template read_constrain_lb(0, lp__); + local_scalar_t__ global_error_sigma = DUMMY_VAR__; + current_statement__ = 4; + global_error_sigma = in__.template read_constrain_lb(0, lp__); + { + current_statement__ = 21; + stan::math::validate_non_negative_index("y_hat", "n_obs", n_obs); + std::vector y_hat = + std::vector(n_obs, DUMMY_VAR__); + Eigen::Matrix pars = + Eigen::Matrix::Constant(2, DUMMY_VAR__); + current_statement__ = 24; + stan::model::assign(pars, ind_growth_par, "assigning variable pars", + stan::model::index_uni(1)); + current_statement__ = 25; + stan::model::assign(pars, ind_max_size, "assigning variable pars", + stan::model::index_uni(2)); + current_statement__ = 33; + for (int i = 1; i <= n_obs; ++i) { + current_statement__ = 28; + if (stan::math::logical_eq( + stan::model::rvalue(obs_index, "obs_index", + stan::model::index_uni(i)), 1)) { + current_statement__ = 26; + stan::model::assign(y_hat, ind_y_0, "assigning variable y_hat", + stan::model::index_uni(i)); + } + current_statement__ = 31; + if (stan::math::logical_lt(i, n_obs)) { + current_statement__ = 29; + stan::model::assign(y_hat, + rk4( + stan::model::rvalue(y_hat, "y_hat", stan::model::index_uni(i)), + pars, + (stan::model::rvalue(time, "time", + stan::model::index_uni((i + 1))) - + stan::model::rvalue(time, "time", stan::model::index_uni(i))), + step_size, pstream__), "assigning variable y_hat", + stan::model::index_uni((i + 1))); + } + } + current_statement__ = 34; + lp_accum__.add(stan::math::normal_lpdf(y_obs, y_hat, + global_error_sigma)); + current_statement__ = 35; + lp_accum__.add(stan::math::normal_lpdf(ind_y_0, y_0_obs, + global_error_sigma)); + current_statement__ = 36; + lp_accum__.add(stan::math::lognormal_lpdf(ind_growth_par, + 0, 1)); + current_statement__ = 37; + lp_accum__.add(stan::math::lognormal_lpdf(ind_max_size, + stan::math::max(stan::math::log(y_obs)), 1)); + current_statement__ = 38; + lp_accum__.add(stan::math::cauchy_lpdf(global_error_sigma, + 1, 5)); + } + } catch (const std::exception& e) { + stan::lang::rethrow_located(e, locations_array__[current_statement__]); + } + lp_accum__.add(lp__); + return lp_accum__.sum(); + } + template * = nullptr, stan::require_vector_like_vt* = nullptr, stan::require_vector_vt* = nullptr> + inline void + write_array_impl(RNG& base_rng__, VecR& params_r__, VecI& params_i__, + VecVar& vars__, const bool + emit_transformed_parameters__ = true, const bool + emit_generated_quantities__ = true, std::ostream* + pstream__ = nullptr) const { + using local_scalar_t__ = double; + stan::io::deserializer in__(params_r__, params_i__); + stan::io::serializer out__(vars__); + static constexpr bool propto__ = true; + // suppress unused var warning + (void) propto__; + double lp__ = 0.0; + // suppress unused var warning + (void) lp__; + int current_statement__ = 0; + stan::math::accumulator lp_accum__; + local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); + // suppress unused var warning + (void) DUMMY_VAR__; + constexpr bool jacobian__ = false; + static constexpr const char* function__ = + "model_vb_single_ind_namespace::write_array"; + // suppress unused var warning + (void) function__; + try { + double ind_y_0 = std::numeric_limits::quiet_NaN(); + current_statement__ = 1; + ind_y_0 = in__.template read_constrain_lb(0, lp__); + double ind_growth_par = std::numeric_limits::quiet_NaN(); + current_statement__ = 2; + ind_growth_par = in__.template read_constrain_lb(0, lp__); + double ind_max_size = std::numeric_limits::quiet_NaN(); + current_statement__ = 3; + ind_max_size = in__.template read_constrain_lb(0, lp__); + double global_error_sigma = std::numeric_limits::quiet_NaN(); + current_statement__ = 4; + global_error_sigma = in__.template read_constrain_lb(0, lp__); + out__.write(ind_y_0); + out__.write(ind_growth_par); + out__.write(ind_max_size); + out__.write(global_error_sigma); + if (stan::math::logical_negation( + (stan::math::primitive_value(emit_transformed_parameters__) || + stan::math::primitive_value(emit_generated_quantities__)))) { + return ; + } + if (stan::math::logical_negation(emit_generated_quantities__)) { + return ; + } + std::vector y_hat = + std::vector(n_obs, std::numeric_limits::quiet_NaN()); + std::vector Delta_hat = + std::vector(n_obs, std::numeric_limits::quiet_NaN()); + Eigen::Matrix pars = + Eigen::Matrix::Constant(2, + std::numeric_limits::quiet_NaN()); + current_statement__ = 8; + stan::model::assign(pars, ind_growth_par, "assigning variable pars", + stan::model::index_uni(1)); + current_statement__ = 9; + stan::model::assign(pars, ind_max_size, "assigning variable pars", + stan::model::index_uni(2)); + current_statement__ = 20; + for (int i = 1; i <= n_obs; ++i) { + current_statement__ = 12; + if (stan::math::logical_eq( + stan::model::rvalue(obs_index, "obs_index", + stan::model::index_uni(i)), 1)) { + current_statement__ = 10; + stan::model::assign(y_hat, ind_y_0, "assigning variable y_hat", + stan::model::index_uni(i)); + } + current_statement__ = 18; + if (stan::math::logical_lt(i, n_obs)) { + current_statement__ = 15; + stan::model::assign(y_hat, + rk4( + stan::model::rvalue(y_hat, "y_hat", stan::model::index_uni(i)), + pars, + (stan::model::rvalue(time, "time", + stan::model::index_uni((i + 1))) - + stan::model::rvalue(time, "time", stan::model::index_uni(i))), + step_size, pstream__), "assigning variable y_hat", + stan::model::index_uni((i + 1))); + current_statement__ = 16; + stan::model::assign(Delta_hat, + (stan::model::rvalue(y_hat, "y_hat", + stan::model::index_uni((i + 1))) - + stan::model::rvalue(y_hat, "y_hat", stan::model::index_uni(i))), + "assigning variable Delta_hat", stan::model::index_uni(i)); + } else { + current_statement__ = 13; + stan::model::assign(Delta_hat, + (DE( + stan::model::rvalue(y_hat, "y_hat", stan::model::index_uni(i)), + pars, pstream__) * + (stan::model::rvalue(time, "time", stan::model::index_uni(i)) - + stan::model::rvalue(time, "time", stan::model::index_uni((i - 1))))), + "assigning variable Delta_hat", stan::model::index_uni(i)); + } + } + out__.write(y_hat); + out__.write(Delta_hat); + out__.write(pars); + } catch (const std::exception& e) { + stan::lang::rethrow_located(e, locations_array__[current_statement__]); + } + } + template * = nullptr, + stan::require_vector_like_vt* = nullptr> + inline void + unconstrain_array_impl(const VecVar& params_r__, const VecI& params_i__, + VecVar& vars__, std::ostream* pstream__ = nullptr) const { + using local_scalar_t__ = double; + stan::io::deserializer in__(params_r__, params_i__); + stan::io::serializer out__(vars__); + int current_statement__ = 0; + local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); + // suppress unused var warning + (void) DUMMY_VAR__; + try { + int pos__ = std::numeric_limits::min(); + pos__ = 1; + local_scalar_t__ ind_y_0 = DUMMY_VAR__; + current_statement__ = 1; + ind_y_0 = in__.read(); + out__.write_free_lb(0, ind_y_0); + local_scalar_t__ ind_growth_par = DUMMY_VAR__; + current_statement__ = 2; + ind_growth_par = in__.read(); + out__.write_free_lb(0, ind_growth_par); + local_scalar_t__ ind_max_size = DUMMY_VAR__; + current_statement__ = 3; + ind_max_size = in__.read(); + out__.write_free_lb(0, ind_max_size); + local_scalar_t__ global_error_sigma = DUMMY_VAR__; + current_statement__ = 4; + global_error_sigma = in__.read(); + out__.write_free_lb(0, global_error_sigma); + } catch (const std::exception& e) { + stan::lang::rethrow_located(e, locations_array__[current_statement__]); + } + } + template * = nullptr> + inline void + transform_inits_impl(const stan::io::var_context& context__, VecVar& + vars__, std::ostream* pstream__ = nullptr) const { + using local_scalar_t__ = double; + stan::io::serializer out__(vars__); + int current_statement__ = 0; + local_scalar_t__ DUMMY_VAR__(std::numeric_limits::quiet_NaN()); + // suppress unused var warning + (void) DUMMY_VAR__; + try { + current_statement__ = 1; + context__.validate_dims("parameter initialization", "ind_y_0", + "double", std::vector{}); + current_statement__ = 2; + context__.validate_dims("parameter initialization", "ind_growth_par", + "double", std::vector{}); + current_statement__ = 3; + context__.validate_dims("parameter initialization", "ind_max_size", + "double", std::vector{}); + current_statement__ = 4; + context__.validate_dims("parameter initialization", + "global_error_sigma", "double", std::vector{}); + int pos__ = std::numeric_limits::min(); + pos__ = 1; + local_scalar_t__ ind_y_0 = DUMMY_VAR__; + current_statement__ = 1; + ind_y_0 = context__.vals_r("ind_y_0")[(1 - 1)]; + out__.write_free_lb(0, ind_y_0); + local_scalar_t__ ind_growth_par = DUMMY_VAR__; + current_statement__ = 2; + ind_growth_par = context__.vals_r("ind_growth_par")[(1 - 1)]; + out__.write_free_lb(0, ind_growth_par); + local_scalar_t__ ind_max_size = DUMMY_VAR__; + current_statement__ = 3; + ind_max_size = context__.vals_r("ind_max_size")[(1 - 1)]; + out__.write_free_lb(0, ind_max_size); + local_scalar_t__ global_error_sigma = DUMMY_VAR__; + current_statement__ = 4; + global_error_sigma = context__.vals_r("global_error_sigma")[(1 - 1)]; + out__.write_free_lb(0, global_error_sigma); + } catch (const std::exception& e) { + stan::lang::rethrow_located(e, locations_array__[current_statement__]); + } + } + inline void + get_param_names(std::vector& names__, const bool + emit_transformed_parameters__ = true, const bool + emit_generated_quantities__ = true) const { + names__ = std::vector{"ind_y_0", "ind_growth_par", + "ind_max_size", "global_error_sigma"}; + if (emit_transformed_parameters__) {} + if (emit_generated_quantities__) { + std::vector temp{"y_hat", "Delta_hat", "pars"}; + names__.reserve(names__.size() + temp.size()); + names__.insert(names__.end(), temp.begin(), temp.end()); + } + } + inline void + get_dims(std::vector>& dimss__, const bool + emit_transformed_parameters__ = true, const bool + emit_generated_quantities__ = true) const { + dimss__ = std::vector>{std::vector{}, + std::vector{}, std::vector{}, + std::vector{}}; + if (emit_transformed_parameters__) {} + if (emit_generated_quantities__) { + std::vector> + temp{std::vector{static_cast(n_obs)}, + std::vector{static_cast(n_obs)}, + std::vector{static_cast(2)}}; + dimss__.reserve(dimss__.size() + temp.size()); + dimss__.insert(dimss__.end(), temp.begin(), temp.end()); + } + } + inline void + constrained_param_names(std::vector& param_names__, bool + emit_transformed_parameters__ = true, bool + emit_generated_quantities__ = true) const final { + param_names__.emplace_back(std::string() + "ind_y_0"); + param_names__.emplace_back(std::string() + "ind_growth_par"); + param_names__.emplace_back(std::string() + "ind_max_size"); + param_names__.emplace_back(std::string() + "global_error_sigma"); + if (emit_transformed_parameters__) {} + if (emit_generated_quantities__) { + for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { + param_names__.emplace_back(std::string() + "y_hat" + '.' + + std::to_string(sym1__)); + } + for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { + param_names__.emplace_back(std::string() + "Delta_hat" + '.' + + std::to_string(sym1__)); + } + for (int sym1__ = 1; sym1__ <= 2; ++sym1__) { + param_names__.emplace_back(std::string() + "pars" + '.' + + std::to_string(sym1__)); + } + } + } + inline void + unconstrained_param_names(std::vector& param_names__, bool + emit_transformed_parameters__ = true, bool + emit_generated_quantities__ = true) const final { + param_names__.emplace_back(std::string() + "ind_y_0"); + param_names__.emplace_back(std::string() + "ind_growth_par"); + param_names__.emplace_back(std::string() + "ind_max_size"); + param_names__.emplace_back(std::string() + "global_error_sigma"); + if (emit_transformed_parameters__) {} + if (emit_generated_quantities__) { + for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { + param_names__.emplace_back(std::string() + "y_hat" + '.' + + std::to_string(sym1__)); + } + for (int sym1__ = 1; sym1__ <= n_obs; ++sym1__) { + param_names__.emplace_back(std::string() + "Delta_hat" + '.' + + std::to_string(sym1__)); + } + for (int sym1__ = 1; sym1__ <= 2; ++sym1__) { + param_names__.emplace_back(std::string() + "pars" + '.' + + std::to_string(sym1__)); + } + } + } + inline std::string get_constrained_sizedtypes() const { + return std::string("[{\"name\":\"ind_y_0\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"ind_growth_par\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"ind_max_size\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"global_error_sigma\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"y_hat\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_obs) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"Delta_hat\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_obs) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"pars\",\"type\":{\"name\":\"vector\",\"length\":" + std::to_string(2) + "},\"block\":\"generated_quantities\"}]"); + } + inline std::string get_unconstrained_sizedtypes() const { + return std::string("[{\"name\":\"ind_y_0\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"ind_growth_par\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"ind_max_size\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"global_error_sigma\",\"type\":{\"name\":\"real\"},\"block\":\"parameters\"},{\"name\":\"y_hat\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_obs) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"Delta_hat\",\"type\":{\"name\":\"array\",\"length\":" + std::to_string(n_obs) + ",\"element_type\":{\"name\":\"real\"}},\"block\":\"generated_quantities\"},{\"name\":\"pars\",\"type\":{\"name\":\"vector\",\"length\":" + std::to_string(2) + "},\"block\":\"generated_quantities\"}]"); + } + // Begin method overload boilerplate + template inline void + write_array(RNG& base_rng, Eigen::Matrix& params_r, + Eigen::Matrix& vars, const bool + emit_transformed_parameters = true, const bool + emit_generated_quantities = true, std::ostream* + pstream = nullptr) const { + const size_t num_params__ = (((1 + 1) + 1) + 1); + const size_t num_transformed = emit_transformed_parameters * (0); + const size_t num_gen_quantities = emit_generated_quantities * (((n_obs + + n_obs) + 2)); + const size_t num_to_write = num_params__ + num_transformed + + num_gen_quantities; + std::vector params_i; + vars = Eigen::Matrix::Constant(num_to_write, + std::numeric_limits::quiet_NaN()); + write_array_impl(base_rng, params_r, params_i, vars, + emit_transformed_parameters, emit_generated_quantities, pstream); + } + template inline void + write_array(RNG& base_rng, std::vector& params_r, std::vector& + params_i, std::vector& vars, bool + emit_transformed_parameters = true, bool + emit_generated_quantities = true, std::ostream* + pstream = nullptr) const { + const size_t num_params__ = (((1 + 1) + 1) + 1); + const size_t num_transformed = emit_transformed_parameters * (0); + const size_t num_gen_quantities = emit_generated_quantities * (((n_obs + + n_obs) + 2)); + const size_t num_to_write = num_params__ + num_transformed + + num_gen_quantities; + vars = std::vector(num_to_write, + std::numeric_limits::quiet_NaN()); + write_array_impl(base_rng, params_r, params_i, vars, + emit_transformed_parameters, emit_generated_quantities, pstream); + } + template inline T_ + log_prob(Eigen::Matrix& params_r, std::ostream* pstream = nullptr) const { + Eigen::Matrix params_i; + return log_prob_impl(params_r, params_i, pstream); + } + template inline T_ + log_prob(std::vector& params_r, std::vector& params_i, + std::ostream* pstream = nullptr) const { + return log_prob_impl(params_r, params_i, pstream); + } + inline void + transform_inits(const stan::io::var_context& context, + Eigen::Matrix& params_r, std::ostream* + pstream = nullptr) const final { + std::vector params_r_vec(params_r.size()); + std::vector params_i; + transform_inits(context, params_i, params_r_vec, pstream); + params_r = Eigen::Map>(params_r_vec.data(), + params_r_vec.size()); + } + inline void + transform_inits(const stan::io::var_context& context, std::vector& + params_i, std::vector& vars, std::ostream* + pstream__ = nullptr) const { + vars.resize(num_params_r__); + transform_inits_impl(context, vars, pstream__); + } + inline void + unconstrain_array(const std::vector& params_constrained, + std::vector& params_unconstrained, std::ostream* + pstream = nullptr) const { + const std::vector params_i; + params_unconstrained = std::vector(num_params_r__, + std::numeric_limits::quiet_NaN()); + unconstrain_array_impl(params_constrained, params_i, + params_unconstrained, pstream); + } + inline void + unconstrain_array(const Eigen::Matrix& params_constrained, + Eigen::Matrix& params_unconstrained, + std::ostream* pstream = nullptr) const { + const std::vector params_i; + params_unconstrained = Eigen::Matrix::Constant(num_params_r__, + std::numeric_limits::quiet_NaN()); + unconstrain_array_impl(params_constrained, params_i, + params_unconstrained, pstream); + } +}; +} +using stan_model = model_vb_single_ind_namespace::model_vb_single_ind; +#ifndef USING_R +// Boilerplate +stan::model::model_base& +new_model(stan::io::var_context& data_context, unsigned int seed, + std::ostream* msg_stream) { + stan_model* m = new stan_model(data_context, seed, msg_stream); + return *m; +} +stan::math::profile_map& get_stan_profile_data() { + return model_vb_single_ind_namespace::profiles__; +} +#endif +#endif diff --git a/tests/testthat/fixtures/vb/make_vb.R b/tests/testthat/fixtures/vb/make_vb.R new file mode 100644 index 0000000..091d2c9 --- /dev/null +++ b/tests/testthat/fixtures/vb/make_vb.R @@ -0,0 +1,59 @@ +#Define specific functions for chosen DE, distribution of parameters, error process +#Differential equation governing dynamics. +DE <- function(y, pars){ #Canham function + return(pars[1] * (pars[2] - y)) +} + +#Function to generate distribution of DE parameters +#Default parameters are based on G. recondita +DE_par_generation <- function(n_ind, + pars = list( + par_mean_vec = c(-3, 2), + par_sd_vec = c(0.1, 0.1) + ) + ){ + par_sample <- exp( + data.frame( + growth_par = rnorm(n_ind, mean=pars$par_mean_vec[1], sd = pars$par_sd_vec[1]), + max_size = rnorm(n_ind, mean=pars$par_mean_vec[2], sd = pars$par_sd_vec[2]) + ) + ) + names(par_sample) <- c("growth_par", "max_size") + + return(par_sample) +} + +#Set required values +model_name <- "vb" +set.seed(2024) #Guarantees same data each time. +n_ind <- 3 #Number of individuals for multi-individual data. Single individual takes the first. +n_obs_per_ind <- 10 #How many observations per individual. +interval <- 5 #Time interval between observations +time = seq(from = 0, by = interval, length.out = n_obs_per_ind) + +#Produce parameters +DE_pars <- DE_par_generation(n_ind) + +initial_conditions <- data.frame(y_0=exp(rnorm(n_ind, mean = 0.5, sd=0.1))) +for(i in 1:n_ind){ #Ensure first size is below the max size parameter + while(initial_conditions$y_0[i] >= DE_pars$max_size[i]){ + initial_conditions$y_0[i] <- exp(rnorm(1, mean = 2, sd=1)) + } +} + +#Generate true values +true_data <- rmot_build_true_test_data(n_ind, n_obs_per_ind, interval, + DE_pars, initial_conditions, DE) + +#Generate observations +y_obs <- rmot_add_normal_error(true_data$y_true) + +#Export datasets +rmot_export_test_data(n_obs_per_ind, + n_ind, + y_obs, + time, + DE_pars, + initial_conditions, + true_data, + model_name) diff --git a/tests/testthat/fixtures/vb/vb_data_multi_ind.rds b/tests/testthat/fixtures/vb/vb_data_multi_ind.rds new file mode 100644 index 0000000000000000000000000000000000000000..23a247a1c49356180253545e8801b19a56f1b49f GIT binary patch literal 1044 zcmV+v1nc`BiwFP!000001B>8dU|?WoU}0uvU}gm}8CXL@+;lA%7?^~C9FQa*5Hs3; zV1NN$5Fd!;U~&!|a5)fP&i?oL;@%>iGzX57W9A%95_8ZKK=V@;2;=n8z9-8>LBv3C-+9!X9w|9D$i^8WI9NG=D5o?A<{v5R()#Q z#hDH=kGEwVofF_7`;guFO*N~7+=4xgPoC!6e-ASVYgp*wz<%1I?{I^;gTPYp^hIX* z4kA&yRqZL89mE~~`gG2Sc93idzJ9=5&OzF1)7&=}f(|lkm>q~gp~MLdQ);W@gW3-U4kA!m1xo8dX%i@I z38n3zv||H=c7gKU8W@nlAU5wE10;MHfuREm3!d_##De(Dypq)P)FL!FmZZeuRHzs% z4TI=^NMf)!BnC4PiJ6JSym0qIFvwk?cx8s=Cs;m!rC%g}FhTPxFpV$^L(PHcT_ex* z<%YYR{i{pu4N&3bc36pn_dCw-+Yg^=?Fn!D2eug&=3K!*C<*)SujY1AP z*1W{r)M6k*0Bkr!kSo0?zq}+Pz96v(D#DSQSP@^GS(S>WofD`~4`u||pP(50|NsAA zbbFF>5{qH>zy!Hc5=#>G(u#okA;ALnA|oPru5iacd8%&zi~H3SEggGc@GKTS$x{F^ zn)yGPY0Q=J1`sJ$bSV^zKq^@NW4ad{FTBt=L&~3EM==9=&@vF>COB3uWHdW;uw*UVpGc;i7}Y7SYFyvP=$=J5>DQwCWwCYWGjN zet3n0wD7ZQR_p3vo^#-I{p|WiaE*gt)T`b_iqjoL{#HxGcC7}MfiZg;wdOlWep+xu z@Qc5L^c)dBuNzx|W#H9xR#sq{^&t4zg5+xsa*M8~i>6A$0?C2>oOaHP5^i7_n6sg- zMh{p9ZhRm0>9T{k!@)TR7S{vIz-voaWSs?;fj%{J&NDg4tT}d0QXv~y20l1mHYLtM zZdRS;`>8iz{)T1DL0o1~*F2_yE;mpTIWsgRvsK2I6qTmJO1_fJTo{`zGcP4RGX+Qb zend>p0ObG_TUns0*j-#fg+VctE0md+S(2HU6Q7))mjYzv=M|$l0$MtNoEi_Z0gKsO zFh#{BsRfX-1y&@*=O+~-I6xy|oJu4aP9PH`ms)`*Frdx{mJCQb+47J*!=GE4Q<52v O;#2_U>I5`A2><}4{o|4V literal 0 HcmV?d00001 diff --git a/tests/testthat/fixtures/vb/vb_data_single_ind.rds b/tests/testthat/fixtures/vb/vb_data_single_ind.rds new file mode 100644 index 0000000000000000000000000000000000000000..5fa086a4375277f10474d76a214efc5b255dcbde GIT binary patch literal 588 zcmV-S0<--eiwFP!000001B>8dU|?WoU}0uvU}gm}8CXL@+;lA%7?^~C91bAn17b$| z4-7B><~yjM@VV@NpD*q$(n)jRC|N#X%^yDp0ehLFr}YvXguQ!h?kqj!AUb>RTaVCE z2l1%dZa%ht2Z_z^`AbhUI!JCeXt#;*aFD7qTe9r=T?c6)$8$z0CO|Xa0WlNEE(R6` zPLMsx`MCv&$tCfbc_qcEg=n%YNr}a&P%&PxIE4NObs;m%#W0^B`3Rk(soeVu>nH6K>2PBD4_)l9VE9gK|`1Y=rm!dyCG`V$TNMp;cf>HX_@zI zV!gISK&8n3Wz9>>O)Um81i+dhf?VlE`Q;@U@db%RP!W#Y#ESUh%&Js0?VLb`dN3nk zZem2YBRMCr7-k1dkSiszBvCJ|2&fk+=zw0l!X5wQsX7Bjf&qJv8Ie#R>Kr&KM3j~% zB{>M#Exc)0>*FBowOO?5H9Ih&6w17>&2kWrz5ZZ@!bJy(EuxPZWtki#cc}QqY1KPO z)$X5k{qPD0Y2jzrtk%`jFzR@r<}wn8K|#m-9~xTB(9mM5j4vrFO@$@WlFVEfn=Lah zB|b9+qL1Z2)IKJt?OYIXR+xD>Lm$Of7N{zA7gtakD28%{GV?M^G81#+lk@XZfUNwy zVl+oU69ver@gN(pn9TuGR9uo;07+7?lo+3%1T&De5{bhJWCC+*N@@ib|Fc)d8z8A= a%R_dtKyhYXdQNIQih}@00}dRk1ONc=+W##8 literal 0 HcmV?d00001 diff --git a/tests/testthat/test-rmot_models_vb.R b/tests/testthat/test-rmot_models_vb.R new file mode 100644 index 0000000..6c2a5c4 --- /dev/null +++ b/tests/testthat/test-rmot_models_vb.R @@ -0,0 +1,44 @@ +#Testing for vb model +test_that("Model structures: vb", { + # Single individual + single_model <- rmot_model("vb_single_ind") + expect_named(single_model, c("step_size", "n_obs", "y_obs", + "obs_index", "time", "y_0_obs", + "model")) + expect_type(single_model, "list") + expect_visible(single_model) + + #Multiple individuals + multi_model <- rmot_model("vb_multi_ind") + expect_named(multi_model, c("step_size", "n_obs", "n_ind", "y_obs", + "obs_index", "time", "ind_id", "y_0_obs", + "model")) + expect_type(multi_model, "list") + expect_visible(multi_model) +}) + +test_that("Execution: vb single individual", { + model_name <- "vb" + par_names <- c("ind_growth_par", "ind_max_size") + + rmot_test_single_individual(model_name, par_names) +}) + +test_that("Execution: vb multiple individuals", { + model_name <- "vb" + + data <- readRDS(test_path("fixtures", "vb", + "vb_data_multi_ind.rds")) + + #Dimension is: + est_dim <- data$n_ind + #Initial condition + data$n_pars * data$n_ind + #Individual parameters + data$n_pars * 2 + #Population parameters + 1 + #Global error + data$n_obs + #y_ij + data$n_obs + #Delta y_ij + data$n_pars + #pars vector + 1 #lp__ + + rmot_test_multi_individual(model_name, data, est_dim) +})