diff --git a/src/DynamicModel.cc b/src/DynamicModel.cc index 9d79ef1d..8a3eebcd 100644 --- a/src/DynamicModel.cc +++ b/src/DynamicModel.cc @@ -3268,12 +3268,13 @@ DynamicModel::fillVarModelTable() const void DynamicModel::fillVarModelTableFromOrigModel() const { - map> lags, orig_diff_var; + map> lags; + map>> orig_diff_var; map> diff; for (const auto &[model_name, eqns] : var_model_table.getEqNums()) { set lhs; - vector orig_diff_var_vec; + vector> orig_diff_var_vec; vector diff_vec; for (auto eqn : eqns) { @@ -3323,7 +3324,7 @@ DynamicModel::fillVarModelTableFromOrigModel() const orig_diff_var_vec.push_back(diff_set.begin()->first); } else - orig_diff_var_vec.push_back(-1); + orig_diff_var_vec.push_back(nullopt); } @@ -3616,12 +3617,13 @@ DynamicModel::computeErrorComponentMatrices(const ExprNode::subst_table_t &diff_ void DynamicModel::fillTrendComponentModelTableFromOrigModel() const { - map> lags, orig_diff_var; + map> lags; + map>> orig_diff_var; map> diff; for (const auto &[model_name, eqns] : trend_component_model_table.getEqNums()) { set lhs; - vector orig_diff_var_vec; + vector> orig_diff_var_vec; vector diff_vec; for (auto eqn : eqns) { @@ -3666,7 +3668,7 @@ DynamicModel::fillTrendComponentModelTableFromOrigModel() const orig_diff_var_vec.push_back(diff_set.begin()->first); } else - orig_diff_var_vec.push_back(-1); + orig_diff_var_vec.push_back(nullopt); } if (eqns.size() != lhs.size()) @@ -3710,7 +3712,6 @@ DynamicModel::getUndiffLHSForPac(const string &aux_model_name, vector lhs_expr_t = trend_component_model_table.getLhsExprT(aux_model_name); vector lhs = trend_component_model_table.getLhs(aux_model_name); vector diff = trend_component_model_table.getDiff(aux_model_name); - vector orig_diff_var = trend_component_model_table.getOrigDiffVar(aux_model_name); vector eqnumber = trend_component_model_table.getEqNums(aux_model_name); vector nontrend_eqnums = trend_component_model_table.getNonTargetEqNums(aux_model_name); diff --git a/src/SubModel.cc b/src/SubModel.cc index 0fd6f5ec..5d46d3d4 100644 --- a/src/SubModel.cc +++ b/src/SubModel.cc @@ -101,7 +101,7 @@ TrendComponentModelTable::setDiff(map> diff_arg) } void -TrendComponentModelTable::setOrigDiffVar(map> orig_diff_var_arg) +TrendComponentModelTable::setOrigDiffVar(map>> orig_diff_var_arg) { orig_diff_var = move(orig_diff_var_arg); } @@ -240,13 +240,6 @@ TrendComponentModelTable::getDiff(const string &name_arg) const return diff.find(name_arg)->second; } -const vector & -TrendComponentModelTable::getOrigDiffVar(const string &name_arg) const -{ - checkModelName(name_arg); - return orig_diff_var.find(name_arg)->second; -} - void TrendComponentModelTable::writeOutput(const string &basename, ostream &output) const { @@ -297,8 +290,8 @@ TrendComponentModelTable::writeOutput(const string &basename, ostream &output) c output << boolalpha << it << " "; output << "];" << endl << "M_.trend_component." << name << ".orig_diff_var = ["; - for (auto it : orig_diff_var.at(name)) - output << (it >= 0 ? symbol_table.getTypeSpecificID(it) + 1 : -1) << " "; + for (const auto &it : orig_diff_var.at(name)) + output << (it ? symbol_table.getTypeSpecificID(*it) + 1 : -1) << " "; output << "];" << endl << "M_.trend_component." << name << ".nonstationary = ["; for (size_t i = 0; i < diff.at(name).size(); i++) @@ -483,8 +476,8 @@ VarModelTable::writeOutput(const string &basename, ostream &output) const output << "];" << endl << "M_.var." << name << ".nonstationary = M_.var." << name << ".diff;" << endl << "M_.var." << name << ".orig_diff_var = ["; - for (auto it : orig_diff_var.at(name)) - output << (it >= 0 ? symbol_table.getTypeSpecificID(it) + 1 : -1) << " "; + for (const auto &it : orig_diff_var.at(name)) + output << (it ? symbol_table.getTypeSpecificID(*it) + 1 : -1) << " "; output << "];" << endl; int i = 1; for (const auto &it : rhs.at(name)) @@ -681,7 +674,7 @@ VarModelTable::setDiff(map> diff_arg) } void -VarModelTable::setOrigDiffVar(map> orig_diff_var_arg) +VarModelTable::setOrigDiffVar(map>> orig_diff_var_arg) { orig_diff_var = move(orig_diff_var_arg); } diff --git a/src/SubModel.hh b/src/SubModel.hh index c2d2fa6a..96cda361 100644 --- a/src/SubModel.hh +++ b/src/SubModel.hh @@ -46,7 +46,8 @@ private: SymbolTable &symbol_table; set names; map> eqtags, target_eqtags; - map> eqnums, target_eqnums, nontarget_eqnums, max_lags, lhs, target_lhs, nontarget_lhs, orig_diff_var; + map> eqnums, target_eqnums, nontarget_eqnums, max_lags, lhs, target_lhs, nontarget_lhs; + map>> orig_diff_var; map>>> rhs; map> diff; map> lhs_expr_t; @@ -77,7 +78,6 @@ public: const vector &getLhs(const string &name_arg) const; const vector &getLhsExprT(const string &name_arg) const; const vector &getDiff(const string &name_arg) const; - const vector &getOrigDiffVar(const string &name_arg) const; const map> &getNonTargetEqNums() const; const vector &getNonTargetEqNums(const string &name_arg) const; const vector &getNonTargetLhs(const string &name_arg) const; @@ -89,7 +89,7 @@ public: void setRhs(map>>> rhs_arg); void setMaxLags(map> max_lags_arg); void setDiff(map> diff_arg); - void setOrigDiffVar(map> orig_diff_var_arg); + void setOrigDiffVar(map>> orig_diff_var_arg); void setTargetVar(map>> target_vars_arg); void setAR(map, expr_t>> AR_arg); void setA0(map, expr_t>> A0_arg, @@ -125,7 +125,8 @@ private: set names; map structural; // Whether VARs are structural or reduced-form map> eqtags; - map> eqnums, max_lags, lhs, lhs_orig_symb_ids, orig_diff_var; + map> eqnums, max_lags, lhs, lhs_orig_symb_ids; + map>> orig_diff_var; map>>> rhs; // name -> for each equation: set of pairs (var, lag) map> diff; map> lhs_expr_t; @@ -164,7 +165,7 @@ public: void setLhsExprT(map> lhs_expr_t_arg); void setDiff(map> diff_arg); void setMaxLags(map> max_lags_arg); - void setOrigDiffVar(map> orig_diff_var_arg); + void setOrigDiffVar(map>> orig_diff_var_arg); void setAR(map, expr_t>> AR_arg); void setA0(map, expr_t>> A0_arg); void setConstants(map> constants_arg);