From 6da24fc763256d4223f257a549bd8167a7f31526 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).
---
 src/DynamicModel.cc | 30 +++++++++++++++---------------
 1 file changed, 15 insertions(+), 15 deletions(-)

diff --git a/src/DynamicModel.cc b/src/DynamicModel.cc
index 67e03228..7db188b9 100644
--- a/src/DynamicModel.cc
+++ b/src/DynamicModel.cc
@@ -5504,7 +5504,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": ")" << getNameByDerivID(param) << R"(")";
@@ -5536,8 +5536,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": ")" << getNameByDerivID(var) << R"(")"
@@ -5570,8 +5570,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": ")" << getNameByDerivID(param1) << R"(")"
@@ -5606,9 +5606,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": ")" << getNameByDerivID(var) << R"(")"
@@ -5645,9 +5645,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": ")" << getNameByDerivID(var1) << R"(")"
@@ -5687,10 +5687,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": ")" << getNameByDerivID(var1) << R"(")"
-- 
GitLab