From 3b20f835db38609749648d0826e82ff4352820fd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= <sebastien@dynare.org>
Date: Mon, 27 Mar 2023 17:07:27 +0200
Subject: [PATCH] ModelTree: fix call to ExprNode::computeTemporaryTerms()

The first argument to ExprNode::computeTemporaryTerms() is supposed to be a
pair (endo derivation order, param derivation order). The two elements were
interverted in the call. This would not affect the result, because parameter
derivatives are not computed there and what matters is the lexical ordering
which remains the same. But fixing the order is better, for consistency with
the method description.
---
 src/ModelTree.cc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/ModelTree.cc b/src/ModelTree.cc
index f9330c07..27efe700 100644
--- a/src/ModelTree.cc
+++ b/src/ModelTree.cc
@@ -932,7 +932,7 @@ ModelTree::computeTemporaryTerms(bool is_matlab, bool no_tmp_terms)
 
   for (int order = 1; order < static_cast<int>(derivatives.size()); order++)
     for (const auto &it : derivatives[order])
-      it.second->computeTemporaryTerms({ 0, order },
+      it.second->computeTemporaryTerms({ order, 0 },
                                        temp_terms_map,
                                        reference_count,
                                        is_matlab);
@@ -949,7 +949,7 @@ ModelTree::computeTemporaryTerms(bool is_matlab, bool no_tmp_terms)
   temporary_terms_derivatives.clear();
   temporary_terms_derivatives.resize(derivatives.size());
   for (int order = 0; order < static_cast<int>(derivatives.size()); order++)
-    temporary_terms_derivatives[order] = move(temp_terms_map[{ 0, order }]);
+    temporary_terms_derivatives[order] = move(temp_terms_map[{ order, 0 }]);
 
   // Compute indices in MATLAB/Julia vector
   for (int order {0}, idx {0}; order < static_cast<int>(derivatives.size()); order++)
-- 
GitLab