diff --git a/prism/src/prism/StateListMTBDD.java b/prism/src/prism/StateListMTBDD.java index f8a62674..d602c855 100644 --- a/prism/src/prism/StateListMTBDD.java +++ b/prism/src/prism/StateListMTBDD.java @@ -22,10 +22,10 @@ package prism; -import parser.VarList; import jdd.*; import odd.*; import parser.Values; +import parser.VarList; import parser.Expression; // list of states (mtbdd) @@ -154,7 +154,7 @@ public class StateListMTBDD implements StateList private void printRec(JDDNode dd, int level, ODDNode o, long n) { - int i; + int i, j; JDDNode e, t; // if we've printed enough states, stop @@ -167,11 +167,18 @@ public class StateListMTBDD implements StateList if (level == numVars) { if (!matlab) outputLog.print(n + ":("); - for (i = 0; i < varList.getNumVars()-1; i++) { - outputLog.print((varValues[i]+varList.getLow(i)) + ","); + j = varList.getNumVars(); + for (i = 0; i < j; i++) { + // integer variable + if (varList.getType(i) == Expression.INT) { + outputLog.print(varValues[i]+varList.getLow(i)); + } + // boolean variable + else { + outputLog.print(varValues[i] == 1); + } + if (i < j-1) outputLog.print(","); } - i = varList.getNumVars()-1; - outputLog.print((varValues[i]+varList.getLow(i))); if (!matlab) outputLog.print(")"); outputLog.println(); count++; diff --git a/prism/src/prism/StateProbsDV.java b/prism/src/prism/StateProbsDV.java index 0e51fbdd..4986434a 100644 --- a/prism/src/prism/StateProbsDV.java +++ b/prism/src/prism/StateProbsDV.java @@ -26,6 +26,7 @@ import dv.*; import jdd.*; import odd.*; import parser.VarList; +import parser.Expression; // state probability vector (double vector) @@ -234,7 +235,7 @@ public class StateProbsDV implements StateProbs private void printRec(int level, ODDNode o, int n) { - int i; + int i, j; double d; // base case - at bottom @@ -242,11 +243,18 @@ public class StateProbsDV implements StateProbs d = probs.getElement(n); if (d != 0) { outputLog.print(n + ":("); - for (i = 0; i < varList.getNumVars()-1; i++) { - outputLog.print((varValues[i]+varList.getLow(i)) + ","); + j = varList.getNumVars(); + for (i = 0; i < j; i++) { + // integer variable + if (varList.getType(i) == Expression.INT) { + outputLog.print(varValues[i]+varList.getLow(i)); + } + // boolean variable + else { + outputLog.print(varValues[i] == 1); + } + if (i < j-1) outputLog.print(","); } - i = varList.getNumVars()-1; - outputLog.print((varValues[i]+varList.getLow(i))); outputLog.print(")=" + d + " "); outputLog.println(); return; diff --git a/prism/src/prism/StateProbsMTBDD.java b/prism/src/prism/StateProbsMTBDD.java index 41a4f195..9793f11d 100644 --- a/prism/src/prism/StateProbsMTBDD.java +++ b/prism/src/prism/StateProbsMTBDD.java @@ -25,6 +25,7 @@ package prism; import jdd.*; import odd.*; import parser.VarList; +import parser.Expression; // state probability vector (mtbdd) @@ -330,7 +331,7 @@ public class StateProbsMTBDD implements StateProbs private void printRec(JDDNode dd, int level, ODDNode o, long n) { - int i; + int i, j; JDDNode e, t; // zero constant - bottom out of recursion @@ -340,11 +341,18 @@ public class StateProbsMTBDD implements StateProbs if (level == numVars) { outputLog.print(n + ":("); - for (i = 0; i < varList.getNumVars()-1; i++) { - outputLog.print((varValues[i]+varList.getLow(i)) + ","); + j = varList.getNumVars(); + for (i = 0; i < j; i++) { + // integer variable + if (varList.getType(i) == Expression.INT) { + outputLog.print(varValues[i]+varList.getLow(i)); + } + // boolean variable + else { + outputLog.print(varValues[i] == 1); + } + if (i < j-1) outputLog.print(","); } - i = varList.getNumVars()-1; - outputLog.print((varValues[i]+varList.getLow(i))); outputLog.print(")=" + dd.getValue() + " "); outputLog.println(); return;