diff --git a/matlab/perfect-foresight-models/private/simulation_core.m b/matlab/perfect-foresight-models/private/simulation_core.m index d09b51b585093c75e8e17489153772b08bdff50c..6e86671df6c1cd2cbf295c6c97e621cc6007c837 100644 --- a/matlab/perfect-foresight-models/private/simulation_core.m +++ b/matlab/perfect-foresight-models/private/simulation_core.m @@ -31,7 +31,9 @@ if options_.block oo_.endo_simul = tmp; oo_.deterministic_simulation.status = true; end - mexErrCheck('bytecode', info); + if options_.no_homotopy + mexErrCheck('bytecode', info); + end else oo_ = feval([M_.fname '_dynamic'], options_, M_, oo_); end @@ -47,8 +49,10 @@ else else oo_.endo_simul = tmp; oo_.deterministic_simulation.status = true; - end; - mexErrCheck('bytecode', info); + end + if options_.no_homotopy + mexErrCheck('bytecode', info); + end else if M_.maximum_endo_lead == 0 % Purely backward model oo_ = sim1_purely_backward(options_, M_, oo_); @@ -113,11 +117,15 @@ if nargout>1 if options_.block && ~options_.bytecode maxerror = oo_.deterministic_simulation.error; else - residuals = perfect_foresight_problem(yy(:),str2func([M_.fname '_dynamic']), y0, yT, ... - oo_.exo_simul,M_.params,oo_.steady_state, ... - options_.periods,M_.endo_nbr,i_cols, ... - i_cols_J1, i_cols_1, i_cols_T, i_cols_j, ... - M_.NNZDerivatives(1)); + if options_.bytecode + [chck, residuals, junk]= bytecode('dynamic','evaluate', oo_.endo_simul, oo_.exo_simul, M_.params, oo_.steady_state, 1); + else + residuals = perfect_foresight_problem(yy(:),str2func([M_.fname '_dynamic']), y0, yT, ... + oo_.exo_simul,M_.params,oo_.steady_state, ... + options_.periods,M_.endo_nbr,i_cols, ... + i_cols_J1, i_cols_1, i_cols_T, i_cols_j, ... + M_.NNZDerivatives(1)); + end maxerror = max(max(abs(residuals))); end end