From d5086173bee1c07eea474c3a175de7782819af4e Mon Sep 17 00:00:00 2001 From: Dave Parker Date: Fri, 11 Apr 2008 09:29:15 +0000 Subject: [PATCH] Catch mod 0 in explicit expression evaluation. git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@735 bbc10eb1-c90d-0410-af57-cb519fbb1720 --- prism/src/prism/StateModelChecker.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/prism/src/prism/StateModelChecker.java b/prism/src/prism/StateModelChecker.java index 39755609..3229ef91 100644 --- a/prism/src/prism/StateModelChecker.java +++ b/prism/src/prism/StateModelChecker.java @@ -778,6 +778,7 @@ public class StateModelChecker implements ModelChecker JDDNode dd = null, dd1, dd2; DoubleVector dv1, dv2; int i, n, op = expr.getNameCode(); + double d = 0.0; // Check operands recursively try { @@ -818,8 +819,11 @@ public class StateModelChecker implements ModelChecker dv1.setElement(i, Math.pow(dv1.getElement(i), dv2.getElement(i))); break; case ExpressionFunc.MOD: - for (i = 0; i < n; i++) - dv1.setElement(i, (int)dv1.getElement(i) % (int)dv2.getElement(i)); + for (i = 0; i < n; i++) { + d = (int)dv2.getElement(i); + d = (d == 0) ? Double.NaN : (int)dv1.getElement(i) % (int)d; + dv1.setElement(i, d); + } break; case ExpressionFunc.LOG: for (i = 0; i < n; i++)