diff --git a/preprocessor/DataTree.hh b/preprocessor/DataTree.hh index 17823d23f0c313ac84cfd307ef992338f4dbff55..3540a86de253304ae272599e575d9d50c0ff66ee 100644 --- a/preprocessor/DataTree.hh +++ b/preprocessor/DataTree.hh @@ -1,5 +1,5 @@ /* - * Copyright (C) 2003-2011 Dynare Team + * Copyright (C) 2003-2012 Dynare Team * * This file is part of Dynare. * @@ -27,6 +27,7 @@ using namespace std; #include <list> #include <sstream> #include <iomanip> +#include <cmath> #include "SymbolTable.hh" #include "NumericalConstants.hh" @@ -261,6 +262,13 @@ public: inline expr_t DataTree::AddPossiblyNegativeConstant(double v) { + /* Treat NaN and Inf separately. In particular, under Windows, converting + them to a string does not work as expected */ + if (isnan(v)) + return NaN; + if (isinf(v)) + return (v < 0 ? MinusInfinity : Infinity); + bool neg = false; if (v < 0) {