From 2075585fa80f84d5bc607473124d5660ec008c76 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= <sebastien@dynare.org>
Date: Tue, 11 Jun 2024 17:47:30 +0200
Subject: [PATCH] VariableNode::writeOutput(): no longer call getJacobianCol()
 in sparse output type

---
 src/ExprNode.cc | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/ExprNode.cc b/src/ExprNode.cc
index d3239dc3..69533fa1 100644
--- a/src/ExprNode.cc
+++ b/src/ExprNode.cc
@@ -1168,12 +1168,18 @@ VariableNode::writeOutput(ostream& output, ExprNodeOutputType output_type,
     case SymbolType::endogenous:
       switch (int tsid {getTypeSpecificID()}; output_type)
         {
-        case ExprNodeOutputType::juliaDynamicModel:
         case ExprNodeOutputType::juliaSparseDynamicModel:
-        case ExprNodeOutputType::matlabDynamicModel:
         case ExprNodeOutputType::matlabSparseDynamicModel:
-        case ExprNodeOutputType::CDynamicModel:
         case ExprNodeOutputType::CSparseDynamicModel:
+          assert(lag >= -1 && lag <= 1);
+          i = tsid + (lag + 1) * datatree.symbol_table.endo_nbr()
+              + ARRAY_SUBSCRIPT_OFFSET(output_type);
+          output << "y" << LEFT_ARRAY_SUBSCRIPT(output_type) << i
+                 << RIGHT_ARRAY_SUBSCRIPT(output_type);
+          break;
+        case ExprNodeOutputType::juliaDynamicModel:
+        case ExprNodeOutputType::matlabDynamicModel:
+        case ExprNodeOutputType::CDynamicModel:
           i = datatree.getJacobianCol(getDerivID(), isSparseModelOutput(output_type))
               + ARRAY_SUBSCRIPT_OFFSET(output_type);
           output << "y" << LEFT_ARRAY_SUBSCRIPT(output_type) << i
-- 
GitLab