aboutsummaryrefslogtreecommitdiffstats
path: root/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericZ3ProblemSolver.java
diff options
context:
space:
mode:
Diffstat (limited to 'Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericZ3ProblemSolver.java')
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericZ3ProblemSolver.java18
1 files changed, 17 insertions, 1 deletions
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericZ3ProblemSolver.java b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericZ3ProblemSolver.java
index db33804e..0b093859 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericZ3ProblemSolver.java
+++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericZ3ProblemSolver.java
@@ -4,6 +4,8 @@ import java.util.ArrayList;
4import java.util.HashMap; 4import java.util.HashMap;
5import java.util.List; 5import java.util.List;
6import java.util.Map; 6import java.util.Map;
7import java.util.regex.Matcher;
8import java.util.regex.Pattern;
7 9
8import org.eclipse.xtext.common.types.JvmIdentifiableElement; 10import org.eclipse.xtext.common.types.JvmIdentifiableElement;
9import org.eclipse.xtext.xbase.XBinaryOperation; 11import org.eclipse.xtext.xbase.XBinaryOperation;
@@ -98,7 +100,21 @@ public class NumericZ3ProblemSolver extends NumericProblemSolver{
98 sol.put(o, oSol); 100 sol.put(o, oSol);
99 } else { 101 } else {
100 RealExpr val = (RealExpr) m.evaluate(varMap.get(o), false); 102 RealExpr val = (RealExpr) m.evaluate(varMap.get(o), false);
101 Double oSol = Double.parseDouble(val.toString()); 103 Double oSol = 0.0;
104 if (val.toString().contains("/")) {
105 String re = "([0-9]+)/([0-9]+)";
106 Pattern p = Pattern.compile(re);
107 Matcher ma = p.matcher(val.toString());
108 if (ma.matches()) {
109 int numerator = Integer.parseInt(ma.group(1));
110 int denominator = Integer.parseInt(ma.group(2));
111 oSol = (double) numerator / denominator;
112 } else {
113 System.err.println("Problem converting string: " + val.toString());
114 }
115 } else {
116 oSol = Double.parseDouble(val.toString());
117 }
102 sol.put(o, oSol); 118 sol.put(o, oSol);
103 } 119 }
104 //System.out.println("Solution:" + o + "->" + oSol); 120 //System.out.println("Solution:" + o + "->" + oSol);