From ce6c93b4f3dee046fd4e8048bab537598b1ea5f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Per=20=C3=96stlund?= Date: Fri, 12 Jan 2018 18:06:46 +0100 Subject: [PATCH] [NF] Ceval/Simplify fixes. - Fix simplification of division, result should always be Real. - Fix ceval of integer with Integer argument. Belonging to [master]: - OpenModelica/OMCompiler#2108 - OpenModelica/OpenModelica-testsuite#822 --- Compiler/NFFrontEnd/NFCeval.mo | 1 + Compiler/NFFrontEnd/NFSimplifyExp.mo | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Compiler/NFFrontEnd/NFCeval.mo b/Compiler/NFFrontEnd/NFCeval.mo index b8c14a974a..ef1101f37a 100644 --- a/Compiler/NFFrontEnd/NFCeval.mo +++ b/Compiler/NFFrontEnd/NFCeval.mo @@ -751,6 +751,7 @@ function evalBuiltinInteger output Expression result; algorithm result := match arg + case Expression.INTEGER() then arg; case Expression.REAL() then Expression.INTEGER(realInt(arg.value)); else algorithm printWrongArgsError(getInstanceName(), {arg}, sourceInfo()); then fail(); end match; diff --git a/Compiler/NFFrontEnd/NFSimplifyExp.mo b/Compiler/NFFrontEnd/NFSimplifyExp.mo index 5e6c0b9192..9657c8b28b 100644 --- a/Compiler/NFFrontEnd/NFSimplifyExp.mo +++ b/Compiler/NFFrontEnd/NFSimplifyExp.mo @@ -181,7 +181,7 @@ algorithm case Operator.ADD() then Expression.INTEGER(i1 + i2); case Operator.SUB() then Expression.INTEGER(i1 - i2); case Operator.MUL() then Expression.INTEGER(i1 * i2); - case Operator.DIV() then Expression.INTEGER(intDiv(i1, i2)); + case Operator.DIV() then Expression.REAL(i1 / i2); end match; case Expression.BINARY(exp1=Expression.REAL(value=r1), exp2=Expression.REAL(value=r2))