From f338e8769227ba2d614f52c1ac9aa5fe5df977f3 Mon Sep 17 00:00:00 2001 From: Houtan Bastani Date: Sat, 2 Jun 2018 12:17:05 +0200 Subject: [PATCH] Revert "remove unnecessary code for calculation of max lag when equation have been undiffed" This reverts commit d7c979a4e6b80338f4f33eb1fd55ac773b9e0560. --- src/DynamicModel.cc | 16 ++++++++++++++++ src/DynamicModel.hh | 2 ++ src/ModFile.cc | 1 + 3 files changed, 19 insertions(+) diff --git a/src/DynamicModel.cc b/src/DynamicModel.cc index 65e55d01..5ee7bccf 100644 --- a/src/DynamicModel.cc +++ b/src/DynamicModel.cc @@ -3555,6 +3555,22 @@ DynamicModel::getUndiffLHSForPac(vector &lhs, vector &lhs_expr_t, v } } +int +DynamicModel::getUndiffMaxLag(StaticModel &static_model, vector &lhs, vector &eqnumber) const +{ + set lhs_static; + for(vector::const_iterator it = lhs.begin(); + it != lhs.end(); it++) + lhs_static.insert((*it)->toStatic(static_model)); + + int max_lag = 0; + for (vector::const_iterator it = eqnumber.begin(); + it != eqnumber.end(); it++) + equations[*it]->get_arg2()->VarMaxLag(static_model, lhs_static, max_lag); + + return max_lag; +} + void DynamicModel::walkPacParameters() { diff --git a/src/DynamicModel.hh b/src/DynamicModel.hh index 1b488488..726a45a3 100644 --- a/src/DynamicModel.hh +++ b/src/DynamicModel.hh @@ -316,6 +316,8 @@ public: int max_lag, vector &nonstationary, int growth_symb_id); + //! Get the max lag for the PAC VAR + int getUndiffMaxLag(StaticModel &static_model, vector &lhs, vector &eqnumber) const; //! Substitutes pac_expectation operator void substitutePacExpectation(); diff --git a/src/ModFile.cc b/src/ModFile.cc index e87373b4..540a59a4 100644 --- a/src/ModFile.cc +++ b/src/ModFile.cc @@ -427,6 +427,7 @@ ModFile::transformPass(bool nostrict, bool stochastic, bool compute_xrefs, const vector orig_diff_var = var_model_info_pac_expectation[var_model_name].first.second.second; vector eqnumber = var_model_info_pac_expectation[var_model_name].second.second; dynamic_model.getUndiffLHSForPac(lhs, lhs_expr_t, diff, orig_diff_var, eqnumber, undiff, diff_subst_table); + max_lag = original_model.getUndiffMaxLag(diff_static_model, lhs_expr_t, eqnumber); } pms->fillUndiffedLHS(lhs); dynamic_model.walkPacParameters();