From 7328025d4ac27e66a3e1c396fd37cde8e48bc885 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= <sebastien@dynare.org>
Date: Tue, 12 Jul 2022 17:45:00 +0200
Subject: [PATCH] Fix bug in JSON output for dynamic derivatives w.r.t.
 parameters

Variable and parameter indices were wrong (offset by 1).

(cherry picked from commit 6da24fc763256d4223f257a549bd8167a7f31526)
---
 src/DynamicModel.cc | 30 +++++++++++++++---------------
 1 file changed, 15 insertions(+), 15 deletions(-)

diff --git a/src/DynamicModel.cc b/src/DynamicModel.cc
index 1d39cc42..939fe3ed 100644
--- a/src/DynamicModel.cc
+++ b/src/DynamicModel.cc
@@ -6471,7 +6471,7 @@ DynamicModel::writeJsonParamsDerivativesFile(ostream &output, bool writeDetails)
       else
         rp_output << R"({"row": )" << eq + 1;
 
-      rp_output << R"(, "param_col": )" << param_col + 1;
+      rp_output << R"(, "param_col": )" << param_col;
 
       if (writeDetails)
         rp_output << R"(, "param": ")" << symbol_table.getName(getSymbIDByDerivID(param)) << R"(")";
@@ -6504,8 +6504,8 @@ DynamicModel::writeJsonParamsDerivativesFile(ostream &output, bool writeDetails)
       else
         gp_output << R"({"row": )" << eq + 1;
 
-      gp_output << R"(, "var_col": )" << var_col + 1
-                << R"(, "param_col": )" << param_col + 1;
+      gp_output << R"(, "var_col": )" << var_col
+                << R"(, "param_col": )" << param_col;
 
       if (writeDetails)
         gp_output << R"(, "var": ")" << symbol_table.getName(getSymbIDByDerivID(var)) << R"(")"
@@ -6539,8 +6539,8 @@ DynamicModel::writeJsonParamsDerivativesFile(ostream &output, bool writeDetails)
         rpp_output << R"({"eq": )" << eq + 1;
       else
         rpp_output << R"({"row": )" << eq + 1;
-      rpp_output << R"(, "param1_col": )" << param1_col + 1
-                 << R"(, "param2_col": )" << param2_col + 1;
+      rpp_output << R"(, "param1_col": )" << param1_col
+                 << R"(, "param2_col": )" << param2_col;
 
       if (writeDetails)
         rpp_output << R"(, "param1": ")" << symbol_table.getName(getSymbIDByDerivID(param1)) << R"(")"
@@ -6576,9 +6576,9 @@ DynamicModel::writeJsonParamsDerivativesFile(ostream &output, bool writeDetails)
       else
         gpp_output << R"({"row": )" << eq + 1;
 
-      gpp_output << R"(, "var_col": )" << var_col + 1
-                 << R"(, "param1_col": )" << param1_col + 1
-                 << R"(, "param2_col": )" << param2_col + 1;
+      gpp_output << R"(, "var_col": )" << var_col
+                 << R"(, "param1_col": )" << param1_col
+                 << R"(, "param2_col": )" << param2_col;
 
       if (writeDetails)
         gpp_output << R"(, "var": ")" << symbol_table.getName(getSymbIDByDerivID(var)) << R"(")"
@@ -6616,9 +6616,9 @@ DynamicModel::writeJsonParamsDerivativesFile(ostream &output, bool writeDetails)
       else
         hp_output << R"({"row": )" << eq + 1;
 
-      hp_output << R"(, "var1_col": )" << var1_col + 1
-                << R"(, "var2_col": )" << var2_col + 1
-                << R"(, "param_col": )" << param_col + 1;
+      hp_output << R"(, "var1_col": )" << var1_col
+                << R"(, "var2_col": )" << var2_col
+                << R"(, "param_col": )" << param_col;
 
       if (writeDetails)
         hp_output << R"(, "var1": ")" << symbol_table.getName(getSymbIDByDerivID(var1)) << R"(")"
@@ -6659,10 +6659,10 @@ DynamicModel::writeJsonParamsDerivativesFile(ostream &output, bool writeDetails)
       else
         g3p_output << R"({"row": )" << eq + 1;
 
-      g3p_output << R"(, "var1_col": )" << var1_col + 1
-                 << R"(, "var2_col": )" << var2_col + 1
-                 << R"(, "var3_col": )" << var3_col + 1
-                 << R"(, "param_col": )" << param_col + 1;
+      g3p_output << R"(, "var1_col": )" << var1_col
+                 << R"(, "var2_col": )" << var2_col
+                 << R"(, "var3_col": )" << var3_col
+                 << R"(, "param_col": )" << param_col;
 
       if (writeDetails)
         g3p_output << R"(, "var1": ")" << symbol_table.getName(getSymbIDByDerivID(var1)) << R"(")"
-- 
GitLab