diff --git a/matlab/dyn_ramsey_static.m b/matlab/dyn_ramsey_static.m index 8f2ccea91..dc19a6817 100644 --- a/matlab/dyn_ramsey_static.m +++ b/matlab/dyn_ramsey_static.m @@ -143,8 +143,8 @@ end % the auxiliary variables before the Lagrange multipliers are treated % as ordinary endogenous variables aux_eq = [1:orig_endo_aux_nbr, orig_endo_aux_nbr+orig_eq_nbr+1:size(fJ,1)]; -A = fJ(1:orig_endo_nbr,orig_endo_nbr+find(aux_vars_type==6)); -y = res(1:orig_endo_nbr); +A = fJ(1:orig_endo_aux_nbr,orig_endo_nbr+find(aux_vars_type==6)); +y = res(1:orig_endo_aux_nbr); mult = -A\y; resids1 = y+A*mult; diff --git a/preprocessor/StaticModel.cc b/preprocessor/StaticModel.cc index dbd636d5f..d6bef86d0 100644 --- a/preprocessor/StaticModel.cc +++ b/preprocessor/StaticModel.cc @@ -1739,7 +1739,7 @@ StaticModel::writeStaticFile(const string &basename, bool block, bool bytecode, writeStaticJuliaFile(basename); else writeStaticMFile(basename); - writeAuxVarRecursiveDefinitions(basename, julia); + writeSetAuxiliaryVariables(basename, julia); } void @@ -2099,8 +2099,9 @@ StaticModel::writeAuxVarInitval(ostream &output, ExprNodeOutputType output_type) } } -void StaticModel::writeAuxVarRecursiveDefinitions(const string &basename, const bool julia) const +void StaticModel::writeSetAuxiliaryVariables(const string &basename, const bool julia) const { + string func_name = basename + "_set_auxiliary_variables"; string filename = julia ? func_name + ".jl" : func_name + ".m"; string comment = julia ? "#" : "%"; @@ -2127,10 +2128,17 @@ void StaticModel::writeAuxVarRecursiveDefinitions(const string &basename, const if (dynamic_cast(aux_equations[i])->containsExternalFunction()) dynamic_cast(aux_equations[i])->writeExternalFunctionOutput(output, oMatlabStaticModel, temporary_terms, tef_terms); + writeAuxVarRecursiveDefinitions(output, oMatlabStaticModel); +} +void +StaticModel::writeAuxVarRecursiveDefinitions(ostream &output, ExprNodeOutputType output_type) const +{ + deriv_node_temp_terms_t tef_terms; + temporary_terms_t temporary_terms; for (int i = 0; i < (int) aux_equations.size(); i++) { - dynamic_cast(aux_equations[i]->substituteStaticAuxiliaryDefinition())->writeOutput(output, oMatlabStaticModel, temporary_terms, tef_terms); + dynamic_cast(aux_equations[i]->substituteStaticAuxiliaryDefinition())->writeOutput(output, output_type, temporary_terms, tef_terms); output << ";" << endl; } } diff --git a/preprocessor/StaticModel.hh b/preprocessor/StaticModel.hh index 90a3aebb7..5dfc5dda7 100644 --- a/preprocessor/StaticModel.hh +++ b/preprocessor/StaticModel.hh @@ -183,7 +183,8 @@ public: void writeAuxVarInitval(ostream &output, ExprNodeOutputType output_type) const; //! Writes definition of the auxiliary variables in a .m or .jl file - void writeAuxVarRecursiveDefinitions(const string &basename, const bool julia) const; + void writeSetAuxiliaryVariables(const string &basename, const bool julia) const; + void writeAuxVarRecursiveDefinitions(ostream &output, ExprNodeOutputType output_type) const; virtual int getDerivID(int symb_id, int lag) const throw (UnknownDerivIDException); virtual void addAllParamDerivId(set &deriv_id_set); diff --git a/preprocessor/SteadyStateModel.cc b/preprocessor/SteadyStateModel.cc index 4533c41f2..61220a805 100644 --- a/preprocessor/SteadyStateModel.cc +++ b/preprocessor/SteadyStateModel.cc @@ -161,7 +161,7 @@ SteadyStateModel::writeSteadyStateFile(const string &basename, bool ramsey_model output << " % Auxiliary equations" << endl; else output << " # Auxiliary equations" << endl; - static_model.writeAuxVarInitval(output, output_type); + static_model.writeAuxVarRecursiveDefinitions(output, output_type); if (!julia) output << " check_=0;" << endl;