From 41d7496b466e6975244b9342153cca526e6edd6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= Date: Wed, 23 May 2018 17:32:50 +0200 Subject: [PATCH] Fix bug in wrapper functions (*_{dynamic,static}_resid_g1{,_g2,_g2_g3}.m) The last argument (T_flag) was missing in the function definitions (but it was used in some function calls). --- src/DynamicModel.cc | 27 ++++++++++++++------------- src/StaticModel.cc | 27 ++++++++++++++------------- 2 files changed, 28 insertions(+), 26 deletions(-) diff --git a/src/DynamicModel.cc b/src/DynamicModel.cc index cce0e9da..53f4f23e 100644 --- a/src/DynamicModel.cc +++ b/src/DynamicModel.cc @@ -2162,30 +2162,31 @@ DynamicModel::writeWrapperFunctions(const string &basename, const string &ending } if (ending == "g1") - output << "function [residual, g1] = " << name << "(T, y, x, params, steady_state, it_)" << endl - << "% function [residual, g1] = " << name << "(T, y, x, params, steady_state, it_)" << endl; + output << "function [residual, g1] = " << name << "(T, y, x, params, steady_state, it_, T_flag)" << endl + << "% function [residual, g1] = " << name << "(T, y, x, params, steady_state, it_, T_flag)" << endl; else if (ending == "g2") - output << "function [residual, g1, g2] = " << name << "(T, y, x, params, steady_state, it_)" << endl - << "% function [residual, g1, g2] = " << name << "(T, y, x, params, steady_state, it_)" << endl; + output << "function [residual, g1, g2] = " << name << "(T, y, x, params, steady_state, it_, T_flag)" << endl + << "% function [residual, g1, g2] = " << name << "(T, y, x, params, steady_state, it_, T_flag)" << endl; else if (ending == "g3") - output << "function [residual, g1, g2, g3] = " << name << "(T, y, x, params, steady_state, it_)" << endl - << "% function [residual, g1, g2, g3] = " << name << "(T, y, x, params, steady_state, it_)" << endl; + output << "function [residual, g1, g2, g3] = " << name << "(T, y, x, params, steady_state, it_, T_flag)" << endl + << "% function [residual, g1, g2, g3] = " << name << "(T, y, x, params, steady_state, it_, T_flag)" << endl; output << "%" << endl << "% Wrapper function automatically created by Dynare" << endl - << "%" << endl << endl; + << "%" << endl + << endl + << " if T_flag" << endl + << " T = " << basename + "_" + ending + "_tt(T, y, x, params, steady_state, it_);" << endl + << " end" << endl; if (ending == "g1") - output << " T = " << basename + "_" + ending + "_tt(T, y, x, params, steady_state, it_);" << endl - << " residual = " << basename + "_resid(T, y, x, params, steady_state, it_, false);" << endl + output << " residual = " << basename + "_resid(T, y, x, params, steady_state, it_, false);" << endl << " g1 = " << basename + "_g1(T, y, x, params, steady_state, it_, false);" << endl; else if (ending == "g2") - output << " T = " << basename + "_" + ending + "_tt(T, y, x, params, steady_state, it_);" << endl - << " [residual, g1] = " << basename + "_resid_g1(T, y, x, params, steady_state, it_, false);" << endl + output << " [residual, g1] = " << basename + "_resid_g1(T, y, x, params, steady_state, it_, false);" << endl << " g2 = " << basename + "_g2(T, y, x, params, steady_state, it_, false);" << endl; else if (ending == "g3") - output << " T = " << basename + "_" + ending + "_tt(T, y, x, params, steady_state, it_);" << endl - << " [residual, g1, g2] = " << basename + "_resid_g1_g2(T, y, x, params, steady_state, it_, false);" << endl + output << " [residual, g1, g2] = " << basename + "_resid_g1_g2(T, y, x, params, steady_state, it_, false);" << endl << " g3 = " << basename + "_g3(T, y, x, params, steady_state, it_, false);" << endl; output << endl << "end" << endl; diff --git a/src/StaticModel.cc b/src/StaticModel.cc index 6cccade6..837fd11f 100644 --- a/src/StaticModel.cc +++ b/src/StaticModel.cc @@ -1186,30 +1186,31 @@ StaticModel::writeWrapperFunctions(const string &basename, const string &ending) } if (ending == "g1") - output << "function [residual, g1] = " << name << "(T, y, x, params)" << endl - << "% function [residual, g1] = " << name << "(T, y, x, params)" << endl; + output << "function [residual, g1] = " << name << "(T, y, x, params, T_flag)" << endl + << "% function [residual, g1] = " << name << "(T, y, x, params, T_flag)" << endl; else if (ending == "g2") - output << "function [residual, g1, g2] = " << name << "(T, y, x, params)" << endl - << "% function [residual, g1, g2] = " << name << "(T, y, x, params)" << endl; + output << "function [residual, g1, g2] = " << name << "(T, y, x, params, T_flag)" << endl + << "% function [residual, g1, g2] = " << name << "(T, y, x, params, T_flag)" << endl; else if (ending == "g3") - output << "function [residual, g1, g2, g3] = " << name << "(T, y, x, params)" << endl - << "% function [residual, g1, g2, g3] = " << name << "(T, y, x, params)" << endl; + output << "function [residual, g1, g2, g3] = " << name << "(T, y, x, params, T_flag)" << endl + << "% function [residual, g1, g2, g3] = " << name << "(T, y, x, params, T_flag)" << endl; output << "%" << endl << "% Wrapper function automatically created by Dynare" << endl - << "%" << endl << endl; + << "%" << endl + << endl + << " if T_flag" << endl + << " T = " << basename + "_" + ending + "_tt(T, y, x, params);" << endl + << " end" << endl; if (ending == "g1") - output << " T = " << basename + "_" + ending + "_tt(T, y, x, params);" << endl - << " residual = " << basename + "_resid(T, y, x, params, false);" << endl + output << " residual = " << basename + "_resid(T, y, x, params, false);" << endl << " g1 = " << basename + "_g1(T, y, x, params, false);" << endl; else if (ending == "g2") - output << " T = " << basename + "_" + ending + "_tt(T, y, x, params);" << endl - << " [residual, g1] = " << basename + "_resid_g1(T, y, x, params, false);" << endl + output << " [residual, g1] = " << basename + "_resid_g1(T, y, x, params, false);" << endl << " g2 = " << basename + "_g2(T, y, x, params, false);" << endl; else if (ending == "g3") - output << " T = " << basename + "_" + ending + "_tt(T, y, x, params);" << endl - << " [residual, g1, g2] = " << basename + "_resid_g1_g2(T, y, x, params, false);" << endl + output << " [residual, g1, g2] = " << basename + "_resid_g1_g2(T, y, x, params, false);" << endl << " g3 = " << basename + "_g3(T, y, x, params, false);" << endl; output << endl << "end" << endl;