From 6c34da5c124b49f0a96f8ff318b29640bf697f5f Mon Sep 17 00:00:00 2001
From: Houtan Bastani <houtan@dynare.org>
Date: Thu, 3 Sep 2015 14:25:06 +0200
Subject: [PATCH] raise cost of oPowerDeriv to always create a temporary
 variable if it has been encountered at least twice

---
 preprocessor/ExprNode.cc | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/preprocessor/ExprNode.cc b/preprocessor/ExprNode.cc
index a0b50e54c..c10a49002 100644
--- a/preprocessor/ExprNode.cc
+++ b/preprocessor/ExprNode.cc
@@ -2750,7 +2750,7 @@ BinaryOpNode::cost(const temporary_terms_t &temporary_terms, bool is_matlab) con
         return cost + 990;
       case oPower:
       case oPowerDeriv:
-        return cost + 1160;
+        return cost + (MIN_COST_MATLAB/2+1);
       case oEqual:
         return cost;
       }
@@ -2775,8 +2775,9 @@ BinaryOpNode::cost(const temporary_terms_t &temporary_terms, bool is_matlab) con
       case oDivide:
         return cost + 15;
       case oPower:
-      case oPowerDeriv:
         return cost + 520;
+      case oPowerDeriv:
+        return cost + (MIN_COST_C/2+1);;
       case oEqual:
         return cost;
       }
-- 
GitLab